{"version":3,"sources":["webpack:///./node_modules/aurelia-webpack-plugin/runtime/pal-loader-entry.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/aurelia-templating/dist/native-modules/aurelia-templating.js"],"names":["Loader","Object","defineProperty","get","WebpackLoader","set","value","exports","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","i","arr","Arr","_byteLength","curByte","len","revLookup","charCodeAt","fromByteArray","uint8","length","extraBytes","parts","len2","push","encodeChunk","lookup","join","Uint8Array","Array","code","Error","indexOf","start","end","num","output","ElementEvents","element","this","subscriptions","prototype","_enqueueHandler","handler","eventName","_dequeueHandler","index","splice","publish","detail","bubbles","cancelable","event","createCustomEvent","dispatchEvent","subscribe","captureOrOptions","undefined","defaultListenerOptions","EventHandlerImpl","subscribeOnce","dispose","subscription","pop","disposeAll","key","owner","once","capture","addEventListener","handleEvent","e","fn","removeEventListener","ResourceLoadContext","dependencies","addDependency","url","hasDependency","ViewCompileInstruction","targetShadowDOM","compileSurrogate","associatedModuleId","normal","BehaviorInstruction","enhance","instruction","unitTest","type","attributes","node","anchorIsContainer","hasAttribute","containerless","initiatedByBehavior","attribute","attrName","dynamic","host","viewModel","viewFactory","inheritBindingContext","biProto","partReplacements","originalAttrName","skipContentProcessing","contentFactory","TargetInstruction","shadowSlot","parentInjectorId","contentExpression","expression","letElement","expressions","lifting","liftingInstruction","noExpressions","behaviorInstructions","providers","target","injectorId","elementInstruction","surrogate","values","freeze","tiProto","__decorate","decorators","desc","d","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","slotName","slotFallbackFactory","capitalMatcher","addHyphenAndLower","char","toLowerCase","_hyphenate","name","charAt","slice","replace","_isAllWhitespace","auInterpolationTarget","test","textContent","BehaviorPropertyObserver","taskQueue","obj","propertyName","selfSubscriber","initialValue","notqueued","publishing","currentValue","oldValue","getValue","setValue","newValue","is","flushing","call","queueMicroTask","callSubscribers","context","callable","addSubscriber","unsubscribe","removeSubscriber","getObserver","instance","__observers__","ctor","getPrototypeOf","constructor","behavior","resource","isInitialized","initialize","observerLocator","getOrCreateObserversLookup","_ensurePropertiesDefined","BindableProperty","nameOrConfig","assign","defaultBindingMode","oneWay","changeHandler","descriptor","registerWith","properties","_configureDescriptor","configurable","enumerable","defaultValue","initializer","writable","defineOn","handlerName","createObserver","changeHandlerName","hasOptions","propertyChanged","concat","_initialize","observerLookup","behaviorHandlesBind","boundProperties","observer","isDynamic","_createDynamicProperty","binding","createBinding","info","bind","ViewLocator","getViewStrategy","origin_1","RelativeViewStrategy","viewStrategy","assert","moduleId","makeRelativeTo","validate","$view","view","NoViewStrategy","StaticViewStrategy","define","viewStrategyMetadataKey","origin","strategy","createFallbackViewStrategy","ConventionalViewStrategy","convertOriginToViewUrl","endsWith","substring","mi","BindingLanguage","inspectAttribute","resources","elementName","attrValue","createAttributeInstruction","existingInstruction","createLetExpressions","inspectTextContent","noNodes","SlotCustomAttribute","auSlotAttribute","inject","Element","valueChanged","PassThroughSlot","anchor","destinationName","fallbackFactory","viewSlot","destinationSlot","projections","contentView","renderFallbackContent","nodes","projectionSource","create","ownerView","container","bindingContext","overrideContext","slots","ShadowDOM","distributeView","passThroughTo","addNode","removeNodes","detached","unbind","removeView","needsFallbackRendering","removeAll","projectFrom","created","attached","ShadowSlot","isContentProjectionSource","children","projectFromAnchors","destinationSlots","destination","$node","distributeNodes","auOwnerView","auProjectionSource","auAssignedSlot","_findAnchor","parentNode","insertBefore","undistributeView","hasSlots","found","find","x","auSlotProjectFrom","auProjectionChildren","ownChildren","ii","child","fragment","appendChild","idx","undistributeAll","viewIndex","lastView","current","projectTo","createComment","parent","insertNodesBefore","slot","fallbackSlots","getSlotName","defaultSlotKey","destinationOverride","childNodes","currentNode","nodeType","CompositionTransactionNotifier","_compositionCount","done","_tryCompleteTransaction","CompositionTransactionOwnershipToken","_ownershipToken","thenable","_createThenable","waitForCompositionComplete","resolve","_resolveCallback","_this","Promise","CompositionTransaction","tryCapture","enlist","token","View","controllers","bindings","_","firstChild","lastChild","fromCache","isBound","isAttached","controller","viewModelScope","animatableElement","_isUserControlled","returnToCache","returnViewToCache","_systemUpdate","_invokeHook","addBinding","refNode","appendNodesTo","next","nextSibling","Animator","enter","leave","removeClass","className","classList","remove","addClass","add","animate","runSequence","animations","registerEffect","effectName","unregisterEffect","ViewSlot","animator","contentSelectors","animateView","direction","contains","getAnimatableElement","transformChildNodesIntoView","last","removeChild","insert","move","sourceIndex","targetIndex","skipAnimation","removeAt","removeMany","viewsToRemove","rmPromises","forEach","animation","then","removeAction","all","projectToSlots","_projectionAdd","_projectionInsert","_projectionMove","_projectionRemove","_projectionRemoveAt","_projectionRemoveMany","_projectionRemoveAll","$resolver","providerResolverInstance","ProviderResolver","id","__providerId__","invoke","elementContainerGet","BoundViewFactory","boundViewFactory","factory","part","elementEvents","compositionTransaction","ViewResources","viewResources","superGet","_element","getAttribute","setAttribute","applyInstructions","containers","shadowSlots","elementContainer","commentAnchor","slotDestination","replaceNode","tagName","contentElement","makeElementIntoAnchor","createChild","_resolvers","createElementContainer","styleStringToObject","style","firstIndexOfColon","split","trim","styleObjectToString","result","parentContainer","factoryCreateInstruction","isCaching","setCacheSize","size","doNotOverrideIfAlreadySet","getCachedView","ViewFactory","template","instructions","cacheSize","cache","Number","MAX_VALUE","parseInt","createInstruction","cachedView","instructable","cloneNode","instructables","querySelectorAll","root","surrogateInstruction","currentAttributeValue","styleObject","applySurrogateInstruction","nextInjectorId","lastAUTargetID","makeIntoInstructionTarget","auTargetID","toString","defaultLetHandler","ViewCompiler","bindingLanguage","compile","source","compileInstruction","content","createTemplateFromMarkup","adoptNode","shadowDOM","_compileNode","targetId","ins","_compileSurrogate","targetLightDOM","_compileElement","getBindingLanguage","wholeText","marker","createElement","currentChild","knownAttribute","property","attr","hasValues","mapAttribute","command","primaryProperty","alteredAttr","discrete","_configureProperties","liftsContent","attrToRemove","removeAttribute","elementProperty","compiler","auShadowSlot","innerHTML","createDocumentFragment","makeShadowSlot","namespaceURI","getElement","processAttributes","targetProperty","ViewEngineHooksResource","register","registry","registerViewEngineHooks","load","convention","ResourceModule","moduleInstance","mainResource","onLoaded","loadContext","vs","metadata","main","loads","ResourceDescription","exportedValue","resourceTypeMeta","HtmlBehaviorResource","attributeName","ModuleAnalyzer","getAnalysis","analyze","mainResourceKey","fallbackValue","fallbackKey","conventional","resourceModule","decorates","TemplateRegistryViewStrategy","logger","ProxyViewFactory","promise","auSlotBehavior","ViewEngine","loader","viewCompiler","moduleAnalyzer","appResources","_pluginMap","addResourcePlugin","extension","implementation","addPlugin","loadViewFactory","urlOrRegistryEntry","loadTemplate","ensureRegistryEntry","registryEntry","address","onReady","loadTemplateResources","importIds","names","map","src","debug","viewModelRequires","viewModelRequireMetadataKey","templateImportCount","req","importId","as","importViewResources","importViewModelResource","moduleImport","moduleMember","loadModule","viewModelModule","normalizedId","moduleIds","_applyLoaderPlugin","loadAllModules","imports","analysis","associatedModule","allAnalysis","lastIndexOf","ext","pluginName","applyPluginToUrl","Controller","scope","handlesBind","owningView","handlesCreated","automate","skipSelfSubscriber","__parentOverrideContext","parentOverrideContext","handlesUnbind","handlesAttached","handlesDetached","lastProviderId","doProcessContent","doProcessAttributes","attributeDefaultBindingMode","shadowDOMOptions","processContent","usesShadowDOM","childBindings","hasDynamicOptions","existing","addChildBinding","proto","htmlName","_copyInheritedProperties","registerAttribute","isArray","aliases","alias","registerElement","transientView","options","hasChildNodes","toReplace","removeNode","viewHost","au","attachShadow","registerInstance","boundary","__propertiesDefined__","derived","getOwn","_loop_1","prop","this_1","some","p","validateBehaviorName","newName","warn","viewUrl","hasParent","lookupFunctions","valueConverters","getValueConverter","bindingBehaviors","getBindingBehavior","elements","attributeMap","beforeCompile","afterCompile","beforeCreate","afterCreate","beforeBind","beforeUnbind","config","$resource","resourceType","name_1","templateController","bindables","currentProps","newProp","existed","j","jj","_tryAddHook","func","counter","callbackName","one","two","three","four","hooks","bindingLanguageFallback","patchInParent","newParent","originalParent","relativeToView","path","registerValueConverter","valueConverter","registerBindingBehavior","bindingBehavior","registerValue","autoRegister","impl","compose","noop","absolutePath","viewEngine","file","viewLocator","dependencyBaseUrl","entry","factoryIsReady","templateIsLoaded","from","InlineViewStrategy","markup","$deps","deps","elDeps","_i","dependencies_1","dep","exported","el","previous","SwapStrategies","before","callback","with","after","tryActivateViewModel","skipActivation","activate","model","CompositionEngine","_swap","swapStrategy","swapOrder","previousViews","currentController","compositionTransactionNotifier","_createControllerAndSwap","createController","compositionTransactionOwnershipToken","childContainer","viewModelResource","m","ensureViewModel","isClass","getOrCreateOwn","transaction","ChildObserver","selector","ChildObserverBinder","noMutations","trackMutation","groupedMutations","binder","record","mutations","onChildChange","binders","bindersLength","Map","added","addedNodes","removed","removedNodes","k","onRemove","onAdd","mutationRecords","matches","assignedSlot","anchors","__childObserver__","createMutationObserver","childList","subtree","observe","firstElementChild","items","nextElementSibling","prev","previousElementSibling","childObserver","disconnect","ElementConfigResource","registerElementConfig","instanceOrConfig","customElement","customAttribute","deco","t","bindable","nameOrConfigOrTarget","key2","descriptor2","actualTarget","defaultShadowDOMOptions","mode","useShadowDOM","targetOrOptions","useViewStrategy","useView","inlineView","noView","targetOrDependencies","TemplatingEngine","compositionEngine","_container","_moduleAnalyzer","_viewCompiler","_compositionEngine","configureAnimator","unregister","compilerInstructions","letExpressions"],"mappings":"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","file":"vendors~2a42e354.6004778a3d9053465b73.chunk.js","sourcesContent":["// With default aurelia-loader-webpack config, this module is added as an extra entry\n// before any other code executes so that PAL.Loader is properly configured.\n// There are several tricky points worth noticing.\n// \n// We don't add aurelia-loader-webpack itself as an entry point (used to until 2.0 RC2)\n// because it (transitively) brings too much bagage with itself, most notably polyfills.\n// This made it super-hard to add other polyfills before Aurelia's and led to various bugs.\n//\n// We don't add custom code in aurelia-pal or aurelia-loader or aurelia-bootstrapper to detect\n// the Webpack environment and configure the loader because they might live in a DLL.\n// If they do, they would bring aurelia-loader-webpack along in the DLL and this is a special \n// library that *has to be in the main chunk.*\n//\n// The over-complicated design I've settled upon in the end is to use this special module\n// as an entry point that configures aurelia-loader-webpack. It has minimal static imports:\n// just aurelia-pal, which itself has no other dependencies and doesn't run much code.\n// It hacks the loader field into a getter so that it can synchronously load aurelia-loader-webpack\n// just in time when it is demanded by aurelia-bootstrapper.\n// This enables users to load polyfills before aurelia-loader-webpack is actually loaded.\n\nimport { PLATFORM } from \"aurelia-pal\";\n\nvar Loader;\n\nObject.defineProperty(PLATFORM, \"Loader\", {\n  get: function() {\n    return Loader || (Loader = require(\"aurelia-loader-webpack\").WebpackLoader);\n  },\n  set: function(value) {\n    Loader = value;\n  }\n});\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","import { DOM, FEATURE, PLATFORM } from 'aurelia-pal';\nimport { TemplateRegistryEntry, Loader } from 'aurelia-loader';\nimport { metadata, Origin, protocol } from 'aurelia-metadata';\nimport { relativeToFile } from 'aurelia-path';\nimport * as LogManager from 'aurelia-logging';\nimport { subscriberCollection, bindingMode, createOverrideContext, ValueConverterResource, BindingBehaviorResource, ObserverLocator, camelCase, EventManager } from 'aurelia-binding';\nimport { Container, resolver, inject } from 'aurelia-dependency-injection';\nimport { TaskQueue } from 'aurelia-task-queue';\n\nvar ElementEvents = (function () {\r\n    function ElementEvents(element) {\r\n        this.element = element;\r\n        this.subscriptions = {};\r\n    }\r\n    ElementEvents.prototype._enqueueHandler = function (handler) {\r\n        this.subscriptions[handler.eventName] = this.subscriptions[handler.eventName] || [];\r\n        this.subscriptions[handler.eventName].push(handler);\r\n    };\r\n    ElementEvents.prototype._dequeueHandler = function (handler) {\r\n        var index;\r\n        var subscriptions = this.subscriptions[handler.eventName];\r\n        if (subscriptions) {\r\n            index = subscriptions.indexOf(handler);\r\n            if (index > -1) {\r\n                subscriptions.splice(index, 1);\r\n            }\r\n        }\r\n        return handler;\r\n    };\r\n    ElementEvents.prototype.publish = function (eventName, detail, bubbles, cancelable) {\r\n        if (detail === void 0) { detail = {}; }\r\n        if (bubbles === void 0) { bubbles = true; }\r\n        if (cancelable === void 0) { cancelable = true; }\r\n        var event = DOM.createCustomEvent(eventName, { cancelable: cancelable, bubbles: bubbles, detail: detail });\r\n        this.element.dispatchEvent(event);\r\n    };\r\n    ElementEvents.prototype.subscribe = function (eventName, handler, captureOrOptions) {\r\n        if (typeof handler === 'function') {\r\n            if (captureOrOptions === undefined) {\r\n                captureOrOptions = ElementEvents.defaultListenerOptions;\r\n            }\r\n            var eventHandler = new EventHandlerImpl(this, eventName, handler, captureOrOptions, false);\r\n            return eventHandler;\r\n        }\r\n        return undefined;\r\n    };\r\n    ElementEvents.prototype.subscribeOnce = function (eventName, handler, captureOrOptions) {\r\n        if (typeof handler === 'function') {\r\n            if (captureOrOptions === undefined) {\r\n                captureOrOptions = ElementEvents.defaultListenerOptions;\r\n            }\r\n            var eventHandler = new EventHandlerImpl(this, eventName, handler, captureOrOptions, true);\r\n            return eventHandler;\r\n        }\r\n        return undefined;\r\n    };\r\n    ElementEvents.prototype.dispose = function (eventName) {\r\n        if (eventName && typeof eventName === 'string') {\r\n            var subscriptions = this.subscriptions[eventName];\r\n            if (subscriptions) {\r\n                while (subscriptions.length) {\r\n                    var subscription = subscriptions.pop();\r\n                    if (subscription) {\r\n                        subscription.dispose();\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            this.disposeAll();\r\n        }\r\n    };\r\n    ElementEvents.prototype.disposeAll = function () {\r\n        for (var key in this.subscriptions) {\r\n            this.dispose(key);\r\n        }\r\n    };\r\n    ElementEvents.defaultListenerOptions = true;\r\n    return ElementEvents;\r\n}());\r\nvar EventHandlerImpl = (function () {\r\n    function EventHandlerImpl(owner, eventName, handler, captureOrOptions, once) {\r\n        this.owner = owner;\r\n        this.eventName = eventName;\r\n        this.handler = handler;\r\n        this.capture = typeof captureOrOptions === 'boolean' ? captureOrOptions : captureOrOptions.capture;\r\n        this.bubbles = !this.capture;\r\n        this.captureOrOptions = captureOrOptions;\r\n        this.once = once;\r\n        owner.element.addEventListener(eventName, this, captureOrOptions);\r\n        owner._enqueueHandler(this);\r\n    }\r\n    EventHandlerImpl.prototype.handleEvent = function (e) {\r\n        var fn = this.handler;\r\n        fn(e);\r\n        if (this.once) {\r\n            this.dispose();\r\n        }\r\n    };\r\n    EventHandlerImpl.prototype.dispose = function () {\r\n        this.owner.element.removeEventListener(this.eventName, this, this.captureOrOptions);\r\n        this.owner._dequeueHandler(this);\r\n        this.owner = this.handler = null;\r\n    };\r\n    return EventHandlerImpl;\r\n}());\n\nvar ResourceLoadContext = (function () {\r\n    function ResourceLoadContext() {\r\n        this.dependencies = {};\r\n    }\r\n    ResourceLoadContext.prototype.addDependency = function (url) {\r\n        this.dependencies[url] = true;\r\n    };\r\n    ResourceLoadContext.prototype.hasDependency = function (url) {\r\n        return url in this.dependencies;\r\n    };\r\n    return ResourceLoadContext;\r\n}());\r\nvar ViewCompileInstruction = (function () {\r\n    function ViewCompileInstruction(targetShadowDOM, compileSurrogate) {\r\n        if (targetShadowDOM === void 0) { targetShadowDOM = false; }\r\n        if (compileSurrogate === void 0) { compileSurrogate = false; }\r\n        this.targetShadowDOM = targetShadowDOM;\r\n        this.compileSurrogate = compileSurrogate;\r\n        this.associatedModuleId = null;\r\n    }\r\n    ViewCompileInstruction.normal = new ViewCompileInstruction();\r\n    return ViewCompileInstruction;\r\n}());\r\nvar BehaviorInstruction = (function () {\r\n    function BehaviorInstruction() {\r\n    }\r\n    BehaviorInstruction.enhance = function () {\r\n        var instruction = new BehaviorInstruction();\r\n        instruction.enhance = true;\r\n        return instruction;\r\n    };\r\n    BehaviorInstruction.unitTest = function (type, attributes) {\r\n        var instruction = new BehaviorInstruction();\r\n        instruction.type = type;\r\n        instruction.attributes = attributes || {};\r\n        return instruction;\r\n    };\r\n    BehaviorInstruction.element = function (node, type) {\r\n        var instruction = new BehaviorInstruction();\r\n        instruction.type = type;\r\n        instruction.attributes = {};\r\n        instruction.anchorIsContainer = !(node.hasAttribute('containerless') || type.containerless);\r\n        instruction.initiatedByBehavior = true;\r\n        return instruction;\r\n    };\r\n    BehaviorInstruction.attribute = function (attrName, type) {\r\n        var instruction = new BehaviorInstruction();\r\n        instruction.attrName = attrName;\r\n        instruction.type = type || null;\r\n        instruction.attributes = {};\r\n        return instruction;\r\n    };\r\n    BehaviorInstruction.dynamic = function (host, viewModel, viewFactory) {\r\n        var instruction = new BehaviorInstruction();\r\n        instruction.host = host;\r\n        instruction.viewModel = viewModel;\r\n        instruction.viewFactory = viewFactory;\r\n        instruction.inheritBindingContext = true;\r\n        return instruction;\r\n    };\r\n    BehaviorInstruction.normal = new BehaviorInstruction();\r\n    return BehaviorInstruction;\r\n}());\r\nvar biProto = BehaviorInstruction.prototype;\r\nbiProto.initiatedByBehavior = false;\r\nbiProto.enhance = false;\r\nbiProto.partReplacements = null;\r\nbiProto.viewFactory = null;\r\nbiProto.originalAttrName = null;\r\nbiProto.skipContentProcessing = false;\r\nbiProto.contentFactory = null;\r\nbiProto.viewModel = null;\r\nbiProto.anchorIsContainer = false;\r\nbiProto.host = null;\r\nbiProto.attributes = null;\r\nbiProto.type = null;\r\nbiProto.attrName = null;\r\nbiProto.inheritBindingContext = false;\r\nvar TargetInstruction = (function () {\r\n    function TargetInstruction() {\r\n    }\r\n    TargetInstruction.shadowSlot = function (parentInjectorId) {\r\n        var instruction = new TargetInstruction();\r\n        instruction.parentInjectorId = parentInjectorId;\r\n        instruction.shadowSlot = true;\r\n        return instruction;\r\n    };\r\n    TargetInstruction.contentExpression = function (expression) {\r\n        var instruction = new TargetInstruction();\r\n        instruction.contentExpression = expression;\r\n        return instruction;\r\n    };\r\n    TargetInstruction.letElement = function (expressions) {\r\n        var instruction = new TargetInstruction();\r\n        instruction.expressions = expressions;\r\n        instruction.letElement = true;\r\n        return instruction;\r\n    };\r\n    TargetInstruction.lifting = function (parentInjectorId, liftingInstruction) {\r\n        var instruction = new TargetInstruction();\r\n        instruction.parentInjectorId = parentInjectorId;\r\n        instruction.expressions = TargetInstruction.noExpressions;\r\n        instruction.behaviorInstructions = [liftingInstruction];\r\n        instruction.viewFactory = liftingInstruction.viewFactory;\r\n        instruction.providers = [liftingInstruction.type.target];\r\n        instruction.lifting = true;\r\n        return instruction;\r\n    };\r\n    TargetInstruction.normal = function (injectorId, parentInjectorId, providers, behaviorInstructions, expressions, elementInstruction) {\r\n        var instruction = new TargetInstruction();\r\n        instruction.injectorId = injectorId;\r\n        instruction.parentInjectorId = parentInjectorId;\r\n        instruction.providers = providers;\r\n        instruction.behaviorInstructions = behaviorInstructions;\r\n        instruction.expressions = expressions;\r\n        instruction.anchorIsContainer = elementInstruction ? elementInstruction.anchorIsContainer : true;\r\n        instruction.elementInstruction = elementInstruction;\r\n        return instruction;\r\n    };\r\n    TargetInstruction.surrogate = function (providers, behaviorInstructions, expressions, values) {\r\n        var instruction = new TargetInstruction();\r\n        instruction.expressions = expressions;\r\n        instruction.behaviorInstructions = behaviorInstructions;\r\n        instruction.providers = providers;\r\n        instruction.values = values;\r\n        return instruction;\r\n    };\r\n    TargetInstruction.noExpressions = Object.freeze([]);\r\n    return TargetInstruction;\r\n}());\r\nvar tiProto = TargetInstruction.prototype;\r\ntiProto.injectorId = null;\r\ntiProto.parentInjectorId = null;\r\ntiProto.shadowSlot = false;\r\ntiProto.slotName = null;\r\ntiProto.slotFallbackFactory = null;\r\ntiProto.contentExpression = null;\r\ntiProto.letElement = false;\r\ntiProto.expressions = null;\r\ntiProto.expressions = null;\r\ntiProto.providers = null;\r\ntiProto.viewFactory = null;\r\ntiProto.anchorIsContainer = false;\r\ntiProto.elementInstruction = null;\r\ntiProto.lifting = false;\r\ntiProto.values = null;\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\n\nvar capitalMatcher = /([A-Z])/g;\r\nfunction addHyphenAndLower(char) {\r\n    return '-' + char.toLowerCase();\r\n}\r\nfunction _hyphenate(name) {\r\n    return (name.charAt(0).toLowerCase() + name.slice(1)).replace(capitalMatcher, addHyphenAndLower);\r\n}\r\nfunction _isAllWhitespace(node) {\r\n    return !(node.auInterpolationTarget || (/[^\\t\\n\\r ]/.test(node.textContent)));\r\n}\n\nvar BehaviorPropertyObserver = (function () {\r\n    function BehaviorPropertyObserver(taskQueue, obj, propertyName, selfSubscriber, initialValue) {\r\n        this.taskQueue = taskQueue;\r\n        this.obj = obj;\r\n        this.propertyName = propertyName;\r\n        this.notqueued = true;\r\n        this.publishing = false;\r\n        this.selfSubscriber = selfSubscriber;\r\n        this.currentValue = this.oldValue = initialValue;\r\n    }\r\n    BehaviorPropertyObserver.prototype.getValue = function () {\r\n        return this.currentValue;\r\n    };\r\n    BehaviorPropertyObserver.prototype.setValue = function (newValue) {\r\n        var oldValue = this.currentValue;\r\n        if (!Object.is(newValue, oldValue)) {\r\n            this.oldValue = oldValue;\r\n            this.currentValue = newValue;\r\n            if (this.publishing && this.notqueued) {\r\n                if (this.taskQueue.flushing) {\r\n                    this.call();\r\n                }\r\n                else {\r\n                    this.notqueued = false;\r\n                    this.taskQueue.queueMicroTask(this);\r\n                }\r\n            }\r\n        }\r\n    };\r\n    BehaviorPropertyObserver.prototype.call = function () {\r\n        var oldValue = this.oldValue;\r\n        var newValue = this.currentValue;\r\n        this.notqueued = true;\r\n        if (Object.is(newValue, oldValue)) {\r\n            return;\r\n        }\r\n        if (this.selfSubscriber) {\r\n            this.selfSubscriber(newValue, oldValue);\r\n        }\r\n        this.callSubscribers(newValue, oldValue);\r\n        this.oldValue = newValue;\r\n    };\r\n    BehaviorPropertyObserver.prototype.callSubscribers = function (newValue, oldValue) {\r\n        throw new Error('Method not implemented.');\r\n    };\r\n    BehaviorPropertyObserver.prototype.subscribe = function (context, callable) {\r\n        this.addSubscriber(context, callable);\r\n    };\r\n    BehaviorPropertyObserver.prototype.addSubscriber = function (context, callable) {\r\n        throw new Error('Method not implemented.');\r\n    };\r\n    BehaviorPropertyObserver.prototype.unsubscribe = function (context, callable) {\r\n        this.removeSubscriber(context, callable);\r\n    };\r\n    BehaviorPropertyObserver.prototype.removeSubscriber = function (context, callable) {\r\n        throw new Error('Method not implemented.');\r\n    };\r\n    BehaviorPropertyObserver = __decorate([\r\n        subscriberCollection()\r\n    ], BehaviorPropertyObserver);\r\n    return BehaviorPropertyObserver;\r\n}());\n\nfunction getObserver(instance, name) {\r\n    var lookup = instance.__observers__;\r\n    if (lookup === undefined) {\r\n        var ctor = Object.getPrototypeOf(instance).constructor;\r\n        var behavior = metadata.get(metadata.resource, ctor);\r\n        if (!behavior.isInitialized) {\r\n            behavior.initialize(Container.instance || new Container(), instance.constructor);\r\n        }\r\n        lookup = behavior.observerLocator.getOrCreateObserversLookup(instance);\r\n        behavior._ensurePropertiesDefined(instance, lookup);\r\n    }\r\n    return lookup[name];\r\n}\r\nvar BindableProperty = (function () {\r\n    function BindableProperty(nameOrConfig) {\r\n        if (typeof nameOrConfig === 'string') {\r\n            this.name = nameOrConfig;\r\n        }\r\n        else {\r\n            Object.assign(this, nameOrConfig);\r\n        }\r\n        this.attribute = this.attribute || _hyphenate(this.name);\r\n        var defaultBindingMode = this.defaultBindingMode;\r\n        if (defaultBindingMode === null || defaultBindingMode === undefined) {\r\n            this.defaultBindingMode = bindingMode.oneWay;\r\n        }\r\n        else if (typeof defaultBindingMode === 'string') {\r\n            this.defaultBindingMode = bindingMode[defaultBindingMode] || bindingMode.oneWay;\r\n        }\r\n        this.changeHandler = this.changeHandler || null;\r\n        this.owner = null;\r\n        this.descriptor = null;\r\n    }\r\n    BindableProperty.prototype.registerWith = function (target, behavior, descriptor) {\r\n        behavior.properties.push(this);\r\n        behavior.attributes[this.attribute] = this;\r\n        this.owner = behavior;\r\n        if (descriptor) {\r\n            this.descriptor = descriptor;\r\n            return this._configureDescriptor(descriptor);\r\n        }\r\n        return undefined;\r\n    };\r\n    BindableProperty.prototype._configureDescriptor = function (descriptor) {\r\n        var name = this.name;\r\n        descriptor.configurable = true;\r\n        descriptor.enumerable = true;\r\n        if ('initializer' in descriptor) {\r\n            this.defaultValue = descriptor.initializer;\r\n            delete descriptor.initializer;\r\n            delete descriptor.writable;\r\n        }\r\n        if ('value' in descriptor) {\r\n            this.defaultValue = descriptor.value;\r\n            delete descriptor.value;\r\n            delete descriptor.writable;\r\n        }\r\n        descriptor.get = function () {\r\n            return getObserver(this, name).getValue();\r\n        };\r\n        descriptor.set = function (value) {\r\n            getObserver(this, name).setValue(value);\r\n        };\r\n        descriptor.get.getObserver = function (obj) {\r\n            return getObserver(obj, name);\r\n        };\r\n        return descriptor;\r\n    };\r\n    BindableProperty.prototype.defineOn = function (target, behavior) {\r\n        var name = this.name;\r\n        var handlerName;\r\n        if (this.changeHandler === null) {\r\n            handlerName = name + 'Changed';\r\n            if (handlerName in target.prototype) {\r\n                this.changeHandler = handlerName;\r\n            }\r\n        }\r\n        if (this.descriptor === null) {\r\n            Object.defineProperty(target.prototype, name, this._configureDescriptor({}));\r\n        }\r\n    };\r\n    BindableProperty.prototype.createObserver = function (viewModel) {\r\n        var selfSubscriber = null;\r\n        var defaultValue = this.defaultValue;\r\n        var changeHandlerName = this.changeHandler;\r\n        var name = this.name;\r\n        var initialValue;\r\n        if (this.hasOptions) {\r\n            return undefined;\r\n        }\r\n        if (changeHandlerName in viewModel) {\r\n            if ('propertyChanged' in viewModel) {\r\n                selfSubscriber = function (newValue, oldValue) {\r\n                    viewModel[changeHandlerName](newValue, oldValue);\r\n                    viewModel.propertyChanged(name, newValue, oldValue);\r\n                };\r\n            }\r\n            else {\r\n                selfSubscriber = function (newValue, oldValue) { return viewModel[changeHandlerName](newValue, oldValue); };\r\n            }\r\n        }\r\n        else if ('propertyChanged' in viewModel) {\r\n            selfSubscriber = function (newValue, oldValue) { return viewModel.propertyChanged(name, newValue, oldValue); };\r\n        }\r\n        else if (changeHandlerName !== null) {\r\n            throw new Error(\"Change handler \".concat(changeHandlerName, \" was specified but not declared on the class.\"));\r\n        }\r\n        if (defaultValue !== undefined) {\r\n            initialValue = typeof defaultValue === 'function' ? defaultValue.call(viewModel) : defaultValue;\r\n        }\r\n        return new BehaviorPropertyObserver(this.owner.taskQueue, viewModel, this.name, selfSubscriber, initialValue);\r\n    };\r\n    BindableProperty.prototype._initialize = function (viewModel, observerLookup, attributes, behaviorHandlesBind, boundProperties) {\r\n        var selfSubscriber;\r\n        var observer;\r\n        var attribute;\r\n        var defaultValue = this.defaultValue;\r\n        if (this.isDynamic) {\r\n            for (var key in attributes) {\r\n                this._createDynamicProperty(viewModel, observerLookup, behaviorHandlesBind, key, attributes[key], boundProperties);\r\n            }\r\n        }\r\n        else if (!this.hasOptions) {\r\n            observer = observerLookup[this.name];\r\n            if (attributes !== null) {\r\n                selfSubscriber = observer.selfSubscriber;\r\n                attribute = attributes[this.attribute];\r\n                if (behaviorHandlesBind) {\r\n                    observer.selfSubscriber = null;\r\n                }\r\n                if (typeof attribute === 'string') {\r\n                    viewModel[this.name] = attribute;\r\n                    observer.call();\r\n                }\r\n                else if (attribute) {\r\n                    boundProperties.push({ observer: observer, binding: attribute.createBinding(viewModel) });\r\n                }\r\n                else if (defaultValue !== undefined) {\r\n                    observer.call();\r\n                }\r\n                observer.selfSubscriber = selfSubscriber;\r\n            }\r\n            observer.publishing = true;\r\n        }\r\n    };\r\n    BindableProperty.prototype._createDynamicProperty = function (viewModel, observerLookup, behaviorHandlesBind, name, attribute, boundProperties) {\r\n        var changeHandlerName = name + 'Changed';\r\n        var selfSubscriber = null;\r\n        var observer;\r\n        var info;\r\n        if (changeHandlerName in viewModel) {\r\n            if ('propertyChanged' in viewModel) {\r\n                selfSubscriber = function (newValue, oldValue) {\r\n                    viewModel[changeHandlerName](newValue, oldValue);\r\n                    viewModel.propertyChanged(name, newValue, oldValue);\r\n                };\r\n            }\r\n            else {\r\n                selfSubscriber = function (newValue, oldValue) { return viewModel[changeHandlerName](newValue, oldValue); };\r\n            }\r\n        }\r\n        else if ('propertyChanged' in viewModel) {\r\n            selfSubscriber = function (newValue, oldValue) { return viewModel.propertyChanged(name, newValue, oldValue); };\r\n        }\r\n        observer = observerLookup[name] = new BehaviorPropertyObserver(this.owner.taskQueue, viewModel, name, selfSubscriber);\r\n        Object.defineProperty(viewModel, name, {\r\n            configurable: true,\r\n            enumerable: true,\r\n            get: observer.getValue.bind(observer),\r\n            set: observer.setValue.bind(observer)\r\n        });\r\n        if (behaviorHandlesBind) {\r\n            observer.selfSubscriber = null;\r\n        }\r\n        if (typeof attribute === 'string') {\r\n            viewModel[name] = attribute;\r\n            observer.call();\r\n        }\r\n        else if (attribute) {\r\n            info = { observer: observer, binding: attribute.createBinding(viewModel) };\r\n            boundProperties.push(info);\r\n        }\r\n        observer.publishing = true;\r\n        observer.selfSubscriber = selfSubscriber;\r\n    };\r\n    return BindableProperty;\r\n}());\n\nvar ViewLocator = (function () {\r\n    function ViewLocator() {\r\n    }\r\n    ViewLocator.prototype.getViewStrategy = function (value) {\r\n        if (!value) {\r\n            return null;\r\n        }\r\n        if (typeof value === 'object' && 'getViewStrategy' in value) {\r\n            var origin_1 = Origin.get(value.constructor);\r\n            value = value.getViewStrategy();\r\n            if (typeof value === 'string') {\r\n                value = new RelativeViewStrategy(value);\r\n            }\r\n            viewStrategy.assert(value);\r\n            if (origin_1.moduleId) {\r\n                value.makeRelativeTo(origin_1.moduleId);\r\n            }\r\n            return value;\r\n        }\r\n        if (typeof value === 'string') {\r\n            value = new RelativeViewStrategy(value);\r\n        }\r\n        if (viewStrategy.validate(value)) {\r\n            return value;\r\n        }\r\n        if (typeof value !== 'function') {\r\n            value = value.constructor;\r\n        }\r\n        if ('$view' in value) {\r\n            var c = value.$view;\r\n            var view = void 0;\r\n            c = typeof c === 'function' ? c.call(value) : c;\r\n            if (c === null) {\r\n                view = new NoViewStrategy();\r\n            }\r\n            else {\r\n                view = c instanceof StaticViewStrategy ? c : new StaticViewStrategy(c);\r\n            }\r\n            metadata.define(ViewLocator.viewStrategyMetadataKey, view, value);\r\n            return view;\r\n        }\r\n        var origin = Origin.get(value);\r\n        var strategy = metadata.get(ViewLocator.viewStrategyMetadataKey, value);\r\n        if (!strategy) {\r\n            if (!origin.moduleId) {\r\n                throw new Error('Cannot determine default view strategy for object.\\n' + value);\r\n            }\r\n            strategy = this.createFallbackViewStrategy(origin);\r\n        }\r\n        else if (origin.moduleId) {\r\n            strategy.moduleId = origin.moduleId;\r\n        }\r\n        return strategy;\r\n    };\r\n    ViewLocator.prototype.createFallbackViewStrategy = function (origin) {\r\n        return new ConventionalViewStrategy(this, origin);\r\n    };\r\n    ViewLocator.prototype.convertOriginToViewUrl = function (origin) {\r\n        var moduleId = origin.moduleId;\r\n        var id = (moduleId.endsWith('.js') || moduleId.endsWith('.ts')) ? moduleId.substring(0, moduleId.length - 3) : moduleId;\r\n        return id + '.html';\r\n    };\r\n    ViewLocator.viewStrategyMetadataKey = 'aurelia:view-strategy';\r\n    return ViewLocator;\r\n}());\n\nfunction mi(name) {\r\n    throw new Error(\"BindingLanguage must implement \".concat(name, \"().\"));\r\n}\r\nvar BindingLanguage = (function () {\r\n    function BindingLanguage() {\r\n    }\r\n    BindingLanguage.prototype.inspectAttribute = function (resources, elementName, attrName, attrValue) {\r\n        mi('inspectAttribute');\r\n    };\r\n    BindingLanguage.prototype.createAttributeInstruction = function (resources, element, info, existingInstruction, context) {\r\n        mi('createAttributeInstruction');\r\n    };\r\n    BindingLanguage.prototype.createLetExpressions = function (resources, element) {\r\n        mi('createLetExpressions');\r\n    };\r\n    BindingLanguage.prototype.inspectTextContent = function (resources, value) {\r\n        mi('inspectTextContent');\r\n    };\r\n    return BindingLanguage;\r\n}());\n\nvar noNodes = Object.freeze([]);\r\nvar SlotCustomAttribute = (function () {\r\n    function SlotCustomAttribute(element) {\r\n        this.element = element;\r\n        this.element.auSlotAttribute = this;\r\n    }\r\n    SlotCustomAttribute.inject = function () {\r\n        return [DOM.Element];\r\n    };\r\n    SlotCustomAttribute.prototype.valueChanged = function (newValue, oldValue) { };\r\n    return SlotCustomAttribute;\r\n}());\r\nvar PassThroughSlot = (function () {\r\n    function PassThroughSlot(anchor, name, destinationName, fallbackFactory) {\r\n        this.anchor = anchor;\r\n        this.anchor.viewSlot = this;\r\n        this.name = name;\r\n        this.destinationName = destinationName;\r\n        this.fallbackFactory = fallbackFactory;\r\n        this.destinationSlot = null;\r\n        this.projections = 0;\r\n        this.contentView = null;\r\n        var attr = new SlotCustomAttribute(this.anchor);\r\n        attr.value = this.destinationName;\r\n    }\r\n    Object.defineProperty(PassThroughSlot.prototype, \"needsFallbackRendering\", {\r\n        get: function () {\r\n            return this.fallbackFactory && this.projections === 0;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    PassThroughSlot.prototype.renderFallbackContent = function (view, nodes, projectionSource, index) {\r\n        if (this.contentView === null) {\r\n            this.contentView = this.fallbackFactory.create(this.ownerView.container);\r\n            this.contentView.bind(this.ownerView.bindingContext, this.ownerView.overrideContext);\r\n            var slots = Object.create(null);\r\n            slots[this.destinationSlot.name] = this.destinationSlot;\r\n            ShadowDOM.distributeView(this.contentView, slots, projectionSource, index, this.destinationSlot.name);\r\n        }\r\n    };\r\n    PassThroughSlot.prototype.passThroughTo = function (destinationSlot) {\r\n        this.destinationSlot = destinationSlot;\r\n    };\r\n    PassThroughSlot.prototype.addNode = function (view, node, projectionSource, index) {\r\n        if (this.contentView !== null) {\r\n            this.contentView.removeNodes();\r\n            this.contentView.detached();\r\n            this.contentView.unbind();\r\n            this.contentView = null;\r\n        }\r\n        if (node.viewSlot instanceof PassThroughSlot) {\r\n            node.viewSlot.passThroughTo(this);\r\n            return;\r\n        }\r\n        this.projections++;\r\n        this.destinationSlot.addNode(view, node, projectionSource, index);\r\n    };\r\n    PassThroughSlot.prototype.removeView = function (view, projectionSource) {\r\n        this.projections--;\r\n        this.destinationSlot.removeView(view, projectionSource);\r\n        if (this.needsFallbackRendering) {\r\n            this.renderFallbackContent(null, noNodes, projectionSource);\r\n        }\r\n    };\r\n    PassThroughSlot.prototype.removeAll = function (projectionSource) {\r\n        this.projections = 0;\r\n        this.destinationSlot.removeAll(projectionSource);\r\n        if (this.needsFallbackRendering) {\r\n            this.renderFallbackContent(null, noNodes, projectionSource);\r\n        }\r\n    };\r\n    PassThroughSlot.prototype.projectFrom = function (view, projectionSource) {\r\n        this.destinationSlot.projectFrom(view, projectionSource);\r\n    };\r\n    PassThroughSlot.prototype.created = function (ownerView) {\r\n        this.ownerView = ownerView;\r\n    };\r\n    PassThroughSlot.prototype.bind = function (view) {\r\n        if (this.contentView) {\r\n            this.contentView.bind(view.bindingContext, view.overrideContext);\r\n        }\r\n    };\r\n    PassThroughSlot.prototype.attached = function () {\r\n        if (this.contentView) {\r\n            this.contentView.attached();\r\n        }\r\n    };\r\n    PassThroughSlot.prototype.detached = function () {\r\n        if (this.contentView) {\r\n            this.contentView.detached();\r\n        }\r\n    };\r\n    PassThroughSlot.prototype.unbind = function () {\r\n        if (this.contentView) {\r\n            this.contentView.unbind();\r\n        }\r\n    };\r\n    return PassThroughSlot;\r\n}());\r\nvar ShadowSlot = (function () {\r\n    function ShadowSlot(anchor, name, fallbackFactory) {\r\n        this.anchor = anchor;\r\n        this.anchor.isContentProjectionSource = true;\r\n        this.anchor.viewSlot = this;\r\n        this.name = name;\r\n        this.fallbackFactory = fallbackFactory;\r\n        this.contentView = null;\r\n        this.projections = 0;\r\n        this.children = [];\r\n        this.projectFromAnchors = null;\r\n        this.destinationSlots = null;\r\n    }\r\n    Object.defineProperty(ShadowSlot.prototype, \"needsFallbackRendering\", {\r\n        get: function () {\r\n            return this.fallbackFactory && this.projections === 0;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    ShadowSlot.prototype.addNode = function (view, node, projectionSource, index, destination) {\r\n        var $node = node;\r\n        if (this.contentView !== null) {\r\n            this.contentView.removeNodes();\r\n            this.contentView.detached();\r\n            this.contentView.unbind();\r\n            this.contentView = null;\r\n        }\r\n        if ($node.viewSlot instanceof PassThroughSlot) {\r\n            $node.viewSlot.passThroughTo(this);\r\n            return;\r\n        }\r\n        if (this.destinationSlots !== null) {\r\n            ShadowDOM.distributeNodes(view, [$node], this.destinationSlots, this, index);\r\n        }\r\n        else {\r\n            $node.auOwnerView = view;\r\n            $node.auProjectionSource = projectionSource;\r\n            $node.auAssignedSlot = this;\r\n            var anchor = this._findAnchor(view, $node, projectionSource, index);\r\n            var parent_1 = anchor.parentNode;\r\n            parent_1.insertBefore($node, anchor);\r\n            this.children.push($node);\r\n            this.projections++;\r\n        }\r\n    };\r\n    ShadowSlot.prototype.removeView = function (view, projectionSource) {\r\n        if (this.destinationSlots !== null) {\r\n            ShadowDOM.undistributeView(view, this.destinationSlots, this);\r\n        }\r\n        else if (this.contentView && this.contentView.hasSlots) {\r\n            ShadowDOM.undistributeView(view, this.contentView.slots, projectionSource);\r\n        }\r\n        else {\r\n            var found = this.children.find(function (x) { return x.auSlotProjectFrom === projectionSource; });\r\n            if (found) {\r\n                var children = found.auProjectionChildren;\r\n                var ownChildren = this.children;\r\n                for (var i = 0, ii = children.length; i < ii; ++i) {\r\n                    var child = children[i];\r\n                    if (child.auOwnerView === view) {\r\n                        children.splice(i, 1);\r\n                        view.fragment.appendChild(child);\r\n                        i--;\r\n                        ii--;\r\n                        this.projections--;\r\n                        var idx = ownChildren.indexOf(child);\r\n                        if (idx > -1) {\r\n                            ownChildren.splice(idx, 1);\r\n                        }\r\n                    }\r\n                }\r\n                if (this.needsFallbackRendering) {\r\n                    this.renderFallbackContent(view, noNodes, projectionSource);\r\n                }\r\n            }\r\n        }\r\n    };\r\n    ShadowSlot.prototype.removeAll = function (projectionSource) {\r\n        if (this.destinationSlots !== null) {\r\n            ShadowDOM.undistributeAll(this.destinationSlots, this);\r\n        }\r\n        else if (this.contentView && this.contentView.hasSlots) {\r\n            ShadowDOM.undistributeAll(this.contentView.slots, projectionSource);\r\n        }\r\n        else {\r\n            var found = this.children.find(function (x) { return x.auSlotProjectFrom === projectionSource; });\r\n            if (found) {\r\n                var children = found.auProjectionChildren;\r\n                var ownChildren = this.children;\r\n                for (var i = 0, ii = children.length; i < ii; ++i) {\r\n                    var child = children[i];\r\n                    child.auOwnerView.fragment.appendChild(child);\r\n                    this.projections--;\r\n                    var idx = ownChildren.indexOf(child);\r\n                    if (idx > -1) {\r\n                        ownChildren.splice(idx, 1);\r\n                    }\r\n                }\r\n                found.auProjectionChildren = [];\r\n                if (this.needsFallbackRendering) {\r\n                    this.renderFallbackContent(null, noNodes, projectionSource);\r\n                }\r\n            }\r\n        }\r\n    };\r\n    ShadowSlot.prototype._findAnchor = function (view, node, projectionSource, index) {\r\n        if (projectionSource) {\r\n            var found = this.children.find(function (x) { return x.auSlotProjectFrom === projectionSource; });\r\n            if (found) {\r\n                if (index !== undefined) {\r\n                    var children = found.auProjectionChildren;\r\n                    var viewIndex = -1;\r\n                    var lastView = void 0;\r\n                    for (var i = 0, ii = children.length; i < ii; ++i) {\r\n                        var current = children[i];\r\n                        if (current.auOwnerView !== lastView) {\r\n                            viewIndex++;\r\n                            lastView = current.auOwnerView;\r\n                            if (viewIndex >= index && lastView !== view) {\r\n                                children.splice(i, 0, node);\r\n                                return current;\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                found.auProjectionChildren.push(node);\r\n                return found;\r\n            }\r\n        }\r\n        return this.anchor;\r\n    };\r\n    ShadowSlot.prototype.projectTo = function (slots) {\r\n        this.destinationSlots = slots;\r\n    };\r\n    ShadowSlot.prototype.projectFrom = function (view, projectionSource) {\r\n        var anchor = DOM.createComment('anchor');\r\n        var parent = this.anchor.parentNode;\r\n        anchor.auSlotProjectFrom = projectionSource;\r\n        anchor.auOwnerView = view;\r\n        anchor.auProjectionChildren = [];\r\n        parent.insertBefore(anchor, this.anchor);\r\n        this.children.push(anchor);\r\n        if (this.projectFromAnchors === null) {\r\n            this.projectFromAnchors = [];\r\n        }\r\n        this.projectFromAnchors.push(anchor);\r\n    };\r\n    ShadowSlot.prototype.renderFallbackContent = function (view, nodes, projectionSource, index) {\r\n        if (this.contentView === null) {\r\n            this.contentView = this.fallbackFactory.create(this.ownerView.container);\r\n            this.contentView.bind(this.ownerView.bindingContext, this.ownerView.overrideContext);\r\n            this.contentView.insertNodesBefore(this.anchor);\r\n        }\r\n        if (this.contentView.hasSlots) {\r\n            var slots = this.contentView.slots;\r\n            var projectFromAnchors = this.projectFromAnchors;\r\n            if (projectFromAnchors !== null) {\r\n                for (var slotName in slots) {\r\n                    var slot = slots[slotName];\r\n                    for (var i = 0, ii = projectFromAnchors.length; i < ii; ++i) {\r\n                        var anchor = projectFromAnchors[i];\r\n                        slot.projectFrom(anchor.auOwnerView, anchor.auSlotProjectFrom);\r\n                    }\r\n                }\r\n            }\r\n            this.fallbackSlots = slots;\r\n            ShadowDOM.distributeNodes(view, nodes, slots, projectionSource, index);\r\n        }\r\n    };\r\n    ShadowSlot.prototype.created = function (ownerView) {\r\n        this.ownerView = ownerView;\r\n    };\r\n    ShadowSlot.prototype.bind = function (view) {\r\n        if (this.contentView) {\r\n            this.contentView.bind(view.bindingContext, view.overrideContext);\r\n        }\r\n    };\r\n    ShadowSlot.prototype.attached = function () {\r\n        if (this.contentView) {\r\n            this.contentView.attached();\r\n        }\r\n    };\r\n    ShadowSlot.prototype.detached = function () {\r\n        if (this.contentView) {\r\n            this.contentView.detached();\r\n        }\r\n    };\r\n    ShadowSlot.prototype.unbind = function () {\r\n        if (this.contentView) {\r\n            this.contentView.unbind();\r\n        }\r\n    };\r\n    return ShadowSlot;\r\n}());\r\nvar ShadowDOM = (function () {\r\n    function ShadowDOM() {\r\n    }\r\n    ShadowDOM.getSlotName = function (node) {\r\n        if (node.auSlotAttribute === undefined) {\r\n            return ShadowDOM.defaultSlotKey;\r\n        }\r\n        return node.auSlotAttribute.value;\r\n    };\r\n    ShadowDOM.distributeView = function (view, slots, projectionSource, index, destinationOverride) {\r\n        var nodes;\r\n        if (view === null) {\r\n            nodes = noNodes;\r\n        }\r\n        else {\r\n            var childNodes = view.fragment.childNodes;\r\n            var ii = childNodes.length;\r\n            nodes = new Array(ii);\r\n            for (var i = 0; i < ii; ++i) {\r\n                nodes[i] = childNodes[i];\r\n            }\r\n        }\r\n        ShadowDOM.distributeNodes(view, nodes, slots, projectionSource, index, destinationOverride);\r\n    };\r\n    ShadowDOM.undistributeView = function (view, slots, projectionSource) {\r\n        for (var slotName in slots) {\r\n            slots[slotName].removeView(view, projectionSource);\r\n        }\r\n    };\r\n    ShadowDOM.undistributeAll = function (slots, projectionSource) {\r\n        for (var slotName in slots) {\r\n            slots[slotName].removeAll(projectionSource);\r\n        }\r\n    };\r\n    ShadowDOM.distributeNodes = function (view, nodes, slots, projectionSource, index, destinationOverride) {\r\n        for (var i = 0, ii = nodes.length; i < ii; ++i) {\r\n            var currentNode = nodes[i];\r\n            var nodeType = currentNode.nodeType;\r\n            if (currentNode.isContentProjectionSource) {\r\n                currentNode.viewSlot.projectTo(slots);\r\n                for (var slotName in slots) {\r\n                    slots[slotName].projectFrom(view, currentNode.viewSlot);\r\n                }\r\n                nodes.splice(i, 1);\r\n                ii--;\r\n                i--;\r\n            }\r\n            else if (nodeType === 1 || nodeType === 3 || currentNode.viewSlot instanceof PassThroughSlot) {\r\n                if (nodeType === 3 && _isAllWhitespace(currentNode)) {\r\n                    nodes.splice(i, 1);\r\n                    ii--;\r\n                    i--;\r\n                }\r\n                else {\r\n                    var found = slots[destinationOverride || ShadowDOM.getSlotName(currentNode)];\r\n                    if (found) {\r\n                        found.addNode(view, currentNode, projectionSource, index);\r\n                        nodes.splice(i, 1);\r\n                        ii--;\r\n                        i--;\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                nodes.splice(i, 1);\r\n                ii--;\r\n                i--;\r\n            }\r\n        }\r\n        for (var slotName in slots) {\r\n            var slot = slots[slotName];\r\n            if (slot.needsFallbackRendering) {\r\n                slot.renderFallbackContent(view, nodes, projectionSource, index);\r\n            }\r\n        }\r\n    };\r\n    ShadowDOM.defaultSlotKey = '__au-default-slot-key__';\r\n    return ShadowDOM;\r\n}());\n\nvar CompositionTransactionNotifier = (function () {\r\n    function CompositionTransactionNotifier(owner) {\r\n        this.owner = owner;\r\n        this.owner._compositionCount++;\r\n    }\r\n    CompositionTransactionNotifier.prototype.done = function () {\r\n        this.owner._compositionCount--;\r\n        this.owner._tryCompleteTransaction();\r\n    };\r\n    return CompositionTransactionNotifier;\r\n}());\r\nvar CompositionTransactionOwnershipToken = (function () {\r\n    function CompositionTransactionOwnershipToken(owner) {\r\n        this.owner = owner;\r\n        this.owner._ownershipToken = this;\r\n        this.thenable = this._createThenable();\r\n    }\r\n    CompositionTransactionOwnershipToken.prototype.waitForCompositionComplete = function () {\r\n        this.owner._tryCompleteTransaction();\r\n        return this.thenable;\r\n    };\r\n    CompositionTransactionOwnershipToken.prototype.resolve = function () {\r\n        this._resolveCallback();\r\n    };\r\n    CompositionTransactionOwnershipToken.prototype._resolveCallback = function () {\r\n        throw new Error(\"Method not implemented.\");\r\n    };\r\n    CompositionTransactionOwnershipToken.prototype._createThenable = function () {\r\n        var _this = this;\r\n        return new Promise(function (resolve) {\r\n            _this._resolveCallback = resolve;\r\n        });\r\n    };\r\n    return CompositionTransactionOwnershipToken;\r\n}());\r\nvar CompositionTransaction = (function () {\r\n    function CompositionTransaction() {\r\n        this._ownershipToken = null;\r\n        this._compositionCount = 0;\r\n    }\r\n    CompositionTransaction.prototype.tryCapture = function () {\r\n        return this._ownershipToken === null\r\n            ? new CompositionTransactionOwnershipToken(this)\r\n            : null;\r\n    };\r\n    CompositionTransaction.prototype.enlist = function () {\r\n        return new CompositionTransactionNotifier(this);\r\n    };\r\n    CompositionTransaction.prototype._tryCompleteTransaction = function () {\r\n        if (this._compositionCount <= 0) {\r\n            this._compositionCount = 0;\r\n            if (this._ownershipToken !== null) {\r\n                var token = this._ownershipToken;\r\n                this._ownershipToken = null;\r\n                token.resolve();\r\n            }\r\n        }\r\n    };\r\n    return CompositionTransaction;\r\n}());\n\nvar View = (function () {\r\n    function View(container, viewFactory, fragment, controllers, bindings, children, slots) {\r\n        this.container = container;\r\n        this.viewFactory = viewFactory;\r\n        this.resources = viewFactory.resources;\r\n        this.fragment = fragment;\r\n        this.firstChild = fragment.firstChild;\r\n        this.lastChild = fragment.lastChild;\r\n        this.controllers = controllers;\r\n        this.bindings = bindings;\r\n        this.children = children;\r\n        this.slots = slots;\r\n        this.hasSlots = false;\r\n        this.fromCache = false;\r\n        this.isBound = false;\r\n        this.isAttached = false;\r\n        this.bindingContext = null;\r\n        this.overrideContext = null;\r\n        this.controller = null;\r\n        this.viewModelScope = null;\r\n        this.animatableElement = undefined;\r\n        this._isUserControlled = false;\r\n        this.contentView = null;\r\n        for (var _ in slots) {\r\n            this.hasSlots = true;\r\n            break;\r\n        }\r\n    }\r\n    View.prototype.returnToCache = function () {\r\n        this.viewFactory.returnViewToCache(this);\r\n    };\r\n    View.prototype.created = function () {\r\n        var i;\r\n        var ii;\r\n        var controllers = this.controllers;\r\n        for (i = 0, ii = controllers.length; i < ii; ++i) {\r\n            controllers[i].created(this);\r\n        }\r\n    };\r\n    View.prototype.bind = function (bindingContext, overrideContext, _systemUpdate) {\r\n        var controllers;\r\n        var bindings;\r\n        var children;\r\n        var i;\r\n        var ii;\r\n        if (_systemUpdate && this._isUserControlled) {\r\n            return;\r\n        }\r\n        if (this.isBound) {\r\n            if (this.bindingContext === bindingContext) {\r\n                return;\r\n            }\r\n            this.unbind();\r\n        }\r\n        this.isBound = true;\r\n        this.bindingContext = bindingContext;\r\n        this.overrideContext = overrideContext || createOverrideContext(bindingContext);\r\n        this.resources._invokeHook('beforeBind', this);\r\n        bindings = this.bindings;\r\n        for (i = 0, ii = bindings.length; i < ii; ++i) {\r\n            bindings[i].bind(this);\r\n        }\r\n        if (this.viewModelScope !== null) {\r\n            bindingContext.bind(this.viewModelScope.bindingContext, this.viewModelScope.overrideContext);\r\n            this.viewModelScope = null;\r\n        }\r\n        controllers = this.controllers;\r\n        for (i = 0, ii = controllers.length; i < ii; ++i) {\r\n            controllers[i].bind(this);\r\n        }\r\n        children = this.children;\r\n        for (i = 0, ii = children.length; i < ii; ++i) {\r\n            children[i].bind(bindingContext, overrideContext, true);\r\n        }\r\n        if (this.hasSlots) {\r\n            ShadowDOM.distributeView(this.contentView, this.slots);\r\n        }\r\n    };\r\n    View.prototype.addBinding = function (binding) {\r\n        this.bindings.push(binding);\r\n        if (this.isBound) {\r\n            binding.bind(this);\r\n        }\r\n    };\r\n    View.prototype.unbind = function () {\r\n        var controllers;\r\n        var bindings;\r\n        var children;\r\n        var i;\r\n        var ii;\r\n        if (this.isBound) {\r\n            this.isBound = false;\r\n            this.resources._invokeHook('beforeUnbind', this);\r\n            if (this.controller !== null) {\r\n                this.controller.unbind();\r\n            }\r\n            bindings = this.bindings;\r\n            for (i = 0, ii = bindings.length; i < ii; ++i) {\r\n                bindings[i].unbind();\r\n            }\r\n            controllers = this.controllers;\r\n            for (i = 0, ii = controllers.length; i < ii; ++i) {\r\n                controllers[i].unbind();\r\n            }\r\n            children = this.children;\r\n            for (i = 0, ii = children.length; i < ii; ++i) {\r\n                children[i].unbind();\r\n            }\r\n            this.bindingContext = null;\r\n            this.overrideContext = null;\r\n        }\r\n    };\r\n    View.prototype.insertNodesBefore = function (refNode) {\r\n        refNode.parentNode.insertBefore(this.fragment, refNode);\r\n    };\r\n    View.prototype.appendNodesTo = function (parent) {\r\n        parent.appendChild(this.fragment);\r\n    };\r\n    View.prototype.removeNodes = function () {\r\n        var fragment = this.fragment;\r\n        var current = this.firstChild;\r\n        var end = this.lastChild;\r\n        var next;\r\n        while (current) {\r\n            next = current.nextSibling;\r\n            fragment.appendChild(current);\r\n            if (current === end) {\r\n                break;\r\n            }\r\n            current = next;\r\n        }\r\n    };\r\n    View.prototype.attached = function () {\r\n        var controllers;\r\n        var children;\r\n        var i;\r\n        var ii;\r\n        if (this.isAttached) {\r\n            return;\r\n        }\r\n        this.isAttached = true;\r\n        if (this.controller !== null) {\r\n            this.controller.attached();\r\n        }\r\n        controllers = this.controllers;\r\n        for (i = 0, ii = controllers.length; i < ii; ++i) {\r\n            controllers[i].attached();\r\n        }\r\n        children = this.children;\r\n        for (i = 0, ii = children.length; i < ii; ++i) {\r\n            children[i].attached();\r\n        }\r\n    };\r\n    View.prototype.detached = function () {\r\n        var controllers;\r\n        var children;\r\n        var i;\r\n        var ii;\r\n        if (this.isAttached) {\r\n            this.isAttached = false;\r\n            if (this.controller !== null) {\r\n                this.controller.detached();\r\n            }\r\n            controllers = this.controllers;\r\n            for (i = 0, ii = controllers.length; i < ii; ++i) {\r\n                controllers[i].detached();\r\n            }\r\n            children = this.children;\r\n            for (i = 0, ii = children.length; i < ii; ++i) {\r\n                children[i].detached();\r\n            }\r\n        }\r\n    };\r\n    return View;\r\n}());\n\nvar Animator = (function () {\r\n    function Animator() {\r\n    }\r\n    Animator.prototype.enter = function (element) {\r\n        return Promise.resolve(false);\r\n    };\r\n    Animator.prototype.leave = function (element) {\r\n        return Promise.resolve(false);\r\n    };\r\n    Animator.prototype.removeClass = function (element, className) {\r\n        element.classList.remove(className);\r\n        return Promise.resolve(false);\r\n    };\r\n    Animator.prototype.addClass = function (element, className) {\r\n        element.classList.add(className);\r\n        return Promise.resolve(false);\r\n    };\r\n    Animator.prototype.animate = function (element, className) {\r\n        return Promise.resolve(false);\r\n    };\r\n    Animator.prototype.runSequence = function (animations) {\r\n        return Promise.resolve(false);\r\n    };\r\n    Animator.prototype.registerEffect = function (effectName, properties) { };\r\n    Animator.prototype.unregisterEffect = function (effectName) { };\r\n    return Animator;\r\n}());\n\nfunction getAnimatableElement(view) {\r\n    if (view.animatableElement !== undefined) {\r\n        return view.animatableElement;\r\n    }\r\n    var current = view.firstChild;\r\n    while (current && current.nodeType !== 1) {\r\n        current = current.nextSibling;\r\n    }\r\n    if (current && current.nodeType === 1) {\r\n        return (view.animatableElement = current.classList.contains('au-animate') ? current : null);\r\n    }\r\n    return (view.animatableElement = null);\r\n}\r\nvar ViewSlot = (function () {\r\n    function ViewSlot(anchor, anchorIsContainer, animator) {\r\n        if (animator === void 0) { animator = Animator.instance; }\r\n        this.anchor = anchor;\r\n        this.anchorIsContainer = anchorIsContainer;\r\n        this.bindingContext = null;\r\n        this.overrideContext = null;\r\n        this.animator = animator;\r\n        this.children = [];\r\n        this.isBound = false;\r\n        this.isAttached = false;\r\n        this.contentSelectors = null;\r\n        anchor.viewSlot = this;\r\n        anchor.isContentProjectionSource = false;\r\n    }\r\n    ViewSlot.prototype.animateView = function (view, direction) {\r\n        if (direction === void 0) { direction = 'enter'; }\r\n        var animatableElement = getAnimatableElement(view);\r\n        if (animatableElement !== null) {\r\n            switch (direction) {\r\n                case 'enter':\r\n                    return this.animator.enter(animatableElement);\r\n                case 'leave':\r\n                    return this.animator.leave(animatableElement);\r\n                default:\r\n                    throw new Error('Invalid animation direction: ' + direction);\r\n            }\r\n        }\r\n    };\r\n    ViewSlot.prototype.transformChildNodesIntoView = function () {\r\n        var parent = this.anchor;\r\n        this.children.push({\r\n            fragment: parent,\r\n            firstChild: parent.firstChild,\r\n            lastChild: parent.lastChild,\r\n            returnToCache: function () { },\r\n            removeNodes: function () {\r\n                var last;\r\n                while (last = parent.lastChild) {\r\n                    parent.removeChild(last);\r\n                }\r\n            },\r\n            created: function () { },\r\n            bind: function () { },\r\n            unbind: function () { },\r\n            attached: function () { },\r\n            detached: function () { }\r\n        });\r\n    };\r\n    ViewSlot.prototype.bind = function (bindingContext, overrideContext) {\r\n        var i;\r\n        var ii;\r\n        var children;\r\n        if (this.isBound) {\r\n            if (this.bindingContext === bindingContext) {\r\n                return;\r\n            }\r\n            this.unbind();\r\n        }\r\n        this.isBound = true;\r\n        this.bindingContext = bindingContext = bindingContext || this.bindingContext;\r\n        this.overrideContext = overrideContext = overrideContext || this.overrideContext;\r\n        children = this.children;\r\n        for (i = 0, ii = children.length; i < ii; ++i) {\r\n            children[i].bind(bindingContext, overrideContext, true);\r\n        }\r\n    };\r\n    ViewSlot.prototype.unbind = function () {\r\n        if (this.isBound) {\r\n            var i = void 0;\r\n            var ii = void 0;\r\n            var children = this.children;\r\n            this.isBound = false;\r\n            this.bindingContext = null;\r\n            this.overrideContext = null;\r\n            for (i = 0, ii = children.length; i < ii; ++i) {\r\n                children[i].unbind();\r\n            }\r\n        }\r\n    };\r\n    ViewSlot.prototype.add = function (view) {\r\n        if (this.anchorIsContainer) {\r\n            view.appendNodesTo(this.anchor);\r\n        }\r\n        else {\r\n            view.insertNodesBefore(this.anchor);\r\n        }\r\n        this.children.push(view);\r\n        if (this.isAttached) {\r\n            view.attached();\r\n            return this.animateView(view, 'enter');\r\n        }\r\n    };\r\n    ViewSlot.prototype.insert = function (index, view) {\r\n        var children = this.children;\r\n        var length = children.length;\r\n        if ((index === 0 && length === 0) || index >= length) {\r\n            return this.add(view);\r\n        }\r\n        view.insertNodesBefore(children[index].firstChild);\r\n        children.splice(index, 0, view);\r\n        if (this.isAttached) {\r\n            view.attached();\r\n            return this.animateView(view, 'enter');\r\n        }\r\n    };\r\n    ViewSlot.prototype.move = function (sourceIndex, targetIndex) {\r\n        if (sourceIndex === targetIndex) {\r\n            return;\r\n        }\r\n        var children = this.children;\r\n        var view = children[sourceIndex];\r\n        view.removeNodes();\r\n        view.insertNodesBefore(children[targetIndex].firstChild);\r\n        children.splice(sourceIndex, 1);\r\n        children.splice(targetIndex, 0, view);\r\n    };\r\n    ViewSlot.prototype.remove = function (view, returnToCache, skipAnimation) {\r\n        return this.removeAt(this.children.indexOf(view), returnToCache, skipAnimation);\r\n    };\r\n    ViewSlot.prototype.removeMany = function (viewsToRemove, returnToCache, skipAnimation) {\r\n        var _this = this;\r\n        var children = this.children;\r\n        var ii = viewsToRemove.length;\r\n        var i;\r\n        var rmPromises = [];\r\n        viewsToRemove.forEach(function (child) {\r\n            if (skipAnimation) {\r\n                child.removeNodes();\r\n                return;\r\n            }\r\n            var animation = _this.animateView(child, 'leave');\r\n            if (animation) {\r\n                rmPromises.push(animation.then(function () { return child.removeNodes(); }));\r\n            }\r\n            else {\r\n                child.removeNodes();\r\n            }\r\n        });\r\n        var removeAction = function () {\r\n            if (_this.isAttached) {\r\n                for (i = 0; i < ii; ++i) {\r\n                    viewsToRemove[i].detached();\r\n                }\r\n            }\r\n            if (returnToCache) {\r\n                for (i = 0; i < ii; ++i) {\r\n                    viewsToRemove[i].returnToCache();\r\n                }\r\n            }\r\n            for (i = 0; i < ii; ++i) {\r\n                var index = children.indexOf(viewsToRemove[i]);\r\n                if (index >= 0) {\r\n                    children.splice(index, 1);\r\n                }\r\n            }\r\n        };\r\n        if (rmPromises.length > 0) {\r\n            return Promise.all(rmPromises).then(function () { return removeAction(); });\r\n        }\r\n        return removeAction();\r\n    };\r\n    ViewSlot.prototype.removeAt = function (index, returnToCache, skipAnimation) {\r\n        var _this = this;\r\n        var view = this.children[index];\r\n        var removeAction = function () {\r\n            index = _this.children.indexOf(view);\r\n            view.removeNodes();\r\n            _this.children.splice(index, 1);\r\n            if (_this.isAttached) {\r\n                view.detached();\r\n            }\r\n            if (returnToCache) {\r\n                view.returnToCache();\r\n            }\r\n            return view;\r\n        };\r\n        if (!skipAnimation) {\r\n            var animation = this.animateView(view, 'leave');\r\n            if (animation) {\r\n                return animation.then(function () { return removeAction(); });\r\n            }\r\n        }\r\n        return removeAction();\r\n    };\r\n    ViewSlot.prototype.removeAll = function (returnToCache, skipAnimation) {\r\n        var _this = this;\r\n        var children = this.children;\r\n        var ii = children.length;\r\n        var i;\r\n        var rmPromises = [];\r\n        children.forEach(function (child) {\r\n            if (skipAnimation) {\r\n                child.removeNodes();\r\n                return;\r\n            }\r\n            var animation = _this.animateView(child, 'leave');\r\n            if (animation) {\r\n                rmPromises.push(animation.then(function () { return child.removeNodes(); }));\r\n            }\r\n            else {\r\n                child.removeNodes();\r\n            }\r\n        });\r\n        var removeAction = function () {\r\n            if (_this.isAttached) {\r\n                for (i = 0; i < ii; ++i) {\r\n                    children[i].detached();\r\n                }\r\n            }\r\n            if (returnToCache) {\r\n                for (i = 0; i < ii; ++i) {\r\n                    var child = children[i];\r\n                    if (child) {\r\n                        child.returnToCache();\r\n                    }\r\n                }\r\n            }\r\n            _this.children = [];\r\n        };\r\n        if (rmPromises.length > 0) {\r\n            return Promise.all(rmPromises).then(function () { return removeAction(); });\r\n        }\r\n        return removeAction();\r\n    };\r\n    ViewSlot.prototype.attached = function () {\r\n        var i;\r\n        var ii;\r\n        var children;\r\n        var child;\r\n        if (this.isAttached) {\r\n            return;\r\n        }\r\n        this.isAttached = true;\r\n        children = this.children;\r\n        for (i = 0, ii = children.length; i < ii; ++i) {\r\n            child = children[i];\r\n            child.attached();\r\n            this.animateView(child, 'enter');\r\n        }\r\n    };\r\n    ViewSlot.prototype.detached = function () {\r\n        var i;\r\n        var ii;\r\n        var children;\r\n        if (this.isAttached) {\r\n            this.isAttached = false;\r\n            children = this.children;\r\n            for (i = 0, ii = children.length; i < ii; ++i) {\r\n                children[i].detached();\r\n            }\r\n        }\r\n    };\r\n    ViewSlot.prototype.projectTo = function (slots) {\r\n        var _this = this;\r\n        this.projectToSlots = slots;\r\n        this.add = this._projectionAdd;\r\n        this.insert = this._projectionInsert;\r\n        this.move = this._projectionMove;\r\n        this.remove = this._projectionRemove;\r\n        this.removeAt = this._projectionRemoveAt;\r\n        this.removeMany = this._projectionRemoveMany;\r\n        this.removeAll = this._projectionRemoveAll;\r\n        this.children.forEach(function (view) { return ShadowDOM.distributeView(view, slots, _this); });\r\n    };\r\n    ViewSlot.prototype._projectionAdd = function (view) {\r\n        ShadowDOM.distributeView(view, this.projectToSlots, this);\r\n        this.children.push(view);\r\n        if (this.isAttached) {\r\n            view.attached();\r\n        }\r\n    };\r\n    ViewSlot.prototype._projectionInsert = function (index, view) {\r\n        if ((index === 0 && !this.children.length) || index >= this.children.length) {\r\n            this.add(view);\r\n        }\r\n        else {\r\n            ShadowDOM.distributeView(view, this.projectToSlots, this, index);\r\n            this.children.splice(index, 0, view);\r\n            if (this.isAttached) {\r\n                view.attached();\r\n            }\r\n        }\r\n    };\r\n    ViewSlot.prototype._projectionMove = function (sourceIndex, targetIndex) {\r\n        if (sourceIndex === targetIndex) {\r\n            return;\r\n        }\r\n        var children = this.children;\r\n        var view = children[sourceIndex];\r\n        ShadowDOM.undistributeView(view, this.projectToSlots, this);\r\n        ShadowDOM.distributeView(view, this.projectToSlots, this, targetIndex);\r\n        children.splice(sourceIndex, 1);\r\n        children.splice(targetIndex, 0, view);\r\n    };\r\n    ViewSlot.prototype._projectionRemove = function (view, returnToCache) {\r\n        ShadowDOM.undistributeView(view, this.projectToSlots, this);\r\n        this.children.splice(this.children.indexOf(view), 1);\r\n        if (this.isAttached) {\r\n            view.detached();\r\n        }\r\n        if (returnToCache) {\r\n            view.returnToCache();\r\n        }\r\n    };\r\n    ViewSlot.prototype._projectionRemoveAt = function (index, returnToCache) {\r\n        var view = this.children[index];\r\n        ShadowDOM.undistributeView(view, this.projectToSlots, this);\r\n        this.children.splice(index, 1);\r\n        if (this.isAttached) {\r\n            view.detached();\r\n        }\r\n        if (returnToCache) {\r\n            view.returnToCache();\r\n        }\r\n    };\r\n    ViewSlot.prototype._projectionRemoveMany = function (viewsToRemove, returnToCache) {\r\n        var _this = this;\r\n        viewsToRemove.forEach(function (view) { return _this.remove(view, returnToCache); });\r\n    };\r\n    ViewSlot.prototype._projectionRemoveAll = function (returnToCache) {\r\n        ShadowDOM.undistributeAll(this.projectToSlots, this);\r\n        var children = this.children;\r\n        var ii = children.length;\r\n        for (var i = 0; i < ii; ++i) {\r\n            if (returnToCache) {\r\n                children[i].returnToCache();\r\n            }\r\n            else if (this.isAttached) {\r\n                children[i].detached();\r\n            }\r\n        }\r\n        this.children = [];\r\n    };\r\n    return ViewSlot;\r\n}());\n\nvar $resolver = resolver;\r\nvar ProviderResolver = (function () {\r\n    function ProviderResolver() {\r\n    }\r\n    ProviderResolver.prototype.get = function (container, key) {\r\n        var id = key.__providerId__;\r\n        return id in container ? container[id] : (container[id] = container.invoke(key));\r\n    };\r\n    ProviderResolver = __decorate([\r\n        $resolver\r\n    ], ProviderResolver);\r\n    return ProviderResolver;\r\n}());\r\nvar providerResolverInstance = new ProviderResolver();\r\nfunction elementContainerGet(key) {\r\n    if (key === DOM.Element) {\r\n        return this.element;\r\n    }\r\n    if (key === BoundViewFactory) {\r\n        if (this.boundViewFactory) {\r\n            return this.boundViewFactory;\r\n        }\r\n        var factory = this.instruction.viewFactory;\r\n        var partReplacements = this.partReplacements;\r\n        if (partReplacements) {\r\n            factory = partReplacements[factory.part] || factory;\r\n        }\r\n        this.boundViewFactory = new BoundViewFactory(this, factory, partReplacements);\r\n        return this.boundViewFactory;\r\n    }\r\n    if (key === ViewSlot) {\r\n        if (this.viewSlot === undefined) {\r\n            this.viewSlot = new ViewSlot(this.element, this.instruction.anchorIsContainer);\r\n            this.element.isContentProjectionSource = this.instruction.lifting;\r\n            this.children.push(this.viewSlot);\r\n        }\r\n        return this.viewSlot;\r\n    }\r\n    if (key === ElementEvents) {\r\n        return this.elementEvents || (this.elementEvents = new ElementEvents(this.element));\r\n    }\r\n    if (key === CompositionTransaction) {\r\n        return this.compositionTransaction || (this.compositionTransaction = this.parent.get(key));\r\n    }\r\n    if (key === ViewResources) {\r\n        return this.viewResources;\r\n    }\r\n    if (key === TargetInstruction) {\r\n        return this.instruction;\r\n    }\r\n    return this.superGet(key);\r\n}\r\nfunction createElementContainer(parent, element, instruction, children, partReplacements, resources) {\r\n    var container = parent.createChild();\r\n    var providers;\r\n    var i;\r\n    container.element = element;\r\n    container.instruction = instruction;\r\n    container.children = children;\r\n    container.viewResources = resources;\r\n    container.partReplacements = partReplacements;\r\n    providers = instruction.providers;\r\n    i = providers.length;\r\n    while (i--) {\r\n        container._resolvers.set(providers[i], providerResolverInstance);\r\n    }\r\n    container.superGet = container.get;\r\n    container.get = elementContainerGet;\r\n    return container;\r\n}\r\nfunction hasAttribute(name) {\r\n    return this._element.hasAttribute(name);\r\n}\r\nfunction getAttribute(name) {\r\n    return this._element.getAttribute(name);\r\n}\r\nfunction setAttribute(name, value) {\r\n    this._element.setAttribute(name, value);\r\n}\r\nfunction makeElementIntoAnchor(element, elementInstruction) {\r\n    var anchor = DOM.createComment('anchor');\r\n    if (elementInstruction) {\r\n        var firstChild = element.firstChild;\r\n        if (firstChild && firstChild.tagName === 'AU-CONTENT') {\r\n            anchor.contentElement = firstChild;\r\n        }\r\n        anchor._element = element;\r\n        anchor.hasAttribute = hasAttribute;\r\n        anchor.getAttribute = getAttribute;\r\n        anchor.setAttribute = setAttribute;\r\n    }\r\n    DOM.replaceNode(anchor, element);\r\n    return anchor;\r\n}\r\nfunction applyInstructions(containers, element, instruction, controllers, bindings, children, shadowSlots, partReplacements, resources) {\r\n    var behaviorInstructions = instruction.behaviorInstructions;\r\n    var expressions = instruction.expressions;\r\n    var elementContainer;\r\n    var i;\r\n    var ii;\r\n    var current;\r\n    var instance;\r\n    if (instruction.contentExpression) {\r\n        bindings.push(instruction.contentExpression.createBinding(element.nextSibling));\r\n        element.nextSibling.auInterpolationTarget = true;\r\n        element.parentNode.removeChild(element);\r\n        return;\r\n    }\r\n    if (instruction.shadowSlot) {\r\n        var commentAnchor = DOM.createComment('slot');\r\n        var slot = void 0;\r\n        if (instruction.slotDestination) {\r\n            slot = new PassThroughSlot(commentAnchor, instruction.slotName, instruction.slotDestination, instruction.slotFallbackFactory);\r\n        }\r\n        else {\r\n            slot = new ShadowSlot(commentAnchor, instruction.slotName, instruction.slotFallbackFactory);\r\n        }\r\n        DOM.replaceNode(commentAnchor, element);\r\n        shadowSlots[instruction.slotName] = slot;\r\n        controllers.push(slot);\r\n        return;\r\n    }\r\n    if (instruction.letElement) {\r\n        for (i = 0, ii = expressions.length; i < ii; ++i) {\r\n            bindings.push(expressions[i].createBinding());\r\n        }\r\n        element.parentNode.removeChild(element);\r\n        return;\r\n    }\r\n    if (behaviorInstructions.length) {\r\n        if (!instruction.anchorIsContainer) {\r\n            element = makeElementIntoAnchor(element, instruction.elementInstruction);\r\n        }\r\n        containers[instruction.injectorId] = elementContainer =\r\n            createElementContainer(containers[instruction.parentInjectorId], element, instruction, children, partReplacements, resources);\r\n        for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\r\n            current = behaviorInstructions[i];\r\n            instance = current.type.create(elementContainer, current, element, bindings);\r\n            controllers.push(instance);\r\n        }\r\n    }\r\n    for (i = 0, ii = expressions.length; i < ii; ++i) {\r\n        bindings.push(expressions[i].createBinding(element));\r\n    }\r\n}\r\nfunction styleStringToObject(style, target) {\r\n    var attributes = style.split(';');\r\n    var firstIndexOfColon;\r\n    var i;\r\n    var current;\r\n    var key;\r\n    var value;\r\n    target = target || {};\r\n    for (i = 0; i < attributes.length; i++) {\r\n        current = attributes[i];\r\n        firstIndexOfColon = current.indexOf(':');\r\n        key = current.substring(0, firstIndexOfColon).trim();\r\n        value = current.substring(firstIndexOfColon + 1).trim();\r\n        target[key] = value;\r\n    }\r\n    return target;\r\n}\r\nfunction styleObjectToString(obj) {\r\n    var result = '';\r\n    for (var key in obj) {\r\n        result += key + ':' + obj[key] + ';';\r\n    }\r\n    return result;\r\n}\r\nfunction applySurrogateInstruction(container, element, instruction, controllers, bindings, children) {\r\n    var behaviorInstructions = instruction.behaviorInstructions;\r\n    var expressions = instruction.expressions;\r\n    var providers = instruction.providers;\r\n    var values = instruction.values;\r\n    var i;\r\n    var ii;\r\n    var current;\r\n    var instance;\r\n    var currentAttributeValue;\r\n    i = providers.length;\r\n    while (i--) {\r\n        container._resolvers.set(providers[i], providerResolverInstance);\r\n    }\r\n    for (var key in values) {\r\n        currentAttributeValue = element.getAttribute(key);\r\n        if (currentAttributeValue) {\r\n            if (key === 'class') {\r\n                element.setAttribute('class', currentAttributeValue + ' ' + values[key]);\r\n            }\r\n            else if (key === 'style') {\r\n                var styleObject = styleStringToObject(values[key]);\r\n                styleStringToObject(currentAttributeValue, styleObject);\r\n                element.setAttribute('style', styleObjectToString(styleObject));\r\n            }\r\n        }\r\n        else {\r\n            element.setAttribute(key, values[key]);\r\n        }\r\n    }\r\n    if (behaviorInstructions.length) {\r\n        for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\r\n            current = behaviorInstructions[i];\r\n            instance = current.type.create(container, current, element, bindings);\r\n            if (instance.contentView) {\r\n                children.push(instance.contentView);\r\n            }\r\n            controllers.push(instance);\r\n        }\r\n    }\r\n    for (i = 0, ii = expressions.length; i < ii; ++i) {\r\n        bindings.push(expressions[i].createBinding(element));\r\n    }\r\n}\r\nvar BoundViewFactory = (function () {\r\n    function BoundViewFactory(parentContainer, viewFactory, partReplacements) {\r\n        this.parentContainer = parentContainer;\r\n        this.viewFactory = viewFactory;\r\n        this.factoryCreateInstruction = { partReplacements: partReplacements };\r\n    }\r\n    BoundViewFactory.prototype.create = function () {\r\n        var view = this.viewFactory.create(this.parentContainer.createChild(), this.factoryCreateInstruction);\r\n        view._isUserControlled = true;\r\n        return view;\r\n    };\r\n    Object.defineProperty(BoundViewFactory.prototype, \"isCaching\", {\r\n        get: function () {\r\n            return this.viewFactory.isCaching;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    BoundViewFactory.prototype.setCacheSize = function (size, doNotOverrideIfAlreadySet) {\r\n        this.viewFactory.setCacheSize(size, doNotOverrideIfAlreadySet);\r\n    };\r\n    BoundViewFactory.prototype.getCachedView = function () {\r\n        return this.viewFactory.getCachedView();\r\n    };\r\n    BoundViewFactory.prototype.returnViewToCache = function (view) {\r\n        this.viewFactory.returnViewToCache(view);\r\n    };\r\n    return BoundViewFactory;\r\n}());\r\nvar ViewFactory = (function () {\r\n    function ViewFactory(template, instructions, resources) {\r\n        this.isCaching = false;\r\n        this.template = template;\r\n        this.instructions = instructions;\r\n        this.resources = resources;\r\n        this.cacheSize = -1;\r\n        this.cache = null;\r\n    }\r\n    ViewFactory.prototype.setCacheSize = function (size, doNotOverrideIfAlreadySet) {\r\n        if (size) {\r\n            if (size === '*') {\r\n                size = Number.MAX_VALUE;\r\n            }\r\n            else if (typeof size === 'string') {\r\n                size = parseInt(size, 10);\r\n            }\r\n        }\r\n        if (this.cacheSize === -1 || !doNotOverrideIfAlreadySet) {\r\n            this.cacheSize = Number(size);\r\n        }\r\n        if (this.cacheSize > 0) {\r\n            this.cache = [];\r\n        }\r\n        else {\r\n            this.cache = null;\r\n        }\r\n        this.isCaching = this.cacheSize > 0;\r\n    };\r\n    ViewFactory.prototype.getCachedView = function () {\r\n        return this.cache !== null ? (this.cache.pop() || null) : null;\r\n    };\r\n    ViewFactory.prototype.returnViewToCache = function (view) {\r\n        if (view.isAttached) {\r\n            view.detached();\r\n        }\r\n        if (view.isBound) {\r\n            view.unbind();\r\n        }\r\n        if (this.cache !== null && this.cache.length < this.cacheSize) {\r\n            view.fromCache = true;\r\n            this.cache.push(view);\r\n        }\r\n    };\r\n    ViewFactory.prototype.create = function (container, createInstruction, element) {\r\n        createInstruction = createInstruction || BehaviorInstruction.normal;\r\n        var cachedView = this.getCachedView();\r\n        if (cachedView !== null) {\r\n            return cachedView;\r\n        }\r\n        var fragment = createInstruction.enhance ? this.template : this.template.cloneNode(true);\r\n        var instructables = fragment.querySelectorAll('.au-target');\r\n        var instructions = this.instructions;\r\n        var resources = this.resources;\r\n        var controllers = [];\r\n        var bindings = [];\r\n        var children = [];\r\n        var shadowSlots = Object.create(null);\r\n        var containers = { root: container };\r\n        var partReplacements = createInstruction.partReplacements;\r\n        var i;\r\n        var ii;\r\n        var view;\r\n        var instructable;\r\n        var instruction;\r\n        this.resources._invokeHook('beforeCreate', this, container, fragment, createInstruction);\r\n        if (element && this.surrogateInstruction !== null) {\r\n            applySurrogateInstruction(container, element, this.surrogateInstruction, controllers, bindings, children);\r\n        }\r\n        if (createInstruction.enhance && fragment.hasAttribute('au-target-id')) {\r\n            instructable = fragment;\r\n            instruction = instructions[instructable.getAttribute('au-target-id')];\r\n            applyInstructions(containers, instructable, instruction, controllers, bindings, children, shadowSlots, partReplacements, resources);\r\n        }\r\n        for (i = 0, ii = instructables.length; i < ii; ++i) {\r\n            instructable = instructables[i];\r\n            instruction = instructions[instructable.getAttribute('au-target-id')];\r\n            applyInstructions(containers, instructable, instruction, controllers, bindings, children, shadowSlots, partReplacements, resources);\r\n        }\r\n        view = new View(container, this, fragment, controllers, bindings, children, shadowSlots);\r\n        if (!createInstruction.initiatedByBehavior) {\r\n            view.created();\r\n        }\r\n        this.resources._invokeHook('afterCreate', view);\r\n        return view;\r\n    };\r\n    return ViewFactory;\r\n}());\n\nvar nextInjectorId = 0;\r\nfunction getNextInjectorId() {\r\n    return ++nextInjectorId;\r\n}\r\nvar lastAUTargetID = 0;\r\nfunction getNextAUTargetID() {\r\n    return (++lastAUTargetID).toString();\r\n}\r\nfunction makeIntoInstructionTarget(element) {\r\n    var value = element.getAttribute('class');\r\n    var auTargetID = getNextAUTargetID();\r\n    element.setAttribute('class', (value ? value + ' au-target' : 'au-target'));\r\n    element.setAttribute('au-target-id', auTargetID);\r\n    return auTargetID;\r\n}\r\nfunction makeShadowSlot(compiler, resources, node, instructions, parentInjectorId) {\r\n    var auShadowSlot = DOM.createElement('au-shadow-slot');\r\n    DOM.replaceNode(auShadowSlot, node);\r\n    var auTargetID = makeIntoInstructionTarget(auShadowSlot);\r\n    var instruction = TargetInstruction.shadowSlot(parentInjectorId);\r\n    instruction.slotName = node.getAttribute('name') || ShadowDOM.defaultSlotKey;\r\n    instruction.slotDestination = node.getAttribute('slot');\r\n    if (node.innerHTML.trim()) {\r\n        var fragment = DOM.createDocumentFragment();\r\n        var child = void 0;\r\n        while (child = node.firstChild) {\r\n            fragment.appendChild(child);\r\n        }\r\n        instruction.slotFallbackFactory = compiler.compile(fragment, resources);\r\n    }\r\n    instructions[auTargetID] = instruction;\r\n    return auShadowSlot;\r\n}\r\nvar defaultLetHandler = BindingLanguage.prototype.createLetExpressions;\r\nvar ViewCompiler = (function () {\r\n    function ViewCompiler(bindingLanguage, resources) {\r\n        this.bindingLanguage = bindingLanguage;\r\n        this.resources = resources;\r\n    }\r\n    ViewCompiler.inject = function () {\r\n        return [BindingLanguage, ViewResources];\r\n    };\r\n    ViewCompiler.prototype.compile = function (source, resources, compileInstruction) {\r\n        resources = resources || this.resources;\r\n        compileInstruction = compileInstruction || ViewCompileInstruction.normal;\r\n        source = typeof source === 'string' ? DOM.createTemplateFromMarkup(source) : source;\r\n        var content;\r\n        var part;\r\n        var cacheSize;\r\n        if (source.content) {\r\n            part = source.getAttribute('part');\r\n            cacheSize = source.getAttribute('view-cache');\r\n            content = DOM.adoptNode(source.content);\r\n        }\r\n        else {\r\n            content = source;\r\n        }\r\n        compileInstruction.targetShadowDOM = compileInstruction.targetShadowDOM && FEATURE.shadowDOM;\r\n        resources._invokeHook('beforeCompile', content, resources, compileInstruction);\r\n        var instructions = {};\r\n        this._compileNode(content, resources, instructions, source, 'root', !compileInstruction.targetShadowDOM);\r\n        var firstChild = content.firstChild;\r\n        if (firstChild && firstChild.nodeType === 1) {\r\n            var targetId = firstChild.getAttribute('au-target-id');\r\n            if (targetId) {\r\n                var ins = instructions[targetId];\r\n                if (ins.shadowSlot || ins.lifting || (ins.elementInstruction && !ins.elementInstruction.anchorIsContainer)) {\r\n                    content.insertBefore(DOM.createComment('view'), firstChild);\r\n                }\r\n            }\r\n        }\r\n        var factory = new ViewFactory(content, instructions, resources);\r\n        factory.surrogateInstruction = compileInstruction.compileSurrogate ? this._compileSurrogate(source, resources) : null;\r\n        factory.part = part;\r\n        if (cacheSize) {\r\n            factory.setCacheSize(cacheSize);\r\n        }\r\n        resources._invokeHook('afterCompile', factory);\r\n        return factory;\r\n    };\r\n    ViewCompiler.prototype._compileNode = function (node, resources, instructions, parentNode, parentInjectorId, targetLightDOM) {\r\n        switch (node.nodeType) {\r\n            case 1:\r\n                return this._compileElement(node, resources, instructions, parentNode, parentInjectorId, targetLightDOM);\r\n            case 3:\r\n                var expression = resources.getBindingLanguage(this.bindingLanguage).inspectTextContent(resources, node.wholeText);\r\n                if (expression) {\r\n                    var marker = DOM.createElement('au-marker');\r\n                    var auTargetID = makeIntoInstructionTarget(marker);\r\n                    (node.parentNode || parentNode).insertBefore(marker, node);\r\n                    node.textContent = ' ';\r\n                    instructions[auTargetID] = TargetInstruction.contentExpression(expression);\r\n                    while (node.nextSibling && node.nextSibling.nodeType === 3) {\r\n                        (node.parentNode || parentNode).removeChild(node.nextSibling);\r\n                    }\r\n                }\r\n                else {\r\n                    while (node.nextSibling && node.nextSibling.nodeType === 3) {\r\n                        node = node.nextSibling;\r\n                    }\r\n                }\r\n                return node.nextSibling;\r\n            case 11:\r\n                var currentChild = node.firstChild;\r\n                while (currentChild) {\r\n                    currentChild = this._compileNode(currentChild, resources, instructions, node, parentInjectorId, targetLightDOM);\r\n                }\r\n                break;\r\n        }\r\n        return node.nextSibling;\r\n    };\r\n    ViewCompiler.prototype._compileSurrogate = function (node, resources) {\r\n        var tagName = node.tagName.toLowerCase();\r\n        var attributes = node.attributes;\r\n        var bindingLanguage = resources.getBindingLanguage(this.bindingLanguage);\r\n        var knownAttribute;\r\n        var property;\r\n        var instruction;\r\n        var i;\r\n        var ii;\r\n        var attr;\r\n        var attrName;\r\n        var attrValue;\r\n        var info;\r\n        var type;\r\n        var expressions = [];\r\n        var expression;\r\n        var behaviorInstructions = [];\r\n        var values = {};\r\n        var hasValues = false;\r\n        var providers = [];\r\n        for (i = 0, ii = attributes.length; i < ii; ++i) {\r\n            attr = attributes[i];\r\n            attrName = attr.name;\r\n            attrValue = attr.value;\r\n            info = bindingLanguage.inspectAttribute(resources, tagName, attrName, attrValue);\r\n            type = resources.getAttribute(info.attrName);\r\n            if (type) {\r\n                knownAttribute = resources.mapAttribute(info.attrName);\r\n                if (knownAttribute) {\r\n                    property = type.attributes[knownAttribute];\r\n                    if (property) {\r\n                        info.defaultBindingMode = property.defaultBindingMode;\r\n                        if (!info.command && !info.expression) {\r\n                            info.command = property.hasOptions ? 'options' : null;\r\n                        }\r\n                        if (info.command && (info.command !== 'options') && type.primaryProperty) {\r\n                            var primaryProperty = type.primaryProperty;\r\n                            attrName = info.attrName = primaryProperty.attribute;\r\n                            info.defaultBindingMode = primaryProperty.defaultBindingMode;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            instruction = bindingLanguage.createAttributeInstruction(resources, node, info, undefined, type);\r\n            if (instruction) {\r\n                if (instruction.alteredAttr) {\r\n                    type = resources.getAttribute(instruction.attrName);\r\n                }\r\n                if (instruction.discrete) {\r\n                    expressions.push(instruction);\r\n                }\r\n                else {\r\n                    if (type) {\r\n                        instruction.type = type;\r\n                        this._configureProperties(instruction, resources);\r\n                        if (type.liftsContent) {\r\n                            throw new Error('You cannot place a template controller on a surrogate element.');\r\n                        }\r\n                        else {\r\n                            behaviorInstructions.push(instruction);\r\n                        }\r\n                    }\r\n                    else {\r\n                        expressions.push(instruction.attributes[instruction.attrName]);\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                if (type) {\r\n                    instruction = BehaviorInstruction.attribute(attrName, type);\r\n                    instruction.attributes[resources.mapAttribute(attrName)] = attrValue;\r\n                    if (type.liftsContent) {\r\n                        throw new Error('You cannot place a template controller on a surrogate element.');\r\n                    }\r\n                    else {\r\n                        behaviorInstructions.push(instruction);\r\n                    }\r\n                }\r\n                else if (attrName !== 'id' && attrName !== 'part' && attrName !== 'replace-part') {\r\n                    hasValues = true;\r\n                    values[attrName] = attrValue;\r\n                }\r\n            }\r\n        }\r\n        if (expressions.length || behaviorInstructions.length || hasValues) {\r\n            for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\r\n                instruction = behaviorInstructions[i];\r\n                instruction.type.compile(this, resources, node, instruction);\r\n                providers.push(instruction.type.target);\r\n            }\r\n            for (i = 0, ii = expressions.length; i < ii; ++i) {\r\n                expression = expressions[i];\r\n                if (expression.attrToRemove !== undefined) {\r\n                    node.removeAttribute(expression.attrToRemove);\r\n                }\r\n            }\r\n            return TargetInstruction.surrogate(providers, behaviorInstructions, expressions, values);\r\n        }\r\n        return null;\r\n    };\r\n    ViewCompiler.prototype._compileElement = function (node, resources, instructions, parentNode, parentInjectorId, targetLightDOM) {\r\n        var tagName = node.tagName.toLowerCase();\r\n        var attributes = node.attributes;\r\n        var expressions = [];\r\n        var expression;\r\n        var behaviorInstructions = [];\r\n        var providers = [];\r\n        var bindingLanguage = resources.getBindingLanguage(this.bindingLanguage);\r\n        var liftingInstruction;\r\n        var viewFactory;\r\n        var type;\r\n        var elementInstruction;\r\n        var elementProperty;\r\n        var i;\r\n        var ii;\r\n        var attr;\r\n        var attrName;\r\n        var attrValue;\r\n        var originalAttrName;\r\n        var instruction;\r\n        var info;\r\n        var property;\r\n        var knownAttribute;\r\n        var auTargetID;\r\n        var injectorId;\r\n        if (tagName === 'slot') {\r\n            if (targetLightDOM) {\r\n                node = makeShadowSlot(this, resources, node, instructions, parentInjectorId);\r\n            }\r\n            return node.nextSibling;\r\n        }\r\n        else if (tagName === 'template') {\r\n            if (!('content' in node)) {\r\n                throw new Error('You cannot place a template element within ' + node.namespaceURI + ' namespace');\r\n            }\r\n            viewFactory = this.compile(node, resources);\r\n            viewFactory.part = node.getAttribute('part');\r\n        }\r\n        else {\r\n            type = resources.getElement(node.getAttribute('as-element') || tagName);\r\n            if (tagName === 'let' && !type && bindingLanguage.createLetExpressions !== defaultLetHandler) {\r\n                expressions = bindingLanguage.createLetExpressions(resources, node);\r\n                auTargetID = makeIntoInstructionTarget(node);\r\n                instructions[auTargetID] = TargetInstruction.letElement(expressions);\r\n                return node.nextSibling;\r\n            }\r\n            if (type) {\r\n                elementInstruction = BehaviorInstruction.element(node, type);\r\n                type.processAttributes(this, resources, node, attributes, elementInstruction);\r\n                behaviorInstructions.push(elementInstruction);\r\n            }\r\n        }\r\n        for (i = 0, ii = attributes.length; i < ii; ++i) {\r\n            attr = attributes[i];\r\n            originalAttrName = attrName = attr.name;\r\n            attrValue = attr.value;\r\n            info = bindingLanguage.inspectAttribute(resources, tagName, attrName, attrValue);\r\n            if (targetLightDOM && info.attrName === 'slot') {\r\n                info.attrName = attrName = 'au-slot';\r\n            }\r\n            type = resources.getAttribute(info.attrName);\r\n            elementProperty = null;\r\n            if (type) {\r\n                knownAttribute = resources.mapAttribute(info.attrName);\r\n                if (knownAttribute) {\r\n                    property = type.attributes[knownAttribute];\r\n                    if (property) {\r\n                        info.defaultBindingMode = property.defaultBindingMode;\r\n                        if (!info.command && !info.expression) {\r\n                            info.command = property.hasOptions ? 'options' : null;\r\n                        }\r\n                        if (info.command && (info.command !== 'options') && type.primaryProperty) {\r\n                            var primaryProperty = type.primaryProperty;\r\n                            attrName = info.attrName = primaryProperty.attribute;\r\n                            info.defaultBindingMode = primaryProperty.defaultBindingMode;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            else if (elementInstruction) {\r\n                elementProperty = elementInstruction.type.attributes[info.attrName];\r\n                if (elementProperty) {\r\n                    info.defaultBindingMode = elementProperty.defaultBindingMode;\r\n                }\r\n            }\r\n            if (elementProperty) {\r\n                instruction = bindingLanguage.createAttributeInstruction(resources, node, info, elementInstruction);\r\n            }\r\n            else {\r\n                instruction = bindingLanguage.createAttributeInstruction(resources, node, info, undefined, type);\r\n            }\r\n            if (instruction) {\r\n                if (instruction.alteredAttr) {\r\n                    type = resources.getAttribute(instruction.attrName);\r\n                }\r\n                if (instruction.discrete) {\r\n                    expressions.push(instruction);\r\n                }\r\n                else {\r\n                    if (type) {\r\n                        instruction.type = type;\r\n                        this._configureProperties(instruction, resources);\r\n                        if (type.liftsContent) {\r\n                            instruction.originalAttrName = originalAttrName;\r\n                            liftingInstruction = instruction;\r\n                            break;\r\n                        }\r\n                        else {\r\n                            behaviorInstructions.push(instruction);\r\n                        }\r\n                    }\r\n                    else if (elementProperty) {\r\n                        elementInstruction.attributes[info.attrName].targetProperty = elementProperty.name;\r\n                    }\r\n                    else {\r\n                        expressions.push(instruction.attributes[instruction.attrName]);\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                if (type) {\r\n                    instruction = BehaviorInstruction.attribute(attrName, type);\r\n                    instruction.attributes[resources.mapAttribute(attrName)] = attrValue;\r\n                    if (type.liftsContent) {\r\n                        instruction.originalAttrName = originalAttrName;\r\n                        liftingInstruction = instruction;\r\n                        break;\r\n                    }\r\n                    else {\r\n                        behaviorInstructions.push(instruction);\r\n                    }\r\n                }\r\n                else if (elementProperty) {\r\n                    elementInstruction.attributes[attrName] = attrValue;\r\n                }\r\n            }\r\n        }\r\n        if (liftingInstruction) {\r\n            liftingInstruction.viewFactory = viewFactory;\r\n            node = liftingInstruction.type.compile(this, resources, node, liftingInstruction, parentNode);\r\n            auTargetID = makeIntoInstructionTarget(node);\r\n            instructions[auTargetID] = TargetInstruction.lifting(parentInjectorId, liftingInstruction);\r\n        }\r\n        else {\r\n            var skipContentProcessing = false;\r\n            if (expressions.length || behaviorInstructions.length) {\r\n                injectorId = behaviorInstructions.length ? getNextInjectorId() : false;\r\n                for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\r\n                    instruction = behaviorInstructions[i];\r\n                    instruction.type.compile(this, resources, node, instruction, parentNode);\r\n                    providers.push(instruction.type.target);\r\n                    skipContentProcessing = skipContentProcessing || instruction.skipContentProcessing;\r\n                }\r\n                for (i = 0, ii = expressions.length; i < ii; ++i) {\r\n                    expression = expressions[i];\r\n                    if (expression.attrToRemove !== undefined) {\r\n                        node.removeAttribute(expression.attrToRemove);\r\n                    }\r\n                }\r\n                auTargetID = makeIntoInstructionTarget(node);\r\n                instructions[auTargetID] = TargetInstruction.normal(injectorId, parentInjectorId, providers, behaviorInstructions, expressions, elementInstruction);\r\n            }\r\n            if (skipContentProcessing) {\r\n                return node.nextSibling;\r\n            }\r\n            var currentChild = node.firstChild;\r\n            while (currentChild) {\r\n                currentChild = this._compileNode(currentChild, resources, instructions, node, injectorId || parentInjectorId, targetLightDOM);\r\n            }\r\n        }\r\n        return node.nextSibling;\r\n    };\r\n    ViewCompiler.prototype._configureProperties = function (instruction, resources) {\r\n        var type = instruction.type;\r\n        var attrName = instruction.attrName;\r\n        var attributes = instruction.attributes;\r\n        var property;\r\n        var key;\r\n        var value;\r\n        var knownAttribute = resources.mapAttribute(attrName);\r\n        if (knownAttribute && attrName in attributes && knownAttribute !== attrName) {\r\n            attributes[knownAttribute] = attributes[attrName];\r\n            delete attributes[attrName];\r\n        }\r\n        for (key in attributes) {\r\n            value = attributes[key];\r\n            if (value !== null && typeof value === 'object') {\r\n                property = type.attributes[key];\r\n                if (property !== undefined) {\r\n                    value.targetProperty = property.name;\r\n                }\r\n                else {\r\n                    value.targetProperty = key;\r\n                }\r\n            }\r\n        }\r\n    };\r\n    return ViewCompiler;\r\n}());\n\nvar ViewEngineHooksResource = (function () {\r\n    function ViewEngineHooksResource() {\r\n    }\r\n    ViewEngineHooksResource.prototype.initialize = function (container, target) {\r\n        this.instance = container.get(target);\r\n    };\r\n    ViewEngineHooksResource.prototype.register = function (registry, name) {\r\n        registry.registerViewEngineHooks(this.instance);\r\n    };\r\n    ViewEngineHooksResource.prototype.load = function (container, target) { };\r\n    ViewEngineHooksResource.convention = function (name) {\r\n        if (name.endsWith('ViewEngineHooks')) {\r\n            return new ViewEngineHooksResource();\r\n        }\r\n    };\r\n    return ViewEngineHooksResource;\r\n}());\r\nfunction viewEngineHooks(target) {\r\n    var deco = function (t) {\r\n        metadata.define(metadata.resource, new ViewEngineHooksResource(), t);\r\n    };\r\n    return target ? deco(target) : deco;\r\n}\n\nvar ResourceModule = (function () {\r\n    function ResourceModule(moduleId) {\r\n        this.id = moduleId;\r\n        this.moduleInstance = null;\r\n        this.mainResource = null;\r\n        this.resources = null;\r\n        this.viewStrategy = null;\r\n        this.isInitialized = false;\r\n        this.onLoaded = null;\r\n        this.loadContext = null;\r\n    }\r\n    ResourceModule.prototype.initialize = function (container) {\r\n        var current = this.mainResource;\r\n        var resources = this.resources;\r\n        var vs = this.viewStrategy;\r\n        if (this.isInitialized) {\r\n            return;\r\n        }\r\n        this.isInitialized = true;\r\n        if (current !== undefined) {\r\n            current.metadata.viewStrategy = vs;\r\n            current.initialize(container);\r\n        }\r\n        for (var i = 0, ii = resources.length; i < ii; ++i) {\r\n            current = resources[i];\r\n            current.metadata.viewStrategy = vs;\r\n            current.initialize(container);\r\n        }\r\n    };\r\n    ResourceModule.prototype.register = function (registry, name) {\r\n        var main = this.mainResource;\r\n        var resources = this.resources;\r\n        if (main !== undefined) {\r\n            main.register(registry, name);\r\n            name = null;\r\n        }\r\n        for (var i = 0, ii = resources.length; i < ii; ++i) {\r\n            resources[i].register(registry, name);\r\n            name = null;\r\n        }\r\n    };\r\n    ResourceModule.prototype.load = function (container, loadContext) {\r\n        if (this.onLoaded !== null) {\r\n            return this.loadContext === loadContext ? Promise.resolve() : this.onLoaded;\r\n        }\r\n        var main = this.mainResource;\r\n        var resources = this.resources;\r\n        var loads;\r\n        if (main !== undefined) {\r\n            loads = new Array(resources.length + 1);\r\n            loads[0] = main.load(container, loadContext);\r\n            for (var i = 0, ii = resources.length; i < ii; ++i) {\r\n                loads[i + 1] = resources[i].load(container, loadContext);\r\n            }\r\n        }\r\n        else {\r\n            loads = new Array(resources.length);\r\n            for (var i = 0, ii = resources.length; i < ii; ++i) {\r\n                loads[i] = resources[i].load(container, loadContext);\r\n            }\r\n        }\r\n        this.loadContext = loadContext;\r\n        this.onLoaded = Promise.all(loads);\r\n        return this.onLoaded;\r\n    };\r\n    return ResourceModule;\r\n}());\r\nvar ResourceDescription = (function () {\r\n    function ResourceDescription(key, exportedValue, resourceTypeMeta) {\r\n        if (!resourceTypeMeta) {\r\n            resourceTypeMeta = metadata.get(metadata.resource, exportedValue);\r\n            if (!resourceTypeMeta) {\r\n                resourceTypeMeta = new HtmlBehaviorResource();\r\n                resourceTypeMeta.elementName = _hyphenate(key);\r\n                metadata.define(metadata.resource, resourceTypeMeta, exportedValue);\r\n            }\r\n        }\r\n        if (resourceTypeMeta instanceof HtmlBehaviorResource) {\r\n            if (resourceTypeMeta.elementName === undefined) {\r\n                resourceTypeMeta.elementName = _hyphenate(key);\r\n            }\r\n            else if (resourceTypeMeta.attributeName === undefined) {\r\n                resourceTypeMeta.attributeName = _hyphenate(key);\r\n            }\r\n            else if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\r\n                HtmlBehaviorResource.convention(key, resourceTypeMeta);\r\n            }\r\n        }\r\n        else if (!resourceTypeMeta.name) {\r\n            resourceTypeMeta.name = _hyphenate(key);\r\n        }\r\n        this.metadata = resourceTypeMeta;\r\n        this.value = exportedValue;\r\n    }\r\n    ResourceDescription.prototype.initialize = function (container) {\r\n        this.metadata.initialize(container, this.value);\r\n    };\r\n    ResourceDescription.prototype.register = function (registry, name) {\r\n        this.metadata.register(registry, name);\r\n    };\r\n    ResourceDescription.prototype.load = function (container, loadContext) {\r\n        return this.metadata.load(container, this.value, loadContext);\r\n    };\r\n    return ResourceDescription;\r\n}());\r\nvar ModuleAnalyzer = (function () {\r\n    function ModuleAnalyzer() {\r\n        this.cache = Object.create(null);\r\n    }\r\n    ModuleAnalyzer.prototype.getAnalysis = function (moduleId) {\r\n        return this.cache[moduleId];\r\n    };\r\n    ModuleAnalyzer.prototype.analyze = function (moduleId, moduleInstance, mainResourceKey) {\r\n        var mainResource;\r\n        var fallbackValue;\r\n        var fallbackKey;\r\n        var resourceTypeMeta;\r\n        var key;\r\n        var exportedValue;\r\n        var resources = [];\r\n        var conventional;\r\n        var vs;\r\n        var resourceModule;\r\n        resourceModule = this.cache[moduleId];\r\n        if (resourceModule) {\r\n            return resourceModule;\r\n        }\r\n        resourceModule = new ResourceModule(moduleId);\r\n        this.cache[moduleId] = resourceModule;\r\n        if (typeof moduleInstance === 'function') {\r\n            moduleInstance = { 'default': moduleInstance };\r\n        }\r\n        if (mainResourceKey) {\r\n            mainResource = new ResourceDescription(mainResourceKey, moduleInstance[mainResourceKey]);\r\n        }\r\n        for (key in moduleInstance) {\r\n            exportedValue = moduleInstance[key];\r\n            if (key === mainResourceKey || typeof exportedValue !== 'function') {\r\n                continue;\r\n            }\r\n            resourceTypeMeta = metadata.get(metadata.resource, exportedValue);\r\n            if (resourceTypeMeta) {\r\n                if (resourceTypeMeta instanceof HtmlBehaviorResource) {\r\n                    ViewResources.convention(exportedValue, resourceTypeMeta);\r\n                    if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\r\n                        HtmlBehaviorResource.convention(key, resourceTypeMeta);\r\n                    }\r\n                    if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\r\n                        resourceTypeMeta.elementName = _hyphenate(key);\r\n                    }\r\n                }\r\n                if (!mainResource && resourceTypeMeta instanceof HtmlBehaviorResource && resourceTypeMeta.elementName !== null) {\r\n                    mainResource = new ResourceDescription(key, exportedValue, resourceTypeMeta);\r\n                }\r\n                else {\r\n                    resources.push(new ResourceDescription(key, exportedValue, resourceTypeMeta));\r\n                }\r\n            }\r\n            else if (viewStrategy.decorates(exportedValue)) {\r\n                vs = exportedValue;\r\n            }\r\n            else if (exportedValue instanceof TemplateRegistryEntry) {\r\n                vs = new TemplateRegistryViewStrategy(moduleId, exportedValue);\r\n            }\r\n            else {\r\n                if (conventional = ViewResources.convention(exportedValue)) {\r\n                    if (conventional.elementName !== null && !mainResource) {\r\n                        mainResource = new ResourceDescription(key, exportedValue, conventional);\r\n                    }\r\n                    else {\r\n                        resources.push(new ResourceDescription(key, exportedValue, conventional));\r\n                    }\r\n                    metadata.define(metadata.resource, conventional, exportedValue);\r\n                }\r\n                else if (conventional = HtmlBehaviorResource.convention(key)) {\r\n                    if (conventional.elementName !== null && !mainResource) {\r\n                        mainResource = new ResourceDescription(key, exportedValue, conventional);\r\n                    }\r\n                    else {\r\n                        resources.push(new ResourceDescription(key, exportedValue, conventional));\r\n                    }\r\n                    metadata.define(metadata.resource, conventional, exportedValue);\r\n                }\r\n                else if (conventional = ValueConverterResource.convention(key)\r\n                    || BindingBehaviorResource.convention(key)\r\n                    || ViewEngineHooksResource.convention(key)) {\r\n                    resources.push(new ResourceDescription(key, exportedValue, conventional));\r\n                    metadata.define(metadata.resource, conventional, exportedValue);\r\n                }\r\n                else if (!fallbackValue) {\r\n                    fallbackValue = exportedValue;\r\n                    fallbackKey = key;\r\n                }\r\n            }\r\n        }\r\n        if (!mainResource && fallbackValue) {\r\n            mainResource = new ResourceDescription(fallbackKey, fallbackValue);\r\n        }\r\n        resourceModule.moduleInstance = moduleInstance;\r\n        resourceModule.mainResource = mainResource;\r\n        resourceModule.resources = resources;\r\n        resourceModule.viewStrategy = vs;\r\n        return resourceModule;\r\n    };\r\n    return ModuleAnalyzer;\r\n}());\n\nvar logger = LogManager.getLogger('templating');\r\nfunction ensureRegistryEntry(loader, urlOrRegistryEntry) {\r\n    if (urlOrRegistryEntry instanceof TemplateRegistryEntry) {\r\n        return Promise.resolve(urlOrRegistryEntry);\r\n    }\r\n    return loader.loadTemplate(urlOrRegistryEntry);\r\n}\r\nvar ProxyViewFactory = (function () {\r\n    function ProxyViewFactory(promise) {\r\n        var _this = this;\r\n        promise.then(function (x) { return _this.viewFactory = x; });\r\n    }\r\n    ProxyViewFactory.prototype.create = function (container, bindingContext, createInstruction, element) {\r\n        return this.viewFactory.create(container, bindingContext, createInstruction, element);\r\n    };\r\n    Object.defineProperty(ProxyViewFactory.prototype, \"isCaching\", {\r\n        get: function () {\r\n            return this.viewFactory.isCaching;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    ProxyViewFactory.prototype.setCacheSize = function (size, doNotOverrideIfAlreadySet) {\r\n        this.viewFactory.setCacheSize(size, doNotOverrideIfAlreadySet);\r\n    };\r\n    ProxyViewFactory.prototype.getCachedView = function () {\r\n        return this.viewFactory.getCachedView();\r\n    };\r\n    ProxyViewFactory.prototype.returnViewToCache = function (view) {\r\n        this.viewFactory.returnViewToCache(view);\r\n    };\r\n    return ProxyViewFactory;\r\n}());\r\nvar auSlotBehavior = null;\r\nvar ViewEngine = (function () {\r\n    function ViewEngine(loader, container, viewCompiler, moduleAnalyzer, appResources) {\r\n        this.loader = loader;\r\n        this.container = container;\r\n        this.viewCompiler = viewCompiler;\r\n        this.moduleAnalyzer = moduleAnalyzer;\r\n        this.appResources = appResources;\r\n        this._pluginMap = {};\r\n        if (auSlotBehavior === null) {\r\n            auSlotBehavior = new HtmlBehaviorResource();\r\n            auSlotBehavior.attributeName = 'au-slot';\r\n            metadata.define(metadata.resource, auSlotBehavior, SlotCustomAttribute);\r\n        }\r\n        auSlotBehavior.initialize(container, SlotCustomAttribute);\r\n        auSlotBehavior.register(appResources);\r\n    }\r\n    ViewEngine.inject = function () {\r\n        return [Loader, Container, ViewCompiler, ModuleAnalyzer, ViewResources];\r\n    };\r\n    ViewEngine.prototype.addResourcePlugin = function (extension, implementation) {\r\n        var name = extension.replace('.', '') + '-resource-plugin';\r\n        this._pluginMap[extension] = name;\r\n        this.loader.addPlugin(name, implementation);\r\n    };\r\n    ViewEngine.prototype.loadViewFactory = function (urlOrRegistryEntry, compileInstruction, loadContext, target) {\r\n        var _this = this;\r\n        loadContext = loadContext || new ResourceLoadContext();\r\n        return ensureRegistryEntry(this.loader, urlOrRegistryEntry).then(function (registryEntry) {\r\n            var url = registryEntry.address;\r\n            if (registryEntry.onReady) {\r\n                if (!loadContext.hasDependency(url)) {\r\n                    loadContext.addDependency(url);\r\n                    return registryEntry.onReady;\r\n                }\r\n                if (registryEntry.template === null) {\r\n                    return registryEntry.onReady;\r\n                }\r\n                return Promise.resolve(new ProxyViewFactory(registryEntry.onReady));\r\n            }\r\n            loadContext.addDependency(url);\r\n            registryEntry.onReady = _this.loadTemplateResources(registryEntry, compileInstruction, loadContext, target).then(function (resources) {\r\n                registryEntry.resources = resources;\r\n                if (registryEntry.template === null) {\r\n                    return registryEntry.factory = null;\r\n                }\r\n                var viewFactory = _this.viewCompiler.compile(registryEntry.template, resources, compileInstruction);\r\n                return registryEntry.factory = viewFactory;\r\n            });\r\n            return registryEntry.onReady;\r\n        });\r\n    };\r\n    ViewEngine.prototype.loadTemplateResources = function (registryEntry, compileInstruction, loadContext, target) {\r\n        var resources = new ViewResources(this.appResources, registryEntry.address);\r\n        var dependencies = registryEntry.dependencies;\r\n        var importIds;\r\n        var names;\r\n        compileInstruction = compileInstruction || ViewCompileInstruction.normal;\r\n        if (dependencies.length === 0 && !compileInstruction.associatedModuleId) {\r\n            return Promise.resolve(resources);\r\n        }\r\n        importIds = dependencies.map(function (x) { return x.src; });\r\n        names = dependencies.map(function (x) { return x.name; });\r\n        logger.debug(\"importing resources for \".concat(registryEntry.address), importIds);\r\n        if (target) {\r\n            var viewModelRequires = metadata.get(ViewEngine.viewModelRequireMetadataKey, target);\r\n            if (viewModelRequires) {\r\n                var templateImportCount = importIds.length;\r\n                for (var i = 0, ii = viewModelRequires.length; i < ii; ++i) {\r\n                    var req = viewModelRequires[i];\r\n                    var importId = typeof req === 'function'\r\n                        ? Origin.get(req).moduleId\r\n                        : relativeToFile(req.src || req, registryEntry.address);\r\n                    if (importIds.indexOf(importId) === -1) {\r\n                        importIds.push(importId);\r\n                        names.push(req.as);\r\n                    }\r\n                }\r\n                logger.debug(\"importing ViewModel resources for \".concat(compileInstruction.associatedModuleId), importIds.slice(templateImportCount));\r\n            }\r\n        }\r\n        return this.importViewResources(importIds, names, resources, compileInstruction, loadContext);\r\n    };\r\n    ViewEngine.prototype.importViewModelResource = function (moduleImport, moduleMember) {\r\n        var _this = this;\r\n        return this.loader.loadModule(moduleImport).then(function (viewModelModule) {\r\n            var normalizedId = Origin.get(viewModelModule).moduleId;\r\n            var resourceModule = _this.moduleAnalyzer.analyze(normalizedId, viewModelModule, moduleMember);\r\n            if (!resourceModule.mainResource) {\r\n                throw new Error(\"No view model found in module \\\"\".concat(moduleImport, \"\\\".\"));\r\n            }\r\n            resourceModule.initialize(_this.container);\r\n            return resourceModule.mainResource;\r\n        });\r\n    };\r\n    ViewEngine.prototype.importViewResources = function (moduleIds, names, resources, compileInstruction, loadContext) {\r\n        var _this = this;\r\n        loadContext = loadContext || new ResourceLoadContext();\r\n        compileInstruction = compileInstruction || ViewCompileInstruction.normal;\r\n        moduleIds = moduleIds.map(function (x) { return _this._applyLoaderPlugin(x); });\r\n        return this.loader.loadAllModules(moduleIds).then(function (imports) {\r\n            var i;\r\n            var ii;\r\n            var analysis;\r\n            var normalizedId;\r\n            var current;\r\n            var associatedModule;\r\n            var container = _this.container;\r\n            var moduleAnalyzer = _this.moduleAnalyzer;\r\n            var allAnalysis = new Array(imports.length);\r\n            for (i = 0, ii = imports.length; i < ii; ++i) {\r\n                current = imports[i];\r\n                normalizedId = Origin.get(current).moduleId;\r\n                analysis = moduleAnalyzer.analyze(normalizedId, current);\r\n                analysis.initialize(container);\r\n                analysis.register(resources, names[i]);\r\n                allAnalysis[i] = analysis;\r\n            }\r\n            if (compileInstruction.associatedModuleId) {\r\n                associatedModule = moduleAnalyzer.getAnalysis(compileInstruction.associatedModuleId);\r\n                if (associatedModule) {\r\n                    associatedModule.register(resources);\r\n                }\r\n            }\r\n            for (i = 0, ii = allAnalysis.length; i < ii; ++i) {\r\n                allAnalysis[i] = allAnalysis[i].load(container, loadContext);\r\n            }\r\n            return Promise.all(allAnalysis).then(function () { return resources; });\r\n        });\r\n    };\r\n    ViewEngine.prototype._applyLoaderPlugin = function (id) {\r\n        var index = id.lastIndexOf('.');\r\n        if (index !== -1) {\r\n            var ext = id.substring(index);\r\n            var pluginName = this._pluginMap[ext];\r\n            if (pluginName === undefined) {\r\n                return id;\r\n            }\r\n            return this.loader.applyPluginToUrl(id, pluginName);\r\n        }\r\n        return id;\r\n    };\r\n    ViewEngine.viewModelRequireMetadataKey = 'aurelia:view-model-require';\r\n    return ViewEngine;\r\n}());\n\nvar Controller = (function () {\r\n    function Controller(behavior, instruction, viewModel, container) {\r\n        this.behavior = behavior;\r\n        this.instruction = instruction;\r\n        this.viewModel = viewModel;\r\n        this.isAttached = false;\r\n        this.view = null;\r\n        this.isBound = false;\r\n        this.scope = null;\r\n        this.container = container;\r\n        this.elementEvents = container.elementEvents || null;\r\n        var observerLookup = behavior.observerLocator.getOrCreateObserversLookup(viewModel);\r\n        var handlesBind = behavior.handlesBind;\r\n        var attributes = instruction.attributes;\r\n        var boundProperties = this.boundProperties = [];\r\n        var properties = behavior.properties;\r\n        var i;\r\n        var ii;\r\n        behavior._ensurePropertiesDefined(viewModel, observerLookup);\r\n        for (i = 0, ii = properties.length; i < ii; ++i) {\r\n            properties[i]._initialize(viewModel, observerLookup, attributes, handlesBind, boundProperties);\r\n        }\r\n    }\r\n    Controller.prototype.created = function (owningView) {\r\n        if (this.behavior.handlesCreated) {\r\n            this.viewModel.created(owningView, this.view);\r\n        }\r\n    };\r\n    Controller.prototype.automate = function (overrideContext, owningView) {\r\n        this.view.bindingContext = this.viewModel;\r\n        this.view.overrideContext = overrideContext || createOverrideContext(this.viewModel);\r\n        this.view._isUserControlled = true;\r\n        if (this.behavior.handlesCreated) {\r\n            this.viewModel.created(owningView || null, this.view);\r\n        }\r\n        this.bind(this.view);\r\n    };\r\n    Controller.prototype.bind = function (scope) {\r\n        var skipSelfSubscriber = this.behavior.handlesBind;\r\n        var boundProperties = this.boundProperties;\r\n        var i;\r\n        var ii;\r\n        var x;\r\n        var observer;\r\n        var selfSubscriber;\r\n        if (this.isBound) {\r\n            if (this.scope === scope) {\r\n                return;\r\n            }\r\n            this.unbind();\r\n        }\r\n        this.isBound = true;\r\n        this.scope = scope;\r\n        for (i = 0, ii = boundProperties.length; i < ii; ++i) {\r\n            x = boundProperties[i];\r\n            observer = x.observer;\r\n            selfSubscriber = observer.selfSubscriber;\r\n            observer.publishing = false;\r\n            if (skipSelfSubscriber) {\r\n                observer.selfSubscriber = null;\r\n            }\r\n            x.binding.bind(scope);\r\n            observer.call();\r\n            observer.publishing = true;\r\n            observer.selfSubscriber = selfSubscriber;\r\n        }\r\n        var overrideContext;\r\n        if (this.view !== null) {\r\n            if (skipSelfSubscriber) {\r\n                this.view.viewModelScope = scope;\r\n            }\r\n            if (this.viewModel === scope.overrideContext.bindingContext) {\r\n                overrideContext = scope.overrideContext;\r\n            }\r\n            else if (this.instruction.inheritBindingContext) {\r\n                overrideContext = createOverrideContext(this.viewModel, scope.overrideContext);\r\n            }\r\n            else {\r\n                overrideContext = createOverrideContext(this.viewModel);\r\n                overrideContext.__parentOverrideContext = scope.overrideContext;\r\n            }\r\n            this.view.bind(this.viewModel, overrideContext);\r\n        }\r\n        else if (skipSelfSubscriber) {\r\n            overrideContext = scope.overrideContext;\r\n            if (scope.overrideContext.__parentOverrideContext !== undefined\r\n                && this.viewModel.viewFactory && this.viewModel.viewFactory.factoryCreateInstruction.partReplacements) {\r\n                overrideContext = Object.assign({}, scope.overrideContext);\r\n                overrideContext.parentOverrideContext = scope.overrideContext.__parentOverrideContext;\r\n            }\r\n            this.viewModel.bind(scope.bindingContext, overrideContext);\r\n        }\r\n    };\r\n    Controller.prototype.unbind = function () {\r\n        if (this.isBound) {\r\n            var boundProperties = this.boundProperties;\r\n            var i = void 0;\r\n            var ii = void 0;\r\n            this.isBound = false;\r\n            this.scope = null;\r\n            if (this.view !== null) {\r\n                this.view.unbind();\r\n            }\r\n            if (this.behavior.handlesUnbind) {\r\n                this.viewModel.unbind();\r\n            }\r\n            if (this.elementEvents !== null) {\r\n                this.elementEvents.disposeAll();\r\n            }\r\n            for (i = 0, ii = boundProperties.length; i < ii; ++i) {\r\n                boundProperties[i].binding.unbind();\r\n            }\r\n        }\r\n    };\r\n    Controller.prototype.attached = function () {\r\n        if (this.isAttached) {\r\n            return;\r\n        }\r\n        this.isAttached = true;\r\n        if (this.behavior.handlesAttached) {\r\n            this.viewModel.attached();\r\n        }\r\n        if (this.view !== null) {\r\n            this.view.attached();\r\n        }\r\n    };\r\n    Controller.prototype.detached = function () {\r\n        if (this.isAttached) {\r\n            this.isAttached = false;\r\n            if (this.view !== null) {\r\n                this.view.detached();\r\n            }\r\n            if (this.behavior.handlesDetached) {\r\n                this.viewModel.detached();\r\n            }\r\n        }\r\n    };\r\n    return Controller;\r\n}());\n\nvar lastProviderId = 0;\r\nfunction nextProviderId() {\r\n    return ++lastProviderId;\r\n}\r\nfunction doProcessContent() { return true; }\r\nfunction doProcessAttributes() { }\r\nvar HtmlBehaviorResource = (function () {\r\n    function HtmlBehaviorResource() {\r\n        this.elementName = null;\r\n        this.attributeName = null;\r\n        this.attributeDefaultBindingMode = undefined;\r\n        this.liftsContent = false;\r\n        this.targetShadowDOM = false;\r\n        this.shadowDOMOptions = null;\r\n        this.processAttributes = doProcessAttributes;\r\n        this.processContent = doProcessContent;\r\n        this.usesShadowDOM = false;\r\n        this.childBindings = null;\r\n        this.hasDynamicOptions = false;\r\n        this.containerless = false;\r\n        this.properties = [];\r\n        this.attributes = {};\r\n        this.isInitialized = false;\r\n        this.primaryProperty = null;\r\n    }\r\n    HtmlBehaviorResource.convention = function (name, existing) {\r\n        var behavior;\r\n        if (name.endsWith('CustomAttribute')) {\r\n            behavior = existing || new HtmlBehaviorResource();\r\n            behavior.attributeName = _hyphenate(name.substring(0, name.length - 15));\r\n        }\r\n        if (name.endsWith('CustomElement')) {\r\n            behavior = existing || new HtmlBehaviorResource();\r\n            behavior.elementName = _hyphenate(name.substring(0, name.length - 13));\r\n        }\r\n        return behavior;\r\n    };\r\n    HtmlBehaviorResource.prototype.addChildBinding = function (behavior) {\r\n        if (this.childBindings === null) {\r\n            this.childBindings = [];\r\n        }\r\n        this.childBindings.push(behavior);\r\n    };\r\n    HtmlBehaviorResource.prototype.initialize = function (container, target) {\r\n        var proto = target.prototype;\r\n        var properties = this.properties;\r\n        var attributeName = this.attributeName;\r\n        var attributeDefaultBindingMode = this.attributeDefaultBindingMode;\r\n        var i;\r\n        var ii;\r\n        var current;\r\n        if (this.isInitialized) {\r\n            return;\r\n        }\r\n        this.isInitialized = true;\r\n        target.__providerId__ = nextProviderId();\r\n        this.observerLocator = container.get(ObserverLocator);\r\n        this.taskQueue = container.get(TaskQueue);\r\n        this.target = target;\r\n        this.usesShadowDOM = this.targetShadowDOM && FEATURE.shadowDOM;\r\n        this.handlesCreated = ('created' in proto);\r\n        this.handlesBind = ('bind' in proto);\r\n        this.handlesUnbind = ('unbind' in proto);\r\n        this.handlesAttached = ('attached' in proto);\r\n        this.handlesDetached = ('detached' in proto);\r\n        this.htmlName = this.elementName || this.attributeName;\r\n        if (attributeName !== null) {\r\n            if (properties.length === 0) {\r\n                new BindableProperty({\r\n                    name: 'value',\r\n                    changeHandler: 'valueChanged' in proto ? 'valueChanged' : null,\r\n                    attribute: attributeName,\r\n                    defaultBindingMode: attributeDefaultBindingMode\r\n                }).registerWith(target, this);\r\n            }\r\n            current = properties[0];\r\n            if (properties.length === 1 && current.name === 'value') {\r\n                current.isDynamic = current.hasOptions = this.hasDynamicOptions;\r\n                current.defineOn(target, this);\r\n            }\r\n            else {\r\n                for (i = 0, ii = properties.length; i < ii; ++i) {\r\n                    properties[i].defineOn(target, this);\r\n                    if (properties[i].primaryProperty) {\r\n                        if (this.primaryProperty) {\r\n                            throw new Error('Only one bindable property on a custom element can be defined as the default');\r\n                        }\r\n                        this.primaryProperty = properties[i];\r\n                    }\r\n                }\r\n                current = new BindableProperty({\r\n                    name: 'value',\r\n                    changeHandler: 'valueChanged' in proto ? 'valueChanged' : null,\r\n                    attribute: attributeName,\r\n                    defaultBindingMode: attributeDefaultBindingMode\r\n                });\r\n                current.hasOptions = true;\r\n                current.registerWith(target, this);\r\n            }\r\n        }\r\n        else {\r\n            for (i = 0, ii = properties.length; i < ii; ++i) {\r\n                properties[i].defineOn(target, this);\r\n            }\r\n            this._copyInheritedProperties(container, target);\r\n        }\r\n    };\r\n    HtmlBehaviorResource.prototype.register = function (registry, name) {\r\n        var _this = this;\r\n        if (this.attributeName !== null) {\r\n            registry.registerAttribute(name || this.attributeName, this, this.attributeName);\r\n            if (Array.isArray(this.aliases)) {\r\n                this.aliases\r\n                    .forEach(function (alias) {\r\n                    registry.registerAttribute(alias, _this, _this.attributeName);\r\n                });\r\n            }\r\n        }\r\n        if (this.elementName !== null) {\r\n            registry.registerElement(name || this.elementName, this);\r\n        }\r\n    };\r\n    HtmlBehaviorResource.prototype.aliases = function (aliases) {\r\n        throw new Error('Method not implemented.');\r\n    };\r\n    HtmlBehaviorResource.prototype.load = function (container, target, loadContext, viewStrategy, transientView) {\r\n        var _this = this;\r\n        var options;\r\n        if (this.elementName !== null) {\r\n            viewStrategy = container.get(ViewLocator).getViewStrategy(viewStrategy || this.viewStrategy || target);\r\n            options = new ViewCompileInstruction(this.targetShadowDOM, true);\r\n            if (!viewStrategy.moduleId) {\r\n                viewStrategy.moduleId = Origin.get(target).moduleId;\r\n            }\r\n            return viewStrategy\r\n                .loadViewFactory(container.get(ViewEngine), options, loadContext, target)\r\n                .then(function (viewFactory) {\r\n                if (!transientView || !_this.viewFactory) {\r\n                    _this.viewFactory = viewFactory;\r\n                }\r\n                return viewFactory;\r\n            });\r\n        }\r\n        return Promise.resolve(this);\r\n    };\r\n    HtmlBehaviorResource.prototype.compile = function (compiler, resources, node, instruction, parentNode) {\r\n        if (this.liftsContent) {\r\n            if (!instruction.viewFactory) {\r\n                var template = DOM.createElement('template');\r\n                var fragment = DOM.createDocumentFragment();\r\n                var cacheSize = node.getAttribute('view-cache');\r\n                var part = node.getAttribute('part');\r\n                node.removeAttribute(instruction.originalAttrName);\r\n                DOM.replaceNode(template, node, parentNode);\r\n                fragment.appendChild(node);\r\n                instruction.viewFactory = compiler.compile(fragment, resources);\r\n                if (part) {\r\n                    instruction.viewFactory.part = part;\r\n                    node.removeAttribute('part');\r\n                }\r\n                if (cacheSize) {\r\n                    instruction.viewFactory.setCacheSize(cacheSize);\r\n                    node.removeAttribute('view-cache');\r\n                }\r\n                node = template;\r\n            }\r\n        }\r\n        else if (this.elementName !== null) {\r\n            var partReplacements = {};\r\n            if (this.processContent(compiler, resources, node, instruction) && node.hasChildNodes()) {\r\n                var currentChild = node.firstChild;\r\n                var contentElement = this.usesShadowDOM ? null : DOM.createElement('au-content');\r\n                var nextSibling = void 0;\r\n                var toReplace = void 0;\r\n                while (currentChild) {\r\n                    nextSibling = currentChild.nextSibling;\r\n                    if (currentChild.tagName === 'TEMPLATE' && (toReplace = currentChild.getAttribute('replace-part'))) {\r\n                        partReplacements[toReplace] = compiler.compile(currentChild, resources);\r\n                        DOM.removeNode(currentChild, parentNode);\r\n                        instruction.partReplacements = partReplacements;\r\n                    }\r\n                    else if (contentElement !== null) {\r\n                        if (currentChild.nodeType === 3 && _isAllWhitespace(currentChild)) {\r\n                            DOM.removeNode(currentChild, parentNode);\r\n                        }\r\n                        else {\r\n                            contentElement.appendChild(currentChild);\r\n                        }\r\n                    }\r\n                    currentChild = nextSibling;\r\n                }\r\n                if (contentElement !== null && contentElement.hasChildNodes()) {\r\n                    node.appendChild(contentElement);\r\n                }\r\n                instruction.skipContentProcessing = false;\r\n            }\r\n            else {\r\n                instruction.skipContentProcessing = true;\r\n            }\r\n        }\r\n        else if (!this.processContent(compiler, resources, node, instruction)) {\r\n            instruction.skipContentProcessing = true;\r\n        }\r\n        return node;\r\n    };\r\n    HtmlBehaviorResource.prototype.create = function (container, instruction, element, bindings) {\r\n        var viewHost;\r\n        var au = null;\r\n        instruction = instruction || BehaviorInstruction.normal;\r\n        element = element || null;\r\n        bindings = bindings || null;\r\n        if (this.elementName !== null && element) {\r\n            if (this.usesShadowDOM) {\r\n                viewHost = element.attachShadow(this.shadowDOMOptions);\r\n                container.registerInstance(DOM.boundary, viewHost);\r\n            }\r\n            else {\r\n                viewHost = element;\r\n                if (this.targetShadowDOM) {\r\n                    container.registerInstance(DOM.boundary, viewHost);\r\n                }\r\n            }\r\n        }\r\n        if (element !== null) {\r\n            element.au = au = element.au || {};\r\n        }\r\n        var viewModel = instruction.viewModel || container.get(this.target);\r\n        var controller = new Controller(this, instruction, viewModel, container);\r\n        var childBindings = this.childBindings;\r\n        var viewFactory;\r\n        if (this.liftsContent) {\r\n            au.controller = controller;\r\n        }\r\n        else if (this.elementName !== null) {\r\n            viewFactory = instruction.viewFactory || this.viewFactory;\r\n            container.viewModel = viewModel;\r\n            if (viewFactory) {\r\n                controller.view = viewFactory.create(container, instruction, element);\r\n            }\r\n            if (element !== null) {\r\n                au.controller = controller;\r\n                if (controller.view) {\r\n                    if (!this.usesShadowDOM && (element.childNodes.length === 1 || element.contentElement)) {\r\n                        var contentElement = element.childNodes[0] || element.contentElement;\r\n                        controller.view.contentView = { fragment: contentElement };\r\n                        contentElement.parentNode && DOM.removeNode(contentElement);\r\n                    }\r\n                    if (instruction.anchorIsContainer) {\r\n                        if (childBindings !== null) {\r\n                            for (var i = 0, ii = childBindings.length; i < ii; ++i) {\r\n                                controller.view.addBinding(childBindings[i].create(element, viewModel, controller));\r\n                            }\r\n                        }\r\n                        controller.view.appendNodesTo(viewHost);\r\n                    }\r\n                    else {\r\n                        controller.view.insertNodesBefore(viewHost);\r\n                    }\r\n                }\r\n                else if (childBindings !== null) {\r\n                    for (var i = 0, ii = childBindings.length; i < ii; ++i) {\r\n                        bindings.push(childBindings[i].create(element, viewModel, controller));\r\n                    }\r\n                }\r\n            }\r\n            else if (controller.view) {\r\n                controller.view.controller = controller;\r\n                if (childBindings !== null) {\r\n                    for (var i = 0, ii = childBindings.length; i < ii; ++i) {\r\n                        controller.view.addBinding(childBindings[i].create(instruction.host, viewModel, controller));\r\n                    }\r\n                }\r\n            }\r\n            else if (childBindings !== null) {\r\n                for (var i = 0, ii = childBindings.length; i < ii; ++i) {\r\n                    bindings.push(childBindings[i].create(instruction.host, viewModel, controller));\r\n                }\r\n            }\r\n        }\r\n        else if (childBindings !== null) {\r\n            for (var i = 0, ii = childBindings.length; i < ii; ++i) {\r\n                bindings.push(childBindings[i].create(element, viewModel, controller));\r\n            }\r\n        }\r\n        if (au !== null) {\r\n            au[this.htmlName] = controller;\r\n        }\r\n        if (instruction.initiatedByBehavior && viewFactory) {\r\n            controller.view.created();\r\n        }\r\n        return controller;\r\n    };\r\n    HtmlBehaviorResource.prototype._ensurePropertiesDefined = function (instance, lookup) {\r\n        var properties;\r\n        var i;\r\n        var ii;\r\n        var observer;\r\n        if ('__propertiesDefined__' in lookup) {\r\n            return;\r\n        }\r\n        lookup.__propertiesDefined__ = true;\r\n        properties = this.properties;\r\n        for (i = 0, ii = properties.length; i < ii; ++i) {\r\n            observer = properties[i].createObserver(instance);\r\n            if (observer !== undefined) {\r\n                lookup[observer.propertyName] = observer;\r\n            }\r\n        }\r\n    };\r\n    HtmlBehaviorResource.prototype._copyInheritedProperties = function (container, target) {\r\n        var behavior;\r\n        var derived = target;\r\n        while (true) {\r\n            var proto = Object.getPrototypeOf(target.prototype);\r\n            target = proto && proto.constructor;\r\n            if (!target) {\r\n                return;\r\n            }\r\n            behavior = metadata.getOwn(metadata.resource, target);\r\n            if (behavior) {\r\n                break;\r\n            }\r\n        }\r\n        behavior.initialize(container, target);\r\n        var _loop_1 = function (i, ii) {\r\n            var prop = behavior.properties[i];\r\n            if (this_1.properties.some(function (p) { return p.name === prop.name; })) {\r\n                return \"continue\";\r\n            }\r\n            new BindableProperty(prop).registerWith(derived, this_1);\r\n        };\r\n        var this_1 = this;\r\n        for (var i = 0, ii = behavior.properties.length; i < ii; ++i) {\r\n            _loop_1(i);\r\n        }\r\n    };\r\n    return HtmlBehaviorResource;\r\n}());\n\nfunction register(lookup, name, resource, type) {\r\n    if (!name) {\r\n        return;\r\n    }\r\n    var existing = lookup[name];\r\n    if (existing) {\r\n        if (existing !== resource) {\r\n            throw new Error(\"Attempted to register \".concat(type, \" when one with the same name already exists. Name: \").concat(name, \".\"));\r\n        }\r\n        return;\r\n    }\r\n    lookup[name] = resource;\r\n}\r\nfunction validateBehaviorName(name, type) {\r\n    if (/[A-Z]/.test(name)) {\r\n        var newName = _hyphenate(name);\r\n        LogManager\r\n            .getLogger('templating')\r\n            .warn(\"'\".concat(name, \"' is not a valid \").concat(type, \" name and has been converted to '\").concat(newName, \"'. Upper-case letters are not allowed because the DOM is not case-sensitive.\"));\r\n        return newName;\r\n    }\r\n    return name;\r\n}\r\nvar conventionMark = '__au_resource__';\r\nvar ViewResources = (function () {\r\n    function ViewResources(parent, viewUrl) {\r\n        this.bindingLanguage = null;\r\n        this.parent = parent || null;\r\n        this.hasParent = this.parent !== null;\r\n        this.viewUrl = viewUrl || '';\r\n        this.lookupFunctions = {\r\n            valueConverters: this.getValueConverter.bind(this),\r\n            bindingBehaviors: this.getBindingBehavior.bind(this)\r\n        };\r\n        this.attributes = Object.create(null);\r\n        this.elements = Object.create(null);\r\n        this.valueConverters = Object.create(null);\r\n        this.bindingBehaviors = Object.create(null);\r\n        this.attributeMap = Object.create(null);\r\n        this.values = Object.create(null);\r\n        this.beforeCompile = this.afterCompile = this.beforeCreate = this.afterCreate = this.beforeBind = this.beforeUnbind = false;\r\n    }\r\n    ViewResources.convention = function (target, existing) {\r\n        var resource;\r\n        if (existing && conventionMark in existing) {\r\n            return existing;\r\n        }\r\n        if ('$resource' in target) {\r\n            var config = target.$resource;\r\n            if (typeof config === 'string') {\r\n                resource = existing || new HtmlBehaviorResource();\r\n                resource[conventionMark] = true;\r\n                if (!resource.elementName) {\r\n                    resource.elementName = validateBehaviorName(config, 'custom element');\r\n                }\r\n            }\r\n            else {\r\n                if (typeof config === 'function') {\r\n                    config = config.call(target);\r\n                }\r\n                if (typeof config === 'string') {\r\n                    config = { name: config };\r\n                }\r\n                config = Object.assign({}, config);\r\n                var resourceType = config.type || 'element';\r\n                var name_1 = config.name;\r\n                switch (resourceType) {\r\n                    case 'element':\r\n                    case 'attribute':\r\n                        resource = existing || new HtmlBehaviorResource();\r\n                        resource[conventionMark] = true;\r\n                        if (resourceType === 'element') {\r\n                            if (!resource.elementName) {\r\n                                resource.elementName = name_1\r\n                                    ? validateBehaviorName(name_1, 'custom element')\r\n                                    : _hyphenate(target.name);\r\n                            }\r\n                        }\r\n                        else {\r\n                            if (!resource.attributeName) {\r\n                                resource.attributeName = name_1\r\n                                    ? validateBehaviorName(name_1, 'custom attribute')\r\n                                    : _hyphenate(target.name);\r\n                            }\r\n                        }\r\n                        if ('templateController' in config) {\r\n                            config.liftsContent = config.templateController;\r\n                            delete config.templateController;\r\n                        }\r\n                        if ('defaultBindingMode' in config && resource.attributeDefaultBindingMode !== undefined) {\r\n                            config.attributeDefaultBindingMode = config.defaultBindingMode;\r\n                            delete config.defaultBindingMode;\r\n                        }\r\n                        delete config.name;\r\n                        Object.assign(resource, config);\r\n                        break;\r\n                    case 'valueConverter':\r\n                        resource = new ValueConverterResource(camelCase(name_1 || target.name));\r\n                        break;\r\n                    case 'bindingBehavior':\r\n                        resource = new BindingBehaviorResource(camelCase(name_1 || target.name));\r\n                        break;\r\n                    case 'viewEngineHooks':\r\n                        resource = new ViewEngineHooksResource();\r\n                        break;\r\n                }\r\n            }\r\n            if (resource instanceof HtmlBehaviorResource) {\r\n                var bindables = typeof config === 'string' ? undefined : config.bindables;\r\n                var currentProps = resource.properties;\r\n                if (Array.isArray(bindables)) {\r\n                    for (var i = 0, ii = bindables.length; ii > i; ++i) {\r\n                        var prop = bindables[i];\r\n                        if (!prop || (typeof prop !== 'string' && !prop.name)) {\r\n                            throw new Error(\"Invalid bindable property at \\\"\".concat(i, \"\\\" for class \\\"\").concat(target.name, \"\\\". Expected either a string or an object with \\\"name\\\" property.\"));\r\n                        }\r\n                        var newProp = new BindableProperty(prop);\r\n                        var existed = false;\r\n                        for (var j = 0, jj = currentProps.length; jj > j; ++j) {\r\n                            if (currentProps[j].name === newProp.name) {\r\n                                existed = true;\r\n                                break;\r\n                            }\r\n                        }\r\n                        if (existed) {\r\n                            continue;\r\n                        }\r\n                        newProp.registerWith(target, resource);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return resource;\r\n    };\r\n    ViewResources.prototype._tryAddHook = function (obj, name) {\r\n        if (typeof obj[name] === 'function') {\r\n            var func = obj[name].bind(obj);\r\n            var counter = 1;\r\n            var callbackName = void 0;\r\n            while (this[callbackName = name + counter.toString()] !== undefined) {\r\n                counter++;\r\n            }\r\n            this[name] = true;\r\n            this[callbackName] = func;\r\n        }\r\n    };\r\n    ViewResources.prototype._invokeHook = function (name, one, two, three, four) {\r\n        if (this.hasParent) {\r\n            this.parent._invokeHook(name, one, two, three, four);\r\n        }\r\n        if (this[name]) {\r\n            this[name + '1'](one, two, three, four);\r\n            var callbackName = name + '2';\r\n            if (this[callbackName]) {\r\n                this[callbackName](one, two, three, four);\r\n                callbackName = name + '3';\r\n                if (this[callbackName]) {\r\n                    this[callbackName](one, two, three, four);\r\n                    var counter = 4;\r\n                    while (this[callbackName = name + counter.toString()] !== undefined) {\r\n                        this[callbackName](one, two, three, four);\r\n                        counter++;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    };\r\n    ViewResources.prototype.registerViewEngineHooks = function (hooks) {\r\n        this._tryAddHook(hooks, 'beforeCompile');\r\n        this._tryAddHook(hooks, 'afterCompile');\r\n        this._tryAddHook(hooks, 'beforeCreate');\r\n        this._tryAddHook(hooks, 'afterCreate');\r\n        this._tryAddHook(hooks, 'beforeBind');\r\n        this._tryAddHook(hooks, 'beforeUnbind');\r\n    };\r\n    ViewResources.prototype.getBindingLanguage = function (bindingLanguageFallback) {\r\n        return this.bindingLanguage || (this.bindingLanguage = bindingLanguageFallback);\r\n    };\r\n    ViewResources.prototype.patchInParent = function (newParent) {\r\n        var originalParent = this.parent;\r\n        this.parent = newParent || null;\r\n        this.hasParent = this.parent !== null;\r\n        if (newParent.parent === null) {\r\n            newParent.parent = originalParent;\r\n            newParent.hasParent = originalParent !== null;\r\n        }\r\n    };\r\n    ViewResources.prototype.relativeToView = function (path) {\r\n        return relativeToFile(path, this.viewUrl);\r\n    };\r\n    ViewResources.prototype.registerElement = function (tagName, behavior) {\r\n        register(this.elements, tagName, behavior, 'an Element');\r\n    };\r\n    ViewResources.prototype.getElement = function (tagName) {\r\n        return this.elements[tagName] || (this.hasParent ? this.parent.getElement(tagName) : null);\r\n    };\r\n    ViewResources.prototype.mapAttribute = function (attribute) {\r\n        return this.attributeMap[attribute] || (this.hasParent ? this.parent.mapAttribute(attribute) : null);\r\n    };\r\n    ViewResources.prototype.registerAttribute = function (attribute, behavior, knownAttribute) {\r\n        this.attributeMap[attribute] = knownAttribute;\r\n        register(this.attributes, attribute, behavior, 'an Attribute');\r\n    };\r\n    ViewResources.prototype.getAttribute = function (attribute) {\r\n        return this.attributes[attribute] || (this.hasParent ? this.parent.getAttribute(attribute) : null);\r\n    };\r\n    ViewResources.prototype.registerValueConverter = function (name, valueConverter) {\r\n        register(this.valueConverters, name, valueConverter, 'a ValueConverter');\r\n    };\r\n    ViewResources.prototype.getValueConverter = function (name) {\r\n        return this.valueConverters[name] || (this.hasParent ? this.parent.getValueConverter(name) : null);\r\n    };\r\n    ViewResources.prototype.registerBindingBehavior = function (name, bindingBehavior) {\r\n        register(this.bindingBehaviors, name, bindingBehavior, 'a BindingBehavior');\r\n    };\r\n    ViewResources.prototype.getBindingBehavior = function (name) {\r\n        return this.bindingBehaviors[name] || (this.hasParent ? this.parent.getBindingBehavior(name) : null);\r\n    };\r\n    ViewResources.prototype.registerValue = function (name, value) {\r\n        register(this.values, name, value, 'a value');\r\n    };\r\n    ViewResources.prototype.getValue = function (name) {\r\n        return this.values[name] || (this.hasParent ? this.parent.getValue(name) : null);\r\n    };\r\n    ViewResources.prototype.autoRegister = function (container, impl) {\r\n        var resourceTypeMeta = metadata.getOwn(metadata.resource, impl);\r\n        if (resourceTypeMeta) {\r\n            if (resourceTypeMeta instanceof HtmlBehaviorResource) {\r\n                ViewResources.convention(impl, resourceTypeMeta);\r\n                if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\r\n                    HtmlBehaviorResource.convention(impl.name, resourceTypeMeta);\r\n                }\r\n                if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\r\n                    resourceTypeMeta.elementName = _hyphenate(impl.name);\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            resourceTypeMeta = ViewResources.convention(impl)\r\n                || HtmlBehaviorResource.convention(impl.name)\r\n                || ValueConverterResource.convention(impl.name)\r\n                || BindingBehaviorResource.convention(impl.name)\r\n                || ViewEngineHooksResource.convention(impl.name);\r\n            if (!resourceTypeMeta) {\r\n                resourceTypeMeta = new HtmlBehaviorResource();\r\n                resourceTypeMeta.elementName = _hyphenate(impl.name);\r\n            }\r\n            metadata.define(metadata.resource, resourceTypeMeta, impl);\r\n        }\r\n        resourceTypeMeta.initialize(container, impl);\r\n        resourceTypeMeta.register(this, undefined);\r\n        return resourceTypeMeta;\r\n    };\r\n    return ViewResources;\r\n}());\n\nvar viewStrategy = protocol.create('aurelia:view-strategy', {\r\n    validate: function (target) {\r\n        if (!(typeof target.loadViewFactory === 'function')) {\r\n            return 'View strategies must implement: loadViewFactory(viewEngine: ViewEngine, compileInstruction: ViewCompileInstruction, loadContext?: ResourceLoadContext): Promise<ViewFactory>';\r\n        }\r\n        return true;\r\n    },\r\n    compose: function (target) {\r\n        if (!(typeof target.makeRelativeTo === 'function')) {\r\n            target.makeRelativeTo = PLATFORM.noop;\r\n        }\r\n    }\r\n});\r\nvar RelativeViewStrategy = (function () {\r\n    function RelativeViewStrategy(path) {\r\n        this.path = path;\r\n        this.absolutePath = null;\r\n    }\r\n    RelativeViewStrategy.prototype.loadViewFactory = function (viewEngine, compileInstruction, loadContext, target) {\r\n        if (this.absolutePath === null && this.moduleId) {\r\n            this.absolutePath = relativeToFile(this.path, this.moduleId);\r\n        }\r\n        compileInstruction.associatedModuleId = this.moduleId;\r\n        return viewEngine.loadViewFactory(this.absolutePath || this.path, compileInstruction, loadContext, target);\r\n    };\r\n    RelativeViewStrategy.prototype.makeRelativeTo = function (file) {\r\n        if (this.absolutePath === null) {\r\n            this.absolutePath = relativeToFile(this.path, file);\r\n        }\r\n    };\r\n    RelativeViewStrategy = __decorate([\r\n        viewStrategy()\r\n    ], RelativeViewStrategy);\r\n    return RelativeViewStrategy;\r\n}());\r\nvar ConventionalViewStrategy = (function () {\r\n    function ConventionalViewStrategy(viewLocator, origin) {\r\n        this.moduleId = origin.moduleId;\r\n        this.viewUrl = viewLocator.convertOriginToViewUrl(origin);\r\n    }\r\n    ConventionalViewStrategy.prototype.loadViewFactory = function (viewEngine, compileInstruction, loadContext, target) {\r\n        compileInstruction.associatedModuleId = this.moduleId;\r\n        return viewEngine.loadViewFactory(this.viewUrl, compileInstruction, loadContext, target);\r\n    };\r\n    ConventionalViewStrategy = __decorate([\r\n        viewStrategy()\r\n    ], ConventionalViewStrategy);\r\n    return ConventionalViewStrategy;\r\n}());\r\nvar NoViewStrategy = (function () {\r\n    function NoViewStrategy(dependencies, dependencyBaseUrl) {\r\n        this.dependencies = dependencies || null;\r\n        this.dependencyBaseUrl = dependencyBaseUrl || '';\r\n    }\r\n    NoViewStrategy.prototype.loadViewFactory = function (viewEngine, compileInstruction, loadContext, target) {\r\n        var entry = this.entry;\r\n        var dependencies = this.dependencies;\r\n        if (entry && entry.factoryIsReady) {\r\n            return Promise.resolve(null);\r\n        }\r\n        this.entry = entry = new TemplateRegistryEntry(this.moduleId || this.dependencyBaseUrl);\r\n        entry.dependencies = [];\r\n        entry.templateIsLoaded = true;\r\n        if (dependencies !== null) {\r\n            for (var i = 0, ii = dependencies.length; i < ii; ++i) {\r\n                var current = dependencies[i];\r\n                if (typeof current === 'string' || typeof current === 'function') {\r\n                    entry.addDependency(current);\r\n                }\r\n                else {\r\n                    entry.addDependency(current.from, current.as);\r\n                }\r\n            }\r\n        }\r\n        compileInstruction.associatedModuleId = this.moduleId;\r\n        return viewEngine.loadViewFactory(entry, compileInstruction, loadContext, target);\r\n    };\r\n    NoViewStrategy = __decorate([\r\n        viewStrategy()\r\n    ], NoViewStrategy);\r\n    return NoViewStrategy;\r\n}());\r\nvar TemplateRegistryViewStrategy = (function () {\r\n    function TemplateRegistryViewStrategy(moduleId, entry) {\r\n        this.moduleId = moduleId;\r\n        this.entry = entry;\r\n    }\r\n    TemplateRegistryViewStrategy.prototype.loadViewFactory = function (viewEngine, compileInstruction, loadContext, target) {\r\n        var entry = this.entry;\r\n        if (entry.factoryIsReady) {\r\n            return Promise.resolve(entry.factory);\r\n        }\r\n        compileInstruction.associatedModuleId = this.moduleId;\r\n        return viewEngine.loadViewFactory(entry, compileInstruction, loadContext, target);\r\n    };\r\n    TemplateRegistryViewStrategy = __decorate([\r\n        viewStrategy()\r\n    ], TemplateRegistryViewStrategy);\r\n    return TemplateRegistryViewStrategy;\r\n}());\r\nvar InlineViewStrategy = (function () {\r\n    function InlineViewStrategy(markup, dependencies, dependencyBaseUrl) {\r\n        this.markup = markup;\r\n        this.dependencies = dependencies || null;\r\n        this.dependencyBaseUrl = dependencyBaseUrl || '';\r\n    }\r\n    InlineViewStrategy.prototype.loadViewFactory = function (viewEngine, compileInstruction, loadContext, target) {\r\n        var entry = this.entry;\r\n        var dependencies = this.dependencies;\r\n        if (entry && entry.factoryIsReady) {\r\n            return Promise.resolve(entry.factory);\r\n        }\r\n        this.entry = entry = new TemplateRegistryEntry(this.moduleId || this.dependencyBaseUrl);\r\n        entry.template = DOM.createTemplateFromMarkup(this.markup);\r\n        if (dependencies !== null) {\r\n            for (var i = 0, ii = dependencies.length; i < ii; ++i) {\r\n                var current = dependencies[i];\r\n                if (typeof current === 'string' || typeof current === 'function') {\r\n                    entry.addDependency(current);\r\n                }\r\n                else {\r\n                    entry.addDependency(current.from, current.as);\r\n                }\r\n            }\r\n        }\r\n        compileInstruction.associatedModuleId = this.moduleId;\r\n        return viewEngine.loadViewFactory(entry, compileInstruction, loadContext, target);\r\n    };\r\n    InlineViewStrategy = __decorate([\r\n        viewStrategy()\r\n    ], InlineViewStrategy);\r\n    return InlineViewStrategy;\r\n}());\r\nvar StaticViewStrategy = (function () {\r\n    function StaticViewStrategy(config) {\r\n        if (typeof config === 'string' || (config instanceof DOM.Element && config.tagName === 'TEMPLATE')) {\r\n            config = {\r\n                template: config\r\n            };\r\n        }\r\n        this.template = config.template;\r\n        this.dependencies = config.dependencies || [];\r\n        this.factoryIsReady = false;\r\n        this.onReady = null;\r\n        this.moduleId = 'undefined';\r\n    }\r\n    StaticViewStrategy.prototype.loadViewFactory = function (viewEngine, compileInstruction, loadContext, target) {\r\n        var _this = this;\r\n        if (this.factoryIsReady) {\r\n            return Promise.resolve(this.factory);\r\n        }\r\n        var $deps = this.dependencies;\r\n        var deps = typeof $deps === 'function' ? $deps() : $deps;\r\n        deps = deps ? deps : [];\r\n        deps = Array.isArray(deps) ? deps : [deps];\r\n        return Promise.all(deps).then(function (dependencies) {\r\n            var container = viewEngine.container;\r\n            var appResources = viewEngine.appResources;\r\n            var viewCompiler = viewEngine.viewCompiler;\r\n            var viewResources = new ViewResources(appResources);\r\n            var resource;\r\n            var elDeps = [];\r\n            if (target) {\r\n                viewResources.autoRegister(container, target);\r\n            }\r\n            for (var _i = 0, dependencies_1 = dependencies; _i < dependencies_1.length; _i++) {\r\n                var dep = dependencies_1[_i];\r\n                if (typeof dep === 'function') {\r\n                    resource = viewResources.autoRegister(container, dep);\r\n                    if (resource.elementName !== null) {\r\n                        elDeps.push(resource);\r\n                    }\r\n                }\r\n                else if (dep && typeof dep === 'object') {\r\n                    for (var key in dep) {\r\n                        var exported = dep[key];\r\n                        if (typeof exported === 'function') {\r\n                            resource = viewResources.autoRegister(container, exported);\r\n                            if (resource.elementName !== null) {\r\n                                elDeps.push(resource);\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    throw new Error(\"dependency neither function nor object. Received: \\\"\".concat(typeof dep, \"\\\"\"));\r\n                }\r\n            }\r\n            return Promise.all(elDeps.map(function (el) { return el.load(container, el.target); })).then(function () {\r\n                var factory = _this.template !== null\r\n                    ? viewCompiler.compile(_this.template, viewResources, compileInstruction)\r\n                    : null;\r\n                _this.factoryIsReady = true;\r\n                _this.factory = factory;\r\n                return factory;\r\n            });\r\n        });\r\n    };\r\n    StaticViewStrategy = __decorate([\r\n        viewStrategy()\r\n    ], StaticViewStrategy);\r\n    return StaticViewStrategy;\r\n}());\n\nfunction remove(viewSlot, previous) {\r\n    return Array.isArray(previous)\r\n        ? viewSlot.removeMany(previous, true)\r\n        : viewSlot.remove(previous, true);\r\n}\r\nvar SwapStrategies = {\r\n    before: function (viewSlot, previous, callback) {\r\n        return (previous === undefined)\r\n            ? callback()\r\n            : callback().then(function () { return remove(viewSlot, previous); });\r\n    },\r\n    with: function (viewSlot, previous, callback) {\r\n        return (previous === undefined)\r\n            ? callback()\r\n            : Promise.all([remove(viewSlot, previous), callback()]);\r\n    },\r\n    after: function (viewSlot, previous, callback) {\r\n        return Promise.resolve(viewSlot.removeAll(true)).then(callback);\r\n    }\r\n};\n\nfunction tryActivateViewModel(context) {\r\n    if (context.skipActivation || typeof context.viewModel.activate !== 'function') {\r\n        return Promise.resolve();\r\n    }\r\n    return context.viewModel.activate(context.model) || Promise.resolve();\r\n}\r\nvar CompositionEngine = (function () {\r\n    function CompositionEngine(viewEngine, viewLocator) {\r\n        this.viewEngine = viewEngine;\r\n        this.viewLocator = viewLocator;\r\n    }\r\n    CompositionEngine.prototype._swap = function (context, view) {\r\n        var swapStrategy = SwapStrategies[context.swapOrder] || SwapStrategies.after;\r\n        var previousViews = context.viewSlot.children.slice();\r\n        return swapStrategy(context.viewSlot, previousViews, function () {\r\n            return Promise.resolve(context.viewSlot.add(view)).then(function () {\r\n                if (context.currentController) {\r\n                    context.currentController.unbind();\r\n                }\r\n            });\r\n        }).then(function () {\r\n            if (context.compositionTransactionNotifier) {\r\n                context.compositionTransactionNotifier.done();\r\n            }\r\n        });\r\n    };\r\n    CompositionEngine.prototype._createControllerAndSwap = function (context) {\r\n        var _this = this;\r\n        return this.createController(context).then(function (controller) {\r\n            if (context.compositionTransactionOwnershipToken) {\r\n                return context.compositionTransactionOwnershipToken\r\n                    .waitForCompositionComplete()\r\n                    .then(function () {\r\n                    controller.automate(context.overrideContext, context.owningView);\r\n                    return _this._swap(context, controller.view);\r\n                })\r\n                    .then(function () { return controller; });\r\n            }\r\n            controller.automate(context.overrideContext, context.owningView);\r\n            return _this._swap(context, controller.view).then(function () { return controller; });\r\n        });\r\n    };\r\n    CompositionEngine.prototype.createController = function (context) {\r\n        var _this = this;\r\n        var childContainer;\r\n        var viewModel;\r\n        var viewModelResource;\r\n        var m;\r\n        return this\r\n            .ensureViewModel(context)\r\n            .then(tryActivateViewModel)\r\n            .then(function () {\r\n            childContainer = context.childContainer;\r\n            viewModel = context.viewModel;\r\n            viewModelResource = context.viewModelResource;\r\n            m = viewModelResource.metadata;\r\n            var viewStrategy = _this.viewLocator.getViewStrategy(context.view || viewModel);\r\n            if (context.viewResources) {\r\n                viewStrategy.makeRelativeTo(context.viewResources.viewUrl);\r\n            }\r\n            return m.load(childContainer, viewModelResource.value, null, viewStrategy, true);\r\n        }).then(function (viewFactory) { return m.create(childContainer, BehaviorInstruction.dynamic(context.host, viewModel, viewFactory)); });\r\n    };\r\n    CompositionEngine.prototype.ensureViewModel = function (context) {\r\n        var childContainer = context.childContainer = (context.childContainer || context.container.createChild());\r\n        if (typeof context.viewModel === 'string') {\r\n            context.viewModel = context.viewResources\r\n                ? context.viewResources.relativeToView(context.viewModel)\r\n                : context.viewModel;\r\n            return this.viewEngine.importViewModelResource(context.viewModel).then(function (viewModelResource) {\r\n                childContainer.autoRegister(viewModelResource.value);\r\n                if (context.host) {\r\n                    childContainer.registerInstance(DOM.Element, context.host);\r\n                }\r\n                context.viewModel = childContainer.viewModel = childContainer.get(viewModelResource.value);\r\n                context.viewModelResource = viewModelResource;\r\n                return context;\r\n            });\r\n        }\r\n        var ctor = context.viewModel.constructor;\r\n        var isClass = typeof context.viewModel === 'function';\r\n        if (isClass) {\r\n            ctor = context.viewModel;\r\n            childContainer.autoRegister(ctor);\r\n        }\r\n        var m = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, ctor);\r\n        m.elementName = m.elementName || 'dynamic-element';\r\n        m.initialize(isClass ? childContainer : (context.container || childContainer), ctor);\r\n        context.viewModelResource = { metadata: m, value: ctor };\r\n        if (context.host) {\r\n            childContainer.registerInstance(DOM.Element, context.host);\r\n        }\r\n        childContainer.viewModel = context.viewModel = isClass ? childContainer.get(ctor) : context.viewModel;\r\n        return Promise.resolve(context);\r\n    };\r\n    CompositionEngine.prototype.compose = function (context) {\r\n        var _this = this;\r\n        context.childContainer = context.childContainer || context.container.createChild();\r\n        context.view = this.viewLocator.getViewStrategy(context.view);\r\n        var transaction = context.childContainer.get(CompositionTransaction);\r\n        var compositionTransactionOwnershipToken = transaction.tryCapture();\r\n        if (compositionTransactionOwnershipToken) {\r\n            context.compositionTransactionOwnershipToken = compositionTransactionOwnershipToken;\r\n        }\r\n        else {\r\n            context.compositionTransactionNotifier = transaction.enlist();\r\n        }\r\n        if (context.viewModel) {\r\n            return this._createControllerAndSwap(context);\r\n        }\r\n        else if (context.view) {\r\n            if (context.viewResources) {\r\n                context.view.makeRelativeTo(context.viewResources.viewUrl);\r\n            }\r\n            return context.view.loadViewFactory(this.viewEngine, new ViewCompileInstruction()).then(function (viewFactory) {\r\n                var result = viewFactory.create(context.childContainer);\r\n                result.bind(context.bindingContext, context.overrideContext);\r\n                if (context.compositionTransactionOwnershipToken) {\r\n                    return context.compositionTransactionOwnershipToken.waitForCompositionComplete()\r\n                        .then(function () { return _this._swap(context, result); })\r\n                        .then(function () { return result; });\r\n                }\r\n                return _this._swap(context, result).then(function () { return result; });\r\n            });\r\n        }\r\n        else if (context.viewSlot) {\r\n            context.viewSlot.removeAll();\r\n            if (context.compositionTransactionNotifier) {\r\n                context.compositionTransactionNotifier.done();\r\n            }\r\n            return Promise.resolve(null);\r\n        }\r\n        return Promise.resolve(null);\r\n    };\r\n    CompositionEngine = __decorate([\r\n        inject(ViewEngine, ViewLocator)\r\n    ], CompositionEngine);\r\n    return CompositionEngine;\r\n}());\n\nvar animationEvent = {\r\n    enterBegin: 'animation:enter:begin',\r\n    enterActive: 'animation:enter:active',\r\n    enterDone: 'animation:enter:done',\r\n    enterTimeout: 'animation:enter:timeout',\r\n    leaveBegin: 'animation:leave:begin',\r\n    leaveActive: 'animation:leave:active',\r\n    leaveDone: 'animation:leave:done',\r\n    leaveTimeout: 'animation:leave:timeout',\r\n    staggerNext: 'animation:stagger:next',\r\n    removeClassBegin: 'animation:remove-class:begin',\r\n    removeClassActive: 'animation:remove-class:active',\r\n    removeClassDone: 'animation:remove-class:done',\r\n    removeClassTimeout: 'animation:remove-class:timeout',\r\n    addClassBegin: 'animation:add-class:begin',\r\n    addClassActive: 'animation:add-class:active',\r\n    addClassDone: 'animation:add-class:done',\r\n    addClassTimeout: 'animation:add-class:timeout',\r\n    animateBegin: 'animation:animate:begin',\r\n    animateActive: 'animation:animate:active',\r\n    animateDone: 'animation:animate:done',\r\n    animateTimeout: 'animation:animate:timeout',\r\n    sequenceBegin: 'animation:sequence:begin',\r\n    sequenceDone: 'animation:sequence:done'\r\n};\n\nfunction createChildObserverDecorator(selectorOrConfig, all) {\r\n    return function (target, key, descriptor) {\r\n        var actualTarget = typeof key === 'string' ? target.constructor : target;\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, actualTarget);\r\n        if (typeof selectorOrConfig === 'string') {\r\n            selectorOrConfig = {\r\n                selector: selectorOrConfig,\r\n                name: key\r\n            };\r\n        }\r\n        if (descriptor) {\r\n            descriptor.writable = true;\r\n            descriptor.configurable = true;\r\n        }\r\n        selectorOrConfig.all = all;\r\n        r.addChildBinding(new ChildObserver(selectorOrConfig));\r\n    };\r\n}\r\nfunction children(selectorOrConfig) {\r\n    return createChildObserverDecorator(selectorOrConfig, true);\r\n}\r\nfunction child(selectorOrConfig) {\r\n    return createChildObserverDecorator(selectorOrConfig, false);\r\n}\r\nvar ChildObserver = (function () {\r\n    function ChildObserver(config) {\r\n        this.name = config.name;\r\n        this.changeHandler = config.changeHandler || this.name + 'Changed';\r\n        this.selector = config.selector;\r\n        this.all = config.all;\r\n    }\r\n    ChildObserver.prototype.create = function (viewHost, viewModel, controller) {\r\n        return new ChildObserverBinder(this.selector, viewHost, this.name, viewModel, controller, this.changeHandler, this.all);\r\n    };\r\n    return ChildObserver;\r\n}());\r\nvar noMutations = [];\r\nfunction trackMutation(groupedMutations, binder, record) {\r\n    var mutations = groupedMutations.get(binder);\r\n    if (!mutations) {\r\n        mutations = [];\r\n        groupedMutations.set(binder, mutations);\r\n    }\r\n    mutations.push(record);\r\n}\r\nfunction onChildChange(mutations, observer) {\r\n    var binders = observer.binders;\r\n    var bindersLength = binders.length;\r\n    var groupedMutations = new Map();\r\n    for (var i = 0, ii = mutations.length; i < ii; ++i) {\r\n        var record = mutations[i];\r\n        var added = record.addedNodes;\r\n        var removed = record.removedNodes;\r\n        for (var j = 0, jj = removed.length; j < jj; ++j) {\r\n            var node = removed[j];\r\n            if (node.nodeType === 1) {\r\n                for (var k = 0; k < bindersLength; ++k) {\r\n                    var binder = binders[k];\r\n                    if (binder.onRemove(node)) {\r\n                        trackMutation(groupedMutations, binder, record);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        for (var j = 0, jj = added.length; j < jj; ++j) {\r\n            var node = added[j];\r\n            if (node.nodeType === 1) {\r\n                for (var k = 0; k < bindersLength; ++k) {\r\n                    var binder = binders[k];\r\n                    if (binder.onAdd(node)) {\r\n                        trackMutation(groupedMutations, binder, record);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    groupedMutations.forEach(function (mutationRecords, binder) {\r\n        if (binder.isBound && binder.changeHandler !== null) {\r\n            binder.viewModel[binder.changeHandler](mutationRecords);\r\n        }\r\n    });\r\n}\r\nvar ChildObserverBinder = (function () {\r\n    function ChildObserverBinder(selector, viewHost, property, viewModel, controller, changeHandler, all) {\r\n        this.selector = selector;\r\n        this.viewHost = viewHost;\r\n        this.property = property;\r\n        this.viewModel = viewModel;\r\n        this.controller = controller;\r\n        this.changeHandler = changeHandler in viewModel ? changeHandler : null;\r\n        this.usesShadowDOM = controller.behavior.usesShadowDOM;\r\n        this.all = all;\r\n        if (!this.usesShadowDOM && controller.view && controller.view.contentView) {\r\n            this.contentView = controller.view.contentView;\r\n        }\r\n        else {\r\n            this.contentView = null;\r\n        }\r\n        this.source = null;\r\n        this.isBound = false;\r\n    }\r\n    ChildObserverBinder.prototype.matches = function (element) {\r\n        if (element.matches(this.selector)) {\r\n            if (this.contentView === null) {\r\n                return true;\r\n            }\r\n            var contentView = this.contentView;\r\n            var assignedSlot = element.auAssignedSlot;\r\n            if (assignedSlot && assignedSlot.projectFromAnchors) {\r\n                var anchors = assignedSlot.projectFromAnchors;\r\n                for (var i = 0, ii = anchors.length; i < ii; ++i) {\r\n                    if (anchors[i].auOwnerView === contentView) {\r\n                        return true;\r\n                    }\r\n                }\r\n                return false;\r\n            }\r\n            return element.auOwnerView === contentView;\r\n        }\r\n        return false;\r\n    };\r\n    ChildObserverBinder.prototype.bind = function (source) {\r\n        if (this.isBound) {\r\n            if (this.source === source) {\r\n                return;\r\n            }\r\n            this.source = source;\r\n        }\r\n        this.isBound = true;\r\n        var viewHost = this.viewHost;\r\n        var viewModel = this.viewModel;\r\n        var observer = viewHost.__childObserver__;\r\n        if (!observer) {\r\n            observer = viewHost.__childObserver__ = DOM.createMutationObserver(onChildChange);\r\n            var options = {\r\n                childList: true,\r\n                subtree: !this.usesShadowDOM\r\n            };\r\n            observer.observe(viewHost, options);\r\n            observer.binders = [];\r\n        }\r\n        observer.binders.push(this);\r\n        if (this.usesShadowDOM) {\r\n            var current = viewHost.firstElementChild;\r\n            if (this.all) {\r\n                var items = viewModel[this.property];\r\n                if (!items) {\r\n                    items = viewModel[this.property] = [];\r\n                }\r\n                else {\r\n                    items.splice(0);\r\n                }\r\n                while (current) {\r\n                    if (this.matches(current)) {\r\n                        items.push(current.au && current.au.controller ? current.au.controller.viewModel : current);\r\n                    }\r\n                    current = current.nextElementSibling;\r\n                }\r\n                if (this.changeHandler !== null) {\r\n                    this.viewModel[this.changeHandler](noMutations);\r\n                }\r\n            }\r\n            else {\r\n                while (current) {\r\n                    if (this.matches(current)) {\r\n                        var value = current.au && current.au.controller ? current.au.controller.viewModel : current;\r\n                        this.viewModel[this.property] = value;\r\n                        if (this.changeHandler !== null) {\r\n                            this.viewModel[this.changeHandler](value);\r\n                        }\r\n                        break;\r\n                    }\r\n                    current = current.nextElementSibling;\r\n                }\r\n            }\r\n        }\r\n    };\r\n    ChildObserverBinder.prototype.onRemove = function (element) {\r\n        if (this.matches(element)) {\r\n            var value = element.au && element.au.controller ? element.au.controller.viewModel : element;\r\n            if (this.all) {\r\n                var items = (this.viewModel[this.property] || (this.viewModel[this.property] = []));\r\n                var index = items.indexOf(value);\r\n                if (index !== -1) {\r\n                    items.splice(index, 1);\r\n                }\r\n                return true;\r\n            }\r\n            var currentValue = this.viewModel[this.property];\r\n            if (currentValue === value) {\r\n                this.viewModel[this.property] = null;\r\n                if (this.isBound && this.changeHandler !== null) {\r\n                    this.viewModel[this.changeHandler](value);\r\n                }\r\n            }\r\n        }\r\n        return false;\r\n    };\r\n    ChildObserverBinder.prototype.onAdd = function (element) {\r\n        if (this.matches(element)) {\r\n            var value = element.au && element.au.controller ? element.au.controller.viewModel : element;\r\n            if (this.all) {\r\n                var items = (this.viewModel[this.property] || (this.viewModel[this.property] = []));\r\n                if (this.selector === '*') {\r\n                    items.push(value);\r\n                    return true;\r\n                }\r\n                var index = 0;\r\n                var prev = element.previousElementSibling;\r\n                while (prev) {\r\n                    if (this.matches(prev)) {\r\n                        index++;\r\n                    }\r\n                    prev = prev.previousElementSibling;\r\n                }\r\n                items.splice(index, 0, value);\r\n                return true;\r\n            }\r\n            this.viewModel[this.property] = value;\r\n            if (this.isBound && this.changeHandler !== null) {\r\n                this.viewModel[this.changeHandler](value);\r\n            }\r\n        }\r\n        return false;\r\n    };\r\n    ChildObserverBinder.prototype.unbind = function () {\r\n        if (!this.isBound) {\r\n            return;\r\n        }\r\n        this.isBound = false;\r\n        this.source = null;\r\n        var childObserver = this.viewHost.__childObserver__;\r\n        if (childObserver) {\r\n            var binders = childObserver.binders;\r\n            if (binders && binders.length) {\r\n                var idx = binders.indexOf(this);\r\n                if (idx !== -1) {\r\n                    binders.splice(idx, 1);\r\n                }\r\n                if (binders.length === 0) {\r\n                    childObserver.disconnect();\r\n                    this.viewHost.__childObserver__ = null;\r\n                }\r\n            }\r\n            if (this.usesShadowDOM) {\r\n                this.viewModel[this.property] = null;\r\n            }\r\n        }\r\n    };\r\n    return ChildObserverBinder;\r\n}());\n\nvar ElementConfigResource = (function () {\r\n    function ElementConfigResource() {\r\n    }\r\n    ElementConfigResource.prototype.initialize = function (container, target) { };\r\n    ElementConfigResource.prototype.register = function (registry, name) { };\r\n    ElementConfigResource.prototype.load = function (container, target) {\r\n        var config = new target();\r\n        var eventManager = container.get(EventManager);\r\n        eventManager.registerElementConfig(config);\r\n    };\r\n    return ElementConfigResource;\r\n}());\n\nfunction resource(instanceOrConfig) {\r\n    return function (target) {\r\n        var isConfig = typeof instanceOrConfig === 'string' || Object.getPrototypeOf(instanceOrConfig) === Object.prototype;\r\n        if (isConfig) {\r\n            target.$resource = instanceOrConfig;\r\n        }\r\n        else {\r\n            metadata.define(metadata.resource, instanceOrConfig, target);\r\n        }\r\n    };\r\n}\r\nfunction behavior(override) {\r\n    return function (target) {\r\n        if (override instanceof HtmlBehaviorResource) {\r\n            metadata.define(metadata.resource, override, target);\r\n        }\r\n        else {\r\n            var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, target);\r\n            Object.assign(r, override);\r\n        }\r\n    };\r\n}\r\nfunction customElement(name) {\r\n    return function (target) {\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, target);\r\n        r.elementName = validateBehaviorName(name, 'custom element');\r\n    };\r\n}\r\nfunction customAttribute(name, defaultBindingMode, aliases) {\r\n    return function (target) {\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, target);\r\n        r.attributeName = validateBehaviorName(name, 'custom attribute');\r\n        r.attributeDefaultBindingMode = defaultBindingMode;\r\n        r.aliases = aliases;\r\n    };\r\n}\r\nfunction templateController(target) {\r\n    var deco = function (t) {\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\r\n        r.liftsContent = true;\r\n    };\r\n    return target ? deco(target) : deco;\r\n}\r\nfunction bindable(nameOrConfigOrTarget, key, descriptor) {\r\n    var deco = function (target, key2, descriptor2) {\r\n        var actualTarget = key2 ? target.constructor : target;\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, actualTarget);\r\n        var prop;\r\n        if (key2) {\r\n            nameOrConfigOrTarget = nameOrConfigOrTarget || {};\r\n            nameOrConfigOrTarget.name = key2;\r\n        }\r\n        prop = new BindableProperty(nameOrConfigOrTarget);\r\n        return prop.registerWith(actualTarget, r, descriptor2);\r\n    };\r\n    if (!nameOrConfigOrTarget) {\r\n        return deco;\r\n    }\r\n    if (key) {\r\n        var target = nameOrConfigOrTarget;\r\n        nameOrConfigOrTarget = null;\r\n        return deco(target, key, descriptor);\r\n    }\r\n    return deco;\r\n}\r\nfunction dynamicOptions(target) {\r\n    var deco = function (t) {\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\r\n        r.hasDynamicOptions = true;\r\n    };\r\n    return target ? deco(target) : deco;\r\n}\r\nvar defaultShadowDOMOptions = { mode: 'open' };\r\nfunction useShadowDOM(targetOrOptions) {\r\n    var options = typeof targetOrOptions === 'function' || !targetOrOptions\r\n        ? defaultShadowDOMOptions\r\n        : targetOrOptions;\r\n    var deco = function (t) {\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\r\n        r.targetShadowDOM = true;\r\n        r.shadowDOMOptions = options;\r\n    };\r\n    return typeof targetOrOptions === 'function' ? deco(targetOrOptions) : deco;\r\n}\r\nfunction processAttributes(processor) {\r\n    return function (t) {\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\r\n        r.processAttributes = function (compiler, resources, node, attributes, elementInstruction) {\r\n            try {\r\n                processor(compiler, resources, node, attributes, elementInstruction);\r\n            }\r\n            catch (error) {\r\n                LogManager.getLogger('templating').error(error);\r\n            }\r\n        };\r\n    };\r\n}\r\nfunction doNotProcessContent() { return false; }\r\nfunction processContent(processor) {\r\n    return function (t) {\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\r\n        r.processContent = processor ? function (compiler, resources, node, instruction) {\r\n            try {\r\n                return processor(compiler, resources, node, instruction);\r\n            }\r\n            catch (error) {\r\n                LogManager.getLogger('templating').error(error);\r\n                return false;\r\n            }\r\n        } : doNotProcessContent;\r\n    };\r\n}\r\nfunction containerless(target) {\r\n    var deco = function (t) {\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\r\n        r.containerless = true;\r\n    };\r\n    return target ? deco(target) : deco;\r\n}\r\nfunction useViewStrategy(strategy) {\r\n    return function (target) {\r\n        metadata.define(ViewLocator.viewStrategyMetadataKey, strategy, target);\r\n    };\r\n}\r\nfunction useView(path) {\r\n    return useViewStrategy(new RelativeViewStrategy(path));\r\n}\r\nfunction inlineView(markup, dependencies, dependencyBaseUrl) {\r\n    return useViewStrategy(new InlineViewStrategy(markup, dependencies, dependencyBaseUrl));\r\n}\r\nfunction noView(targetOrDependencies, dependencyBaseUrl) {\r\n    var target;\r\n    var dependencies;\r\n    if (typeof targetOrDependencies === 'function') {\r\n        target = targetOrDependencies;\r\n    }\r\n    else {\r\n        dependencies = targetOrDependencies;\r\n        target = undefined;\r\n    }\r\n    var deco = function (t) {\r\n        metadata.define(ViewLocator.viewStrategyMetadataKey, new NoViewStrategy(dependencies, dependencyBaseUrl), t);\r\n    };\r\n    return target ? deco(target) : deco;\r\n}\r\nfunction view(templateOrConfig) {\r\n    return function (target) {\r\n        target.$view = templateOrConfig;\r\n    };\r\n}\r\nfunction elementConfig(target) {\r\n    var deco = function (t) {\r\n        metadata.define(metadata.resource, new ElementConfigResource(), t);\r\n    };\r\n    return target ? deco(target) : deco;\r\n}\r\nfunction viewResources() {\r\n    var resources = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        resources[_i] = arguments[_i];\r\n    }\r\n    return function (target) {\r\n        metadata.define(ViewEngine.viewModelRequireMetadataKey, resources, target);\r\n    };\r\n}\n\nvar TemplatingEngine = (function () {\r\n    function TemplatingEngine(container, moduleAnalyzer, viewCompiler, compositionEngine) {\r\n        this._container = container;\r\n        this._moduleAnalyzer = moduleAnalyzer;\r\n        this._viewCompiler = viewCompiler;\r\n        this._compositionEngine = compositionEngine;\r\n        container.registerInstance(Animator, Animator.instance = new Animator());\r\n    }\r\n    TemplatingEngine.prototype.configureAnimator = function (animator) {\r\n        this._container.unregister(Animator);\r\n        this._container.registerInstance(Animator, Animator.instance = animator);\r\n    };\r\n    TemplatingEngine.prototype.compose = function (context) {\r\n        return this._compositionEngine.compose(context);\r\n    };\r\n    TemplatingEngine.prototype.enhance = function (instruction) {\r\n        if (instruction instanceof DOM.Element) {\r\n            instruction = { element: instruction };\r\n        }\r\n        var compilerInstructions = { letExpressions: [] };\r\n        var resources = instruction.resources || this._container.get(ViewResources);\r\n        this._viewCompiler._compileNode(instruction.element, resources, compilerInstructions, instruction.element.parentNode, 'root', true);\r\n        var factory = new ViewFactory(instruction.element, compilerInstructions, resources);\r\n        var container = instruction.container || this._container.createChild();\r\n        var view = factory.create(container, BehaviorInstruction.enhance());\r\n        view.bind(instruction.bindingContext || {}, instruction.overrideContext);\r\n        view.firstChild = view.lastChild = view.fragment;\r\n        view.fragment = DOM.createDocumentFragment();\r\n        view.attached();\r\n        return view;\r\n    };\r\n    TemplatingEngine.inject = [Container, ModuleAnalyzer, ViewCompiler, CompositionEngine];\r\n    return TemplatingEngine;\r\n}());\n\nexport { Animator, BehaviorInstruction, BehaviorPropertyObserver, BindableProperty, BindingLanguage, BoundViewFactory, CompositionEngine, CompositionTransaction, CompositionTransactionNotifier, CompositionTransactionOwnershipToken, Controller, ConventionalViewStrategy, ElementConfigResource, ElementEvents, HtmlBehaviorResource, InlineViewStrategy, ModuleAnalyzer, NoViewStrategy, PassThroughSlot, RelativeViewStrategy, ResourceDescription, ResourceLoadContext, ResourceModule, ShadowDOM, ShadowSlot, SlotCustomAttribute, StaticViewStrategy, SwapStrategies, TargetInstruction, TemplateRegistryViewStrategy, TemplatingEngine, View, ViewCompileInstruction, ViewCompiler, ViewEngine, ViewEngineHooksResource, ViewFactory, ViewLocator, ViewResources, ViewSlot, _hyphenate, _isAllWhitespace, animationEvent, behavior, bindable, child, children, containerless, customAttribute, customElement, dynamicOptions, elementConfig, inlineView, noView, processAttributes, processContent, resource, templateController, useShadowDOM, useView, useViewStrategy, validateBehaviorName, view, viewEngineHooks, viewResources, viewStrategy };\n//# sourceMappingURL=aurelia-templating.js.map\n"],"sourceRoot":""}