{"version":3,"file":"ractive.js","sources":["../src/Ractive.js","../src/Ractive/static/findPlugin.js","../src/Ractive/static/keypaths.js","../src/extend/_macro.js","../src/extend/_extend.js","../src/Ractive/static/use.js","../src/Ractive/static/sharedGet.js","../src/Ractive/static/sharedSet.js","../src/Ractive/static/styles.js","../src/Ractive/static/styleGet.js","../src/Ractive/static/isInstance.js","../src/Ractive/prototype.js","../src/Ractive/prototype/use.js","../src/Ractive/prototype/updateModel.js","../src/Ractive/prototype/unshift.js","../src/Ractive/prototype/unrender.js","../src/Ractive/prototype/unlink.js","../src/Ractive/prototype/transition.js","../src/Ractive/prototype/toText.js","../src/Ractive/prototype/toHTML.js","../src/Ractive/prototype/toCSS.js","../src/Ractive/prototype/toggle.js","../src/Ractive/prototype/subtract.js","../src/Ractive/prototype/splice.js","../src/Ractive/prototype/sort.js","../src/Ractive/prototype/shift.js","../src/Ractive/prototype/set.js","../src/Ractive/prototype/reverse.js","../src/Ractive/prototype/resetTemplate.js","../src/Ractive/prototype/resetPartial.js","../src/Ractive/prototype/reset.js","../src/Ractive/prototype/render.js","../src/Ractive/render.js","../src/Ractive/initialise.js","../src/view/Fragment.js","../src/view/helpers/processItems.js","../src/view/items/createItem.js","../src/view/items/Await.js","../src/view/items/asyncProxy.js","../src/view/items/component/getComponentConstructor.js","../src/view/items/Triple.js","../src/view/items/triple/insertHtml.js","../src/view/items/element/Transition.js","../src/view/items/element/transitions/createTransitions.js","../src/view/items/element/transitions/hyphenate.js","../src/view/items/element/transitions/prefix.js","../src/config/visibility.js","../src/view/items/Text.js","../src/view/items/element/specials/Textarea.js","../src/view/items/element/specials/Select.js","../src/view/items/Section.js","../src/view/RepeatedFragment.js","../src/model/specials/KeyModel.js","../src/view/items/Partial.js","../src/view/items/partial/getPartialTemplate.js","../src/view/items/element/specials/Option.js","../src/view/items/component/Mapping.js","../src/utils/parseJSON.js","../src/view/items/element/specials/Input.js","../src/view/items/Interpolator.js","../src/view/items/shared/Mustache.js","../src/view/items/shared/progressiveText.js","../src/view/items/shared/EventDirective.js","../src/view/items/component/RactiveEvent.js","../src/view/items/element/ElementEvents.js","../src/view/items/element/specials/Form.js","../src/view/items/Element.js","../src/view/items/element/binding/selectBinding.js","../src/view/items/element/binding/SingleSelectBinding.js","../src/view/items/element/binding/RadioNameBinding.js","../src/view/items/element/binding/RadioBinding.js","../src/view/items/element/binding/NumericBinding.js","../src/view/items/element/binding/MultipleSelectBinding.js","../src/utils/getSelectedOptions.js","../src/view/items/element/binding/FileBinding.js","../src/view/items/element/binding/GenericBinding.js","../src/view/items/element/binding/ContentEditableBinding.js","../src/view/items/element/binding/CheckboxNameBinding.js","../src/view/items/element/binding/getBindingGroup.js","../src/view/items/element/binding/CheckboxBinding.js","../src/view/items/element/binding/handleDomEvent.js","../src/view/items/element/binding/Binding.js","../src/view/items/Doctype.js","../src/view/items/element/Decorator.js","../src/view/items/shared/directiveArgs.js","../src/view/items/Component.js","../src/Ractive/construct.js","../src/Ractive/helpers/subscribe.js","../src/model/RootModel.js","../src/model/specials/RactiveModel.js","../src/Ractive/prototype/teardown.js","../src/view/items/Comment.js","../src/view/items/element/BindingFlag.js","../src/view/items/element/Attribute.js","../src/view/items/element/ConditionalAttribute.js","../src/view/items/element/attribute/propertyNames.js","../src/view/items/element/attribute/getUpdateDelegate.js","../src/view/helpers/specialAttrs.js","../src/view/items/Alias.js","../src/view/resolvers/resolve.js","../src/view/resolvers/ReferenceExpressionProxy.js","../src/view/resolvers/ExpressionProxy.js","../src/model/Computation.js","../src/model/ComputationChild.js","../src/view/items/shared/Item.js","../src/Ractive/config/config.js","../src/Ractive/config/deprecate.js","../src/Ractive/config/wrapPrototypeMethod.js","../src/Ractive/config/registries.js","../src/Ractive/config/custom/template.js","../src/Ractive/config/custom/data.js","../src/Ractive/config/custom/css/css.js","../src/model/specials/CSSModel.js","../src/Ractive/static/styleSet.js","../src/utils/id.js","../src/Ractive/config/custom/css/transform.js","../src/utils/cleanCss.js","../src/Ractive/config/custom/adapt.js","../src/global/css.js","../src/Ractive/prototype/readLink.js","../src/Ractive/prototype/push.js","../src/Ractive/prototype/pop.js","../src/Ractive/prototype/once.js","../src/Ractive/prototype/on.js","../src/Ractive/prototype/off.js","../src/Ractive/prototype/shared/notEmptyString.js","../src/Ractive/prototype/shared/trim.js","../src/Ractive/prototype/observeOnce.js","../src/Ractive/prototype/observe.js","../src/Ractive/prototype/observe/Array.js","../src/Ractive/prototype/observe/Pattern.js","../src/Ractive/prototype/observe/Observer.js","../src/Ractive/prototype/link.js","../src/Ractive/prototype/insert.js","../src/utils/dom.js","../src/config/namespaces.js","../src/Ractive/prototype/getContext.js","../src/Ractive/static/getContext.js","../src/Ractive/prototype/get.js","../src/Ractive/prototype/fire.js","../src/shared/Context.js","../src/Ractive/prototype/update.js","../src/Ractive/prototype/shared/makeArrayMethod.js","../src/shared/getNewIndices.js","../src/view/items/shared/findElement.js","../src/Ractive/prototype/findParent.js","../src/Ractive/prototype/findContainer.js","../src/Ractive/prototype/findComponent.js","../src/Ractive/prototype/findAllComponents.js","../src/Ractive/prototype/findAll.js","../src/Ractive/prototype/find.js","../src/Ractive/prototype/detachChild.js","../src/Ractive/prototype/detach.js","../src/Ractive/prototype/compute.js","../src/Ractive/prototype/attachChild.js","../src/shared/anchors.js","../src/events/Hook.js","../src/events/fireEvent.js","../src/events/eventStack.js","../src/Ractive/prototype/animate.js","../src/Ractive/prototype/add.js","../src/Ractive/prototype/shared/add.js","../src/shared/set.js","../src/shared/getRactiveContext.js","../src/view/resolvers/resolveReference.js","../src/model/specials/SharedModel.js","../src/model/Model.js","../src/model/helpers/getPrefixer.js","../src/shared/Ticker.js","../src/global/runloop.js","../src/global/TransitionManager.js","../src/Ractive/helpers/getComputationSignature.js","../src/Ractive/config/runtime-parser.js","../src/parse/_parse.js","../src/Ractive/shared.js","../src/parse/utils/insertExpressions.js","../src/parse/converters/readTemplate.js","../src/parse/converters/readPartialDefinitionSection.js","../src/parse/converters/readText.js","../src/parse/converters/readElement.js","../src/utils/hyphenateCamel.js","../src/parse/converters/element/readClosingTag.js","../src/parse/utils/cleanup.js","../src/parse/utils/trimWhitespace.js","../src/parse/utils/stripStandalones.js","../src/parse/converters/readHtmlComment.js","../src/parse/converters/mustache/readSection.js","../src/parse/converters/mustache/handlebarsBlockCodes.js","../src/parse/converters/mustache/section/readInlineBlock.js","../src/parse/converters/mustache/section/readClosing.js","../src/parse/converters/mustache/readInterpolator.js","../src/parse/converters/mustache/readMustacheComment.js","../src/parse/converters/mustache/readPartial.js","../src/parse/converters/mustache/readAliases.js","../src/parse/converters/mustache/readUnescaped.js","../src/parse/converters/mustache/readTriple.js","../src/parse/converters/readMustache.js","../src/parse/converters/element/readAttribute.js","../src/parse/utils/refineExpression.js","../src/parse/utils/flattenExpression.js","../src/parse/converters/readExpressionOrReference.js","../src/parse/converters/expressions/shared/readExpressionList.js","../src/parse/converters/readExpression.js","../src/parse/converters/expressions/readConditional.js","../src/parse/converters/expressions/readLogicalOr.js","../src/parse/converters/expressions/readTypeof.js","../src/parse/converters/expressions/readMemberOrInvocation.js","../src/parse/converters/expressions/shared/readRefinement.js","../src/parse/converters/expressions/readPrimary.js","../src/parse/converters/expressions/primary/readBracketedExpression.js","../src/parse/converters/expressions/primary/readReference.js","../src/parse/converters/expressions/primary/readLiteral.js","../src/parse/converters/expressions/primary/literal/readArrayLiteral.js","../src/parse/converters/expressions/primary/literal/readObjectLiteral.js","../src/parse/converters/expressions/primary/literal/objectLiteral/keyValuePairs.js","../src/parse/converters/expressions/primary/literal/objectLiteral/keyValuePair.js","../src/parse/converters/expressions/shared/readKey.js","../src/parse/converters/expressions/shared/patterns.js","../src/parse/converters/expressions/primary/literal/readTemplateStringLiteral.js","../src/parse/converters/expressions/primary/literal/readStringLiteral.js","../src/parse/converters/expressions/primary/literal/stringLiteral/makeQuotedStringMatcher.js","../src/parse/converters/expressions/primary/literal/readBooleanLiteral.js","../src/parse/converters/expressions/primary/literal/readNumberLiteral.js","../src/parse/converters/expressions/shared/errors.js","../src/utils/html.js","../src/parse/converters/utils/getLowestIndex.js","../src/utils/escapeRegExp.js","../src/parse/converters/expressions/primary/literal/readRegexpLiteral.js","../src/parse/converters/mustache/readDelimiterChange.js","../src/config/types.js","../src/parse/Parser.js","../src/config/template.js","../src/shared/getFunction.js","../src/parse/utils/createFunction.js","../src/model/LinkModel.js","../src/shared/rebind.js","../src/shared/methodCallers.js","../src/global/capture.js","../src/model/ModelBase.js","../src/utils/bind.js","../src/utils/array.js","../src/shared/keypaths.js","../src/Ractive/static/interpolators.js","../src/shared/interpolate.js","../src/shared/registry.js","../src/config/errors.js","../src/utils/log.js","../src/utils/noop.js","../src/config/environment.js","../src/Ractive/static/easing.js","../src/Ractive/config/defaults.js","../src/polyfills/requestAnimationFrame.js","../src/polyfills/Promise.js","../src/polyfills/performance.now.js","../src/polyfills/node.contains.js","../src/polyfills/array.find.js","../src/utils/is.js","../src/utils/object.js","../src/polyfills/Object.assign.js"],"sourcesContent":["import './polyfills/Object.assign';\nimport './polyfills/array.find';\nimport './polyfills/node.contains';\nimport './polyfills/performance.now';\nimport './polyfills/Promise';\nimport './polyfills/requestAnimationFrame';\n\nimport defaults from './Ractive/config/defaults';\nimport easing from './Ractive/static/easing';\nimport interpolators from './Ractive/static/interpolators';\nimport { svg, win } from './config/environment';\nimport proto from './Ractive/prototype';\nimport { extend, extendWith } from './extend/_extend';\nimport macro from './extend/_macro';\nimport parse from './parse/_parse';\nimport getContext from './Ractive/static/getContext';\nimport isInstance from './Ractive/static/isInstance';\nimport use from './Ractive/static/use';\nimport construct from './Ractive/construct';\nimport initialise from './Ractive/initialise';\nimport { getCSS } from './global/css';\nimport { escapeKey, unescapeKey, normalise } from './shared/keypaths';\nimport { joinKeys, splitKeypath } from './Ractive/static/keypaths';\nimport shared from './Ractive/shared';\nimport { findPlugin } from './Ractive/static/findPlugin';\nimport parseJSON from './utils/parseJSON';\nimport CSSModel from './model/specials/CSSModel';\nimport { data as sharedData } from './model/specials/SharedModel';\nimport { extern } from './shared/getRactiveContext';\nimport { warn } from 'utils/log';\n\nimport { assign, defineProperty, defineProperties } from 'utils/object';\n\nexport default function Ractive(options) {\n  if (!(this instanceof Ractive)) return new Ractive(options);\n\n  construct(this, options || {});\n  initialise(this, options || {}, {});\n}\n\n// check to see if we're being asked to force Ractive as a global for some weird environments\nif (win && !win.Ractive) {\n  let opts = '';\n  const script =\n    document.currentScript ||\n    /* istanbul ignore next */ document.querySelector('script[data-ractive-options]');\n\n  if (script) opts = script.getAttribute('data-ractive-options') || '';\n\n  /* istanbul ignore next */\n  if (~opts.indexOf('ForceGlobal')) win.Ractive = Ractive;\n} else if (win) {\n  warn(`Ractive already appears to be loaded while loading BUILD_PLACEHOLDER_VERSION.`);\n}\n\nassign(Ractive.prototype, proto, defaults);\nRactive.prototype.constructor = Ractive;\n\n// alias prototype as `defaults`\nRactive.defaults = Ractive.prototype;\n\n// share defaults with the parser\nshared.defaults = Ractive.defaults;\nshared.Ractive = Ractive;\n\n// static properties\ndefineProperties(Ractive, {\n  // debug flag\n  DEBUG: { writable: true, value: true },\n  DEBUG_PROMISES: { writable: true, value: true },\n\n  // static methods:\n  extend: { value: extend },\n  extendWith: { value: extendWith },\n  escapeKey: { value: escapeKey },\n  evalObjectString: { value: parseJSON },\n  findPlugin: { value: findPlugin },\n  getContext: { value: getContext },\n  getCSS: { value: getCSS },\n  isInstance: { value: isInstance },\n  joinKeys: { value: joinKeys },\n  macro: { value: macro },\n  normaliseKeypath: { value: normalise },\n  parse: { value: parse },\n  splitKeypath: { value: splitKeypath },\n  // sharedSet and styleSet are in _extend because circular refs\n  unescapeKey: { value: unescapeKey },\n  use: { value: use },\n\n  // support\n  enhance: { writable: true, value: false },\n  svg: { value: svg },\n\n  // version\n  VERSION: { value: 'BUILD_PLACEHOLDER_VERSION' },\n\n  // plugins\n  adaptors: { writable: true, value: {} },\n  components: { writable: true, value: {} },\n  decorators: { writable: true, value: {} },\n  easing: { writable: true, value: easing },\n  events: { writable: true, value: {} },\n  extensions: { value: [] },\n  helpers: { writable: true, value: defaults.helpers },\n  interpolators: { writable: true, value: interpolators },\n  partials: { writable: true, value: {} },\n  transitions: { writable: true, value: {} },\n\n  // CSS variables\n  cssData: { configurable: true, value: {} },\n\n  // access to @shared without an instance\n  sharedData: { value: sharedData },\n\n  // for getting the source Ractive lib from a constructor\n  Ractive: { value: Ractive },\n\n  // to allow extending contexts\n  Context: { value: extern.Context.prototype }\n});\n\n// cssData must already be in place\ndefineProperty(Ractive, '_cssModel', {\n  configurable: true,\n  value: new CSSModel(Ractive)\n});\n\ndefineProperty(Ractive.prototype, 'rendered', {\n  get() {\n    return this.fragment && this.fragment.rendered;\n  }\n});\n","import { findInViewHierarchy } from 'shared/registry';\n\nexport function findPlugin(name, type, instance) {\n  return findInViewHierarchy(type, instance, name);\n}\n","import { escapeKey, splitKeypath as splitKeypathI, unescapeKey } from 'shared/keypaths';\n\nexport function joinKeys(...keys) {\n  return keys.map(escapeKey).join('.');\n}\n\nexport function splitKeypath(keypath) {\n  return splitKeypathI(keypath).map(unescapeKey);\n}\n","import styleGet from '../Ractive/static/styleGet';\nimport styleSet from '../Ractive/static/styleSet';\nimport CSSModel from 'src/model/specials/CSSModel';\nimport { assign, create, defineProperties, defineProperty } from 'utils/object';\nimport { isFunction } from 'utils/is';\n\nimport { initCSS } from 'src/Ractive/config/custom/css/css';\n\nexport default function macro(fn, opts) {\n  if (!isFunction(fn)) throw new Error(`The macro must be a function`);\n\n  assign(fn, opts);\n\n  defineProperties(fn, {\n    extensions: { value: [] },\n    _cssIds: { value: [] },\n    cssData: { value: assign(create(this.cssData), fn.cssData || {}) },\n\n    styleGet: { value: styleGet.bind(fn) },\n    styleSet: { value: styleSet.bind(fn) }\n  });\n\n  defineProperty(fn, '_cssModel', { value: new CSSModel(fn) });\n\n  if (fn.css) initCSS(fn, fn, fn);\n\n  this.extensions.push(fn);\n\n  return fn;\n}\n","import config from '../Ractive/config/config';\nimport dataConfigurator from '../Ractive/config/custom/data';\nimport construct from '../Ractive/construct';\nimport initialise from '../Ractive/initialise';\nimport Ractive from '../Ractive';\nimport isInstance from '../Ractive/static/isInstance';\nimport styleSet from '../Ractive/static/styleSet';\nimport styleGet from '../Ractive/static/styleGet';\nimport { addStyle, hasStyle } from '../Ractive/static/styles';\nimport sharedSet from '../Ractive/static/sharedSet';\nimport sharedGet from '../Ractive/static/sharedGet';\nimport use from '../Ractive/static/use';\nimport { create, defineProperties, toPairs, defineProperty } from 'utils/object';\nimport { isArray, isFunction } from 'utils/is';\n\nconst callsSuper = /super\\s*\\(|\\.call\\s*\\(\\s*this/;\n\nexport function extend(...options) {\n  if (!options.length) {\n    return extendOne(this);\n  } else {\n    return options.reduce(extendOne, this);\n  }\n}\n\nexport function extendWith(Class, options = {}) {\n  return extendOne(this, options, Class);\n}\n\nfunction extendOne(Parent, options = {}, Target) {\n  let proto;\n  let Child = isFunction(Target) && Target;\n\n  if (options.prototype instanceof Ractive) {\n    throw new Error(`Ractive no longer supports multiple inheritance.`);\n  }\n\n  if (Child) {\n    if (!(Child.prototype instanceof Parent)) {\n      throw new Error(\n        `Only classes that inherit the appropriate prototype may be used with extend`\n      );\n    }\n    if (!callsSuper.test(Child.toString())) {\n      throw new Error(`Only classes that call super in their constructor may be used with extend`);\n    }\n\n    proto = Child.prototype;\n  } else {\n    Child = function(options) {\n      if (!(this instanceof Child)) return new Child(options);\n\n      construct(this, options || {});\n      initialise(this, options || {}, {});\n    };\n\n    proto = create(Parent.prototype);\n    proto.constructor = Child;\n\n    Child.prototype = proto;\n  }\n\n  // Static properties\n  defineProperties(Child, {\n    // alias prototype as defaults\n    defaults: { value: proto },\n\n    extend: { value: extend, writable: true, configurable: true },\n    extendWith: { value: extendWith, writable: true, configurable: true },\n    extensions: { value: [] },\n    use: { value: use },\n\n    isInstance: { value: isInstance },\n\n    Parent: { value: Parent },\n    Ractive: { value: Ractive },\n\n    styleGet: { value: styleGet.bind(Child), configurable: true },\n    styleSet: { value: styleSet.bind(Child), configurable: true }\n  });\n\n  // extend configuration\n  config.extend(Parent, proto, options, Child);\n\n  // store event and observer registries on the constructor when extending\n  Child._on = (Parent._on || []).concat(toPairs(options.on));\n  Child._observe = (Parent._observe || []).concat(toPairs(options.observe));\n\n  Parent.extensions.push(Child);\n\n  // attribute defs are not inherited, but they need to be stored\n  if (options.attributes) {\n    let attrs;\n\n    // allow an array of optional props or an object with arrays for optional and required props\n    if (isArray(options.attributes)) {\n      attrs = { optional: options.attributes, required: [] };\n    } else {\n      attrs = options.attributes;\n    }\n\n    // make sure the requisite keys actually store arrays\n    if (!isArray(attrs.required)) attrs.required = [];\n    if (!isArray(attrs.optional)) attrs.optional = [];\n\n    Child.attributes = attrs;\n  }\n\n  dataConfigurator.extend(Parent, proto, options, Child);\n\n  defineProperty(Child, 'helpers', { writable: true, value: proto.helpers });\n\n  if (isArray(options.use)) Child.use.apply(Child, options.use);\n\n  return Child;\n}\n\ndefineProperties(Ractive, {\n  sharedGet: { value: sharedGet },\n  sharedSet: { value: sharedSet },\n  styleGet: { configurable: true, value: styleGet.bind(Ractive) },\n  styleSet: { configurable: true, value: styleSet.bind(Ractive) },\n  addCSS: { configurable: false, value: addStyle.bind(Ractive) },\n  hasCSS: { configurable: false, value: hasStyle.bind(Ractive) }\n});\n","import { isFunction } from 'utils/is';\n\nexport default function use(...plugins) {\n  plugins.forEach(p => {\n    isFunction(p) &&\n      p({\n        proto: this.prototype,\n        Ractive: this.Ractive,\n        instance: this\n      });\n  });\n  return this;\n}\n","import SharedModel from '../../model/specials/SharedModel';\nimport { splitKeypath } from 'shared/keypaths';\n\nexport default function sharedGet(keypath, opts) {\n  return SharedModel.joinAll(splitKeypath(keypath)).get(true, opts);\n}\n","import { build, set } from '../../shared/set';\nimport SharedModel from '../../model/specials/SharedModel';\nimport { isObjectType } from 'utils/is';\n\nexport default function sharedSet(keypath, value, options) {\n  const opts = isObjectType(keypath) ? value : options;\n  const model = SharedModel;\n\n  return set(build({ viewmodel: model }, keypath, value, true), opts);\n}\n","import { isFunction } from 'utils/is';\nimport { addCSS, applyCSS } from 'src/global/css';\nimport { recomputeCSS } from './styleSet';\n\nconst styles = [];\n\nexport function addStyle(id, css) {\n  if (styles.find(s => s.id === id))\n    throw new Error(`Extra styles with the id '${id}' have already been added.`);\n  styles.push({ id, css });\n\n  if (!this.css) {\n    Object.defineProperty(this, 'css', { configurable: false, writable: false, value: buildCSS });\n  }\n\n  if (!this._cssDef) {\n    Object.defineProperty(this, '_cssDef', {\n      configurable: true,\n      writable: false,\n      value: {\n        transform: false,\n        id: 'Ractive.addStyle'\n      }\n    });\n\n    addCSS(this._cssDef);\n  }\n\n  recomputeCSS(this);\n  applyCSS(true);\n}\n\nfunction buildCSS(data) {\n  return styles\n    .map(s => `\\n/* ---- extra style ${s.id} */\\n` + (isFunction(s.css) ? s.css(data) : s.css))\n    .join('');\n}\n\nexport function hasStyle(id) {\n  return !!styles.find(s => s.id === id);\n}\n","import { splitKeypath } from 'shared/keypaths';\n\nexport default function styleGet(keypath, opts) {\n  return this._cssModel.joinAll(splitKeypath(keypath)).get(true, opts);\n}\n","export default function isInstance(object) {\n  return object && object instanceof this;\n}\n","import add from './prototype/add';\nimport animate from './prototype/animate';\nimport attachChild from './prototype/attachChild';\nimport compute from './prototype/compute';\nimport detach from './prototype/detach';\nimport detachChild from './prototype/detachChild';\nimport find from './prototype/find';\nimport findAll from './prototype/findAll';\nimport findAllComponents from './prototype/findAllComponents';\nimport findComponent from './prototype/findComponent';\nimport findContainer from './prototype/findContainer';\nimport findParent from './prototype/findParent';\nimport fire from './prototype/fire';\nimport get from './prototype/get';\nimport getContext from './prototype/getContext';\nimport insert from './prototype/insert';\nimport link from './prototype/link';\nimport observe from './prototype/observe';\nimport observeOnce from './prototype/observeOnce';\nimport off from './prototype/off';\nimport on from './prototype/on';\nimport once from './prototype/once';\nimport pop from './prototype/pop';\nimport push from './prototype/push';\nimport readLink from './prototype/readLink';\nimport render from './prototype/render';\nimport reset from './prototype/reset';\nimport resetPartial from './prototype/resetPartial';\nimport resetTemplate from './prototype/resetTemplate';\nimport reverse from './prototype/reverse';\nimport set from './prototype/set';\nimport shift from './prototype/shift';\nimport sort from './prototype/sort';\nimport splice from './prototype/splice';\nimport subtract from './prototype/subtract';\nimport teardown from './prototype/teardown';\nimport toggle from './prototype/toggle';\nimport toCSS from './prototype/toCSS';\nimport toHTML from './prototype/toHTML';\nimport toText from './prototype/toText';\nimport transition from './prototype/transition';\nimport unlink from './prototype/unlink';\nimport unrender from './prototype/unrender';\nimport unshift from './prototype/unshift';\nimport update from './prototype/update';\nimport updateModel from './prototype/updateModel';\nimport use from './prototype/use';\n\nconst proto = {\n  add,\n  animate,\n  attachChild,\n  compute,\n  detach,\n  detachChild,\n  find,\n  findAll,\n  findAllComponents,\n  findComponent,\n  findContainer,\n  findParent,\n  fire,\n  get,\n  getContext,\n  insert,\n  link,\n  observe,\n  observeOnce,\n  off,\n  on,\n  once,\n  pop,\n  push,\n  readLink,\n  render,\n  reset,\n  resetPartial,\n  resetTemplate,\n  reverse,\n  set,\n  shift,\n  sort,\n  splice,\n  subtract,\n  teardown,\n  toggle,\n  toCSS,\n  toCss: toCSS,\n  toHTML,\n  toHtml: toHTML,\n  toText,\n  transition,\n  unlink,\n  unrender,\n  unshift,\n  update,\n  updateModel,\n  use\n};\n\nexport default proto;\n","export default function use(...plugins) {\n  plugins.forEach(p => {\n    p({\n      proto: this,\n      Ractive: this.constructor.Ractive,\n      instance: this\n    });\n  });\n  return this;\n}\n","import { splitKeypath } from 'shared/keypaths';\nimport runloop from 'src/global/runloop';\n\nexport default function Ractive$updateModel(keypath, cascade) {\n  const promise = runloop.start();\n\n  if (!keypath) {\n    this.viewmodel.updateFromBindings(true);\n  } else {\n    this.viewmodel.joinAll(splitKeypath(keypath)).updateFromBindings(cascade !== false);\n  }\n\n  runloop.end();\n\n  return promise;\n}\n","import makeArrayMethod from './shared/makeArrayMethod';\nexport default makeArrayMethod('unshift').path;\n","import hooks from 'src/events/Hook';\nimport { warnIfDebug } from 'utils/log';\nimport { removeFromArray } from 'utils/array';\nimport runloop from 'src/global/runloop';\n\nexport default function Ractive$unrender() {\n  if (!this.fragment.rendered) {\n    warnIfDebug('ractive.unrender() was called on a Ractive instance that was not rendered');\n    return Promise.resolve();\n  }\n\n  this.unrendering = true;\n  const promise = runloop.start();\n\n  hooks.unrendering.fire(this);\n\n  // If this is a component, and the component isn't marked for destruction,\n  // don't detach nodes from the DOM unnecessarily\n  const shouldDestroy =\n    !this.component ||\n    (this.component.anchor || {}).shouldDestroy ||\n    this.component.shouldDestroy ||\n    this.shouldDestroy;\n  this.fragment.unrender(shouldDestroy);\n  if (shouldDestroy) this.destroyed = true;\n\n  removeFromArray(this.el.__ractive_instances__, this);\n\n  hooks.unrender.fire(this);\n\n  runloop.end();\n  this.unrendering = false;\n\n  return promise;\n}\n","import { splitKeypath } from 'shared/keypaths';\nimport runloop from 'src/global/runloop';\n\nexport default function unlink(here) {\n  const promise = runloop.start();\n  this.viewmodel.joinAll(splitKeypath(here), { lastLink: false }).unlink();\n  runloop.end();\n  return promise;\n}\n","import runloop from 'src/global/runloop';\nimport Transition from '../../view/items/element/Transition';\nimport { fatal } from 'utils/log';\nimport { isObject } from 'utils/is';\n\nexport default function Ractive$transition(name, node, params) {\n  if (node instanceof HTMLElement) {\n    // good to go\n  } else if (isObject(node)) {\n    // omitted, use event node\n    params = node;\n  }\n\n  // if we allow query selector, then it won't work\n  // simple params like \"fast\"\n\n  // else if ( typeof node === 'string' ) {\n  // \t// query selector\n  // \tnode = this.find( node )\n  // }\n\n  node = node || this.event.node;\n\n  if (!node || !node._ractive) {\n    fatal(`No node was supplied for transition ${name}`);\n  }\n\n  params = params || {};\n  const owner = node._ractive.proxy;\n  const transition = new Transition({ owner, up: owner.up, name, params });\n  transition.bind();\n\n  const promise = runloop.start();\n  runloop.registerTransition(transition);\n  runloop.end();\n\n  promise.then(() => transition.unbind());\n  return promise;\n}\n","export default function toText() {\n  return this.fragment.toString(false);\n}\n","export default function Ractive$toHTML() {\n  return this.fragment.toString(true);\n}\n","import { getCSS } from 'src/global/css';\nimport { keys } from 'utils/object';\n\nexport default function Ractive$toCSS() {\n  const cssIds = [this.cssId, ...this.findAllComponents().map(c => c.cssId)];\n  const uniqueCssIds = keys(cssIds.reduce((ids, id) => ((ids[id] = true), ids), {}));\n  return getCSS(uniqueCssIds);\n}\n","import { badArguments } from 'config/errors';\nimport { gather, set } from 'shared/set';\nimport { isString } from 'utils/is';\n\nexport default function Ractive$toggle(keypath, options) {\n  if (!isString(keypath)) {\n    throw new TypeError(badArguments);\n  }\n\n  return set(\n    gather(this, keypath, null, options && options.isolated).map(m => [m, !m.get()]),\n    options\n  );\n}\n","import add from './shared/add';\nimport { isNumber, isObjectType } from 'utils/is';\n\nexport default function Ractive$subtract(keypath, d, options) {\n  const num = isNumber(d) ? -d : -1;\n  const opts = isObjectType(d) ? d : options;\n  return add(this, keypath, num, opts);\n}\n","import makeArrayMethod from './shared/makeArrayMethod';\nexport default makeArrayMethod('splice').path;\n","import makeArrayMethod from './shared/makeArrayMethod';\nexport default makeArrayMethod('sort').path;\n","import makeArrayMethod from './shared/makeArrayMethod';\nexport default makeArrayMethod('shift').path;\n","import { build, set } from 'shared/set';\nimport { isObjectType } from 'utils/is';\n\nexport default function Ractive$set(keypath, value, options) {\n  const ractive = this;\n\n  const opts = isObjectType(keypath) ? value : options;\n\n  return set(build(ractive, keypath, value, opts && opts.isolated), opts);\n}\n","import makeArrayMethod from './shared/makeArrayMethod';\nexport default makeArrayMethod('reverse').path;\n","import { createDocumentFragment } from 'utils/dom';\nimport Fragment from 'src/view/Fragment';\nimport runloop from 'src/global/runloop';\nimport { default as templateConfigurator } from '../config/custom/template';\n\n// TODO should resetTemplate be asynchronous? i.e. should it be a case\n// of outro, update template, intro? I reckon probably not, since that\n// could be achieved with unrender-resetTemplate-render. Also, it should\n// conceptually be similar to resetPartial, which couldn't be async\n\nexport default function Ractive$resetTemplate(template) {\n  templateConfigurator.init(null, this, { template });\n\n  const transitionsEnabled = this.transitionsEnabled;\n  this.transitionsEnabled = false;\n\n  // Is this is a component, we need to set the `shouldDestroy`\n  // flag, otherwise it will assume by default that a parent node\n  // will be detached, and therefore it doesn't need to bother\n  // detaching its own nodes\n  const component = this.component;\n  if (component) component.shouldDestroy = true;\n  this.unrender();\n  if (component) component.shouldDestroy = false;\n\n  const promise = runloop.start();\n\n  // remove existing fragment and create new one\n  this.fragment.unbind().unrender(true);\n\n  this.fragment = new Fragment({\n    template: this.template,\n    root: this,\n    owner: this\n  });\n\n  const docFrag = createDocumentFragment();\n  this.fragment.bind(this.viewmodel).render(docFrag);\n\n  // if this is a component, its el may not be valid, so find a\n  // target based on the component container\n  if (component && !component.external) {\n    this.fragment.findParentNode().insertBefore(docFrag, component.findNextNode());\n  } else {\n    this.el.insertBefore(docFrag, this.anchor);\n  }\n\n  runloop.end();\n\n  this.transitionsEnabled = transitionsEnabled;\n\n  return promise;\n}\n","import runloop from 'src/global/runloop';\nimport { PARTIAL, COMPONENT, ELEMENT } from 'config/types';\nimport { isArray } from 'utils/is';\nimport { handleChange } from 'shared/methodCallers';\n\nfunction collect(source, name, attr, dest) {\n  source.forEach(item => {\n    // queue to rerender if the item is a partial and the current name matches\n    if (item.type === PARTIAL && (item.refName === name || item.name === name)) {\n      item.inAttribute = attr;\n      dest.push(item);\n      return; // go no further\n    }\n\n    // if it has a fragment, process its items\n    if (item.fragment) {\n      collect(item.fragment.iterations || item.fragment.items, name, attr, dest);\n    } else if (isArray(item.items)) {\n      // or if it is itself a fragment, process its items\n      collect(item.items, name, attr, dest);\n    } else if (item.type === COMPONENT && item.instance) {\n      // or if it is a component, step in and process its items\n      // ...unless the partial is shadowed\n      if (item.instance.partials[name]) return;\n      collect(item.instance.fragment.items, name, attr, dest);\n    }\n\n    // if the item is an element, process its attributes too\n    if (item.type === ELEMENT) {\n      if (isArray(item.attributes)) {\n        collect(item.attributes, name, true, dest);\n      }\n    }\n  });\n}\n\nexport default function(name, partial) {\n  const collection = [];\n  collect(this.fragment.items, name, false, collection);\n\n  const promise = runloop.start();\n\n  this.partials[name] = partial;\n  collection.forEach(handleChange);\n\n  runloop.end();\n\n  return promise;\n}\n","import runloop from 'src/global/runloop';\nimport config from '../config/config';\nimport hooks from '../../events/Hook';\nimport dataConfigurator from '../config/custom/data';\nimport { isObjectType } from 'utils/is';\n\nconst shouldRerender = ['template', 'partials', 'components', 'decorators', 'events'];\n\nexport default function Ractive$reset(data) {\n  data = data || {};\n\n  if (!isObjectType(data)) {\n    throw new Error('The reset method takes either no arguments, or an object containing new data');\n  }\n\n  // TEMP need to tidy this up\n  data = dataConfigurator.init(this.constructor, this, { data });\n\n  const promise = runloop.start();\n\n  // If the root object is wrapped, try and use the wrapper's reset value\n  const wrapper = this.viewmodel.wrapper;\n  if (wrapper && wrapper.reset) {\n    if (wrapper.reset(data) === false) {\n      // reset was rejected, we need to replace the object\n      this.viewmodel.set(data);\n    }\n  } else {\n    this.viewmodel.set(data);\n  }\n\n  // reset config items and track if need to rerender\n  const changes = config.reset(this);\n  let rerender;\n\n  let i = changes.length;\n  while (i--) {\n    if (shouldRerender.indexOf(changes[i]) > -1) {\n      rerender = true;\n      break;\n    }\n  }\n\n  if (rerender) {\n    hooks.unrender.fire(this);\n    this.fragment.resetTemplate(this.template);\n    hooks.render.fire(this);\n    hooks.complete.fire(this);\n  }\n\n  runloop.end();\n\n  hooks.reset.fire(this, data);\n\n  return promise;\n}\n","import { getElement } from 'utils/dom';\nimport { toArray } from 'utils/array';\nimport { warnIfDebug } from 'utils/log';\nimport render from '../render';\nimport { teardown } from 'shared/methodCallers';\n\nexport default function Ractive$render(target, anchor) {\n  if (this.torndown) {\n    warnIfDebug('ractive.render() was called on a Ractive instance that was already torn down');\n    return Promise.resolve();\n  }\n\n  target = getElement(target) || this.el;\n\n  if (!this.append && target) {\n    // Teardown any existing instances *before* trying to set up the new one -\n    // avoids certain weird bugs\n    const others = target.__ractive_instances__;\n    if (others) others.forEach(teardown);\n\n    // make sure we are the only occupants\n    if (!this.enhance) {\n      target.innerHTML = ''; // TODO is this quicker than removeChild? Initial research inconclusive\n    }\n  }\n\n  const occupants = this.enhance ? toArray(target.childNodes) : null;\n  const promise = render(this, target, anchor, occupants);\n\n  if (occupants) {\n    while (occupants.length) target.removeChild(occupants.pop());\n  }\n\n  return promise;\n}\n","import { doc } from 'config/environment';\nimport { applyCSS } from 'src/global/css';\nimport hooks from 'src/events/Hook';\nimport { getElement } from 'utils/dom';\nimport runloop from 'src/global/runloop';\nimport { createFragment } from './initialise';\n\nexport default function render(ractive, target, anchor, occupants) {\n  // set a flag to let any transitions know that this instance is currently rendering\n  ractive.rendering = true;\n\n  const promise = runloop.start();\n  runloop.scheduleTask(() => hooks.render.fire(ractive), true);\n\n  if (ractive.fragment.rendered) {\n    throw new Error(\n      'You cannot call ractive.render() on an already rendered instance! Call ractive.unrender() first'\n    );\n  }\n\n  if (ractive.destroyed) {\n    ractive.destroyed = false;\n    ractive.fragment = createFragment(ractive).bind(ractive.viewmodel);\n  }\n\n  anchor = getElement(anchor) || ractive.anchor;\n\n  ractive.el = ractive.target = target;\n  ractive.anchor = anchor;\n\n  // ensure encapsulated CSS is up-to-date\n  if (ractive.cssId) applyCSS();\n\n  if (target) {\n    (target.__ractive_instances__ || (target.__ractive_instances__ = [])).push(ractive);\n\n    if (anchor) {\n      const docFrag = doc.createDocumentFragment();\n      ractive.fragment.render(docFrag);\n      target.insertBefore(docFrag, anchor);\n    } else {\n      ractive.fragment.render(target, occupants);\n    }\n  }\n\n  runloop.end();\n  ractive.rendering = false;\n\n  return promise.then(() => {\n    if (ractive.torndown) return;\n\n    hooks.complete.fire(ractive);\n  });\n}\n","import { logIfDebug, warnIfDebug, warnOnceIfDebug } from 'utils/log';\nimport { getElement } from 'utils/dom';\nimport { isArray } from 'utils/is';\nimport config from './config/config';\nimport Fragment from 'src/view/Fragment';\nimport hooks from 'src/events/Hook';\nimport Ractive from '../Ractive';\nimport subscribe from './helpers/subscribe';\n\nexport default function initialise(ractive, userOptions, options) {\n  // initialize settable computeds\n  const computed = ractive.viewmodel.computed;\n  if (computed) {\n    for (const k in computed) {\n      if (k in ractive.viewmodel.value && computed[k] && !computed[k].isReadonly) {\n        computed[k].set(ractive.viewmodel.value[k]);\n      }\n    }\n  }\n\n  // init config from Parent and options\n  config.init(ractive.constructor, ractive, userOptions);\n\n  hooks.config.fire(ractive);\n\n  hooks.init.begin(ractive);\n\n  const fragment = (ractive.fragment = createFragment(ractive, options));\n  if (fragment) fragment.bind(ractive.viewmodel);\n\n  hooks.init.end(ractive);\n\n  // general config done, set up observers\n  subscribe(ractive, userOptions, 'observe');\n\n  // call any passed in plugins\n  if (isArray(userOptions.use))\n    ractive.use.apply(ractive, userOptions.use.filter(p => !p.construct));\n\n  if (fragment) {\n    // render automatically ( if `el` is specified )\n    const el = (ractive.el = ractive.target = getElement(ractive.el || ractive.target));\n    if (el && !ractive.component) {\n      const promise = ractive.render(el, ractive.append);\n\n      if (Ractive.DEBUG_PROMISES) {\n        promise.catch(err => {\n          warnOnceIfDebug(\n            'Promise debugging is enabled, to help solve errors that happen asynchronously. Some browsers will log unhandled promise rejections, in which case you can safely disable promise debugging:\\n  Ractive.DEBUG_PROMISES = false;'\n          );\n          warnIfDebug('An error happened during rendering', { ractive });\n          logIfDebug(err);\n\n          throw err;\n        });\n      }\n    }\n  }\n}\n\nexport function createFragment(ractive, options = {}) {\n  if (ractive.template) {\n    const cssIds = [].concat(ractive.constructor._cssIds || [], options.cssIds || []);\n\n    return new Fragment({\n      owner: ractive,\n      template: ractive.template,\n      cssIds\n    });\n  }\n}\n","import { ELEMENT, YIELDER } from 'config/types';\nimport runloop from 'src/global/runloop';\nimport { findMap } from 'utils/array';\nimport { getContext, findParentWithContext } from 'shared/getRactiveContext';\nimport { shuffled, toEscapedString, toString } from 'shared/methodCallers';\nimport createItem from './items/createItem';\nimport processItems from './helpers/processItems';\nimport parseJSON from 'utils/parseJSON';\nimport { createDocumentFragment } from 'utils/dom';\nimport KeyModel from 'src/model/specials/KeyModel';\n\nexport default class Fragment {\n  constructor(options) {\n    this.owner = options.owner; // The item that owns this fragment - an element, section, partial, or attribute\n\n    this.isRoot = !options.owner.up;\n    this.parent = this.isRoot ? null : this.owner.up;\n    this.ractive = options.ractive || (this.isRoot ? options.owner : this.parent.ractive);\n\n    this.componentParent = this.isRoot && this.ractive.component ? this.ractive.component.up : null;\n    if (!this.isRoot || this.ractive.delegate) {\n      this.delegate = this.owner.containerFragment\n        ? this.owner.containerFragment && this.owner.containerFragment.delegate\n        : (this.componentParent && this.componentParent.delegate) ||\n          (this.parent && this.parent.delegate);\n    } else {\n      this.delegate = false;\n    }\n\n    this.context = null;\n    this.rendered = false;\n\n    // encapsulated styles should be inherited until they get applied by an element\n    if ('cssIds' in options) {\n      this.cssIds = options.cssIds && options.cssIds.length && options.cssIds;\n    } else {\n      this.cssIds = this.parent ? this.parent.cssIds : null;\n    }\n\n    this.dirty = false;\n    this.dirtyValue = true; // used for attribute values\n\n    this.template = options.template || [];\n    this.createItems();\n  }\n\n  bind(context) {\n    this.context = context;\n    const len = this.items.length;\n    for (let i = 0; i < len; i++) this.items[i].bind();\n    this.bound = true;\n\n    // in rare cases, a forced resolution (or similar) will cause the\n    // fragment to be dirty before it's even finished binding. In those\n    // cases we update immediately\n    if (this.dirty) this.update();\n\n    return this;\n  }\n\n  bubble() {\n    this.dirtyValue = true;\n\n    if (!this.dirty) {\n      this.dirty = true;\n\n      if (this.isRoot) {\n        // TODO encapsulate 'is component root, but not overall root' check?\n        if (this.ractive.component) {\n          this.ractive.component.bubble();\n        } else if (this.bound) {\n          runloop.addFragment(this);\n        }\n      } else {\n        this.owner.bubble(this.index);\n      }\n    }\n  }\n\n  createItems() {\n    // this is a hot code path\n    const max = this.template.length;\n    this.items = [];\n    for (let i = 0; i < max; i++) {\n      this.items[i] = createItem({\n        up: this,\n        template: this.template[i],\n        index: i\n      });\n    }\n  }\n\n  destroyed() {\n    const len = this.items.length;\n    for (let i = 0; i < len; i++) this.items[i].destroyed();\n    if (this.pathModel) this.pathModel.destroyed();\n    if (this.rootModel) this.rootModel.destroyed();\n  }\n\n  detach() {\n    const docFrag = createDocumentFragment();\n    const xs = this.items;\n    const len = xs.length;\n    for (let i = 0; i < len; i++) {\n      docFrag.appendChild(xs[i].detach());\n    }\n    return docFrag;\n  }\n\n  find(selector, options) {\n    return findMap(this.items, i => i.find(selector, options));\n  }\n\n  findAll(selector, options) {\n    if (this.items) {\n      this.items.forEach(i => i.findAll && i.findAll(selector, options));\n    }\n  }\n\n  findComponent(name, options) {\n    return findMap(this.items, i => i.findComponent(name, options));\n  }\n\n  findAllComponents(name, options) {\n    if (this.items) {\n      this.items.forEach(i => i.findAllComponents && i.findAllComponents(name, options));\n    }\n  }\n\n  findContext() {\n    const base = findParentWithContext(this);\n    if (!base || !base.context) return this.ractive.viewmodel;\n    else return base.context;\n  }\n\n  findNextNode(item) {\n    // search for the next node going forward\n    if (item) {\n      let it;\n      for (let i = item.index + 1; i < this.items.length; i++) {\n        it = this.items[i];\n        if (!it || !it.firstNode) continue;\n\n        const node = it.firstNode(true);\n        if (node) return node;\n      }\n    }\n\n    // if this is the root fragment, and there are no more items,\n    // it means we're at the end...\n    if (this.isRoot) {\n      if (this.ractive.component) {\n        return this.ractive.component.up.findNextNode(this.ractive.component);\n      }\n\n      // TODO possible edge case with other content\n      // appended to this.ractive.el?\n      return null;\n    }\n\n    if (this.parent) return this.owner.findNextNode(this); // the argument is in case the parent is a RepeatedFragment\n  }\n\n  findParentNode() {\n    let fragment = this;\n\n    do {\n      if (fragment.owner.type === ELEMENT) {\n        return fragment.owner.node;\n      }\n\n      if (fragment.isRoot && !fragment.ractive.component) {\n        // TODO encapsulate check\n        return fragment.ractive.el;\n      }\n\n      if (fragment.owner.type === YIELDER) {\n        fragment = fragment.owner.containerFragment;\n      } else {\n        fragment = fragment.componentParent || fragment.parent; // TODO ugh\n      }\n    } while (fragment);\n\n    throw new Error('Could not find parent node'); // TODO link to issue tracker\n  }\n\n  firstNode(skipParent) {\n    const node = findMap(this.items, i => i.firstNode(true));\n    if (node) return node;\n    if (skipParent) return null;\n\n    return this.parent.findNextNode(this.owner);\n  }\n\n  getKey() {\n    return this.keyModel || (this.keyModel = new KeyModel(this.key));\n  }\n\n  getIndex() {\n    return this.idxModel || (this.idxModel = new KeyModel(this.index));\n  }\n\n  rebind(next) {\n    this.context = next;\n    if (this.rootModel) this.rootModel.context = this.context;\n    if (this.pathModel) this.pathModel.context = this.context;\n  }\n\n  rebound(update) {\n    this.items.forEach(x => x.rebound(update));\n    if (update) {\n      if (this.rootModel) this.rootModel.applyValue(this.context.getKeypath(this.ractive.root));\n      if (this.pathModel) this.pathModel.applyValue(this.context.getKeypath());\n    }\n  }\n\n  render(target, occupants) {\n    if (this.rendered) throw new Error('Fragment is already rendered!');\n    this.rendered = true;\n\n    const xs = this.items;\n    const len = xs.length;\n    for (let i = 0; i < len; i++) {\n      xs[i].render(target, occupants);\n    }\n  }\n\n  resetTemplate(template) {\n    const wasBound = this.bound;\n    const wasRendered = this.rendered;\n\n    // TODO ensure transitions are disabled globally during reset\n\n    if (wasBound) {\n      if (wasRendered) this.unrender(true);\n      this.unbind();\n    }\n\n    this.template = template;\n    this.createItems();\n\n    if (wasBound) {\n      this.bind(this.context);\n\n      if (wasRendered) {\n        const parentNode = this.findParentNode();\n        const anchor = this.findNextNode();\n\n        if (anchor) {\n          const docFrag = createDocumentFragment();\n          this.render(docFrag);\n          parentNode.insertBefore(docFrag, anchor);\n        } else {\n          this.render(parentNode);\n        }\n      }\n    }\n  }\n\n  shuffled() {\n    this.items.forEach(shuffled);\n    if (this.rootModel) this.rootModel.applyValue(this.context.getKeypath(this.ractive.root));\n    if (this.pathModel) this.pathModel.applyValue(this.context.getKeypath());\n  }\n\n  toString(escape) {\n    return this.items.map(escape ? toEscapedString : toString).join('');\n  }\n\n  unbind() {\n    this.context = null;\n    const len = this.items.length;\n    for (let i = 0; i < len; i++) this.items[i].unbind();\n    this.bound = false;\n\n    return this;\n  }\n\n  unrender(shouldDestroy) {\n    const len = this.items.length;\n    for (let i = 0; i < len; i++) this.items[i].unrender(shouldDestroy);\n    this.rendered = false;\n  }\n\n  update() {\n    if (this.dirty) {\n      if (!this.updating) {\n        this.dirty = false;\n        this.updating = true;\n        const len = this.items.length;\n        for (let i = 0; i < len; i++) this.items[i].update();\n        this.updating = false;\n      } else if (this.isRoot) {\n        runloop.addFragmentToRoot(this);\n      }\n    }\n  }\n\n  valueOf() {\n    if (this.items.length === 1) {\n      return this.items[0].valueOf();\n    }\n\n    if (this.dirtyValue) {\n      const values = {};\n      const source = processItems(this.items, values, this.ractive._guid);\n      const parsed = parseJSON(source, values);\n\n      this.value = parsed ? parsed.value : this.toString();\n\n      this.dirtyValue = false;\n    }\n\n    return this.value;\n  }\n}\nFragment.prototype.getContext = getContext;\nFragment.prototype.getKeypath = getKeypath;\n\nexport function getKeypath(root) {\n  const base = findParentWithContext(this);\n  let model;\n  if (root) {\n    if (!this.rootModel) {\n      this.rootModel = new KeyModel(\n        this.context.getKeypath(this.ractive.root),\n        this.context,\n        this.ractive.root\n      );\n      model = this.rootModel;\n    } else return this.rootModel;\n  } else {\n    if (!this.pathModel) {\n      this.pathModel = new KeyModel(this.context.getKeypath(), this.context);\n      model = this.pathModel;\n    } else return this.pathModel;\n  }\n\n  if (base && base.context) base.getKeypath(root).registerChild(model);\n\n  return model;\n}\n","import { TEXT } from 'config/types';\n\n// TODO all this code needs to die\nexport default function processItems(items, values, guid, counter = 0) {\n  return items\n    .map(item => {\n      if (item.type === TEXT) {\n        return item.template;\n      }\n\n      if (item.fragment) {\n        if (item.fragment.iterations) {\n          return item.fragment.iterations\n            .map(fragment => {\n              return processItems(fragment.items, values, guid, counter);\n            })\n            .join('');\n        } else {\n          return processItems(item.fragment.items, values, guid, counter);\n        }\n      }\n\n      const placeholderId = `${guid}-${counter++}`;\n      const model = item.model || item.newModel;\n\n      values[placeholderId] = model\n        ? model.wrapper\n          ? model.wrapperValue\n          : model.get()\n        : undefined;\n\n      return '${' + placeholderId + '}';\n    })\n    .join('');\n}\n","import {\n  ALIAS,\n  ANCHOR,\n  AWAIT,\n  COMMENT,\n  COMPONENT,\n  DOCTYPE,\n  ELEMENT,\n  INTERPOLATOR,\n  PARTIAL,\n  SECTION,\n  TRIPLE,\n  YIELDER\n} from 'config/types';\nimport { ATTRIBUTE, BINDING_FLAG, DECORATOR, EVENT, TRANSITION } from 'config/types';\nimport Alias from './Alias';\nimport Attribute from './element/Attribute';\nimport BindingFlag from './element/BindingFlag';\nimport Comment from './Comment';\nimport Component from './Component';\nimport Decorator from './element/Decorator';\nimport Doctype from './Doctype';\nimport Form from './element/specials/Form';\nimport Element from './Element';\nimport EventDirective from './shared/EventDirective';\nimport Interpolator from './Interpolator';\nimport Input from './element/specials/Input';\nimport Mapping from './component/Mapping';\nimport Option from './element/specials/Option';\nimport Partial from './Partial';\nimport Section from './Section';\nimport Select from './element/specials/Select';\nimport Textarea from './element/specials/Textarea';\nimport Text from './Text';\nimport Transition from './element/Transition';\nimport Triple from './Triple';\nimport getComponentConstructor from './component/getComponentConstructor';\nimport findElement from './shared/findElement';\nimport { findInstance } from 'shared/registry';\nimport asyncProxy from './asyncProxy';\nimport Await from './Await';\nimport { isString, isFunction } from 'utils/is';\n\nconst constructors = {};\nconstructors[ALIAS] = Alias;\nconstructors[ANCHOR] = Component;\nconstructors[AWAIT] = Await;\nconstructors[DOCTYPE] = Doctype;\nconstructors[INTERPOLATOR] = Interpolator;\nconstructors[PARTIAL] = Partial;\nconstructors[SECTION] = Section;\nconstructors[TRIPLE] = Triple;\nconstructors[YIELDER] = Partial;\n\nconstructors[ATTRIBUTE] = Attribute;\nconstructors[BINDING_FLAG] = BindingFlag;\nconstructors[DECORATOR] = Decorator;\nconstructors[EVENT] = EventDirective;\nconstructors[TRANSITION] = Transition;\nconstructors[COMMENT] = Comment;\n\nconst specialElements = {\n  doctype: Doctype,\n  form: Form,\n  input: Input,\n  option: Option,\n  select: Select,\n  textarea: Textarea\n};\n\nexport default function createItem(options) {\n  if (isString(options.template)) {\n    return new Text(options);\n  }\n\n  let ctor;\n  let name;\n  const type = options.template.t;\n\n  if (type === ELEMENT) {\n    name = options.template.e;\n\n    // could be a macro partial\n    ctor = findInstance('partials', options.up.ractive, name);\n    if (ctor) {\n      ctor = ctor.partials[name];\n      if (ctor.styleSet) {\n        options.macro = ctor;\n        return new Partial(options);\n      }\n    }\n\n    // could be component or element\n    ctor = getComponentConstructor(options.up.ractive, name);\n    if (ctor) {\n      if (isFunction(ctor.then)) {\n        return asyncProxy(ctor, options);\n      } else if (isFunction(ctor)) {\n        return new Component(options, ctor);\n      }\n    }\n\n    ctor = specialElements[name.toLowerCase()] || Element;\n    return new ctor(options);\n  }\n\n  let Item;\n\n  // component mappings are a special case of attribute\n  if (type === ATTRIBUTE) {\n    let el = options.owner;\n    if (!el || (el.type !== ANCHOR && el.type !== COMPONENT && el.type !== ELEMENT)) {\n      el = findElement(options.up);\n    }\n    options.element = el;\n\n    Item = el.type === COMPONENT || el.type === ANCHOR ? Mapping : Attribute;\n  } else {\n    Item = constructors[type];\n  }\n\n  if (!Item) throw new Error(`Unrecognised item type ${type}`);\n\n  return new Item(options);\n}\n","import { ATTRIBUTE, CATCH, ELEMENT, ELSE, INTERPOLATOR, SECTION, THEN } from 'src/config/types';\nimport Partial from './Partial';\nimport { assign } from 'utils/object';\nimport { isFunction } from 'utils/is';\n\nfunction extract(tpl, type, name) {\n  const p = tpl.f.find(s => s.t === type);\n  if (p) {\n    if (p.n)\n      return [\n        {\n          t: 19,\n          n: 54,\n          f: p.f || [],\n          z: [{ n: p.n, x: { r: `__await.${name}` } }]\n        }\n      ];\n    else return p.f || [];\n  } else return [];\n}\n\nexport default function Await(options) {\n  const tpl = options.template;\n\n  const success = extract(tpl, THEN, 'value');\n  const error = extract(tpl, CATCH, 'error');\n  const pending = extract(tpl, SECTION);\n  const undef = extract(tpl, ELSE);\n\n  const opts = assign({}, options, {\n    template: {\n      t: ELEMENT,\n      m: [\n        {\n          t: ATTRIBUTE,\n          n: 'for',\n          f: [{ t: INTERPOLATOR, r: tpl.r, rx: tpl.rx, x: tpl.x }]\n        }\n      ]\n    },\n    macro(handle, attrs) {\n      handle.aliasLocal('__await');\n\n      function update(attrs) {\n        if (attrs.for && isFunction(attrs.for.then)) {\n          handle.setTemplate(pending);\n\n          attrs.for.then(\n            v => {\n              handle.set('@local.value', v);\n              handle.setTemplate(success);\n            },\n            e => {\n              handle.set('@local.error', e);\n              handle.setTemplate(error);\n            }\n          );\n        } else if (attrs.for === undefined) {\n          handle.setTemplate(undef);\n        } else {\n          handle.set('@local.value', attrs.for);\n          handle.setTemplate(success);\n        }\n      }\n\n      update(attrs);\n\n      return {\n        update\n      };\n    }\n  });\n\n  opts.macro.attributes = ['for'];\n\n  return new Partial(opts);\n}\n","import Partial from './Partial';\nimport { ELEMENT } from 'config/types';\nimport { assign } from 'utils/object';\n\nexport default function asyncProxy(promise, options) {\n  const partials = options.template.p || {};\n  const name = options.template.e;\n\n  const opts = assign({}, options, {\n    template: { t: ELEMENT, e: name },\n    macro(handle) {\n      handle.setTemplate(partials['async-loading'] || []);\n      promise.then(\n        cmp => {\n          options.up.ractive.components[name] = cmp;\n          if (partials['async-loaded']) {\n            handle.partials.component = [options.template];\n            handle.setTemplate(partials['async-loaded']);\n          } else {\n            handle.setTemplate([options.template]);\n          }\n        },\n        err => {\n          if (partials['async-failed']) {\n            handle.aliasLocal('error', 'error');\n            handle.set('@local.error', err);\n            handle.setTemplate(partials['async-failed']);\n          } else {\n            handle.setTemplate([]);\n          }\n        }\n      );\n    }\n  });\n  return new Partial(opts);\n}\n","import { noRegistryFunctionReturn } from 'config/errors';\nimport { warnIfDebug } from 'utils/log';\nimport { findInstance } from 'shared/registry';\nimport { hasOwn } from 'utils/object';\nimport { isFunction, isString } from 'utils/is';\n\n// finds the component constructor in the registry or view hierarchy registries\nexport default function getComponentConstructor(ractive, name) {\n  const instance = findInstance('components', ractive, name);\n  let Component;\n\n  if (instance) {\n    Component = instance.components[name];\n\n    if (Component && !Component.isInstance) {\n      if (Component.default && Component.default.isInstance) Component = Component.default;\n      else if (!Component.then && isFunction(Component)) {\n        // function option, execute and store for reset\n        const fn = Component.bind(instance);\n        fn.isOwner = hasOwn(instance.components, name);\n        Component = fn();\n\n        if (!Component) {\n          warnIfDebug(noRegistryFunctionReturn, name, 'component', 'component', {\n            ractive\n          });\n          return;\n        }\n\n        if (isString(Component)) {\n          // allow string lookup\n          Component = getComponentConstructor(ractive, Component);\n        }\n\n        Component._fn = fn;\n        instance.components[name] = Component;\n      }\n    }\n  }\n\n  return Component;\n}\n","import { createDocumentFragment, matches } from 'utils/dom';\nimport { detachNode } from 'utils/dom';\nimport { decodeCharacterReferences } from 'utils/html';\nimport runloop from 'src/global/runloop';\nimport Mustache from './shared/Mustache';\nimport insertHtml from './triple/insertHtml';\nimport { inAttribute } from './element/Attribute';\n\nexport default class Triple extends Mustache {\n  constructor(options) {\n    super(options);\n  }\n\n  detach() {\n    const docFrag = createDocumentFragment();\n    if (this.nodes) this.nodes.forEach(node => docFrag.appendChild(node));\n    return docFrag;\n  }\n\n  find(selector) {\n    const len = this.nodes.length;\n    let i;\n\n    for (i = 0; i < len; i += 1) {\n      const node = this.nodes[i];\n\n      if (node.nodeType !== 1) continue;\n\n      if (matches(node, selector)) return node;\n\n      const queryResult = node.querySelector(selector);\n      if (queryResult) return queryResult;\n    }\n\n    return null;\n  }\n\n  findAll(selector, options) {\n    const { result } = options;\n    const len = this.nodes.length;\n    let i;\n\n    for (i = 0; i < len; i += 1) {\n      const node = this.nodes[i];\n\n      if (node.nodeType !== 1) continue;\n\n      if (matches(node, selector)) result.push(node);\n\n      const queryAllResult = node.querySelectorAll(selector);\n      if (queryAllResult) {\n        result.push.apply(result, queryAllResult);\n      }\n    }\n  }\n\n  findComponent() {\n    return null;\n  }\n\n  firstNode() {\n    return this.rendered && this.nodes[0];\n  }\n\n  render(target, occupants, anchor) {\n    if (!this.nodes) {\n      const html = this.model ? this.model.get() : '';\n      this.nodes = insertHtml(html, target);\n    }\n\n    let nodes = this.nodes;\n\n    // progressive enhancement\n    if (occupants) {\n      let i = -1;\n      let next;\n\n      // start with the first node that should be rendered\n      while (occupants.length && (next = this.nodes[i + 1])) {\n        let n;\n        // look through the occupants until a matching node is found\n        while ((n = occupants.shift())) {\n          const t = n.nodeType;\n\n          if (\n            t === next.nodeType &&\n            ((t === 1 && n.outerHTML === next.outerHTML) ||\n              ((t === 3 || t === 8) && n.nodeValue === next.nodeValue))\n          ) {\n            this.nodes.splice(++i, 1, n); // replace the generated node with the existing one\n            break;\n          } else {\n            target.removeChild(n); // remove the non-matching existing node\n          }\n        }\n      }\n\n      if (i >= 0) {\n        // update the list of remaining nodes to attach, excluding any that were replaced by existing nodes\n        nodes = this.nodes.slice(i);\n      }\n\n      // update the anchor to be the next occupant\n      if (occupants.length) anchor = occupants[0];\n    }\n\n    // attach any remainging nodes to the parent\n    if (nodes.length) {\n      const frag = createDocumentFragment();\n      nodes.forEach(n => frag.appendChild(n));\n\n      if (anchor) {\n        target.insertBefore(frag, anchor);\n      } else {\n        target.appendChild(frag);\n      }\n    }\n\n    this.rendered = true;\n  }\n\n  toString() {\n    let value = this.model && this.model.get();\n    value = value != null ? '' + value : '';\n\n    return inAttribute() ? decodeCharacterReferences(value) : value;\n  }\n\n  unrender() {\n    if (this.nodes)\n      this.nodes.forEach(node => {\n        // defer detachment until all relevant outros are done\n        runloop.detachWhenReady({\n          node,\n          detach() {\n            detachNode(node);\n          }\n        });\n      });\n    this.rendered = false;\n    this.nodes = null;\n  }\n\n  update() {\n    if (this.rendered && this.dirty) {\n      this.dirty = false;\n\n      this.unrender();\n      this.render(this.up.findParentNode(), null, this.up.findNextNode(this));\n    } else {\n      // make sure to reset the dirty flag even if not rendered\n      this.dirty = false;\n    }\n  }\n}\n","import { svg } from 'config/namespaces';\nimport { createElement } from 'utils/dom';\n\nconst elementCache = {};\n\nlet ieBug;\nlet ieBlacklist;\n\ntry {\n  createElement('table').innerHTML = 'foo';\n} catch (/* istanbul ignore next */ err) {\n  ieBug = true;\n\n  ieBlacklist = {\n    TABLE: ['<table class=\"x\">', '</table>'],\n    THEAD: ['<table><thead class=\"x\">', '</thead></table>'],\n    TBODY: ['<table><tbody class=\"x\">', '</tbody></table>'],\n    TR: ['<table><tr class=\"x\">', '</tr></table>'],\n    SELECT: ['<select class=\"x\">', '</select>']\n  };\n}\n\nexport default function(html, node) {\n  const nodes = [];\n\n  // render 0 and false\n  if (html == null || html === '') return nodes;\n\n  let container;\n  let wrapper;\n  let selectedOption;\n\n  /* istanbul ignore if */\n  if (ieBug && (wrapper = ieBlacklist[node.tagName])) {\n    container = element('DIV');\n    container.innerHTML = wrapper[0] + html + wrapper[1];\n    container = container.querySelector('.x');\n\n    if (container.tagName === 'SELECT') {\n      selectedOption = container.options[container.selectedIndex];\n    }\n  } else if (node.namespaceURI === svg) {\n    container = element('DIV');\n    container.innerHTML = '<svg class=\"x\">' + html + '</svg>';\n    container = container.querySelector('.x');\n  } else if (node.tagName === 'TEXTAREA') {\n    container = createElement('div');\n\n    if (typeof container.textContent !== 'undefined') {\n      container.textContent = html;\n    } else {\n      container.innerHTML = html;\n    }\n  } else {\n    container = element(node.tagName);\n    container.innerHTML = html;\n\n    if (container.tagName === 'SELECT') {\n      selectedOption = container.options[container.selectedIndex];\n    }\n  }\n\n  let child;\n  while ((child = container.firstChild)) {\n    nodes.push(child);\n    container.removeChild(child);\n  }\n\n  // This is really annoying. Extracting <option> nodes from the\n  // temporary container <select> causes the remaining ones to\n  // become selected. So now we have to deselect them. IE8, you\n  // amaze me. You really do\n  // ...and now Chrome too\n  let i;\n  if (node.tagName === 'SELECT') {\n    i = nodes.length;\n    while (i--) {\n      if (nodes[i] !== selectedOption) {\n        nodes[i].selected = false;\n      }\n    }\n  }\n\n  return nodes;\n}\n\nfunction element(tagName) {\n  return elementCache[tagName] || (elementCache[tagName] = createElement(tagName));\n}\n","import { win } from 'config/environment';\nimport { addToArray, removeFromArray } from 'utils/array';\nimport { isArray, isObject, isFunction, isNumber, isString } from 'utils/is';\nimport noop from 'utils/noop';\nimport { warnOnceIfDebug } from 'utils/log';\nimport { missingPlugin } from 'config/errors';\nimport { findInViewHierarchy } from 'shared/registry';\nimport { visible } from 'config/visibility';\nimport findElement from '../shared/findElement';\nimport prefix from './transitions/prefix';\nimport createTransitions from './transitions/createTransitions';\nimport { resolveArgs, setupArgsFn } from '../shared/directiveArgs';\nimport { assign, hasOwn, keys } from 'utils/object';\n\nconst getComputedStyle = win && win.getComputedStyle;\nconst resolved = Promise.resolve();\n\nconst names = {\n  t0: 'intro-outro',\n  t1: 'intro',\n  t2: 'outro'\n};\n\nexport default class Transition {\n  constructor(options) {\n    this.owner = options.owner || options.up.owner || findElement(options.up);\n    this.element = this.owner.attributeByName ? this.owner : findElement(options.up);\n    this.ractive = this.owner.ractive;\n    this.template = options.template;\n    this.up = options.up;\n    this.options = options;\n    this.onComplete = [];\n  }\n\n  animateStyle(style, value, options) {\n    if (arguments.length === 4) {\n      throw new Error(\n        't.animateStyle() returns a promise - use .then() instead of passing a callback'\n      );\n    }\n\n    // Special case - page isn't visible. Don't animate anything, because\n    // that way you'll never get CSS transitionend events\n    if (!visible) {\n      this.setStyle(style, value);\n      return resolved;\n    }\n\n    let to;\n\n    if (isString(style)) {\n      to = {};\n      to[style] = value;\n    } else {\n      to = style;\n\n      // shuffle arguments\n      options = value;\n    }\n\n    return new Promise(fulfil => {\n      // Edge case - if duration is zero, set style synchronously and complete\n      if (!options.duration) {\n        this.setStyle(to);\n        fulfil();\n        return;\n      }\n\n      // Get a list of the properties we're animating\n      const propertyNames = keys(to);\n      const changedProperties = [];\n\n      // Store the current styles\n      const computedStyle = getComputedStyle(this.node);\n\n      let i = propertyNames.length;\n      while (i--) {\n        const prop = propertyNames[i];\n        const name = prefix(prop);\n\n        const current = computedStyle[prefix(prop)];\n\n        // record the starting points\n        const init = this.node.style[name];\n        if (!(name in this.originals)) this.originals[name] = this.node.style[name];\n        this.node.style[name] = to[prop];\n        this.targets[name] = this.node.style[name];\n        this.node.style[name] = init;\n\n        // we need to know if we're actually changing anything\n        if (current != to[prop]) {\n          // use != instead of !==, so we can compare strings with numbers\n          changedProperties.push(name);\n\n          // if we happened to prefix, make sure there is a properly prefixed value\n          to[name] = to[prop];\n\n          // make the computed style explicit, so we can animate where\n          // e.g. height='auto'\n          this.node.style[name] = current;\n        }\n      }\n\n      // If we're not actually changing anything, the transitionend event\n      // will never fire! So we complete early\n      if (!changedProperties.length) {\n        fulfil();\n        return;\n      }\n\n      createTransitions(this, to, options, changedProperties, fulfil);\n    });\n  }\n\n  bind() {\n    const options = this.options;\n    const type = options.template && options.template.v;\n    if (type) {\n      if (type === 't0' || type === 't1') this.element.intro = this;\n      if (type === 't0' || type === 't2') this.element.outro = this;\n      this.eventName = names[type];\n    }\n\n    const ractive = this.owner.ractive;\n\n    this.name = options.name || options.template.n;\n\n    if (options.params) {\n      this.params = options.params;\n    }\n\n    if (isFunction(this.name)) {\n      this._fn = this.name;\n      this.name = this._fn.name;\n    } else {\n      this._fn = findInViewHierarchy('transitions', ractive, this.name);\n    }\n\n    if (!this._fn) {\n      warnOnceIfDebug(missingPlugin(this.name, 'transition'), { ractive });\n    }\n\n    setupArgsFn(this, options.template);\n  }\n\n  getParams() {\n    if (this.params) return this.params;\n\n    // get expression args if supplied\n    if (this.fn) {\n      const values = resolveArgs(this, this.template, this.up).map(model => {\n        if (!model) return undefined;\n\n        return model.get();\n      });\n      return this.fn.apply(this.ractive, values);\n    }\n  }\n\n  getStyle(props) {\n    const computedStyle = getComputedStyle(this.node);\n\n    if (isString(props)) {\n      return computedStyle[prefix(props)];\n    }\n\n    if (!isArray(props)) {\n      throw new Error(\n        'Transition$getStyle must be passed a string, or an array of strings representing CSS properties'\n      );\n    }\n\n    const styles = {};\n\n    let i = props.length;\n    while (i--) {\n      const prop = props[i];\n      let value = computedStyle[prefix(prop)];\n\n      if (value === '0px') value = 0;\n      styles[prop] = value;\n    }\n\n    return styles;\n  }\n\n  processParams(params, defaults) {\n    if (isNumber(params)) {\n      params = { duration: params };\n    } else if (isString(params)) {\n      if (params === 'slow') {\n        params = { duration: 600 };\n      } else if (params === 'fast') {\n        params = { duration: 200 };\n      } else {\n        params = { duration: 400 };\n      }\n    } else if (!params) {\n      params = {};\n    }\n\n    return assign({}, defaults, params);\n  }\n\n  registerCompleteHandler(fn) {\n    addToArray(this.onComplete, fn);\n  }\n\n  setStyle(style, value) {\n    if (isString(style)) {\n      const name = prefix(style);\n      if (!hasOwn(this.originals, name)) this.originals[name] = this.node.style[name];\n      this.node.style[name] = value;\n      this.targets[name] = this.node.style[name];\n    } else {\n      let prop;\n      for (prop in style) {\n        if (hasOwn(style, prop)) {\n          this.setStyle(prop, style[prop]);\n        }\n      }\n    }\n\n    return this;\n  }\n\n  shouldFire(type) {\n    if (!this.ractive.transitionsEnabled) return false;\n\n    // check for noIntro and noOutro cases, which only apply when the owner ractive is rendering and unrendering, respectively\n    if (type === 'intro' && this.ractive.rendering && nearestProp('noIntro', this.ractive, true))\n      return false;\n    if (type === 'outro' && this.ractive.unrendering && nearestProp('noOutro', this.ractive, false))\n      return false;\n\n    const params = this.getParams(); // this is an array, the params object should be the first member\n    // if there's not a parent element, this can't be nested, so roll on\n    if (!this.element.parent) return true;\n\n    // if there is a local param, it takes precedent\n    if (params && params[0] && isObject(params[0]) && 'nested' in params[0]) {\n      if (params[0].nested !== false) return true;\n    } else {\n      // use the nearest instance setting\n      // find the nearest instance that actually has a nested setting\n      if (nearestProp('nestedTransitions', this.ractive) !== false) return true;\n    }\n\n    // check to see if this is actually a nested transition\n    let el = this.element.parent;\n    while (el) {\n      if (el[type] && el[type].starting) return false;\n      el = el.parent;\n    }\n\n    return true;\n  }\n\n  start() {\n    const node = (this.node = this.element.node);\n    const originals = (this.originals = {}); //= node.getAttribute( 'style' );\n    const targets = (this.targets = {});\n\n    let completed;\n    const args = this.getParams();\n\n    // create t.complete() - we don't want this on the prototype,\n    // because we don't want `this` silliness when passing it as\n    // an argument\n    this.complete = noReset => {\n      this.starting = false;\n      if (completed) {\n        return;\n      }\n\n      this.onComplete.forEach(fn => fn());\n      if (!noReset && this.isIntro) {\n        for (const k in targets) {\n          if (node.style[k] === targets[k]) node.style[k] = originals[k];\n        }\n      }\n\n      this._manager.remove(this);\n\n      completed = true;\n    };\n\n    // If the transition function doesn't exist, abort\n    if (!this._fn) {\n      this.complete();\n      return;\n    }\n\n    const promise = this._fn.apply(this.ractive, [this].concat(args));\n    if (promise) promise.then(this.complete);\n  }\n\n  toString() {\n    return '';\n  }\n\n  unbind() {\n    if (!this.element.attributes.unbinding) {\n      const type = this.options && this.options.template && this.options.template.v;\n      if (type === 't0' || type === 't1') this.element.intro = null;\n      if (type === 't0' || type === 't2') this.element.outro = null;\n    }\n  }\n\n  unregisterCompleteHandler(fn) {\n    removeFromArray(this.onComplete, fn);\n  }\n}\n\nconst proto = Transition.prototype;\nproto.destroyed = proto.firstNode = proto.rebound = proto.render = proto.unrender = proto.update = noop;\n\nfunction nearestProp(prop, ractive, rendering) {\n  let instance = ractive;\n  while (instance) {\n    if (\n      hasOwn(instance, prop) &&\n      (rendering === undefined || rendering ? instance.rendering : instance.unrendering)\n    )\n      return instance[prop];\n    instance = instance.component && instance.component.ractive;\n  }\n\n  return ractive[prop];\n}\n","import { missingPlugin } from 'config/errors';\nimport { isClient } from 'config/environment';\nimport { warnIfDebug, warnOnceIfDebug } from 'utils/log';\nimport { createElement } from 'utils/dom';\nimport interpolate from 'shared/interpolate';\nimport Ticker from 'shared/Ticker';\nimport hyphenate from './hyphenate';\nimport { isFunction, isString } from 'utils/is';\n\nlet createTransitions;\n\nif (!isClient) {\n  createTransitions = null;\n} else {\n  const testStyle = createElement('div').style;\n  const linear = x => x;\n\n  const canUseCssTransitions = {};\n  const cannotUseCssTransitions = {};\n\n  // determine some facts about our environment\n  let TRANSITION;\n  let TRANSITIONEND;\n  let CSS_TRANSITIONS_ENABLED;\n  let TRANSITION_DURATION;\n  let TRANSITION_PROPERTY;\n  let TRANSITION_TIMING_FUNCTION;\n\n  if (testStyle.transition !== undefined) {\n    TRANSITION = 'transition';\n    TRANSITIONEND = 'transitionend';\n    CSS_TRANSITIONS_ENABLED = true;\n  } else if (testStyle.webkitTransition !== undefined) {\n    TRANSITION = 'webkitTransition';\n    TRANSITIONEND = 'webkitTransitionEnd';\n    CSS_TRANSITIONS_ENABLED = true;\n  } else {\n    CSS_TRANSITIONS_ENABLED = false;\n  }\n\n  if (TRANSITION) {\n    TRANSITION_DURATION = TRANSITION + 'Duration';\n    TRANSITION_PROPERTY = TRANSITION + 'Property';\n    TRANSITION_TIMING_FUNCTION = TRANSITION + 'TimingFunction';\n  }\n\n  createTransitions = function(t, to, options, changedProperties, resolve) {\n    // Wait a beat (otherwise the target styles will be applied immediately)\n    // TODO use a fastdom-style mechanism?\n    setTimeout(() => {\n      let jsTransitionsComplete;\n      let cssTransitionsComplete;\n      let cssTimeout; // eslint-disable-line prefer-const\n\n      function transitionDone() {\n        clearTimeout(cssTimeout);\n      }\n\n      function checkComplete() {\n        if (jsTransitionsComplete && cssTransitionsComplete) {\n          t.unregisterCompleteHandler(transitionDone);\n          // will changes to events and fire have an unexpected consequence here?\n          t.ractive.fire(t.name + ':end', t.node, t.isIntro);\n          resolve();\n        }\n      }\n\n      // this is used to keep track of which elements can use CSS to animate\n      // which properties\n      const hashPrefix = (t.node.namespaceURI || '') + t.node.tagName;\n\n      // need to reset transition properties\n      const style = t.node.style;\n      const previous = {\n        property: style[TRANSITION_PROPERTY],\n        timing: style[TRANSITION_TIMING_FUNCTION],\n        duration: style[TRANSITION_DURATION]\n      };\n\n      function transitionEndHandler(event) {\n        const index = changedProperties.indexOf(event.propertyName);\n\n        if (index !== -1) {\n          changedProperties.splice(index, 1);\n        }\n\n        if (changedProperties.length) {\n          // still transitioning...\n          return;\n        }\n\n        clearTimeout(cssTimeout);\n        cssTransitionsDone();\n      }\n\n      function cssTransitionsDone() {\n        style[TRANSITION_PROPERTY] = previous.property;\n        style[TRANSITION_TIMING_FUNCTION] = previous.duration;\n        style[TRANSITION_DURATION] = previous.timing;\n\n        t.node.removeEventListener(TRANSITIONEND, transitionEndHandler, false);\n\n        cssTransitionsComplete = true;\n        checkComplete();\n      }\n\n      t.node.addEventListener(TRANSITIONEND, transitionEndHandler, false);\n\n      // safety net in case transitionend never fires\n      cssTimeout = setTimeout(() => {\n        changedProperties = [];\n        cssTransitionsDone();\n      }, options.duration + (options.delay || 0) + 50);\n      t.registerCompleteHandler(transitionDone);\n\n      style[TRANSITION_PROPERTY] = changedProperties.join(',');\n      const easingName = hyphenate(options.easing || 'linear');\n      style[TRANSITION_TIMING_FUNCTION] = easingName;\n      const cssTiming = style[TRANSITION_TIMING_FUNCTION] === easingName;\n      style[TRANSITION_DURATION] = options.duration / 1000 + 's';\n\n      setTimeout(() => {\n        let i = changedProperties.length;\n        let hash;\n        let originalValue = null;\n        let index;\n        const propertiesToTransitionInJs = [];\n        let prop;\n        let suffix;\n        let interpolator;\n\n        while (i--) {\n          prop = changedProperties[i];\n          hash = hashPrefix + prop;\n\n          if (cssTiming && CSS_TRANSITIONS_ENABLED && !cannotUseCssTransitions[hash]) {\n            const initial = style[prop];\n            style[prop] = to[prop];\n\n            // If we're not sure if CSS transitions are supported for\n            // this tag/property combo, find out now\n            if (!(hash in canUseCssTransitions)) {\n              originalValue = t.getStyle(prop);\n\n              // if this property is transitionable in this browser,\n              // the current style will be different from the target style\n              canUseCssTransitions[hash] = t.getStyle(prop) != to[prop];\n              cannotUseCssTransitions[hash] = !canUseCssTransitions[hash];\n\n              // Reset, if we're going to use timers after all\n              if (cannotUseCssTransitions[hash]) {\n                style[prop] = initial;\n              }\n            }\n          }\n\n          if (!cssTiming || !CSS_TRANSITIONS_ENABLED || cannotUseCssTransitions[hash]) {\n            // we need to fall back to timer-based stuff\n            if (originalValue === null) originalValue = t.getStyle(prop);\n\n            // need to remove this from changedProperties, otherwise transitionEndHandler\n            // will get confused\n            index = changedProperties.indexOf(prop);\n            if (index === -1) {\n              warnIfDebug(\n                'Something very strange happened with transitions. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!',\n                { node: t.node }\n              );\n            } else {\n              changedProperties.splice(index, 1);\n            }\n\n            // TODO Determine whether this property is animatable at all\n\n            suffix = /[^\\d]*$/.exec(originalValue)[0];\n            interpolator = interpolate(parseFloat(originalValue), parseFloat(to[prop]));\n\n            // ...then kick off a timer-based transition\n            if (interpolator) {\n              propertiesToTransitionInJs.push({\n                name: prop,\n                interpolator,\n                suffix\n              });\n            } else {\n              style[prop] = to[prop];\n            }\n\n            originalValue = null;\n          }\n        }\n\n        // javascript transitions\n        if (propertiesToTransitionInJs.length) {\n          let easing;\n\n          if (isString(options.easing)) {\n            easing = t.ractive.easing[options.easing];\n\n            if (!easing) {\n              warnOnceIfDebug(missingPlugin(options.easing, 'easing'));\n              easing = linear;\n            }\n          } else if (isFunction(options.easing)) {\n            easing = options.easing;\n          } else {\n            easing = linear;\n          }\n\n          new Ticker({\n            duration: options.duration,\n            easing,\n            step(pos) {\n              let i = propertiesToTransitionInJs.length;\n              while (i--) {\n                const prop = propertiesToTransitionInJs[i];\n                style[prop.name] = prop.interpolator(pos) + prop.suffix;\n              }\n            },\n            complete() {\n              jsTransitionsComplete = true;\n              checkComplete();\n            }\n          });\n        } else {\n          jsTransitionsComplete = true;\n        }\n\n        if (changedProperties.length) {\n          style[TRANSITION_PROPERTY] = changedProperties.join(',');\n        } else {\n          style[TRANSITION_PROPERTY] = 'none';\n\n          // We need to cancel the transitionEndHandler, and deal with\n          // the fact that it will never fire\n          t.node.removeEventListener(TRANSITIONEND, transitionEndHandler, false);\n          cssTransitionsComplete = true;\n          checkComplete();\n        }\n      }, 0);\n    }, options.delay || 0);\n  };\n}\n\nexport default createTransitions;\n","import { vendors } from 'config/environment';\n\nconst vendorPattern = new RegExp('^(?:' + vendors.join('|') + ')([A-Z])');\n\nexport default function(str) {\n  /* istanbul ignore next */\n  if (!str) return ''; // edge case\n\n  /* istanbul ignore next */\n  if (vendorPattern.test(str)) str = '-' + str;\n\n  return str.replace(/[A-Z]/g, match => '-' + match.toLowerCase());\n}\n","import { isClient, vendors } from 'config/environment';\nimport { createElement } from 'utils/dom';\nimport hyphenateCamel from 'utils/hyphenateCamel';\n\nlet prefix;\n\n/* istanbul ignore next */\nif (!isClient) {\n  prefix = null;\n} else {\n  const prefixCache = {};\n  const testStyle = createElement('div').style;\n\n  // technically this also normalizes on hyphenated styles as well\n  prefix = function(prop) {\n    if (!prefixCache[prop]) {\n      const name = hyphenateCamel(prop);\n\n      if (testStyle[prop] !== undefined) {\n        prefixCache[prop] = name;\n      } else {\n        /* istanbul ignore next */\n        // test vendors...\n        let i = vendors.length;\n        while (i--) {\n          const vendor = `-${vendors[i]}-${name}`;\n          if (testStyle[vendor] !== undefined) {\n            prefixCache[prop] = vendor;\n            break;\n          }\n        }\n      }\n    }\n\n    return prefixCache[prop];\n  };\n}\n\nexport default prefix;\n","import { win, doc, vendors } from './environment';\n\nexport let visible;\nlet hidden = 'hidden';\n\nif (doc) {\n  let prefix;\n\n  /* istanbul ignore next */\n  if (hidden in doc) {\n    prefix = '';\n  } else {\n    let i = vendors.length;\n    while (i--) {\n      const vendor = vendors[i];\n      hidden = vendor + 'Hidden';\n\n      if (hidden in doc) {\n        prefix = vendor;\n        break;\n      }\n    }\n  }\n\n  /* istanbul ignore else */\n  if (prefix !== undefined) {\n    doc.addEventListener(prefix + 'visibilitychange', onChange);\n    onChange();\n  } else {\n    // gah, we're in an old browser\n    if ('onfocusout' in doc) {\n      doc.addEventListener('focusout', onHide);\n      doc.addEventListener('focusin', onShow);\n    } else {\n      win.addEventListener('pagehide', onHide);\n      win.addEventListener('blur', onHide);\n\n      win.addEventListener('pageshow', onShow);\n      win.addEventListener('focus', onShow);\n    }\n\n    visible = true; // until proven otherwise. Not ideal but hey\n  }\n}\n\nfunction onChange() {\n  visible = !doc[hidden];\n}\n\n/* istanbul ignore next */\nfunction onHide() {\n  visible = false;\n}\n\n/* istanbul ignore next */\nfunction onShow() {\n  visible = true;\n}\n","import { TEXT } from 'config/types';\nimport { escapeHtml } from 'utils/html';\nimport { detachNode } from 'utils/dom';\nimport noop from 'utils/noop';\nimport Item from './shared/Item';\nimport progressiveText from './shared/progressiveText';\nimport { inAttributes } from './element/ConditionalAttribute';\n\nexport default class Text extends Item {\n  constructor(options) {\n    super(options);\n    this.type = TEXT;\n  }\n\n  detach() {\n    return detachNode(this.node);\n  }\n\n  firstNode() {\n    return this.node;\n  }\n\n  render(target, occupants) {\n    if (inAttributes()) return;\n    this.rendered = true;\n\n    progressiveText(this, target, occupants, this.template);\n  }\n\n  toString(escape) {\n    return escape ? escapeHtml(this.template) : this.template;\n  }\n\n  unrender(shouldDestroy) {\n    if (this.rendered && shouldDestroy) this.detach();\n    this.rendered = false;\n  }\n\n  valueOf() {\n    return this.template;\n  }\n}\n\nconst proto = Text.prototype;\nproto.bind = proto.unbind = proto.update = noop;\n","import { ATTRIBUTE } from 'config/types';\nimport runloop from 'src/global/runloop';\nimport Input from './Input';\nimport { isBindable } from '../binding/selectBinding';\nimport createItem from '../../createItem';\nimport Fragment from '../../../Fragment';\n\nexport default class Textarea extends Input {\n  constructor(options) {\n    const template = options.template;\n\n    options.deferContent = true;\n\n    super(options);\n\n    // check for single interpolator binding\n    if (!this.attributeByName.value) {\n      if (template.f && isBindable({ template })) {\n        (this.attributes || (this.attributes = [])).push(\n          createItem({\n            owner: this,\n            template: { t: ATTRIBUTE, f: template.f, n: 'value' },\n            up: this.up\n          })\n        );\n      } else {\n        this.fragment = new Fragment({\n          owner: this,\n          cssIds: null,\n          template: template.f\n        });\n      }\n    }\n  }\n\n  bubble() {\n    if (!this.dirty) {\n      this.dirty = true;\n\n      if (this.rendered && !this.binding && this.fragment) {\n        runloop.scheduleTask(() => {\n          this.dirty = false;\n          this.node.value = this.fragment.toString();\n        });\n      }\n\n      this.up.bubble(); // default behaviour\n    }\n  }\n}\n","import { toArray } from 'utils/array';\nimport getSelectedOptions from 'utils/getSelectedOptions';\nimport Element from '../../Element';\nimport { isArray, isFunction } from 'utils/is';\n\nexport default class Select extends Element {\n  constructor(options) {\n    super(options);\n    this.options = [];\n  }\n\n  foundNode(node) {\n    if (this.binding) {\n      const selectedOptions = getSelectedOptions(node);\n\n      if (selectedOptions.length > 0) {\n        this.selectedOptions = selectedOptions;\n      }\n    }\n  }\n\n  render(target, occupants) {\n    super.render(target, occupants);\n    this.sync();\n\n    const node = this.node;\n\n    let i = node.options.length;\n    while (i--) {\n      node.options[i].defaultSelected = node.options[i].selected;\n    }\n\n    this.rendered = true;\n  }\n\n  sync() {\n    const selectNode = this.node;\n\n    if (!selectNode) return;\n\n    const options = toArray(selectNode.options);\n\n    if (this.selectedOptions) {\n      options.forEach(o => {\n        if (this.selectedOptions.indexOf(o) >= 0) o.selected = true;\n        else o.selected = false;\n      });\n      this.binding.setFromNode(selectNode);\n      delete this.selectedOptions;\n      return;\n    }\n\n    const selectValue = this.getAttribute('value');\n    const isMultiple = this.getAttribute('multiple');\n    const array = isMultiple && isArray(selectValue);\n\n    // If the <select> has a specified value, that should override\n    // these options\n    if (selectValue !== undefined) {\n      let optionWasSelected;\n\n      options.forEach(o => {\n        const optionValue = o._ractive ? o._ractive.value : o.value;\n        const shouldSelect = isMultiple\n          ? array && this.valueContains(selectValue, optionValue)\n          : this.compare(selectValue, optionValue);\n\n        if (shouldSelect) {\n          optionWasSelected = true;\n        }\n\n        o.selected = shouldSelect;\n      });\n\n      if (!optionWasSelected && !isMultiple) {\n        if (this.binding) {\n          this.binding.forceUpdate();\n        }\n      }\n    } else if (this.binding && this.binding.forceUpdate) {\n      // Otherwise the value should be initialised according to which\n      // <option> element is selected, if twoway binding is in effect\n      this.binding.forceUpdate();\n    }\n  }\n  valueContains(selectValue, optionValue) {\n    let i = selectValue.length;\n    while (i--) {\n      if (this.compare(optionValue, selectValue[i])) return true;\n    }\n  }\n  compare(optionValue, selectValue) {\n    const comparator = this.getAttribute('value-comparator');\n    if (comparator) {\n      if (isFunction(comparator)) {\n        return comparator(selectValue, optionValue);\n      }\n      if (selectValue && optionValue) {\n        return selectValue[comparator] == optionValue[comparator];\n      }\n    }\n    return selectValue == optionValue;\n  }\n  update() {\n    const dirty = this.dirty;\n    super.update();\n    if (dirty) {\n      this.sync();\n    }\n  }\n}\n","import {\n  SECTION_EACH,\n  SECTION_IF,\n  SECTION_IF_WITH,\n  SECTION_UNLESS,\n  SECTION_WITH\n} from 'config/types';\nimport { createDocumentFragment } from 'utils/dom';\nimport { isArray, isObject, isObjectLike } from 'utils/is';\nimport { keep } from 'shared/set';\nimport runloop from 'src/global/runloop';\nimport Fragment from '../Fragment';\nimport RepeatedFragment from '../RepeatedFragment';\nimport { MustacheContainer } from './shared/Mustache';\nimport { keys } from 'utils/object';\n\nfunction isEmpty(value) {\n  return (\n    !value ||\n    (isArray(value) && value.length === 0) ||\n    (isObject(value) && keys(value).length === 0)\n  );\n}\n\nfunction getType(value, hasIndexRef) {\n  if (hasIndexRef || isArray(value)) return SECTION_EACH;\n  if (isObjectLike(value)) return SECTION_IF_WITH;\n  if (value === undefined) return null;\n  return SECTION_IF;\n}\n\nexport default class Section extends MustacheContainer {\n  constructor(options) {\n    super(options);\n\n    this.sectionType = options.template.n || null;\n    this.templateSectionType = this.sectionType;\n    this.subordinate = options.template.l === 1;\n    this.fragment = null;\n  }\n\n  bind() {\n    super.bind();\n\n    if (this.subordinate) {\n      this.sibling = this.up.items[this.up.items.indexOf(this) - 1];\n      this.sibling.nextSibling = this;\n    }\n\n    // if we managed to bind, we need to create children\n    if (this.model) {\n      this.dirty = true;\n      this.update();\n    } else if (\n      this.sectionType &&\n      this.sectionType === SECTION_UNLESS &&\n      (!this.sibling || !this.sibling.isTruthy())\n    ) {\n      this.fragment = new Fragment({\n        owner: this,\n        template: this.template.f\n      }).bind();\n    }\n  }\n\n  detach() {\n    const frag = this.fragment || this.detached;\n    return frag ? frag.detach() : super.detach();\n  }\n\n  isTruthy() {\n    if (this.subordinate && this.sibling.isTruthy()) return true;\n    const value = !this.model ? undefined : this.model.isRoot ? this.model.value : this.model.get();\n    return !!value && (this.templateSectionType === SECTION_IF_WITH || !isEmpty(value));\n  }\n\n  rebind(next, previous, safe) {\n    if (super.rebind(next, previous, safe)) {\n      if (this.fragment && this.sectionType !== SECTION_IF && this.sectionType !== SECTION_UNLESS) {\n        this.fragment.rebind(next);\n      }\n    }\n  }\n\n  rebound(update) {\n    if (this.model) {\n      if (this.model.rebound) this.model.rebound(update);\n      else {\n        super.unbind();\n        super.bind();\n        if (\n          this.sectionType === SECTION_WITH ||\n          this.sectionType === SECTION_IF_WITH ||\n          this.sectionType === SECTION_EACH\n        ) {\n          if (this.fragment) this.fragment.rebind(this.model);\n        }\n\n        if (update) this.bubble();\n      }\n    }\n    if (this.fragment) this.fragment.rebound(update);\n  }\n\n  render(target, occupants) {\n    this.rendered = true;\n    if (this.fragment) this.fragment.render(target, occupants);\n  }\n\n  shuffle(newIndices) {\n    if (this.fragment && this.sectionType === SECTION_EACH) {\n      this.fragment.shuffle(newIndices);\n    }\n  }\n\n  unbind() {\n    super.unbind();\n    if (this.fragment) this.fragment.unbind();\n  }\n\n  unrender(shouldDestroy) {\n    if (this.rendered && this.fragment) this.fragment.unrender(shouldDestroy);\n    this.rendered = false;\n  }\n\n  update() {\n    if (!this.dirty) return;\n\n    if (this.fragment && this.sectionType !== SECTION_IF && this.sectionType !== SECTION_UNLESS) {\n      this.fragment.context = this.model;\n    }\n\n    if (!this.model && this.sectionType !== SECTION_UNLESS) return;\n\n    this.dirty = false;\n\n    const value = !this.model ? undefined : this.model.isRoot ? this.model.value : this.model.get();\n    const siblingFalsey = !this.subordinate || !this.sibling.isTruthy();\n    const lastType = this.sectionType;\n\n    // watch for switching section types\n    if (this.sectionType === null || this.templateSectionType === null)\n      this.sectionType = getType(value, this.template.i);\n    if (lastType && lastType !== this.sectionType && this.fragment) {\n      if (this.rendered) {\n        this.fragment.unbind().unrender(true);\n      }\n\n      this.fragment = null;\n    }\n\n    let newFragment;\n\n    const fragmentShouldExist =\n      this.sectionType === SECTION_EACH || // each always gets a fragment, which may have no iterations\n      this.sectionType === SECTION_WITH || // with (partial context) always gets a fragment\n      (siblingFalsey && (this.sectionType === SECTION_UNLESS ? !this.isTruthy() : this.isTruthy())); // if, unless, and if-with depend on siblings and the condition\n\n    if (fragmentShouldExist) {\n      if (!this.fragment) this.fragment = this.detached;\n\n      if (this.fragment) {\n        // check for detached fragment\n        if (this.detached) {\n          attach(this, this.fragment);\n          this.detached = false;\n          this.rendered = true;\n        }\n\n        if (!this.fragment.bound) this.fragment.bind(this.model);\n        this.fragment.update();\n      } else {\n        if (this.sectionType === SECTION_EACH) {\n          newFragment = new RepeatedFragment({\n            owner: this,\n            template: this.template.f,\n            indexRef: this.template.i\n          }).bind(this.model);\n        } else {\n          // only with and if-with provide context - if and unless do not\n          const context =\n            this.sectionType !== SECTION_IF && this.sectionType !== SECTION_UNLESS\n              ? this.model\n              : null;\n          newFragment = new Fragment({\n            owner: this,\n            template: this.template.f\n          }).bind(context);\n        }\n      }\n    } else {\n      if (this.fragment && this.rendered) {\n        if (keep !== true) {\n          this.fragment.unbind().unrender(true);\n        } else {\n          this.unrender(false);\n          this.detached = this.fragment;\n          runloop.promise().then(() => {\n            if (this.detached) this.detach();\n          });\n        }\n      } else if (this.fragment) {\n        this.fragment.unbind();\n      }\n\n      this.fragment = null;\n    }\n\n    if (newFragment) {\n      if (this.rendered) {\n        attach(this, newFragment);\n      }\n\n      this.fragment = newFragment;\n    }\n\n    if (this.nextSibling) {\n      this.nextSibling.dirty = true;\n      this.nextSibling.update();\n    }\n  }\n}\n\nfunction attach(section, fragment) {\n  const anchor = section.up.findNextNode(section);\n\n  if (anchor) {\n    const docFrag = createDocumentFragment();\n    fragment.render(docFrag);\n\n    anchor.parentNode.insertBefore(docFrag, anchor);\n  } else {\n    fragment.render(section.up.findParentNode());\n  }\n}\n","import { createDocumentFragment } from 'utils/dom';\nimport { isArray, isObject, isObjectType } from 'utils/is';\nimport { findMap, buildNewIndices } from 'utils/array';\nimport { toEscapedString, toString, shuffled } from 'shared/methodCallers';\nimport Fragment, { getKeypath } from './Fragment';\nimport { ELEMENT } from 'config/types';\nimport { getContext } from 'shared/getRactiveContext';\nimport { keys } from 'utils/object';\nimport KeyModel from 'src/model/specials/KeyModel';\nimport { splitKeypath } from '../shared/keypaths';\nimport resolve from './resolvers/resolve';\n\nconst keypathString = /^\"(\\\\\"|[^\"])+\"$/;\n\nexport default class RepeatedFragment {\n  constructor(options) {\n    this.parent = options.owner.up;\n\n    // bit of a hack, so reference resolution works without another\n    // layer of indirection\n    this.up = this;\n    this.owner = options.owner;\n    this.ractive = this.parent.ractive;\n    this.delegate =\n      this.ractive.delegate !== false && (this.parent.delegate || findDelegate(this.parent));\n    // delegation disabled by directive\n    if (this.delegate && this.delegate.delegate === false) this.delegate = false;\n    // let the element know it's a delegate handler\n    if (this.delegate) this.delegate.delegate = this.delegate;\n\n    // encapsulated styles should be inherited until they get applied by an element\n    this.cssIds = 'cssIds' in options ? options.cssIds : this.parent ? this.parent.cssIds : null;\n\n    this.context = null;\n    this.rendered = false;\n    this.iterations = [];\n\n    this.template = options.template;\n\n    this.indexRef = options.indexRef;\n    this.keyRef = options.keyRef;\n\n    this.pendingNewIndices = null;\n    this.previousIterations = null;\n\n    // track array versus object so updates of type rest\n    this.isArray = false;\n  }\n\n  bind(context) {\n    this.context = context;\n    this.bound = true;\n    const value = context.get();\n\n    const aliases = (this.aliases = this.owner.template.z && this.owner.template.z.slice());\n\n    const shuffler = aliases && aliases.find(a => a.n === 'shuffle');\n    if (shuffler && shuffler.x && shuffler.x.x) {\n      if (shuffler.x.x.s === 'true') this.shuffler = true;\n      else if (keypathString.test(shuffler.x.x.s))\n        this.shuffler = splitKeypath(shuffler.x.x.s.slice(1, -1));\n    }\n\n    if (this.shuffler) this.values = shuffleValues(this, this.shuffler);\n\n    if (this.source) this.source.model.unbind(this.source);\n    const source = context.isComputed && aliases && aliases.find(a => a.n === 'source');\n    if (source && source.x && source.x.r) {\n      const model = resolve(this, source.x);\n      this.source = {\n        handleChange() {},\n        rebind(next) {\n          this.model.unregister(this);\n          this.model = next;\n          next.register(this);\n        }\n      };\n      this.source.model = model;\n      model.register(this.source);\n    }\n\n    // {{#each array}}...\n    if ((this.isArray = isArray(value))) {\n      // we can't use map, because of sparse arrays\n      this.iterations = [];\n      const max = (this.length = value.length);\n      for (let i = 0; i < max; i += 1) {\n        this.iterations[i] = this.createIteration(i, i);\n      }\n    } else if (isObject(value)) {\n      // {{#each object}}...\n      this.isArray = false;\n\n      // TODO this is a dreadful hack. There must be a neater way\n      if (this.indexRef) {\n        const refs = this.indexRef.split(',');\n        this.keyRef = refs[0];\n        this.indexRef = refs[1];\n      }\n\n      const ks = keys(value);\n      this.length = ks.length;\n\n      this.iterations = ks.map((key, index) => {\n        return this.createIteration(key, index);\n      });\n    }\n\n    return this;\n  }\n\n  bubble(index) {\n    if (!this.bubbled) this.bubbled = [];\n    this.bubbled.push(index);\n\n    if (!this.rebounding) this.owner.bubble();\n  }\n\n  createIteration(key, index) {\n    const fragment = new Fragment({\n      owner: this,\n      template: this.template\n    });\n\n    fragment.isIteration = true;\n    fragment.delegate = this.delegate;\n\n    if (this.aliases) fragment.aliases = {};\n    swizzleFragment(this, fragment, key, index);\n\n    return fragment.bind(fragment.context);\n  }\n\n  destroyed() {\n    const len = this.iterations.length;\n    for (let i = 0; i < len; i++) this.iterations[i].destroyed();\n    if (this.pathModel) this.pathModel.destroyed();\n    if (this.rootModel) this.rootModel.destroyed();\n  }\n\n  detach() {\n    const docFrag = createDocumentFragment();\n    this.iterations.forEach(fragment => docFrag.appendChild(fragment.detach()));\n    return docFrag;\n  }\n\n  find(selector, options) {\n    return findMap(this.iterations, i => i.find(selector, options));\n  }\n\n  findAll(selector, options) {\n    return this.iterations.forEach(i => i.findAll(selector, options));\n  }\n\n  findAllComponents(name, options) {\n    return this.iterations.forEach(i => i.findAllComponents(name, options));\n  }\n\n  findComponent(name, options) {\n    return findMap(this.iterations, i => i.findComponent(name, options));\n  }\n\n  findContext() {\n    return this.context;\n  }\n\n  findNextNode(iteration) {\n    if (iteration.index < this.iterations.length - 1) {\n      for (let i = iteration.index + 1; i < this.iterations.length; i++) {\n        const node = this.iterations[i].firstNode(true);\n        if (node) return node;\n      }\n    }\n\n    return this.owner.findNextNode();\n  }\n\n  firstNode(skipParent) {\n    return this.iterations[0] ? this.iterations[0].firstNode(skipParent) : null;\n  }\n\n  getLast() {\n    return this.lastModel || (this.lastModel = new KeyModel(this.length - 1));\n  }\n\n  rebind(next) {\n    this.context = next;\n    if (this.source) return;\n    this.iterations.forEach(fragment => {\n      swizzleFragment(this, fragment, fragment.key, fragment.index);\n    });\n  }\n\n  rebound(update) {\n    this.context = this.owner.model;\n    this.iterations.forEach((f, i) => {\n      f.context = contextFor(this, f, i);\n      f.rebound(update);\n    });\n  }\n\n  render(target, occupants) {\n    const xs = this.iterations;\n    if (xs) {\n      const len = xs.length;\n      for (let i = 0; i < len; i++) {\n        xs[i].render(target, occupants);\n      }\n    }\n\n    this.rendered = true;\n  }\n\n  shuffle(newIndices, merge) {\n    if (!this.pendingNewIndices) this.previousIterations = this.iterations.slice();\n\n    if (!this.pendingNewIndices) this.pendingNewIndices = [];\n\n    this.pendingNewIndices.push(newIndices);\n\n    const iterations = [];\n\n    newIndices.forEach((newIndex, oldIndex) => {\n      if (newIndex === -1) return;\n\n      const fragment = this.iterations[oldIndex];\n      iterations[newIndex] = fragment;\n\n      if (newIndex !== oldIndex && fragment) {\n        fragment.dirty = true;\n        if (merge) fragment.shouldRebind = 1;\n      }\n    });\n\n    this.iterations = iterations;\n\n    // if merging, we're in the midst of an update already\n    if (!merge) this.bubble();\n  }\n\n  shuffled() {\n    this.iterations.forEach(shuffled);\n  }\n\n  toString(escape) {\n    return this.iterations ? this.iterations.map(escape ? toEscapedString : toString).join('') : '';\n  }\n\n  unbind() {\n    this.bound = false;\n    if (this.source) this.source.model.unregister(this.source);\n    const iterations = this.pendingNewIndices ? this.previousIterations : this.iterations;\n    const len = iterations.length;\n    for (let i = 0; i < len; i++) iterations[i].unbind();\n    return this;\n  }\n\n  unrender(shouldDestroy) {\n    let len = this.iterations.length;\n    for (let i = 0; i < len; i++) this.iterations[i].unrender(shouldDestroy);\n    if (this.pendingNewIndices && this.previousIterations) {\n      len = this.previousIterations.length;\n      for (let i = 0; i < len; i++) this.previousIterations[i].unrender(shouldDestroy);\n    }\n    this.rendered = false;\n  }\n\n  update() {\n    if (this.pendingNewIndices) {\n      this.bubbled.length = 0;\n      this.updatePostShuffle();\n      return;\n    }\n\n    if (this.updating) return;\n    this.updating = true;\n\n    if (this.shuffler) {\n      const values = shuffleValues(this, this.shuffler);\n      this.shuffle(buildNewIndices(this.values, values), true);\n      this.updatePostShuffle();\n    } else {\n      let len = this.iterations.length;\n      for (let i = 0; i < len; i++) {\n        const f = this.iterations[i];\n        f && f.idxModel && f.idxModel.applyValue(i);\n      }\n\n      const value = this.context.get();\n      const wasArray = this.isArray;\n\n      let toRemove;\n      let oldKeys;\n      let reset = true;\n      let i;\n\n      if ((this.isArray = isArray(value))) {\n        // if there's a source to map back to, make sure everything stays bound correctly\n        if (this.source) {\n          this.rebounding = 1;\n          const source = this.source.model.get();\n          this.iterations.forEach((f, c) => {\n            if (c < value.length && f.lastValue !== value[c] && ~(i = source.indexOf(value[c]))) {\n              swizzleFragment(this, f, c, c);\n              f.rebound(true);\n            }\n          });\n          this.rebounding = 0;\n        }\n\n        if (wasArray) {\n          reset = false;\n          if (this.iterations.length > value.length) {\n            toRemove = this.iterations.splice(value.length);\n          }\n        }\n      } else if (isObject(value) && !wasArray) {\n        reset = false;\n        toRemove = [];\n        oldKeys = {};\n        i = this.iterations.length;\n\n        while (i--) {\n          const fragment = this.iterations[i];\n          if (fragment.key in value) {\n            oldKeys[fragment.key] = true;\n          } else {\n            this.iterations.splice(i, 1);\n            toRemove.push(fragment);\n          }\n        }\n      }\n\n      const newLength = isArray(value) ? value.length : isObject(value) ? keys(value).length : 0;\n      this.length = newLength;\n      this.updateLast();\n\n      if (reset) {\n        toRemove = this.iterations;\n        this.iterations = [];\n      }\n\n      if (toRemove) {\n        len = toRemove.length;\n        for (let i = 0; i < len; i++) toRemove[i].unbind().unrender(true);\n      }\n\n      // update the remaining ones\n      if (!reset && this.isArray && this.bubbled && this.bubbled.length) {\n        const bubbled = this.bubbled;\n        this.bubbled = [];\n        len = bubbled.length;\n        for (let i = 0; i < len; i++)\n          this.iterations[bubbled[i]] && this.iterations[bubbled[i]].update();\n      } else {\n        len = this.iterations.length;\n        for (let i = 0; i < len; i++) this.iterations[i].update();\n      }\n\n      // add new iterations\n      let docFrag;\n      let fragment;\n\n      if (newLength > this.iterations.length) {\n        docFrag = this.rendered ? createDocumentFragment() : null;\n        i = this.iterations.length;\n\n        if (isArray(value)) {\n          while (i < value.length) {\n            fragment = this.createIteration(i, i);\n\n            this.iterations.push(fragment);\n            if (this.rendered) fragment.render(docFrag);\n\n            i += 1;\n          }\n        } else if (isObject(value)) {\n          // TODO this is a dreadful hack. There must be a neater way\n          if (this.indexRef && !this.keyRef) {\n            const refs = this.indexRef.split(',');\n            this.keyRef = refs[0];\n            this.indexRef = refs[1];\n          }\n\n          keys(value).forEach(key => {\n            if (!oldKeys || !(key in oldKeys)) {\n              fragment = this.createIteration(key, i);\n\n              this.iterations.push(fragment);\n              if (this.rendered) fragment.render(docFrag);\n\n              i += 1;\n            }\n          });\n        }\n\n        if (this.rendered) {\n          const parentNode = this.parent.findParentNode();\n          const anchor = this.parent.findNextNode(this.owner);\n\n          parentNode.insertBefore(docFrag, anchor);\n        }\n      }\n    }\n\n    this.updating = false;\n  }\n\n  updateLast() {\n    if (this.lastModel) this.lastModel.applyValue(this.length - 1);\n  }\n\n  updatePostShuffle() {\n    const newIndices = this.pendingNewIndices[0];\n    const parentNode = this.rendered ? this.parent.findParentNode() : null;\n    const nextNode = parentNode && this.owner.findNextNode();\n    const docFrag = parentNode ? createDocumentFragment() : null;\n\n    // map first shuffle through\n    this.pendingNewIndices.slice(1).forEach(indices => {\n      newIndices.forEach((newIndex, oldIndex) => {\n        newIndices[oldIndex] = indices[newIndex];\n      });\n    });\n\n    const len = (this.length = this.context.get().length);\n    const prev = this.previousIterations;\n    const iters = this.iterations;\n    const value = this.context.get();\n    const stash = {};\n    let idx, dest, pos, next, anchor, rebound;\n\n    const map = new Array(newIndices.length);\n    newIndices.forEach((e, i) => (map[e] = i));\n\n    this.updateLast();\n\n    idx = pos = 0;\n    while (idx < len) {\n      dest = newIndices[pos];\n      next = null;\n      rebound = false;\n\n      if (dest === -1) {\n        // drop it like it's hot\n        prev[pos].unbind().unrender(true);\n        prev[pos++] = 0;\n      } else if (dest > idx) {\n        // need to stash or pull one up\n        next = newIndices[pos + 1]; // TODO: maybe a shouldMove function that tracks multiple entries?\n        if (next <= dest) {\n          stash[dest] = prev[pos];\n          prev[pos++] = null;\n        } else {\n          next = stash[idx] || prev[map[idx]];\n          prev[map[idx]] = null;\n          anchor = prev[nextRendered(pos, newIndices, prev)];\n          anchor = (anchor && parentNode && anchor.firstNode()) || nextNode;\n\n          if (next) {\n            rebound = this.source && next.lastValue !== value[idx];\n            swizzleFragment(this, next, idx, idx);\n            if (parentNode) parentNode.insertBefore(next.detach(), anchor);\n          } else {\n            next = iters[idx] = this.createIteration(idx, idx);\n            if (parentNode) {\n              next.render(docFrag);\n              parentNode.insertBefore(docFrag, anchor);\n            }\n          }\n\n          idx++;\n        }\n      } else {\n        // all is well\n        next = iters[idx];\n        anchor = prev[nextRendered(pos, newIndices, prev)];\n        anchor = (anchor && parentNode && anchor.firstNode()) || nextNode;\n        if (!next) {\n          next = iters[idx] = this.createIteration(idx, idx);\n          if (parentNode) {\n            next.render(docFrag);\n            parentNode.insertBefore(docFrag, anchor);\n          }\n        } else if (pos !== idx || stash[idx]) {\n          rebound = this.source && next.lastValue !== value[idx];\n          swizzleFragment(this, next, idx, idx);\n          if (stash[idx] && parentNode) parentNode.insertBefore(next.detach(), anchor);\n        }\n\n        idx++;\n        prev[pos++] = null;\n      }\n\n      if (next && isObjectType(next)) {\n        if (next.shouldRebind || rebound) {\n          next.rebound(rebound);\n          next.shouldRebind = 0;\n        }\n        next.update();\n        next.shuffled();\n      }\n    }\n\n    // clean up any stragglers\n    const plen = prev.length;\n    for (let i = 0; i < plen; i++) prev[i] && prev[i].unbind().unrender(true);\n\n    if (this.shuffler) this.values = shuffleValues(this, this.shuffler);\n\n    this.pendingNewIndices = null;\n    this.previousIterations = null;\n  }\n}\n\nRepeatedFragment.prototype.getContext = getContext;\nRepeatedFragment.prototype.getKeypath = getKeypath;\n\n// find the topmost delegate\nfunction findDelegate(start) {\n  let frag = start;\n  let delegate, el;\n\n  out: while (frag) {\n    // find next element\n    el = 0;\n    while (!el && frag) {\n      if (frag.owner.type === ELEMENT) el = frag.owner;\n      if (frag.owner.ractive && frag.owner.ractive.delegate === false) break out;\n      frag = frag.parent || frag.componentParent;\n    }\n\n    if (el.delegate === false) break out;\n    delegate = el.delegate || el;\n\n    // find next repeated fragment\n    while (frag) {\n      if (frag.iterations) break;\n      if (frag.owner.ractive && frag.owner.ractive.delegate === false) break out;\n      frag = frag.parent || frag.componentParent;\n    }\n  }\n\n  return delegate;\n}\n\nfunction nextRendered(start, newIndices, frags) {\n  const len = newIndices.length;\n  for (let i = start; i < len; i++) {\n    if (~newIndices[i] && frags[i] && frags[i].rendered) return i;\n  }\n}\n\nfunction swizzleFragment(section, fragment, key, idx) {\n  const model = section.context ? contextFor(section, fragment, key) : undefined;\n\n  fragment.key = key;\n  fragment.index = idx;\n  fragment.context = model;\n  if (section.source) fragment.lastValue = model && model.get();\n\n  if (fragment.idxModel) fragment.idxModel.applyValue(idx);\n  if (fragment.keyModel) fragment.keyModel.applyValue(key);\n  if (fragment.pathModel) {\n    fragment.pathModel.context = model;\n    fragment.pathModel.applyValue(model.getKeypath());\n  }\n  if (fragment.rootModel) {\n    fragment.rootModel.context = model;\n    fragment.rootModel.applyValue(model.getKeypath(fragment.ractive.root));\n  }\n\n  // handle any aliases\n  const aliases = fragment.aliases;\n  section.aliases &&\n    section.aliases.forEach(a => {\n      if (a.x.r === '.') aliases[a.n] = model;\n      else if (a.x.r === '@index') aliases[a.n] = fragment.getIndex();\n      else if (a.x.r === '@key') aliases[a.n] = fragment.getKey();\n      else if (a.x.r === '@keypath') aliases[a.n] = fragment.getKeypath();\n      else if (a.x.r === '@rootpath') aliases[a.n] = fragment.getKeypath(true);\n    });\n}\n\nfunction shuffleValues(section, shuffler) {\n  if (shuffler === true) {\n    return section.context.get().slice();\n  } else {\n    return section.context.get().map(v => shuffler.reduce((a, c) => a && a[c], v));\n  }\n}\n\nfunction contextFor(section, fragment, key) {\n  if (section.source) {\n    let idx;\n    const source = section.source.model.get();\n    if (source.indexOf && ~(idx = source.indexOf(section.context.joinKey(key).get())))\n      return section.source.model.joinKey(idx);\n  }\n\n  return section.context.joinKey(key);\n}\n","import { addToArray, removeFromArray } from 'utils/array';\nimport { unescapeKey } from 'shared/keypaths';\nimport { capture } from 'src/global/capture';\nimport { handleChange } from 'src/shared/methodCallers';\nimport noop from 'utils/noop';\n\nexport default class KeyModel {\n  constructor(value, context, instance) {\n    this.value = this.key = value;\n    this.context = context;\n    this.isReadonly = this.isKey = true;\n    this.deps = [];\n    this.links = [];\n    this.children = [];\n    this.instance = instance;\n  }\n\n  applyValue(value) {\n    if (value !== this.value) {\n      this.value = this.key = value;\n      this.deps.forEach(handleChange);\n      this.links.forEach(handleChange);\n      this.children.forEach(c => {\n        c.applyValue(c.context.getKeypath(c.instance));\n      });\n    }\n  }\n\n  destroyed() {\n    if (this.upstream) this.upstream.unregisterChild(this);\n  }\n\n  get(shouldCapture) {\n    if (shouldCapture) capture(this);\n    return unescapeKey(this.value);\n  }\n\n  getKeypath() {\n    return unescapeKey(this.value);\n  }\n\n  has() {\n    return false;\n  }\n\n  rebind(next, previous) {\n    let i = this.deps.length;\n    while (i--) this.deps[i].rebind(next, previous, false);\n\n    i = this.links.length;\n    while (i--) this.links[i].relinking(next, false);\n  }\n\n  register(dependant) {\n    this.deps.push(dependant);\n  }\n\n  registerChild(child) {\n    addToArray(this.children, child);\n    child.upstream = this;\n  }\n\n  registerLink(link) {\n    addToArray(this.links, link);\n  }\n\n  unregister(dependant) {\n    removeFromArray(this.deps, dependant);\n  }\n\n  unregisterChild(child) {\n    removeFromArray(this.children, child);\n  }\n\n  unregisterLink(link) {\n    removeFromArray(this.links, link);\n  }\n}\n\nKeyModel.prototype.reference = noop;\nKeyModel.prototype.unreference = noop;\n","import { ELEMENT, PARTIAL, SECTION, SECTION_WITH, YIELDER } from 'config/types';\nimport { assign, create, hasOwn, keys } from 'utils/object';\nimport { isArray, isFunction, isObjectType, isString } from 'utils/is';\nimport noop from 'utils/noop';\nimport { MustacheContainer } from './shared/Mustache';\nimport Fragment from '../Fragment';\nimport getPartialTemplate from './partial/getPartialTemplate';\nimport { resolveAliases } from './Alias';\nimport { warnOnceIfDebug, warnIfDebug } from 'utils/log';\nimport parser from 'src/Ractive/config/runtime-parser';\nimport runloop from 'src/global/runloop';\nimport { applyCSS } from 'src/global/css';\nimport { splitKeypath } from 'shared/keypaths';\n\nexport default function Partial(options) {\n  MustacheContainer.call(this, options);\n\n  const tpl = options.template;\n\n  // yielder is a special form of partial that will later require special handling\n  if (tpl.t === YIELDER) {\n    this.yielder = 1;\n  } else if (tpl.t === ELEMENT) {\n    // this is a macro partial, complete with macro constructor\n    // leaving this as an element will confuse up-template searches\n    this.type = PARTIAL;\n    this.macro = options.macro;\n  }\n}\n\nconst proto = (Partial.prototype = create(MustacheContainer.prototype));\n\nassign(proto, {\n  constructor: Partial,\n\n  bind() {\n    const template = this.template;\n\n    if (this.yielder) {\n      // the container is the instance that owns this node\n      this.container = this.up.ractive;\n      this.component = this.container.component;\n      this.containerFragment = this.up;\n\n      // normal component\n      if (this.component) {\n        // yields skip the owning instance and go straight to the surrounding context\n        this.up = this.component.up;\n\n        // {{yield}} is equivalent to {{yield content}}\n        if (!template.r && !template.x && !template.tx) this.refName = 'content';\n      } else {\n        // plain-ish instance that may be attached to a parent later\n        this.fragment = new Fragment({\n          owner: this,\n          template: []\n        });\n        this.fragment.bind();\n        return;\n      }\n    }\n\n    // this is a macro/super partial\n    if (this.macro) {\n      this.fn = this.macro;\n    } else {\n      // this is a plain partial or yielder\n      if (!this.refName) this.refName = template.r;\n\n      // if the refName exists as a partial, this is a plain old partial reference where no model binding will happen\n      if (this.refName) {\n        partialFromValue(this, this.refName);\n      }\n\n      // this is a dynamic/inline partial\n      if (!this.partial && !this.fn) {\n        MustacheContainer.prototype.bind.call(this);\n        if (this.model) partialFromValue(this, this.model.get());\n      }\n    }\n\n    if (!this.partial && !this.fn) {\n      warnOnceIfDebug(`Could not find template for partial '${this.name}'`);\n    }\n\n    createFragment(this, this.partial || []);\n\n    // macro/super partial\n    if (this.fn) initMacro(this);\n\n    this.fragment.bind();\n  },\n\n  bubble() {\n    if (!this.dirty) {\n      this.dirty = true;\n\n      if (this.yielder) {\n        this.containerFragment.bubble();\n      } else {\n        this.up.bubble();\n      }\n    }\n  },\n\n  findNextNode() {\n    return (this.containerFragment || this.up).findNextNode(this);\n  },\n\n  handleChange() {\n    this.dirtyTemplate = true;\n    this.externalChange = true;\n    this.bubble();\n  },\n\n  rebound(update) {\n    const aliases = this.fragment && this.fragment.aliases;\n    if (aliases) {\n      for (const k in aliases) {\n        if (aliases[k].rebound) aliases[k].rebound(update);\n        else {\n          aliases[k].unreference();\n          aliases[k] = 0;\n        }\n      }\n      if (this.template.z) {\n        resolveAliases(this.template.z, this.containerFragment || this.up, aliases);\n      }\n    }\n    if (this._attrs) {\n      keys(this._attrs).forEach(k => this._attrs[k].rebound(update));\n    }\n    MustacheContainer.prototype.rebound.call(this, update);\n  },\n\n  refreshAttrs() {\n    keys(this._attrs).forEach(k => {\n      this.handle.attributes[k] = !this._attrs[k].items.length || this._attrs[k].valueOf();\n    });\n  },\n\n  resetTemplate() {\n    if (this.fn && this.proxy) {\n      if (this.externalChange) {\n        if (isFunction(this.proxy.teardown)) this.proxy.teardown();\n        this.fn = this.proxy = null;\n      } else {\n        this.partial = this.fnTemplate;\n        return true;\n      }\n    }\n\n    const partial = this.partial;\n    this.partial = null;\n\n    if (this.refName) {\n      this.partial = getPartialTemplate(this.ractive, this.refName, this.up);\n    }\n\n    if (!this.partial && this.model) {\n      partialFromValue(this, this.model.get());\n    }\n\n    if (!this.fn && partial === this.partial) return false;\n\n    this.unbindAttrs();\n\n    if (this.fn) {\n      initMacro(this);\n      if (isFunction(this.proxy.render)) runloop.scheduleTask(() => this.proxy.render());\n    } else if (!this.partial) {\n      warnOnceIfDebug(`Could not find template for partial '${this.name}'`);\n    }\n\n    return true;\n  },\n\n  render(target, occupants) {\n    if (this.fn && this.fn._cssDef && !this.fn._cssDef.applied) applyCSS();\n\n    this.fragment.render(target, occupants);\n\n    if (this.proxy && isFunction(this.proxy.render)) this.proxy.render();\n  },\n\n  unbind() {\n    this.fragment.unbind();\n\n    this.fragment.aliases = null;\n\n    this.unbindAttrs();\n\n    MustacheContainer.prototype.unbind.call(this);\n  },\n\n  unbindAttrs() {\n    if (this._attrs) {\n      keys(this._attrs).forEach(k => {\n        this._attrs[k].unbind();\n      });\n    }\n  },\n\n  unrender(shouldDestroy) {\n    if (this.proxy && isFunction(this.proxy.teardown)) this.proxy.teardown();\n\n    this.fragment.unrender(shouldDestroy);\n  },\n\n  update() {\n    const proxy = this.proxy;\n    this.updating = 1;\n\n    if (this.dirtyAttrs) {\n      this.dirtyAttrs = false;\n      keys(this._attrs).forEach(k => this._attrs[k].update());\n      this.refreshAttrs();\n      if (isFunction(proxy.update)) proxy.update(this.handle.attributes);\n    }\n\n    if (this.dirtyTemplate) {\n      this.dirtyTemplate = false;\n      this.resetTemplate() && this.fragment.resetTemplate(this.partial || []);\n    }\n\n    if (this.dirty) {\n      this.dirty = false;\n      if (proxy && isFunction(proxy.invalidate)) proxy.invalidate();\n      this.fragment.update();\n    }\n\n    this.externalChange = false;\n    this.updating = 0;\n  }\n});\n\nfunction createFragment(self, partial) {\n  self.partial = partial;\n  contextifyTemplate(self);\n\n  const options = {\n    owner: self,\n    template: self.partial\n  };\n\n  if (self.yielder) options.ractive = self.container.parent;\n\n  if (self.fn) options.cssIds = self.fn._cssIds;\n\n  const fragment = (self.fragment = new Fragment(options));\n\n  // partials may have aliases that need to be in place before binding\n  if (self.template.z) {\n    fragment.aliases = resolveAliases(self.template.z, self.containerFragment || self.up);\n  }\n}\n\nfunction contextifyTemplate(self) {\n  if (self.template.c) {\n    self.partial = [{ t: SECTION, n: SECTION_WITH, f: self.partial }];\n    assign(self.partial[0], self.template.c);\n    if (self.yielder) self.partial[0].y = self;\n  }\n}\n\nfunction partialFromValue(self, value, okToParse) {\n  let tpl = value;\n\n  if (isArray(tpl)) {\n    self.partial = tpl;\n  } else if (tpl && isObjectType(tpl)) {\n    if (isArray(tpl.t)) self.partial = tpl.t;\n    else if (isString(tpl.template))\n      self.partial = parsePartial(tpl.template, tpl.template, self.ractive).t;\n  } else if (isFunction(tpl) && tpl.styleSet) {\n    self.fn = tpl;\n    if (self.fragment) self.fragment.cssIds = tpl._cssIds;\n  } else if (tpl != null) {\n    tpl = getPartialTemplate(self.ractive, '' + tpl, self.containerFragment || self.up);\n    if (tpl) {\n      self.name = value;\n      if (tpl.styleSet) {\n        self.fn = tpl;\n        if (self.fragment) self.fragment.cssIds = tpl._cssIds;\n      } else self.partial = tpl;\n    } else if (okToParse) {\n      self.partial = parsePartial('' + value, '' + value, self.ractive).t;\n    } else {\n      self.name = value;\n    }\n  }\n\n  return self.partial;\n}\n\nfunction setTemplate(template) {\n  partialFromValue(this, template, true);\n\n  if (!this.initing) {\n    this.dirtyTemplate = true;\n    this.fnTemplate = this.partial;\n\n    if (this.updating) {\n      this.bubble();\n      runloop.promise();\n    } else {\n      const promise = runloop.start();\n\n      this.bubble();\n      runloop.end();\n\n      return promise;\n    }\n  }\n}\n\nfunction aliasLocal(ref, name) {\n  const aliases = this.fragment.aliases || (this.fragment.aliases = {});\n  if (!name) {\n    aliases[ref] = this._data;\n  } else {\n    aliases[name] = this._data.joinAll(splitKeypath(ref));\n  }\n}\n\nconst extras = 'extra-attributes';\n\nfunction initMacro(self) {\n  const fn = self.fn;\n  const fragment = self.fragment;\n\n  // defensively copy the template in case it changes\n  const template = (self.template = assign({}, self.template));\n  const handle = (self.handle = fragment.getContext({\n    proxy: self,\n    aliasLocal,\n    name: self.template.e || self.name,\n    attributes: {},\n    setTemplate: setTemplate.bind(self),\n    template\n  }));\n\n  if (!template.p) template.p = {};\n  template.p = handle.partials = assign({}, template.p);\n  if (!hasOwn(template.p, 'content')) template.p.content = template.f || [];\n\n  if (isArray(fn.attributes)) {\n    self._attrs = {};\n\n    const invalidate = function() {\n      this.dirty = true;\n      self.dirtyAttrs = true;\n      self.bubble();\n    };\n\n    if (isArray(template.m)) {\n      const attrs = template.m;\n      template.p[extras] = template.m = attrs.filter(a => !~fn.attributes.indexOf(a.n));\n      attrs.filter(a => ~fn.attributes.indexOf(a.n)).forEach(a => {\n        const fragment = new Fragment({\n          template: a.f,\n          owner: self\n        });\n        fragment.bubble = invalidate;\n        fragment.findFirstNode = noop;\n        self._attrs[a.n] = fragment;\n      });\n    } else {\n      template.p[extras] = [];\n    }\n  } else {\n    template.p[extras] = template.m;\n  }\n\n  if (self._attrs) {\n    keys(self._attrs).forEach(k => {\n      self._attrs[k].bind();\n    });\n    self.refreshAttrs();\n  }\n\n  self.initing = 1;\n  self.proxy = fn(handle, handle.attributes) || {};\n  if (!self.partial) self.partial = [];\n  self.fnTemplate = self.partial;\n  self.initing = 0;\n\n  contextifyTemplate(self);\n  fragment.resetTemplate(self.partial);\n}\n\nfunction parsePartial(name, partial, ractive) {\n  let parsed;\n\n  try {\n    parsed = parser.parse(partial, parser.getParseOptions(ractive));\n  } catch (e) {\n    warnIfDebug(`Could not parse partial from expression '${name}'\\n${e.message}`);\n  }\n\n  return parsed || { t: [] };\n}\n","import { noRegistryFunctionReturn } from 'config/errors';\nimport { warnIfDebug } from 'utils/log';\nimport { fillGaps, hasOwn } from 'utils/object';\nimport parser from 'src/Ractive/config/runtime-parser';\nimport { findInstance } from 'shared/registry';\nimport { isArray, isFunction } from 'utils/is';\n\nexport default function getPartialTemplate(ractive, name, up) {\n  // If the partial in instance or view heirarchy instances, great\n  let partial = getPartialFromRegistry(ractive, name, up || {});\n  if (partial) return partial;\n\n  // Does it exist on the page as a script tag?\n  partial = parser.fromId(name, { noThrow: true });\n  if (partial) {\n    // parse and register to this ractive instance\n    const parsed = parser.parseFor(partial, ractive);\n\n    // register extra partials on the ractive instance if they don't already exist\n    if (parsed.p) fillGaps(ractive.partials, parsed.p);\n\n    // register (and return main partial if there are others in the template)\n    return (ractive.partials[name] = parsed.t);\n  }\n}\n\nfunction getPartialFromRegistry(ractive, name, up) {\n  // if there was an instance up-hierarchy, cool\n  let partial = findParentPartial(name, up.owner);\n  if (partial) return partial;\n\n  // find first instance in the ractive or view hierarchy that has this partial\n  const instance = findInstance('partials', ractive, name);\n\n  if (!instance) {\n    return;\n  }\n\n  partial = instance.partials[name];\n\n  // partial is a function?\n  let fn;\n  if (isFunction(partial)) {\n    fn = partial;\n    // super partial\n    if (fn.styleSet) return fn;\n\n    fn = partial.bind(instance);\n    fn.isOwner = hasOwn(instance.partials, name);\n    partial = fn.call(ractive, parser);\n  }\n\n  if (!partial && partial !== '') {\n    warnIfDebug(noRegistryFunctionReturn, name, 'partial', 'partial', {\n      ractive\n    });\n    return;\n  }\n\n  // If this was added manually to the registry,\n  // but hasn't been parsed, parse it now\n  if (!parser.isParsed(partial)) {\n    // use the parseOptions of the ractive instance on which it was found\n    const parsed = parser.parseFor(partial, instance);\n\n    // Partials cannot contain nested partials!\n    // TODO add a test for this\n    if (parsed.p) {\n      warnIfDebug('Partials ({{>%s}}) cannot contain nested inline partials', name, { ractive });\n    }\n\n    // if fn, use instance to store result, otherwise needs to go\n    // in the correct point in prototype chain on instance or constructor\n    const target = fn ? instance : findOwner(instance, name);\n\n    // may be a template with partials, which need to be registered and main template extracted\n    target.partials[name] = partial = parsed.t;\n  }\n\n  // store for reset\n  if (fn) partial._fn = fn;\n\n  return partial.v ? partial.t : partial;\n}\n\nfunction findOwner(ractive, key) {\n  return hasOwn(ractive.partials, key) ? ractive : findConstructor(ractive.constructor, key);\n}\n\nfunction findConstructor(constructor, key) {\n  if (!constructor) {\n    return;\n  }\n  return hasOwn(constructor.partials, key) ? constructor : findConstructor(constructor.Parent, key);\n}\n\nfunction findParentPartial(name, parent) {\n  if (parent) {\n    if (\n      parent.template &&\n      parent.template.p &&\n      !isArray(parent.template.p) &&\n      hasOwn(parent.template.p, name)\n    ) {\n      return parent.template.p[name];\n    } else if (parent.up && parent.up.owner) {\n      return findParentPartial(name, parent.up.owner);\n    }\n  }\n}\n","import { removeFromArray } from 'utils/array';\nimport Element from '../../Element';\nimport findElement from '../../shared/findElement';\nimport { isArray } from 'utils/is';\n\nexport default class Option extends Element {\n  constructor(options) {\n    const template = options.template;\n    if (!template.a) template.a = {};\n\n    // If the value attribute is missing, use the element's content,\n    // as long as it isn't disabled\n    if (template.a.value === undefined && !('disabled' in template.a)) {\n      template.a.value = template.f || '';\n    }\n\n    super(options);\n\n    this.select = findElement(this.parent || this.up, false, 'select');\n  }\n\n  bind() {\n    if (!this.select) {\n      super.bind();\n      return;\n    }\n\n    // If the select has a value, it overrides the `selected` attribute on\n    // this option - so we delete the attribute\n    const selectedAttribute = this.attributeByName.selected;\n    if (selectedAttribute && this.select.getAttribute('value') !== undefined) {\n      const index = this.attributes.indexOf(selectedAttribute);\n      this.attributes.splice(index, 1);\n      delete this.attributeByName.selected;\n    }\n\n    super.bind();\n    this.select.options.push(this);\n  }\n\n  bubble() {\n    // if we're using content as value, may need to update here\n    const value = this.getAttribute('value');\n    if (this.node && this.node.value !== value) {\n      this.node._ractive.value = value;\n    }\n    super.bubble();\n  }\n\n  getAttribute(name) {\n    const attribute = this.attributeByName[name];\n    return attribute\n      ? attribute.getValue()\n      : name === 'value' && this.fragment\n        ? this.fragment.valueOf()\n        : undefined;\n  }\n\n  isSelected() {\n    const optionValue = this.getAttribute('value');\n\n    if (optionValue === undefined || !this.select) {\n      return false;\n    }\n\n    const selectValue = this.select.getAttribute('value');\n\n    if (this.select.compare(selectValue, optionValue)) {\n      return true;\n    }\n\n    if (this.select.getAttribute('multiple') && isArray(selectValue)) {\n      let i = selectValue.length;\n      while (i--) {\n        if (this.select.compare(selectValue[i], optionValue)) {\n          return true;\n        }\n      }\n    }\n  }\n\n  render(target, occupants) {\n    super.render(target, occupants);\n\n    if (!this.attributeByName.value) {\n      this.node._ractive.value = this.getAttribute('value');\n    }\n  }\n\n  unbind() {\n    super.unbind();\n\n    if (this.select) {\n      removeFromArray(this.select.options, this);\n    }\n  }\n}\n","import { INTERPOLATOR } from '../../../config/types';\nimport Item from '../shared/Item';\nimport Fragment from '../../Fragment';\nimport findElement from '../shared/findElement';\nimport parseJSON from '../../../utils/parseJSON';\nimport resolve from '../../resolvers/resolve';\nimport runloop from '../../../global/runloop';\nimport { warnIfDebug } from 'utils/log';\nimport { splitKeypath } from 'shared/keypaths';\nimport { isArray, isObjectType, isString } from 'utils/is';\n\nexport default class Mapping extends Item {\n  constructor(options) {\n    super(options);\n\n    this.name = options.template.n;\n\n    this.owner = options.owner || options.up.owner || options.element || findElement(options.up);\n    this.element =\n      options.element || (this.owner.attributeByName ? this.owner : findElement(options.up));\n    this.up = this.element.up; // shared\n    this.ractive = this.up.ractive;\n\n    this.element.attributeByName[this.name] = this;\n\n    this.value = options.template.f;\n  }\n\n  bind() {\n    const template = this.template.f;\n    const viewmodel = this.element.instance.viewmodel;\n\n    if (template === 0) {\n      // empty attributes are `true`\n      viewmodel.joinKey(this.name).set(true);\n    } else if (isString(template)) {\n      const parsed = parseJSON(template);\n      viewmodel.joinKey(this.name).set(parsed ? parsed.value : template);\n    } else if (isArray(template)) {\n      createMapping(this, true);\n    }\n  }\n\n  rebound(update) {\n    if (this.boundFragment) this.boundFragment.rebound(update);\n    if (this.link) {\n      this.model = resolve(this.up, this.template.f[0]);\n      const model = this.element.instance.viewmodel.joinAll(splitKeypath(this.name));\n      model.link(this.model, this.name, { mapping: true });\n    }\n  }\n\n  render() {}\n\n  unbind() {\n    if (this.model) this.model.unregister(this);\n    if (this.boundFragment) this.boundFragment.unbind();\n\n    if (this.element.bound) {\n      if (this.link.target === this.model) this.link.owner.unlink();\n    }\n  }\n\n  unrender() {}\n\n  update() {\n    if (this.dirty) {\n      this.dirty = false;\n      if (this.boundFragment) this.boundFragment.update();\n    }\n  }\n}\n\nfunction createMapping(item) {\n  const template = item.template.f;\n  const viewmodel = item.element.instance.viewmodel;\n  const childData = viewmodel.value;\n\n  if (template.length === 1 && template[0].t === INTERPOLATOR) {\n    const model = resolve(item.up, template[0]);\n    const val = model.get(false);\n\n    // if the interpolator is not static\n    if (!template[0].s) {\n      item.model = model;\n      item.link = viewmodel.createLink(item.name, model, template[0].r, {\n        mapping: true\n      });\n\n      // initialize parent side of the mapping from child data\n      if (val === undefined && !model.isReadonly && item.name in childData) {\n        model.set(childData[item.name]);\n      }\n    } else if (!isObjectType(val) || template[0].x) {\n      // copy non-object, non-computed vals through\n      viewmodel.joinKey(splitKeypath(item.name)).set(val);\n    } else {\n      // warn about trying to copy an object\n      warnIfDebug(`Cannot copy non-computed object value from static mapping '${item.name}'`);\n    }\n\n    // if the item isn't going to manage the model, give it a change to tear down if it's computed\n    if (model !== item.model) model.unregister();\n  } else {\n    item.boundFragment = new Fragment({\n      owner: item,\n      template\n    }).bind();\n\n    item.model = viewmodel.joinKey(splitKeypath(item.name));\n    item.model.set(item.boundFragment.valueOf());\n\n    // item is a *bit* of a hack\n    item.boundFragment.bubble = () => {\n      Fragment.prototype.bubble.call(item.boundFragment);\n      // defer this to avoid mucking around model deps if there happens to be an expression involved\n      runloop.scheduleTask(() => {\n        item.boundFragment.update();\n        item.model.set(item.boundFragment.valueOf());\n      });\n    };\n  }\n}\n","import Parser from 'parse/Parser';\nimport readStringLiteral from 'parse/converters/expressions/primary/literal/readStringLiteral';\nimport readKey from 'parse/converters/expressions/shared/readKey';\nimport { hasOwn, keys } from 'utils/object';\n\n// simple JSON parser, without the restrictions of JSON parse\n// (i.e. having to double-quote keys).\n//\n// If passed a hash of values as the second argument, ${placeholders}\n// will be replaced with those values\n\nconst specials = {\n  true: true,\n  false: false,\n  null: null,\n  undefined\n};\n\nconst specialsPattern = new RegExp('^(?:' + keys(specials).join('|') + ')');\nconst numberPattern = /^(?:[+-]?)(?:(?:(?:0|[1-9]\\d*)?\\.\\d+)|(?:(?:0|[1-9]\\d*)\\.)|(?:0|[1-9]\\d*))(?:[eE][+-]?\\d+)?/;\nconst placeholderPattern = /\\$\\{([^\\}]+)\\}/g;\nconst placeholderAtStartPattern = /^\\$\\{([^\\}]+)\\}/;\nconst onlyWhitespace = /^\\s*$/;\n\nconst JsonParser = Parser.extend({\n  init(str, options) {\n    this.values = options.values;\n    this.sp();\n  },\n\n  postProcess(result) {\n    if (result.length !== 1 || !onlyWhitespace.test(this.leftover)) {\n      return null;\n    }\n\n    return { value: result[0].v };\n  },\n\n  converters: [\n    function getPlaceholder(parser) {\n      if (!parser.values) return null;\n\n      const placeholder = parser.matchPattern(placeholderAtStartPattern);\n\n      if (placeholder && hasOwn(parser.values, placeholder)) {\n        return { v: parser.values[placeholder] };\n      }\n    },\n\n    function getSpecial(parser) {\n      const special = parser.matchPattern(specialsPattern);\n      if (special) return { v: specials[special] };\n    },\n\n    function getNumber(parser) {\n      const number = parser.matchPattern(numberPattern);\n      if (number) return { v: +number };\n    },\n\n    function getString(parser) {\n      const stringLiteral = readStringLiteral(parser);\n      const values = parser.values;\n\n      if (stringLiteral && values) {\n        return {\n          v: stringLiteral.v.replace(\n            placeholderPattern,\n            (match, $1) => ($1 in values ? values[$1] : $1)\n          )\n        };\n      }\n\n      return stringLiteral;\n    },\n\n    function getObject(parser) {\n      if (!parser.matchString('{')) return null;\n\n      const result = {};\n\n      parser.sp();\n\n      if (parser.matchString('}')) {\n        return { v: result };\n      }\n\n      let pair;\n      while ((pair = getKeyValuePair(parser))) {\n        result[pair.key] = pair.value;\n\n        parser.sp();\n\n        if (parser.matchString('}')) {\n          return { v: result };\n        }\n\n        if (!parser.matchString(',')) {\n          return null;\n        }\n      }\n\n      return null;\n    },\n\n    function getArray(parser) {\n      if (!parser.matchString('[')) return null;\n\n      const result = [];\n\n      parser.sp();\n\n      if (parser.matchString(']')) {\n        return { v: result };\n      }\n\n      let valueToken;\n      while ((valueToken = parser.read())) {\n        result.push(valueToken.v);\n\n        parser.sp();\n\n        if (parser.matchString(']')) {\n          return { v: result };\n        }\n\n        if (!parser.matchString(',')) {\n          return null;\n        }\n\n        parser.sp();\n      }\n\n      return null;\n    }\n  ]\n});\n\nfunction getKeyValuePair(parser) {\n  parser.sp();\n\n  const key = readKey(parser);\n\n  if (!key) return null;\n\n  const pair = { key };\n\n  parser.sp();\n  if (!parser.matchString(':')) {\n    return null;\n  }\n  parser.sp();\n\n  const valueToken = parser.read();\n\n  if (!valueToken) return null;\n\n  pair.value = valueToken.v;\n  return pair;\n}\n\nexport default function(str, values) {\n  const parser = new JsonParser(str, { values });\n  return parser.result;\n}\n","import Element from '../../Element';\nimport { isFunction } from 'utils/is';\n\nexport default class Input extends Element {\n  render(target, occupants) {\n    super.render(target, occupants);\n    this.node.defaultValue = this.node.value;\n  }\n  compare(value, attrValue) {\n    const comparator = this.getAttribute('value-comparator');\n    if (comparator) {\n      if (isFunction(comparator)) {\n        return comparator(value, attrValue);\n      }\n      if (value && attrValue) {\n        return value[comparator] == attrValue[comparator];\n      }\n    }\n    return value == attrValue;\n  }\n}\n","import progressiveText from './shared/progressiveText';\nimport { escapeHtml } from 'utils/html';\nimport { safeToStringValue } from 'utils/dom';\nimport { detachNode } from 'utils/dom';\nimport Mustache from './shared/Mustache';\nimport { inAttributes } from './element/ConditionalAttribute';\n\nexport default class Interpolator extends Mustache {\n  bubble() {\n    if (this.owner) this.owner.bubble();\n    super.bubble();\n  }\n\n  detach() {\n    return detachNode(this.node);\n  }\n\n  firstNode() {\n    return this.node;\n  }\n\n  getString() {\n    return this.model ? safeToStringValue(this.model.get()) : '';\n  }\n\n  render(target, occupants) {\n    if (inAttributes()) return;\n    const value = (this.value = this.getString());\n\n    this.rendered = true;\n\n    progressiveText(this, target, occupants, value);\n  }\n\n  toString(escape) {\n    const string = this.getString();\n    return escape ? escapeHtml(string) : string;\n  }\n\n  unrender(shouldDestroy) {\n    if (shouldDestroy) this.detach();\n    this.rendered = false;\n  }\n\n  update() {\n    if (this.dirty) {\n      this.dirty = false;\n      if (this.rendered) {\n        const value = this.getString();\n        if (value !== this.value) this.node.data = this.value = value;\n      }\n    }\n  }\n\n  valueOf() {\n    return this.model ? this.model.get() : undefined;\n  }\n}\n","import { rebindMatch } from 'shared/rebind';\nimport Item, { ContainerItem } from './Item';\nimport resolve from '../../resolvers/resolve';\nimport { assign } from 'utils/object';\n\nexport default class Mustache extends Item {\n  constructor(options) {\n    super(options);\n\n    if (options.owner) this.parent = options.owner;\n\n    this.isStatic = !!options.template.s;\n\n    this.model = null;\n    this.dirty = false;\n  }\n\n  bind(pre) {\n    // yield mustaches and inner contexts should resolve in container context\n    const start = this.template.y\n      ? this.template.y.containerFragment\n      : this.containerFragment || this.up;\n    // try to find a model for this view\n    const model = pre || resolve(start, this.template);\n\n    if (model) {\n      const value = model.get();\n\n      if (this.isStatic) {\n        this.model = { get: () => value };\n        model.unreference();\n        return;\n      }\n\n      model.register(this);\n      this.model = model;\n    }\n  }\n\n  handleChange() {\n    this.bubble();\n  }\n\n  rebind(next, previous, safe) {\n    if (this.isStatic) return;\n\n    next = rebindMatch(this.template, next, previous, this.up);\n    if (next === this.model) return false;\n\n    if (this.model) {\n      this.model.unregister(this);\n    }\n    if (next) next.addShuffleRegister(this, 'mark');\n    this.model = next;\n    if (!safe) this.handleChange();\n    return true;\n  }\n\n  rebound(update) {\n    if (this.model) {\n      if (this.model.rebound) this.model.rebound(update);\n      else {\n        // check to see if the model actually changed...\n        // yield mustaches and inner contexts should resolve in container context\n        const start = this.template.y\n          ? this.template.y.containerFragment\n          : this.containerFragment || this.up;\n        // try to find a model for this view\n        const model = resolve(start, this.template);\n        if (model !== this.model) {\n          this.model.unregister(this);\n          this.bind(model);\n        }\n      }\n\n      if (update) this.bubble();\n    }\n    if (this.fragment) this.fragment.rebound(update);\n  }\n\n  unbind() {\n    if (!this.isStatic) {\n      this.model && this.model.unregister(this);\n      this.model = undefined;\n    }\n  }\n}\n\nexport function MustacheContainer(options) {\n  Mustache.call(this, options);\n}\n\nconst proto = (MustacheContainer.prototype = Object.create(ContainerItem.prototype));\n\nassign(proto, Mustache.prototype, { constructor: MustacheContainer });\n","import { doc } from 'config/environment';\n\nexport default function progressiveText(item, target, occupants, text) {\n  if (occupants) {\n    let n = occupants[0];\n    if (n && n.nodeType === 3) {\n      const idx = n.nodeValue.indexOf(text);\n      occupants.shift();\n\n      if (idx === 0) {\n        if (n.nodeValue.length !== text.length) {\n          occupants.unshift(n.splitText(text.length));\n        }\n      } else {\n        n.nodeValue = text;\n      }\n    } else {\n      n = item.node = doc.createTextNode(text);\n      if (occupants[0]) {\n        target.insertBefore(n, occupants[0]);\n      } else {\n        target.appendChild(n);\n      }\n    }\n\n    item.node = n;\n  } else {\n    if (!item.node) item.node = doc.createTextNode(text);\n    target.appendChild(item.node);\n  }\n}\n","import { ANCHOR, COMPONENT } from 'config/types';\nimport { warnIfDebug, warnOnceIfDebug } from 'utils/log';\nimport { addToArray, removeFromArray } from 'utils/array';\nimport noop from 'utils/noop';\nimport fireEvent from 'src/events/fireEvent';\nimport { splitKeypath } from 'shared/keypaths';\nimport { findInViewHierarchy } from 'shared/registry';\nimport findElement from './findElement';\nimport { DOMEvent, CustomEvent } from '../element/ElementEvents';\nimport RactiveEvent from '../component/RactiveEvent';\nimport { resolveArgs, setupArgsFn } from '../shared/directiveArgs';\nimport Context from 'src/shared/Context';\nimport { isArray, isString } from 'utils/is';\nimport getFunction from 'shared/getFunction';\nimport resolveReference from '../../resolvers/resolveReference';\n\nconst specialPattern = /^(event|arguments|@node|@event|@context)(\\..+)?$/;\nconst dollarArgsPattern = /^\\$(\\d+)(\\..+)?$/;\n\nexport default class EventDirective {\n  constructor(options) {\n    this.owner = options.owner || options.up.owner || findElement(options.up);\n    this.element = this.owner.attributeByName ? this.owner : findElement(options.up, true);\n    this.template = options.template;\n    this.up = options.up;\n    this.ractive = options.up.ractive;\n    this.events = [];\n  }\n\n  bind() {\n    if (this.element.type === COMPONENT || this.element.type === ANCHOR) {\n      this.template.n.forEach(n => {\n        this.events.push(new RactiveEvent(this.element, n));\n      });\n    } else {\n      let args;\n      if ((args = this.template.a)) {\n        const rs = args.r.map(r => {\n          const model = resolveReference(this.up, r);\n          return model ? model.get() : undefined;\n        });\n        try {\n          args = getFunction(args.s, rs.length).apply(null, rs);\n        } catch (err) {\n          args = null;\n          warnIfDebug(\n            `Failed to compute args for event on-${this.template.n.join('- ')}: ${err.message ||\n              err}`\n          );\n        }\n      }\n\n      this.template.n.forEach(n => {\n        const fn = findInViewHierarchy('events', this.ractive, n);\n        if (fn) {\n          this.events.push(new CustomEvent(fn, this.element, n, args));\n        } else {\n          this.events.push(new DOMEvent(n, this.element));\n        }\n      });\n    }\n\n    // method calls\n    this.models = null;\n\n    addToArray(this.element.events || (this.element.events = []), this);\n\n    setupArgsFn(this, this.template);\n    if (!this.fn) this.action = this.template.f;\n\n    this.events.forEach(e => e.bind(this));\n  }\n\n  destroyed() {\n    this.events.forEach(e => e.unrender());\n  }\n\n  fire(event, args = []) {\n    const context =\n      event instanceof Context && event.refire ? event : this.element.getContext(event);\n\n    if (this.fn) {\n      const values = [];\n\n      const models = resolveArgs(this, this.template, this.up, {\n        specialRef(ref) {\n          const specialMatch = specialPattern.exec(ref);\n          if (specialMatch) {\n            // on-click=\"foo(event.node)\"\n            return {\n              special: specialMatch[1],\n              keys: specialMatch[2] ? splitKeypath(specialMatch[2].substr(1)) : []\n            };\n          }\n\n          const dollarMatch = dollarArgsPattern.exec(ref);\n          if (dollarMatch) {\n            // on-click=\"foo($1)\"\n            return {\n              special: 'arguments',\n              keys: [dollarMatch[1] - 1].concat(\n                dollarMatch[2] ? splitKeypath(dollarMatch[2].substr(1)) : []\n              )\n            };\n          }\n        }\n      });\n\n      if (models) {\n        models.forEach(model => {\n          if (!model) return values.push(undefined);\n\n          if (model.special) {\n            const which = model.special;\n            let obj;\n\n            if (which === '@node') {\n              obj = this.element.node;\n            } else if (which === '@event') {\n              obj = event && event.event;\n            } else if (which === 'event') {\n              warnOnceIfDebug(\n                `The event reference available to event directives is deprecated and should be replaced with @context and @event`\n              );\n              obj = context;\n            } else if (which === '@context') {\n              obj = context;\n            } else {\n              obj = args;\n            }\n\n            const keys = model.keys.slice();\n\n            while (obj && keys.length) obj = obj[keys.shift()];\n            return values.push(obj);\n          }\n\n          if (model.wrapper) {\n            return values.push(model.wrapperValue);\n          }\n\n          values.push(model.get());\n        });\n      }\n\n      // make event available as `this.event`\n      const ractive = this.ractive;\n      const oldEvent = ractive.event;\n\n      ractive.event = context;\n      const returned = this.fn.apply(ractive, values);\n      let result = returned.pop();\n\n      // Auto prevent and stop if return is explicitly false\n      if (result === false) {\n        const original = event ? event.original : undefined;\n        if (original) {\n          original.preventDefault && original.preventDefault();\n          original.stopPropagation && original.stopPropagation();\n        } else {\n          warnOnceIfDebug(\n            `handler '${this.template.n.join(\n              ' '\n            )}' returned false, but there is no event available to cancel`\n          );\n        }\n      } else if (!returned.length && isArray(result) && isString(result[0])) {\n        // watch for proxy events\n        result = fireEvent(this.ractive, result.shift(), context, result);\n      }\n\n      ractive.event = oldEvent;\n\n      return result;\n    } else {\n      return fireEvent(this.ractive, this.action, context, args);\n    }\n  }\n\n  handleChange() {}\n\n  render() {\n    this.events.forEach(e => e.render(this));\n  }\n\n  toString() {\n    return '';\n  }\n\n  unbind() {\n    removeFromArray(this.element.events, this);\n    this.events.forEach(e => e.unbind());\n  }\n\n  unrender() {\n    this.events.forEach(e => e.unrender());\n  }\n}\n\nconst proto = EventDirective.prototype;\nproto.firstNode = proto.rebound = proto.update = noop;\n","import Context from '../../../shared/Context';\n\nexport default class RactiveEvent {\n  constructor(component, name) {\n    this.component = component;\n    this.name = name;\n    this.handler = null;\n  }\n\n  bind(directive) {\n    const ractive = this.component.instance;\n\n    this.handler = ractive.on(this.name, (...args) => {\n      // watch for reproxy\n      if (args[0] instanceof Context) {\n        const ctx = args.shift();\n        ctx.component = ractive;\n        directive.fire(ctx, args);\n      } else {\n        directive.fire({}, args);\n      }\n\n      // cancel bubbling\n      return false;\n    });\n  }\n\n  render() {}\n\n  unbind() {\n    this.handler.cancel();\n  }\n\n  unrender() {}\n}\n","import { fatal } from 'utils/log';\nimport runloop from 'src/global/runloop';\nimport { win } from 'config/environment';\n\n// because IE\nconst whitelist = {\n  animationend: 1,\n  animationiteration: 1,\n  animationstart: 1,\n  transitioncancel: 1,\n  transitionend: 1,\n  transitionstart: 1,\n  transitionrun: 1\n};\n\nclass DOMEvent {\n  constructor(name, owner) {\n    if (name.indexOf('*') !== -1) {\n      fatal(\n        `Only component proxy-events may contain \"*\" wildcards, <${\n          owner.name\n        } on-${name}=\"...\"/> is not valid`\n      );\n    }\n\n    this.name = name;\n    this.owner = owner;\n    this.handler = null;\n  }\n\n  bind() {}\n\n  render(directive) {\n    const name = this.name;\n\n    const register = () => {\n      const node = this.owner.node;\n      const on = `on${name}`;\n\n      // this is probably a custom event fired from a decorator or manually\n      if (!(on in node) && !(on in win) && !whitelist[name]) return;\n\n      this.owner.on(\n        name,\n        (this.handler = event => {\n          return directive.fire({\n            node,\n            original: event,\n            event,\n            name\n          });\n        })\n      );\n    };\n\n    if (name !== 'load') {\n      // schedule events so that they take place after twoway binding\n      runloop.scheduleTask(register, true);\n    } else {\n      // unless its a load event\n      register();\n    }\n  }\n\n  unbind() {}\n\n  unrender() {\n    if (this.handler) this.owner.off(this.name, this.handler);\n  }\n}\n\nclass CustomEvent {\n  constructor(eventPlugin, owner, name, args) {\n    this.eventPlugin = eventPlugin;\n    this.owner = owner;\n    this.name = name;\n    this.handler = null;\n    this.args = args;\n  }\n\n  bind() {}\n\n  render(directive) {\n    runloop.scheduleTask(() => {\n      const node = this.owner.node;\n\n      this.handler = this.eventPlugin.apply(\n        this.owner.ractive,\n        [\n          node,\n          (event = {}) => {\n            if (event.original) event.event = event.original;\n            else event.original = event.event;\n\n            event.name = this.name;\n            event.node = event.node || node;\n            return directive.fire(event);\n          }\n        ].concat(this.args || [])\n      );\n    });\n  }\n\n  unbind() {}\n\n  unrender() {\n    this.handler.teardown();\n  }\n}\n\nexport { DOMEvent, CustomEvent };\n","import runloop from 'src/global/runloop';\nimport Element from '../../Element';\n\nexport default class Form extends Element {\n  constructor(options) {\n    super(options);\n    this.formBindings = [];\n  }\n\n  render(target, occupants) {\n    super.render(target, occupants);\n    this.on('reset', handleReset);\n  }\n\n  unrender(shouldDestroy) {\n    this.off('reset', handleReset);\n    super.unrender(shouldDestroy);\n  }\n}\n\nfunction handleReset() {\n  const element = this._ractive.proxy;\n\n  runloop.start();\n  element.formBindings.forEach(updateModel);\n  runloop.end();\n}\n\nfunction updateModel(binding) {\n  binding.model.set(binding.resetValue);\n}\n","import { ATTRIBUTE, BINDING_FLAG, DECORATOR, DELEGATE_FLAG, EVENT, TRANSITION } from 'config/types';\nimport { win } from 'config/environment';\nimport { html, svg } from 'config/namespaces';\nimport { toArray, addToArray, removeFromArray } from 'utils/array';\nimport { escapeHtml, voidElements } from 'utils/html';\nimport { createElement, detachNode, matches, safeAttributeString } from 'utils/dom';\nimport runloop from 'src/global/runloop';\nimport Context from 'shared/Context';\nimport { destroyed } from 'shared/methodCallers';\nimport { ContainerItem } from './shared/Item';\nimport Fragment from '../Fragment';\nimport ConditionalAttribute from './element/ConditionalAttribute';\nimport createItem from './createItem';\nimport findElement from './shared/findElement';\nimport selectBinding from './element/binding/selectBinding';\nimport { assign, create, defineProperty, keys } from 'utils/object';\nimport { isString } from 'utils/is';\n\nconst endsWithSemi = /;\\s*$/;\n\nexport default class Element extends ContainerItem {\n  constructor(options) {\n    super(options);\n\n    this.name = options.template.e.toLowerCase();\n\n    // find parent element\n    this.parent = findElement(this.up, false);\n\n    if (this.parent && this.parent.name === 'option') {\n      throw new Error(\n        `An <option> element cannot contain other elements (encountered <${this.name}>)`\n      );\n    }\n\n    this.decorators = [];\n\n    // create attributes\n    this.attributeByName = {};\n\n    let attrs;\n    let n, attr, val, cls, name, template, leftovers;\n\n    const m = this.template.m;\n    const len = (m && m.length) || 0;\n\n    for (let i = 0; i < len; i++) {\n      template = m[i];\n      if (template.g) {\n        (this.statics || (this.statics = {}))[template.n] = isString(template.f)\n          ? template.f\n          : template.n;\n      } else {\n        switch (template.t) {\n          case ATTRIBUTE:\n          case BINDING_FLAG:\n          case DECORATOR:\n          case EVENT:\n          case TRANSITION:\n            attr = createItem({\n              owner: this,\n              up: this.up,\n              template\n            });\n\n            n = template.n;\n\n            attrs = attrs || (attrs = this.attributes = []);\n\n            if (n === 'value') val = attr;\n            else if (n === 'name') name = attr;\n            else if (n === 'class') cls = attr;\n            else attrs.push(attr);\n\n            break;\n\n          case DELEGATE_FLAG:\n            this.delegate = false;\n            break;\n\n          default:\n            (leftovers || (leftovers = [])).push(template);\n            break;\n        }\n      }\n    }\n\n    if (val) attrs.push(val);\n    if (name) attrs.push(name);\n    if (cls) attrs.unshift(cls);\n\n    if (leftovers) {\n      (attrs || (this.attributes = [])).push(\n        new ConditionalAttribute({\n          owner: this,\n          up: this.up,\n          template: leftovers\n        })\n      );\n\n      // empty leftovers array\n      leftovers = [];\n    }\n\n    // create children\n    if (options.template.f && !options.deferContent) {\n      this.fragment = new Fragment({\n        template: options.template.f,\n        owner: this,\n        cssIds: null\n      });\n    }\n\n    this.binding = null; // filled in later\n  }\n\n  bind() {\n    const attrs = this.attributes;\n    if (attrs) {\n      attrs.binding = true;\n      const len = attrs.length;\n      for (let i = 0; i < len; i++) attrs[i].bind();\n      attrs.binding = false;\n    }\n\n    if (this.fragment) this.fragment.bind();\n\n    // create two-way binding if necessary\n    if (!this.binding) this.recreateTwowayBinding();\n    else this.binding.bind();\n  }\n\n  createTwowayBinding() {\n    if ('twoway' in this ? this.twoway : this.ractive.twoway) {\n      const Binding = selectBinding(this);\n      if (Binding) {\n        const binding = new Binding(this);\n        if (binding && binding.model) return binding;\n      }\n    }\n  }\n\n  destroyed() {\n    if (this.attributes) this.attributes.forEach(destroyed);\n    if (this.fragment) this.fragment.destroyed();\n  }\n\n  detach() {\n    // if this element is no longer rendered, the transitions are complete and the attributes can be torn down\n    if (!this.rendered) this.destroyed();\n\n    return detachNode(this.node);\n  }\n\n  find(selector, options) {\n    if (this.node && matches(this.node, selector)) return this.node;\n    if (this.fragment) {\n      return this.fragment.find(selector, options);\n    }\n  }\n\n  findAll(selector, options) {\n    const { result } = options;\n\n    if (matches(this.node, selector)) {\n      result.push(this.node);\n    }\n\n    if (this.fragment) {\n      this.fragment.findAll(selector, options);\n    }\n  }\n\n  findNextNode() {\n    return null;\n  }\n\n  firstNode() {\n    return this.node;\n  }\n\n  getAttribute(name) {\n    if (this.statics && name in this.statics) return this.statics[name];\n    const attribute = this.attributeByName[name];\n    return attribute ? attribute.getValue() : undefined;\n  }\n\n  getContext(...assigns) {\n    if (this.fragment) return this.fragment.getContext(...assigns);\n\n    if (!this.ctx) this.ctx = new Context(this.up, this);\n    assigns.unshift(create(this.ctx));\n    return assign.apply(null, assigns);\n  }\n\n  off(event, callback, capture = false) {\n    const delegate = this.up.delegate;\n    const ref = this.listeners && this.listeners[event];\n\n    if (!ref) return;\n    removeFromArray(ref, callback);\n\n    if (delegate) {\n      const listeners =\n        (delegate.listeners || (delegate.listeners = [])) &&\n        (delegate.listeners[event] || (delegate.listeners[event] = []));\n      if (listeners.refs && !--listeners.refs) delegate.off(event, delegateHandler, true);\n    } else if (this.rendered) {\n      const n = this.node;\n      const add = n.addEventListener;\n      const rem = n.removeEventListener;\n\n      if (!ref.length) {\n        rem.call(n, event, handler, capture);\n      } else if (ref.length && !ref.refs && capture) {\n        rem.call(n, event, handler, true);\n        add.call(n, event, handler, false);\n      }\n    }\n  }\n\n  on(event, callback, capture = false) {\n    const delegate = this.up.delegate;\n    const ref = (this.listeners || (this.listeners = {}))[event] || (this.listeners[event] = []);\n\n    if (delegate) {\n      const listeners =\n        ((delegate.listeners || (delegate.listeners = [])) && delegate.listeners[event]) ||\n        (delegate.listeners[event] = []);\n      if (!listeners.refs) {\n        listeners.refs = 0;\n        delegate.on(event, delegateHandler, true);\n        listeners.refs++;\n      } else {\n        listeners.refs++;\n      }\n    } else if (this.rendered) {\n      const n = this.node;\n      const add = n.addEventListener;\n      const rem = n.removeEventListener;\n\n      if (!ref.length) {\n        add.call(n, event, handler, capture);\n      } else if (ref.length && !ref.refs && capture) {\n        rem.call(n, event, handler, false);\n        add.call(n, event, handler, true);\n      }\n    }\n\n    addToArray(this.listeners[event], callback);\n  }\n\n  recreateTwowayBinding() {\n    if (this.binding) {\n      this.binding.unbind();\n      this.binding.unrender();\n    }\n\n    if ((this.binding = this.createTwowayBinding())) {\n      this.binding.bind();\n      if (this.rendered) this.binding.render();\n    }\n  }\n\n  rebound(update) {\n    super.rebound(update);\n    if (this.attributes) this.attributes.forEach(x => x.rebound(update));\n    if (this.binding) this.binding.rebound(update);\n  }\n\n  render(target, occupants) {\n    // TODO determine correct namespace\n    this.namespace = getNamespace(this);\n\n    let node;\n    let existing = false;\n\n    if (occupants) {\n      let n;\n      while ((n = occupants.shift())) {\n        if (\n          n.nodeName.toUpperCase() === this.template.e.toUpperCase() &&\n          n.namespaceURI === this.namespace\n        ) {\n          this.node = node = n;\n          existing = true;\n          break;\n        } else {\n          detachNode(n);\n        }\n      }\n    }\n\n    if (!existing && this.node) {\n      node = this.node;\n      target.appendChild(node);\n      existing = true;\n    }\n\n    if (!node) {\n      const name = this.template.e;\n      node = createElement(\n        this.namespace === html ? name.toLowerCase() : name,\n        this.namespace,\n        this.getAttribute('is')\n      );\n      this.node = node;\n    }\n\n    if (this.statics) {\n      keys(this.statics).forEach(k => {\n        node.setAttribute(k, this.statics[k]);\n      });\n    }\n\n    // tie the node to this vdom element\n    defineProperty(node, '_ractive', {\n      value: {\n        proxy: this\n      },\n      configurable: true\n    });\n\n    if (existing && this.foundNode) this.foundNode(node);\n\n    // register intro before rendering content so children can find the intro\n    const intro = this.intro;\n    if (intro && intro.shouldFire('intro')) {\n      intro.isIntro = true;\n      intro.isOutro = false;\n      runloop.registerTransition(intro);\n    }\n\n    if (this.fragment) {\n      const children = existing ? toArray(node.childNodes) : undefined;\n\n      this.fragment.render(node, children);\n\n      // clean up leftover children\n      if (children) {\n        children.forEach(detachNode);\n      }\n    }\n\n    if (existing) {\n      // store initial values for two-way binding\n      if (this.binding && this.binding.wasUndefined) this.binding.setFromNode(node);\n      // remove unused attributes\n      let i = node.attributes.length;\n      while (i--) {\n        const name = node.attributes[i].name;\n        if (!(name in this.attributeByName) && (!this.statics || !(name in this.statics)))\n          node.removeAttribute(name);\n      }\n    }\n\n    // Is this a top-level node of a component? If so, we may need to add\n    // a data-ractive-css attribute, for CSS encapsulation\n    if (this.up.cssIds) {\n      node.setAttribute('data-ractive-css', this.up.cssIds.map(x => `{${x}}`).join(' '));\n    }\n\n    if (this.attributes) {\n      const len = this.attributes.length;\n      for (let i = 0; i < len; i++) this.attributes[i].render();\n    }\n    if (this.binding) this.binding.render();\n\n    if (!this.up.delegate && this.listeners) {\n      const ls = this.listeners;\n      for (const k in ls) {\n        if (ls[k] && ls[k].length) this.node.addEventListener(k, handler, !!ls[k].refs);\n      }\n    }\n\n    if (!existing) {\n      target.appendChild(node);\n    }\n\n    this.rendered = true;\n  }\n\n  toString() {\n    const tagName = this.template.e;\n\n    let attrs = (this.attributes && this.attributes.map(stringifyAttribute).join('')) || '';\n\n    if (this.statics)\n      keys(this.statics).forEach(\n        k => k !== 'class' && k !== 'style' && (attrs = ` ${k}=\"${this.statics[k]}\"` + attrs)\n      );\n\n    // Special case - selected options\n    if (this.name === 'option' && this.isSelected()) {\n      attrs += ' selected';\n    }\n\n    // Special case - two-way radio name bindings\n    if (this.name === 'input' && inputIsCheckedRadio(this)) {\n      attrs += ' checked';\n    }\n\n    // Special case style and class attributes and directives\n    let style = this.statics ? this.statics.style : undefined;\n    let cls = this.statics ? this.statics.class : undefined;\n    this.attributes &&\n      this.attributes.forEach(attr => {\n        if (attr.name === 'class') {\n          cls = (cls || '') + (cls ? ' ' : '') + safeAttributeString(attr.getString());\n        } else if (attr.name === 'style') {\n          style = (style || '') + (style ? ' ' : '') + safeAttributeString(attr.getString());\n          if (style && !endsWithSemi.test(style)) style += ';';\n        } else if (attr.style) {\n          style =\n            (style || '') +\n            (style ? ' ' : '') +\n            `${attr.style}: ${safeAttributeString(attr.getString())};`;\n        } else if (attr.inlineClass && attr.getValue()) {\n          cls = (cls || '') + (cls ? ' ' : '') + attr.inlineClass;\n        }\n      });\n    // put classes first, then inline style\n    if (style !== undefined) attrs = ' style' + (style ? `=\"${style}\"` : '') + attrs;\n    if (cls !== undefined) attrs = ' class' + (cls ? `=\"${cls}\"` : '') + attrs;\n\n    if (this.up.cssIds) {\n      attrs += ` data-ractive-css=\"${this.up.cssIds.map(x => `{${x}}`).join(' ')}\"`;\n    }\n\n    let str = `<${tagName}${attrs}>`;\n\n    if (voidElements[this.name.toLowerCase()]) return str;\n\n    // Special case - textarea\n    if (this.name === 'textarea' && this.getAttribute('value') !== undefined) {\n      str += escapeHtml(this.getAttribute('value'));\n    } else if (this.getAttribute('contenteditable') !== undefined) {\n      // Special case - contenteditable\n      str += this.getAttribute('value') || '';\n    }\n\n    if (this.fragment) {\n      str += this.fragment.toString(!/^(?:script|style)$/i.test(this.template.e)); // escape text unless script/style\n    }\n\n    str += `</${tagName}>`;\n    return str;\n  }\n\n  unbind() {\n    const attrs = this.attributes;\n    if (attrs) {\n      attrs.unbinding = true;\n      const len = attrs.length;\n      for (let i = 0; i < len; i++) attrs[i].unbind();\n      attrs.unbinding = false;\n    }\n\n    if (this.binding) this.binding.unbind();\n    if (this.fragment) this.fragment.unbind();\n  }\n\n  unrender(shouldDestroy) {\n    if (!this.rendered) return;\n    this.rendered = false;\n\n    // unrendering before intro completed? complete it now\n    // TODO should be an API for aborting transitions\n    const transition = this.intro;\n    if (transition && transition.complete) transition.complete();\n\n    // Detach as soon as we can\n    if (this.name === 'option') {\n      // <option> elements detach immediately, so that\n      // their parent <select> element syncs correctly, and\n      // since option elements can't have transitions anyway\n      this.detach();\n    } else if (shouldDestroy) {\n      runloop.detachWhenReady(this);\n    }\n\n    // outro transition\n    const outro = this.outro;\n    if (outro && outro.shouldFire('outro')) {\n      outro.isIntro = false;\n      outro.isOutro = true;\n      runloop.registerTransition(outro);\n    }\n\n    if (this.fragment) this.fragment.unrender();\n\n    if (this.binding) this.binding.unrender();\n  }\n\n  update() {\n    if (this.dirty) {\n      this.dirty = false;\n\n      const attrs = this.attributes;\n      if (attrs) {\n        const len = attrs.length;\n        for (let i = 0; i < len; i++) attrs[i].update();\n      }\n\n      if (this.fragment) this.fragment.update();\n    }\n  }\n}\n\nfunction inputIsCheckedRadio(element) {\n  const nameAttr = element.attributeByName.name;\n  return (\n    element.getAttribute('type') === 'radio' &&\n    (nameAttr || {}).interpolator &&\n    element.getAttribute('value') === nameAttr.interpolator.model.get()\n  );\n}\n\nfunction stringifyAttribute(attribute) {\n  const str = attribute.toString();\n  return str ? ' ' + str : '';\n}\n\nfunction getNamespace(element) {\n  // Use specified namespace...\n  const xmlns = element.getAttribute('xmlns');\n  if (xmlns) return xmlns;\n\n  // ...or SVG namespace, if this is an <svg> element\n  if (element.name === 'svg') return svg;\n\n  const parent = element.parent;\n\n  if (parent) {\n    // ...or HTML, if the parent is a <foreignObject>\n    if (parent.name === 'foreignobject') return html;\n\n    // ...or inherit from the parent node\n    return parent.node.namespaceURI;\n  }\n\n  return element.ractive.el.namespaceURI;\n}\n\nfunction delegateHandler(ev) {\n  const name = ev.type;\n  const end = ev.currentTarget;\n  const endEl = end._ractive && end._ractive.proxy;\n  let node = ev.target;\n  let bubble = true;\n  let listeners;\n\n  // starting with the origin node, walk up the DOM looking for ractive nodes with a matching event listener\n  while (bubble && node && node !== end) {\n    const proxy = node._ractive && node._ractive.proxy;\n    if (proxy && proxy.up.delegate === endEl && shouldFire(ev, node, end)) {\n      listeners = proxy.listeners && proxy.listeners[name];\n\n      if (listeners) {\n        const len = listeners.length;\n        for (let i = 0; i < len; i++) bubble = listeners[i].call(node, ev) !== false && bubble;\n      }\n    }\n\n    node = node.parentNode || node.correspondingUseElement; // SVG with a <use> element in certain environments\n  }\n\n  return bubble;\n}\n\nconst UIEvent = win !== null ? win.UIEvent : null;\nfunction shouldFire(event, start, end) {\n  if (UIEvent && event instanceof UIEvent) {\n    let node = start;\n    while (node && node !== end) {\n      if (node.disabled) return false;\n      node = node.parentNode || node.correspondingUseElement;\n    }\n  }\n\n  return true;\n}\n\nfunction handler(ev) {\n  const el = this._ractive.proxy;\n  let listeners;\n  if (el.listeners && (listeners = el.listeners[ev.type])) {\n    const len = listeners.length;\n    for (let i = 0; i < len; i++) listeners[i].call(this, ev);\n  }\n}\n","import { INTERPOLATOR, TRIPLE } from 'config/types';\nimport { warnIfDebug } from 'utils/log';\nimport CheckboxBinding from './CheckboxBinding';\nimport CheckboxNameBinding from './CheckboxNameBinding';\nimport ContentEditableBinding from './ContentEditableBinding';\nimport FileBinding from './FileBinding';\nimport GenericBinding from './GenericBinding';\nimport MultipleSelectBinding from './MultipleSelectBinding';\nimport NumericBinding from './NumericBinding';\nimport RadioBinding from './RadioBinding';\nimport RadioNameBinding from './RadioNameBinding';\nimport SingleSelectBinding from './SingleSelectBinding';\n\nexport function isBindable(attribute) {\n  // The fragment must be a single non-string fragment\n  if (\n    !attribute ||\n    !attribute.template.f ||\n    attribute.template.f.length !== 1 ||\n    attribute.template.f[0].s\n  )\n    return false;\n\n  // A binding is an interpolator `{{ }}`, yey.\n  if (attribute.template.f[0].t === INTERPOLATOR) return true;\n\n  // The above is probably the only true case. For the rest, show an appropriate\n  // warning before returning false.\n\n  // You can't bind a triple curly. HTML values on an attribute makes no sense.\n  if (attribute.template.f[0].t === TRIPLE)\n    warnIfDebug('It is not possible create a binding using a triple mustache.');\n\n  return false;\n}\n\nexport default function selectBinding(element) {\n  const name = element.name;\n  const attributes = element.attributeByName;\n  if (name !== 'input' && name !== 'textarea' && name !== 'select' && !attributes.contenteditable)\n    return;\n  const isBindableByValue = isBindable(attributes.value);\n  const isBindableByContentEditable = isBindable(attributes.contenteditable);\n  const isContentEditable = element.getAttribute('contenteditable');\n\n  // contenteditable\n  // Bind if the contenteditable is true or a binding that may become true.\n  if ((isContentEditable || isBindableByContentEditable) && isBindableByValue)\n    return ContentEditableBinding;\n\n  // <input>\n  if (name === 'input') {\n    const type = element.getAttribute('type');\n\n    if (type === 'radio') {\n      const isBindableByName = isBindable(attributes.name);\n      const isBindableByChecked = isBindable(attributes.checked);\n\n      // For radios we can either bind the name or checked, but not both.\n      // Name binding is handed instead.\n      if (isBindableByName && isBindableByChecked) {\n        warnIfDebug(\n          'A radio input can have two-way binding on its name attribute, or its checked attribute - not both',\n          { ractive: element.root }\n        );\n        return RadioNameBinding;\n      }\n\n      if (isBindableByName) return RadioNameBinding;\n\n      if (isBindableByChecked) return RadioBinding;\n\n      // Dead end. Unknown binding on radio input.\n      return null;\n    }\n\n    if (type === 'checkbox') {\n      const isBindableByName = isBindable(attributes.name);\n      const isBindableByChecked = isBindable(attributes.checked);\n\n      // A checkbox with bindings for both name and checked. Checked treated as\n      // the checkbox value, name is treated as a regular binding.\n      //\n      // See https://github.com/ractivejs/ractive/issues/1749\n      if (isBindableByName && isBindableByChecked) return CheckboxBinding;\n\n      if (isBindableByName) return CheckboxNameBinding;\n\n      if (isBindableByChecked) return CheckboxBinding;\n\n      // Dead end. Unknown binding on checkbox input.\n      return null;\n    }\n\n    if (type === 'file' && isBindableByValue) return FileBinding;\n\n    if (type === 'number' && isBindableByValue) return NumericBinding;\n\n    if (type === 'range' && isBindableByValue) return NumericBinding;\n\n    // Some input of unknown type (browser usually falls back to text).\n    if (isBindableByValue) return GenericBinding;\n\n    // Dead end. Some unknown input and an unbindable.\n    return null;\n  }\n\n  // <select>\n  if (name === 'select' && isBindableByValue) {\n    return element.getAttribute('multiple') ? MultipleSelectBinding : SingleSelectBinding;\n  }\n\n  // <textarea>\n  if (name === 'textarea' && isBindableByValue) return GenericBinding;\n\n  // Dead end. Some unbindable element.\n  return null;\n}\n","import runloop from 'src/global/runloop';\nimport getSelectedOptions from 'utils/getSelectedOptions';\nimport Binding from './Binding';\nimport handleDomEvent from './handleDomEvent';\n\nexport default class SingleSelectBinding extends Binding {\n  forceUpdate() {\n    const value = this.getValue();\n\n    if (value !== undefined) {\n      this.attribute.locked = true;\n      runloop.scheduleTask(() => (this.attribute.locked = false));\n      this.model.set(value);\n    }\n  }\n\n  getInitialValue() {\n    if (this.element.getAttribute('value') !== undefined) {\n      return;\n    }\n\n    const options = this.element.options;\n    const len = options.length;\n\n    if (!len) return;\n\n    let value;\n    let optionWasSelected;\n    let i = len;\n\n    // take the final selected option...\n    while (i--) {\n      const option = options[i];\n\n      if (option.getAttribute('selected')) {\n        if (!option.getAttribute('disabled')) {\n          value = option.getAttribute('value');\n        }\n\n        optionWasSelected = true;\n        break;\n      }\n    }\n\n    // or the first non-disabled option, if none are selected\n    if (!optionWasSelected) {\n      while (++i < len) {\n        if (!options[i].getAttribute('disabled')) {\n          value = options[i].getAttribute('value');\n          break;\n        }\n      }\n    }\n\n    // This is an optimisation (aka hack) that allows us to forgo some\n    // other more expensive work\n    // TODO does it still work? seems at odds with new architecture\n    if (value !== undefined) {\n      this.element.attributeByName.value.value = value;\n    }\n\n    return value;\n  }\n\n  getValue() {\n    const options = this.node.options;\n    const len = options.length;\n\n    let i;\n    for (i = 0; i < len; i += 1) {\n      const option = options[i];\n\n      if (options[i].selected && !options[i].disabled) {\n        return option._ractive ? option._ractive.value : option.value;\n      }\n    }\n  }\n\n  render() {\n    super.render();\n    this.element.on('change', handleDomEvent);\n  }\n\n  setFromNode(node) {\n    const option = getSelectedOptions(node)[0];\n    this.model.set(option._ractive ? option._ractive.value : option.value);\n  }\n\n  unrender() {\n    this.element.off('change', handleDomEvent);\n  }\n}\n","import Binding from './Binding';\nimport getBindingGroup from './getBindingGroup';\nimport handleDomEvent from './handleDomEvent';\n\nfunction getValue() {\n  const checked = this.bindings.filter(b => b.node.checked);\n  if (checked.length > 0) {\n    return checked[0].element.getAttribute('value');\n  }\n}\n\nexport default class RadioNameBinding extends Binding {\n  constructor(element) {\n    super(element, 'name');\n\n    this.group = getBindingGroup('radioname', this.model, getValue);\n    this.group.add(this);\n\n    if (element.checked) {\n      this.group.value = this.getValue();\n    }\n\n    this.attribute.interpolator.pathChanged = () => this.updateName();\n  }\n\n  bind() {\n    if (!this.group.bound) {\n      this.group.bind();\n    }\n  }\n\n  getInitialValue() {\n    if (this.element.getAttribute('checked')) {\n      return this.element.getAttribute('value');\n    }\n  }\n\n  getValue() {\n    return this.element.getAttribute('value');\n  }\n\n  handleChange() {\n    // If this <input> is the one that's checked, then the value of its\n    // `name` model gets set to its value\n    if (this.node.checked) {\n      this.group.value = this.getValue();\n      super.handleChange();\n    }\n\n    this.updateName();\n  }\n\n  lastVal(setting, value) {\n    if (!this.group) return;\n    if (setting) this.group.lastValue = value;\n    else return this.group.lastValue;\n  }\n\n  rebind(next, previous) {\n    super.rebind(next, previous);\n    this.updateName();\n  }\n\n  rebound(update) {\n    super.rebound(update);\n    this.updateName();\n  }\n\n  render() {\n    super.render();\n\n    const node = this.node;\n\n    this.updateName();\n    node.checked = this.element.compare(this.model.get(), this.element.getAttribute('value'));\n\n    this.element.on('change', handleDomEvent);\n\n    if (node.attachEvent) {\n      this.element.on('click', handleDomEvent);\n    }\n  }\n\n  setFromNode(node) {\n    if (node.checked) {\n      this.group.model.set(this.element.getAttribute('value'));\n    }\n  }\n\n  unbind() {\n    this.group.remove(this);\n  }\n\n  unrender() {\n    const el = this.element;\n\n    el.off('change', handleDomEvent);\n    el.off('click', handleDomEvent);\n  }\n\n  updateName() {\n    if (this.node) this.node.name = `{{${this.model.getKeypath()}}}`;\n  }\n}\n","import runloop from 'src/global/runloop';\nimport { removeFromArray } from 'utils/array';\nimport Binding from './Binding';\nimport handleDomEvent from './handleDomEvent';\n\nconst siblings = {};\n\nfunction getSiblings(hash) {\n  return siblings[hash] || (siblings[hash] = []);\n}\n\nexport default class RadioBinding extends Binding {\n  constructor(element) {\n    super(element, 'checked');\n\n    this.siblings = getSiblings(this.ractive._guid + this.element.getAttribute('name'));\n    this.siblings.push(this);\n  }\n\n  getValue() {\n    return this.node.checked;\n  }\n\n  handleChange() {\n    runloop.start();\n\n    this.siblings.forEach(binding => {\n      binding.model.set(binding.getValue());\n    });\n\n    runloop.end();\n  }\n\n  render() {\n    super.render();\n\n    this.element.on('change', handleDomEvent);\n\n    if (this.node.attachEvent) {\n      this.element.on('click', handleDomEvent);\n    }\n  }\n\n  setFromNode(node) {\n    this.model.set(node.checked);\n  }\n\n  unbind() {\n    removeFromArray(this.siblings, this);\n  }\n\n  unrender() {\n    this.element.off('change', handleDomEvent);\n    this.element.off('click', handleDomEvent);\n  }\n}\n","import GenericBinding from './GenericBinding';\n\nexport default class NumericBinding extends GenericBinding {\n  getInitialValue() {\n    return undefined;\n  }\n\n  getValue() {\n    const value = parseFloat(this.node.value);\n    return isNaN(value) ? undefined : value;\n  }\n\n  setFromNode(node) {\n    const value = parseFloat(node.value);\n    if (!isNaN(value)) this.model.set(value);\n  }\n}\n","import { arrayContentsMatch } from 'utils/array';\nimport getSelectedOptions from 'utils/getSelectedOptions';\nimport Binding from './Binding';\nimport handleDomEvent from './handleDomEvent';\n\nexport default class MultipleSelectBinding extends Binding {\n  getInitialValue() {\n    return this.element.options\n      .filter(option => option.getAttribute('selected'))\n      .map(option => option.getAttribute('value'));\n  }\n\n  getValue() {\n    const options = this.element.node.options;\n    const len = options.length;\n\n    const selectedValues = [];\n\n    for (let i = 0; i < len; i += 1) {\n      const option = options[i];\n\n      if (option.selected) {\n        const optionValue = option._ractive ? option._ractive.value : option.value;\n        selectedValues.push(optionValue);\n      }\n    }\n\n    return selectedValues;\n  }\n\n  handleChange() {\n    const attribute = this.attribute;\n    const previousValue = attribute.getValue();\n\n    const value = this.getValue();\n\n    if (previousValue === undefined || !arrayContentsMatch(value, previousValue)) {\n      super.handleChange();\n    }\n\n    return this;\n  }\n\n  render() {\n    super.render();\n\n    this.element.on('change', handleDomEvent);\n\n    if (this.model.get() === undefined) {\n      // get value from DOM, if possible\n      this.handleChange();\n    }\n  }\n\n  setFromNode(node) {\n    const selectedOptions = getSelectedOptions(node);\n    let i = selectedOptions.length;\n    const result = new Array(i);\n\n    while (i--) {\n      const option = selectedOptions[i];\n      result[i] = option._ractive ? option._ractive.value : option.value;\n    }\n\n    this.model.set(result);\n  }\n\n  unrender() {\n    this.element.off('change', handleDomEvent);\n  }\n}\n","import { toArray } from './array';\n\nexport default function getSelectedOptions(select) {\n  /* istanbul ignore next */\n  return select.selectedOptions\n    ? toArray(select.selectedOptions)\n    : select.options\n      ? toArray(select.options).filter(option => option.selected)\n      : [];\n}\n","import GenericBinding from './GenericBinding';\n\nexport default class FileBinding extends GenericBinding {\n  getInitialValue() {\n    /* istanbul ignore next */\n    return undefined;\n  }\n\n  getValue() {\n    /* istanbul ignore next */\n    return this.node.files;\n  }\n\n  render() {\n    /* istanbul ignore next */\n    this.element.lazy = false;\n    /* istanbul ignore next */\n    super.render();\n  }\n\n  setFromNode(node) {\n    /* istanbul ignore next */\n    this.model.set(node.files);\n  }\n}\n","import { isNumeric } from 'utils/is';\nimport Binding from './Binding';\nimport handleDomEvent from './handleDomEvent';\n\nfunction handleBlur() {\n  handleDomEvent.call(this);\n\n  const value = this._ractive.binding.model.get();\n  this.value = value == undefined ? '' : value;\n}\n\nfunction handleDelay(delay) {\n  let timeout;\n\n  return function() {\n    if (timeout) clearTimeout(timeout);\n\n    timeout = setTimeout(() => {\n      const binding = this._ractive.binding;\n      if (binding.rendered) handleDomEvent.call(this);\n      timeout = null;\n    }, delay);\n  };\n}\n\nexport default class GenericBinding extends Binding {\n  getInitialValue() {\n    return '';\n  }\n\n  getValue() {\n    return this.node.value;\n  }\n\n  render() {\n    super.render();\n\n    // any lazy setting for this element overrides the root\n    // if the value is a number, it's a timeout\n    let lazy = this.ractive.lazy;\n    let timeout = false;\n    const el = this.element;\n\n    if ('lazy' in this.element) {\n      lazy = this.element.lazy;\n    }\n\n    if (isNumeric(lazy)) {\n      timeout = +lazy;\n      lazy = false;\n    }\n\n    this.handler = timeout ? handleDelay(timeout) : handleDomEvent;\n\n    const node = this.node;\n\n    el.on('change', handleDomEvent);\n\n    if (node.type !== 'file') {\n      if (!lazy) {\n        el.on('input', this.handler);\n\n        // IE is a special snowflake\n        if (node.attachEvent) {\n          el.on('keyup', this.handler);\n        }\n      }\n\n      el.on('blur', handleBlur);\n    }\n  }\n\n  unrender() {\n    const el = this.element;\n    this.rendered = false;\n\n    el.off('change', handleDomEvent);\n    el.off('input', this.handler);\n    el.off('keyup', this.handler);\n    el.off('blur', handleBlur);\n  }\n}\n","import Binding from './Binding';\nimport handleDomEvent from './handleDomEvent';\n\nexport default class ContentEditableBinding extends Binding {\n  getInitialValue() {\n    return this.element.fragment ? this.element.fragment.toString() : '';\n  }\n\n  getValue() {\n    return this.element.node.innerHTML;\n  }\n\n  render() {\n    super.render();\n\n    const el = this.element;\n\n    el.on('change', handleDomEvent);\n    el.on('blur', handleDomEvent);\n\n    if (!this.ractive.lazy) {\n      el.on('input', handleDomEvent);\n\n      if (this.node.attachEvent) {\n        el.on('keyup', handleDomEvent);\n      }\n    }\n  }\n\n  setFromNode(node) {\n    this.model.set(node.innerHTML);\n  }\n\n  unrender() {\n    const el = this.element;\n\n    el.off('blur', handleDomEvent);\n    el.off('change', handleDomEvent);\n    el.off('input', handleDomEvent);\n    el.off('keyup', handleDomEvent);\n  }\n}\n","import Binding from './Binding';\nimport getBindingGroup from './getBindingGroup';\nimport handleDomEvent from './handleDomEvent';\nimport { isArray } from 'utils/is';\n\nconst push = [].push;\n\nfunction getValue() {\n  const all = this.bindings\n    .filter(b => b.node && b.node.checked)\n    .map(b => b.element.getAttribute('value'));\n  const res = [];\n  all.forEach(v => {\n    if (!this.bindings[0].arrayContains(res, v)) res.push(v);\n  });\n  return res;\n}\n\nexport default class CheckboxNameBinding extends Binding {\n  constructor(element) {\n    super(element, 'name');\n\n    this.checkboxName = true; // so that ractive.updateModel() knows what to do with this\n\n    // Each input has a reference to an array containing it and its\n    // group, as two-way binding depends on being able to ascertain\n    // the status of all inputs within the group\n    this.group = getBindingGroup('checkboxes', this.model, getValue);\n    this.group.add(this);\n\n    if (this.noInitialValue) {\n      this.group.noInitialValue = true;\n    }\n\n    // If no initial value was set, and this input is checked, we\n    // update the model\n    if (this.group.noInitialValue && this.element.getAttribute('checked')) {\n      const existingValue = this.model.get();\n      const bindingValue = this.element.getAttribute('value');\n\n      if (!this.arrayContains(existingValue, bindingValue)) {\n        push.call(existingValue, bindingValue); // to avoid triggering runloop with array adaptor\n      }\n    }\n  }\n\n  bind() {\n    if (!this.group.bound) {\n      this.group.bind();\n    }\n  }\n\n  getInitialValue() {\n    // This only gets called once per group (of inputs that\n    // share a name), because it only gets called if there\n    // isn't an initial value. By the same token, we can make\n    // a note of that fact that there was no initial value,\n    // and populate it using any `checked` attributes that\n    // exist (which users should avoid, but which we should\n    // support anyway to avoid breaking expectations)\n    this.noInitialValue = true; // TODO are noInitialValue and wasUndefined the same thing?\n    return [];\n  }\n\n  getValue() {\n    return this.group.value;\n  }\n\n  handleChange() {\n    this.isChecked = this.element.node.checked;\n    this.group.value = this.model.get();\n    const value = this.element.getAttribute('value');\n    if (this.isChecked && !this.arrayContains(this.group.value, value)) {\n      this.group.value.push(value);\n    } else if (!this.isChecked && this.arrayContains(this.group.value, value)) {\n      this.removeFromArray(this.group.value, value);\n    }\n    // make sure super knows there's a change\n    this.lastValue = null;\n    super.handleChange();\n  }\n\n  render() {\n    super.render();\n\n    const node = this.node;\n\n    const existingValue = this.model.get();\n    const bindingValue = this.element.getAttribute('value');\n\n    if (isArray(existingValue)) {\n      this.isChecked = this.arrayContains(existingValue, bindingValue);\n    } else {\n      this.isChecked = this.element.compare(existingValue, bindingValue);\n    }\n    node.name = '{{' + this.model.getKeypath() + '}}';\n    node.checked = this.isChecked;\n\n    this.element.on('change', handleDomEvent);\n\n    // in case of IE emergency, bind to click event as well\n    if (this.node.attachEvent) {\n      this.element.on('click', handleDomEvent);\n    }\n  }\n\n  setFromNode(node) {\n    this.group.bindings.forEach(binding => (binding.wasUndefined = true));\n\n    if (node.checked) {\n      const valueSoFar = this.group.getValue();\n      valueSoFar.push(this.element.getAttribute('value'));\n\n      this.group.model.set(valueSoFar);\n    }\n  }\n\n  unbind() {\n    this.group.remove(this);\n  }\n\n  unrender() {\n    const el = this.element;\n\n    el.off('change', handleDomEvent);\n    el.off('click', handleDomEvent);\n  }\n\n  arrayContains(selectValue, optionValue) {\n    let i = selectValue.length;\n    while (i--) {\n      if (this.element.compare(optionValue, selectValue[i])) return true;\n    }\n    return false;\n  }\n\n  removeFromArray(array, item) {\n    if (!array) return;\n    let i = array.length;\n    while (i--) {\n      if (this.element.compare(item, array[i])) {\n        array.splice(i, 1);\n      }\n    }\n  }\n}\n","import { removeFromArray } from 'utils/array';\nimport Binding from './Binding';\n\nexport default function getBindingGroup(group, model, getValue) {\n  const hash = `${group}-bindingGroup`;\n  return model[hash] || (model[hash] = new BindingGroup(hash, model, getValue));\n}\n\nclass BindingGroup {\n  constructor(hash, model, getValue) {\n    this.model = model;\n    this.hash = hash;\n    this.getValue = () => {\n      this.value = getValue.call(this);\n      return this.value;\n    };\n\n    this.bindings = [];\n  }\n\n  add(binding) {\n    this.bindings.push(binding);\n  }\n\n  bind() {\n    this.value = this.model.get();\n    this.model.registerTwowayBinding(this);\n    this.bound = true;\n  }\n\n  remove(binding) {\n    removeFromArray(this.bindings, binding);\n    if (!this.bindings.length) {\n      this.unbind();\n    }\n  }\n\n  unbind() {\n    this.model.unregisterTwowayBinding(this);\n    this.bound = false;\n    delete this.model[this.hash];\n  }\n}\n\nBindingGroup.prototype.rebind = Binding.prototype.rebind;\n","import Binding from './Binding';\nimport handleDomEvent from './handleDomEvent';\n\nexport default class CheckboxBinding extends Binding {\n  constructor(element) {\n    super(element, 'checked');\n  }\n\n  render() {\n    super.render();\n\n    this.element.on('change', handleDomEvent);\n\n    if (this.node.attachEvent) {\n      this.element.on('click', handleDomEvent);\n    }\n  }\n\n  unrender() {\n    this.element.off('change', handleDomEvent);\n    this.element.off('click', handleDomEvent);\n  }\n\n  getInitialValue() {\n    return !!this.element.getAttribute('checked');\n  }\n\n  getValue() {\n    return this.node.checked;\n  }\n\n  setFromNode(node) {\n    this.model.set(node.checked);\n  }\n}\n","// This is the handler for DOM events that would lead to a change in the model\n// (i.e. change, sometimes, input, and occasionally click and keyup)\nexport default function handleDomEvent() {\n  this._ractive.binding.handleChange();\n}\n","import runloop from 'src/global/runloop';\nimport { warnOnceIfDebug } from 'utils/log';\nimport noop from 'utils/noop';\nimport findElement from '../../shared/findElement';\n\nexport default class Binding {\n  constructor(element, name = 'value') {\n    this.element = element;\n    this.ractive = element.ractive;\n    this.attribute = element.attributeByName[name];\n\n    const interpolator = this.attribute.interpolator;\n    interpolator.twowayBinding = this;\n\n    const model = interpolator.model;\n\n    if (model.isReadonly && !model.setRoot) {\n      const keypath = model.getKeypath().replace(/^@/, '');\n      warnOnceIfDebug(\n        `Cannot use two-way binding on <${\n          element.name\n        }> element: ${keypath} is read-only. To suppress this warning use <${\n          element.name\n        } twoway='false'...>`,\n        { ractive: this.ractive }\n      );\n      return false;\n    }\n\n    this.attribute.isTwoway = true;\n    this.model = model;\n\n    // initialise value, if it's undefined\n    let value = model.get();\n    this.wasUndefined = value === undefined;\n\n    if (value === undefined && this.getInitialValue) {\n      value = this.getInitialValue();\n      model.set(value);\n    }\n    this.lastVal(true, value);\n\n    const parentForm = findElement(this.element, false, 'form');\n    if (parentForm) {\n      this.resetValue = value;\n      parentForm.formBindings.push(this);\n    }\n  }\n\n  bind() {\n    this.model.registerTwowayBinding(this);\n  }\n\n  handleChange() {\n    const value = this.getValue();\n    if (this.lastVal() === value) return;\n\n    runloop.start();\n    this.attribute.locked = true;\n    this.model.set(value);\n    this.lastVal(true, value);\n\n    // if the value changes before observers fire, unlock to be updatable cause something weird and potentially freezy is up\n    if (this.model.get() !== value) this.attribute.locked = false;\n    else runloop.scheduleTask(() => (this.attribute.locked = false));\n\n    runloop.end();\n  }\n\n  lastVal(setting, value) {\n    if (setting) this.lastValue = value;\n    else return this.lastValue;\n  }\n\n  rebind(next, previous) {\n    if (this.model && this.model === previous) previous.unregisterTwowayBinding(this);\n    if (next) {\n      this.model = next;\n      runloop.scheduleTask(() => next.registerTwowayBinding(this));\n    }\n  }\n\n  rebound() {\n    if (this.model) this.model.unregisterTwowayBinding(this);\n    this.model = this.attribute.interpolator.model;\n    this.model.registerTwowayBinding(this);\n  }\n\n  render() {\n    this.node = this.element.node;\n    this.node._ractive.binding = this;\n    this.rendered = true; // TODO is this used anywhere?\n  }\n\n  setFromNode(node) {\n    this.model.set(node.value);\n  }\n\n  unbind() {\n    this.model.unregisterTwowayBinding(this);\n  }\n}\n\nBinding.prototype.unrender = noop;\n","import noop from 'utils/noop';\nimport Item from './shared/Item';\n\nexport default class Doctype extends Item {\n  toString() {\n    return '<!DOCTYPE' + this.template.a + '>';\n  }\n}\n\nconst proto = Doctype.prototype;\nproto.bind = proto.render = proto.teardown = proto.unbind = proto.unrender = proto.update = noop;\n","import { findInViewHierarchy } from 'shared/registry';\nimport { warnOnce } from 'utils/log';\nimport { missingPlugin } from 'config/errors';\nimport noop from 'utils/noop';\nimport runloop from 'src/global/runloop';\nimport { rebindMatch } from 'src/shared/rebind';\nimport findElement from '../shared/findElement';\nimport { setupArgsFn, teardownArgsFn } from '../shared/directiveArgs';\n\nconst missingDecorator = {\n  update: noop,\n  teardown: noop\n};\n\nexport default class Decorator {\n  constructor(options) {\n    this.owner = options.owner || options.up.owner || findElement(options.up);\n    this.element = this.owner.attributeByName ? this.owner : findElement(options.up);\n    this.up = options.up || this.owner.up;\n    this.ractive = this.owner.ractive;\n    const template = (this.template = options.template);\n\n    this.name = template.n;\n\n    this.node = null;\n    this.handle = null;\n\n    this.element.decorators.push(this);\n  }\n\n  bind() {\n    setupArgsFn(this, this.template, this.up, { register: true });\n  }\n\n  bubble() {\n    if (!this.dirty) {\n      this.dirty = true;\n      // decorators may be owned directly by an element or by a fragment if conditional\n      this.owner.bubble();\n      this.up.bubble();\n    }\n  }\n\n  destroyed() {\n    if (this.handle) {\n      this.handle.teardown();\n      this.handle = null;\n    }\n    this.shouldDestroy = true;\n  }\n\n  handleChange() {\n    this.bubble();\n  }\n\n  rebind(next, previous, safe) {\n    const idx = this.models.indexOf(previous);\n    if (!~idx) return;\n\n    next = rebindMatch(this.template.f.r[idx], next, previous);\n    if (next === previous) return;\n\n    previous.unregister(this);\n    this.models.splice(idx, 1, next);\n    if (next) next.addShuffleRegister(this, 'mark');\n\n    if (!safe) this.bubble();\n  }\n\n  rebound(update) {\n    teardownArgsFn(this, this.template);\n    setupArgsFn(this, this.template, this.up, { register: true });\n    if (update) this.bubble();\n  }\n\n  render() {\n    this.shouldDestroy = false;\n    if (this.handle) this.unrender();\n    runloop.scheduleTask(() => {\n      // bail if the host element has managed to become unrendered\n      if (!this.element.rendered) return;\n\n      const fn = findInViewHierarchy('decorators', this.ractive, this.name);\n\n      if (!fn) {\n        warnOnce(missingPlugin(this.name, 'decorator'));\n        this.handle = missingDecorator;\n        return;\n      }\n\n      this.node = this.element.node;\n\n      let args;\n      if (this.fn) {\n        args = this.models.map(model => {\n          if (!model) return undefined;\n\n          return model.get();\n        });\n        args = this.fn.apply(this.ractive, args);\n      }\n\n      this.handle = fn.apply(this.ractive, [this.node].concat(args));\n\n      if (!this.handle || !this.handle.teardown) {\n        throw new Error(\n          `The '${this.name}' decorator must return an object with a teardown method`\n        );\n      }\n\n      // watch out for decorators that cause their host element to be unrendered\n      if (this.shouldDestroy) this.destroyed();\n    }, true);\n  }\n\n  toString() {\n    return '';\n  }\n\n  unbind() {\n    teardownArgsFn(this, this.template);\n  }\n\n  unrender(shouldDestroy) {\n    if ((!shouldDestroy || this.element.rendered) && this.handle) {\n      this.handle.teardown();\n      this.handle = null;\n    }\n  }\n\n  update() {\n    const instance = this.handle;\n\n    if (!this.dirty) {\n      if (instance && instance.invalidate) {\n        runloop.scheduleTask(() => instance.invalidate(), true);\n      }\n      return;\n    }\n\n    this.dirty = false;\n\n    if (instance) {\n      if (!instance.update) {\n        this.unrender();\n        this.render();\n      } else {\n        const args = this.models.map(model => model && model.get());\n        instance.update.apply(this.ractive, this.fn.apply(this.ractive, args));\n      }\n    }\n  }\n}\n\nDecorator.prototype.firstNode = noop;\n","import getFunction from 'shared/getFunction';\nimport resolveReference from '../../resolvers/resolveReference';\n\nexport function setupArgsFn(item, template, fragment, opts = {}) {\n  if (template && template.f && template.f.s) {\n    item.fn = getFunction(template.f.s, template.f.r.length);\n    if (opts.register === true) {\n      item.models = resolveArgs(item, template, fragment, opts);\n    }\n  }\n}\n\nexport function resolveArgs(item, template, fragment, opts = {}) {\n  return template.f.r.map((ref, i) => {\n    let model;\n\n    if (opts.specialRef && (model = opts.specialRef(ref, i))) return model;\n\n    model = resolveReference(fragment, ref);\n    if (opts.register === true) {\n      model.register(item);\n    }\n\n    return model;\n  });\n}\n\nexport function teardownArgsFn(item, template) {\n  if (template && template.f && template.f.s) {\n    if (item.models)\n      item.models.forEach(m => {\n        if (m && m.unregister) m.unregister(item);\n      });\n    item.models = null;\n  }\n}\n","import runloop from 'src/global/runloop';\nimport { updateAnchors } from 'shared/anchors';\nimport { bind, render as callRender, unbind, unrender, update } from 'shared/methodCallers';\nimport { teardown } from 'src/Ractive/prototype/teardown';\nimport getRactiveContext from 'shared/getRactiveContext';\nimport { warnIfDebug } from 'utils/log';\nimport { createDocumentFragment } from 'utils/dom';\nimport {\n  ANCHOR,\n  ATTRIBUTE,\n  BINDING_FLAG,\n  COMPONENT,\n  DECORATOR,\n  EVENT,\n  TRANSITION,\n  YIELDER\n} from 'config/types';\nimport construct from 'src/Ractive/construct';\nimport initialise from 'src/Ractive/initialise';\nimport render from 'src/Ractive/render';\nimport Item from './shared/Item';\nimport ConditionalAttribute from './element/ConditionalAttribute';\nimport createItem from './createItem';\nimport parser from 'src/Ractive/config/runtime-parser';\nimport { assign, create } from 'utils/object';\nimport { isArray, isString } from 'utils/is';\n\nexport default class Component extends Item {\n  constructor(options, ComponentConstructor) {\n    super(options);\n    let template = options.template;\n    this.isAnchor = template.t === ANCHOR;\n    this.type = this.isAnchor ? ANCHOR : COMPONENT; // override ELEMENT from super\n    let attrs = template.m;\n\n    const partials = template.p || {};\n    if (!('content' in partials)) partials.content = template.f || [];\n    this._partials = partials; // TEMP\n\n    if (this.isAnchor) {\n      this.name = template.n;\n\n      this.addChild = addChild;\n      this.removeChild = removeChild;\n    } else {\n      const instance = create(ComponentConstructor.prototype);\n\n      this.instance = instance;\n      this.name = template.e;\n\n      if (instance.el || instance.target) {\n        warnIfDebug(\n          `The <${this.name}> component has a default '${\n            instance.el ? 'el' : 'target'\n          }' property; it has been disregarded`\n        );\n        instance.el = instance.target = null;\n      }\n\n      // find container\n      let fragment = options.up;\n      let container;\n      while (fragment) {\n        if (fragment.owner.type === YIELDER) {\n          container = fragment.owner.container;\n          break;\n        }\n\n        fragment = fragment.parent;\n      }\n\n      // add component-instance-specific properties\n      instance.parent = this.up.ractive;\n      instance.container = container || null;\n      instance.root = instance.parent.root;\n      instance.component = this;\n\n      construct(this.instance, { partials });\n\n      // these can be modified during construction\n      template = this.template;\n      attrs = template.m;\n\n      // allow components that are so inclined to add programmatic mappings\n      if (isArray(this.mappings)) {\n        attrs = (attrs || []).concat(this.mappings);\n      } else if (isString(this.mappings)) {\n        attrs = (attrs || []).concat(parser.parse(this.mappings, { attributes: true }).t);\n      }\n\n      // for hackability, this could be an open option\n      // for any ractive instance, but for now, just\n      // for components and just for ractive...\n      instance._inlinePartials = partials;\n    }\n\n    this.attributeByName = {};\n    this.attributes = [];\n\n    if (attrs) {\n      const leftovers = [];\n      attrs.forEach(template => {\n        switch (template.t) {\n          case ATTRIBUTE:\n          case EVENT:\n            this.attributes.push(\n              createItem({\n                owner: this,\n                up: this.up,\n                template\n              })\n            );\n            break;\n\n          case TRANSITION:\n          case BINDING_FLAG:\n          case DECORATOR:\n            break;\n\n          default:\n            leftovers.push(template);\n            break;\n        }\n      });\n\n      if (leftovers.length) {\n        this.attributes.push(\n          new ConditionalAttribute({\n            owner: this,\n            up: this.up,\n            template: leftovers\n          })\n        );\n      }\n    }\n\n    this.eventHandlers = [];\n  }\n\n  bind() {\n    if (!this.isAnchor) {\n      this.attributes.forEach(bind);\n      this.eventHandlers.forEach(bind);\n\n      initialise(\n        this.instance,\n        {\n          partials: this._partials\n        },\n        {\n          cssIds: this.up.cssIds\n        }\n      );\n\n      if (this.instance.target || this.instance.el) this.extern = true;\n\n      this.bound = true;\n    }\n  }\n\n  bubble() {\n    if (!this.dirty) {\n      this.dirty = true;\n      this.up.bubble();\n    }\n  }\n\n  destroyed() {\n    if (!this.isAnchor && this.instance.fragment) this.instance.fragment.destroyed();\n  }\n\n  detach() {\n    if (this.isAnchor) {\n      if (this.instance) return this.instance.fragment.detach();\n      return createDocumentFragment();\n    }\n\n    return this.instance.fragment.detach();\n  }\n\n  find(selector, options) {\n    if (this.instance) return this.instance.fragment.find(selector, options);\n  }\n\n  findAll(selector, options) {\n    if (this.instance) this.instance.fragment.findAll(selector, options);\n  }\n\n  findComponent(name, options) {\n    if (!name || this.name === name) return this.instance;\n\n    if (this.instance.fragment) {\n      return this.instance.fragment.findComponent(name, options);\n    }\n  }\n\n  findAllComponents(name, options) {\n    const { result } = options;\n\n    if (this.instance && (!name || this.name === name)) {\n      result.push(this.instance);\n    }\n\n    if (this.instance) this.instance.findAllComponents(name, options);\n  }\n\n  firstNode(skipParent) {\n    if (this.instance) return this.instance.fragment.firstNode(skipParent);\n  }\n\n  getContext(...assigns) {\n    assigns.unshift(this.instance);\n    return getRactiveContext.apply(null, assigns);\n  }\n\n  rebound(update) {\n    this.attributes.forEach(x => x.rebound(update));\n  }\n\n  render(target, occupants) {\n    if (this.isAnchor) {\n      this.rendered = true;\n      this.target = target;\n\n      if (!checking.length) {\n        checking.push(this.ractive);\n        if (occupants) {\n          this.occupants = occupants;\n          checkAnchors();\n          this.occupants = null;\n        } else {\n          runloop.scheduleTask(checkAnchors, true);\n        }\n      }\n    } else {\n      this.attributes.forEach(callRender);\n      this.eventHandlers.forEach(callRender);\n\n      if (this.extern) {\n        this.instance.delegate = false;\n        this.instance.render();\n      } else {\n        render(this.instance, target, null, occupants);\n      }\n\n      this.rendered = true;\n    }\n  }\n\n  shuffled() {\n    super.shuffled();\n    this.instance &&\n      !this.instance.isolated &&\n      this.instance.fragment &&\n      this.instance.fragment.shuffled();\n  }\n\n  toString() {\n    if (this.instance) return this.instance.toHTML();\n  }\n\n  unbind() {\n    if (!this.isAnchor) {\n      this.bound = false;\n\n      this.attributes.forEach(unbind);\n\n      teardown(this.instance, () => runloop.promise());\n    }\n  }\n\n  unrender(shouldDestroy) {\n    this.shouldDestroy = shouldDestroy;\n\n    if (this.isAnchor) {\n      if (this.item) unrenderItem(this, this.item);\n      this.target = null;\n      if (!checking.length) {\n        checking.push(this.ractive);\n        runloop.scheduleTask(checkAnchors, true);\n      }\n    } else {\n      this.instance.unrender();\n      this.instance.el = this.instance.target = null;\n      this.attributes.forEach(unrender);\n      this.eventHandlers.forEach(unrender);\n    }\n\n    this.rendered = false;\n  }\n\n  update() {\n    this.dirty = false;\n    if (this.instance) {\n      this.instance.fragment.update();\n      this.attributes.forEach(update);\n      this.eventHandlers.forEach(update);\n    }\n  }\n}\n\nfunction addChild(meta) {\n  if (this.item) this.removeChild(this.item);\n\n  const child = meta.instance;\n  meta.anchor = this;\n\n  meta.up = this.up;\n  meta.name = meta.nameOption || this.name;\n  this.name = meta.name;\n\n  if (!child.isolated) child.viewmodel.attached(this.up);\n\n  // render as necessary\n  if (this.rendered) {\n    renderItem(this, meta);\n  }\n}\n\nfunction removeChild(meta) {\n  // unrender as necessary\n  if (this.item === meta) {\n    unrenderItem(this, meta);\n    this.name = this.template.n;\n  }\n}\n\nfunction renderItem(anchor, meta) {\n  if (!anchor.rendered) return;\n\n  meta.shouldDestroy = false;\n  meta.up = anchor.up;\n\n  anchor.item = meta;\n  anchor.instance = meta.instance;\n  const nextNode = anchor.up.findNextNode(anchor);\n\n  if (meta.instance.fragment.rendered) {\n    meta.instance.unrender();\n  }\n\n  meta.partials = meta.instance.partials;\n  meta.instance.partials = assign(create(meta.partials), meta.partials, anchor._partials);\n\n  meta.instance.fragment.unbind();\n  meta.instance.fragment.componentParent = anchor.up;\n  meta.instance.fragment.bind(meta.instance.viewmodel);\n\n  anchor.attributes.forEach(bind);\n  anchor.eventHandlers.forEach(bind);\n  anchor.attributes.forEach(callRender);\n  anchor.eventHandlers.forEach(callRender);\n\n  const target = anchor.up.findParentNode();\n  render(meta.instance, target, target.contains(nextNode) ? nextNode : null, anchor.occupants);\n\n  if (meta.lastBound !== anchor) {\n    meta.lastBound = anchor;\n  }\n}\n\nfunction unrenderItem(anchor, meta) {\n  if (!anchor.rendered) return;\n\n  meta.shouldDestroy = true;\n  meta.instance.unrender();\n\n  anchor.eventHandlers.forEach(unrender);\n  anchor.attributes.forEach(unrender);\n  anchor.eventHandlers.forEach(unbind);\n  anchor.attributes.forEach(unbind);\n\n  meta.instance.el = meta.instance.anchor = null;\n  meta.instance.fragment.componentParent = null;\n  meta.up = null;\n  meta.anchor = null;\n  anchor.item = null;\n  anchor.instance = null;\n}\n\nlet checking = [];\nexport function checkAnchors() {\n  const list = checking;\n  checking = [];\n\n  list.forEach(updateAnchors);\n}\n","import { fatal, warnIfDebug, welcome } from 'utils/log';\nimport { missingPlugin } from 'config/errors';\nimport { ensureArray, combine } from 'utils/array';\nimport { findInViewHierarchy } from 'shared/registry';\nimport dataConfigurator from './config/custom/data';\nimport RootModel from 'src/model/RootModel';\nimport hooks from 'src/events/Hook';\nimport subscribe from './helpers/subscribe';\nimport Ractive from '../Ractive';\nimport { ATTRIBUTE, BINDING_FLAG, DECORATOR, INTERPOLATOR, TRANSITION } from 'config/types';\nimport { assign, create, hasOwn } from 'utils/object';\nimport { isArray, isString } from 'utils/is';\nimport { compute } from 'src/Ractive/prototype/compute';\nimport getRactiveContext from '../shared/getRactiveContext';\n\nconst registryNames = [\n  'adaptors',\n  'components',\n  'decorators',\n  'easing',\n  'events',\n  'interpolators',\n  'partials',\n  'transitions'\n];\n\nconst protoRegistries = ['computed', 'helpers'];\n\nlet uid = 0;\n\nexport default function construct(ractive, options) {\n  if (Ractive.DEBUG) welcome();\n\n  initialiseProperties(ractive);\n  handleAttributes(ractive);\n\n  // set up event subscribers\n  subscribe(ractive, options, 'on');\n\n  // if there's not a delegation setting, inherit from parent if it's not default\n  if (\n    !hasOwn(options, 'delegate') &&\n    ractive.parent &&\n    ractive.parent.delegate !== ractive.delegate\n  ) {\n    ractive.delegate = false;\n  }\n\n  // plugins that need to run at construct\n  if (isArray(options.use)) {\n    ractive.use.apply(ractive, options.use.filter(p => p.construct));\n  }\n\n  hooks.construct.fire(ractive, options);\n  if (options.onconstruct) options.onconstruct.call(ractive, getRactiveContext(ractive), options);\n\n  // Add registries\n  let i = registryNames.length;\n  while (i--) {\n    const name = registryNames[i];\n    ractive[name] = assign(create(ractive.constructor[name] || null), options[name]);\n  }\n\n  i = protoRegistries.length;\n  while (i--) {\n    const name = protoRegistries[i];\n    ractive[name] = assign(create(ractive.constructor.prototype[name]), options[name]);\n  }\n\n  if (ractive._attributePartial) {\n    ractive.partials['extra-attributes'] = ractive._attributePartial;\n    delete ractive._attributePartial;\n  }\n\n  // Create a viewmodel\n  const viewmodel = new RootModel({\n    adapt: getAdaptors(ractive, ractive.adapt, options),\n    data: dataConfigurator.init(ractive.constructor, ractive, options),\n    ractive\n  });\n\n  // once resolved, share the adaptors array between the root model and instance\n  ractive.adapt = viewmodel.adaptors;\n\n  ractive.viewmodel = viewmodel;\n\n  for (const k in ractive.computed) {\n    compute.call(ractive, k, ractive.computed[k]);\n  }\n}\n\nfunction getAdaptors(ractive, protoAdapt, options) {\n  protoAdapt = protoAdapt.map(lookup);\n  const adapt = ensureArray(options.adapt).map(lookup);\n\n  const srcs = [protoAdapt, adapt];\n  if (ractive.parent && !ractive.isolated) {\n    srcs.push(ractive.parent.viewmodel.adaptors);\n  }\n\n  return combine.apply(null, srcs);\n\n  function lookup(adaptor) {\n    if (isString(adaptor)) {\n      adaptor = findInViewHierarchy('adaptors', ractive, adaptor);\n\n      if (!adaptor) {\n        fatal(missingPlugin(adaptor, 'adaptor'));\n      }\n    }\n\n    return adaptor;\n  }\n}\n\nfunction initialiseProperties(ractive) {\n  // Generate a unique identifier, for places where you'd use a weak map if it\n  // existed\n  ractive._guid = 'r-' + uid++;\n\n  // events\n  ractive._subs = create(null);\n  ractive._nsSubs = 0;\n\n  // storage for item configuration from instantiation to reset,\n  // like dynamic functions or original values\n  ractive._config = {};\n\n  // events\n  ractive.event = null;\n  ractive._eventQueue = [];\n\n  // observers\n  ractive._observers = [];\n\n  // external children\n  ractive._children = [];\n  ractive._children.byName = {};\n  ractive.children = ractive._children;\n\n  if (!ractive.component) {\n    ractive.root = ractive;\n    ractive.parent = ractive.container = null; // TODO container still applicable?\n  }\n}\n\nfunction handleAttributes(ractive) {\n  const component = ractive.component;\n  const attributes = ractive.constructor.attributes;\n\n  if (attributes && component) {\n    const tpl = component.template;\n    const attrs = tpl.m ? tpl.m.slice() : [];\n\n    // grab all of the passed attribute names\n    const props = attrs.filter(a => a.t === ATTRIBUTE).map(a => a.n);\n\n    // warn about missing requireds\n    attributes.required.forEach(p => {\n      if (!~props.indexOf(p)) {\n        warnIfDebug(`Component '${component.name}' requires attribute '${p}' to be provided`);\n      }\n    });\n\n    // set up a partial containing non-property attributes\n    const all = attributes.optional.concat(attributes.required);\n    const partial = [];\n    let i = attrs.length;\n    while (i--) {\n      const a = attrs[i];\n      if (a.t === ATTRIBUTE && !~all.indexOf(a.n)) {\n        if (attributes.mapAll) {\n          // map the attribute if requested and make the extra attribute in the partial refer to the mapping\n          partial.unshift({\n            t: ATTRIBUTE,\n            n: a.n,\n            f: [{ t: INTERPOLATOR, r: `~/${a.n}` }]\n          });\n        } else {\n          // transfer the attribute to the extra attributes partal\n          partial.unshift(attrs.splice(i, 1)[0]);\n        }\n      } else if (\n        !attributes.mapAll &&\n        (a.t === DECORATOR || a.t === TRANSITION || a.t === BINDING_FLAG)\n      ) {\n        partial.unshift(attrs.splice(i, 1)[0]);\n      }\n    }\n\n    if (partial.length) component.template = { t: tpl.t, e: tpl.e, f: tpl.f, m: attrs, p: tpl.p };\n    ractive._attributePartial = partial;\n  }\n}\n","import { create, toPairs } from 'utils/object';\nimport { isFunction, isObjectType } from 'utils/is';\n\nexport default function subscribe(instance, options, type) {\n  const subs = (instance.constructor[`_${type}`] || []).concat(toPairs(options[type] || []));\n  const single = type === 'on' ? 'once' : `${type}Once`;\n\n  subs.forEach(([target, config]) => {\n    if (isFunction(config)) {\n      instance[type](target, config);\n    } else if (isObjectType(config) && isFunction(config.handler)) {\n      instance[config.once ? single : type](target, config.handler, create(config));\n    }\n  });\n}\n","import { capture } from 'src/global/capture';\nimport Model from './Model';\nimport { handleChange, mark } from 'shared/methodCallers';\nimport RactiveModel from './specials/RactiveModel';\nimport SharedModel, { GlobalModel, SharedModel as SharedBase } from './specials/SharedModel';\nimport { splitKeypath, unescapeKey } from 'shared/keypaths';\nimport resolveReference from 'src/view/resolvers/resolveReference';\nimport noop from 'utils/noop';\n\nconst specialModels = {\n  '@this'(root) {\n    return root.getRactiveModel();\n  },\n  '@global'() {\n    return GlobalModel;\n  },\n  '@shared'() {\n    return SharedModel;\n  },\n  '@style'(root) {\n    return root.getRactiveModel().joinKey('cssData');\n  },\n  '@helpers'(root) {\n    return root.getHelpers();\n  }\n};\nspecialModels['@'] = specialModels['@this'];\n\nexport default class RootModel extends Model {\n  constructor(options) {\n    super(null, null);\n\n    this.isRoot = true;\n    this.root = this;\n    this.ractive = options.ractive; // TODO sever this link\n\n    this.value = options.data;\n    this.adaptors = options.adapt;\n    this.adapt();\n  }\n\n  attached(fragment) {\n    attachImplicits(this, fragment);\n  }\n\n  createLink(keypath, target, targetPath, options) {\n    const keys = splitKeypath(keypath);\n\n    let model = this;\n    while (keys.length) {\n      const key = keys.shift();\n      model = model.childByKey[key] || model.joinKey(key);\n    }\n\n    return model.link(target, targetPath, options);\n  }\n\n  detached() {\n    detachImplicits(this);\n  }\n\n  get(shouldCapture, options) {\n    if (shouldCapture) capture(this);\n\n    if (!options || options.virtual !== false) {\n      return this.getVirtual();\n    } else {\n      return this.value;\n    }\n  }\n\n  getHelpers() {\n    if (!this.helpers) this.helpers = new SharedBase(this.ractive.helpers, 'helpers', this.ractive);\n    return this.helpers;\n  }\n\n  getKeypath() {\n    return '';\n  }\n\n  getRactiveModel() {\n    return this.ractiveModel || (this.ractiveModel = new RactiveModel(this.ractive));\n  }\n\n  getValueChildren() {\n    const children = super.getValueChildren(this.value);\n\n    this.children.forEach(child => {\n      if (child._link) {\n        const idx = children.indexOf(child);\n        if (~idx) children.splice(idx, 1, child._link);\n        else children.push(child._link);\n      }\n    });\n\n    return children;\n  }\n\n  has(key) {\n    if (key[0] === '~' && key[1] === '/') key = key.slice(2);\n    if (specialModels[key] || key === '') return true;\n\n    if (super.has(key)) {\n      return true;\n    } else {\n      const unescapedKey = unescapeKey(key);\n\n      // mappings/links and computations\n      if (this.childByKey[unescapedKey] && this.childByKey[unescapedKey]._link) return true;\n    }\n  }\n\n  joinKey(key, opts) {\n    if (key[0] === '~' && key[1] === '/') key = key.slice(2);\n\n    if (key[0] === '@') {\n      const fn = specialModels[key];\n      if (fn) return fn(this);\n    } else {\n      return super.joinKey(key, opts);\n    }\n  }\n\n  set(value) {\n    // TODO wrapping root node is a baaaad idea. We should prevent this\n    const wrapper = this.wrapper;\n    if (wrapper) {\n      const shouldTeardown = !wrapper.reset || wrapper.reset(value) === false;\n\n      if (shouldTeardown) {\n        wrapper.teardown();\n        this.wrapper = null;\n        this.value = value;\n        this.adapt();\n      }\n    } else {\n      this.value = value;\n      this.adapt();\n    }\n\n    this.deps.forEach(handleChange);\n    this.children.forEach(mark);\n  }\n\n  retrieve() {\n    return this.wrapper ? this.wrapper.get() : this.value;\n  }\n\n  teardown() {\n    super.teardown();\n    this.ractiveModel && this.ractiveModel.teardown();\n  }\n}\nRootModel.prototype.update = noop;\n\nfunction attachImplicits(model, fragment) {\n  if (model._link && model._link.implicit && model._link.isDetached()) {\n    model.attach(fragment);\n  }\n\n  // look for virtual children to relink and cascade\n  for (const k in model.childByKey) {\n    if (k in model.value) {\n      attachImplicits(model.childByKey[k], fragment);\n    } else if (!model.childByKey[k]._link || model.childByKey[k]._link.isDetached()) {\n      const mdl = resolveReference(fragment, k);\n      if (mdl) {\n        model.childByKey[k].link(mdl, k, { implicit: true });\n      }\n    }\n  }\n}\n\nfunction detachImplicits(model) {\n  if (model._link && model._link.implicit) {\n    model.unlink();\n  }\n\n  for (const k in model.childByKey) {\n    detachImplicits(model.childByKey[k]);\n  }\n}\n","import { SharedModel } from './SharedModel';\nimport { Missing } from '../LinkModel';\nimport { create } from 'utils/object';\n\nexport default class RactiveModel extends SharedModel {\n  constructor(ractive) {\n    super(ractive, '@this');\n    this.ractive = ractive;\n  }\n\n  joinKey(key) {\n    const model = super.joinKey(key);\n\n    if ((key === 'root' || key === 'parent') && !model.isLink) return initLink(model, key);\n    else if (key === 'data') return this.ractive.viewmodel;\n    else if (key === 'cssData') return this.ractive.constructor._cssModel;\n\n    return model;\n  }\n}\n\nfunction initLink(model, key) {\n  model.applyValue = function(value) {\n    this.parent.value[key] = value;\n    if (value && value.viewmodel) {\n      this.link(value.viewmodel.getRactiveModel(), key);\n      this._link.markedAll();\n    } else {\n      this.link(create(Missing), key);\n      this._link.markedAll();\n    }\n  };\n\n  if (key === 'root') {\n    const mark = model.mark;\n    model.mark = function(force) {\n      if (this._marking) return;\n      this._marking = true;\n      mark.apply(this, force);\n      this._marking = false;\n    };\n  }\n\n  model.applyValue(model.parent.ractive[key], key);\n  model._link.set = v => model.applyValue(v);\n  model._link.applyValue = v => model.applyValue(v);\n\n  return model._link;\n}\n","import hooks from 'src/events/Hook';\nimport { removeFromArray } from 'utils/array';\nimport { cancel } from 'shared/methodCallers';\nimport { warnIfDebug } from 'utils/log';\n\n// Teardown. This goes through the root fragment and all its children, removing observers\n// and generally cleaning up after itself\n\nexport default function Ractive$teardown() {\n  if (this.torndown) {\n    warnIfDebug('ractive.teardown() was called on a Ractive instance that was already torn down');\n    return Promise.resolve();\n  }\n\n  this.shouldDestroy = true;\n  return teardown(this, () => (this.fragment.rendered ? this.unrender() : Promise.resolve()));\n}\n\nexport function teardown(instance, getPromise) {\n  instance.torndown = true;\n  instance.fragment.unbind();\n  instance._observers.slice().forEach(cancel);\n\n  if (instance.el && instance.el.__ractive_instances__) {\n    removeFromArray(instance.el.__ractive_instances__, instance);\n  }\n\n  const promise = getPromise();\n\n  hooks.teardown.fire(instance);\n\n  promise.then(() => {\n    hooks.destruct.fire(instance);\n    instance.viewmodel.teardown();\n  });\n\n  return promise;\n}\n","import Item from './shared/Item';\nimport noop from 'utils/noop';\nimport { detachNode } from 'utils/dom';\nimport { doc } from 'config/environment';\nimport { assign, create } from 'utils/object';\n\nexport default function Comment(options) {\n  Item.call(this, options);\n}\n\nconst proto = create(Item.prototype);\n\nassign(proto, {\n  bind: noop,\n  unbind: noop,\n  update: noop,\n\n  detach() {\n    return detachNode(this.node);\n  },\n\n  firstNode() {\n    return this.node;\n  },\n\n  render(target) {\n    this.rendered = true;\n\n    this.node = doc.createComment(this.template.c);\n    target.appendChild(this.node);\n  },\n\n  toString() {\n    return `<!-- ${this.template.c} -->`;\n  },\n\n  unrender(shouldDestroy) {\n    if (this.rendered && shouldDestroy) this.detach();\n    this.rendered = false;\n  }\n});\n\nComment.prototype = proto;\n","import { INTERPOLATOR, ELEMENT } from 'config/types';\nimport Item from '../shared/Item';\nimport Fragment from '../../Fragment';\nimport findElement from '../shared/findElement';\nimport { isArray } from 'utils/is';\n\nexport default class BindingFlag extends Item {\n  constructor(options) {\n    super(options);\n\n    this.owner = options.owner || options.up.owner || findElement(options.up);\n    this.element = this.owner.attributeByName ? this.owner : findElement(options.up);\n    this.flag = options.template.v === 'l' ? 'lazy' : 'twoway';\n    this.bubbler = this.owner === this.element ? this.element : this.up;\n\n    if (this.element.type === ELEMENT) {\n      if (isArray(options.template.f)) {\n        this.fragment = new Fragment({\n          owner: this,\n          template: options.template.f\n        });\n      }\n\n      this.interpolator =\n        this.fragment &&\n        this.fragment.items.length === 1 &&\n        this.fragment.items[0].type === INTERPOLATOR &&\n        this.fragment.items[0];\n    }\n  }\n\n  bind() {\n    if (this.fragment) this.fragment.bind();\n    set(this, this.getValue(), true);\n  }\n\n  bubble() {\n    if (!this.dirty) {\n      this.bubbler.bubble();\n      this.dirty = true;\n    }\n  }\n\n  getValue() {\n    if (this.fragment) return this.fragment.valueOf();\n    else if ('value' in this) return this.value;\n    else if ('f' in this.template) return this.template.f;\n    else return true;\n  }\n\n  render() {\n    set(this, this.getValue(), true);\n  }\n\n  toString() {\n    return '';\n  }\n\n  unbind() {\n    if (this.fragment) this.fragment.unbind();\n\n    delete this.element[this.flag];\n  }\n\n  unrender() {\n    if (this.element.rendered) this.element.recreateTwowayBinding();\n  }\n\n  update() {\n    if (this.dirty) {\n      this.dirty = false;\n      if (this.fragment) this.fragment.update();\n      set(this, this.getValue(), true);\n    }\n  }\n}\n\nfunction set(flag, value, update) {\n  if (value === 0) {\n    flag.value = true;\n  } else if (value === 'true') {\n    flag.value = true;\n  } else if (value === 'false' || value === '0') {\n    flag.value = false;\n  } else {\n    flag.value = value;\n  }\n\n  const current = flag.element[flag.flag];\n  flag.element[flag.flag] = flag.value;\n  if (update && !flag.element.attributes.binding && current !== flag.value) {\n    flag.element.recreateTwowayBinding();\n  }\n\n  return flag.value;\n}\n","import { INTERPOLATOR } from 'config/types';\nimport namespaces from 'config/namespaces';\nimport { safeAttributeString } from 'utils/dom';\nimport { booleanAttributes } from 'utils/html';\nimport hyphenateCamel from 'utils/hyphenateCamel';\nimport Fragment from '../../Fragment';\nimport Item from '../shared/Item';\nimport findElement from '../shared/findElement';\nimport getUpdateDelegate from './attribute/getUpdateDelegate';\nimport propertyNames from './attribute/propertyNames';\nimport { inAttributes } from './ConditionalAttribute';\nimport { isArray, isString } from 'utils/is';\n\nfunction lookupNamespace(node, prefix) {\n  const qualified = `xmlns:${prefix}`;\n\n  while (node) {\n    if (node.hasAttribute && node.hasAttribute(qualified)) return node.getAttribute(qualified);\n    node = node.parentNode;\n  }\n\n  return namespaces[prefix];\n}\n\nlet attribute = false;\nexport function inAttribute() {\n  return attribute;\n}\n\nexport default class Attribute extends Item {\n  constructor(options) {\n    super(options);\n\n    this.name = options.template.n;\n    this.namespace = null;\n\n    this.owner = options.owner || options.up.owner || options.element || findElement(options.up);\n    this.element =\n      options.element || (this.owner.attributeByName ? this.owner : findElement(options.up));\n    this.up = options.up; // shared\n    this.ractive = this.up.ractive;\n\n    this.rendered = false;\n    this.updateDelegate = null;\n    this.fragment = null;\n\n    this.element.attributeByName[this.name] = this;\n\n    if (!isArray(options.template.f)) {\n      this.value = options.template.f;\n      if (this.value === 0) {\n        this.value = '';\n      } else if (this.value === undefined) {\n        this.value = true;\n      }\n      return;\n    } else {\n      this.fragment = new Fragment({\n        owner: this,\n        template: options.template.f\n      });\n    }\n\n    this.interpolator =\n      this.fragment &&\n      this.fragment.items.length === 1 &&\n      this.fragment.items[0].type === INTERPOLATOR &&\n      this.fragment.items[0];\n\n    if (this.interpolator) this.interpolator.owner = this;\n  }\n\n  bind() {\n    if (this.fragment) {\n      this.fragment.bind();\n    }\n  }\n\n  bubble() {\n    if (!this.dirty) {\n      this.up.bubble();\n      this.element.bubble();\n      this.dirty = true;\n    }\n  }\n\n  firstNode() {}\n\n  getString() {\n    attribute = true;\n    const value = this.fragment\n      ? this.fragment.toString()\n      : this.value != null\n        ? '' + this.value\n        : '';\n    attribute = false;\n    return value;\n  }\n\n  // TODO could getValue ever be called for a static attribute,\n  // or can we assume that this.fragment exists?\n  getValue() {\n    attribute = true;\n    const value = this.fragment\n      ? this.fragment.valueOf()\n      : booleanAttributes[this.name.toLowerCase()]\n        ? true\n        : this.value;\n    attribute = false;\n    return value;\n  }\n\n  render() {\n    const node = this.element.node;\n    this.node = node;\n\n    // should we use direct property access, or setAttribute?\n    if (!node.namespaceURI || node.namespaceURI === namespaces.html) {\n      this.propertyName = propertyNames[this.name] || this.name;\n\n      if (node[this.propertyName] !== undefined) {\n        this.useProperty = true;\n      }\n\n      // is attribute a boolean attribute or 'value'? If so we're better off doing e.g.\n      // node.selected = true rather than node.setAttribute( 'selected', '' )\n      if (booleanAttributes[this.name.toLowerCase()] || this.isTwoway) {\n        this.isBoolean = true;\n      }\n\n      if (this.propertyName === 'value') {\n        node._ractive.value = this.value;\n      }\n    }\n\n    if (node.namespaceURI) {\n      const index = this.name.indexOf(':');\n      if (index !== -1) {\n        this.namespace = lookupNamespace(node, this.name.slice(0, index));\n      } else {\n        this.namespace = node.namespaceURI;\n      }\n    }\n\n    this.rendered = true;\n    this.updateDelegate = getUpdateDelegate(this);\n    this.updateDelegate();\n  }\n\n  toString() {\n    if (inAttributes()) return '';\n    attribute = true;\n\n    const value = this.getValue();\n\n    // Special case - select and textarea values (should not be stringified)\n    if (\n      this.name === 'value' &&\n      (this.element.getAttribute('contenteditable') !== undefined ||\n        (this.element.name === 'select' || this.element.name === 'textarea'))\n    ) {\n      return;\n    }\n\n    // Special case – bound radio `name` attributes\n    if (\n      this.name === 'name' &&\n      this.element.name === 'input' &&\n      this.interpolator &&\n      this.element.getAttribute('type') === 'radio'\n    ) {\n      return `name=\"{{${this.interpolator.model.getKeypath()}}}\"`;\n    }\n\n    // Special case - style and class attributes and directives\n    if (\n      this.owner === this.element &&\n      (this.name === 'style' || this.name === 'class' || this.style || this.inlineClass)\n    ) {\n      return;\n    }\n\n    if (\n      !this.rendered &&\n      this.owner === this.element &&\n      (!this.name.indexOf('style-') || !this.name.indexOf('class-'))\n    ) {\n      if (!this.name.indexOf('style-')) {\n        this.style = hyphenateCamel(this.name.substr(6));\n      } else {\n        this.inlineClass = this.name.substr(6);\n      }\n\n      return;\n    }\n\n    if (booleanAttributes[this.name.toLowerCase()])\n      return value\n        ? isString(value)\n          ? `${this.name}=\"${safeAttributeString(value)}\"`\n          : this.name\n        : '';\n    if (value == null) return '';\n\n    const str = safeAttributeString(this.getString());\n    attribute = false;\n\n    return str ? `${this.name}=\"${str}\"` : this.name;\n  }\n\n  unbind() {\n    if (this.fragment) this.fragment.unbind();\n  }\n\n  unrender() {\n    this.updateDelegate(true);\n\n    this.rendered = false;\n  }\n\n  update() {\n    if (this.dirty) {\n      let binding;\n      this.dirty = false;\n      if (this.fragment) this.fragment.update();\n      if (this.rendered) this.updateDelegate();\n      if (this.isTwoway && !this.locked) {\n        this.interpolator.twowayBinding.lastVal(true, this.interpolator.model.get());\n      } else if (this.name === 'value' && (binding = this.element.binding)) {\n        // special case: name bound element with dynamic value\n        const attr = binding.attribute;\n        if (attr && !attr.dirty && attr.rendered) {\n          this.element.binding.attribute.updateDelegate();\n        }\n      }\n    }\n  }\n}\n","import { doc } from 'config/environment';\nimport { svg } from 'config/namespaces';\nimport { createElement } from 'utils/dom';\nimport { toArray } from 'utils/array';\nimport noop from 'utils/noop';\nimport Fragment from '../../Fragment';\nimport Item from '../shared/Item';\n\nconst div = doc ? createElement('div') : null;\n\nlet attributes = false;\nexport function inAttributes() {\n  return attributes;\n}\n\nexport default class ConditionalAttribute extends Item {\n  constructor(options) {\n    super(options);\n\n    this.attributes = [];\n\n    this.owner = options.owner;\n\n    this.fragment = new Fragment({\n      ractive: this.ractive,\n      owner: this,\n      template: this.template\n    });\n\n    // this fragment can't participate in node-y things\n    this.fragment.findNextNode = noop;\n\n    this.dirty = false;\n  }\n\n  bind() {\n    this.fragment.bind();\n  }\n\n  bubble() {\n    if (!this.dirty) {\n      this.dirty = true;\n      this.owner.bubble();\n    }\n  }\n\n  destroyed() {\n    this.unrender();\n  }\n\n  render() {\n    this.node = this.owner.node;\n    if (this.node) {\n      this.isSvg = this.node.namespaceURI === svg;\n    }\n\n    attributes = true;\n    if (!this.rendered) this.fragment.render();\n\n    this.rendered = true;\n    this.dirty = true; // TODO this seems hacky, but necessary for tests to pass in browser AND node.js\n    this.update();\n    attributes = false;\n  }\n\n  toString() {\n    return this.fragment.toString();\n  }\n\n  unbind() {\n    this.fragment.unbind();\n  }\n\n  unrender() {\n    this.rendered = false;\n    this.fragment.unrender();\n  }\n\n  update() {\n    let str;\n    let attrs;\n\n    if (this.dirty) {\n      this.dirty = false;\n\n      const current = attributes;\n      attributes = true;\n      this.fragment.update();\n\n      if (this.rendered && this.node) {\n        str = this.fragment.toString();\n\n        attrs = parseAttributes(str, this.isSvg);\n\n        // any attributes that previously existed but no longer do\n        // must be removed\n        this.attributes.filter(a => notIn(attrs, a)).forEach(a => {\n          this.node.removeAttribute(a.name);\n        });\n\n        attrs.forEach(a => {\n          this.node.setAttribute(a.name, a.value);\n        });\n\n        this.attributes = attrs;\n      }\n\n      attributes = current || false;\n    }\n  }\n}\n\nconst onlyWhitespace = /^\\s*$/;\nfunction parseAttributes(str, isSvg) {\n  if (onlyWhitespace.test(str)) return [];\n  const tagName = isSvg ? 'svg' : 'div';\n  return str\n    ? (div.innerHTML = `<${tagName} ${str}></${tagName}>`) && toArray(div.childNodes[0].attributes)\n    : [];\n}\n\nfunction notIn(haystack, needle) {\n  let i = haystack.length;\n\n  while (i--) {\n    if (haystack[i].name === needle.name) {\n      return false;\n    }\n  }\n\n  return true;\n}\n","export default {\n  'accept-charset': 'acceptCharset',\n  accesskey: 'accessKey',\n  bgcolor: 'bgColor',\n  class: 'className',\n  codebase: 'codeBase',\n  colspan: 'colSpan',\n  contenteditable: 'contentEditable',\n  datetime: 'dateTime',\n  dirname: 'dirName',\n  for: 'htmlFor',\n  'http-equiv': 'httpEquiv',\n  ismap: 'isMap',\n  maxlength: 'maxLength',\n  novalidate: 'noValidate',\n  pubdate: 'pubDate',\n  readonly: 'readOnly',\n  rowspan: 'rowSpan',\n  tabindex: 'tabIndex',\n  usemap: 'useMap'\n};\n","import { html } from 'config/namespaces';\nimport { safeToStringValue } from 'utils/dom';\nimport { arrayContains } from 'utils/array';\nimport noop from 'utils/noop';\nimport hyphenateCamel from 'utils/hyphenateCamel';\nimport { readStyle, readClass } from 'src/view/helpers/specialAttrs';\nimport { keys as objectKeys } from 'utils/object';\nimport { isArray, isString } from 'utils/is';\n\nconst textTypes = [\n  undefined,\n  'text',\n  'search',\n  'url',\n  'email',\n  'hidden',\n  'password',\n  'search',\n  'reset',\n  'submit'\n];\n\nexport default function getUpdateDelegate(attribute) {\n  const { element, name } = attribute;\n\n  if (name === 'value') {\n    if (attribute.interpolator) attribute.interpolator.bound = true;\n\n    // special case - selects\n    if (element.name === 'select' && name === 'value') {\n      return element.getAttribute('multiple') ? updateMultipleSelectValue : updateSelectValue;\n    }\n\n    if (element.name === 'textarea') return updateStringValue;\n\n    // special case - contenteditable\n    if (element.getAttribute('contenteditable') != null) return updateContentEditableValue;\n\n    // special case - <input>\n    if (element.name === 'input') {\n      const type = element.getAttribute('type');\n\n      // type='file' value='{{fileList}}'>\n      if (type === 'file') return noop; // read-only\n\n      // type='radio' name='{{twoway}}'\n      if (type === 'radio' && element.binding && element.binding.attribute.name === 'name')\n        return updateRadioValue;\n\n      if (~textTypes.indexOf(type)) return updateStringValue;\n    }\n\n    return updateValue;\n  }\n\n  const node = element.node;\n\n  // special case - <input type='radio' name='{{twoway}}' value='foo'>\n  if (attribute.isTwoway && name === 'name') {\n    if (node.type === 'radio') return updateRadioName;\n    if (node.type === 'checkbox') return updateCheckboxName;\n  }\n\n  if (name === 'style') return updateStyleAttribute;\n\n  if (name.indexOf('style-') === 0) return updateInlineStyle;\n\n  // special case - class names. IE fucks things up, again\n  if (name === 'class' && (!node.namespaceURI || node.namespaceURI === html))\n    return updateClassName;\n\n  if (name.indexOf('class-') === 0) return updateInlineClass;\n\n  if (attribute.isBoolean) {\n    const type = element.getAttribute('type');\n    if (attribute.interpolator && name === 'checked' && (type === 'checkbox' || type === 'radio'))\n      attribute.interpolator.bound = true;\n    return updateBoolean;\n  }\n\n  if (attribute.namespace && attribute.namespace !== attribute.node.namespaceURI)\n    return updateNamespacedAttribute;\n\n  return updateAttribute;\n}\n\nfunction updateMultipleSelectValue(reset) {\n  let value = this.getValue();\n\n  if (!isArray(value)) value = [value];\n\n  const options = this.node.options;\n  let i = options.length;\n\n  if (reset) {\n    while (i--) options[i].selected = false;\n  } else {\n    while (i--) {\n      const option = options[i];\n      const optionValue = option._ractive ? option._ractive.value : option.value; // options inserted via a triple don't have _ractive\n\n      option.selected = arrayContains(value, optionValue);\n    }\n  }\n}\n\nfunction updateSelectValue(reset) {\n  const value = this.getValue();\n\n  if (!this.locked) {\n    // TODO is locked still a thing?\n    this.node._ractive.value = value;\n\n    const options = this.node.options;\n    let i = options.length;\n    let wasSelected = false;\n\n    if (reset) {\n      while (i--) options[i].selected = false;\n    } else {\n      while (i--) {\n        const option = options[i];\n        const optionValue = option._ractive ? option._ractive.value : option.value; // options inserted via a triple don't have _ractive\n        if (option.disabled && option.selected) wasSelected = true;\n\n        if (optionValue == value) {\n          // double equals as we may be comparing numbers with strings\n          option.selected = true;\n          return;\n        }\n      }\n    }\n\n    if (!wasSelected) this.node.selectedIndex = -1;\n  }\n}\n\nfunction updateContentEditableValue(reset) {\n  const value = this.getValue();\n\n  if (!this.locked) {\n    if (reset) this.node.innerHTML = '';\n    else this.node.innerHTML = value === undefined ? '' : value;\n  }\n}\n\nfunction updateRadioValue(reset) {\n  const node = this.node;\n  const wasChecked = node.checked;\n\n  const value = this.getValue();\n\n  if (reset) return (node.checked = false);\n\n  //node.value = this.element.getAttribute( 'value' );\n  node.value = this.node._ractive.value = value;\n  node.checked = this.element.compare(value, this.element.getAttribute('name'));\n\n  // This is a special case - if the input was checked, and the value\n  // changed so that it's no longer checked, the twoway binding is\n  // most likely out of date. To fix it we have to jump through some\n  // hoops... this is a little kludgy but it works\n  if (wasChecked && !node.checked && this.element.binding && this.element.binding.rendered) {\n    this.element.binding.group.model.set(this.element.binding.group.getValue());\n  }\n}\n\nfunction updateValue(reset) {\n  if (!this.locked) {\n    if (reset) {\n      this.node.removeAttribute('value');\n      this.node.value = this.node._ractive.value = null;\n    } else {\n      const value = this.getValue();\n\n      this.node.value = this.node._ractive.value = value;\n      this.node.setAttribute('value', safeToStringValue(value));\n    }\n  }\n}\n\nfunction updateStringValue(reset) {\n  if (!this.locked) {\n    if (reset) {\n      this.node._ractive.value = '';\n      this.node.removeAttribute('value');\n    } else {\n      const value = this.getValue();\n\n      this.node._ractive.value = value;\n\n      this.node.value = safeToStringValue(value);\n      this.node.setAttribute('value', safeToStringValue(value));\n    }\n  }\n}\n\nfunction updateRadioName(reset) {\n  if (reset) this.node.checked = false;\n  else this.node.checked = this.element.compare(this.getValue(), this.element.binding.getValue());\n}\n\nfunction updateCheckboxName(reset) {\n  const { element, node } = this;\n  const binding = element.binding;\n\n  const value = this.getValue();\n  const valueAttribute = element.getAttribute('value');\n\n  if (reset) {\n    // TODO: WAT?\n  }\n\n  if (!isArray(value)) {\n    binding.isChecked = node.checked = element.compare(value, valueAttribute);\n  } else {\n    let i = value.length;\n    while (i--) {\n      if (element.compare(valueAttribute, value[i])) {\n        binding.isChecked = node.checked = true;\n        return;\n      }\n    }\n    binding.isChecked = node.checked = false;\n  }\n}\n\nfunction updateStyleAttribute(reset) {\n  const props = reset ? {} : readStyle(this.getValue() || '');\n  const style = this.node.style;\n  const keys = objectKeys(props);\n  const prev = this.previous || [];\n\n  let i = 0;\n  while (i < keys.length) {\n    if (keys[i] in style) {\n      const safe = props[keys[i]].replace('!important', '');\n      style.setProperty(keys[i], safe, safe.length !== props[keys[i]].length ? 'important' : '');\n    }\n    i++;\n  }\n\n  // remove now-missing attrs\n  i = prev.length;\n  while (i--) {\n    if (!~keys.indexOf(prev[i]) && prev[i] in style) style.setProperty(prev[i], '', '');\n  }\n\n  this.previous = keys;\n}\n\nfunction updateInlineStyle(reset) {\n  if (!this.style) {\n    this.style = hyphenateCamel(this.name.substr(6));\n  }\n\n  if (reset && this.node.style.getPropertyValue(this.style) !== this.last) return;\n\n  const value = reset ? '' : safeToStringValue(this.getValue());\n  const safe = value.replace('!important', '');\n  this.node.style.setProperty(this.style, safe, safe.length !== value.length ? 'important' : '');\n  this.last = this.node.style.getPropertyValue(this.style);\n}\n\nfunction updateClassName(reset) {\n  const value = reset ? [] : readClass(safeToStringValue(this.getValue()));\n\n  // watch out for werdo svg elements\n  let cls = this.node.className;\n  cls = cls.baseVal !== undefined ? cls.baseVal : cls;\n\n  const attr = readClass(cls);\n  const prev = this.previous || [];\n\n  const className = value.concat(attr.filter(c => !~prev.indexOf(c))).join(' ');\n\n  if (className !== cls) {\n    if (!isString(this.node.className)) {\n      this.node.className.baseVal = className;\n    } else {\n      this.node.className = className;\n    }\n  }\n\n  this.previous = value;\n}\n\nfunction updateInlineClass(reset) {\n  const name = this.name.substr(6);\n\n  // watch out for werdo svg elements\n  let cls = this.node.className;\n  cls = cls.baseVal !== undefined ? cls.baseVal : cls;\n\n  const attr = readClass(cls);\n  const value = reset ? false : this.getValue();\n\n  if (!this.inlineClass) this.inlineClass = name;\n\n  if (value && !~attr.indexOf(name)) attr.push(name);\n  else if (!value && ~attr.indexOf(name)) attr.splice(attr.indexOf(name), 1);\n\n  if (!isString(this.node.className)) {\n    this.node.className.baseVal = attr.join(' ');\n  } else {\n    this.node.className = attr.join(' ');\n  }\n}\n\nfunction updateBoolean(reset) {\n  // with two-way binding, only update if the change wasn't initiated by the user\n  // otherwise the cursor will often be sent to the wrong place\n  if (!this.locked) {\n    if (reset) {\n      if (this.useProperty) this.node[this.propertyName] = false;\n      this.node.removeAttribute(this.propertyName);\n    } else {\n      if (this.useProperty) {\n        this.node[this.propertyName] = this.getValue();\n      } else {\n        const val = this.getValue();\n        if (val) {\n          this.node.setAttribute(this.propertyName, isString(val) ? val : '');\n        } else {\n          this.node.removeAttribute(this.propertyName);\n        }\n      }\n    }\n  }\n}\n\nexport function updateAttribute(reset) {\n  if (reset) {\n    if (this.node.getAttribute(this.name) === this.value) {\n      this.node.removeAttribute(this.name);\n    }\n  } else {\n    this.value = safeToStringValue(this.getString());\n    this.node.setAttribute(this.name, this.value);\n  }\n}\n\nexport function updateNamespacedAttribute(reset) {\n  if (reset) {\n    if (\n      this.value ===\n      this.node.getAttributeNS(this.namespace, this.name.slice(this.name.indexOf(':') + 1))\n    ) {\n      this.node.removeAttributeNS(this.namespace, this.name.slice(this.name.indexOf(':') + 1));\n    }\n  } else {\n    this.value = safeToStringValue(this.getString());\n    this.node.setAttributeNS(\n      this.namespace,\n      this.name.slice(this.name.indexOf(':') + 1),\n      this.value\n    );\n  }\n}\n","import cleanCss from 'utils/cleanCss';\nimport { isString } from 'utils/is';\n\nconst space = /\\s+/;\n\nexport function readStyle(css) {\n  if (!isString(css)) return {};\n\n  return cleanCss(css, (css, reconstruct) => {\n    return css\n      .split(';')\n      .filter(rule => !!rule.trim())\n      .map(reconstruct)\n      .reduce((rules, rule) => {\n        const i = rule.indexOf(':');\n        const name = rule.substr(0, i).trim();\n        rules[name] = rule.substr(i + 1).trim();\n        return rules;\n      }, {});\n  });\n}\n\nexport function readClass(str) {\n  const list = str.split(space);\n\n  // remove any empty entries\n  let i = list.length;\n  while (i--) {\n    if (!list[i]) list.splice(i, 1);\n  }\n\n  return list;\n}\n","import Fragment from '../Fragment';\nimport { ContainerItem } from './shared/Item';\nimport resolve from '../resolvers/resolve';\n\nexport function resolveAliases(aliases, fragment, dest = {}) {\n  for (let i = 0; i < aliases.length; i++) {\n    if (!dest[aliases[i].n]) {\n      const m = resolve(fragment, aliases[i].x);\n      dest[aliases[i].n] = m;\n      m.reference();\n    }\n  }\n\n  return dest;\n}\n\nexport default class Alias extends ContainerItem {\n  constructor(options) {\n    super(options);\n\n    this.fragment = null;\n  }\n\n  bind() {\n    this.fragment = new Fragment({\n      owner: this,\n      template: this.template.f\n    });\n\n    this.fragment.aliases = resolveAliases(this.template.z, this.up);\n    this.fragment.bind();\n  }\n\n  rebound(update) {\n    const aliases = this.fragment.aliases;\n    for (const k in aliases) {\n      if (aliases[k].rebound) aliases[k].rebound(update);\n      else {\n        aliases[k].unreference();\n        aliases[k] = 0;\n      }\n    }\n\n    resolveAliases(this.template.z, this.up, aliases);\n\n    if (this.fragment) this.fragment.rebound(update);\n  }\n\n  render(target, occupants) {\n    this.rendered = true;\n    if (this.fragment) this.fragment.render(target, occupants);\n  }\n\n  unbind() {\n    for (const k in this.fragment.aliases) {\n      this.fragment.aliases[k].unreference();\n    }\n\n    this.fragment.aliases = {};\n    if (this.fragment) this.fragment.unbind();\n  }\n\n  unrender(shouldDestroy) {\n    if (this.rendered && this.fragment) this.fragment.unrender(shouldDestroy);\n    this.rendered = false;\n  }\n\n  update() {\n    if (this.dirty) {\n      this.dirty = false;\n      this.fragment.update();\n    }\n  }\n}\n","import resolveReference from './resolveReference';\nimport ExpressionProxy from './ExpressionProxy';\nimport ReferenceExpressionProxy from './ReferenceExpressionProxy';\n\nexport default function resolve(fragment, template) {\n  if (template.r) {\n    return resolveReference(fragment, template.r);\n  } else if (template.x) {\n    return new ExpressionProxy(fragment, template.x);\n  } else if (template.rx) {\n    return new ReferenceExpressionProxy(fragment, template.rx);\n  }\n}\n","import { fireShuffleTasks } from 'src/model/ModelBase';\nimport { REFERENCE } from 'config/types';\nimport { rebindMatch } from 'shared/rebind';\nimport { isArray, isString } from 'utils/is';\nimport { escapeKey } from 'shared/keypaths';\nimport ExpressionProxy from './ExpressionProxy';\nimport resolveReference from './resolveReference';\nimport resolve from './resolve';\n\nimport LinkModel, { Missing } from 'src/model/LinkModel';\n\nexport default class ReferenceExpressionProxy extends LinkModel {\n  constructor(fragment, template) {\n    super(null, null, null, '@undefined');\n    this.root = fragment.ractive.viewmodel;\n    this.template = template;\n    this.rootLink = true;\n    this.template = template;\n    this.fragment = fragment;\n\n    this.rebound();\n  }\n\n  getKeypath() {\n    return this.model ? this.model.getKeypath() : '@undefined';\n  }\n\n  rebound() {\n    const fragment = this.fragment;\n    const template = this.template;\n\n    let base = (this.base = resolve(fragment, template));\n    let idx;\n\n    if (this.proxy) {\n      teardown(this);\n    }\n\n    const proxy = (this.proxy = {\n      rebind: (next, previous) => {\n        if (previous === base) {\n          next = rebindMatch(template, next, previous);\n          if (next !== base) {\n            this.base = base = next;\n          }\n        } else if (~(idx = members.indexOf(previous))) {\n          next = rebindMatch(template.m[idx].n, next, previous);\n          if (next !== members[idx]) {\n            members.splice(idx, 1, next || Missing);\n          }\n        }\n\n        if (next !== previous) {\n          previous.unregister(proxy);\n          if (next) next.addShuffleTask(() => next.register(proxy));\n        }\n      },\n      handleChange: () => {\n        pathChanged();\n      }\n    });\n\n    base.register(proxy);\n\n    const members = (this.members = template.m.map(tpl => {\n      if (isString(tpl)) {\n        return { get: () => tpl };\n      }\n\n      let model;\n\n      if (tpl.t === REFERENCE) {\n        model = resolveReference(fragment, tpl.n);\n        model.register(proxy);\n\n        return model;\n      }\n\n      model = new ExpressionProxy(fragment, tpl);\n      model.register(proxy);\n      return model;\n    }));\n\n    const pathChanged = () => {\n      const model = base.joinAll(\n        members.reduce((list, m) => {\n          const k = m.get();\n          if (isArray(k)) return list.concat(k);\n          else list.push(escapeKey(String(k)));\n          return list;\n        }, [])\n      );\n\n      if (model !== this.model) {\n        this.model = model;\n        this.relinking(model);\n        fireShuffleTasks();\n        refreshPathDeps(this);\n      }\n    };\n\n    pathChanged();\n  }\n\n  teardown() {\n    teardown(this);\n    super.teardown();\n  }\n\n  unreference() {\n    super.unreference();\n    if (!this.deps.length && !this.refs) this.teardown();\n  }\n\n  unregister(dep) {\n    super.unregister(dep);\n    if (!this.deps.length && !this.refs) this.teardown();\n  }\n}\n\nfunction teardown(proxy) {\n  if (proxy.base) proxy.base.unregister(proxy.proxy);\n  if (proxy.models) {\n    proxy.models.forEach(m => {\n      if (m.unregister) m.unregister(proxy);\n    });\n  }\n}\n\nfunction refreshPathDeps(proxy) {\n  let len = proxy.deps.length;\n  let i, v;\n\n  for (i = 0; i < len; i++) {\n    v = proxy.deps[i];\n    if (v.pathChanged) v.pathChanged();\n    if (v.fragment && v.fragment.pathModel) v.fragment.pathModel.applyValue(proxy.getKeypath());\n  }\n\n  len = proxy.children.length;\n  for (i = 0; i < len; i++) {\n    refreshPathDeps(proxy.children[i]);\n  }\n}\n\nconst eproto = ExpressionProxy.prototype;\nconst proto = ReferenceExpressionProxy.prototype;\n\nproto.unreference = eproto.unreference;\nproto.unregister = eproto.unregister;\nproto.unregisterLink = eproto.unregisterLink;\n","import { removeFromArray } from 'utils/array';\nimport noop from 'utils/noop';\nimport { warnIfDebug } from 'utils/log';\nimport Model from 'src/model/Model';\nimport Computation from 'src/model/Computation';\nimport { startCapturing, stopCapturing } from 'src/global/capture';\nimport getFunction from 'shared/getFunction';\nimport { rebindMatch } from 'shared/rebind';\nimport resolveReference from './resolveReference';\n\nexport default class ExpressionProxy extends Model {\n  constructor(fragment, template) {\n    super(fragment.ractive.viewmodel, null);\n\n    this.fragment = fragment;\n    this.template = template;\n\n    this.isReadonly = true;\n    this.isComputed = true;\n    this.dirty = true;\n\n    this.fn =\n      fragment.ractive.allowExpressions === false\n        ? noop\n        : getFunction(template.s, template.r.length);\n\n    this.models = this.template.r.map(ref => {\n      return resolveReference(this.fragment, ref);\n    });\n    this.dependencies = [];\n\n    this.shuffle = undefined;\n\n    this.bubble();\n  }\n\n  bubble(actuallyChanged = true) {\n    // refresh the keypath\n    this.keypath = undefined;\n\n    if (actuallyChanged) {\n      this.handleChange();\n    }\n  }\n\n  getKeypath() {\n    if (!this.template) return '@undefined';\n    if (!this.keypath) {\n      this.keypath =\n        '@' +\n        this.template.s.replace(/_(\\d+)/g, (match, i) => {\n          if (i >= this.models.length) return match;\n\n          const model = this.models[i];\n          return model ? model.getKeypath() : '@undefined';\n        });\n    }\n\n    return this.keypath;\n  }\n\n  getValue() {\n    startCapturing();\n    let result;\n\n    try {\n      const params = this.models.map(m => (m ? m.get(true) : undefined));\n      result = this.fn.apply(this.fragment.ractive, params);\n    } catch (err) {\n      warnIfDebug(`Failed to compute ${this.getKeypath()}: ${err.message || err}`);\n    }\n\n    const dependencies = stopCapturing();\n    // remove missing deps\n    this.dependencies.filter(d => !~dependencies.indexOf(d)).forEach(d => {\n      d.unregister(this);\n      removeFromArray(this.dependencies, d);\n    });\n    // register new deps\n    dependencies.filter(d => !~this.dependencies.indexOf(d)).forEach(d => {\n      d.register(this);\n      this.dependencies.push(d);\n    });\n\n    return result;\n  }\n\n  notifyUpstream() {}\n\n  rebind(next, previous, safe) {\n    const idx = this.models.indexOf(previous);\n\n    if (~idx) {\n      next = rebindMatch(this.template.r[idx], next, previous);\n      if (next !== previous) {\n        previous.unregister(this);\n        this.models.splice(idx, 1, next);\n        if (next) next.addShuffleRegister(this, 'mark');\n      }\n    }\n    this.bubble(!safe);\n  }\n\n  rebound(update) {\n    this.models = this.template.r.map(ref => resolveReference(this.fragment, ref));\n    if (update) this.bubble(true);\n  }\n\n  retrieve() {\n    return this.get();\n  }\n\n  teardown() {\n    this.fragment = undefined;\n    if (this.dependencies) this.dependencies.forEach(d => d.unregister(this));\n    super.teardown();\n  }\n\n  unreference() {\n    super.unreference();\n    collect(this);\n  }\n\n  unregister(dep) {\n    super.unregister(dep);\n    collect(this);\n  }\n\n  unregisterLink(link) {\n    super.unregisterLink(link);\n    collect(this);\n  }\n}\n\nconst prototype = ExpressionProxy.prototype;\nconst computation = Computation.prototype;\nprototype.get = computation.get;\nprototype.handleChange = computation.handleChange;\nprototype.joinKey = computation.joinKey;\nprototype.mark = computation.mark;\nprototype.unbind = noop;\n\nfunction collect(model) {\n  if (!model.deps.length && !model.refs && !model.links.length) model.teardown();\n}\n","/* global console */\n/* eslint no-console:\"off\" */\n\nimport { capture, startCapturing, stopCapturing } from 'src/global/capture';\nimport { warnIfDebug } from 'utils/log';\nimport Model, { shared } from './Model';\nimport { maybeBind, noVirtual } from './ModelBase';\nimport ComputationChild from './ComputationChild';\nimport { hasConsole } from 'config/environment';\nimport { isEqual } from 'utils/is';\nimport runloop from 'src/global/runloop';\n\nexport default class Computation extends Model {\n  constructor(parent, signature, key) {\n    super(parent, key);\n\n    this.signature = signature;\n\n    this.isReadonly = !this.signature.setter;\n    this.isComputed = true;\n\n    this.dependencies = [];\n\n    this.children = [];\n    this.childByKey = {};\n\n    this.deps = [];\n\n    this.dirty = true;\n\n    // TODO: is there a less hackish way to do this?\n    this.shuffle = undefined;\n  }\n\n  get setRoot() {\n    if (this.signature.setter) return this;\n  }\n\n  get(shouldCapture, opts) {\n    if (shouldCapture) capture(this);\n\n    if (this.dirty) {\n      this.dirty = false;\n      const old = this.value;\n      this.value = this.getValue();\n      // this may cause a view somewhere to update, so it must be in a runloop\n      if (!runloop.active()) {\n        runloop.start();\n        if (!isEqual(old, this.value)) this.notifyUpstream();\n        runloop.end();\n      } else {\n        if (!isEqual(old, this.value)) this.notifyUpstream();\n      }\n      if (this.wrapper) this.newWrapperValue = this.value;\n      this.adapt();\n    }\n\n    // if capturing, this value needs to be unwrapped because it's for external use\n    return maybeBind(\n      this,\n      // if unwrap is supplied, it overrides capture\n      this.wrapper && (opts && 'unwrap' in opts ? opts.unwrap !== false : shouldCapture)\n        ? this.wrapperValue\n        : this.value,\n      !opts || opts.shouldBind !== false\n    );\n  }\n\n  getContext() {\n    return this.parent.isRoot ? this.root.ractive : this.parent.get(false, noVirtual);\n  }\n\n  getValue() {\n    startCapturing();\n    let result;\n\n    try {\n      result = this.signature.getter.call(this.root.ractive, this.getContext());\n    } catch (err) {\n      warnIfDebug(`Failed to compute ${this.getKeypath()}: ${err.message || err}`);\n\n      // TODO this is all well and good in Chrome, but...\n      // ...also, should encapsulate this stuff better, and only\n      // show it if Ractive.DEBUG\n      if (hasConsole) {\n        if (console.groupCollapsed)\n          console.groupCollapsed(\n            '%cshow details',\n            'color: rgb(82, 140, 224); font-weight: normal; text-decoration: underline;'\n          );\n        const sig = this.signature;\n        console.error(\n          `${err.name}: ${err.message}\\n\\n${sig.getterString}${\n            sig.getterUseStack ? '\\n\\n' + err.stack : ''\n          }`\n        );\n        if (console.groupCollapsed) console.groupEnd();\n      }\n    }\n\n    const dependencies = stopCapturing();\n    this.setDependencies(dependencies);\n\n    return result;\n  }\n\n  mark() {\n    this.handleChange();\n  }\n\n  rebind(next, previous) {\n    // computations will grab all of their deps again automagically\n    if (next !== previous) this.handleChange();\n  }\n\n  set(value) {\n    if (this.isReadonly) {\n      throw new Error(`Cannot set read-only computed value '${this.key}'`);\n    }\n\n    this.signature.setter(value);\n    this.mark();\n  }\n\n  setDependencies(dependencies) {\n    // unregister any soft dependencies we no longer have\n    let i = this.dependencies.length;\n    while (i--) {\n      const model = this.dependencies[i];\n      if (!~dependencies.indexOf(model)) model.unregister(this);\n    }\n\n    // and add any new ones\n    i = dependencies.length;\n    while (i--) {\n      const model = dependencies[i];\n      if (!~this.dependencies.indexOf(model)) model.register(this);\n    }\n\n    this.dependencies = dependencies;\n  }\n\n  teardown() {\n    let i = this.dependencies.length;\n    while (i--) {\n      if (this.dependencies[i]) this.dependencies[i].unregister(this);\n    }\n    if (this.parent.computed[this.key] === this) delete this.parent.computed[this.key];\n    super.teardown();\n  }\n}\n\nconst prototype = Computation.prototype;\nconst child = ComputationChild.prototype;\nprototype.handleChange = child.handleChange;\nprototype.joinKey = child.joinKey;\n\nshared.Computation = Computation;\n","import { capture } from 'src/global/capture';\nimport Model from './Model';\nimport { handleChange, mark, marked } from 'shared/methodCallers';\nimport { hasOwn } from 'utils/object';\n\nexport default class ComputationChild extends Model {\n  constructor(parent, key) {\n    super(parent, key);\n\n    this.isReadonly = !this.root.ractive.syncComputedChildren;\n    this.dirty = true;\n    this.isComputed = true;\n  }\n\n  get setRoot() {\n    return this.parent.setRoot;\n  }\n\n  applyValue(value) {\n    super.applyValue(value);\n\n    if (!this.isReadonly) {\n      let source = this.parent;\n      // computed models don't have a shuffle method\n      while (source && source.shuffle) {\n        source = source.parent;\n      }\n\n      if (source) {\n        source.dependencies.forEach(mark);\n      }\n    }\n\n    if (this.setRoot) {\n      this.setRoot.set(this.setRoot.value);\n    }\n  }\n\n  get(shouldCapture, opts) {\n    if (shouldCapture) capture(this);\n\n    if (this.dirty) {\n      this.dirty = false;\n      const parentValue = this.parent.get();\n      this.value = parentValue ? parentValue[this.key] : undefined;\n      if (this.wrapper) this.newWrapperValue = this.value;\n      this.adapt();\n    }\n\n    return (opts && 'unwrap' in opts ? opts.unwrap !== false : shouldCapture) && this.wrapper\n      ? this.wrapperValue\n      : this.value;\n  }\n\n  handleChange() {\n    if (this.dirty) return;\n    this.dirty = true;\n\n    if (this.boundValue) this.boundValue = null;\n\n    this.links.forEach(marked);\n    this.deps.forEach(handleChange);\n    this.children.forEach(handleChange);\n  }\n\n  joinKey(key) {\n    if (key === undefined || key === '') return this;\n\n    if (!hasOwn(this.childByKey, key)) {\n      const child = new ComputationChild(this, key);\n      this.children.push(child);\n      this.childByKey[key] = child;\n    }\n\n    return this.childByKey[key];\n  }\n}\n","import { createDocumentFragment } from 'utils/dom';\nimport noop from 'utils/noop';\n\nexport default class Item {\n  constructor(options) {\n    this.up = options.up;\n    this.ractive = options.up.ractive;\n\n    this.template = options.template;\n    this.index = options.index;\n    this.type = options.template.t;\n\n    this.dirty = false;\n  }\n\n  bubble() {\n    if (!this.dirty) {\n      this.dirty = true;\n      this.up.bubble();\n    }\n  }\n\n  destroyed() {\n    if (this.fragment) this.fragment.destroyed();\n  }\n\n  find() {\n    return null;\n  }\n\n  findComponent() {\n    return null;\n  }\n\n  findNextNode() {\n    return this.up.findNextNode(this);\n  }\n\n  rebound(update) {\n    if (this.fragment) this.fragment.rebound(update);\n  }\n\n  shuffled() {\n    if (this.fragment) this.fragment.shuffled();\n  }\n\n  valueOf() {\n    return this.toString();\n  }\n}\n\nItem.prototype.findAll = noop;\nItem.prototype.findAllComponents = noop;\n\nexport class ContainerItem extends Item {\n  constructor(options) {\n    super(options);\n  }\n\n  detach() {\n    return this.fragment ? this.fragment.detach() : createDocumentFragment();\n  }\n\n  find(selector) {\n    if (this.fragment) {\n      return this.fragment.find(selector);\n    }\n  }\n\n  findAll(selector, options) {\n    if (this.fragment) {\n      this.fragment.findAll(selector, options);\n    }\n  }\n\n  findComponent(name) {\n    if (this.fragment) {\n      return this.fragment.findComponent(name);\n    }\n  }\n\n  findAllComponents(name, options) {\n    if (this.fragment) {\n      this.fragment.findAllComponents(name, options);\n    }\n  }\n\n  firstNode(skipParent) {\n    return this.fragment && this.fragment.firstNode(skipParent);\n  }\n\n  toString(escape) {\n    return this.fragment ? this.fragment.toString(escape) : '';\n  }\n}\n","import { warnIfDebug } from 'utils/log';\nimport adaptConfigurator from './custom/adapt';\nimport cssConfigurator from './custom/css/css';\nimport dataConfigurator from './custom/data';\nimport templateConfigurator from './custom/template';\nimport defaults from './defaults';\nimport registries from './registries';\nimport wrapPrototype from './wrapPrototypeMethod';\nimport deprecate from './deprecate';\nimport RactiveProto from '../prototype';\nimport { hasOwn, keys } from 'utils/object';\nimport { isFunction } from 'utils/is';\nimport hooks from 'src/events/Hook';\n\nconst config = {\n  extend: (Parent, proto, options, Child) => configure('extend', Parent, proto, options, Child),\n  init: (Parent, ractive, options) => configure('init', Parent, ractive, options),\n  reset: ractive => order.filter(c => c.reset && c.reset(ractive)).map(c => c.name)\n};\n\nconst custom = {\n  adapt: adaptConfigurator,\n  computed: config,\n  css: cssConfigurator,\n  data: dataConfigurator,\n  helpers: config,\n  template: templateConfigurator\n};\n\nconst defaultKeys = keys(defaults);\n\nconst isStandardKey = makeObj(defaultKeys.filter(key => !custom[key]));\n\n// blacklisted keys that we don't double extend\nconst isBlacklisted = makeObj(\n  defaultKeys.concat(registries.map(r => r.name), ['on', 'observe', 'attributes', 'cssData', 'use'])\n);\n\nconst order = [].concat(\n  defaultKeys.filter(key => !registries[key] && !custom[key]),\n  registries,\n  //custom.data,\n  custom.template,\n  custom.css\n);\n\nfunction configure(method, Parent, target, options, Child) {\n  deprecate(options);\n\n  for (const key in options) {\n    if (hasOwn(isStandardKey, key)) {\n      const value = options[key];\n\n      // warn the developer if they passed a function and ignore its value\n\n      // NOTE: we allow some functions on \"el\" because we duck type element lists\n      // and some libraries or ef'ed-up virtual browsers (phantomJS) return a\n      // function object as the result of querySelector methods\n      if (key !== 'el' && isFunction(value)) {\n        warnIfDebug(\n          `${key} is a Ractive option that does not expect a function and will be ignored`,\n          method === 'init' ? target : null\n        );\n      } else {\n        target[key] = value;\n      }\n    }\n  }\n\n  // disallow combination of `append` and `enhance`\n  if (target.append && target.enhance) {\n    throw new Error('Cannot use append and enhance at the same time');\n  }\n\n  registries.forEach(registry => {\n    registry[method](Parent, target, options, Child);\n  });\n\n  adaptConfigurator[method](Parent, target, options, Child);\n  templateConfigurator[method](Parent, target, options, Child);\n  cssConfigurator[method](Parent, target, options, Child);\n\n  extendOtherMethods(Parent.prototype, target, options);\n}\n\nconst _super = /\\b_super\\b/;\nfunction extendOtherMethods(parent, target, options) {\n  for (const key in options) {\n    if (!isBlacklisted[key] && hasOwn(options, key)) {\n      let member = options[key];\n\n      // if this is a method that overwrites a method, wrap it:\n      if (isFunction(member)) {\n        if (\n          (key in RactiveProto ||\n            (key.slice(0, 2) === 'on' && key.slice(2) in hooks && key in target)) &&\n          !_super.test(member.toString())\n        ) {\n          warnIfDebug(\n            `Overriding Ractive prototype function '${key}' without calling the '${_super}' method can be very dangerous.`\n          );\n        }\n        member = wrapPrototype(parent, key, member);\n      }\n\n      target[key] = member;\n    }\n  }\n}\n\nfunction makeObj(array) {\n  const obj = {};\n  array.forEach(x => (obj[x] = true));\n  return obj;\n}\n\nexport default config;\n","import { warnIfDebug } from 'utils/log';\nimport { isArray } from 'utils/is';\n\nfunction getMessage(deprecated, correct, isError) {\n  return (\n    `options.${deprecated} has been deprecated in favour of options.${correct}.` +\n    (isError ? ` You cannot specify both options, please use options.${correct}.` : '')\n  );\n}\n\nfunction deprecateOption(options, deprecatedOption, correct) {\n  if (deprecatedOption in options) {\n    if (!(correct in options)) {\n      warnIfDebug(getMessage(deprecatedOption, correct));\n      options[correct] = options[deprecatedOption];\n    } else {\n      throw new Error(getMessage(deprecatedOption, correct, true));\n    }\n  }\n}\n\nexport default function deprecate(options) {\n  deprecateOption(options, 'beforeInit', 'onconstruct');\n  deprecateOption(options, 'init', 'onrender');\n  deprecateOption(options, 'complete', 'oncomplete');\n  deprecateOption(options, 'eventDefinitions', 'events');\n\n  // Using extend with Component instead of options,\n  // like Human.extend( Spider ) means adaptors as a registry\n  // gets copied to options. So we have to check if actually an array\n  if (isArray(options.adaptors)) {\n    deprecateOption(options, 'adaptors', 'adapt');\n  }\n}\n","import noop from 'utils/noop';\nimport { isFunction } from 'utils/is';\n\nexport default function wrap(parent, name, method) {\n  if (!/_super/.test(method)) return method;\n\n  function wrapper() {\n    const superMethod = getSuperMethod(wrapper._parent, name);\n    const hasSuper = '_super' in this;\n    const oldSuper = this._super;\n\n    this._super = superMethod;\n\n    const result = method.apply(this, arguments);\n\n    if (hasSuper) {\n      this._super = oldSuper;\n    } else {\n      delete this._super;\n    }\n\n    return result;\n  }\n\n  wrapper._parent = parent;\n  wrapper._method = method;\n\n  return wrapper;\n}\n\nfunction getSuperMethod(parent, name) {\n  if (name in parent) {\n    const value = parent[name];\n\n    return isFunction(value) ? value : () => value;\n  }\n\n  return noop;\n}\n","import { assign, create, keys } from 'utils/object';\n\nconst registryNames = [\n  'adaptors',\n  'components',\n  'computed',\n  'decorators',\n  'easing',\n  'events',\n  'helpers',\n  'interpolators',\n  'partials',\n  'transitions'\n];\n\nconst registriesOnDefaults = ['computed', 'helpers'];\n\nclass Registry {\n  constructor(name, useDefaults) {\n    this.name = name;\n    this.useDefaults = useDefaults;\n  }\n\n  extend(Parent, proto, options) {\n    const parent = this.useDefaults ? Parent.defaults : Parent;\n    const target = this.useDefaults ? proto : proto.constructor;\n    this.configure(parent, target, options);\n  }\n\n  init() {\n    // noop\n  }\n\n  configure(Parent, target, options) {\n    const name = this.name;\n    const option = options[name];\n\n    const registry = create(Parent[name]);\n\n    assign(registry, option);\n\n    target[name] = registry;\n  }\n\n  reset(ractive) {\n    const registry = ractive[this.name];\n    let changed = false;\n\n    keys(registry).forEach(key => {\n      const item = registry[key];\n\n      if (item._fn) {\n        if (item._fn.isOwner) {\n          registry[key] = item._fn;\n        } else {\n          delete registry[key];\n        }\n        changed = true;\n      }\n    });\n\n    return changed;\n  }\n}\n\nconst registries = registryNames.map(name => {\n  const putInDefaults = registriesOnDefaults.indexOf(name) > -1;\n  return new Registry(name, putInDefaults);\n});\n\nexport default registries;\n","import { TEMPLATE_VERSION } from 'config/template';\nimport { addFunctions } from 'shared/getFunction';\nimport parser from '../runtime-parser';\nimport { hasOwn } from 'utils/object';\nimport { isFunction, isNumber, isString } from 'utils/is';\n\nexport default {\n  name: 'template',\n\n  extend(Parent, proto, options) {\n    // only assign if exists\n    if ('template' in options) {\n      const template = options.template;\n\n      if (isFunction(template)) {\n        proto.template = template;\n      } else {\n        proto.template = parseTemplate(template, proto);\n      }\n    }\n  },\n\n  init(Parent, ractive, options) {\n    // TODO because of prototypal inheritance, we might just be able to use\n    // ractive.template, and not bother passing through the Parent object.\n    // At present that breaks the test mocks' expectations\n    let template = 'template' in options ? options.template : Parent.prototype.template;\n    template = template || { v: TEMPLATE_VERSION, t: [] };\n\n    if (isFunction(template)) {\n      const fn = template;\n      template = getDynamicTemplate(ractive, fn);\n\n      ractive._config.template = {\n        fn,\n        result: template\n      };\n    }\n\n    template = parseTemplate(template, ractive);\n\n    // TODO the naming of this is confusing - ractive.template refers to [...],\n    // but Component.prototype.template refers to {v:1,t:[],p:[]}...\n    // it's unnecessary, because the developer never needs to access\n    // ractive.template\n    ractive.template = template.t;\n\n    if (template.p) {\n      extendPartials(ractive.partials, template.p);\n    }\n  },\n\n  reset(ractive) {\n    const result = resetValue(ractive);\n\n    if (result) {\n      const parsed = parseTemplate(result, ractive);\n\n      ractive.template = parsed.t;\n      extendPartials(ractive.partials, parsed.p, true);\n\n      return true;\n    }\n  }\n};\n\nfunction resetValue(ractive) {\n  const initial = ractive._config.template;\n\n  // If this isn't a dynamic template, there's nothing to do\n  if (!initial || !initial.fn) {\n    return;\n  }\n\n  const result = getDynamicTemplate(ractive, initial.fn);\n\n  // TODO deep equality check to prevent unnecessary re-rendering\n  // in the case of already-parsed templates\n  if (result !== initial.result) {\n    initial.result = result;\n    return result;\n  }\n}\n\nfunction getDynamicTemplate(ractive, fn) {\n  return fn.call(ractive, {\n    fromId: parser.fromId,\n    isParsed: parser.isParsed,\n    parse(template, options = parser.getParseOptions(ractive)) {\n      return parser.parse(template, options);\n    }\n  });\n}\n\nfunction parseTemplate(template, ractive) {\n  if (isString(template)) {\n    // parse will validate and add expression functions\n    template = parseAsString(template, ractive);\n  } else {\n    // need to validate and add exp for already parsed template\n    validate(template);\n    addFunctions(template);\n  }\n\n  return template;\n}\n\nfunction parseAsString(template, ractive) {\n  // ID of an element containing the template?\n  if (template[0] === '#') {\n    template = parser.fromId(template);\n  }\n\n  return parser.parseFor(template, ractive);\n}\n\nfunction validate(template) {\n  // Check that the template even exists\n  if (template == undefined) {\n    throw new Error(`The template cannot be ${template}.`);\n  } else if (!isNumber(template.v)) {\n    // Check the parsed template has a version at all\n    throw new Error(\n      \"The template parser was passed a non-string template, but the template doesn't have a version.  Make sure you're passing in the template you think you are.\"\n    );\n  } else if (template.v !== TEMPLATE_VERSION) {\n    // Check we're using the correct version\n    throw new Error(\n      `Mismatched template version (expected ${TEMPLATE_VERSION}, got ${\n        template.v\n      }) Please ensure you are using the latest version of Ractive.js in your build process as well as in your app`\n    );\n  }\n}\n\nfunction extendPartials(existingPartials, newPartials, overwrite) {\n  if (!newPartials) return;\n\n  // TODO there's an ambiguity here - we need to overwrite in the `reset()`\n  // case, but not initially...\n\n  for (const key in newPartials) {\n    if (overwrite || !hasOwn(existingPartials, key)) {\n      existingPartials[key] = newPartials[key];\n    }\n  }\n}\n","import { fatal, warnIfDebug, warnOnceIfDebug } from 'utils/log';\nimport { isArray, isObject, isFunction, isObjectType } from 'utils/is';\nimport bind from 'utils/bind';\n\nfunction validate(data) {\n  // Warn if userOptions.data is a non-POJO\n  if (data && data.constructor !== Object) {\n    if (isFunction(data)) {\n      // TODO do we need to support this in the new Ractive() case?\n    } else if (!isObjectType(data)) {\n      fatal(`data option must be an object or a function, \\`${data}\\` is not valid`);\n    } else {\n      warnIfDebug(\n        'If supplied, options.data should be a plain JavaScript object - using a non-POJO as the root object may work, but is discouraged'\n      );\n    }\n  }\n}\n\nexport default {\n  name: 'data',\n\n  extend: (Parent, proto, options) => {\n    let key;\n    let value;\n\n    // check for non-primitives, which could cause mutation-related bugs\n    if (options.data && isObject(options.data)) {\n      for (key in options.data) {\n        value = options.data[key];\n\n        if (value && isObjectType(value)) {\n          if (isObject(value) || isArray(value)) {\n            warnIfDebug(`Passing a \\`data\\` option with object and array properties to Ractive.extend() is discouraged, as mutating them is likely to cause bugs. Consider using a data function instead:\n\n  // this...\n  data: function () {\n    return {\n      myObject: {}\n    };\n  })\n\n  // instead of this:\n  data: {\n    myObject: {}\n  }`);\n          }\n        }\n      }\n    }\n\n    proto.data = combine(proto.data, options.data);\n  },\n\n  init: (Parent, ractive, options) => {\n    let result = combine(Parent.prototype.data, options.data);\n\n    if (isFunction(result)) result = result.call(ractive);\n\n    // bind functions to the ractive instance at the top level,\n    // unless it's a non-POJO (in which case alarm bells should ring)\n    if (result && result.constructor === Object) {\n      for (const prop in result) {\n        if (isFunction(result[prop])) {\n          const value = result[prop];\n          result[prop] = bind(value, ractive);\n          result[prop]._r_unbound = value;\n        }\n      }\n    }\n\n    return result || {};\n  },\n\n  reset(ractive) {\n    const result = this.init(ractive.constructor, ractive, ractive.viewmodel);\n    ractive.viewmodel.root.set(result);\n    return true;\n  }\n};\n\nfunction emptyData() {\n  return {};\n}\n\nfunction combine(parentValue, childValue) {\n  validate(childValue);\n\n  const parentIsFn = isFunction(parentValue);\n\n  // Very important, otherwise child instance can become\n  // the default data object on Ractive or a component.\n  // then ractive.set() ends up setting on the prototype!\n  if (!childValue && !parentIsFn) {\n    // this needs to be a function so that it can still inherit parent defaults\n    childValue = emptyData;\n  }\n\n  const childIsFn = isFunction(childValue);\n\n  // Fast path, where we just need to copy properties from\n  // parent to child\n  if (!parentIsFn && !childIsFn) {\n    return fromProperties(childValue, parentValue);\n  }\n\n  return function() {\n    const child = childIsFn ? callDataFunction(childValue, this) : childValue;\n    const parent = parentIsFn ? callDataFunction(parentValue, this) : parentValue;\n\n    return fromProperties(child, parent);\n  };\n}\n\nfunction callDataFunction(fn, context) {\n  const data = fn.call(context);\n\n  if (!data) return;\n\n  if (!isObjectType(data)) {\n    fatal('Data function must return an object');\n  }\n\n  if (data.constructor !== Object) {\n    warnOnceIfDebug(\n      'Data function returned something other than a plain JavaScript object. This might work, but is strongly discouraged'\n    );\n  }\n\n  return data;\n}\n\nfunction fromProperties(primary, secondary) {\n  if (primary && secondary) {\n    for (const key in secondary) {\n      if (!(key in primary)) {\n        primary[key] = secondary[key];\n      }\n    }\n\n    return primary;\n  }\n\n  return primary || secondary;\n}\n","import { addCSS, applyCSS } from 'src/global/css';\nimport transformCss from './transform';\nimport { uuid } from 'utils/id';\nimport { warnIfDebug } from 'utils/log';\nimport { getElement } from 'utils/dom';\nimport { splitKeypath } from 'shared/keypaths';\nimport CSSModel from 'src/model/specials/CSSModel';\nimport { assign, create, defineProperty } from 'utils/object';\nimport { isString, isFunction, isObjectType } from 'utils/is';\n\nconst hasCurly = /\\{/;\nexport default {\n  name: 'css',\n\n  // Called when creating a new component definition\n  extend: (Parent, proto, options, Child) => {\n    Child._cssIds = gatherIds(Parent);\n\n    defineProperty(Child, 'cssData', {\n      configurable: true,\n      value: assign(create(Parent.cssData), options.cssData || {})\n    });\n\n    defineProperty(Child, '_cssModel', {\n      configurable: true,\n      value: new CSSModel(Child)\n    });\n\n    if (options.css) initCSS(options, Child, proto);\n  },\n\n  // Called when creating a new component instance\n  init: (Parent, target, options) => {\n    if (!options.css) return;\n\n    warnIfDebug(`\nThe css option is currently not supported on a per-instance basis and will be discarded. Instead, we recommend instantiating from a component definition with a css option.\n\nconst Component = Ractive.extend({\n\t...\n\tcss: '/* your css */',\n\t...\n});\n\nconst componentInstance = new Component({ ... })\n\t\t`);\n  }\n};\n\nfunction gatherIds(start) {\n  let cmp = start;\n  const ids = [];\n\n  while (cmp) {\n    if (cmp.prototype.cssId) ids.push(cmp.prototype.cssId);\n    cmp = cmp.Parent;\n  }\n\n  return ids;\n}\n\nexport function evalCSS(component, css) {\n  if (isString(css)) return css;\n\n  const cssData = component.cssData;\n  const model = component._cssModel;\n  const data = function data(path) {\n    return model.joinAll(splitKeypath(path)).get();\n  };\n  data.__proto__ = cssData;\n\n  const result = css.call(component, data);\n  return isString(result) ? result : '';\n}\n\nexport function initCSS(options, target, proto) {\n  let css =\n    options.css === true\n      ? ''\n      : isString(options.css) && !hasCurly.test(options.css)\n        ? getElement(options.css) || options.css\n        : options.css;\n  let cssProp = css;\n\n  const id = options.cssId || uuid();\n\n  if (isObjectType(css)) {\n    css = 'textContent' in css ? css.textContent : css.innerHTML;\n    cssProp = css;\n  } else if (isFunction(css)) {\n    cssProp = css;\n    css = evalCSS(target, css);\n  }\n\n  const def = { transform: !options.noCssTransform };\n\n  defineProperty(target, '_cssDef', { configurable: true, value: def });\n\n  defineProperty(target, 'css', {\n    get() {\n      return cssProp;\n    },\n    set(next) {\n      cssProp = next;\n      const css = evalCSS(target, cssProp);\n      const styles = def.styles;\n      def.styles = def.transform ? transformCss(css, id) : css;\n      if (def.applied && styles !== def.styles) applyCSS(true);\n    }\n  });\n\n  def.styles = def.transform ? transformCss(css, id) : css;\n  def.id = proto.cssId = id;\n  target._cssIds.push(id);\n\n  addCSS(target._cssDef);\n}\n","import { SharedModel } from './SharedModel';\nimport { applyChanges } from '../../Ractive/static/styleSet';\n\nexport default class CSSModel extends SharedModel {\n  constructor(component) {\n    super(component.cssData, '@style');\n    this.component = component;\n  }\n\n  downstreamChanged(path, depth) {\n    if (this.locked) return;\n\n    const component = this.component;\n\n    component.extensions.forEach(e => {\n      const model = e._cssModel;\n      model.mark();\n      model.downstreamChanged(path, depth || 1);\n    });\n\n    if (!depth) {\n      applyChanges(component, true);\n    }\n  }\n}\n","import { applyCSS } from '../../global/css';\nimport transformCSS from '../config/custom/css/transform';\nimport { evalCSS } from '../config/custom/css/css';\nimport { build, set } from '../../shared/set';\nimport runloop from '../../global/runloop';\nimport { isObjectType, isFunction } from 'utils/is';\n\nexport default function setCSSData(keypath, value, options) {\n  const opts = isObjectType(keypath) ? value : options;\n  const model = this._cssModel;\n\n  model.locked = true;\n  const promise = set(build({ viewmodel: model }, keypath, value, true), opts);\n  model.locked = false;\n\n  const cascade = runloop.start();\n  this.extensions.forEach(e => {\n    const model = e._cssModel;\n    model.mark();\n    model.downstreamChanged('', 1);\n  });\n  runloop.end();\n\n  applyChanges(this, !opts || opts.apply !== false);\n\n  return promise.then(() => cascade);\n}\n\nexport function applyChanges(component, apply) {\n  const local = recomputeCSS(component);\n  const child = component.extensions\n    .map(e => applyChanges(e, false))\n    .reduce((a, c) => c || a, false);\n\n  if (apply && (local || child)) {\n    const def = component._cssDef;\n    if (!def || (def && def.applied)) applyCSS(true);\n  }\n\n  return local || child;\n}\n\nexport function recomputeCSS(component) {\n  const css = component.css;\n\n  if (!isFunction(css)) return;\n\n  const def = component._cssDef;\n  const result = evalCSS(component, css);\n  const styles = def.transform ? transformCSS(result, def.id) : result;\n\n  if (def.styles === styles) return;\n\n  def.styles = styles;\n\n  return true;\n}\n","function s4() {\n  return Math.floor((1 + Math.random()) * 0x10000)\n    .toString(16)\n    .substring(1);\n}\n\nexport function uuid() {\n  return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n","import cleanCss from 'utils/cleanCss';\n\nconst selectorsPattern = /(?:^|\\}|\\{|\\x01)\\s*([^\\{\\}\\0\\x01]+)\\s*(?=\\{)/g;\nconst importPattern = /@import\\s*\\([^)]*\\)\\s*;?/gi;\nconst importEndPattern = /\\x01/g;\nconst keyframesDeclarationPattern = /@keyframes\\s+[^\\{\\}]+\\s*\\{(?:[^{}]+|\\{[^{}]+})*}/gi;\nconst selectorUnitPattern = /((?:(?:\\[[^\\]]+\\])|(?:[^\\s\\+\\>~:]))+)((?:::?[^\\s\\+\\>\\~\\(:]+(?:\\([^\\)]+\\))?)*\\s*[\\s\\+\\>\\~]?)\\s*/g;\nconst excludePattern = /^(?:@|\\d+%)/;\nconst dataRvcGuidPattern = /\\[data-ractive-css~=\"\\{[a-z0-9-]+\\}\"]/g;\n\nfunction trim(str) {\n  return str.trim();\n}\n\nfunction extractString(unit) {\n  return unit.str;\n}\n\nfunction transformSelector(selector, parent) {\n  const selectorUnits = [];\n  let match;\n\n  while ((match = selectorUnitPattern.exec(selector))) {\n    selectorUnits.push({\n      str: match[0],\n      base: match[1],\n      modifiers: match[2]\n    });\n  }\n\n  // For each simple selector within the selector, we need to create a version\n  // that a) combines with the id, and b) is inside the id\n  const base = selectorUnits.map(extractString);\n\n  const transformed = [];\n  let i = selectorUnits.length;\n\n  while (i--) {\n    const appended = base.slice();\n\n    // Pseudo-selectors should go after the attribute selector\n    const unit = selectorUnits[i];\n    appended[i] = unit.base + parent + unit.modifiers || '';\n\n    const prepended = base.slice();\n    prepended[i] = parent + ' ' + prepended[i];\n\n    transformed.push(appended.join(' '), prepended.join(' '));\n  }\n\n  return transformed.join(', ');\n}\n\nexport default function transformCss(css, id) {\n  const dataAttr = `[data-ractive-css~=\"{${id}}\"]`;\n\n  let transformed;\n\n  if (dataRvcGuidPattern.test(css)) {\n    transformed = css.replace(dataRvcGuidPattern, dataAttr);\n  } else {\n    transformed = cleanCss(\n      css,\n      (css, reconstruct) => {\n        css = css\n          .replace(importPattern, '$&\\x01')\n          .replace(selectorsPattern, (match, $1) => {\n            // don't transform at-rules and keyframe declarations\n            if (excludePattern.test($1)) return match;\n\n            const selectors = $1.split(',').map(trim);\n            const transformed =\n              selectors.map(selector => transformSelector(selector, dataAttr)).join(', ') + ' ';\n\n            return match.replace($1, transformed);\n          })\n          .replace(importEndPattern, '');\n\n        return reconstruct(css);\n      },\n      [keyframesDeclarationPattern]\n    );\n  }\n\n  return transformed;\n}\n","const remove = /\\/\\*(?:[\\s\\S]*?)\\*\\//g;\nconst escape = /url\\(\\s*(['\"])(?:\\\\[\\s\\S]|(?!\\1).)*\\1\\s*\\)|url\\((?:\\\\[\\s\\S]|[^)])*\\)|(['\"])(?:\\\\[\\s\\S]|(?!\\2).)*\\2/gi;\nconst value = /\\0(\\d+)/g;\n\n// Removes comments and strings from the given CSS to make it easier to parse.\n// Callback receives the cleaned CSS and a function which can be used to put\n// the removed strings back in place after parsing is done.\nexport default function(css, callback, additionalReplaceRules = []) {\n  const values = [];\n  const reconstruct = css => css.replace(value, (match, n) => values[n]);\n  css = css.replace(escape, match => `\\0${values.push(match) - 1}`).replace(remove, '');\n\n  additionalReplaceRules.forEach(pattern => {\n    css = css.replace(pattern, match => `\\0${values.push(match) - 1}`);\n  });\n\n  return callback(css, reconstruct);\n}\n","import { ensureArray, combine } from 'utils/array';\n\nexport default {\n  extend: (Parent, proto, options) => {\n    proto.adapt = combine(proto.adapt, ensureArray(options.adapt));\n  },\n\n  init() {}\n};\n","import { doc } from '../config/environment';\n\nconst PREFIX = '/* Ractive.js component styles */';\n\n// Holds current definitions of styles.\nconst styleDefinitions = [];\n\n// Flag to tell if we need to update the CSS\nlet isDirty = false;\n\n// These only make sense on the browser. See additional setup below.\nlet styleElement = null;\nlet useCssText = null;\n\nexport function addCSS(styleDefinition) {\n  styleDefinitions.push(styleDefinition);\n  isDirty = true;\n}\n\nexport function applyCSS(force) {\n  const styleElement = style();\n\n  // Apply only seems to make sense when we're in the DOM. Server-side renders\n  // can call toCSS to get the updated CSS.\n  if (!styleElement || (!force && !isDirty)) return;\n\n  if (useCssText) {\n    styleElement.styleSheet.cssText = getCSS(null);\n  } else {\n    styleElement.innerHTML = getCSS(null);\n  }\n\n  isDirty = false;\n}\n\nexport function getCSS(cssIds) {\n  const filteredStyleDefinitions = cssIds\n    ? styleDefinitions.filter(style => ~cssIds.indexOf(style.id))\n    : styleDefinitions;\n\n  filteredStyleDefinitions.forEach(d => (d.applied = true));\n\n  return filteredStyleDefinitions.reduce(\n    (styles, style) => `${styles ? `${styles}\\n\\n/* {${style.id}} */\\n${style.styles}` : ''}`,\n    PREFIX\n  );\n}\n\nfunction style() {\n  // If we're on the browser, additional setup needed.\n  if (doc && !styleElement) {\n    styleElement = doc.createElement('style');\n    styleElement.type = 'text/css';\n    styleElement.setAttribute('data-ractive-css', '');\n\n    doc.getElementsByTagName('head')[0].appendChild(styleElement);\n\n    useCssText = !!styleElement.styleSheet;\n  }\n\n  return styleElement;\n}\n","import { splitKeypath } from 'shared/keypaths';\n\nexport default function readLink(keypath, options = {}) {\n  const path = splitKeypath(keypath);\n\n  if (this.viewmodel.has(path[0])) {\n    let model = this.viewmodel.joinAll(path);\n\n    if (!model.isLink) return;\n\n    while ((model = model.target) && options.canonical !== false) {\n      if (!model.isLink) break;\n    }\n\n    if (model) return { ractive: model.root.ractive, keypath: model.getKeypath() };\n  }\n}\n","import makeArrayMethod from './shared/makeArrayMethod';\nexport default makeArrayMethod('push').path;\n","import makeArrayMethod from './shared/makeArrayMethod';\nexport default makeArrayMethod('pop').path;\n","export default function Ractive$once(eventName, handler) {\n  const listener = this.on(eventName, function() {\n    handler.apply(this, arguments);\n    listener.cancel();\n  });\n\n  // so we can still do listener.cancel() manually\n  return listener;\n}\n","import trim from './shared/trim';\nimport notEmptyString from './shared/notEmptyString';\nimport { hasOwn } from 'utils/object';\nimport { isObjectType, isString } from 'utils/is';\n\nexport default function Ractive$on(eventName, callback) {\n  // eventName may already be a map\n  const map = isObjectType(eventName) ? eventName : {};\n  // or it may be a string along with a callback\n  if (isString(eventName)) map[eventName] = callback;\n\n  let silent = false;\n  const events = [];\n\n  for (const k in map) {\n    const callback = map[k];\n    const caller = function(...args) {\n      if (!silent) return callback.apply(this, args);\n    };\n    const entry = {\n      callback,\n      handler: caller\n    };\n\n    if (hasOwn(map, k)) {\n      const names = k\n        .split(' ')\n        .map(trim)\n        .filter(notEmptyString);\n      names.forEach(n => {\n        (this._subs[n] || (this._subs[n] = [])).push(entry);\n        if (n.indexOf('.')) this._nsSubs++;\n        events.push([n, entry]);\n      });\n    }\n  }\n\n  return {\n    cancel: () => events.forEach(e => this.off(e[0], e[1].callback)),\n    isSilenced: () => silent,\n    silence: () => (silent = true),\n    resume: () => (silent = false)\n  };\n}\n","import { removeFromArray } from 'utils/array';\nimport trim from './shared/trim';\nimport notEmptyString from './shared/notEmptyString';\n\nexport default function Ractive$off(eventName, callback) {\n  // if no event is specified, remove _all_ event listeners\n  if (!eventName) {\n    this._subs = {};\n  } else {\n    // Handle multiple space-separated event names\n    const eventNames = eventName\n      .split(' ')\n      .map(trim)\n      .filter(notEmptyString);\n\n    eventNames.forEach(event => {\n      const subs = this._subs[event];\n      // if given a specific callback to remove, remove only it\n      if (subs && callback) {\n        const entry = subs.find(s => s.callback === callback);\n        if (entry) {\n          removeFromArray(subs, entry);\n          entry.off = true;\n\n          if (event.indexOf('.')) this._nsSubs--;\n        }\n      } else if (subs) {\n        // otherwise, remove all listeners for this event\n        if (event.indexOf('.')) this._nsSubs -= subs.length;\n        subs.length = 0;\n      }\n    });\n  }\n\n  return this;\n}\n","export default str => str !== '';\n","export default str => str.trim();\n","import { isObject, isFunction } from 'utils/is';\nimport { assign } from 'utils/object';\n\nconst onceOptions = { init: false, once: true };\n\nexport default function observeOnce(keypath, callback, options) {\n  if (isObject(keypath) || isFunction(keypath)) {\n    options = assign(callback || {}, onceOptions);\n    return this.observe(keypath, options);\n  }\n\n  options = assign(options || {}, onceOptions);\n  return this.observe(keypath, callback, options);\n}\n","import { isObject, isFunction } from 'utils/is';\nimport { warnOnceIfDebug } from 'utils/log';\nimport { splitKeypath } from 'shared/keypaths';\nimport resolveReference from 'src/view/resolvers/resolveReference';\nimport Observer from './observe/Observer';\nimport PatternObserver from './observe/Pattern';\nimport ArrayObserver from './observe/Array';\nimport { keys } from 'utils/object';\n\nexport default function observe(keypath, callback, options) {\n  const observers = [];\n  let map;\n  let opts;\n\n  if (isObject(keypath)) {\n    map = keypath;\n    opts = callback || {};\n  } else {\n    if (isFunction(keypath)) {\n      map = { '': keypath };\n      opts = callback || {};\n    } else {\n      map = {};\n      map[keypath] = callback;\n      opts = options || {};\n    }\n  }\n\n  let silent = false;\n  keys(map).forEach(keypath => {\n    const callback = map[keypath];\n    const caller = function(...args) {\n      if (silent) return;\n      return callback.apply(this, args);\n    };\n\n    let keypaths = keypath.split(' ');\n    if (keypaths.length > 1) keypaths = keypaths.filter(k => k);\n\n    keypaths.forEach(keypath => {\n      opts.keypath = keypath;\n      const observer = createObserver(this, keypath, caller, opts);\n      if (observer) observers.push(observer);\n    });\n  });\n\n  // add observers to the Ractive instance, so they can be\n  // cancelled on ractive.teardown()\n  this._observers.push.apply(this._observers, observers);\n\n  return {\n    cancel: () => observers.forEach(o => o.cancel()),\n    isSilenced: () => silent,\n    silence: () => (silent = true),\n    resume: () => (silent = false)\n  };\n}\n\nfunction createObserver(ractive, keypath, callback, options) {\n  const keys = splitKeypath(keypath);\n  let wildcardIndex = keys.indexOf('*');\n  if (!~wildcardIndex) wildcardIndex = keys.indexOf('**');\n\n  options.fragment = options.fragment || ractive.fragment;\n\n  let model;\n  if (!options.fragment) {\n    model = ractive.viewmodel.joinKey(keys[0]);\n  } else {\n    // .*.whatever relative wildcard is a special case because splitkeypath doesn't handle the leading .\n    if (~keys[0].indexOf('.*')) {\n      model = options.fragment.findContext();\n      wildcardIndex = 0;\n      keys[0] = keys[0].slice(1);\n    } else {\n      model =\n        wildcardIndex === 0\n          ? options.fragment.findContext()\n          : resolveReference(options.fragment, keys[0]);\n    }\n  }\n\n  // the model may not exist key\n  if (!model) model = ractive.viewmodel.joinKey(keys[0]);\n\n  if (!~wildcardIndex) {\n    model = model.joinAll(keys.slice(1));\n    if (options.array) {\n      return new ArrayObserver(ractive, model, callback, options);\n    } else {\n      return new Observer(ractive, model, callback, options);\n    }\n  } else {\n    const double = keys.indexOf('**');\n    if (~double) {\n      if (double + 1 !== keys.length || ~keys.indexOf('*')) {\n        warnOnceIfDebug(\n          `Recursive observers may only specify a single '**' at the end of the path.`\n        );\n        return;\n      }\n    }\n\n    model = model.joinAll(keys.slice(1, wildcardIndex));\n\n    return new PatternObserver(ractive, model, keys.slice(wildcardIndex), callback, options);\n  }\n}\n","import { removeFromArray } from 'utils/array';\nimport { isArray } from 'utils/is';\nimport runloop from 'src/global/runloop';\n\nfunction negativeOne() {\n  return -1;\n}\n\nexport default class ArrayObserver {\n  constructor(ractive, model, callback, options) {\n    this.ractive = ractive;\n    this.model = model;\n    this.keypath = model.getKeypath();\n    this.callback = callback;\n    this.options = options;\n\n    this.pending = null;\n\n    model.register(this);\n\n    if (options.init !== false) {\n      this.sliced = [];\n      this.shuffle([]);\n      this.dispatch();\n    } else {\n      this.sliced = this.slice();\n    }\n  }\n\n  cancel() {\n    this.model.unregister(this);\n    removeFromArray(this.ractive._observers, this);\n  }\n\n  dispatch() {\n    this.callback(this.pending);\n    this.pending = null;\n    if (this.options.once) this.cancel();\n  }\n\n  handleChange(path) {\n    if (this.pending) {\n      // post-shuffle\n      runloop.addObserver(this, this.options.defer);\n    } else if (!path) {\n      // entire array changed\n      this.shuffle(this.sliced.map(negativeOne));\n      this.handleChange();\n    }\n  }\n\n  shuffle(newIndices) {\n    const newValue = this.slice();\n\n    const inserted = [];\n    const deleted = [];\n    let start;\n\n    const hadIndex = {};\n\n    newIndices.forEach((newIndex, oldIndex) => {\n      hadIndex[newIndex] = true;\n\n      if (newIndex !== oldIndex && start === undefined) {\n        start = oldIndex;\n      }\n\n      if (newIndex === -1) {\n        deleted.push(this.sliced[oldIndex]);\n      }\n    });\n\n    if (start === undefined) start = newIndices.length;\n\n    const len = newValue.length;\n    for (let i = 0; i < len; i += 1) {\n      if (!hadIndex[i]) inserted.push(newValue[i]);\n    }\n\n    this.pending = { inserted, deleted, start };\n    this.sliced = newValue;\n  }\n\n  slice() {\n    const value = this.model.get();\n    return isArray(value) ? value.slice() : [];\n  }\n}\n","import { escapeKey } from 'shared/keypaths';\nimport { removeFromArray } from 'utils/array';\nimport { isArray, isEqual } from 'utils/is';\nimport runloop from 'src/global/runloop';\nimport { create, keys } from 'utils/object';\n\nconst star = /\\*+/g;\n\nexport default class PatternObserver {\n  constructor(ractive, baseModel, keys, callback, options) {\n    this.context = options.context || ractive;\n    this.ractive = ractive;\n    this.baseModel = baseModel;\n    this.keys = keys;\n    this.callback = callback;\n\n    const pattern = keys.join('\\\\.').replace(star, '(.+)');\n    const baseKeypath = (this.baseKeypath = baseModel.getKeypath(ractive));\n    this.pattern = new RegExp(`^${baseKeypath ? baseKeypath + '\\\\.' : ''}${pattern}$`);\n    this.recursive = keys.length === 1 && keys[0] === '**';\n    if (this.recursive) this.keys = ['*'];\n    if (options.old) {\n      this.oldContext = create(ractive);\n      this.oldFn = options.old;\n    }\n\n    this.oldValues = {};\n    this.newValues = {};\n\n    this.defer = options.defer;\n    this.once = options.once;\n    this.strict = options.strict;\n\n    this.dirty = false;\n    this.changed = [];\n    this.partial = false;\n    this.links = options.links;\n\n    const models = baseModel.findMatches(this.keys);\n\n    models.forEach(model => {\n      this.newValues[model.getKeypath(this.ractive)] = model.get();\n    });\n\n    if (options.init !== false) {\n      this.dispatch();\n    } else {\n      updateOld(this, this.newValues);\n    }\n\n    baseModel.registerPatternObserver(this);\n  }\n\n  cancel() {\n    this.baseModel.unregisterPatternObserver(this);\n    removeFromArray(this.ractive._observers, this);\n  }\n\n  dispatch() {\n    const newValues = this.newValues;\n    this.newValues = {};\n    keys(newValues).forEach(keypath => {\n      const newValue = newValues[keypath];\n      const oldValue = this.oldValues[keypath];\n\n      if (this.strict && newValue === oldValue) return;\n      if (isEqual(newValue, oldValue)) return;\n\n      let args = [newValue, oldValue, keypath];\n      if (keypath) {\n        const wildcards = this.pattern.exec(keypath);\n        if (wildcards) {\n          args = args.concat(wildcards.slice(1));\n        }\n      }\n\n      this.callback.apply(this.context, args);\n    });\n\n    updateOld(this, newValues, this.partial);\n\n    this.dirty = false;\n  }\n\n  notify(key) {\n    this.changed.push(key);\n  }\n\n  shuffle(newIndices) {\n    if (!isArray(this.baseModel.value)) return;\n\n    const max = this.baseModel.value.length;\n\n    for (let i = 0; i < newIndices.length; i++) {\n      if (newIndices[i] === -1 || newIndices[i] === i) continue;\n      this.changed.push([i]);\n    }\n\n    for (let i = newIndices.touchedFrom; i < max; i++) {\n      this.changed.push([i]);\n    }\n  }\n\n  handleChange() {\n    if (!this.dirty || this.changed.length) {\n      if (!this.dirty) this.newValues = {};\n\n      if (!this.changed.length) {\n        this.baseModel.findMatches(this.keys).forEach(model => {\n          const keypath = model.getKeypath(this.ractive);\n          this.newValues[keypath] = model.get();\n        });\n        this.partial = false;\n      } else {\n        let count = 0;\n\n        if (this.recursive) {\n          this.changed.forEach(keys => {\n            const model = this.baseModel.joinAll(keys);\n            if (model.isLink && !this.links) return;\n            count++;\n            this.newValues[model.getKeypath(this.ractive)] = model.get();\n          });\n        } else {\n          const ok = this.baseModel.isRoot\n            ? this.changed.map(keys => keys.map(escapeKey).join('.'))\n            : this.changed.map(keys => this.baseKeypath + '.' + keys.map(escapeKey).join('.'));\n\n          this.baseModel.findMatches(this.keys).forEach(model => {\n            const keypath = model.getKeypath(this.ractive);\n            const check = k => {\n              return (\n                (k.indexOf(keypath) === 0 &&\n                  (k.length === keypath.length || k[keypath.length] === '.')) ||\n                (keypath.indexOf(k) === 0 &&\n                  (k.length === keypath.length || keypath[k.length] === '.'))\n              );\n            };\n\n            // is this model on a changed keypath?\n            if (ok.filter(check).length) {\n              count++;\n              this.newValues[keypath] = model.get();\n            }\n          });\n        }\n\n        // no valid change triggered, so bail to avoid breakage\n        if (!count) return;\n\n        this.partial = true;\n      }\n\n      runloop.addObserver(this, this.defer);\n      this.dirty = true;\n      this.changed.length = 0;\n\n      if (this.once) this.cancel();\n    }\n  }\n}\n\nfunction updateOld(observer, vals, partial) {\n  const olds = observer.oldValues;\n\n  if (observer.oldFn) {\n    if (!partial) observer.oldValues = {};\n\n    keys(vals).forEach(k => {\n      const args = [olds[k], vals[k], k];\n      const parts = observer.pattern.exec(k);\n      if (parts) {\n        args.push.apply(args, parts.slice(1));\n      }\n      observer.oldValues[k] = observer.oldFn.apply(observer.oldContext, args);\n    });\n  } else {\n    if (partial) {\n      keys(vals).forEach(k => (olds[k] = vals[k]));\n    } else {\n      observer.oldValues = vals;\n    }\n  }\n}\n","import { isEqual, isFunction } from 'utils/is';\nimport { removeFromArray } from 'utils/array';\nimport runloop from 'src/global/runloop';\nimport { rebindMatch } from 'shared/rebind';\nimport { create } from 'utils/object';\n\nexport default class Observer {\n  constructor(ractive, model, callback, options) {\n    this.context = options.context || ractive;\n    this.callback = callback;\n    this.ractive = ractive;\n    this.keypath = options.keypath;\n    this.options = options;\n\n    if (model) this.resolved(model);\n\n    if (isFunction(options.old)) {\n      this.oldContext = create(ractive);\n      this.oldFn = options.old;\n    }\n\n    if (options.init !== false) {\n      this.dirty = true;\n      this.dispatch();\n    } else {\n      updateOld(this);\n    }\n\n    this.dirty = false;\n  }\n\n  cancel() {\n    this.cancelled = true;\n    if (this.model) {\n      this.model.unregister(this);\n    } else {\n      this.resolver.unbind();\n    }\n    removeFromArray(this.ractive._observers, this);\n  }\n\n  dispatch() {\n    if (!this.cancelled) {\n      this.callback.call(this.context, this.newValue, this.oldValue, this.keypath);\n      updateOld(this, true);\n      this.dirty = false;\n    }\n  }\n\n  handleChange() {\n    if (!this.dirty) {\n      const newValue = this.model.get();\n      if (isEqual(newValue, this.oldValue)) return;\n\n      this.newValue = newValue;\n\n      if (this.options.strict && this.newValue === this.oldValue) return;\n\n      runloop.addObserver(this, this.options.defer);\n      this.dirty = true;\n\n      if (this.options.once) runloop.scheduleTask(() => this.cancel());\n    } else {\n      // make sure the newValue stays updated in case this observer gets touched multiple times in one loop\n      this.newValue = this.model.get();\n    }\n  }\n\n  rebind(next, previous) {\n    next = rebindMatch(this.keypath, next, previous);\n    if (next === this.model) return false;\n\n    if (this.model) this.model.unregister(this);\n    if (next) next.addShuffleTask(() => this.resolved(next));\n  }\n\n  resolved(model) {\n    this.model = model;\n\n    this.oldValue = undefined;\n    this.newValue = model.get();\n\n    model.register(this);\n  }\n}\n\nfunction updateOld(observer, fresh) {\n  const next = fresh\n    ? observer.model\n      ? observer.model.get()\n      : observer.newValue\n    : observer.newValue;\n  observer.oldValue = observer.oldFn\n    ? observer.oldFn.call(observer.oldContext, undefined, next, observer.keypath)\n    : next;\n}\n","import { splitKeypath } from 'shared/keypaths';\nimport resolveReference from 'src/view/resolvers/resolveReference';\nimport runloop from 'src/global/runloop';\n\nexport default function link(there, here, options) {\n  let model;\n  const target = (options && (options.ractive || options.instance)) || this;\n\n  // may need to allow a mapping to resolve implicitly\n  const sourcePath = splitKeypath(there);\n  if (!target.viewmodel.has(sourcePath[0]) && target.component) {\n    model = resolveReference(target.component.up, sourcePath[0]);\n    model = model.joinAll(sourcePath.slice(1));\n  }\n\n  const src = model || target.viewmodel.joinAll(sourcePath);\n  const dest = this.viewmodel.joinAll(splitKeypath(here), { lastLink: false });\n\n  if (isUpstream(src, dest) || isUpstream(dest, src)) {\n    throw new Error('A keypath cannot be linked to itself.');\n  }\n\n  const promise = runloop.start();\n\n  dest.link(src, (options && options.keypath) || there);\n\n  runloop.end();\n\n  return promise;\n}\n\nfunction isUpstream(check, start) {\n  let model = start;\n  while (model) {\n    if (model === check || model.owner === check) return true;\n    model = model.target || model.parent;\n  }\n}\n","import hooks from 'src/events/Hook';\nimport { getElement } from 'utils/dom';\n\nexport default function Ractive$insert(target, anchor) {\n  if (!this.fragment.rendered) {\n    // TODO create, and link to, documentation explaining this\n    throw new Error(\n      'The API has changed - you must call `ractive.render(target[, anchor])` to render your Ractive instance. Once rendered you can use `ractive.insert()`.'\n    );\n  }\n\n  target = getElement(target);\n  anchor = getElement(anchor) || null;\n\n  if (!target) {\n    throw new Error('You must specify a valid target to insert into');\n  }\n\n  target.insertBefore(this.detach(), anchor);\n  this.el = target;\n\n  (target.__ractive_instances__ || (target.__ractive_instances__ = [])).push(this);\n  this.isDetached = false;\n\n  fireInsertHook(this);\n}\n\nfunction fireInsertHook(ractive) {\n  hooks.insert.fire(ractive);\n\n  ractive.findAllComponents('*').forEach(child => {\n    fireInsertHook(child.instance);\n  });\n}\n","import { isClient, svg, vendors, win, doc } from 'config/environment';\nimport { html } from 'config/namespaces';\nimport { isString, isNumber } from 'utils/is';\n\nlet createElement, matches, div, methodNames, unprefixed, prefixed, i, j, makeFunction;\n\n// Test for SVG support\nif (!svg) {\n  /* istanbul ignore next */\n  createElement = (type, ns, extend) => {\n    if (ns && ns !== html) {\n      throw \"This browser does not support namespaces other than http://www.w3.org/1999/xhtml. The most likely cause of this error is that you're trying to render SVG in an older browser. See http://ractive.js.org/support/#svgs for more information\";\n    }\n\n    return extend ? doc.createElement(type, extend) : doc.createElement(type);\n  };\n} else {\n  createElement = (type, ns, extend) => {\n    if (!ns || ns === html) {\n      return extend ? doc.createElement(type, extend) : doc.createElement(type);\n    }\n\n    return extend ? doc.createElementNS(ns, type, extend) : doc.createElementNS(ns, type);\n  };\n}\n\nexport function createDocumentFragment() {\n  return doc.createDocumentFragment();\n}\n\nfunction getElement(input) {\n  let output;\n\n  if (!input || typeof input === 'boolean') {\n    return;\n  }\n\n  /* istanbul ignore next */\n  if (!win || !doc || !input) {\n    return null;\n  }\n\n  // We already have a DOM node - no work to do. (Duck typing alert!)\n  if (input.nodeType) {\n    return input;\n  }\n\n  // Get node from string\n  if (isString(input)) {\n    // try ID first\n    output = doc.getElementById(input);\n\n    // then as selector, if possible\n    if (!output && doc.querySelector) {\n      try {\n        output = doc.querySelector(input);\n      } catch (e) {\n        /* this space intentionally left blank */\n      }\n    }\n\n    // did it work?\n    if (output && output.nodeType) {\n      return output;\n    }\n  }\n\n  // If we've been given a collection (jQuery, Zepto etc), extract the first item\n  if (input[0] && input[0].nodeType) {\n    return input[0];\n  }\n\n  return null;\n}\n\nif (!isClient) {\n  matches = null;\n} else {\n  div = createElement('div');\n  methodNames = ['matches', 'matchesSelector'];\n\n  makeFunction = function(methodName) {\n    return function(node, selector) {\n      return node[methodName](selector);\n    };\n  };\n\n  i = methodNames.length;\n\n  while (i-- && !matches) {\n    unprefixed = methodNames[i];\n\n    if (div[unprefixed]) {\n      matches = makeFunction(unprefixed);\n    } else {\n      j = vendors.length;\n      while (j--) {\n        prefixed = vendors[i] + unprefixed.substr(0, 1).toUpperCase() + unprefixed.substring(1);\n\n        if (div[prefixed]) {\n          matches = makeFunction(prefixed);\n          break;\n        }\n      }\n    }\n  }\n\n  // IE8... and apparently phantom some?\n  /* istanbul ignore next */\n  if (!matches) {\n    matches = function(node, selector) {\n      let parentNode, i;\n\n      parentNode = node.parentNode;\n\n      if (!parentNode) {\n        // empty dummy <div>\n        div.innerHTML = '';\n\n        parentNode = div;\n        node = node.cloneNode();\n\n        div.appendChild(node);\n      }\n\n      const nodes = parentNode.querySelectorAll(selector);\n\n      i = nodes.length;\n      while (i--) {\n        if (nodes[i] === node) {\n          return true;\n        }\n      }\n\n      return false;\n    };\n  }\n}\n\nfunction detachNode(node) {\n  // stupid ie\n  // eslint-disable-next-line valid-typeof\n  if (node && typeof node.parentNode !== 'unknown' && node.parentNode) {\n    node.parentNode.removeChild(node);\n  }\n\n  return node;\n}\n\nfunction safeToStringValue(value) {\n  return value == null || (isNumber(value) && isNaN(value)) || !value.toString ? '' : '' + value;\n}\n\nfunction safeAttributeString(string) {\n  return safeToStringValue(string)\n    .replace(/&/g, '&amp;')\n    .replace(/\"/g, '&quot;')\n    .replace(/'/g, '&#39;');\n}\n\nexport { createElement, detachNode, getElement, matches, safeToStringValue, safeAttributeString };\n","export const html = 'http://www.w3.org/1999/xhtml';\nexport const mathml = 'http://www.w3.org/1998/Math/MathML';\nexport const svg = 'http://www.w3.org/2000/svg';\nexport const xlink = 'http://www.w3.org/1999/xlink';\nexport const xml = 'http://www.w3.org/XML/1998/namespace';\nexport const xmlns = 'http://www.w3.org/2000/xmlns';\n\nexport default { html, mathml, svg, xlink, xml, xmlns };\n","import staticContext from '../static/getContext';\nimport getRactiveContext from 'src/shared/getRactiveContext';\nimport { isString } from 'utils/is';\n\nexport default function getContext(node, options) {\n  if (!node) return getRactiveContext(this);\n\n  if (isString(node)) {\n    node = this.find(node, options);\n  }\n\n  return staticContext(node);\n}\n","import { doc } from 'config/environment';\nimport getRactiveContext from 'shared/getRactiveContext';\nimport { isString } from 'utils/is';\n\nconst query = doc && doc.querySelector;\n\nexport default function getContext(node) {\n  if (isString(node) && query) {\n    node = query.call(document, node);\n  }\n\n  let instances;\n  if (node) {\n    if (node._ractive) {\n      return node._ractive.proxy.getContext();\n    } else if ((instances = node.__ractive_instances__)) {\n      if (instances.length === 1) return getRactiveContext(instances[0]);\n    } else return getContext(node.parentNode);\n  }\n}\n","import { splitKeypath } from 'shared/keypaths';\nimport resolveReference from 'src/view/resolvers/resolveReference';\nimport { FakeFragment } from 'shared/getRactiveContext';\nimport { isString } from 'utils/is';\n\nexport default function Ractive$get(keypath, opts) {\n  if (!isString(keypath)) return this.viewmodel.get(true, keypath);\n\n  const keys = splitKeypath(keypath);\n  const key = keys[0];\n\n  let model;\n\n  if (!this.viewmodel.has(key)) {\n    // if this is an inline component, we may need to create\n    // an implicit mapping\n    if (this.component && !this.isolated) {\n      model = resolveReference(this.fragment || new FakeFragment(this), key);\n    }\n  }\n\n  model = this.viewmodel.joinAll(keys);\n  return model.get(true, opts);\n}\n","import fireEvent from 'src/events/fireEvent';\nimport Context from 'shared/Context';\nimport { assign, create } from 'utils/object';\nimport { isObjectType } from 'utils/is';\n\nexport default function Ractive$fire(eventName, ...args) {\n  let ctx;\n\n  // watch for reproxy\n  if (args[0] instanceof Context) {\n    const proto = args.shift();\n    ctx = create(proto);\n    assign(ctx, proto);\n  } else if (isObjectType(args[0]) && (args[0] === null || args[0].constructor === Object)) {\n    ctx = Context.forRactive(this, args.shift());\n  } else {\n    ctx = Context.forRactive(this);\n  }\n\n  return fireEvent(this, eventName, ctx, args);\n}\n","import resolveReference from 'src/view/resolvers/resolveReference';\nimport Model from 'src/model/Model';\nimport { isNumeric, isObject, isNumber, isObjectType, isString } from 'utils/is';\nimport runloop from 'src/global/runloop';\nimport findElement from 'src/view/items/shared/findElement';\nimport { set as sharedSet } from './set';\nimport makeArrayMethod from '../Ractive/prototype/shared/makeArrayMethod';\nimport { animate as protoAnimate } from '../Ractive/prototype/animate';\nimport { update as protoUpdate } from '../Ractive/prototype/update';\nimport getRactiveContext, { extern, findParentWithContext } from './getRactiveContext';\nimport { hasOwn } from 'utils/object';\nimport { ELEMENT } from 'config/types';\n\nconst modelPush = makeArrayMethod('push').model;\nconst modelPop = makeArrayMethod('pop').model;\nconst modelShift = makeArrayMethod('shift').model;\nconst modelUnshift = makeArrayMethod('unshift').model;\nconst modelSort = makeArrayMethod('sort').model;\nconst modelSplice = makeArrayMethod('splice').model;\nconst modelReverse = makeArrayMethod('reverse').model;\n\nclass ContextData extends Model {\n  constructor(options) {\n    super(null, null);\n\n    this.isRoot = true;\n    this.root = this;\n    this.value = {};\n    this.ractive = options.ractive;\n    this.adaptors = [];\n    this.context = options.context;\n  }\n\n  getKeypath() {\n    return '@context.data';\n  }\n\n  rebound() {}\n}\n\nexport default class Context {\n  constructor(fragment, element) {\n    this.fragment = fragment;\n    this.element = element || findElement(fragment);\n    this.node = this.element && this.element.node;\n    this.ractive = fragment.ractive;\n    this.root = this;\n  }\n\n  get decorators() {\n    const items = {};\n    if (!this.element) return items;\n    this.element.decorators.forEach(d => (items[d.name] = d.handle));\n    return items;\n  }\n\n  get _data() {\n    return (\n      this.model ||\n      (this.root.model = new ContextData({\n        ractive: this.ractive,\n        context: this.root\n      }))\n    );\n  }\n\n  // the usual mutation suspects\n  add(keypath, d, options) {\n    const num = isNumber(d) ? +d : 1;\n    const opts = isObjectType(d) ? d : options;\n    return sharedSet(\n      build(this, keypath, num).map(pair => {\n        const [model, val] = pair;\n        const value = model.get();\n        if (!isNumeric(val) || !isNumeric(value)) throw new Error('Cannot add non-numeric value');\n        return [model, value + val];\n      }),\n      opts\n    );\n  }\n\n  animate(keypath, value, options) {\n    const model = findModel(this, keypath).model;\n    return protoAnimate(this.ractive, model, value, options);\n  }\n\n  // get relative keypaths and values\n  get(keypath) {\n    if (!keypath) return this.fragment.findContext().get(true);\n\n    const { model } = findModel(this, keypath);\n\n    return model ? model.get(true) : undefined;\n  }\n\n  getParent(component) {\n    let fragment = this.fragment;\n\n    if (fragment.context)\n      fragment = findParentWithContext(fragment.parent || (component && fragment.componentParent));\n    else {\n      fragment = findParentWithContext(fragment.parent || (component && fragment.componentParent));\n      if (fragment)\n        fragment = findParentWithContext(\n          fragment.parent || (component && fragment.componentParent)\n        );\n    }\n\n    if (!fragment || fragment === this.fragment) return;\n    else return fragment.getContext();\n  }\n\n  hasListener(name, bubble) {\n    // if the owner is a component, start there because the nearest element\n    // may exist outside of the immediate context (yield)\n    let el = this.fragment.owner.component\n      ? this.fragment.owner\n      : this.element || this.fragment.owner;\n    let base;\n\n    do {\n      base = el.component || el;\n      if (base.template.t === ELEMENT) {\n        if (findEvent(base, name)) return true;\n      }\n      el = el.up && el.up.owner;\n      if (el && el.component) el = el.component;\n    } while (el && bubble);\n  }\n\n  link(source, dest) {\n    const there = findModel(this, source).model;\n    const here = findModel(this, dest).model;\n    const promise = runloop.start();\n    here.link(there, source);\n    runloop.end();\n    return promise;\n  }\n\n  listen(event, handler) {\n    const el = this.element;\n    el.on(event, handler);\n    return {\n      cancel() {\n        el.off(event, handler);\n      }\n    };\n  }\n\n  observe(keypath, callback, options = {}) {\n    if (isObject(keypath)) options = callback || {};\n    options.fragment = this.fragment;\n    return this.ractive.observe(keypath, callback, options);\n  }\n\n  observeOnce(keypath, callback, options = {}) {\n    if (isObject(keypath)) options = callback || {};\n    options.fragment = this.fragment;\n    return this.ractive.observeOnce(keypath, callback, options);\n  }\n\n  pop(keypath) {\n    return modelPop(findModel(this, keypath).model, []);\n  }\n\n  push(keypath, ...values) {\n    return modelPush(findModel(this, keypath).model, values);\n  }\n\n  raise(name, event, ...args) {\n    let el = this.element;\n    let ev;\n\n    while (el) {\n      if (el.component) el = el.component;\n      ev = findEvent(el, name);\n      if (ev) {\n        return ev.fire(\n          ev.element.getContext(\n            event || {},\n            event && !('original' in event) ? { original: {} } : {}\n          ),\n          args\n        );\n      }\n\n      el = el.up && el.up.owner;\n    }\n  }\n\n  readLink(keypath, options) {\n    return this.ractive.readLink(this.resolve(keypath), options);\n  }\n\n  resolve(path, ractive) {\n    const { model, instance } = findModel(this, path);\n    return model ? model.getKeypath(ractive || instance) : path;\n  }\n\n  reverse(keypath) {\n    return modelReverse(findModel(this, keypath).model, []);\n  }\n\n  set(keypath, value, options) {\n    return sharedSet(build(this, keypath, value), options);\n  }\n\n  shift(keypath) {\n    return modelShift(findModel(this, keypath).model, []);\n  }\n\n  splice(keypath, index, drop, ...add) {\n    add.unshift(index, drop);\n    return modelSplice(findModel(this, keypath).model, add);\n  }\n\n  sort(keypath) {\n    return modelSort(findModel(this, keypath).model, []);\n  }\n\n  subtract(keypath, d, options) {\n    const num = isNumber(d) ? d : 1;\n    const opts = isObjectType(d) ? d : options;\n    return sharedSet(\n      build(this, keypath, num).map(pair => {\n        const [model, val] = pair;\n        const value = model.get();\n        if (!isNumeric(val) || !isNumeric(value)) throw new Error('Cannot add non-numeric value');\n        return [model, value - val];\n      }),\n      opts\n    );\n  }\n\n  toggle(keypath, options) {\n    const { model } = findModel(this, keypath);\n    return sharedSet([[model, !model.get()]], options);\n  }\n\n  unlink(dest) {\n    const here = findModel(this, dest).model;\n    const promise = runloop.start();\n    if (here.owner && here.owner._link) here.owner.unlink();\n    runloop.end();\n    return promise;\n  }\n\n  unlisten(event, handler) {\n    this.element.off(event, handler);\n  }\n\n  unshift(keypath, ...add) {\n    return modelUnshift(findModel(this, keypath).model, add);\n  }\n\n  update(keypath, options) {\n    return protoUpdate(this.ractive, findModel(this, keypath).model, options);\n  }\n\n  updateModel(keypath, cascade) {\n    const { model } = findModel(this, keypath);\n    const promise = runloop.start();\n    model.updateFromBindings(cascade);\n    runloop.end();\n    return promise;\n  }\n\n  // two-way binding related helpers\n  isBound() {\n    const { model } = this.getBindingModel(this);\n    return !!model;\n  }\n\n  getBindingPath(ractive) {\n    const { model, instance } = this.getBindingModel(this);\n    if (model) return model.getKeypath(ractive || instance);\n  }\n\n  getBinding() {\n    const { model } = this.getBindingModel(this);\n    if (model) return model.get(true);\n  }\n\n  getBindingModel(ctx) {\n    const el = ctx.element;\n    return { model: el.binding && el.binding.model, instance: el.up.ractive };\n  }\n\n  setBinding(value) {\n    const { model } = this.getBindingModel(this);\n    return sharedSet([[model, value]]);\n  }\n}\n\nContext.forRactive = getRactiveContext;\n// circular deps are fun\nextern.Context = Context;\n\n// TODO: at some point perhaps this could support relative * keypaths?\nfunction build(ctx, keypath, value) {\n  const sets = [];\n\n  // set multiple keypaths in one go\n  if (isObject(keypath)) {\n    for (const k in keypath) {\n      if (hasOwn(keypath, k)) {\n        sets.push([findModel(ctx, k).model, keypath[k]]);\n      }\n    }\n  } else {\n    // set a single keypath\n    sets.push([findModel(ctx, keypath).model, value]);\n  }\n\n  return sets;\n}\n\nfunction findModel(ctx, path) {\n  const frag = ctx.fragment;\n\n  if (!isString(path)) {\n    return { model: frag.findContext(), instance: path };\n  }\n\n  return { model: resolveReference(frag, path), instance: frag.ractive };\n}\n\nfunction findEvent(el, name) {\n  return el.events && el.events.find && el.events.find(e => ~e.template.n.indexOf(name));\n}\n","import hooks from 'src/events/Hook';\nimport runloop from 'src/global/runloop';\nimport { splitKeypath } from 'shared/keypaths';\nimport { isString } from 'utils/is';\n\nexport function update(ractive, model, options) {\n  // if the parent is wrapped, the adaptor will need to be updated before\n  // updating on this keypath\n  if (model.parent && model.parent.wrapper) {\n    model.parent.adapt();\n  }\n\n  const promise = runloop.start();\n\n  model.mark(options && options.force);\n\n  // notify upstream of changes\n  model.notifyUpstream();\n\n  runloop.end();\n\n  hooks.update.fire(ractive, model);\n\n  return promise;\n}\n\nexport default function Ractive$update(keypath, options) {\n  let opts, path;\n\n  if (isString(keypath)) {\n    path = splitKeypath(keypath);\n    opts = options;\n  } else {\n    opts = keypath;\n  }\n\n  return update(this, path ? this.viewmodel.joinAll(path) : this.viewmodel, opts);\n}\n","import { splitKeypath } from 'shared/keypaths';\nimport runloop from 'src/global/runloop';\nimport getNewIndices from 'shared/getNewIndices';\nimport { isArray } from 'utils/is';\n\nconst arrayProto = Array.prototype;\n\nexport default function(methodName) {\n  function path(keypath, ...args) {\n    return model(this.viewmodel.joinAll(splitKeypath(keypath)), args);\n  }\n\n  function model(mdl, args) {\n    let array = mdl.get();\n\n    if (!isArray(array)) {\n      if (array === undefined) {\n        array = [];\n        const result = arrayProto[methodName].apply(array, args);\n        const promise = runloop.start().then(() => result);\n        mdl.set(array);\n        runloop.end();\n        return promise;\n      } else {\n        throw new Error(\n          `shuffle array method ${methodName} called on non-array at ${mdl.getKeypath()}`\n        );\n      }\n    }\n\n    const newIndices = getNewIndices(array.length, methodName, args);\n    const result = arrayProto[methodName].apply(array, args);\n\n    const promise = runloop.start().then(() => result);\n    promise.result = result;\n\n    if (newIndices) {\n      if (mdl.shuffle) {\n        mdl.shuffle(newIndices);\n      } else {\n        // it's a computation, which don't have a shuffle, so just invalidate\n        mdl.mark();\n      }\n    } else {\n      mdl.set(result);\n    }\n\n    runloop.end();\n\n    return promise;\n  }\n\n  return { path, model };\n}\n","import { isNumber } from 'utils/is';\n\n// This function takes an array, the name of a mutator method, and the\n// arguments to call that mutator method with, and returns an array that\n// maps the old indices to their new indices.\n\n// So if you had something like this...\n//\n//     array = [ 'a', 'b', 'c', 'd' ];\n//     array.push( 'e' );\n//\n// ...you'd get `[ 0, 1, 2, 3 ]` - in other words, none of the old indices\n// have changed. If you then did this...\n//\n//     array.unshift( 'z' );\n//\n// ...the indices would be `[ 1, 2, 3, 4, 5 ]` - every item has been moved\n// one higher to make room for the 'z'. If you removed an item, the new index\n// would be -1...\n//\n//     array.splice( 2, 2 );\n//\n// ...this would result in [ 0, 1, -1, -1, 2, 3 ].\n//\n// This information is used to enable fast, non-destructive shuffling of list\n// sections when you do e.g. `ractive.splice( 'items', 2, 2 );\n\nexport default function getNewIndices(length, methodName, args) {\n  const newIndices = [];\n\n  const spliceArguments = getSpliceEquivalent(length, methodName, args);\n\n  if (!spliceArguments) {\n    return null; // TODO support reverse and sort?\n  }\n\n  const balance = spliceArguments.length - 2 - spliceArguments[1];\n\n  const removeStart = Math.min(length, spliceArguments[0]);\n  const removeEnd = removeStart + spliceArguments[1];\n  newIndices.startIndex = removeStart;\n\n  let i;\n  for (i = 0; i < removeStart; i += 1) {\n    newIndices.push(i);\n  }\n\n  for (; i < removeEnd; i += 1) {\n    newIndices.push(-1);\n  }\n\n  for (; i < length; i += 1) {\n    newIndices.push(i + balance);\n  }\n\n  // there is a net shift for the rest of the array starting with index + balance\n  if (balance !== 0) {\n    newIndices.touchedFrom = spliceArguments[0];\n  } else {\n    newIndices.touchedFrom = length;\n  }\n\n  return newIndices;\n}\n\n// The pop, push, shift an unshift methods can all be represented\n// as an equivalent splice\nfunction getSpliceEquivalent(length, methodName, args) {\n  switch (methodName) {\n    case 'splice':\n      if (args[0] !== undefined && args[0] < 0) {\n        args[0] = length + Math.max(args[0], -length);\n      }\n\n      if (args[0] === undefined) args[0] = 0;\n\n      while (args.length < 2) {\n        args.push(length - args[0]);\n      }\n\n      if (!isNumber(args[1])) {\n        args[1] = length - args[0];\n      }\n\n      // ensure we only remove elements that exist\n      args[1] = Math.min(args[1], length - args[0]);\n\n      return args;\n\n    case 'sort':\n    case 'reverse':\n      return null;\n\n    case 'pop':\n      if (length) {\n        return [length - 1, 1];\n      }\n      return [0, 0];\n\n    case 'push':\n      return [length, 0].concat(args);\n\n    case 'shift':\n      return [0, length ? 1 : 0];\n\n    case 'unshift':\n      return [0, 0].concat(args);\n  }\n}\n","import { ANCHOR, COMPONENT, ELEMENT } from 'config/types';\n\nexport default function findElement(start, orComponent = true, name) {\n  while (\n    start &&\n    (start.type !== ELEMENT || (name && start.name !== name)) &&\n    (!orComponent || (start.type !== COMPONENT && start.type !== ANCHOR))\n  ) {\n    // start is a fragment - look at the owner\n    if (start.owner) start = start.owner;\n    else if (start.component)\n      // start is a component or yielder - look at the container\n      start = start.containerFragment || start.component.up;\n    else if (start.parent)\n      // start is an item - look at the parent\n      start = start.parent;\n    else if (start.up)\n      // start is an item without a parent - look at the parent fragment\n      start = start.up;\n    else start = undefined;\n  }\n\n  return start;\n}\n","export default function Ractive$findParent(selector) {\n  if (this.parent) {\n    if (this.parent.component && this.parent.component.name === selector) {\n      return this.parent;\n    } else {\n      return this.parent.findParent(selector);\n    }\n  }\n\n  return null;\n}\n","export default function Ractive$findContainer(selector) {\n  if (this.container) {\n    if (this.container.component && this.container.component.name === selector) {\n      return this.container;\n    } else {\n      return this.container.findContainer(selector);\n    }\n  }\n\n  return null;\n}\n","import { isObjectType } from 'utils/is';\n\nexport default function Ractive$findComponent(selector, options = {}) {\n  if (isObjectType(selector)) {\n    options = selector;\n    selector = '';\n  }\n\n  let child = this.fragment.findComponent(selector, options);\n  if (child) return child;\n\n  if (options.remote) {\n    if (!selector && this._children.length) return this._children[0].instance;\n    for (let i = 0; i < this._children.length; i++) {\n      // skip children that are or should be in an anchor\n      if (this._children[i].target) continue;\n      if (this._children[i].name === selector) return this._children[i].instance;\n      child = this._children[i].instance.findComponent(selector, options);\n      if (child) return child;\n    }\n  }\n}\n","import { isArray, isObjectType } from 'utils/is';\n\nexport default function Ractive$findAllComponents(selector, options) {\n  if (!options && isObjectType(selector)) {\n    options = selector;\n    selector = '';\n  }\n\n  options = options || {};\n\n  if (!isArray(options.result)) options.result = [];\n\n  this.fragment.findAllComponents(selector, options);\n\n  if (options.remote) {\n    // search non-fragment children\n    this._children.forEach(c => {\n      if (!c.target && c.instance.fragment && c.instance.fragment.rendered) {\n        if (!selector || c.name === selector) {\n          options.result.push(c.instance);\n        }\n\n        c.instance.findAllComponents(selector, options);\n      }\n    });\n  }\n\n  return options.result;\n}\n","import { isArray } from 'utils/is';\n\nexport default function Ractive$findAll(selector, options = {}) {\n  if (!this.rendered)\n    throw new Error(\n      `Cannot call ractive.findAll('${selector}', ...) unless instance is rendered to the DOM`\n    );\n\n  if (!isArray(options.result)) options.result = [];\n\n  this.fragment.findAll(selector, options);\n\n  if (options.remote) {\n    // seach non-fragment children\n    this._children.forEach(c => {\n      if (!c.target && c.instance.fragment && c.instance.fragment.rendered) {\n        c.instance.findAll(selector, options);\n      }\n    });\n  }\n\n  return options.result;\n}\n","export default function Ractive$find(selector, options = {}) {\n  if (!this.rendered)\n    throw new Error(\n      `Cannot call ractive.find('${selector}') unless instance is rendered to the DOM`\n    );\n\n  let node = this.fragment.find(selector, options);\n  if (node) return node;\n\n  if (options.remote) {\n    for (let i = 0; i < this._children.length; i++) {\n      if (!this._children[i].instance.fragment.rendered) continue;\n      node = this._children[i].instance.find(selector, options);\n      if (node) return node;\n    }\n  }\n}\n","import hooks from 'src/events/Hook';\nimport runloop from 'src/global/runloop';\nimport { updateAnchors } from 'shared/anchors';\n\nexport default function detachChild(child) {\n  const children = this._children;\n  let meta, index;\n\n  let i = children.length;\n  while (i--) {\n    if (children[i].instance === child) {\n      index = i;\n      meta = children[i];\n      break;\n    }\n  }\n\n  if (!meta || child.parent !== this)\n    throw new Error(`Instance ${child._guid} is not attached to this instance.`);\n\n  const promise = runloop.start();\n\n  if (meta.anchor) meta.anchor.removeChild(meta);\n  if (!child.isolated) child.viewmodel.detached();\n\n  children.splice(index, 1);\n  if (meta.target) {\n    this.splice(\n      `@this.children.byName.${meta.target}`,\n      children.byName[meta.target].indexOf(meta),\n      1\n    );\n    updateAnchors(this, meta.target);\n  }\n  const rm = child.viewmodel.getRactiveModel();\n  rm.joinKey('parent', { lastLink: false }).unlink();\n  rm.joinKey('root', { lastLink: false }).link(rm);\n  child.root = child;\n  child.parent = null;\n  child.component = null;\n\n  hooks.detachchild.fire(child);\n\n  runloop.end();\n\n  promise.ractive = child;\n  return promise.then(() => child);\n}\n","import hooks from 'src/events/Hook';\nimport { removeFromArray } from 'utils/array';\n\nexport default function Ractive$detach() {\n  if (this.isDetached) {\n    return this.el;\n  }\n\n  if (this.el) {\n    removeFromArray(this.el.__ractive_instances__, this);\n  }\n\n  this.el = this.fragment.detach();\n  this.isDetached = true;\n\n  hooks.detach.fire(this);\n  return this.el;\n}\n","import { splitKeypath } from 'shared/keypaths';\nimport { isString, isFunction } from 'utils/is';\nimport runloop from 'src/global/runloop';\nimport { fireShuffleTasks } from 'src/model/ModelBase';\n\nexport function compute(path, computed) {\n  this.computed[path] = computed;\n  if (isString(computed) || isFunction(computed))\n    computed = this.computed[path] = { get: computed };\n\n  const keys = splitKeypath(path);\n  if (!~path.indexOf('*')) {\n    const last = keys.pop();\n    return this.viewmodel.joinAll(keys).compute(last, computed);\n  } else {\n    computed.pattern = new RegExp(\n      '^' +\n        keys\n          .map(k => k.replace(/\\*\\*/g, '(.+)').replace(/\\*/g, '((?:\\\\\\\\.|[^\\\\.])+)'))\n          .join('\\\\.') +\n        '$'\n    );\n  }\n}\n\nexport default function Ractive$compute(path, computed) {\n  const promise = runloop.start();\n  const comp = compute.call(this, path, computed);\n\n  if (comp) {\n    const keys = splitKeypath(path);\n    if (keys.length === 1 && !comp.isReadonly) {\n      comp.set(this.viewmodel.value[keys[0]]);\n    }\n\n    const first = keys.reduce((a, c) => a && a.childByKey[c], this.viewmodel);\n    if (first) {\n      first.rebind(comp, first, false);\n      if (first.parent) delete first.parent.childByKey[first.key];\n      fireShuffleTasks();\n    }\n  }\n\n  runloop.end();\n\n  return promise;\n}\n","import hooks from 'src/events/Hook';\nimport runloop from 'src/global/runloop';\nimport { unrenderChild, updateAnchors } from 'shared/anchors';\n\nexport default function attachChild(child, options = {}) {\n  const children = this._children;\n  let idx;\n\n  if (child.parent && child.parent !== this)\n    throw new Error(\n      `Instance ${child._guid} is already attached to a different instance ${\n        child.parent._guid\n      }. Please detach it from the other instance using detachChild first.`\n    );\n  else if (child.parent)\n    throw new Error(`Instance ${child._guid} is already attached to this instance.`);\n\n  const meta = {\n    instance: child,\n    ractive: this,\n    name: options.name || child.constructor.name || 'Ractive',\n    target: options.target || false,\n    bubble,\n    findNextNode\n  };\n  meta.nameOption = options.name;\n\n  // child is managing itself\n  if (!meta.target) {\n    meta.up = this.fragment;\n    meta.external = true;\n  } else {\n    let list;\n    if (!(list = children.byName[meta.target])) {\n      list = [];\n      this.set(`@this.children.byName.${meta.target}`, list);\n    }\n    idx = options.prepend ? 0 : options.insertAt !== undefined ? options.insertAt : list.length;\n  }\n\n  child.parent = this;\n  child.root = this.root;\n  child.component = meta;\n  children.push(meta);\n\n  const promise = runloop.start();\n\n  const rm = child.viewmodel.getRactiveModel();\n  rm.joinKey('parent', { lastLink: false }).link(this.viewmodel.getRactiveModel());\n  rm.joinKey('root', { lastLink: false }).link(this.root.viewmodel.getRactiveModel());\n\n  hooks.attachchild.fire(child);\n\n  if (meta.target) {\n    unrenderChild(meta);\n    this.splice(`@this.children.byName.${meta.target}`, idx, 0, meta);\n    updateAnchors(this, meta.target);\n  } else {\n    if (!child.isolated) child.viewmodel.attached(this.fragment);\n  }\n\n  runloop.end();\n\n  promise.ractive = child;\n  return promise.then(() => child);\n}\n\nfunction bubble() {\n  runloop.addFragment(this.instance.fragment);\n}\n\nfunction findNextNode() {\n  if (this.anchor) return this.anchor.findNextNode();\n}\n","export function findAnchors(fragment, name = null) {\n  const res = [];\n\n  findAnchorsIn(fragment, name, res);\n\n  return res;\n}\n\nfunction findAnchorsIn(item, name, result) {\n  if (item.isAnchor) {\n    if (!name || item.name === name) {\n      result.push(item);\n    }\n  } else if (item.items) {\n    item.items.forEach(i => findAnchorsIn(i, name, result));\n  } else if (item.iterations) {\n    item.iterations.forEach(i => findAnchorsIn(i, name, result));\n  } else if (item.fragment && !item.component) {\n    findAnchorsIn(item.fragment, name, result);\n  }\n}\n\nexport function updateAnchors(instance, name = null) {\n  const anchors = findAnchors(instance.fragment, name);\n  const idxs = {};\n  const children = instance._children.byName;\n\n  anchors.forEach(a => {\n    const name = a.name;\n    if (!(name in idxs)) idxs[name] = 0;\n    const idx = idxs[name];\n    const child = (children[name] || [])[idx];\n\n    if (child && child.lastBound !== a) {\n      if (child.lastBound) child.lastBound.removeChild(child);\n      a.addChild(child);\n    }\n\n    idxs[name]++;\n  });\n}\n\nexport function unrenderChild(meta) {\n  if (meta.instance.fragment.rendered) {\n    meta.shouldDestroy = true;\n    meta.instance.unrender();\n  }\n  meta.instance.el = null;\n}\n","import fireEvent from './fireEvent';\nimport getRactiveContext from '../shared/getRactiveContext';\n\nexport class Hook {\n  constructor(event) {\n    this.event = event;\n    this.method = 'on' + event;\n  }\n\n  fire(ractive, arg) {\n    const context = getRactiveContext(ractive);\n    const method = this.method;\n\n    if (ractive[method]) {\n      arg ? ractive[method](context, arg) : ractive[method](context);\n    }\n\n    fireEvent(ractive, this.event, context, arg ? [arg, ractive] : [ractive]);\n  }\n}\n\nfunction getChildQueue(queue, ractive) {\n  return queue[ractive._guid] || (queue[ractive._guid] = []);\n}\n\nfunction fire(hookQueue, ractive) {\n  const childQueue = getChildQueue(hookQueue.queue, ractive);\n\n  hookQueue.hook.fire(ractive);\n\n  // queue is \"live\" because components can end up being\n  // added while hooks fire on parents that modify data values.\n  while (childQueue.length) {\n    fire(hookQueue, childQueue.shift());\n  }\n\n  delete hookQueue.queue[ractive._guid];\n}\n\nexport class HookQueue {\n  constructor(event) {\n    this.hook = new Hook(event);\n    this.inProcess = {};\n    this.queue = {};\n  }\n\n  begin(ractive) {\n    this.inProcess[ractive._guid] = true;\n  }\n\n  end(ractive) {\n    const parent = ractive.parent;\n\n    // If this is *isn't* a child of a component that's in process,\n    // it should call methods or fire at this point\n    if (!parent || !this.inProcess[parent._guid]) {\n      fire(this, ractive);\n    } else {\n      // elsewise, handoff to parent to fire when ready\n      getChildQueue(this.queue, parent).push(ractive);\n    }\n\n    delete this.inProcess[ractive._guid];\n  }\n}\n\nconst hooks = {};\n[\n  'construct',\n  'config',\n  'attachchild',\n  'detach',\n  'detachchild',\n  'insert',\n  'complete',\n  'reset',\n  'render',\n  'unrendering',\n  'unrender',\n  'teardown',\n  'destruct',\n  'update'\n].forEach(hook => {\n  hooks[hook] = new Hook(hook);\n});\nhooks.init = new HookQueue('init');\n\nexport default hooks;\n","import { enqueue, dequeue } from './eventStack';\n\nconst initStars = {};\nconst bubbleStars = {};\n\n// cartesian product of name parts and stars\n// adjusted appropriately for special cases\nfunction variants(name, initial) {\n  const map = initial ? initStars : bubbleStars;\n  if (map[name]) return map[name];\n\n  const parts = name.split('.');\n  const result = [];\n  let base = false;\n\n  // initial events the implicit namespace of 'this'\n  if (initial) {\n    parts.unshift('this');\n    base = true;\n  }\n\n  // use max - 1 bits as a bitmap to pick a part or a *\n  // need to skip the full star case if the namespace is synthetic\n  const max = Math.pow(2, parts.length) - (initial ? 1 : 0);\n  for (let i = 0; i < max; i++) {\n    const join = [];\n    for (let j = 0; j < parts.length; j++) {\n      join.push(1 & (i >> j) ? '*' : parts[j]);\n    }\n    result.unshift(join.join('.'));\n  }\n\n  if (base) {\n    // include non-this-namespaced versions\n    if (parts.length > 2) {\n      result.push.apply(result, variants(name, false));\n    } else {\n      result.push('*');\n      result.push(name);\n    }\n  }\n\n  map[name] = result;\n  return result;\n}\n\nexport default function fireEvent(ractive, eventName, context, args = []) {\n  if (!eventName) {\n    return;\n  }\n\n  context.name = eventName;\n  args.unshift(context);\n\n  const eventNames = ractive._nsSubs ? variants(eventName, true) : ['*', eventName];\n\n  return fireEventAs(ractive, eventNames, context, args, true);\n}\n\nfunction fireEventAs(ractive, eventNames, context, args, initialFire = false) {\n  let bubble = true;\n\n  if (initialFire || ractive._nsSubs) {\n    enqueue(ractive, context);\n\n    let i = eventNames.length;\n    while (i--) {\n      if (eventNames[i] in ractive._subs) {\n        bubble = notifySubscribers(ractive, ractive._subs[eventNames[i]], context, args) && bubble;\n      }\n    }\n\n    dequeue(ractive);\n  }\n\n  if (ractive.parent && bubble) {\n    if (initialFire && ractive.component) {\n      const fullName = ractive.component.name + '.' + eventNames[eventNames.length - 1];\n      eventNames = variants(fullName, false);\n\n      if (context && !context.component) {\n        context.component = ractive;\n      }\n    }\n\n    bubble = fireEventAs(ractive.parent, eventNames, context, args);\n  }\n\n  return bubble;\n}\n\nfunction notifySubscribers(ractive, subscribers, context, args) {\n  let originalEvent = null;\n  let stopEvent = false;\n\n  // subscribers can be modified inflight, e.g. \"once\" functionality\n  // so we need to copy to make sure everyone gets called\n  subscribers = subscribers.slice();\n\n  for (let i = 0, len = subscribers.length; i < len; i += 1) {\n    if (!subscribers[i].off && subscribers[i].handler.apply(ractive, args) === false) {\n      stopEvent = true;\n    }\n  }\n\n  if (context && stopEvent && (originalEvent = context.event)) {\n    originalEvent.preventDefault && originalEvent.preventDefault();\n    originalEvent.stopPropagation && originalEvent.stopPropagation();\n  }\n\n  return !stopEvent;\n}\n","export function enqueue(ractive, event) {\n  if (ractive.event) {\n    ractive._eventQueue.push(ractive.event);\n  }\n\n  ractive.event = event;\n}\n\nexport function dequeue(ractive) {\n  if (ractive._eventQueue.length) {\n    ractive.event = ractive._eventQueue.pop();\n  } else {\n    ractive.event = null;\n  }\n}\n","import runloop from 'src/global/runloop';\nimport easing from 'src/Ractive/static/easing';\nimport interpolate from 'shared/interpolate';\nimport { isEqual, isFunction, isObjectType } from 'utils/is';\nimport noop from 'utils/noop';\nimport { splitKeypath } from 'shared/keypaths';\nimport { defineProperty, keys as objectKeys } from 'utils/object';\n\nfunction immediate(value) {\n  const result = Promise.resolve(value);\n  defineProperty(result, 'stop', { value: noop });\n  return result;\n}\n\nconst linear = easing.linear;\n\nfunction getOptions(options, instance) {\n  options = options || {};\n\n  let easing;\n  if (options.easing) {\n    easing = isFunction(options.easing) ? options.easing : instance.easing[options.easing];\n  }\n\n  return {\n    easing: easing || linear,\n    duration: 'duration' in options ? options.duration : 400,\n    complete: options.complete || noop,\n    step: options.step || noop,\n    interpolator: options.interpolator\n  };\n}\n\nexport function animate(ractive, model, to, options) {\n  options = getOptions(options, ractive);\n  const from = model.get();\n\n  // don't bother animating values that stay the same\n  if (isEqual(from, to)) {\n    options.complete(options.to);\n    return immediate(to);\n  }\n\n  const interpolator = interpolate(from, to, ractive, options.interpolator);\n\n  // if we can't interpolate the value, set it immediately\n  if (!interpolator) {\n    runloop.start();\n    model.set(to);\n    runloop.end();\n\n    return immediate(to);\n  }\n\n  return model.animate(from, to, options, interpolator);\n}\n\nexport default function Ractive$animate(keypath, to, options) {\n  if (isObjectType(keypath)) {\n    const keys = objectKeys(keypath);\n\n    throw new Error(`ractive.animate(...) no longer supports objects. Instead of ractive.animate({\n  ${keys.map(key => `'${key}': ${keypath[key]}`).join('\\n  ')}\n}, {...}), do\n\n${keys.map(key => `ractive.animate('${key}', ${keypath[key]}, {...});`).join('\\n')}\n`);\n  }\n\n  return animate(this, this.viewmodel.joinAll(splitKeypath(keypath)), to, options);\n}\n","import add from './shared/add';\nimport { isNumber, isObjectType } from 'utils/is';\n\nexport default function Ractive$add(keypath, d, options) {\n  const num = isNumber(d) ? d : 1;\n  const opts = isObjectType(d) ? d : options;\n  return add(this, keypath, num, opts);\n}\n","import { isNumeric, isString } from 'utils/is';\nimport { build, set } from 'shared/set';\n\nconst errorMessage = 'Cannot add to a non-numeric value';\n\nexport default function add(ractive, keypath, d, options) {\n  if (!isString(keypath) || !isNumeric(d)) {\n    throw new Error('Bad arguments');\n  }\n\n  const sets = build(ractive, keypath, d, options && options.isolated);\n\n  return set(\n    sets.map(pair => {\n      const [model, add] = pair;\n      const value = model.get();\n      if (!isNumeric(add) || !isNumeric(value)) throw new Error(errorMessage);\n      return [model, value + add];\n    })\n  );\n}\n","import { isArray, isObject, isObjectType, isFunction, isString } from 'utils/is';\nimport { warnIfDebug } from 'utils/log';\nimport resolveReference from 'src/view/resolvers/resolveReference';\nimport runloop from '../global/runloop';\nimport { splitKeypath } from './keypaths';\nimport { FakeFragment } from './getRactiveContext';\nimport { hasOwn } from 'utils/object';\n\nexport let keep = false;\n\nexport function set(pairs, options) {\n  const k = keep;\n\n  const deep = options && options.deep;\n  const shuffle = options && options.shuffle;\n  const promise = runloop.start();\n  if (options && 'keep' in options) keep = options.keep;\n\n  let i = pairs.length;\n  while (i--) {\n    const model = pairs[i][0];\n    const value = pairs[i][1];\n    const keypath = pairs[i][2];\n\n    if (!model) {\n      runloop.end();\n      throw new Error(`Failed to set invalid keypath '${keypath}'`);\n    }\n\n    if (deep) deepSet(model, value);\n    else if (shuffle) {\n      let array = value;\n      const target = model.get();\n      // shuffle target array with itself\n      if (!array) array = target;\n\n      // if there's not an array there yet, go ahead and set\n      if (target === undefined) {\n        model.set(array);\n      } else {\n        if (!isArray(target) || !isArray(array)) {\n          runloop.end();\n          throw new Error('You cannot merge an array with a non-array');\n        }\n\n        const comparator = getComparator(shuffle);\n        model.merge(array, comparator);\n      }\n    } else model.set(value);\n  }\n\n  runloop.end();\n\n  keep = k;\n\n  return promise;\n}\n\nconst star = /\\*/;\nexport function gather(ractive, keypath, base, isolated) {\n  if (!base && (keypath[0] === '.' || keypath[1] === '^')) {\n    warnIfDebug(\n      `Attempted to set a relative keypath from a non-relative context. You can use a context object to set relative keypaths.`\n    );\n    return [];\n  }\n\n  const keys = splitKeypath(keypath);\n  const model = base || ractive.viewmodel;\n\n  if (star.test(keypath)) {\n    return model.findMatches(keys);\n  } else {\n    if (model === ractive.viewmodel) {\n      // allow implicit mappings\n      if (\n        ractive.component &&\n        !ractive.isolated &&\n        !model.has(keys[0]) &&\n        keypath[0] !== '@' &&\n        keypath[0] &&\n        !isolated\n      ) {\n        return [resolveReference(ractive.fragment || new FakeFragment(ractive), keypath)];\n      } else {\n        return [model.joinAll(keys)];\n      }\n    } else {\n      return [model.joinAll(keys)];\n    }\n  }\n}\n\nexport function build(ractive, keypath, value, isolated) {\n  const sets = [];\n\n  // set multiple keypaths in one go\n  if (isObject(keypath)) {\n    for (const k in keypath) {\n      if (hasOwn(keypath, k)) {\n        sets.push.apply(sets, gather(ractive, k, null, isolated).map(m => [m, keypath[k], k]));\n      }\n    }\n  } else {\n    // set a single keypath\n    sets.push.apply(sets, gather(ractive, keypath, null, isolated).map(m => [m, value, keypath]));\n  }\n\n  return sets;\n}\n\nconst deepOpts = { virtual: false };\nfunction deepSet(model, value) {\n  const dest = model.get(false, deepOpts);\n\n  // if dest doesn't exist, just set it\n  if (dest == null || !isObjectType(value)) return model.set(value);\n  if (!isObjectType(dest)) return model.set(value);\n\n  for (const k in value) {\n    if (hasOwn(value, k)) {\n      deepSet(model.joinKey(k), value[k]);\n    }\n  }\n}\n\nconst comparators = {};\nfunction getComparator(option) {\n  if (option === true) return null; // use existing arrays\n  if (isFunction(option)) return option;\n\n  if (isString(option)) {\n    return comparators[option] || (comparators[option] = thing => thing[option]);\n  }\n\n  throw new Error('If supplied, options.compare must be a string, function, or true'); // TODO link to docs\n}\n","import noop from 'utils/noop';\nimport { assign, create } from 'utils/object';\n\nexport const extern = {};\n\nexport default function getRactiveContext(ractive, ...assigns) {\n  const fragment =\n    ractive.fragment ||\n    ractive._fakeFragment ||\n    (ractive._fakeFragment = new FakeFragment(ractive));\n  return fragment.getContext.apply(fragment, assigns);\n}\n\nexport function getContext(...assigns) {\n  if (!this.ctx) this.ctx = new extern.Context(this);\n  assigns.unshift(create(this.ctx));\n  return assign.apply(null, assigns);\n}\n\nexport class FakeFragment {\n  constructor(ractive) {\n    this.ractive = ractive;\n  }\n\n  findContext() {\n    return this.ractive.viewmodel;\n  }\n}\nconst proto = FakeFragment.prototype;\nproto.getContext = getContext;\nproto.find = proto.findComponent = proto.findAll = proto.findAllComponents = noop;\n\nexport function findParentWithContext(fragment) {\n  let frag = fragment;\n  while (frag && !frag.context) frag = frag.parent;\n  if (!frag) return fragment && fragment.ractive.fragment;\n  else return frag;\n}\n","import { splitKeypath } from 'shared/keypaths';\nimport SharedModel, { GlobalModel } from 'src/model/specials/SharedModel';\nimport { warnIfDebug } from 'utils/log';\nimport { hasOwn } from 'utils/object';\nimport { isFunction } from 'utils/is';\n\nfunction findContext(fragment) {\n  let frag = fragment;\n  while (frag && !frag.context && !frag.aliases) frag = frag.parent;\n  return frag;\n}\n\nexport default function resolveReference(fragment, ref) {\n  const initialFragment = fragment;\n  // current context ref\n  if (ref === '.') return fragment.findContext();\n\n  // ancestor references\n  if (ref[0] === '~') return fragment.ractive.viewmodel.joinAll(splitKeypath(ref.slice(2)));\n\n  // scoped references\n  if (ref[0] === '.' || ref[0] === '^') {\n    let frag = fragment;\n    const parts = ref.split('/');\n    const explicitContext = parts[0] === '^^';\n\n    // find nearest context node\n    while (frag && !frag.context) {\n      frag = up(frag);\n    }\n    let context = frag && frag.context;\n\n    // walk up the context chain\n    while (frag && parts[0] === '^^') {\n      parts.shift();\n\n      // the current fragment should always be a context,\n      // and if it happens to be an iteration, jump above the each block\n      if (frag.isIteration) {\n        frag = frag.parent.parent;\n      } else {\n        // otherwise jump above the current fragment\n        frag = up(frag);\n      }\n\n      // walk to the next contexted fragment\n      while (frag && !frag.context) {\n        frag = up(frag);\n      }\n      context = frag && frag.context;\n    }\n\n    if (!context && explicitContext) {\n      throw new Error(\n        `Invalid context parent reference ('${ref}'). There is not context at that level.`\n      );\n    }\n\n    // walk up the context path\n    while (parts[0] === '.' || parts[0] === '..') {\n      const part = parts.shift();\n\n      if (part === '..') {\n        context = context.parent;\n      }\n    }\n\n    ref = parts.join('/');\n\n    // special case - `{{.foo}}` means the same as `{{./foo}}`\n    if (ref[0] === '.') ref = ref.slice(1);\n    return context.joinAll(splitKeypath(ref));\n  }\n\n  const keys = splitKeypath(ref);\n  if (!keys.length) return;\n  const base = keys.shift();\n\n  // special refs\n  if (base[0] === '@') {\n    // shorthand from outside the template\n    // @this referring to local ractive instance\n    if (base === '@this' || base === '@') {\n      return fragment.ractive.viewmodel.getRactiveModel().joinAll(keys);\n    } else if (base === '@index' || base === '@key') {\n      // @index or @key referring to the nearest repeating index or key\n      if (keys.length) badReference(base);\n      const repeater = findIter(fragment);\n      return repeater && repeater[`get${base[1] === 'i' ? 'Index' : 'Key'}`]();\n    } else if (base === '@last') {\n      const repeater = findIter(fragment);\n      return repeater && repeater.parent.getLast();\n    } else if (base === '@global') {\n      // @global referring to window or global\n      return GlobalModel.joinAll(keys);\n    } else if (base === '@shared') {\n      // @global referring to window or global\n      return SharedModel.joinAll(keys);\n    } else if (base === '@keypath' || base === '@rootpath') {\n      // @keypath or @rootpath, the current keypath string\n      const root = ref[1] === 'r' ? fragment.ractive.root : null;\n      let f = fragment;\n\n      while (\n        f &&\n        (!f.context || (f.isRoot && f.ractive.component && (root || !f.ractive.isolated)))\n      ) {\n        f = f.isRoot ? f.componentParent : f.parent;\n      }\n\n      return f.getKeypath(root);\n    } else if (base === '@context') {\n      return new ContextModel(fragment.getContext());\n    } else if (base === '@local') {\n      // @context-local data\n      return fragment.getContext()._data.joinAll(keys);\n    } else if (base === '@style') {\n      // @style shared model\n      return fragment.ractive.constructor._cssModel.joinAll(keys);\n    } else if (base === '@helpers') {\n      // @helpers instance model\n      return fragment.ractive.viewmodel.getHelpers().joinAll(keys);\n    } else {\n      // nope\n      throw new Error(`Invalid special reference '${base}'`);\n    }\n  }\n\n  // helpers\n  if (base && !keys.length) {\n    const helpers = fragment.ractive.viewmodel.getHelpers();\n    if (helpers.has(base)) return helpers.joinKey(base);\n  }\n\n  let context = findContext(fragment);\n\n  // check immediate context for a match\n  if (context) {\n    if (context.context) {\n      context = context.context;\n      if (context.has(base)) return context.joinKey(base).joinAll(keys);\n    } else {\n      // alias block, so get next full context for later\n      context = fragment.findContext();\n    }\n  } else {\n    context = fragment.findContext();\n  }\n\n  // walk up the fragment hierarchy looking for a matching ref, alias, or key in a context\n  let createMapping = false;\n  const shouldWarn = fragment.ractive.warnAboutAmbiguity;\n  let crossed = 0;\n  let model;\n\n  while (fragment) {\n    // repeated fragments\n    if (fragment.isIteration) {\n      if (base === fragment.parent.keyRef) {\n        model = fragment.getKey();\n      } else if (base === fragment.parent.indexRef) {\n        model = fragment.getIndex();\n      }\n\n      if (model && keys.length) badReference(base);\n    }\n\n    // alias node or iteration\n    if (!model && fragment.aliases && hasOwn(fragment.aliases, base)) {\n      model = fragment.aliases[base];\n    }\n\n    // check fragment context to see if it has the key we need\n    if (!model && fragment.context && fragment.context.has(base)) {\n      model = fragment.context.joinKey(base);\n\n      // this is an implicit mapping\n      if (createMapping) {\n        if (shouldWarn)\n          warnIfDebug(\n            `'${ref}' resolved but is ambiguous and will create a mapping to a parent component.`\n          );\n      } else if (shouldWarn && crossed) warnIfDebug(`'${ref}' resolved but is ambiguous.`);\n    }\n\n    if (model) {\n      if (createMapping) {\n        model = initialFragment.ractive.viewmodel.createLink(base, model, base, { implicit: true });\n      }\n\n      if (keys.length > 0 && isFunction(model.joinAll)) {\n        model = model.joinAll(keys);\n      }\n\n      return model;\n    }\n\n    // don't consider alias blocks when checking for ambiguity\n    if (fragment.context && !fragment.aliases) crossed = 1;\n\n    if (\n      (fragment.componentParent || (!fragment.parent && fragment.ractive.component)) &&\n      !fragment.ractive.isolated\n    ) {\n      // ascend through component boundary\n      fragment = fragment.componentParent || fragment.ractive.component.up;\n      createMapping = true;\n    } else {\n      fragment = fragment.parent;\n    }\n  }\n\n  // if enabled, check the instance for a match\n  const instance = initialFragment.ractive;\n  if (instance.resolveInstanceMembers && base !== 'data' && base in instance) {\n    return instance.viewmodel\n      .getRactiveModel()\n      .joinKey(base)\n      .joinAll(keys);\n  }\n\n  if (shouldWarn) {\n    warnIfDebug(`'${ref}' is ambiguous and did not resolve.`);\n  }\n\n  // didn't find anything, so go ahead and create the key on the local model\n  return context.joinKey(base).joinAll(keys);\n}\n\nfunction up(fragment) {\n  return fragment && ((!fragment.ractive.isolated && fragment.componentParent) || fragment.parent);\n}\n\nfunction findIter(start) {\n  let fragment = start;\n  let next;\n  while (!fragment.isIteration && (next = up(fragment))) {\n    fragment = next;\n  }\n\n  return fragment.isIteration && fragment;\n}\n\nfunction badReference(key) {\n  throw new Error(`An index or key reference (${key}) cannot have child properties`);\n}\n\nclass ContextModel {\n  constructor(context) {\n    this.context = context;\n  }\n\n  get() {\n    return this.context;\n  }\n\n  getKeypath() {\n    return '@context';\n  }\n}\n","/* global global */\nimport Model from '../Model';\n\nexport const data = {};\n\nexport class SharedModel extends Model {\n  constructor(value, name, ractive) {\n    super(null, `@${name}`);\n    this.key = `@${name}`;\n    this.value = value;\n    this.isRoot = true;\n    this.root = this;\n    this.adaptors = [];\n    this.ractive = ractive;\n  }\n\n  getKeypath() {\n    return this.key;\n  }\n\n  retrieve() {\n    return this.value;\n  }\n}\n\nexport default new SharedModel(data, 'shared');\n\nexport const GlobalModel = new SharedModel(\n  typeof global !== 'undefined' ? global : window,\n  'global'\n);\n","import ModelBase, { maybeBind, shuffle } from './ModelBase';\nimport LinkModel from './LinkModel'; // eslint-disable-line no-unused-vars\nimport getComputationSignature from 'src/Ractive/helpers/getComputationSignature';\nimport { capture } from 'src/global/capture';\nimport { isArray, isEqual, isNumeric, isObjectLike } from 'utils/is';\nimport { handleChange, mark, markForce, marked, teardown } from 'shared/methodCallers';\nimport Ticker from 'shared/Ticker';\nimport getPrefixer from './helpers/getPrefixer';\nimport { unescapeKey } from 'shared/keypaths';\nimport { warnIfDebug } from 'utils/log';\nimport { hasOwn, keys } from 'utils/object';\nimport { buildNewIndices } from 'utils/array';\n\nexport const shared = {};\n\nexport default class Model extends ModelBase {\n  constructor(parent, key) {\n    super(parent);\n\n    this.ticker = null;\n\n    if (parent) {\n      this.key = unescapeKey(key);\n      this.isReadonly = parent.isReadonly;\n\n      if (parent.value) {\n        this.value = parent.value[this.key];\n        if (isArray(this.value)) this.length = this.value.length;\n        this.adapt();\n      }\n    }\n  }\n\n  adapt() {\n    const adaptors = this.root.adaptors;\n    const len = adaptors.length;\n\n    this.rewrap = false;\n\n    // Exit early if no adaptors\n    if (len === 0) return;\n\n    const value = this.wrapper\n      ? 'newWrapperValue' in this\n        ? this.newWrapperValue\n        : this.wrapperValue\n      : this.value;\n\n    // TODO remove this legacy nonsense\n    const ractive = this.root.ractive;\n    const keypath = this.getKeypath();\n\n    // tear previous adaptor down if present\n    if (this.wrapper) {\n      const shouldTeardown =\n        this.wrapperValue === value\n          ? false\n          : !this.wrapper.reset || this.wrapper.reset(value) === false;\n\n      if (shouldTeardown) {\n        this.wrapper.teardown();\n        delete this.wrapper;\n        delete this.wrapperValue;\n\n        // don't branch for undefined values\n        if (this.value !== undefined) {\n          const parentValue = this.parent.value || this.parent.createBranch(this.key);\n          if (parentValue[this.key] !== value) parentValue[this.key] = value;\n          this.value = value;\n        }\n      } else {\n        delete this.newWrapperValue;\n        this.value = this.wrapper.get();\n        return;\n      }\n    }\n\n    let i;\n\n    for (i = 0; i < len; i += 1) {\n      const adaptor = adaptors[i];\n      if (adaptor.filter(value, keypath, ractive)) {\n        this.wrapper = adaptor.wrap(ractive, value, keypath, getPrefixer(keypath));\n        this.wrapperValue = value;\n        this.wrapper.__model = this; // massive temporary hack to enable array adaptor\n\n        this.value = this.wrapper.get();\n\n        break;\n      }\n    }\n  }\n\n  animate(from, to, options, interpolator) {\n    if (this.ticker) this.ticker.stop();\n\n    let fulfilPromise;\n    const promise = new Promise(fulfil => (fulfilPromise = fulfil));\n\n    this.ticker = new Ticker({\n      duration: options.duration,\n      easing: options.easing,\n      step: t => {\n        const value = interpolator(t);\n        this.applyValue(value);\n        if (options.step) options.step(t, value);\n      },\n      complete: () => {\n        this.applyValue(to);\n        if (options.complete) options.complete(to);\n\n        this.ticker = null;\n        fulfilPromise(to);\n      }\n    });\n\n    promise.stop = this.ticker.stop;\n    return promise;\n  }\n\n  applyValue(value, notify = true) {\n    if (isEqual(value, this.value)) return;\n    if (this.boundValue) this.boundValue = null;\n\n    if (this.parent.wrapper && this.parent.wrapper.set) {\n      this.parent.wrapper.set(this.key, value);\n      this.parent.value = this.parent.wrapper.get();\n\n      this.value = this.parent.value[this.key];\n      if (this.wrapper) this.newWrapperValue = this.value;\n      this.adapt();\n    } else if (this.wrapper) {\n      this.newWrapperValue = value;\n      this.adapt();\n    } else {\n      const parentValue = this.parent.value || this.parent.createBranch(this.key);\n      if (isObjectLike(parentValue)) {\n        parentValue[this.key] = value;\n      } else {\n        warnIfDebug(`Attempted to set a property of a non-object '${this.getKeypath()}'`);\n        return;\n      }\n\n      this.value = value;\n      this.adapt();\n    }\n\n    // keep track of array stuff\n    if (isArray(value)) {\n      this.length = value.length;\n      this.isArray = true;\n    } else {\n      this.isArray = false;\n    }\n\n    // notify dependants\n    this.links.forEach(handleChange);\n    this.children.forEach(mark);\n    this.deps.forEach(handleChange);\n\n    if (notify) this.notifyUpstream();\n\n    if (this.parent.isArray) {\n      if (this.key === 'length') this.parent.length = value;\n      else this.parent.joinKey('length').mark();\n    }\n  }\n\n  compute(key, computed) {\n    const registry = this.computed || (this.computed = {});\n\n    if (registry[key]) {\n      registry[key].signature = getComputationSignature(this.root.ractive, key, computed);\n      registry[key].mark();\n    } else {\n      registry[key] = new shared.Computation(\n        this,\n        getComputationSignature(this.root.ractive, key, computed),\n        key\n      );\n    }\n\n    return registry[key];\n  }\n\n  createBranch(key) {\n    const branch = isNumeric(key) ? [] : {};\n    this.applyValue(branch, false);\n\n    return branch;\n  }\n\n  get(shouldCapture, opts) {\n    if (this._link) return this._link.get(shouldCapture, opts);\n    if (shouldCapture) capture(this);\n    // if capturing, this value needs to be unwrapped because it's for external use\n    if (opts && opts.virtual) return this.getVirtual(false);\n    return maybeBind(\n      this,\n      (opts && 'unwrap' in opts ? opts.unwrap !== false : shouldCapture) && this.wrapper\n        ? this.wrapperValue\n        : this.value,\n      !opts || opts.shouldBind !== false\n    );\n  }\n\n  joinKey(key, opts) {\n    if (this._link) {\n      if (opts && opts.lastLink !== false && (key === undefined || key === '')) return this;\n      return this._link.joinKey(key);\n    }\n\n    if (key === undefined || key === '') return this;\n\n    let child;\n    if (hasOwn(this.childByKey, key)) child = this.childByKey[key];\n    else child = this.computed && this.computed[key];\n\n    if (!child) {\n      let computed;\n      if (this.isRoot && this.ractive && (computed = this.ractive.computed[key])) {\n        child = this.compute(key, computed);\n      } else if (!this.isRoot && this.root.ractive) {\n        const registry = this.root.ractive.computed;\n        for (const k in registry) {\n          computed = registry[k];\n          if (computed.pattern && computed.pattern.test(this.getKeypath() + '.' + key)) {\n            child = this.compute(key, computed);\n          }\n        }\n      }\n    }\n\n    if (!child) {\n      child = new Model(this, key);\n      this.children.push(child);\n      this.childByKey[key] = child;\n    }\n\n    if (child._link && (!opts || opts.lastLink !== false)) return child._link;\n\n    return child;\n  }\n\n  mark(force) {\n    if (this._link) return this._link.mark(force);\n\n    const old = this.value;\n    const value = this.retrieve();\n\n    if (force || !isEqual(value, old)) {\n      this.value = value;\n      if (this.boundValue) this.boundValue = null;\n\n      // make sure the wrapper stays in sync\n      if (old !== value || this.rewrap) {\n        if (this.wrapper) this.newWrapperValue = value;\n        this.adapt();\n      }\n\n      // keep track of array stuff\n      if (isArray(value)) {\n        this.length = value.length;\n        this.isArray = true;\n      } else {\n        this.isArray = false;\n      }\n\n      this.children.forEach(force ? markForce : mark);\n      this.links.forEach(marked);\n\n      this.deps.forEach(handleChange);\n    }\n  }\n\n  merge(array, comparator) {\n    const newIndices = buildNewIndices(\n      this.value === array ? recreateArray(this) : this.value,\n      array,\n      comparator\n    );\n    this.parent.value[this.key] = array;\n    this.shuffle(newIndices, true);\n  }\n\n  retrieve() {\n    return this.parent.value ? this.parent.value[this.key] : undefined;\n  }\n\n  set(value) {\n    if (this.ticker) this.ticker.stop();\n    this.applyValue(value);\n  }\n\n  shuffle(newIndices, unsafe) {\n    shuffle(this, newIndices, false, unsafe);\n  }\n\n  source() {\n    return this;\n  }\n\n  teardown() {\n    if (this._link) {\n      this._link.teardown();\n      this._link = null;\n    }\n    this.children.forEach(teardown);\n    if (this.wrapper) this.wrapper.teardown();\n    if (this.computed) keys(this.computed).forEach(k => this.computed[k].teardown());\n  }\n}\n\nfunction recreateArray(model) {\n  const array = [];\n\n  for (let i = 0; i < model.length; i++) {\n    array[i] = (model.childByKey[i] || {}).value;\n  }\n\n  return array;\n}\n","import { hasOwn } from 'utils/object';\nimport { isString, isObjectType } from 'utils/is';\n\nconst prefixers = {};\n\n// TODO this is legacy. sooner we can replace the old adaptor API the better\n/* istanbul ignore next */\nfunction prefixKeypath(obj, prefix) {\n  const prefixed = {};\n\n  if (!prefix) {\n    return obj;\n  }\n\n  prefix += '.';\n\n  for (const key in obj) {\n    if (hasOwn(obj, key)) {\n      prefixed[prefix + key] = obj[key];\n    }\n  }\n\n  return prefixed;\n}\n\nexport default function getPrefixer(rootKeypath) {\n  let rootDot;\n\n  if (!prefixers[rootKeypath]) {\n    rootDot = rootKeypath ? rootKeypath + '.' : '';\n\n    /* istanbul ignore next */\n    prefixers[rootKeypath] = function(relativeKeypath, value) {\n      let obj;\n\n      if (isString(relativeKeypath)) {\n        obj = {};\n        obj[rootDot + relativeKeypath] = value;\n        return obj;\n      }\n\n      if (isObjectType(relativeKeypath)) {\n        // 'relativeKeypath' is in fact a hash, not a keypath\n        return rootDot ? prefixKeypath(relativeKeypath, rootKeypath) : relativeKeypath;\n      }\n    };\n  }\n\n  return prefixers[rootKeypath];\n}\n","import runloop from 'src/global/runloop';\n\n// TODO what happens if a transition is aborted?\n\nconst tickers = [];\nlet running = false;\n\nfunction tick() {\n  runloop.start();\n\n  const now = performance.now();\n\n  let i;\n  let ticker;\n\n  for (i = 0; i < tickers.length; i += 1) {\n    ticker = tickers[i];\n\n    if (!ticker.tick(now)) {\n      // ticker is complete, remove it from the stack, and decrement i so we don't miss one\n      tickers.splice(i--, 1);\n    }\n  }\n\n  runloop.end();\n\n  if (tickers.length) {\n    requestAnimationFrame(tick);\n  } else {\n    running = false;\n  }\n}\n\nexport default class Ticker {\n  constructor(options) {\n    this.duration = options.duration;\n    this.step = options.step;\n    this.complete = options.complete;\n    this.easing = options.easing;\n\n    this.start = performance.now();\n    this.end = this.start + this.duration;\n\n    this.running = true;\n\n    tickers.push(this);\n    if (!running) requestAnimationFrame(tick);\n  }\n\n  tick(now) {\n    if (!this.running) return false;\n\n    if (now > this.end) {\n      if (this.step) this.step(1);\n      if (this.complete) this.complete(1);\n\n      return false;\n    }\n\n    const elapsed = now - this.start;\n    const eased = this.easing(elapsed / this.duration);\n\n    if (this.step) this.step(eased);\n\n    return true;\n  }\n\n  stop() {\n    if (this.abort) this.abort();\n    this.running = false;\n  }\n}\n","import { addToArray } from 'utils/array';\nimport TransitionManager from './TransitionManager';\n\nlet batch;\n\nconst runloop = {\n  active() {\n    return !!batch;\n  },\n\n  start() {\n    let fulfilPromise;\n    const promise = new Promise(f => (fulfilPromise = f));\n\n    batch = {\n      previousBatch: batch,\n      transitionManager: new TransitionManager(fulfilPromise, batch && batch.transitionManager),\n      fragments: [],\n      tasks: [],\n      immediateObservers: [],\n      deferredObservers: [],\n      promise\n    };\n\n    return promise;\n  },\n\n  end() {\n    flushChanges();\n\n    if (!batch.previousBatch) batch.transitionManager.start();\n    else batch.transitionManager.checkStart();\n\n    batch = batch.previousBatch;\n  },\n\n  addFragment(fragment) {\n    addToArray(batch.fragments, fragment);\n  },\n\n  // TODO: come up with a better way to handle fragments that trigger their own update\n  addFragmentToRoot(fragment) {\n    if (!batch) return;\n\n    let b = batch;\n    while (b.previousBatch) {\n      b = b.previousBatch;\n    }\n\n    addToArray(b.fragments, fragment);\n  },\n\n  addObserver(observer, defer) {\n    if (!batch) {\n      observer.dispatch();\n    } else {\n      addToArray(defer ? batch.deferredObservers : batch.immediateObservers, observer);\n    }\n  },\n\n  registerTransition(transition) {\n    transition._manager = batch.transitionManager;\n    batch.transitionManager.add(transition);\n  },\n\n  // synchronise node detachments with transition ends\n  detachWhenReady(thing) {\n    batch.transitionManager.detachQueue.push(thing);\n  },\n\n  scheduleTask(task, postRender) {\n    let _batch;\n\n    if (!batch) {\n      task();\n    } else {\n      _batch = batch;\n      while (postRender && _batch.previousBatch) {\n        // this can't happen until the DOM has been fully updated\n        // otherwise in some situations (with components inside elements)\n        // transitions and decorators will initialise prematurely\n        _batch = _batch.previousBatch;\n      }\n\n      _batch.tasks.push(task);\n    }\n  },\n\n  promise() {\n    if (!batch) return Promise.resolve();\n\n    let target = batch;\n    while (target.previousBatch) {\n      target = target.previousBatch;\n    }\n\n    return target.promise || Promise.resolve();\n  }\n};\n\nexport default runloop;\n\nfunction dispatch(observer) {\n  observer.dispatch();\n}\n\nfunction flushChanges() {\n  let which = batch.immediateObservers;\n  batch.immediateObservers = [];\n  which.forEach(dispatch);\n\n  // Now that changes have been fully propagated, we can update the DOM\n  // and complete other tasks\n  let i = batch.fragments.length;\n  let fragment;\n\n  which = batch.fragments;\n  batch.fragments = [];\n\n  while (i--) {\n    fragment = which[i];\n    fragment.update();\n  }\n\n  batch.transitionManager.ready();\n\n  which = batch.deferredObservers;\n  batch.deferredObservers = [];\n  which.forEach(dispatch);\n\n  const tasks = batch.tasks;\n  batch.tasks = [];\n\n  for (i = 0; i < tasks.length; i += 1) {\n    tasks[i]();\n  }\n\n  // If updating the view caused some model blowback - e.g. a triple\n  // containing <option> elements caused the binding on the <select>\n  // to update - then we start over\n  if (\n    batch.fragments.length ||\n    batch.immediateObservers.length ||\n    batch.deferredObservers.length ||\n    batch.tasks.length\n  )\n    return flushChanges();\n}\n","import { removeFromArray } from 'utils/array';\nimport { isFunction } from 'utils/is';\n\nlet id = 0;\n\nexport default class TransitionManager {\n  constructor(callback, parent) {\n    this.callback = callback;\n    this.parent = parent;\n\n    this.intros = [];\n    this.outros = [];\n\n    this.children = [];\n    this.totalChildren = this.outroChildren = 0;\n\n    this.detachQueue = [];\n    this.outrosComplete = false;\n\n    this.id = id++;\n\n    if (parent) {\n      parent.addChild(this);\n    }\n  }\n\n  add(transition) {\n    const list = transition.isIntro ? this.intros : this.outros;\n    transition.starting = true;\n    list.push(transition);\n  }\n\n  addChild(child) {\n    this.children.push(child);\n\n    this.totalChildren += 1;\n    this.outroChildren += 1;\n  }\n\n  checkStart() {\n    if (this.parent && this.parent.started) this.start();\n  }\n\n  decrementOutros() {\n    this.outroChildren -= 1;\n    check(this);\n  }\n\n  decrementTotal() {\n    this.totalChildren -= 1;\n    check(this);\n  }\n\n  detachNodes() {\n    let len = this.detachQueue.length;\n    for (let i = 0; i < len; i++) this.detachQueue[i].detach();\n    len = this.children.length;\n    for (let i = 0; i < len; i++) this.children[i].detachNodes();\n    this.detachQueue = [];\n  }\n\n  ready() {\n    if (this.detachQueue.length) detachImmediate(this);\n  }\n\n  remove(transition) {\n    const list = transition.isIntro ? this.intros : this.outros;\n    removeFromArray(list, transition);\n    check(this);\n  }\n\n  start() {\n    this.started = true;\n    this.children.forEach(c => c.start());\n    this.intros.concat(this.outros).forEach(t => t.start());\n    check(this);\n  }\n}\n\nfunction check(tm) {\n  if (!tm.started || tm.outros.length || tm.outroChildren) return;\n\n  // If all outros are complete, and we haven't already done this,\n  // we notify the parent if there is one, otherwise\n  // start detaching nodes\n  if (!tm.outrosComplete) {\n    tm.outrosComplete = true;\n\n    if (tm.parent) tm.parent.decrementOutros(tm);\n\n    if (!tm.parent || tm.parent.outrosComplete) {\n      tm.detachNodes();\n    }\n  }\n\n  // Once everything is done, we can notify parent transition\n  // manager and call the callback\n  if (!tm.intros.length && !tm.totalChildren) {\n    if (isFunction(tm.callback)) {\n      tm.callback();\n    }\n\n    if (tm.parent && !tm.notifiedTotal) {\n      tm.notifiedTotal = true;\n      tm.parent.decrementTotal();\n    }\n  }\n}\n\n// check through the detach queue to see if a node is up or downstream from a\n// transition and if not, go ahead and detach it\nfunction detachImmediate(manager) {\n  const queue = manager.detachQueue;\n  const outros = collectAllOutros(manager);\n\n  if (!outros.length) {\n    manager.detachNodes();\n  } else {\n    let i = queue.length;\n    let j = 0;\n    let node, trans;\n    const nqueue = (manager.detachQueue = []);\n\n    start: while (i--) {\n      node = queue[i].node;\n      j = outros.length;\n      while (j--) {\n        trans = outros[j].element.node;\n        // check to see if the node is, contains, or is contained by the transitioning node\n        if (trans === node || trans.contains(node) || node.contains(trans)) {\n          nqueue.push(queue[i]);\n          continue start;\n        }\n      }\n\n      // no match, we can drop it\n      queue[i].detach();\n    }\n  }\n}\n\nfunction collectAllOutros(manager, _list) {\n  let list = _list;\n\n  // if there's no list, we're starting at the root to build one\n  if (!list) {\n    list = [];\n    let parent = manager;\n    while (parent.parent) parent = parent.parent;\n    return collectAllOutros(parent, list);\n  } else {\n    // grab all outros from child managers\n    let i = manager.children.length;\n    while (i--) {\n      list = collectAllOutros(manager.children[i], list);\n    }\n\n    // grab any from this manager if there are any\n    if (manager.outros.length) list = list.concat(manager.outros);\n\n    return list;\n  }\n}\n","import { fatal } from 'utils/log';\nimport bind from 'utils/bind';\nimport { createFunctionFromString } from '../config/runtime-parser';\nimport { isFunction, isString, isObjectType } from 'utils/is';\n\nexport default function getComputationSignature(ractive, key, signature) {\n  let getter;\n  let setter;\n\n  // useful for debugging\n  let getterString;\n  let getterUseStack;\n  let setterString;\n\n  if (isFunction(signature)) {\n    getter = bind(signature, ractive);\n    getterString = signature.toString();\n    getterUseStack = true;\n  }\n\n  if (isString(signature)) {\n    getter = createFunctionFromString(signature, ractive);\n    getterString = signature;\n  }\n\n  if (isObjectType(signature)) {\n    if (isString(signature.get)) {\n      getter = createFunctionFromString(signature.get, ractive);\n      getterString = signature.get;\n    } else if (isFunction(signature.get)) {\n      getter = bind(signature.get, ractive);\n      getterString = signature.get.toString();\n      getterUseStack = true;\n    } else {\n      fatal('`%s` computation must have a `get()` method', key);\n    }\n\n    if (isFunction(signature.set)) {\n      setter = bind(signature.set, ractive);\n      setterString = signature.set.toString();\n    }\n  }\n\n  return {\n    getter,\n    setter,\n    getterString,\n    setterString,\n    getterUseStack\n  };\n}\n","import { fromExpression } from 'parse/utils/createFunction';\nimport { doc } from 'config/environment';\nimport { fatal } from 'utils/log';\nimport { addFunctions } from 'shared/getFunction';\nimport parse from 'parse/_parse';\nimport { isString } from 'utils/is';\n\nconst parseOptions = [\n  'delimiters',\n  'tripleDelimiters',\n  'staticDelimiters',\n  'staticTripleDelimiters',\n  'csp',\n  'interpolate',\n  'preserveWhitespace',\n  'sanitize',\n  'stripComments',\n  'contextLines',\n  'allowExpressions',\n  'attributes'\n];\n\nconst TEMPLATE_INSTRUCTIONS = `Either preparse or use a ractive runtime source that includes the parser. `;\n\nconst COMPUTATION_INSTRUCTIONS = `Either include a version of Ractive that can parse or convert your computation strings to functions.`;\n\nfunction throwNoParse(method, error, instructions) {\n  if (!method) {\n    fatal(`Missing Ractive.parse - cannot parse ${error}. ${instructions}`);\n  }\n}\n\nexport function createFunction(body, length) {\n  throwNoParse(fromExpression, 'new expression function', TEMPLATE_INSTRUCTIONS);\n  return fromExpression(body, length);\n}\n\nexport function createFunctionFromString(str, bindTo) {\n  throwNoParse(parse, 'compution string \"${str}\"', COMPUTATION_INSTRUCTIONS);\n  const tpl = parse(str, { expression: true });\n  return function() {\n    return tpl.e.apply(bindTo, tpl.r.map(r => bindTo.get(r)));\n  };\n}\n\nconst parser = {\n  fromId(id, options) {\n    if (!doc) {\n      if (options && options.noThrow) {\n        return;\n      }\n      throw new Error(`Cannot retrieve template #${id} as Ractive is not running in a browser.`);\n    }\n\n    if (id) id = id.replace(/^#/, '');\n\n    let template;\n\n    if (!(template = doc.getElementById(id))) {\n      if (options && options.noThrow) {\n        return;\n      }\n      throw new Error(`Could not find template element with id #${id}`);\n    }\n\n    if (template.tagName.toUpperCase() !== 'SCRIPT') {\n      if (options && options.noThrow) {\n        return;\n      }\n      throw new Error(`Template element with id #${id}, must be a <script> element`);\n    }\n\n    return 'textContent' in template ? template.textContent : template.innerHTML;\n  },\n\n  isParsed(template) {\n    return !isString(template);\n  },\n\n  getParseOptions(ractive) {\n    // Could be Ractive or a Component\n    if (ractive.defaults) {\n      ractive = ractive.defaults;\n    }\n\n    return parseOptions.reduce((val, key) => {\n      val[key] = ractive[key];\n      return val;\n    }, {});\n  },\n\n  parse(template, options) {\n    throwNoParse(parse, 'template', TEMPLATE_INSTRUCTIONS);\n    const parsed = parse(template, options);\n    addFunctions(parsed);\n    return parsed;\n  },\n\n  parseFor(template, ractive) {\n    return this.parse(template, this.getParseOptions(ractive));\n  }\n};\n\nexport default parser;\n","import { TEMPLATE_VERSION } from 'config/template';\nimport Parser from './Parser';\nimport readMustache from './converters/readMustache';\nimport readTriple from './converters/mustache/readTriple';\nimport readUnescaped from './converters/mustache/readUnescaped';\nimport readPartial from './converters/mustache/readPartial';\nimport readMustacheComment from './converters/mustache/readMustacheComment';\nimport readInterpolator from './converters/mustache/readInterpolator';\nimport readSection from './converters/mustache/readSection';\nimport readHtmlComment from './converters/readHtmlComment';\nimport readElement from './converters/readElement';\nimport readText from './converters/readText';\nimport readPartialDefinitionSection from './converters/readPartialDefinitionSection';\nimport readTemplate from './converters/readTemplate';\nimport readExpression from './converters/readExpression';\nimport { fromExpression } from './utils/createFunction';\nimport cleanup from './utils/cleanup';\nimport insertExpressions from './utils/insertExpressions';\nimport flattenExpression from './utils/flattenExpression';\nimport shared from '../Ractive/shared';\nimport { assign, keys } from 'utils/object';\nimport { isObjectType } from 'utils/is';\n\n// See https://github.com/ractivejs/template-spec for information\n// about the Ractive template specification\n\nconst STANDARD_READERS = [\n  readPartial,\n  readUnescaped,\n  readSection,\n  readInterpolator,\n  readMustacheComment\n];\nconst TRIPLE_READERS = [readTriple];\n\nexport const READERS = [readMustache, readHtmlComment, readElement, readText];\nexport const PARTIAL_READERS = [readPartialDefinitionSection];\n\nconst preserveWhitespaceElements = { pre: 1, script: 1, style: 1, textarea: 1 };\n\nconst defaultInterpolate = { textarea: true, script: true, style: true, template: true };\n\nconst StandardParser = Parser.extend({\n  init(str, options) {\n    const tripleDelimiters = options.tripleDelimiters || shared.defaults.tripleDelimiters;\n    const staticDelimiters = options.staticDelimiters || shared.defaults.staticDelimiters;\n    const staticTripleDelimiters =\n      options.staticTripleDelimiters || shared.defaults.staticTripleDelimiters;\n\n    this.standardDelimiters = options.delimiters || shared.defaults.delimiters;\n\n    this.tags = [\n      {\n        isStatic: false,\n        isTriple: false,\n        open: this.standardDelimiters[0],\n        close: this.standardDelimiters[1],\n        readers: STANDARD_READERS\n      },\n      {\n        isStatic: false,\n        isTriple: true,\n        open: tripleDelimiters[0],\n        close: tripleDelimiters[1],\n        readers: TRIPLE_READERS\n      },\n      {\n        isStatic: true,\n        isTriple: false,\n        open: staticDelimiters[0],\n        close: staticDelimiters[1],\n        readers: STANDARD_READERS\n      },\n      {\n        isStatic: true,\n        isTriple: true,\n        open: staticTripleDelimiters[0],\n        close: staticTripleDelimiters[1],\n        readers: TRIPLE_READERS\n      }\n    ];\n\n    this.contextLines = options.contextLines || shared.defaults.contextLines;\n\n    this.sortMustacheTags();\n\n    this.sectionDepth = 0;\n    this.elementStack = [];\n\n    this.interpolate = assign(\n      {},\n      defaultInterpolate,\n      shared.defaults.interpolate,\n      options.interpolate\n    );\n\n    if (options.sanitize === true) {\n      options.sanitize = {\n        // blacklist from https://code.google.com/p/google-caja/source/browse/trunk/src/com/google/caja/lang/html/html4-elements-whitelist.json\n        elements: 'applet base basefont body frame frameset head html isindex link meta noframes noscript object param script style title'.split(\n          ' '\n        ),\n        eventAttributes: true\n      };\n    }\n\n    this.stripComments = options.stripComments !== false;\n    this.preserveWhitespace = isObjectType(options.preserveWhitespace)\n      ? false\n      : options.preserveWhitespace;\n    this.sanitizeElements = options.sanitize && options.sanitize.elements;\n    this.sanitizeEventAttributes = options.sanitize && options.sanitize.eventAttributes;\n    this.includeLinePositions = options.includeLinePositions;\n    this.textOnlyMode = options.textOnlyMode;\n    this.csp = options.csp;\n    this.allowExpressions = options.allowExpressions;\n\n    if (options.expression) this.converters = [readExpression];\n\n    if (options.attributes) this.inTag = true;\n\n    // special whitespace handling requested for certain elements\n    this.whiteSpaceElements = assign({}, options.preserveWhitespace, preserveWhitespaceElements);\n  },\n\n  postProcess(result, options) {\n    if (options.expression) {\n      const expr = flattenExpression(result[0]);\n      expr.e = fromExpression(expr.s, expr.r.length);\n      return expr;\n    } else {\n      // special case - empty string\n      if (!result.length) {\n        return { t: [], v: TEMPLATE_VERSION };\n      }\n\n      if (this.sectionDepth > 0) {\n        this.error('A section was left open');\n      }\n\n      cleanup(\n        result[0].t,\n        this.stripComments,\n        this.preserveWhitespace,\n        !this.preserveWhitespace,\n        !this.preserveWhitespace,\n        this.whiteSpaceElements\n      );\n\n      if (this.csp !== false) {\n        const expr = {};\n        insertExpressions(result[0].t, expr);\n        if (keys(expr).length) result[0].e = expr;\n      }\n\n      return result[0];\n    }\n  },\n\n  converters: [readTemplate],\n\n  sortMustacheTags() {\n    // Sort in order of descending opening delimiter length (longer first),\n    // to protect against opening delimiters being substrings of each other\n    this.tags.sort((a, b) => {\n      return b.open.length - a.open.length;\n    });\n  }\n});\n\nexport default function parse(template, options) {\n  return new StandardParser(template, options || {}).result;\n}\n","export default {};\n","import { fromExpression } from './createFunction';\nimport { isArray, isObject } from 'utils/is';\nimport { keys } from 'utils/object';\n\nexport default function insertExpressions(obj, expr) {\n  keys(obj).forEach(key => {\n    if (isExpression(key, obj)) return addTo(obj, expr);\n\n    const ref = obj[key];\n    if (hasChildren(ref)) insertExpressions(ref, expr);\n  });\n}\n\nfunction isExpression(key, obj) {\n  return key === 's' && isArray(obj.r);\n}\n\nfunction addTo(obj, expr) {\n  const { s, r } = obj;\n  if (!expr[s]) expr[s] = fromExpression(s, r.length);\n}\n\nfunction hasChildren(ref) {\n  return isArray(ref) || isObject(ref);\n}\n","import { TEMPLATE_VERSION } from 'config/template';\nimport { READERS, PARTIAL_READERS } from 'parse/_parse';\nimport cleanup from 'parse/utils/cleanup';\nimport { create } from 'utils/object';\n\nexport default function readTemplate(parser) {\n  const fragment = [];\n  const partials = create(null);\n  let hasPartials = false;\n\n  const preserveWhitespace = parser.preserveWhitespace;\n\n  while (parser.pos < parser.str.length) {\n    const pos = parser.pos;\n    let item, partial;\n\n    if ((partial = parser.read(PARTIAL_READERS))) {\n      if (partials[partial.n]) {\n        parser.pos = pos;\n        parser.error('Duplicated partial definition');\n      }\n\n      cleanup(\n        partial.f,\n        parser.stripComments,\n        preserveWhitespace,\n        !preserveWhitespace,\n        !preserveWhitespace,\n        parser.whiteSpaceElements\n      );\n\n      partials[partial.n] = partial.f;\n      hasPartials = true;\n    } else if ((item = parser.read(READERS))) {\n      fragment.push(item);\n    } else {\n      parser.error('Unexpected template content');\n    }\n  }\n\n  const result = {\n    v: TEMPLATE_VERSION,\n    t: fragment\n  };\n\n  if (hasPartials) {\n    result.p = partials;\n  }\n\n  return result;\n}\n","import { INLINE_PARTIAL } from 'config/types';\nimport { READERS } from '../_parse';\nimport readClosing from './mustache/section/readClosing';\n\nconst partialDefinitionSectionPattern = /^\\s*#\\s*partial\\s+/;\n\nexport default function readPartialDefinitionSection(parser) {\n  let child, closed;\n\n  const start = parser.pos;\n\n  const delimiters = parser.standardDelimiters;\n\n  if (!parser.matchString(delimiters[0])) {\n    return null;\n  }\n\n  if (!parser.matchPattern(partialDefinitionSectionPattern)) {\n    parser.pos = start;\n    return null;\n  }\n\n  const name = parser.matchPattern(/^[a-zA-Z_$][a-zA-Z_$0-9\\-\\/]*/);\n\n  if (!name) {\n    parser.error('expected legal partial name');\n  }\n\n  parser.sp();\n  if (!parser.matchString(delimiters[1])) {\n    parser.error(`Expected closing delimiter '${delimiters[1]}'`);\n  }\n\n  const content = [];\n\n  const [open, close] = delimiters;\n\n  do {\n    if ((child = readClosing(parser, { open, close }))) {\n      if (child.r !== 'partial') {\n        parser.error(`Expected ${open}/partial${close}`);\n      }\n\n      closed = true;\n    } else {\n      child = parser.read(READERS);\n\n      if (!child) {\n        parser.error(`Expected ${open}/partial${close}`);\n      }\n\n      content.push(child);\n    }\n  } while (!closed);\n\n  return {\n    t: INLINE_PARTIAL,\n    n: name,\n    f: content\n  };\n}\n","import getLowestIndex from './utils/getLowestIndex';\nimport { decodeCharacterReferences } from 'utils/html';\n\nexport default function readText(parser) {\n  let index, disallowed, barrier;\n\n  const remaining = parser.remaining();\n\n  if (parser.textOnlyMode) {\n    disallowed = parser.tags.map(t => t.open);\n    disallowed = disallowed.concat(parser.tags.map(t => '\\\\' + t.open));\n\n    index = getLowestIndex(remaining, disallowed);\n  } else {\n    barrier = parser.inside ? '</' + parser.inside : '<';\n\n    if (parser.inside && !parser.interpolate[parser.inside]) {\n      index = remaining.indexOf(barrier);\n    } else {\n      disallowed = parser.tags.map(t => t.open);\n      disallowed = disallowed.concat(parser.tags.map(t => '\\\\' + t.open));\n\n      // http://developers.whatwg.org/syntax.html#syntax-attributes\n      if (parser.inAttribute === true) {\n        // we're inside an unquoted attribute value\n        disallowed.push(`\"`, `'`, `=`, `<`, `>`, '`');\n      } else if (parser.inAttribute) {\n        // quoted attribute value\n        disallowed.push(parser.inAttribute);\n      } else {\n        disallowed.push(barrier);\n      }\n\n      index = getLowestIndex(remaining, disallowed);\n    }\n  }\n\n  if (!index) {\n    return null;\n  }\n\n  if (index === -1) {\n    index = remaining.length;\n  }\n\n  parser.pos += index;\n\n  if ((parser.inside && parser.inside !== 'textarea') || parser.textOnlyMode) {\n    return remaining.substr(0, index);\n  } else {\n    return decodeCharacterReferences(remaining.substr(0, index));\n  }\n}\n","import { ANCHOR, DOCTYPE, ELEMENT, ATTRIBUTE } from 'config/types';\nimport { voidElements } from 'utils/html';\nimport { READERS, PARTIAL_READERS } from '../_parse';\nimport cleanup from 'parse/utils/cleanup';\nimport readMustache from './readMustache';\nimport readClosingTag from './element/readClosingTag';\nimport readClosing from './mustache/section/readClosing';\nimport { create } from 'utils/object';\nimport { isString } from 'utils/is';\nimport hyphenateCamel from 'utils/hyphenateCamel';\n\nconst tagNamePattern = /^[a-zA-Z]{1,}:?[a-zA-Z0-9\\-]*/;\nconst anchorPattern = /^[a-zA-Z_$][-a-zA-Z0-9_$]*/;\nconst validTagNameFollower = /^[\\s\\n\\/>]/;\nconst semiEnd = /;\\s*$/;\nconst exclude = { exclude: true };\n\n// based on http://developers.whatwg.org/syntax.html#syntax-tag-omission\nconst disallowedContents = {\n  li: ['li'],\n  dt: ['dt', 'dd'],\n  dd: ['dt', 'dd'],\n  p: 'address article aside blockquote div dl fieldset footer form h1 h2 h3 h4 h5 h6 header hgroup hr main menu nav ol p pre section table ul'.split(\n    ' '\n  ),\n  rt: ['rt', 'rp'],\n  rp: ['rt', 'rp'],\n  optgroup: ['optgroup'],\n  option: ['option', 'optgroup'],\n  thead: ['tbody', 'tfoot'],\n  tbody: ['tbody', 'tfoot'],\n  tfoot: ['tbody'],\n  tr: ['tr', 'tbody'],\n  td: ['td', 'th', 'tr'],\n  th: ['td', 'th', 'tr']\n};\n\nexport default readElement;\n\nfunction readElement(parser) {\n  let attribute,\n    selfClosing,\n    children,\n    partials,\n    hasPartials,\n    child,\n    closed,\n    pos,\n    remaining,\n    closingTag,\n    anchor;\n\n  const start = parser.pos;\n\n  if (parser.inside || parser.inAttribute || parser.textOnlyMode) {\n    return null;\n  }\n\n  if (!parser.matchString('<')) {\n    return null;\n  }\n\n  // if this is a closing tag, abort straight away\n  if (parser.nextChar() === '/') {\n    return null;\n  }\n\n  const element = {};\n  if (parser.includeLinePositions) {\n    element.q = parser.getLinePos(start);\n  }\n\n  // check for doctype decl\n  if (parser.matchString('!')) {\n    element.t = DOCTYPE;\n    if (!parser.matchPattern(/^doctype/i)) {\n      parser.error('Expected DOCTYPE declaration');\n    }\n\n    element.a = parser.matchPattern(/^(.+?)>/);\n    return element;\n  } else if ((anchor = parser.matchString('#'))) {\n    // check for anchor\n    parser.sp();\n    element.t = ANCHOR;\n    element.n = parser.matchPattern(anchorPattern);\n  } else {\n    // otherwise, it's an element/component\n    element.t = ELEMENT;\n\n    // element name\n    element.e = parser.matchPattern(tagNamePattern);\n    if (!element.e) {\n      return null;\n    }\n  }\n\n  // next character must be whitespace, closing solidus or '>'\n  if (!validTagNameFollower.test(parser.nextChar())) {\n    parser.error('Illegal tag name');\n  }\n\n  parser.sp();\n\n  parser.inTag = true;\n\n  // directives and attributes\n  while ((attribute = readMustache(parser))) {\n    if (attribute !== false) {\n      if (!element.m) element.m = [];\n      element.m.push(attribute);\n    }\n\n    parser.sp();\n  }\n\n  parser.inTag = false;\n\n  // allow whitespace before closing solidus\n  parser.sp();\n\n  // self-closing solidus?\n  if (parser.matchString('/')) {\n    selfClosing = true;\n  }\n\n  // closing angle bracket\n  if (!parser.matchString('>')) {\n    return null;\n  }\n\n  const lowerCaseName = (element.e || element.n).toLowerCase();\n  const preserveWhitespace = parser.preserveWhitespace;\n\n  if (!selfClosing && (anchor || !voidElements[element.e.toLowerCase()])) {\n    if (!anchor) {\n      parser.elementStack.push(lowerCaseName);\n\n      // Special case - if we open a script element, further tags should\n      // be ignored unless they're a closing script element\n      if (lowerCaseName in parser.interpolate) {\n        parser.inside = lowerCaseName;\n      }\n    }\n\n    children = [];\n    partials = create(null);\n\n    do {\n      pos = parser.pos;\n      remaining = parser.remaining();\n\n      if (!remaining) {\n        // if this happens to be a script tag and there's no content left, it's because\n        // a closing script tag can't appear in a script\n        if (parser.inside === 'script') {\n          closed = true;\n          break;\n        }\n\n        parser.error(\n          `Missing end ${parser.elementStack.length > 1 ? 'tags' : 'tag'} (${parser.elementStack\n            .reverse()\n            .map(x => `</${x}>`)\n            .join('')})`\n        );\n      }\n\n      // if for example we're in an <li> element, and we see another\n      // <li> tag, close the first so they become siblings\n      if (!anchor && !canContain(lowerCaseName, remaining)) {\n        closed = true;\n      } else if (!anchor && (closingTag = readClosingTag(parser))) {\n        // closing tag\n        closed = true;\n\n        const closingTagName = closingTag.e.toLowerCase();\n\n        // if this *isn't* the closing tag for the current element...\n        if (closingTagName !== lowerCaseName) {\n          // rewind parser\n          parser.pos = pos;\n\n          // if it doesn't close a parent tag, error\n          if (!~parser.elementStack.indexOf(closingTagName)) {\n            let errorMessage = 'Unexpected closing tag';\n\n            // add additional help for void elements, since component names\n            // might clash with them\n            if (voidElements[closingTagName.toLowerCase()]) {\n              errorMessage += ` (<${closingTagName}> is a void element - it cannot contain children)`;\n            }\n\n            parser.error(errorMessage);\n          }\n        }\n      } else if (anchor && readAnchorClose(parser, element.n)) {\n        closed = true;\n      } else {\n        // implicit close by closing section tag. TODO clean this up\n        const tag = {\n          open: parser.standardDelimiters[0],\n          close: parser.standardDelimiters[1]\n        };\n        if (readClosing(parser, tag) || readInline(parser, tag)) {\n          closed = true;\n          parser.pos = pos;\n        } else if ((child = parser.read(PARTIAL_READERS))) {\n          if (partials[child.n]) {\n            parser.pos = pos;\n            parser.error('Duplicate partial definition');\n          }\n\n          cleanup(\n            child.f,\n            parser.stripComments,\n            preserveWhitespace,\n            !preserveWhitespace,\n            !preserveWhitespace,\n            parser.whiteSpaceElements\n          );\n\n          partials[child.n] = child.f;\n          hasPartials = true;\n        } else {\n          if ((child = parser.read(READERS))) {\n            children.push(child);\n          } else {\n            closed = true;\n          }\n        }\n      }\n    } while (!closed);\n\n    if (children.length) {\n      element.f = children;\n    }\n\n    if (hasPartials) {\n      element.p = partials;\n    }\n\n    parser.elementStack.pop();\n  }\n\n  parser.inside = null;\n\n  if (parser.sanitizeElements && parser.sanitizeElements.indexOf(lowerCaseName) !== -1) {\n    return exclude;\n  }\n\n  if (\n    element.m &&\n    lowerCaseName !== 'input' &&\n    lowerCaseName !== 'select' &&\n    lowerCaseName !== 'textarea' &&\n    lowerCaseName !== 'option'\n  ) {\n    const attrs = element.m;\n    let classes, styles, cls, style;\n    let i = 0;\n    let a;\n    while (i < attrs.length) {\n      a = attrs[i];\n\n      if (a.t !== ATTRIBUTE) {\n        i++;\n        continue;\n      }\n\n      if (a.n.indexOf('class-') === 0 && !a.f) {\n        // static class directives\n        (classes || (classes = [])).push(a.n.slice(6));\n        attrs.splice(i, 1);\n      } else if (a.n.indexOf('style-') === 0 && isString(a.f)) {\n        // static style directives\n        (styles || (styles = [])).push(`${hyphenateCamel(a.n.slice(6))}: ${a.f};`);\n        attrs.splice(i, 1);\n      } else if (a.n === 'class' && isString(a.f)) {\n        // static class attrs\n        (classes || (classes = [])).push(a.f);\n        attrs.splice(i, 1);\n      } else if (a.n === 'style' && isString(a.f)) {\n        // static style attrs\n        (styles || (styles = [])).push(a.f + (semiEnd.test(a.f) ? '' : ';'));\n        attrs.splice(i, 1);\n      } else if (a.n === 'class') {\n        cls = a;\n        i++;\n      } else if (a.n === 'style') {\n        style = a;\n        i++;\n      } else if (\n        !~a.n.indexOf(':') &&\n        a.n !== 'value' &&\n        a.n !== 'contenteditable' &&\n        isString(a.f)\n      ) {\n        a.g = 1;\n        i++;\n      } else {\n        i++;\n      }\n    }\n\n    if (classes) {\n      if (!cls || !isString(cls.f))\n        attrs.unshift({ t: ATTRIBUTE, n: 'class', f: classes.join(' '), g: 1 });\n      else cls.f += ' ' + classes.join(' ');\n    } else if (cls && isString(cls.f)) cls.g = 1;\n\n    if (styles) {\n      if (!style || !isString(style.f))\n        attrs.unshift({ t: ATTRIBUTE, n: 'style', f: styles.join(' '), g: 1 });\n      else style.f += '; ' + styles.join(' ');\n    } else if (style && isString(style.f)) style.g = 1;\n  }\n\n  return element;\n}\n\nfunction canContain(name, remaining) {\n  const match = /^<([a-zA-Z][a-zA-Z0-9]*)/.exec(remaining);\n  const disallowed = disallowedContents[name];\n\n  if (!match || !disallowed) {\n    return true;\n  }\n\n  return !~disallowed.indexOf(match[1].toLowerCase());\n}\n\nfunction readAnchorClose(parser, name) {\n  const pos = parser.pos;\n  if (!parser.matchString('</')) {\n    return null;\n  }\n\n  parser.matchString('#');\n  parser.sp();\n\n  if (!parser.matchString(name)) {\n    parser.pos = pos;\n    return null;\n  }\n\n  parser.sp();\n\n  if (!parser.matchString('>')) {\n    parser.pos = pos;\n    return null;\n  }\n\n  return true;\n}\n\nconst inlines = /^\\s*(elseif|else|then|catch)\\s*/;\nfunction readInline(parser, tag) {\n  const pos = parser.pos;\n  if (!parser.matchString(tag.open)) return;\n  if (parser.matchPattern(inlines)) {\n    return true;\n  } else {\n    parser.pos = pos;\n  }\n}\n","export default function(camelCaseStr) {\n  return camelCaseStr.replace(/([A-Z])/g, (match, $1) => {\n    return '-' + $1.toLowerCase();\n  });\n}\n","import { CLOSING_TAG } from 'src/config/types';\n\nconst closingTagPattern = /^([a-zA-Z]{1,}:?[a-zA-Z0-9\\-]*)\\s*\\>/;\n\nexport default function readClosingTag(parser) {\n  let tag;\n\n  const start = parser.pos;\n\n  // are we looking at a closing tag?\n  if (!parser.matchString('</')) {\n    return null;\n  }\n\n  if ((tag = parser.matchPattern(closingTagPattern))) {\n    if (parser.inside && tag !== parser.inside) {\n      parser.pos = start;\n      return null;\n    }\n\n    return {\n      t: CLOSING_TAG,\n      e: tag\n    };\n  }\n\n  // We have an illegal closing tag, report it\n  parser.pos -= 2;\n  parser.error('Illegal closing tag');\n}\n","import { COMMENT, ELEMENT } from 'config/types';\nimport stripStandalones from './stripStandalones';\nimport trimWhitespace from './trimWhitespace';\nimport { isString } from 'utils/is';\n\nconst contiguousWhitespace = /[ \\t\\f\\r\\n]+/g;\nconst leadingWhitespace = /^[ \\t\\f\\r\\n]+/;\nconst trailingWhitespace = /[ \\t\\f\\r\\n]+$/;\nconst leadingNewLine = /^(?:\\r\\n|\\r|\\n)/;\nconst trailingNewLine = /(?:\\r\\n|\\r|\\n)$/;\n\nexport default function cleanup(\n  items,\n  stripComments,\n  preserveWhitespace,\n  removeLeadingWhitespace,\n  removeTrailingWhitespace,\n  whiteSpaceElements\n) {\n  if (isString(items)) return;\n\n  let i,\n    item,\n    previousItem,\n    nextItem,\n    preserveWhitespaceInsideFragment,\n    removeLeadingWhitespaceInsideFragment,\n    removeTrailingWhitespaceInsideFragment;\n\n  // First pass - remove standalones and comments etc\n  stripStandalones(items);\n\n  i = items.length;\n  while (i--) {\n    item = items[i];\n\n    // Remove delimiter changes, unsafe elements etc\n    if (item.exclude) {\n      items.splice(i, 1);\n    } else if (stripComments && item.t === COMMENT) {\n      // Remove comments, unless we want to keep them\n      items.splice(i, 1);\n    }\n  }\n\n  // If necessary, remove leading and trailing whitespace\n  trimWhitespace(\n    items,\n    removeLeadingWhitespace ? leadingWhitespace : null,\n    removeTrailingWhitespace ? trailingWhitespace : null\n  );\n\n  i = items.length;\n  while (i--) {\n    item = items[i];\n    removeLeadingWhitespaceInsideFragment = removeTrailingWhitespaceInsideFragment = false;\n\n    // Recurse\n    if (item.f) {\n      const isPreserveWhitespaceElement =\n        item.t === ELEMENT &&\n        (whiteSpaceElements[item.e.toLowerCase()] || whiteSpaceElements[item.e]);\n      preserveWhitespaceInsideFragment = preserveWhitespace || isPreserveWhitespaceElement;\n\n      if (!preserveWhitespace && isPreserveWhitespaceElement) {\n        trimWhitespace(item.f, leadingNewLine, trailingNewLine);\n      }\n\n      if (!preserveWhitespaceInsideFragment) {\n        previousItem = items[i - 1];\n        nextItem = items[i + 1];\n\n        // if the previous item was a text item with trailing whitespace,\n        // remove leading whitespace inside the fragment\n        if (!previousItem || (isString(previousItem) && trailingWhitespace.test(previousItem))) {\n          removeLeadingWhitespaceInsideFragment = true;\n        }\n\n        // and vice versa\n        if (!nextItem || (isString(nextItem) && leadingWhitespace.test(nextItem))) {\n          removeTrailingWhitespaceInsideFragment = true;\n        }\n      }\n\n      cleanup(\n        item.f,\n        stripComments,\n        preserveWhitespaceInsideFragment,\n        removeLeadingWhitespaceInsideFragment,\n        removeTrailingWhitespaceInsideFragment,\n        whiteSpaceElements\n      );\n    }\n\n    // Split if-else blocks into two (an if, and an unless)\n    if (item.l) {\n      cleanup(\n        item.l,\n        stripComments,\n        preserveWhitespace,\n        removeLeadingWhitespaceInsideFragment,\n        removeTrailingWhitespaceInsideFragment,\n        whiteSpaceElements\n      );\n\n      item.l.forEach(s => (s.l = 1));\n      item.l.unshift(i + 1, 0);\n      items.splice.apply(items, item.l);\n      delete item.l; // TODO would be nice if there was a way around this\n    }\n\n    // Clean up conditional attributes\n    if (item.m) {\n      cleanup(\n        item.m,\n        stripComments,\n        preserveWhitespace,\n        removeLeadingWhitespaceInsideFragment,\n        removeTrailingWhitespaceInsideFragment,\n        whiteSpaceElements\n      );\n      if (item.m.length < 1) delete item.m;\n    }\n  }\n\n  // final pass - fuse text nodes together\n  i = items.length;\n  while (i--) {\n    if (isString(items[i])) {\n      if (isString(items[i + 1])) {\n        items[i] = items[i] + items[i + 1];\n        items.splice(i + 1, 1);\n      }\n\n      if (!preserveWhitespace) {\n        items[i] = items[i].replace(contiguousWhitespace, ' ');\n      }\n\n      if (items[i] === '') {\n        items.splice(i, 1);\n      }\n    }\n  }\n}\n","import { lastItem } from 'utils/array';\nimport { isString } from 'utils/is';\n\nexport default function(items, leadingPattern, trailingPattern) {\n  let item;\n\n  if (leadingPattern) {\n    item = items[0];\n    if (isString(item)) {\n      item = item.replace(leadingPattern, '');\n\n      if (!item) {\n        items.shift();\n      } else {\n        items[0] = item;\n      }\n    }\n  }\n\n  if (trailingPattern) {\n    item = lastItem(items);\n    if (isString(item)) {\n      item = item.replace(trailingPattern, '');\n\n      if (!item) {\n        items.pop();\n      } else {\n        items[items.length - 1] = item;\n      }\n    }\n  }\n}\n","import { COMMENT, DELIMCHANGE, SECTION, INVERTED } from 'config/types';\nimport { lastItem } from 'utils/array';\nimport { isString } from 'utils/is';\n\nconst leadingLinebreak = /^[ \\t\\f\\r\\n]*\\r?\\n/;\nconst trailingLinebreak = /\\r?\\n[ \\t\\f\\r\\n]*$/;\n\nexport default function(items) {\n  let i, current, backOne, backTwo, lastSectionItem;\n\n  for (i = 1; i < items.length; i += 1) {\n    current = items[i];\n    backOne = items[i - 1];\n    backTwo = items[i - 2];\n\n    // if we're at the end of a [text][comment][text] sequence...\n    if (isString(current) && isComment(backOne) && isString(backTwo)) {\n      // ... and the comment is a standalone (i.e. line breaks either side)...\n      if (trailingLinebreak.test(backTwo) && leadingLinebreak.test(current)) {\n        // ... then we want to remove the whitespace after the first line break\n        items[i - 2] = backTwo.replace(trailingLinebreak, '\\n');\n\n        // and the leading line break of the second text token\n        items[i] = current.replace(leadingLinebreak, '');\n      }\n    }\n\n    // if the current item is a section, and it is preceded by a linebreak, and\n    // its first item is a linebreak...\n    if (isSection(current) && isString(backOne)) {\n      if (\n        trailingLinebreak.test(backOne) &&\n        isString(current.f[0]) &&\n        leadingLinebreak.test(current.f[0])\n      ) {\n        items[i - 1] = backOne.replace(trailingLinebreak, '\\n');\n        current.f[0] = current.f[0].replace(leadingLinebreak, '');\n      }\n    }\n\n    // if the last item was a section, and it is followed by a linebreak, and\n    // its last item is a linebreak...\n    if (isString(current) && isSection(backOne)) {\n      lastSectionItem = lastItem(backOne.f);\n\n      if (\n        isString(lastSectionItem) &&\n        trailingLinebreak.test(lastSectionItem) &&\n        leadingLinebreak.test(current)\n      ) {\n        backOne.f[backOne.f.length - 1] = lastSectionItem.replace(trailingLinebreak, '\\n');\n        items[i] = current.replace(leadingLinebreak, '');\n      }\n    }\n  }\n\n  return items;\n}\n\nfunction isComment(item) {\n  return item.t === COMMENT || item.t === DELIMCHANGE;\n}\n\nfunction isSection(item) {\n  return (item.t === SECTION || item.t === INVERTED) && item.f;\n}\n","import { COMMENT } from 'config/types';\n\nconst OPEN_COMMENT = '<!--';\nconst CLOSE_COMMENT = '-->';\n\nexport default function readHtmlComment(parser) {\n  const start = parser.pos;\n\n  if (parser.textOnlyMode || !parser.matchString(OPEN_COMMENT)) {\n    return null;\n  }\n\n  const remaining = parser.remaining();\n  const endIndex = remaining.indexOf(CLOSE_COMMENT);\n\n  if (endIndex === -1) {\n    parser.error(\"Illegal HTML - expected closing comment sequence ('-->')\");\n  }\n\n  const content = remaining.substr(0, endIndex);\n  parser.pos += endIndex + 3;\n\n  const comment = {\n    t: COMMENT,\n    c: content\n  };\n\n  if (parser.includeLinePositions) {\n    comment.q = parser.getLinePos(start);\n  }\n\n  return comment;\n}\n","import {\n  ALIAS,\n  AWAIT,\n  CATCH,\n  ELSE,\n  ELSEIF,\n  SECTION,\n  SECTION_IF,\n  SECTION_UNLESS,\n  THEN\n} from 'config/types';\nimport { READERS } from 'parse/_parse';\nimport readClosing from './section/readClosing';\nimport readInlineBlock from './section/readInlineBlock';\nimport handlebarsBlockCodes from './handlebarsBlockCodes';\nimport readExpression from '../readExpression';\nimport refineExpression from 'parse/utils/refineExpression';\nimport { readAlias, readAliases } from './readAliases';\nimport { keys } from 'utils/object';\nimport { name } from '../expressions/shared/patterns';\n\nconst indexRefPattern = /^\\s*:\\s*([a-zA-Z_$][a-zA-Z_$0-9]*)/;\nconst keyIndexRefPattern = /^\\s*,\\s*([a-zA-Z_$][a-zA-Z_$0-9]*)/;\nconst handlebarsBlockPattern = new RegExp('^(' + keys(handlebarsBlockCodes).join('|') + ')\\\\b');\n\nexport default function readSection(parser, tag) {\n  let expression,\n    section,\n    child,\n    children,\n    hasElse,\n    block,\n    unlessBlock,\n    closed,\n    i,\n    expectedClose,\n    hasThen,\n    hasCatch,\n    inlineThen;\n  let aliasOnly = false;\n\n  const start = parser.pos;\n\n  if (parser.matchString('^')) {\n    // watch out for parent context refs - {{^^/^^/foo}}\n    if (parser.matchString('^/')) {\n      parser.pos = start;\n      return null;\n    }\n    section = { t: SECTION, f: [], n: SECTION_UNLESS };\n  } else if (parser.matchString('#')) {\n    section = { t: SECTION, f: [] };\n\n    if (parser.matchString('partial')) {\n      parser.pos = start - parser.standardDelimiters[0].length;\n      parser.error(\n        'Partial definitions can only be at the top level of the template, or immediately inside components'\n      );\n    }\n\n    if ((block = parser.matchString('await'))) {\n      expectedClose = block;\n      section.t = AWAIT;\n    } else if ((block = parser.matchPattern(handlebarsBlockPattern))) {\n      expectedClose = block;\n      section.n = handlebarsBlockCodes[block];\n    }\n  } else {\n    return null;\n  }\n\n  parser.sp();\n\n  if (block === 'with') {\n    const aliases = readAliases(parser);\n    if (aliases) {\n      aliasOnly = true;\n      section.z = aliases;\n      section.t = ALIAS;\n    }\n  } else if (block === 'each') {\n    const alias = readAlias(parser);\n    if (alias) {\n      section.z = [{ n: alias.n, x: { r: '.' } }];\n      expression = alias.x;\n    }\n  }\n\n  if (!aliasOnly) {\n    if (!expression) expression = readExpression(parser);\n\n    if (!expression) {\n      parser.error('Expected expression');\n    }\n\n    // extra each aliases\n    if (block === 'each' && parser.matchString(',')) {\n      const aliases = readAliases(parser);\n      if (aliases) {\n        if (section.z) aliases.unshift(section.z[0]);\n        section.z = aliases;\n      }\n    }\n\n    // optional index and key references\n    if ((block === 'each' || !block) && (i = parser.matchPattern(indexRefPattern))) {\n      let extra;\n\n      if ((extra = parser.matchPattern(keyIndexRefPattern))) {\n        section.i = i + ',' + extra;\n      } else {\n        section.i = i;\n      }\n    } else if (block === 'await' && parser.matchString('then')) {\n      parser.sp();\n      hasThen = true;\n      inlineThen = parser.matchPattern(name);\n      if (!inlineThen) inlineThen = true;\n    }\n\n    if (!block && expression.n) {\n      expectedClose = expression.n;\n    }\n  }\n\n  parser.sp();\n\n  if (!parser.matchString(tag.close)) {\n    parser.error(`Expected closing delimiter '${tag.close}'`);\n  }\n\n  parser.sectionDepth += 1;\n  children = section.f;\n\n  let pos;\n  do {\n    pos = parser.pos;\n    if ((child = readClosing(parser, tag))) {\n      if (expectedClose && child.r !== expectedClose) {\n        if (!block) {\n          if (child.r)\n            parser.warn(\n              `Expected ${tag.open}/${expectedClose}${tag.close} but found ${tag.open}/${child.r}${\n                tag.close\n              }`\n            );\n        } else {\n          parser.pos = pos;\n          parser.error(`Expected ${tag.open}/${expectedClose}${tag.close}`);\n        }\n      }\n\n      parser.sectionDepth -= 1;\n      closed = true;\n    } else if (\n      !aliasOnly &&\n      ((child = readInlineBlock(parser, tag, 'elseif')) ||\n        (child = readInlineBlock(parser, tag, 'else')) ||\n        (block === 'await' &&\n          ((child = readInlineBlock(parser, tag, 'then')) ||\n            (child = readInlineBlock(parser, tag, 'catch')))))\n    ) {\n      if (section.n === SECTION_UNLESS) {\n        parser.error('{{else}} not allowed in {{#unless}}');\n      }\n\n      if (hasElse) {\n        if (child.t === ELSE) {\n          parser.error('there can only be one {{else}} block, at the end of a section');\n        } else if (child.t === ELSEIF) {\n          parser.error('illegal {{elseif...}} after {{else}}');\n        }\n      }\n\n      if (!unlessBlock && (inlineThen || !hasThen) && !hasCatch) {\n        if (block === 'await') {\n          const s = { f: children };\n          section.f = [s];\n          if (inlineThen) {\n            s.t = THEN;\n            inlineThen !== true && (s.n = inlineThen);\n          } else {\n            s.t = SECTION;\n          }\n        } else {\n          unlessBlock = [];\n        }\n      }\n\n      const mustache = {\n        t: SECTION,\n        f: (children = [])\n      };\n\n      if (child.t === ELSE) {\n        if (block === 'await') {\n          section.f.push(mustache);\n          mustache.t = ELSE;\n        } else {\n          mustache.n = SECTION_UNLESS;\n          unlessBlock.push(mustache);\n        }\n        hasElse = true;\n      } else if (child.t === ELSEIF) {\n        mustache.n = SECTION_IF;\n        refineExpression(child.x, mustache);\n        unlessBlock.push(mustache);\n      } else if (child.t === THEN) {\n        if (hasElse) parser.error('{{then}} block must appear before any {{else}} block');\n        if (hasCatch) parser.error('{{then}} block must appear before any {{catch}} block');\n        if (hasThen) parser.error('there can only be one {{then}} block per {{#await}}');\n        mustache.t = THEN;\n        hasThen = true;\n        child.n && (mustache.n = child.n);\n        section.f.push(mustache);\n      } else if (child.t === CATCH) {\n        if (hasElse) parser.error('{{catch}} block must appear before any {{else}} block');\n        if (hasCatch) parser.error('there can only be one {{catch}} block per {{#await}}');\n        mustache.t = CATCH;\n        hasCatch = true;\n        mustache.n = child.n;\n        section.f.push(mustache);\n      }\n    } else {\n      child = parser.read(READERS);\n\n      if (!child) {\n        break;\n      }\n\n      children.push(child);\n    }\n  } while (!closed);\n\n  if (unlessBlock) {\n    section.l = unlessBlock;\n  }\n\n  if (!aliasOnly) {\n    refineExpression(expression, section);\n  }\n\n  if (block === 'await' && (inlineThen || !hasThen) && !hasCatch && !hasElse) {\n    const s = { f: section.f };\n    section.f = [s];\n    if (inlineThen) {\n      s.t = THEN;\n      inlineThen !== true && (s.n = inlineThen);\n    } else {\n      s.t = SECTION;\n    }\n  }\n\n  // TODO if a section is empty it should be discarded. Don't do\n  // that here though - we need to clean everything up first, as\n  // it may contain removeable whitespace. As a temporary measure,\n  // to pass the existing tests, remove empty `f` arrays\n  if (!section.f.length) {\n    delete section.f;\n  }\n\n  return section;\n}\n","import { SECTION_EACH, SECTION_IF, SECTION_IF_WITH, SECTION_UNLESS } from 'config/types';\n\nexport default {\n  each: SECTION_EACH,\n  if: SECTION_IF,\n  with: SECTION_IF_WITH,\n  unless: SECTION_UNLESS\n};\n","import { CATCH, ELSE, ELSEIF, THEN } from 'config/types';\nimport readExpression from '../../readExpression';\nimport { name } from '../../expressions/shared/patterns';\n\nconst patterns = {\n  else: /^\\s*else\\s*/,\n  elseif: /^\\s*elseif\\s+/,\n  then: /^\\s*then\\s*/,\n  catch: /^\\s*catch\\s*/\n};\n\nconst types = {\n  else: ELSE,\n  elseif: ELSEIF,\n  then: THEN,\n  catch: CATCH\n};\n\nexport default function readInlineBlock(parser, tag, type) {\n  const start = parser.pos;\n\n  if (!parser.matchString(tag.open)) {\n    return null;\n  }\n\n  if (!parser.matchPattern(patterns[type])) {\n    parser.pos = start;\n    return null;\n  }\n\n  const res = { t: types[type] };\n\n  if (type === 'elseif') {\n    res.x = readExpression(parser);\n  } else if (type === 'catch' || type === 'then') {\n    const nm = parser.matchPattern(name);\n    if (nm) res.n = nm;\n  }\n\n  if (!parser.matchString(tag.close)) {\n    parser.error(`Expected closing delimiter '${tag.close}'`);\n  }\n\n  return res;\n}\n","import { CLOSING } from 'config/types';\n\nexport default function readClosing(parser, tag) {\n  const start = parser.pos;\n\n  if (!parser.matchString(tag.open)) {\n    return null;\n  }\n\n  parser.sp();\n\n  if (!parser.matchString('/')) {\n    parser.pos = start;\n    return null;\n  }\n\n  parser.sp();\n\n  const remaining = parser.remaining();\n  const index = remaining.indexOf(tag.close);\n\n  if (index !== -1) {\n    const closing = {\n      t: CLOSING,\n      r: remaining.substr(0, index).split(' ')[0]\n    };\n\n    parser.pos += index;\n\n    if (!parser.matchString(tag.close)) {\n      parser.error(`Expected closing delimiter '${tag.close}'`);\n    }\n\n    return closing;\n  }\n\n  parser.pos = start;\n  return null;\n}\n","import { INTERPOLATOR } from 'config/types';\nimport readExpressionOrReference from '../readExpressionOrReference';\nimport refineExpression from 'parse/utils/refineExpression';\n\nexport default function readInterpolator(parser, tag) {\n  let expression, err;\n\n  const start = parser.pos;\n\n  // TODO would be good for perf if we could do away with the try-catch\n  try {\n    expression = readExpressionOrReference(parser, [tag.close]);\n  } catch (e) {\n    err = e;\n  }\n\n  if (!expression) {\n    if (parser.str.charAt(start) === '!') {\n      // special case - comment\n      parser.pos = start;\n      return null;\n    }\n\n    if (err) {\n      throw err;\n    }\n  }\n\n  if (!parser.matchString(tag.close)) {\n    parser.error(`Expected closing delimiter '${tag.close}' after reference`);\n\n    if (!expression) {\n      // special case - comment\n      if (parser.nextChar() === '!') {\n        return null;\n      }\n\n      parser.error(`Expected expression or legal reference`);\n    }\n  }\n\n  const interpolator = { t: INTERPOLATOR };\n  refineExpression(expression, interpolator); // TODO handle this differently - it's mysterious\n\n  return interpolator;\n}\n","import { COMMENT } from 'src/config/types';\n\nexport default function readComment(parser, tag) {\n  if (!parser.matchString('!')) {\n    return null;\n  }\n\n  const index = parser.remaining().indexOf(tag.close);\n\n  if (index !== -1) {\n    parser.pos += index + tag.close.length;\n    return { t: COMMENT };\n  }\n}\n","import { PARTIAL, YIELDER } from 'src/config/types';\nimport readExpression from '../readExpression';\nimport refineExpression from 'parse/utils/refineExpression';\nimport { readAliases } from './readAliases';\n\nexport default function readPartial(parser, tag) {\n  const type = parser.matchString('>') || parser.matchString('yield');\n  const partial = { t: type === '>' ? PARTIAL : YIELDER };\n  let aliases;\n\n  if (!type) return null;\n\n  parser.sp();\n\n  if (type === '>' || !(aliases = parser.matchString('with'))) {\n    // Partial names can include hyphens, so we can't use readExpression\n    // blindly. Instead, we use the `relaxedNames` flag to indicate that\n    // `foo-bar` should be read as a single name, rather than 'subtract\n    // bar from foo'\n    parser.relaxedNames = parser.strictRefinement = true;\n    const expression = readExpression(parser);\n    parser.relaxedNames = parser.strictRefinement = false;\n\n    if (!expression && type === '>') return null;\n\n    if (expression) {\n      refineExpression(expression, partial); // TODO...\n      parser.sp();\n      if (type !== '>') aliases = parser.matchString('with');\n    }\n  }\n\n  parser.sp();\n\n  // check for alias context e.g. `{{>foo bar as bat, bip as bop}}`\n  if (aliases || type === '>') {\n    aliases = readAliases(parser);\n    if (aliases && aliases.length) {\n      partial.z = aliases;\n    } else {\n      // otherwise check for literal context e.g. `{{>foo bar}}` then\n      // turn it into `{{#with bar}}{{>foo}}{{/with}}`\n      const context = readExpression(parser);\n      if (context) {\n        partial.c = {};\n        refineExpression(context, partial.c);\n      }\n    }\n\n    if (type !== '>' && (!partial.c && !partial.z)) {\n      // {{yield with}} requires some aliases\n      parser.error(`Expected a context or one or more aliases`);\n    }\n  }\n\n  parser.sp();\n\n  if (!parser.matchString(tag.close)) {\n    parser.error(`Expected closing delimiter '${tag.close}'`);\n  }\n\n  return partial;\n}\n","import readExpression from '../readExpression';\nimport refineExpression from '../../utils/refineExpression';\n\nconst legalAlias = /^(?:[a-zA-Z$_0-9]|\\\\\\.)+(?:(?:(?:[a-zA-Z$_0-9]|\\\\\\.)+)|(?:\\[[0-9]+\\]))*/;\nconst asRE = /^as/i;\n\nexport function readAliases(parser) {\n  const aliases = [];\n  let alias;\n  const start = parser.pos;\n\n  parser.sp();\n\n  alias = readAlias(parser);\n\n  if (alias) {\n    alias.x = refineExpression(alias.x, {});\n    aliases.push(alias);\n\n    parser.sp();\n\n    while (parser.matchString(',')) {\n      alias = readAlias(parser);\n\n      if (!alias) {\n        parser.error('Expected another alias.');\n      }\n\n      alias.x = refineExpression(alias.x, {});\n      aliases.push(alias);\n\n      parser.sp();\n    }\n\n    return aliases;\n  }\n\n  parser.pos = start;\n  return null;\n}\n\nexport function readAlias(parser) {\n  const start = parser.pos;\n\n  parser.sp();\n\n  const expr = readExpression(parser, []);\n\n  if (!expr) {\n    parser.pos = start;\n    return null;\n  }\n\n  parser.sp();\n  parser.matchPattern(asRE);\n  parser.sp();\n\n  const alias = parser.matchPattern(legalAlias);\n\n  if (!alias) {\n    parser.pos = start;\n    return null;\n  }\n\n  return { n: alias, x: expr };\n}\n","import { TRIPLE } from 'config/types';\nimport readExpression from '../readExpression';\nimport refineExpression from 'parse/utils/refineExpression';\n\nexport default function readUnescaped(parser, tag) {\n  if (!parser.matchString('&')) {\n    return null;\n  }\n\n  parser.sp();\n\n  const expression = readExpression(parser);\n\n  if (!expression) {\n    return null;\n  }\n\n  if (!parser.matchString(tag.close)) {\n    parser.error(`Expected closing delimiter '${tag.close}'`);\n  }\n\n  const triple = { t: TRIPLE };\n  refineExpression(expression, triple); // TODO handle this differently - it's mysterious\n\n  return triple;\n}\n","import { TRIPLE } from 'config/types';\nimport readExpression from '../readExpression';\nimport refineExpression from 'parse/utils/refineExpression';\n\nexport default function readTriple(parser, tag) {\n  const expression = readExpression(parser);\n\n  if (!expression) {\n    return null;\n  }\n\n  if (!parser.matchString(tag.close)) {\n    parser.error(`Expected closing delimiter '${tag.close}'`);\n  }\n\n  const triple = { t: TRIPLE };\n  refineExpression(expression, triple); // TODO handle this differently - it's mysterious\n\n  return triple;\n}\n","import { DELIMCHANGE } from 'config/types';\nimport readDelimiterChange from './mustache/readDelimiterChange';\nimport readRegexpLiteral from './expressions/primary/literal/readRegexpLiteral';\nimport { readAttributeOrDirective } from './element/readAttribute';\n\nconst delimiterChangeToken = { t: DELIMCHANGE, exclude: true };\n\nexport default function readMustache(parser) {\n  let mustache, i;\n\n  // If we're inside a <script> or <style> tag, and we're not\n  // interpolating, bug out\n  if (parser.interpolate[parser.inside] === false) {\n    return null;\n  }\n\n  for (i = 0; i < parser.tags.length; i += 1) {\n    if ((mustache = readMustacheOfType(parser, parser.tags[i]))) {\n      return mustache;\n    }\n  }\n\n  if (parser.inTag && !parser.inAttribute) {\n    mustache = readAttributeOrDirective(parser);\n    if (mustache) {\n      parser.sp();\n      return mustache;\n    }\n  }\n}\n\nfunction readMustacheOfType(parser, tag) {\n  let mustache, reader, i;\n\n  const start = parser.pos;\n\n  if (parser.matchString('\\\\' + tag.open)) {\n    if (start === 0 || parser.str[start - 1] !== '\\\\') {\n      return tag.open;\n    }\n  } else if (!parser.matchString(tag.open)) {\n    return null;\n  }\n\n  // delimiter change?\n  if ((mustache = readDelimiterChange(parser))) {\n    // find closing delimiter or abort...\n    if (!parser.matchString(tag.close)) {\n      return null;\n    }\n\n    // ...then make the switch\n    tag.open = mustache[0];\n    tag.close = mustache[1];\n    parser.sortMustacheTags();\n\n    return delimiterChangeToken;\n  }\n\n  parser.sp();\n\n  // illegal section closer\n  if (parser.matchString('/')) {\n    parser.pos -= 1;\n    const rewind = parser.pos;\n    if (!readRegexpLiteral(parser)) {\n      parser.pos = rewind - tag.close.length;\n      if (parser.inAttribute) {\n        parser.pos = start;\n        return null;\n      } else {\n        parser.error(\"Attempted to close a section that wasn't open\");\n      }\n    } else {\n      parser.pos = rewind;\n    }\n  }\n\n  for (i = 0; i < tag.readers.length; i += 1) {\n    reader = tag.readers[i];\n\n    if ((mustache = reader(parser, tag))) {\n      if (tag.isStatic) {\n        mustache.s = 1;\n      }\n\n      if (parser.includeLinePositions) {\n        mustache.q = parser.getLinePos(start);\n      }\n\n      return mustache;\n    }\n  }\n\n  parser.pos = start;\n  return null;\n}\n","import {\n  ARRAY_LITERAL,\n  ATTRIBUTE,\n  DECORATOR,\n  DELEGATE_FLAG,\n  BINDING_FLAG,\n  INTERPOLATOR,\n  TRANSITION,\n  EVENT\n} from '../../../config/types';\nimport getLowestIndex from '../utils/getLowestIndex';\nimport readMustache from '../readMustache';\nimport { decodeCharacterReferences } from 'src/utils/html';\nimport readExpressionList from '../expressions/shared/readExpressionList';\nimport readExpressionOrReference from '../readExpressionOrReference';\nimport flattenExpression from 'parse/utils/flattenExpression';\nimport refineExpression from 'parse/utils/refineExpression';\nimport { isString } from 'utils/is';\n\nconst attributeNamePattern = /^[^\\s\"'>\\/=(]+/;\nconst onPattern = /^on/;\nconst eventPattern = /^on-([a-zA-Z\\*\\.$_]((?:[a-zA-Z\\*\\.$_0-9\\-]|\\\\-)+))$/;\nconst reservedEventNames = /^(?:change|reset|teardown|update|construct|config|init|render|complete|unrender|detach|insert|destruct|attachchild|detachchild)$/;\nconst decoratorPattern = /^as-([a-z-A-Z][-a-zA-Z_0-9]*)$/;\nconst transitionPattern = /^([a-zA-Z](?:(?!-in-out)[-a-zA-Z_0-9])*)-(in|out|in-out)$/;\nconst boundPattern = /^((bind|class)-(([-a-zA-Z0-9_])+))$/;\nconst directives = {\n  lazy: { t: BINDING_FLAG, v: 'l' },\n  twoway: { t: BINDING_FLAG, v: 't' },\n  'no-delegation': { t: DELEGATE_FLAG }\n};\nconst unquotedAttributeValueTextPattern = /^[^\\s\"'=<>\\/`]+/;\nconst proxyEvent = /^[^\\s\"'=<>@\\[\\]()]*/;\nconst whitespace = /^\\s+/;\n\nconst slashes = /\\\\/g;\nfunction splitEvent(str) {\n  const result = [];\n  let s = 0;\n\n  for (let i = 0; i < str.length; i++) {\n    if (str[i] === '-' && str[i - 1] !== '\\\\') {\n      result.push(str.substring(s, i).replace(slashes, ''));\n      s = i + 1;\n    }\n  }\n\n  result.push(str.substring(s).replace(slashes, ''));\n\n  return result;\n}\n\nexport default function readAttribute(parser) {\n  let name, i, nearest, idx;\n\n  parser.sp();\n\n  name = parser.matchPattern(attributeNamePattern);\n  if (!name) {\n    return null;\n  }\n\n  // check for accidental delimiter consumption e.g. <tag bool{{>attrs}} />\n  nearest = name.length;\n  for (i = 0; i < parser.tags.length; i++) {\n    if (~(idx = name.indexOf(parser.tags[i].open))) {\n      if (idx < nearest) nearest = idx;\n    }\n  }\n  if (nearest < name.length) {\n    parser.pos -= name.length - nearest;\n    name = name.substr(0, nearest);\n    if (!name) return null;\n  }\n\n  return { n: name };\n}\n\nfunction readAttributeValue(parser) {\n  const start = parser.pos;\n\n  // next character must be `=`, `/`, `>` or whitespace\n  if (!/[=\\/>\\s]/.test(parser.nextChar())) {\n    parser.error('Expected `=`, `/`, `>` or whitespace');\n  }\n\n  parser.sp();\n\n  if (!parser.matchString('=')) {\n    parser.pos = start;\n    return null;\n  }\n\n  parser.sp();\n\n  const valueStart = parser.pos;\n  const startDepth = parser.sectionDepth;\n\n  const value =\n    readQuotedAttributeValue(parser, `'`) ||\n    readQuotedAttributeValue(parser, `\"`) ||\n    readUnquotedAttributeValue(parser);\n\n  if (value === null) {\n    parser.error('Expected valid attribute value');\n  }\n\n  if (parser.sectionDepth !== startDepth) {\n    parser.pos = valueStart;\n    parser.error(\n      'An attribute value must contain as many opening section tags as closing section tags'\n    );\n  }\n\n  if (!value.length) {\n    return '';\n  }\n\n  if (value.length === 1 && isString(value[0])) {\n    return decodeCharacterReferences(value[0]);\n  }\n\n  return value;\n}\n\nfunction readUnquotedAttributeValueToken(parser) {\n  let text, index;\n\n  const start = parser.pos;\n\n  text = parser.matchPattern(unquotedAttributeValueTextPattern);\n\n  if (!text) {\n    return null;\n  }\n\n  const haystack = text;\n  const needles = parser.tags.map(t => t.open); // TODO refactor... we do this in readText.js as well\n\n  if ((index = getLowestIndex(haystack, needles)) !== -1) {\n    text = text.substr(0, index);\n    parser.pos = start + text.length;\n  }\n\n  return text;\n}\n\nfunction readUnquotedAttributeValue(parser) {\n  parser.inAttribute = true;\n\n  const tokens = [];\n\n  let token = readMustache(parser) || readUnquotedAttributeValueToken(parser);\n  while (token) {\n    tokens.push(token);\n    token = readMustache(parser) || readUnquotedAttributeValueToken(parser);\n  }\n\n  if (!tokens.length) {\n    return null;\n  }\n\n  parser.inAttribute = false;\n  return tokens;\n}\n\nfunction readQuotedAttributeValue(parser, quoteMark) {\n  const start = parser.pos;\n\n  if (!parser.matchString(quoteMark)) {\n    return null;\n  }\n\n  parser.inAttribute = quoteMark;\n\n  const tokens = [];\n\n  let token = readMustache(parser) || readQuotedStringToken(parser, quoteMark);\n  while (token !== null) {\n    tokens.push(token);\n    token = readMustache(parser) || readQuotedStringToken(parser, quoteMark);\n  }\n\n  if (!parser.matchString(quoteMark)) {\n    parser.pos = start;\n    return null;\n  }\n\n  parser.inAttribute = false;\n\n  return tokens;\n}\n\nfunction readQuotedStringToken(parser, quoteMark) {\n  const haystack = parser.remaining();\n\n  const needles = parser.tags.map(t => t.open); // TODO refactor... we do this in readText.js as well\n  needles.push(quoteMark);\n\n  const index = getLowestIndex(haystack, needles);\n\n  if (index === -1) {\n    parser.error('Quoted attribute value must have a closing quote');\n  }\n\n  if (!index) {\n    return null;\n  }\n\n  parser.pos += index;\n  return haystack.substr(0, index);\n}\n\nexport function readAttributeOrDirective(parser) {\n  let match, directive;\n\n  const attribute = readAttribute(parser, false);\n\n  if (!attribute) return null;\n\n  // lazy, twoway\n  if ((directive = directives[attribute.n])) {\n    attribute.t = directive.t;\n    if (directive.v) attribute.v = directive.v;\n    delete attribute.n; // no name necessary\n    parser.sp();\n    if (parser.nextChar() === '=') attribute.f = readAttributeValue(parser);\n  } else if ((match = decoratorPattern.exec(attribute.n))) {\n    // decorators\n    attribute.n = match[1];\n    attribute.t = DECORATOR;\n    readArguments(parser, attribute);\n  } else if ((match = transitionPattern.exec(attribute.n))) {\n    // transitions\n    attribute.n = match[1];\n    attribute.t = TRANSITION;\n    readArguments(parser, attribute);\n    attribute.v = match[2] === 'in-out' ? 't0' : match[2] === 'in' ? 't1' : 't2';\n  } else if ((match = eventPattern.exec(attribute.n))) {\n    // on-click etc\n    attribute.n = splitEvent(match[1]);\n    attribute.t = EVENT;\n\n    if (parser.matchString('(')) {\n      attribute.a = flattenExpression({\n        t: ARRAY_LITERAL,\n        m: readExpressionList(parser)\n      });\n      if (!parser.matchString(')')) parser.error(`Expected closing ')'`);\n    }\n\n    parser.inEvent = true;\n\n    // check for a proxy event\n    if (!readProxyEvent(parser, attribute)) {\n      // otherwise, it's an expression\n      readArguments(parser, attribute, true);\n    } else if (reservedEventNames.test(attribute.f)) {\n      parser.pos -= attribute.f.length;\n      parser.error(\n        'Cannot use reserved event names (change, reset, teardown, update, construct, config, init, render, unrender, complete, detach, insert, destruct, attachchild, detachchild)'\n      );\n    }\n\n    parser.inEvent = false;\n  } else if ((match = boundPattern.exec(attribute.n))) {\n    // bound directives\n    const bind = match[2] === 'bind';\n    attribute.n = bind ? match[3] : match[1];\n    attribute.t = ATTRIBUTE;\n    readArguments(parser, attribute, false, true);\n\n    if (!attribute.f && bind) {\n      attribute.f = [{ t: INTERPOLATOR, r: match[3] }];\n    }\n  } else {\n    parser.sp();\n    const value = parser.nextChar() === '=' ? readAttributeValue(parser) : null;\n    attribute.f = value != null ? value : attribute.f;\n\n    if (parser.sanitizeEventAttributes && onPattern.test(attribute.n)) {\n      return { exclude: true };\n    } else {\n      attribute.f = attribute.f || (attribute.f === '' ? '' : 0);\n      attribute.t = ATTRIBUTE;\n    }\n  }\n\n  return attribute;\n}\n\nfunction readProxyEvent(parser, attribute) {\n  const start = parser.pos;\n  if (!parser.matchString('=')) parser.error(`Missing required directive arguments`);\n\n  const quote = parser.matchString(`'`) || parser.matchString(`\"`);\n  parser.sp();\n  const proxy = parser.matchPattern(proxyEvent);\n\n  if (proxy !== undefined) {\n    if (quote) {\n      parser.sp();\n      if (!parser.matchString(quote)) parser.pos = start;\n      else return (attribute.f = proxy) || true;\n    } else if (!parser.matchPattern(whitespace)) {\n      parser.pos = start;\n    } else {\n      return (attribute.f = proxy) || true;\n    }\n  } else {\n    parser.pos = start;\n  }\n}\n\nfunction readArguments(parser, attribute, required = false, single = false) {\n  parser.sp();\n  if (!parser.matchString('=')) {\n    if (required) parser.error(`Missing required directive arguments`);\n    return;\n  }\n  parser.sp();\n\n  const quote = parser.matchString('\"') || parser.matchString(\"'\");\n  const spread = parser.spreadArgs;\n  parser.spreadArgs = true;\n  parser.inUnquotedAttribute = !quote;\n  const expr = single\n    ? readExpressionOrReference(parser, [quote || ' ', '/', '>'])\n    : { m: readExpressionList(parser), t: ARRAY_LITERAL };\n  parser.inUnquotedAttribute = false;\n  parser.spreadArgs = spread;\n\n  if (quote) {\n    parser.sp();\n    if (parser.matchString(quote) !== quote) parser.error(`Expected matching quote '${quote}'`);\n  }\n\n  if (single) {\n    const interpolator = { t: INTERPOLATOR };\n    refineExpression(expr, interpolator);\n    attribute.f = [interpolator];\n  } else {\n    attribute.f = flattenExpression(expr);\n  }\n}\n","import { REFERENCE, BRACKETED, MEMBER, REFINEMENT } from 'config/types';\nimport flattenExpression from './flattenExpression';\n\nexport default function refineExpression(expression, mustache) {\n  let referenceExpression;\n\n  if (expression) {\n    while (expression.t === BRACKETED && expression.x) {\n      expression = expression.x;\n    }\n\n    if (expression.t === REFERENCE) {\n      const n = expression.n;\n      if (!~n.indexOf('@context')) {\n        mustache.r = expression.n;\n      } else {\n        mustache.x = flattenExpression(expression);\n      }\n    } else {\n      if ((referenceExpression = getReferenceExpression(expression))) {\n        mustache.rx = referenceExpression;\n      } else {\n        mustache.x = flattenExpression(expression);\n      }\n    }\n\n    return mustache;\n  }\n}\n\n// TODO refactor this! it's bewildering\nfunction getReferenceExpression(expression) {\n  const members = [];\n  let refinement;\n\n  while (expression.t === MEMBER && expression.r.t === REFINEMENT) {\n    refinement = expression.r;\n\n    if (refinement.x) {\n      if (refinement.x.t === REFERENCE) {\n        members.unshift(refinement.x);\n      } else {\n        members.unshift(flattenExpression(refinement.x));\n      }\n    } else {\n      members.unshift(refinement.n);\n    }\n\n    expression = expression.x;\n  }\n\n  if (expression.t !== REFERENCE) {\n    return null;\n  }\n\n  return {\n    r: expression.n,\n    m: members\n  };\n}\n","import {\n  REFERENCE,\n  BOOLEAN_LITERAL,\n  GLOBAL,\n  NUMBER_LITERAL,\n  REGEXP_LITERAL,\n  STRING_LITERAL,\n  ARRAY_LITERAL,\n  OBJECT_LITERAL,\n  KEY_VALUE_PAIR,\n  PREFIX_OPERATOR,\n  INFIX_OPERATOR,\n  INVOCATION,\n  BRACKETED,\n  MEMBER,\n  REFINEMENT,\n  CONDITIONAL\n} from 'config/types';\nimport { isObject, isString } from 'utils/is';\n\nexport default function flattenExpression(expression) {\n  let refs;\n  let count = 0;\n\n  extractRefs(expression, (refs = []));\n  const stringified = stringify(expression);\n\n  return {\n    r: refs,\n    s: getVars(stringified)\n  };\n\n  function getVars(expr) {\n    const vars = [];\n    for (let i = count - 1; i >= 0; i--) {\n      vars.push(`x$${i}`);\n    }\n    return vars.length ? `(function(){var ${vars.join(',')};return(${expr});})()` : expr;\n  }\n\n  function stringify(node) {\n    if (isString(node)) {\n      return node;\n    }\n\n    switch (node.t) {\n      case BOOLEAN_LITERAL:\n      case GLOBAL:\n      case NUMBER_LITERAL:\n      case REGEXP_LITERAL:\n        return node.v;\n\n      case STRING_LITERAL:\n        return JSON.stringify(String(node.v));\n\n      case ARRAY_LITERAL:\n        if (node.m && hasSpread(node.m)) {\n          return `[].concat(${makeSpread(node.m, '[', ']', stringify)})`;\n        } else {\n          return '[' + (node.m ? node.m.map(stringify).join(',') : '') + ']';\n        }\n\n      case OBJECT_LITERAL:\n        if (node.m && hasSpread(node.m)) {\n          return `Object.assign({},${makeSpread(node.m, '{', '}', stringifyPair)})`;\n        } else {\n          return '{' + (node.m ? node.m.map(n => `${n.k}:${stringify(n.v)}`).join(',') : '') + '}';\n        }\n\n      case PREFIX_OPERATOR:\n        return (node.s === 'typeof' ? 'typeof ' : node.s) + stringify(node.o);\n\n      case INFIX_OPERATOR:\n        return (\n          stringify(node.o[0]) +\n          (node.s.substr(0, 2) === 'in' ? ' ' + node.s + ' ' : node.s) +\n          stringify(node.o[1])\n        );\n\n      case INVOCATION:\n        if (node.o && hasSpread(node.o)) {\n          const id = count++;\n          return `(x$${id}=${stringify(node.x)}).apply(x$${id},${stringify({\n            t: ARRAY_LITERAL,\n            m: node.o\n          })})`;\n        } else {\n          return stringify(node.x) + '(' + (node.o ? node.o.map(stringify).join(',') : '') + ')';\n        }\n\n      case BRACKETED:\n        return '(' + stringify(node.x) + ')';\n\n      case MEMBER:\n        return stringify(node.x) + stringify(node.r);\n\n      case REFINEMENT:\n        return node.n ? '.' + node.n : '[' + stringify(node.x) + ']';\n\n      case CONDITIONAL:\n        return stringify(node.o[0]) + '?' + stringify(node.o[1]) + ':' + stringify(node.o[2]);\n\n      case REFERENCE:\n        return '_' + refs.indexOf(node.n);\n\n      default:\n        throw new Error('Expected legal JavaScript');\n    }\n  }\n\n  function stringifyPair(node) {\n    return node.p ? stringify(node.k) : `${node.k}:${stringify(node.v)}`;\n  }\n\n  function makeSpread(list, open, close, fn) {\n    const out = list.reduce(\n      (a, c) => {\n        if (c.p) {\n          a.str += `${a.open ? close + ',' : a.str.length ? ',' : ''}${fn(c)}`;\n        } else {\n          a.str += `${!a.str.length ? open : !a.open ? ',' + open : ','}${fn(c)}`;\n        }\n        a.open = !c.p;\n        return a;\n      },\n      { open: false, str: '' }\n    );\n    if (out.open) out.str += close;\n    return out.str;\n  }\n}\n\nfunction hasSpread(list) {\n  for (let i = 0; i < list.length; i++) {\n    if (list[i].p) return true;\n  }\n\n  return false;\n}\n\n// TODO maybe refactor this?\nfunction extractRefs(node, refs) {\n  if (node.t === REFERENCE && isString(node.n)) {\n    if (!~refs.indexOf(node.n)) {\n      refs.unshift(node.n);\n    }\n  }\n\n  const list = node.o || node.m;\n  if (list) {\n    if (isObject(list)) {\n      extractRefs(list, refs);\n    } else {\n      let i = list.length;\n      while (i--) {\n        extractRefs(list[i], refs);\n      }\n    }\n  }\n\n  if (node.k && node.t === KEY_VALUE_PAIR && !isString(node.k)) {\n    extractRefs(node.k, refs);\n  }\n\n  if (node.x) {\n    extractRefs(node.x, refs);\n  }\n\n  if (node.r) {\n    extractRefs(node.r, refs);\n  }\n\n  if (node.v) {\n    extractRefs(node.v, refs);\n  }\n}\n","import { REFERENCE } from 'config/types';\nimport readExpression from './readExpression';\nimport readReference from './expressions/primary/readReference';\n\nexport default function readExpressionOrReference(parser, expectedFollowers) {\n  const start = parser.pos;\n  const expression = readExpression(parser);\n\n  if (!expression) {\n    // valid reference but invalid expression e.g. `{{new}}`?\n    const ref = parser.matchPattern(/^(\\w+)/);\n    if (ref) {\n      return {\n        t: REFERENCE,\n        n: ref\n      };\n    }\n\n    return null;\n  }\n\n  for (let i = 0; i < expectedFollowers.length; i += 1) {\n    if (parser.remaining().substr(0, expectedFollowers[i].length) === expectedFollowers[i]) {\n      return expression;\n    }\n  }\n\n  parser.pos = start;\n  return readReference(parser);\n}\n","import { expectedExpression } from './errors';\nimport readExpression from '../../readExpression';\nimport { spreadPattern } from './patterns';\n\nexport default function readExpressionList(parser, spread) {\n  let isSpread;\n  const expressions = [];\n\n  const pos = parser.pos;\n\n  do {\n    parser.sp();\n\n    if (spread) {\n      isSpread = parser.matchPattern(spreadPattern);\n    }\n\n    const expr = readExpression(parser);\n\n    if (expr === null && expressions.length) {\n      parser.error(expectedExpression);\n    } else if (expr === null) {\n      parser.pos = pos;\n      return null;\n    }\n\n    if (isSpread) {\n      expr.p = true;\n    }\n\n    expressions.push(expr);\n\n    parser.sp();\n  } while (parser.matchString(','));\n\n  return expressions;\n}\n","import readConditional from './expressions/readConditional';\nimport readReference from './expressions/primary/readReference';\n\nexport default function readExpression(parser) {\n  // if eval is false, no expressions\n  if (parser.allowExpressions === false) {\n    const ref = readReference(parser);\n    parser.sp();\n    return ref;\n  }\n\n  // The conditional operator is the lowest precedence operator (except yield,\n  // assignment operators, and commas, none of which are supported), so we\n  // start there. If it doesn't match, it 'falls through' to progressively\n  // higher precedence operators, until it eventually matches (or fails to\n  // match) a 'primary' - a literal or a reference. This way, the abstract syntax\n  // tree has everything in its proper place, i.e. 2 + 3 * 4 === 14, not 20.\n  return readConditional(parser);\n}\n","import { CONDITIONAL } from 'config/types';\nimport readLogicalOr from './readLogicalOr';\nimport { expectedExpression } from './shared/errors';\nimport readExpression from '../readExpression';\n\n// The conditional operator is the lowest precedence operator, so we start here\nexport default function getConditional(parser) {\n  const expression = readLogicalOr(parser);\n  if (!expression) {\n    return null;\n  }\n\n  const start = parser.pos;\n\n  parser.sp();\n\n  if (!parser.matchString('?')) {\n    parser.pos = start;\n    return expression;\n  }\n\n  parser.sp();\n\n  const ifTrue = readExpression(parser);\n  if (!ifTrue) {\n    parser.error(expectedExpression);\n  }\n\n  parser.sp();\n\n  if (!parser.matchString(':')) {\n    parser.error('Expected \":\"');\n  }\n\n  parser.sp();\n\n  const ifFalse = readExpression(parser);\n  if (!ifFalse) {\n    parser.error(expectedExpression);\n  }\n\n  return {\n    t: CONDITIONAL,\n    o: [expression, ifTrue, ifFalse]\n  };\n}\n","import { INFIX_OPERATOR } from 'config/types';\nimport readTypeof from './readTypeof';\n\nlet readLogicalOr;\n\nconst makeInfixSequenceMatcher = function(symbol, fallthrough) {\n  return function(parser) {\n    // > and / have to be quoted\n    if (parser.inUnquotedAttribute && (symbol === '>' || symbol === '/'))\n      return fallthrough(parser);\n\n    let start, left, right;\n\n    left = fallthrough(parser);\n    if (!left) {\n      return null;\n    }\n\n    // Loop to handle left-recursion in a case like `a * b * c` and produce\n    // left association, i.e. `(a * b) * c`.  The matcher can't call itself\n    // to parse `left` because that would be infinite regress.\n    while (true) {\n      start = parser.pos;\n\n      parser.sp();\n\n      if (!parser.matchString(symbol)) {\n        parser.pos = start;\n        return left;\n      }\n\n      // special case - in operator must not be followed by [a-zA-Z_$0-9]\n      if (symbol === 'in' && /[a-zA-Z_$0-9]/.test(parser.remaining().charAt(0))) {\n        parser.pos = start;\n        return left;\n      }\n\n      parser.sp();\n\n      // right operand must also consist of only higher-precedence operators\n      right = fallthrough(parser);\n      if (!right) {\n        parser.pos = start;\n        return left;\n      }\n\n      left = {\n        t: INFIX_OPERATOR,\n        s: symbol,\n        o: [left, right]\n      };\n\n      // Loop back around.  If we don't see another occurrence of the symbol,\n      // we'll return left.\n    }\n  };\n};\n\n// create all infix sequence matchers, and return readLogicalOr\n(function() {\n  let i, len, matcher, fallthrough;\n\n  // All the infix operators on order of precedence (source: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence)\n  // Each sequence matcher will initially fall through to its higher precedence\n  // neighbour, and only attempt to match if one of the higher precedence operators\n  // (or, ultimately, a literal, reference, or bracketed expression) already matched\n  const infixOperators = '* / % + - << >> >>> < <= > >= in instanceof == != === !== & ^ | && ||'.split(\n    ' '\n  );\n\n  // A typeof operator is higher precedence than multiplication\n  fallthrough = readTypeof;\n  for (i = 0, len = infixOperators.length; i < len; i += 1) {\n    matcher = makeInfixSequenceMatcher(infixOperators[i], fallthrough);\n    fallthrough = matcher;\n  }\n\n  // Logical OR is the fallthrough for the conditional matcher\n  readLogicalOr = fallthrough;\n})();\n\nexport default readLogicalOr;\n","import { PREFIX_OPERATOR } from 'config/types';\nimport { expectedExpression } from './shared/errors';\nimport readMemberOrInvocation from './readMemberOrInvocation';\nimport readExpression from '../readExpression';\n\nlet readTypeOf;\n\nconst makePrefixSequenceMatcher = function(symbol, fallthrough) {\n  return function(parser) {\n    let expression;\n\n    if ((expression = fallthrough(parser))) {\n      return expression;\n    }\n\n    if (!parser.matchString(symbol)) {\n      return null;\n    }\n\n    parser.sp();\n\n    expression = readExpression(parser);\n    if (!expression) {\n      parser.error(expectedExpression);\n    }\n\n    return {\n      s: symbol,\n      o: expression,\n      t: PREFIX_OPERATOR\n    };\n  };\n};\n\n// create all prefix sequence matchers, return readTypeOf\n(function() {\n  let i, len, matcher, fallthrough;\n\n  const prefixOperators = '! ~ + - typeof'.split(' ');\n\n  fallthrough = readMemberOrInvocation;\n  for (i = 0, len = prefixOperators.length; i < len; i += 1) {\n    matcher = makePrefixSequenceMatcher(prefixOperators[i], fallthrough);\n    fallthrough = matcher;\n  }\n\n  // typeof operator is higher precedence than multiplication, so provides the\n  // fallthrough for the multiplication sequence matcher we're about to create\n  // (we're skipping void and delete)\n  readTypeOf = fallthrough;\n})();\n\nexport default readTypeOf;\n","import { MEMBER, INVOCATION } from 'config/types';\nimport readPrimary from './readPrimary';\nimport readExpressionList from './shared/readExpressionList';\nimport readRefinement from './shared/readRefinement';\nimport { expectedParen } from './shared/errors';\n\nexport default function(parser) {\n  let expression = readPrimary(parser);\n\n  if (!expression) return null;\n\n  while (expression) {\n    const refinement = readRefinement(parser);\n    if (refinement) {\n      expression = {\n        t: MEMBER,\n        x: expression,\n        r: refinement\n      };\n    } else if (parser.matchString('(')) {\n      parser.sp();\n      const expressionList = readExpressionList(parser, true);\n\n      parser.sp();\n\n      if (!parser.matchString(')')) {\n        parser.error(expectedParen);\n      }\n\n      expression = {\n        t: INVOCATION,\n        x: expression\n      };\n\n      if (expressionList) expression.o = expressionList;\n    } else {\n      break;\n    }\n  }\n\n  return expression;\n}\n","import { REFINEMENT } from 'config/types';\nimport { expectedExpression } from './errors';\nimport { name as namePattern } from './patterns';\nimport readExpression from '../../readExpression';\n\nexport default function readRefinement(parser) {\n  // some things call for strict refinement (partial names), meaning no space between reference and refinement\n  if (!parser.strictRefinement) {\n    parser.sp();\n  }\n\n  // \".\" name\n  if (parser.matchString('.')) {\n    parser.sp();\n\n    const name = parser.matchPattern(namePattern);\n    if (name) {\n      return {\n        t: REFINEMENT,\n        n: name\n      };\n    }\n\n    parser.error('Expected a property name');\n  }\n\n  // \"[\" expression \"]\"\n  if (parser.matchString('[')) {\n    parser.sp();\n\n    const expr = readExpression(parser);\n    if (!expr) parser.error(expectedExpression);\n\n    parser.sp();\n\n    if (!parser.matchString(']')) parser.error(`Expected ']'`);\n\n    return {\n      t: REFINEMENT,\n      x: expr\n    };\n  }\n\n  return null;\n}\n","import readLiteral from './primary/readLiteral';\nimport readReference from './primary/readReference';\nimport readBracketedExpression from './primary/readBracketedExpression';\n\nexport default function(parser) {\n  return readLiteral(parser) || readReference(parser) || readBracketedExpression(parser);\n}\n","import { BRACKETED } from 'src/config/types';\nimport { expectedExpression, expectedParen } from '../shared/errors';\nimport readExpression from '../../readExpression';\n\nexport default function readBracketedExpression(parser) {\n  if (!parser.matchString('(')) return null;\n\n  parser.sp();\n\n  const expr = readExpression(parser);\n\n  if (!expr) parser.error(expectedExpression);\n\n  parser.sp();\n\n  if (!parser.matchString(')')) parser.error(expectedParen);\n\n  return {\n    t: BRACKETED,\n    x: expr\n  };\n}\n","import { BRACKETED, GLOBAL, REFERENCE } from 'src/config/types';\nimport { normalise } from 'src/shared/keypaths';\nimport { legalReference, relaxedName } from '../shared/patterns';\n\n// if a reference is a browser global, we don't deference it later, so it needs special treatment\nconst globals = /^(?:Array|console|Date|RegExp|decodeURIComponent|decodeURI|encodeURIComponent|encodeURI|isFinite|isNaN|parseFloat|parseInt|JSON|Math|NaN|undefined|null|Object|Number|String|Boolean)\\b/;\n\n// keywords are not valid references, with the exception of `this`\nconst keywords = /^(?:break|case|catch|continue|debugger|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|var|void|while|with)$/;\n\nconst prefixPattern = /^(?:\\@\\.|\\@|~\\/|(?:\\^\\^\\/(?:\\^\\^\\/)*(?:\\.\\.\\/)*)|(?:\\.\\.\\/)+|\\.\\/(?:\\.\\.\\/)*|\\.)/;\nconst specials = /^(key|index|keypath|rootpath|this|global|shared|context|event|node|local|style|helpers|last)/;\n\nexport default function readReference(parser) {\n  let prefix, name, global, reference, lastDotIndex;\n\n  const startPos = parser.pos;\n\n  prefix = parser.matchPattern(prefixPattern) || '';\n  name =\n    (!prefix && parser.relaxedNames && parser.matchPattern(relaxedName)) ||\n    parser.matchPattern(legalReference);\n  const actual = prefix.length + ((name && name.length) || 0);\n\n  if (prefix === '@.') {\n    prefix = '@';\n    if (name) name = 'this.' + name;\n    else name = 'this';\n  }\n\n  if (!name && prefix) {\n    name = prefix;\n    prefix = '';\n  }\n\n  if (!name) {\n    return null;\n  }\n\n  if (prefix === '@') {\n    if (!specials.test(name)) {\n      parser.error(`Unrecognized special reference @${name}`);\n    } else if ((~name.indexOf('event') || ~name.indexOf('node')) && !parser.inEvent) {\n      parser.error(`@event and @node are only valid references within an event directive`);\n    } else if (~name.indexOf('context')) {\n      parser.pos = parser.pos - (name.length - 7);\n      return {\n        t: BRACKETED,\n        x: {\n          t: REFERENCE,\n          n: '@context'\n        }\n      };\n    }\n  }\n\n  // bug out if it's a keyword (exception for ancestor/restricted refs - see https://github.com/ractivejs/ractive/issues/1497)\n  if (!prefix && !parser.relaxedNames && keywords.test(name)) {\n    parser.pos = startPos;\n    return null;\n  }\n\n  // if this is a browser global, stop here\n  if (!prefix && globals.test(name)) {\n    global = globals.exec(name)[0];\n    parser.pos = startPos + global.length;\n\n    return {\n      t: GLOBAL,\n      v: global\n    };\n  }\n\n  reference = (prefix || '') + normalise(name);\n\n  if (parser.matchString('(')) {\n    // if this is a method invocation (as opposed to a function) we need\n    // to strip the method name from the reference combo, else the context\n    // will be wrong\n    // but only if the reference was actually a member and not a refinement\n    lastDotIndex = reference.lastIndexOf('.');\n    if (lastDotIndex !== -1 && name[name.length - 1] !== ']') {\n      if (lastDotIndex === 0) {\n        reference = '.';\n        parser.pos = startPos;\n      } else {\n        const refLength = reference.length;\n        reference = reference.substr(0, lastDotIndex);\n        parser.pos = startPos + (actual - (refLength - lastDotIndex));\n      }\n    } else {\n      parser.pos -= 1;\n    }\n  }\n\n  return {\n    t: REFERENCE,\n    n: reference.replace(/^this\\./, './').replace(/^this$/, '.')\n  };\n}\n","import readNumberLiteral from './literal/readNumberLiteral';\nimport readBooleanLiteral from './literal/readBooleanLiteral';\nimport readStringLiteral from './literal/readStringLiteral';\nimport readTemplateStringLiteral from './literal/readTemplateStringLiteral';\nimport readObjectLiteral from './literal/readObjectLiteral';\nimport readArrayLiteral from './literal/readArrayLiteral';\nimport readRegexpLiteral from './literal/readRegexpLiteral';\n\nexport default function readLiteral(parser) {\n  return (\n    readNumberLiteral(parser) ||\n    readBooleanLiteral(parser) ||\n    readStringLiteral(parser) ||\n    readTemplateStringLiteral(parser) ||\n    readObjectLiteral(parser) ||\n    readArrayLiteral(parser) ||\n    readRegexpLiteral(parser)\n  );\n}\n","import { ARRAY_LITERAL } from 'src/config/types';\nimport readExpressionList from '../../shared/readExpressionList';\n\nexport default function(parser) {\n  const start = parser.pos;\n\n  // allow whitespace before '['\n  parser.sp();\n\n  if (!parser.matchString('[')) {\n    parser.pos = start;\n    return null;\n  }\n\n  const expressionList = readExpressionList(parser, true);\n\n  if (!parser.matchString(']')) {\n    parser.pos = start;\n    return null;\n  }\n\n  return {\n    t: ARRAY_LITERAL,\n    m: expressionList\n  };\n}\n","import { OBJECT_LITERAL } from '../../../../../config/types';\nimport readKeyValuePairs from './objectLiteral/keyValuePairs';\n\nexport default function(parser) {\n  const start = parser.pos;\n\n  // allow whitespace\n  parser.sp();\n\n  if (!parser.matchString('{')) {\n    parser.pos = start;\n    return null;\n  }\n\n  const keyValuePairs = readKeyValuePairs(parser);\n\n  // allow whitespace between final value and '}'\n  parser.sp();\n\n  if (!parser.matchString('}')) {\n    parser.pos = start;\n    return null;\n  }\n\n  return {\n    t: OBJECT_LITERAL,\n    m: keyValuePairs\n  };\n}\n","import getKeyValuePair from './keyValuePair';\n\nexport default function readKeyValuePairs(parser) {\n  const start = parser.pos;\n\n  const pair = getKeyValuePair(parser);\n  if (pair === null) {\n    return null;\n  }\n\n  const pairs = [pair];\n\n  if (parser.matchString(',')) {\n    const keyValuePairs = readKeyValuePairs(parser);\n\n    if (!keyValuePairs) {\n      parser.pos = start;\n      return null;\n    }\n\n    return pairs.concat(keyValuePairs);\n  }\n\n  return pairs;\n}\n","import { KEY_VALUE_PAIR, REFERENCE } from 'src/config/types';\nimport readKey from '../../../shared/readKey';\nimport readExpression from '../../../../readExpression';\nimport { name as namePattern, spreadPattern } from '../../../shared/patterns';\n\nexport default function readKeyValuePair(parser) {\n  let spread;\n  const start = parser.pos;\n\n  // allow whitespace between '{' and key\n  parser.sp();\n\n  const refKey = parser.nextChar() !== \"'\" && parser.nextChar() !== '\"';\n  if (refKey) spread = parser.matchPattern(spreadPattern);\n\n  const key = spread ? readExpression(parser) : readKey(parser);\n  if (key === null) {\n    parser.pos = start;\n    return null;\n  }\n\n  // allow whitespace between key and ':'\n  parser.sp();\n\n  // es2015 shorthand property\n  if (refKey && (parser.nextChar() === ',' || parser.nextChar() === '}')) {\n    if (!spread && !namePattern.test(key)) {\n      parser.error(`Expected a valid reference, but found '${key}' instead.`);\n    }\n\n    const pair = {\n      t: KEY_VALUE_PAIR,\n      k: key,\n      v: {\n        t: REFERENCE,\n        n: key\n      }\n    };\n\n    if (spread) {\n      pair.p = true;\n    }\n\n    return pair;\n  }\n\n  // next character must be ':'\n  if (!parser.matchString(':')) {\n    parser.pos = start;\n    return null;\n  }\n\n  // allow whitespace between ':' and value\n  parser.sp();\n\n  // next expression must be a, well... expression\n  const value = readExpression(parser);\n  if (value === null) {\n    parser.pos = start;\n    return null;\n  }\n\n  return {\n    t: KEY_VALUE_PAIR,\n    k: key,\n    v: value\n  };\n}\n","import readStringLiteral from '../primary/literal/readStringLiteral';\nimport readNumberLiteral from '../primary/literal/readNumberLiteral';\nimport { name as namePattern } from './patterns';\n\nconst identifier = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/;\n\n// http://mathiasbynens.be/notes/javascript-properties\n// can be any name, string literal, or number literal\nexport default function readKey(parser) {\n  let token;\n\n  if ((token = readStringLiteral(parser))) {\n    return identifier.test(token.v) ? token.v : '\"' + token.v.replace(/\"/g, '\\\\\"') + '\"';\n  }\n\n  if ((token = readNumberLiteral(parser))) {\n    return token.v;\n  }\n\n  if ((token = parser.matchPattern(namePattern))) {\n    return token;\n  }\n\n  return null;\n}\n","export const name = /^[a-zA-Z_$][a-zA-Z_$0-9]*/;\nexport const spreadPattern = /^\\s*\\.{3}/;\nexport const legalReference = /^(?:[a-zA-Z$_0-9]|\\\\\\.)+(?:(?:\\.(?:[a-zA-Z$_0-9]|\\\\\\.)+)|(?:\\[[0-9]+\\]))*/;\nexport const relaxedName = /^[a-zA-Z_$][-\\/a-zA-Z_$0-9]*(?:\\.(?:[a-zA-Z_$][-\\/a-zA-Z_$0-9]*))*/;\n","import readExpression from '../../../readExpression';\nimport { STRING_LITERAL, BRACKETED, INFIX_OPERATOR } from '../../../../../config/types';\nimport {\n  escapeSequencePattern,\n  lineContinuationPattern\n} from './stringLiteral/makeQuotedStringMatcher';\n\n// Match one or more characters until: \", ', or \\\nconst stringMiddlePattern = /^[^`\"\\\\\\$]+?(?:(?=[`\"\\\\\\$]))/;\n\nconst escapes = /[\\r\\n\\t\\b\\f]/g;\nfunction getString(literal) {\n  return JSON.parse(`\"${literal.replace(escapes, escapeChar)}\"`);\n}\n\nfunction escapeChar(c) {\n  switch (c) {\n    case '\\n':\n      return '\\\\n';\n    case '\\r':\n      return '\\\\r';\n    case '\\t':\n      return '\\\\t';\n    case '\\b':\n      return '\\\\b';\n    case '\\f':\n      return '\\\\f';\n  }\n}\n\nexport default function readTemplateStringLiteral(parser) {\n  if (!parser.matchString('`')) return null;\n\n  let literal = '';\n  let done = false;\n  let next;\n  const parts = [];\n\n  while (!done) {\n    next =\n      parser.matchPattern(stringMiddlePattern) ||\n      parser.matchPattern(escapeSequencePattern) ||\n      parser.matchString('$') ||\n      parser.matchString('\"');\n    if (next) {\n      if (next === `\"`) {\n        literal += `\\\\\"`;\n      } else if (next === '\\\\`') {\n        literal += '`';\n      } else if (next === '$') {\n        if (parser.matchString('{')) {\n          parts.push({ t: STRING_LITERAL, v: getString(literal) });\n          literal = '';\n\n          parser.sp();\n          const expr = readExpression(parser);\n\n          if (!expr) parser.error('Expected valid expression');\n\n          parts.push({ t: BRACKETED, x: expr });\n\n          parser.sp();\n          if (!parser.matchString('}'))\n            parser.error(`Expected closing '}' after interpolated expression`);\n        } else {\n          literal += '$';\n        }\n      } else {\n        literal += next;\n      }\n    } else {\n      next = parser.matchPattern(lineContinuationPattern);\n      if (next) {\n        // convert \\(newline-like) into a \\u escape, which is allowed in JSON\n        literal += '\\\\u' + ('000' + next.charCodeAt(1).toString(16)).slice(-4);\n      } else {\n        done = true;\n      }\n    }\n  }\n\n  if (literal.length) parts.push({ t: STRING_LITERAL, v: getString(literal) });\n\n  if (!parser.matchString('`')) parser.error(\"Expected closing '`'\");\n\n  if (parts.length === 1) {\n    return parts[0];\n  } else {\n    let result = parts.pop();\n    let part;\n\n    while ((part = parts.pop())) {\n      result = {\n        t: INFIX_OPERATOR,\n        s: '+',\n        o: [part, result]\n      };\n    }\n\n    return {\n      t: BRACKETED,\n      x: result\n    };\n  }\n}\n","import { STRING_LITERAL } from '../../../../../config/types';\nimport makeQuotedStringMatcher from './stringLiteral/makeQuotedStringMatcher';\n\nconst singleMatcher = makeQuotedStringMatcher(`\"`);\nconst doubleMatcher = makeQuotedStringMatcher(`'`);\n\nexport default function(parser) {\n  const start = parser.pos;\n  const quote = parser.matchString(`'`) || parser.matchString(`\"`);\n\n  if (quote) {\n    const string = (quote === `'` ? singleMatcher : doubleMatcher)(parser);\n\n    if (!parser.matchString(quote)) {\n      parser.pos = start;\n      return null;\n    }\n\n    return {\n      t: STRING_LITERAL,\n      v: string\n    };\n  }\n\n  return null;\n}\n","// Match one or more characters until: \", ', \\, or EOL/EOF.\n// EOL/EOF is written as (?!.) (meaning there's no non-newline char next).\nconst stringMiddlePattern = /^(?=.)[^\"'\\\\]+?(?:(?!.)|(?=[\"'\\\\]))/;\n\n// Match one escape sequence, including the backslash.\nexport const escapeSequencePattern = /^\\\\(?:[`'\"\\\\bfnrt]|0(?![0-9])|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|(?=.)[^ux0-9])/;\n\n// Match one ES5 line continuation (backslash + line terminator).\nexport const lineContinuationPattern = /^\\\\(?:\\r\\n|[\\u000A\\u000D\\u2028\\u2029])/;\n\n// Helper for defining getDoubleQuotedString and getSingleQuotedString.\nexport default function(okQuote) {\n  return function(parser) {\n    let literal = '\"';\n    let done = false;\n    let next;\n\n    while (!done) {\n      next =\n        parser.matchPattern(stringMiddlePattern) ||\n        parser.matchPattern(escapeSequencePattern) ||\n        parser.matchString(okQuote);\n      if (next) {\n        if (next === `\"`) {\n          literal += `\\\\\"`;\n        } else if (next === `\\\\'`) {\n          literal += `'`;\n        } else {\n          literal += next;\n        }\n      } else {\n        next = parser.matchPattern(lineContinuationPattern);\n        if (next) {\n          // convert \\(newline-like) into a \\u escape, which is allowed in JSON\n          literal += '\\\\u' + ('000' + next.charCodeAt(1).toString(16)).slice(-4);\n        } else {\n          done = true;\n        }\n      }\n    }\n\n    literal += '\"';\n\n    // use JSON.parse to interpret escapes\n    return JSON.parse(literal);\n  };\n}\n","import { BOOLEAN_LITERAL } from '../../../../../config/types';\n\nexport default function readBooleanLiteral(parser) {\n  const remaining = parser.remaining();\n\n  if (remaining.substr(0, 4) === 'true') {\n    parser.pos += 4;\n    return {\n      t: BOOLEAN_LITERAL,\n      v: 'true'\n    };\n  }\n\n  if (remaining.substr(0, 5) === 'false') {\n    parser.pos += 5;\n    return {\n      t: BOOLEAN_LITERAL,\n      v: 'false'\n    };\n  }\n\n  return null;\n}\n","import { NUMBER_LITERAL } from '../../../../../config/types';\n\n// bulletproof number regex from https://gist.github.com/Rich-Harris/7544330\nconst numberPattern = /^(?:[+-]?)0*(?:(?:(?:[1-9]\\d*)?\\.\\d+)|(?:(?:0|[1-9]\\d*)\\.)|(?:0|[1-9]\\d*))(?:[eE][+-]?\\d+)?/;\n\nexport default function readNumberLiteral(parser) {\n  let result;\n\n  if ((result = parser.matchPattern(numberPattern))) {\n    return {\n      t: NUMBER_LITERAL,\n      v: result\n    };\n  }\n\n  return null;\n}\n","export const expectedExpression = 'Expected a JavaScript expression';\nexport const expectedParen = 'Expected closing paren';\n","import { keys } from 'utils/object';\nimport { isFunction } from 'utils/is';\n\n// https://github.com/kangax/html-minifier/issues/63#issuecomment-37763316\n//export const booleanAttributes = /^(allowFullscreen|async|autofocus|autoplay|checked|compact|controls|declare|default|defaultChecked|defaultMuted|defaultSelected|defer|disabled|enabled|formNoValidate|hidden|indeterminate|inert|isMap|itemScope|loop|multiple|muted|noHref|noResize|noShade|noValidate|noWrap|open|pauseOnExit|readOnly|required|reversed|scoped|seamless|selected|sortable|translate|trueSpeed|typeMustMatch|visible)$/i;\nexport const booleanAttributes = {\n  allowfullscreen: 1,\n  async: 1,\n  autofocus: 1,\n  autoplay: 1,\n  checked: 1,\n  compact: 1,\n  controls: 1,\n  declare: 1,\n  default: 1,\n  defaultchecked: 1,\n  defaultmuted: 1,\n  defaultselected: 1,\n  defer: 1,\n  disabled: 1,\n  enabled: 1,\n  formnovalidate: 1,\n  hidden: 1,\n  indeterminate: 1,\n  inert: 1,\n  ismap: 1,\n  itemscope: 1,\n  loop: 1,\n  multiple: 1,\n  muted: 1,\n  nohref: 1,\n  noresize: 1,\n  noshade: 1,\n  novalidate: 1,\n  nowrap: 1,\n  open: 1,\n  pauseonexit: 1,\n  readonly: 1,\n  required: 1,\n  reversed: 1,\n  scoped: 1,\n  seamless: 1,\n  selected: 1,\n  sortable: 1,\n  translate: 1,\n  truespeed: 1,\n  typemustmatch: 1,\n  visible: 1\n};\nexport const voidElements = {\n  area: 1,\n  base: 1,\n  br: 1,\n  col: 1,\n  command: 1,\n  doctype: 1,\n  embed: 1,\n  hr: 1,\n  img: 1,\n  input: 1,\n  keygen: 1,\n  link: 1,\n  meta: 1,\n  param: 1,\n  source: 1,\n  track: 1,\n  wbr: 1\n};\n\nconst htmlEntities = {\n  quot: 34,\n  amp: 38,\n  apos: 39,\n  lt: 60,\n  gt: 62,\n  nbsp: 160,\n  iexcl: 161,\n  cent: 162,\n  pound: 163,\n  curren: 164,\n  yen: 165,\n  brvbar: 166,\n  sect: 167,\n  uml: 168,\n  copy: 169,\n  ordf: 170,\n  laquo: 171,\n  not: 172,\n  shy: 173,\n  reg: 174,\n  macr: 175,\n  deg: 176,\n  plusmn: 177,\n  sup2: 178,\n  sup3: 179,\n  acute: 180,\n  micro: 181,\n  para: 182,\n  middot: 183,\n  cedil: 184,\n  sup1: 185,\n  ordm: 186,\n  raquo: 187,\n  frac14: 188,\n  frac12: 189,\n  frac34: 190,\n  iquest: 191,\n  Agrave: 192,\n  Aacute: 193,\n  Acirc: 194,\n  Atilde: 195,\n  Auml: 196,\n  Aring: 197,\n  AElig: 198,\n  Ccedil: 199,\n  Egrave: 200,\n  Eacute: 201,\n  Ecirc: 202,\n  Euml: 203,\n  Igrave: 204,\n  Iacute: 205,\n  Icirc: 206,\n  Iuml: 207,\n  ETH: 208,\n  Ntilde: 209,\n  Ograve: 210,\n  Oacute: 211,\n  Ocirc: 212,\n  Otilde: 213,\n  Ouml: 214,\n  times: 215,\n  Oslash: 216,\n  Ugrave: 217,\n  Uacute: 218,\n  Ucirc: 219,\n  Uuml: 220,\n  Yacute: 221,\n  THORN: 222,\n  szlig: 223,\n  agrave: 224,\n  aacute: 225,\n  acirc: 226,\n  atilde: 227,\n  auml: 228,\n  aring: 229,\n  aelig: 230,\n  ccedil: 231,\n  egrave: 232,\n  eacute: 233,\n  ecirc: 234,\n  euml: 235,\n  igrave: 236,\n  iacute: 237,\n  icirc: 238,\n  iuml: 239,\n  eth: 240,\n  ntilde: 241,\n  ograve: 242,\n  oacute: 243,\n  ocirc: 244,\n  otilde: 245,\n  ouml: 246,\n  divide: 247,\n  oslash: 248,\n  ugrave: 249,\n  uacute: 250,\n  ucirc: 251,\n  uuml: 252,\n  yacute: 253,\n  thorn: 254,\n  yuml: 255,\n  OElig: 338,\n  oelig: 339,\n  Scaron: 352,\n  scaron: 353,\n  Yuml: 376,\n  fnof: 402,\n  circ: 710,\n  tilde: 732,\n  Alpha: 913,\n  Beta: 914,\n  Gamma: 915,\n  Delta: 916,\n  Epsilon: 917,\n  Zeta: 918,\n  Eta: 919,\n  Theta: 920,\n  Iota: 921,\n  Kappa: 922,\n  Lambda: 923,\n  Mu: 924,\n  Nu: 925,\n  Xi: 926,\n  Omicron: 927,\n  Pi: 928,\n  Rho: 929,\n  Sigma: 931,\n  Tau: 932,\n  Upsilon: 933,\n  Phi: 934,\n  Chi: 935,\n  Psi: 936,\n  Omega: 937,\n  alpha: 945,\n  beta: 946,\n  gamma: 947,\n  delta: 948,\n  epsilon: 949,\n  zeta: 950,\n  eta: 951,\n  theta: 952,\n  iota: 953,\n  kappa: 954,\n  lambda: 955,\n  mu: 956,\n  nu: 957,\n  xi: 958,\n  omicron: 959,\n  pi: 960,\n  rho: 961,\n  sigmaf: 962,\n  sigma: 963,\n  tau: 964,\n  upsilon: 965,\n  phi: 966,\n  chi: 967,\n  psi: 968,\n  omega: 969,\n  thetasym: 977,\n  upsih: 978,\n  piv: 982,\n  ensp: 8194,\n  emsp: 8195,\n  thinsp: 8201,\n  zwnj: 8204,\n  zwj: 8205,\n  lrm: 8206,\n  rlm: 8207,\n  ndash: 8211,\n  mdash: 8212,\n  lsquo: 8216,\n  rsquo: 8217,\n  sbquo: 8218,\n  ldquo: 8220,\n  rdquo: 8221,\n  bdquo: 8222,\n  dagger: 8224,\n  Dagger: 8225,\n  bull: 8226,\n  hellip: 8230,\n  permil: 8240,\n  prime: 8242,\n  Prime: 8243,\n  lsaquo: 8249,\n  rsaquo: 8250,\n  oline: 8254,\n  frasl: 8260,\n  euro: 8364,\n  image: 8465,\n  weierp: 8472,\n  real: 8476,\n  trade: 8482,\n  alefsym: 8501,\n  larr: 8592,\n  uarr: 8593,\n  rarr: 8594,\n  darr: 8595,\n  harr: 8596,\n  crarr: 8629,\n  lArr: 8656,\n  uArr: 8657,\n  rArr: 8658,\n  dArr: 8659,\n  hArr: 8660,\n  forall: 8704,\n  part: 8706,\n  exist: 8707,\n  empty: 8709,\n  nabla: 8711,\n  isin: 8712,\n  notin: 8713,\n  ni: 8715,\n  prod: 8719,\n  sum: 8721,\n  minus: 8722,\n  lowast: 8727,\n  radic: 8730,\n  prop: 8733,\n  infin: 8734,\n  ang: 8736,\n  and: 8743,\n  or: 8744,\n  cap: 8745,\n  cup: 8746,\n  int: 8747,\n  there4: 8756,\n  sim: 8764,\n  cong: 8773,\n  asymp: 8776,\n  ne: 8800,\n  equiv: 8801,\n  le: 8804,\n  ge: 8805,\n  sub: 8834,\n  sup: 8835,\n  nsub: 8836,\n  sube: 8838,\n  supe: 8839,\n  oplus: 8853,\n  otimes: 8855,\n  perp: 8869,\n  sdot: 8901,\n  lceil: 8968,\n  rceil: 8969,\n  lfloor: 8970,\n  rfloor: 8971,\n  lang: 9001,\n  rang: 9002,\n  loz: 9674,\n  spades: 9824,\n  clubs: 9827,\n  hearts: 9829,\n  diams: 9830\n};\nconst controlCharacters = [\n  8364,\n  129,\n  8218,\n  402,\n  8222,\n  8230,\n  8224,\n  8225,\n  710,\n  8240,\n  352,\n  8249,\n  338,\n  141,\n  381,\n  143,\n  144,\n  8216,\n  8217,\n  8220,\n  8221,\n  8226,\n  8211,\n  8212,\n  732,\n  8482,\n  353,\n  8250,\n  339,\n  157,\n  382,\n  376\n];\nconst entityPattern = new RegExp(\n  '&(#?(?:x[\\\\w\\\\d]+|\\\\d+|' + keys(htmlEntities).join('|') + '));?',\n  'g'\n);\nconst codePointSupport = isFunction(String.fromCodePoint);\nconst codeToChar = codePointSupport ? String.fromCodePoint : String.fromCharCode;\n\nexport function decodeCharacterReferences(html) {\n  return html.replace(entityPattern, (match, entity) => {\n    let code;\n\n    // Handle named entities\n    if (entity[0] !== '#') {\n      code = htmlEntities[entity];\n    } else if (entity[1] === 'x') {\n      code = parseInt(entity.substring(2), 16);\n    } else {\n      code = parseInt(entity.substring(1), 10);\n    }\n\n    if (!code) {\n      return match;\n    }\n\n    return codeToChar(validateCode(code));\n  });\n}\n\nconst lessThan = /</g;\nconst greaterThan = />/g;\nconst amp = /&/g;\nconst invalid = 65533;\n\nexport function escapeHtml(str) {\n  return str\n    .replace(amp, '&amp;')\n    .replace(lessThan, '&lt;')\n    .replace(greaterThan, '&gt;');\n}\n\n// some code points are verboten. If we were inserting HTML, the browser would replace the illegal\n// code points with alternatives in some cases - since we're bypassing that mechanism, we need\n// to replace them ourselves\n//\n// Source: http://en.wikipedia.org/wiki/Character_encodings_in_HTML#Illegal_characters\n/* istanbul ignore next */\nfunction validateCode(code) {\n  if (!code) {\n    return invalid;\n  }\n\n  // line feed becomes generic whitespace\n  if (code === 10) {\n    return 32;\n  }\n\n  // ASCII range. (Why someone would use HTML entities for ASCII characters I don't know, but...)\n  if (code < 128) {\n    return code;\n  }\n\n  // code points 128-159 are dealt with leniently by browsers, but they're incorrect. We need\n  // to correct the mistake or we'll end up with missing € signs and so on\n  if (code <= 159) {\n    return controlCharacters[code - 128];\n  }\n\n  // basic multilingual plane\n  if (code < 55296) {\n    return code;\n  }\n\n  // UTF-16 surrogate halves\n  if (code <= 57343) {\n    return invalid;\n  }\n\n  // rest of the basic multilingual plane\n  if (code <= 65535) {\n    return code;\n  } else if (!codePointSupport) {\n    return invalid;\n  }\n\n  // supplementary multilingual plane 0x10000 - 0x1ffff\n  if (code >= 65536 && code <= 131071) {\n    return code;\n  }\n\n  // supplementary ideographic plane 0x20000 - 0x2ffff\n  if (code >= 131072 && code <= 196607) {\n    return code;\n  }\n\n  return invalid;\n}\n","import escapeRegExp from 'utils/escapeRegExp';\n\nconst regExpCache = {};\n\nexport default function(haystack, needles) {\n  return haystack.search(\n    regExpCache[needles.join()] ||\n      (regExpCache[needles.join()] = new RegExp(needles.map(escapeRegExp).join('|')))\n  );\n}\n","const pattern = /[-/\\\\^$*+?.()|[\\]{}]/g;\n\nexport default function escapeRegExp(str) {\n  return str.replace(pattern, '\\\\$&');\n}\n","import { REGEXP_LITERAL } from '../../../../../config/types';\n\nconst regexpPattern = /^(\\/(?:[^\\n\\r\\u2028\\u2029/\\\\[]|\\\\.|\\[(?:[^\\n\\r\\u2028\\u2029\\]\\\\]|\\\\.)*])+\\/(?:([gimuy])(?![a-z]*\\2))*(?![a-zA-Z_$0-9]))/;\n\nexport default function readNumberLiteral(parser) {\n  let result;\n\n  if ((result = parser.matchPattern(regexpPattern))) {\n    return {\n      t: REGEXP_LITERAL,\n      v: result\n    };\n  }\n\n  return null;\n}\n","const delimiterChangePattern = /^[^\\s=]+/;\nconst whitespacePattern = /^\\s+/;\n\nexport default function readDelimiterChange(parser) {\n  if (!parser.matchString('=')) {\n    return null;\n  }\n\n  const start = parser.pos;\n\n  // allow whitespace before new opening delimiter\n  parser.sp();\n\n  const opening = parser.matchPattern(delimiterChangePattern);\n  if (!opening) {\n    parser.pos = start;\n    return null;\n  }\n\n  // allow whitespace (in fact, it's necessary...)\n  if (!parser.matchPattern(whitespacePattern)) {\n    return null;\n  }\n\n  const closing = parser.matchPattern(delimiterChangePattern);\n  if (!closing) {\n    parser.pos = start;\n    return null;\n  }\n\n  // allow whitespace before closing '='\n  parser.sp();\n\n  if (!parser.matchString('=')) {\n    parser.pos = start;\n    return null;\n  }\n\n  return [opening, closing];\n}\n","export const TEXT = 1;\nexport const INTERPOLATOR = 2;\nexport const TRIPLE = 3;\nexport const SECTION = 4;\nexport const INVERTED = 5;\nexport const CLOSING = 6;\nexport const ELEMENT = 7;\nexport const PARTIAL = 8;\nexport const COMMENT = 9;\nexport const DELIMCHANGE = 10;\nexport const ANCHOR = 11;\nexport const ATTRIBUTE = 13;\nexport const CLOSING_TAG = 14;\nexport const COMPONENT = 15;\nexport const YIELDER = 16;\nexport const INLINE_PARTIAL = 17;\nexport const DOCTYPE = 18;\nexport const ALIAS = 19;\n\nexport const AWAIT = 55;\n\nexport const NUMBER_LITERAL = 20;\nexport const STRING_LITERAL = 21;\nexport const ARRAY_LITERAL = 22;\nexport const OBJECT_LITERAL = 23;\nexport const BOOLEAN_LITERAL = 24;\nexport const REGEXP_LITERAL = 25;\n\nexport const GLOBAL = 26;\nexport const KEY_VALUE_PAIR = 27;\n\nexport const REFERENCE = 30;\nexport const REFINEMENT = 31;\nexport const MEMBER = 32;\nexport const PREFIX_OPERATOR = 33;\nexport const BRACKETED = 34;\nexport const CONDITIONAL = 35;\nexport const INFIX_OPERATOR = 36;\n\nexport const INVOCATION = 40;\n\nexport const SECTION_IF = 50;\nexport const SECTION_UNLESS = 51;\nexport const SECTION_EACH = 52;\nexport const SECTION_WITH = 53;\nexport const SECTION_IF_WITH = 54;\n\nexport const ELSE = 60;\nexport const ELSEIF = 61;\nexport const THEN = 62;\nexport const CATCH = 63;\n\nexport const EVENT = 70;\nexport const DECORATOR = 71;\nexport const TRANSITION = 72;\nexport const BINDING_FLAG = 73;\nexport const DELEGATE_FLAG = 74;\n","import { warnIfDebug } from 'utils/log';\nimport { create, hasOwn } from 'utils/object';\n\nconst leadingWhitespace = /^\\s+/;\n\nconst ParseError = function(message) {\n  this.name = 'ParseError';\n  this.message = message;\n  try {\n    throw new Error(message);\n  } catch (e) {\n    this.stack = e.stack;\n  }\n};\n\nParseError.prototype = Error.prototype;\n\nconst Parser = function(str, options) {\n  let item;\n  let lineStart = 0;\n\n  this.str = str;\n  this.options = options || {};\n  this.pos = 0;\n\n  this.lines = this.str.split('\\n');\n  this.lineEnds = this.lines.map(line => {\n    const lineEnd = lineStart + line.length + 1; // +1 for the newline\n\n    lineStart = lineEnd;\n    return lineEnd;\n  }, 0);\n\n  // Custom init logic\n  if (this.init) this.init(str, options);\n\n  const items = [];\n\n  while (this.pos < this.str.length && (item = this.read())) {\n    items.push(item);\n  }\n\n  this.leftover = this.remaining();\n  this.result = this.postProcess ? this.postProcess(items, options) : items;\n};\n\nParser.prototype = {\n  read(converters) {\n    let i, item;\n\n    if (!converters) converters = this.converters;\n\n    const pos = this.pos;\n\n    const len = converters.length;\n    for (i = 0; i < len; i += 1) {\n      this.pos = pos; // reset for each attempt\n\n      if ((item = converters[i](this))) {\n        return item;\n      }\n    }\n\n    return null;\n  },\n\n  getContextMessage(pos, message) {\n    const [lineNum, columnNum] = this.getLinePos(pos);\n    if (this.options.contextLines === -1) {\n      return [lineNum, columnNum, `${message} at line ${lineNum} character ${columnNum}`];\n    }\n\n    const line = this.lines[lineNum - 1];\n\n    let contextUp = '';\n    let contextDown = '';\n    if (this.options.contextLines) {\n      const start =\n        lineNum - 1 - this.options.contextLines < 0 ? 0 : lineNum - 1 - this.options.contextLines;\n      contextUp = this.lines\n        .slice(start, lineNum - 1 - start)\n        .join('\\n')\n        .replace(/\\t/g, '  ');\n      contextDown = this.lines\n        .slice(lineNum, lineNum + this.options.contextLines)\n        .join('\\n')\n        .replace(/\\t/g, '  ');\n      if (contextUp) {\n        contextUp += '\\n';\n      }\n      if (contextDown) {\n        contextDown = '\\n' + contextDown;\n      }\n    }\n\n    let numTabs = 0;\n    const annotation =\n      contextUp +\n      line.replace(/\\t/g, (match, char) => {\n        if (char < columnNum) {\n          numTabs += 1;\n        }\n\n        return '  ';\n      }) +\n      '\\n' +\n      new Array(columnNum + numTabs).join(' ') +\n      '^----' +\n      contextDown;\n\n    return [\n      lineNum,\n      columnNum,\n      `${message} at line ${lineNum} character ${columnNum}:\\n${annotation}`\n    ];\n  },\n\n  getLinePos(char) {\n    let lineNum = 0;\n    let lineStart = 0;\n\n    while (char >= this.lineEnds[lineNum]) {\n      lineStart = this.lineEnds[lineNum];\n      lineNum += 1;\n    }\n\n    const columnNum = char - lineStart;\n    return [lineNum + 1, columnNum + 1, char]; // line/col should be one-based, not zero-based!\n  },\n\n  error(message) {\n    const [lineNum, columnNum, msg] = this.getContextMessage(this.pos, message);\n\n    const error = new ParseError(msg);\n\n    error.line = lineNum;\n    error.character = columnNum;\n    error.shortMessage = message;\n\n    throw error;\n  },\n\n  matchString(string) {\n    if (this.str.substr(this.pos, string.length) === string) {\n      this.pos += string.length;\n      return string;\n    }\n  },\n\n  matchPattern(pattern) {\n    let match;\n\n    if ((match = pattern.exec(this.remaining()))) {\n      this.pos += match[0].length;\n      return match[1] || match[0];\n    }\n  },\n\n  sp() {\n    this.matchPattern(leadingWhitespace);\n  },\n\n  remaining() {\n    return this.str.substring(this.pos);\n  },\n\n  nextChar() {\n    return this.str.charAt(this.pos);\n  },\n\n  warn(message) {\n    const msg = this.getContextMessage(this.pos, message)[2];\n\n    warnIfDebug(msg);\n  }\n};\n\nParser.extend = function(proto) {\n  const Parent = this;\n  const Child = function(str, options) {\n    Parser.call(this, str, options);\n  };\n\n  Child.prototype = create(Parent.prototype);\n\n  for (const key in proto) {\n    if (hasOwn(proto, key)) {\n      Child.prototype[key] = proto[key];\n    }\n  }\n\n  Child.extend = Parser.extend;\n  return Child;\n};\n\nexport default Parser;\n","export const TEMPLATE_VERSION = 4;\n","import { createFunction } from '../Ractive/config/runtime-parser';\nimport { create, keys } from 'utils/object';\n\nconst functions = create(null);\n\nexport default function getFunction(str, i) {\n  if (functions[str]) return functions[str];\n  return (functions[str] = createFunction(str, i));\n}\n\nexport function addFunctions(template) {\n  if (!template) return;\n\n  const exp = template.e;\n\n  if (!exp) return;\n\n  keys(exp).forEach(str => {\n    if (functions[str]) return;\n    functions[str] = exp[str];\n  });\n}\n","export function fromExpression(body, length = 0) {\n  const args = new Array(length);\n\n  while (length--) {\n    args[length] = `_${length}`;\n  }\n\n  // Functions created directly with new Function() look like this:\n  //     function anonymous (_0 /**/) { return _0*2 }\n  //\n  // With this workaround, we get a little more compact:\n  //     function (_0){return _0*2}\n  return new Function([], `return function (${args.join(',')}){return(${body});};`)();\n}\n","import ModelBase, { fireShuffleTasks, maybeBind, shuffle } from './ModelBase';\nimport { capture } from '../global/capture';\nimport { handleChange, marked, markedAll, teardown } from 'shared/methodCallers';\nimport { rebindMatch } from 'shared/rebind';\nimport resolveReference from 'src/view/resolvers/resolveReference';\nimport noop from 'utils/noop';\nimport { hasOwn } from 'utils/object';\n\n// temporary placeholder target for detached implicit links\nexport const Missing = {\n  key: '@missing',\n  animate: noop,\n  applyValue: noop,\n  get: noop,\n  getKeypath() {\n    return this.key;\n  },\n  joinAll() {\n    return this;\n  },\n  joinKey() {\n    return this;\n  },\n  mark: noop,\n  registerLink: noop,\n  shufle: noop,\n  set: noop,\n  unregisterLink: noop\n};\nMissing.parent = Missing;\n\nexport default class LinkModel extends ModelBase {\n  constructor(parent, owner, target, key) {\n    super(parent);\n\n    this.owner = owner;\n    this.target = target;\n    this.key = key === undefined ? owner.key : key;\n    if (owner && owner.isLink) this.sourcePath = `${owner.sourcePath}.${this.key}`;\n\n    if (target) target.registerLink(this);\n\n    if (parent) this.isReadonly = parent.isReadonly;\n\n    this.isLink = true;\n  }\n\n  animate(from, to, options, interpolator) {\n    return this.target.animate(from, to, options, interpolator);\n  }\n\n  applyValue(value) {\n    if (this.boundValue) this.boundValue = null;\n    this.target.applyValue(value);\n  }\n\n  attach(fragment) {\n    const model = resolveReference(fragment, this.key);\n    if (model) {\n      this.relinking(model, false);\n    } else {\n      // if there is no link available, move everything here to real models\n      this.owner.unlink();\n    }\n  }\n\n  detach() {\n    this.relinking(Missing, false);\n  }\n\n  get(shouldCapture, opts = {}) {\n    if (shouldCapture) {\n      capture(this);\n\n      // may need to tell the target to unwrap\n      opts.unwrap = 'unwrap' in opts ? opts.unwrap : true;\n    }\n\n    const bind = 'shouldBind' in opts ? opts.shouldBind : true;\n    opts.shouldBind = this.mapping && this.target.parent && this.target.parent.isRoot;\n\n    return maybeBind(this, this.target.get(false, opts), bind);\n  }\n\n  getKeypath(ractive) {\n    if (ractive && ractive !== this.root.ractive) return this.target.getKeypath(ractive);\n\n    return super.getKeypath(ractive);\n  }\n\n  handleChange() {\n    this.deps.forEach(handleChange);\n    this.links.forEach(handleChange);\n    this.notifyUpstream();\n  }\n\n  isDetached() {\n    return this.virtual && this.target === Missing;\n  }\n\n  joinKey(key) {\n    // TODO: handle nested links\n    if (key === undefined || key === '') return this;\n\n    if (!hasOwn(this.childByKey, key)) {\n      const child = new LinkModel(this, this, this.target.joinKey(key), key);\n      this.children.push(child);\n      this.childByKey[key] = child;\n    }\n\n    return this.childByKey[key];\n  }\n\n  mark(force) {\n    this.target.mark(force);\n  }\n\n  marked() {\n    if (this.boundValue) this.boundValue = null;\n\n    this.links.forEach(marked);\n\n    this.deps.forEach(handleChange);\n  }\n\n  markedAll() {\n    this.children.forEach(markedAll);\n    this.marked();\n  }\n\n  notifiedUpstream(startPath, root) {\n    this.links.forEach(l => l.notifiedUpstream(startPath, this.root));\n    this.deps.forEach(handleChange);\n    if (startPath && this.rootLink && this.root !== root) {\n      const path = startPath.slice(1);\n      path.unshift(this.key);\n      this.notifyUpstream(path);\n    }\n  }\n\n  relinked() {\n    this.target.registerLink(this);\n    this.children.forEach(c => c.relinked());\n  }\n\n  relinking(target, safe) {\n    if (this.rootLink && this.sourcePath)\n      target = rebindMatch(this.sourcePath, target, this.target);\n    if (!target || this.target === target) return;\n\n    this.target && this.target.unregisterLink(this);\n\n    this.target = target;\n    this.children.forEach(c => {\n      c.relinking(target.joinKey(c.key), safe);\n    });\n\n    if (this.rootLink)\n      this.addShuffleTask(() => {\n        this.relinked();\n        if (!safe) {\n          this.markedAll();\n          this.notifyUpstream();\n        }\n      });\n  }\n\n  set(value) {\n    if (this.boundValue) this.boundValue = null;\n    this.target.set(value);\n  }\n\n  shuffle(newIndices) {\n    // watch for extra shuffles caused by a shuffle in a downstream link\n    if (this.shuffling) return;\n\n    // let the real model handle firing off shuffles\n    if (!this.target.shuffling) {\n      if (this.target.shuffle) {\n        this.target.shuffle(newIndices);\n      } else {\n        // the target is a computation, which can't shuffle\n        this.target.mark();\n      }\n    } else {\n      shuffle(this, newIndices, true);\n    }\n  }\n\n  source() {\n    if (this.target.source) return this.target.source();\n    else return this.target;\n  }\n\n  teardown() {\n    if (this._link) this._link.teardown();\n    this.target.unregisterLink(this);\n    this.children.forEach(teardown);\n  }\n}\n\nModelBase.prototype.link = function link(model, keypath, options) {\n  const lnk = this._link || new LinkModel(this.parent, this, model, this.key);\n  lnk.implicit = options && options.implicit;\n  lnk.mapping = options && options.mapping;\n  lnk.sourcePath = keypath;\n  lnk.rootLink = true;\n  if (this._link) this._link.relinking(model, false);\n  this.rebind(lnk, this, false);\n  fireShuffleTasks();\n\n  this._link = lnk;\n  lnk.markedAll();\n\n  this.notifyUpstream();\n  return lnk;\n};\n\nModelBase.prototype.unlink = function unlink() {\n  if (this._link) {\n    const ln = this._link;\n    this._link = undefined;\n    ln.rebind(this, ln, false);\n    fireShuffleTasks();\n    ln.teardown();\n    this.notifyUpstream();\n  }\n};\n","import { splitKeypath } from './keypaths';\nimport { isString } from 'utils/is';\n\n// this is the dry method of checking to see if a rebind applies to\n// a particular keypath because in some cases, a dep may be bound\n// directly to a particular keypath e.g. foo.bars.0.baz and need\n// to avoid getting kicked to foo.bars.1.baz if foo.bars is unshifted\nexport function rebindMatch(template, next, previous, fragment) {\n  const keypath = template.r || template;\n\n  // no valid keypath, go with next\n  if (!keypath || !isString(keypath)) return next;\n\n  // completely contextual ref, go with next\n  if (\n    keypath === '.' ||\n    keypath[0] === '@' ||\n    (next || previous).isKey ||\n    (next || previous).isKeypath\n  )\n    return next;\n\n  const parts = keypath.split('/');\n  let keys = splitKeypath(parts[parts.length - 1]);\n  const last = keys[keys.length - 1];\n\n  // check the keypath against the model keypath to see if it matches\n  let model = next || previous;\n\n  // check to see if this was an alias\n  if (model && keys.length === 1 && last !== model.key && fragment) {\n    keys = findAlias(last, fragment) || keys;\n  }\n\n  let i = keys.length;\n  let match = true;\n  let shuffling = false;\n\n  while (model && i--) {\n    if (model.shuffling) shuffling = true;\n    // non-strict comparison to account for indices in keypaths\n    if (keys[i] != model.key) match = false;\n    model = model.parent;\n  }\n\n  // next is undefined, but keypath is shuffling and previous matches\n  if (!next && match && shuffling) return previous;\n  else if (next && !match && shuffling)\n    // next is defined, but doesn't match the keypath\n    return previous;\n  else return next;\n}\n\nfunction findAlias(name, fragment) {\n  while (fragment) {\n    const z = fragment.aliases;\n    if (z && z[name]) {\n      const aliases = (fragment.owner.iterations ? fragment.owner : fragment).owner.template.z;\n      for (let i = 0; i < aliases.length; i++) {\n        if (aliases[i].n === name) {\n          const alias = aliases[i].x;\n          if (!alias.r) return false;\n          const parts = alias.r.split('/');\n          return splitKeypath(parts[parts.length - 1]);\n        }\n      }\n      return;\n    }\n\n    fragment = fragment.componentParent || fragment.parent;\n  }\n}\n","export function bind(x) {\n  x.bind();\n}\nexport function cancel(x) {\n  x.cancel();\n}\nexport function destroyed(x) {\n  x.destroyed();\n}\nexport function handleChange(x) {\n  x.handleChange();\n}\nexport function mark(x) {\n  x.mark();\n}\nexport function markForce(x) {\n  x.mark(true);\n}\nexport function marked(x) {\n  x.marked();\n}\nexport function markedAll(x) {\n  x.markedAll();\n}\nexport function render(x) {\n  x.render();\n}\nexport function shuffled(x) {\n  x.shuffled();\n}\nexport function teardown(x) {\n  x.teardown();\n}\nexport function unbind(x) {\n  x.unbind();\n}\nexport function unrender(x) {\n  x.unrender();\n}\nexport function unrenderAndDestroy(x) {\n  x.unrender(true);\n}\nexport function update(x) {\n  x.update();\n}\nexport function toString(x) {\n  return x.toString();\n}\nexport function toEscapedString(x) {\n  return x.toString(true);\n}\n","const stack = [];\nlet captureGroup;\n\nexport function startCapturing() {\n  stack.push((captureGroup = []));\n}\n\nexport function stopCapturing() {\n  const dependencies = stack.pop();\n  captureGroup = stack[stack.length - 1];\n  return dependencies;\n}\n\nexport function capture(model) {\n  if (captureGroup) {\n    captureGroup.push(model);\n  }\n}\n","import { escapeKey, unescapeKey } from 'shared/keypaths';\nimport { addToArray, removeFromArray } from 'utils/array';\nimport { isArray, isObject, isFunction } from 'utils/is';\nimport bind from 'utils/bind';\nimport { create, keys as objectKeys } from 'utils/object';\n\nconst shuffleTasks = { early: [], mark: [] };\nconst registerQueue = { early: [], mark: [] };\nexport const noVirtual = { virtual: false };\n\nexport default class ModelBase {\n  constructor(parent) {\n    this.deps = [];\n\n    this.children = [];\n    this.childByKey = {};\n    this.links = [];\n\n    this.bindings = [];\n\n    if (parent) {\n      this.parent = parent;\n      this.root = parent.root;\n    }\n  }\n\n  addShuffleTask(task, stage = 'early') {\n    shuffleTasks[stage].push(task);\n  }\n  addShuffleRegister(item, stage = 'early') {\n    registerQueue[stage].push({ model: this, item });\n  }\n\n  downstreamChanged() {}\n\n  findMatches(keys) {\n    const len = keys.length;\n\n    let existingMatches = [this];\n    let matches;\n    let i;\n\n    for (i = 0; i < len; i += 1) {\n      const key = keys[i];\n\n      if (key === '*') {\n        matches = [];\n        existingMatches.forEach(model => {\n          matches.push.apply(matches, model.getValueChildren(model.get()));\n        });\n      } else {\n        matches = existingMatches.map(model => model.joinKey(key));\n      }\n\n      existingMatches = matches;\n    }\n\n    return matches;\n  }\n\n  getKeypath(ractive) {\n    if (ractive !== this.ractive && this._link) return this._link.target.getKeypath(ractive);\n\n    if (!this.keypath) {\n      const parent = this.parent && this.parent.getKeypath(ractive);\n      this.keypath = parent\n        ? `${this.parent.getKeypath(ractive)}.${escapeKey(this.key)}`\n        : escapeKey(this.key);\n    }\n\n    return this.keypath;\n  }\n\n  getValueChildren(value) {\n    let children;\n    if (isArray(value)) {\n      children = [];\n      if ('length' in this && this.length !== value.length) {\n        children.push(this.joinKey('length'));\n      }\n      value.forEach((m, i) => {\n        children.push(this.joinKey(i));\n      });\n    } else if (isObject(value) || isFunction(value)) {\n      children = objectKeys(value).map(key => this.joinKey(key));\n    } else if (value != null) {\n      children = [];\n    }\n\n    const computed = this.computed;\n    if (computed) {\n      children.push.apply(children, objectKeys(computed).map(k => this.joinKey(k)));\n    }\n\n    return children;\n  }\n\n  getVirtual(shouldCapture) {\n    const value = this.get(shouldCapture, { virtual: false });\n    if (isObject(value)) {\n      const result = isArray(value) ? [] : create(null);\n\n      let keys = objectKeys(value);\n      let i = keys.length;\n      while (i--) {\n        const child = this.childByKey[keys[i]];\n        if (!child) result[keys[i]] = value[keys[i]];\n        else if (child._link) result[keys[i]] = child._link.getVirtual();\n        else result[keys[i]] = child.getVirtual();\n      }\n\n      i = this.children.length;\n      while (i--) {\n        const child = this.children[i];\n        if (!(child.key in result) && child._link) {\n          result[child.key] = child._link.getVirtual();\n        }\n      }\n\n      if (this.computed) {\n        keys = objectKeys(this.computed);\n        i = keys.length;\n        while (i--) {\n          result[keys[i]] = this.computed[keys[i]].get();\n        }\n      }\n\n      return result;\n    } else return value;\n  }\n\n  has(key) {\n    if (this._link) return this._link.has(key);\n\n    const value = this.get(false, noVirtual);\n    if (!value) return false;\n\n    key = unescapeKey(key);\n    if ((isFunction(value) || isObject(value)) && key in value) return true;\n\n    let computed = this.computed;\n    if (computed && key in this.computed) return true;\n\n    computed = this.root.ractive && this.root.ractive.computed;\n    if (computed) {\n      objectKeys(computed).forEach(k => {\n        if (computed[k].pattern && computed[k].pattern.test(this.getKeypath())) return true;\n      });\n    }\n\n    return false;\n  }\n\n  joinAll(keys, opts) {\n    let model = this;\n    for (let i = 0; i < keys.length; i += 1) {\n      if (\n        opts &&\n        opts.lastLink === false &&\n        i + 1 === keys.length &&\n        model.childByKey[keys[i]] &&\n        model.childByKey[keys[i]]._link\n      )\n        return model.childByKey[keys[i]];\n      model = model.joinKey(keys[i], opts);\n    }\n\n    return model;\n  }\n\n  notifyUpstream(startPath) {\n    let parent = this.parent;\n    const path = startPath || [this.key];\n    while (parent) {\n      if (parent.patterns) parent.patterns.forEach(o => o.notify(path.slice()));\n      path.unshift(parent.key);\n      parent.links.forEach(l => l.notifiedUpstream(path, this.root));\n      parent.deps.forEach(d => d.handleChange(path));\n      parent.downstreamChanged(startPath);\n      parent = parent.parent;\n    }\n  }\n\n  rebind(next, previous, safe) {\n    if (this._link) {\n      this._link.rebind(next, previous, false);\n    }\n\n    // tell the deps to move to the new target\n    let i = this.deps.length;\n    while (i--) {\n      if (this.deps[i].rebind) this.deps[i].rebind(next, previous, safe);\n    }\n\n    i = this.links.length;\n    while (i--) {\n      const link = this.links[i];\n      // only relink the root of the link tree\n      if (link.owner && link.owner._link) link.relinking(next, safe);\n    }\n\n    i = this.children.length;\n    while (i--) {\n      const child = this.children[i];\n      child.rebind(next ? next.joinKey(child.key) : undefined, child, safe);\n    }\n\n    i = this.bindings.length;\n    while (i--) {\n      this.bindings[i].rebind(next, previous, safe);\n    }\n  }\n\n  reference() {\n    'refs' in this ? this.refs++ : (this.refs = 1);\n  }\n\n  register(dep) {\n    this.deps.push(dep);\n  }\n\n  registerLink(link) {\n    addToArray(this.links, link);\n  }\n\n  registerPatternObserver(observer) {\n    (this.patterns || (this.patterns = [])).push(observer);\n    this.register(observer);\n  }\n\n  registerTwowayBinding(binding) {\n    this.bindings.push(binding);\n  }\n\n  unreference() {\n    if ('refs' in this) this.refs--;\n  }\n\n  unregister(dep) {\n    removeFromArray(this.deps, dep);\n  }\n\n  unregisterLink(link) {\n    removeFromArray(this.links, link);\n  }\n\n  unregisterPatternObserver(observer) {\n    removeFromArray(this.patterns, observer);\n    this.unregister(observer);\n  }\n\n  unregisterTwowayBinding(binding) {\n    removeFromArray(this.bindings, binding);\n  }\n\n  updateFromBindings(cascade) {\n    let i = this.bindings.length;\n    while (i--) {\n      const value = this.bindings[i].getValue();\n      if (value !== this.value) this.set(value);\n    }\n\n    // check for one-way bindings if there are no two-ways\n    if (!this.bindings.length) {\n      const oneway = findBoundValue(this.deps);\n      if (oneway && oneway.value !== this.value) this.set(oneway.value);\n    }\n\n    if (cascade) {\n      this.children.forEach(updateFromBindings);\n      this.links.forEach(updateFromBindings);\n      if (this._link) this._link.updateFromBindings(cascade);\n    }\n  }\n}\n\n// TODO: this may be better handled by overriding `get` on models with a parent that isRoot\nexport function maybeBind(model, value, shouldBind) {\n  if (shouldBind && isFunction(value) && model.parent && model.parent.isRoot) {\n    if (!model.boundValue) {\n      model.boundValue = bind(value._r_unbound || value, model.parent.ractive);\n    }\n\n    return model.boundValue;\n  }\n\n  return value;\n}\n\nfunction updateFromBindings(model) {\n  model.updateFromBindings(true);\n}\n\nexport function findBoundValue(list) {\n  let i = list.length;\n  while (i--) {\n    if (list[i].bound) {\n      const owner = list[i].owner;\n      if (owner) {\n        const value = owner.name === 'checked' ? owner.node.checked : owner.node.value;\n        return { value };\n      }\n    }\n  }\n}\n\nexport function fireShuffleTasks(stage) {\n  if (!stage) {\n    fireShuffleTasks('early');\n    fireShuffleTasks('mark');\n  } else {\n    const tasks = shuffleTasks[stage];\n    shuffleTasks[stage] = [];\n    let i = tasks.length;\n    while (i--) tasks[i]();\n\n    const register = registerQueue[stage];\n    registerQueue[stage] = [];\n    i = register.length;\n    while (i--) register[i].model.register(register[i].item);\n  }\n}\n\nexport function shuffle(model, newIndices, link, unsafe) {\n  model.shuffling = true;\n\n  let i = newIndices.length;\n  while (i--) {\n    const idx = newIndices[i];\n    // nothing is actually changing, so move in the index and roll on\n    if (i === idx) {\n      continue;\n    }\n\n    // rebind the children on i to idx\n    if (i in model.childByKey)\n      model.childByKey[i].rebind(\n        !~idx ? undefined : model.joinKey(idx),\n        model.childByKey[i],\n        !unsafe\n      );\n  }\n\n  const upstream = model.source().length !== model.source().value.length;\n\n  model.links.forEach(l => l.shuffle(newIndices));\n  if (!link) fireShuffleTasks('early');\n\n  i = model.deps.length;\n  while (i--) {\n    if (model.deps[i].shuffle) model.deps[i].shuffle(newIndices);\n  }\n\n  model[link ? 'marked' : 'mark']();\n  if (!link) fireShuffleTasks('mark');\n\n  if (upstream) model.notifyUpstream();\n\n  model.shuffling = false;\n}\n","const fnBind = Function.prototype.bind;\n\nexport default function bind(fn, context) {\n  if (!/this/.test(fn.toString())) return fn;\n\n  const bound = fnBind.call(fn, context);\n  for (const prop in fn) bound[prop] = fn[prop];\n\n  return bound;\n}\n","import { isArray, isString } from './is';\n\nexport function addToArray(array, value) {\n  const index = array.indexOf(value);\n\n  if (index === -1) {\n    array.push(value);\n  }\n}\n\nexport function arrayContains(array, value) {\n  for (let i = 0, c = array.length; i < c; i++) {\n    if (array[i] == value) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nexport function arrayContentsMatch(a, b) {\n  let i;\n\n  if (!isArray(a) || !isArray(b)) {\n    return false;\n  }\n\n  if (a.length !== b.length) {\n    return false;\n  }\n\n  i = a.length;\n  while (i--) {\n    if (a[i] !== b[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nexport function ensureArray(x) {\n  if (isString(x)) {\n    return [x];\n  }\n\n  if (x === undefined) {\n    return [];\n  }\n\n  return x;\n}\n\nexport function lastItem(array) {\n  return array[array.length - 1];\n}\n\nexport function removeFromArray(array, member) {\n  if (!array) {\n    return;\n  }\n\n  const index = array.indexOf(member);\n\n  if (index !== -1) {\n    array.splice(index, 1);\n  }\n}\n\nexport function combine(...arrays) {\n  const res = arrays.concat.apply([], arrays);\n  let i = res.length;\n  while (i--) {\n    const idx = res.indexOf(res[i]);\n    if (~idx && idx < i) res.splice(i, 1);\n  }\n\n  return res;\n}\n\nexport function toArray(arrayLike) {\n  const array = [];\n  let i = arrayLike.length;\n  while (i--) {\n    array[i] = arrayLike[i];\n  }\n\n  return array;\n}\n\nexport function findMap(array, fn) {\n  const len = array.length;\n  for (let i = 0; i < len; i++) {\n    const result = fn(array[i]);\n    if (result) return result;\n  }\n}\n\nexport function buildNewIndices(one, two, comparator) {\n  let oldArray = one;\n  let newArray = two;\n  if (comparator) {\n    oldArray = oldArray.map(comparator);\n    newArray = newArray.map(comparator);\n  }\n\n  const oldLength = oldArray.length;\n\n  const usedIndices = {};\n  let firstUnusedIndex = 0;\n\n  return oldArray.map(item => {\n    let index;\n    let start = firstUnusedIndex;\n\n    do {\n      index = newArray.indexOf(item, start);\n\n      if (index === -1) {\n        return -1;\n      }\n\n      start = index + 1;\n    } while (usedIndices[index] === true && start < oldLength);\n\n    // keep track of the first unused index, so we don't search\n    // the whole of newArray for each item in oldArray unnecessarily\n    if (index === firstUnusedIndex) {\n      firstUnusedIndex += 1;\n    }\n    // allow next instance of next \"equal\" to be found item\n    usedIndices[index] = true;\n    return index;\n  });\n}\n","import { isString } from 'utils/is';\n\nconst refPattern = /\\[\\s*(\\*|[0-9]|[1-9][0-9]+)\\s*\\]/g;\nconst splitPattern = /([^\\\\](?:\\\\\\\\)*)\\./;\nconst escapeKeyPattern = /\\\\|\\./g;\nconst unescapeKeyPattern = /((?:\\\\)+)\\1|\\\\(\\.)/g;\n\nexport function escapeKey(key) {\n  if (isString(key)) {\n    return key.replace(escapeKeyPattern, '\\\\$&');\n  }\n\n  return key;\n}\n\nexport function normalise(ref) {\n  return ref ? ref.replace(refPattern, '.$1') : '';\n}\n\nexport function splitKeypath(keypath) {\n  const result = [];\n  let match;\n\n  keypath = normalise(keypath);\n\n  while ((match = splitPattern.exec(keypath))) {\n    const index = match.index + match[1].length;\n    result.push(keypath.substr(0, index));\n    keypath = keypath.substr(index + 1);\n  }\n\n  result.push(keypath);\n\n  return result;\n}\n\nexport function unescapeKey(key) {\n  if (isString(key)) {\n    return key.replace(unescapeKeyPattern, '$1$2');\n  }\n\n  return key;\n}\n","import { isArray, isObject, isNumeric } from 'utils/is';\nimport interpolate from 'shared/interpolate';\nimport { hasOwn } from 'utils/object';\n\nconst interpolators = {\n  number(from, to) {\n    if (!isNumeric(from) || !isNumeric(to)) {\n      return null;\n    }\n\n    from = +from;\n    to = +to;\n\n    const delta = to - from;\n\n    if (!delta) {\n      return function() {\n        return from;\n      };\n    }\n\n    return function(t) {\n      return from + t * delta;\n    };\n  },\n\n  array(from, to) {\n    let len, i;\n\n    if (!isArray(from) || !isArray(to)) {\n      return null;\n    }\n\n    const intermediate = [];\n    const interpolators = [];\n\n    i = len = Math.min(from.length, to.length);\n    while (i--) {\n      interpolators[i] = interpolate(from[i], to[i]);\n    }\n\n    // surplus values - don't interpolate, but don't exclude them either\n    for (i = len; i < from.length; i += 1) {\n      intermediate[i] = from[i];\n    }\n\n    for (i = len; i < to.length; i += 1) {\n      intermediate[i] = to[i];\n    }\n\n    return function(t) {\n      let i = len;\n\n      while (i--) {\n        intermediate[i] = interpolators[i](t);\n      }\n\n      return intermediate;\n    };\n  },\n\n  object(from, to) {\n    if (!isObject(from) || !isObject(to)) {\n      return null;\n    }\n\n    const properties = [];\n    const intermediate = {};\n    const interpolators = {};\n\n    for (const prop in from) {\n      if (hasOwn(from, prop)) {\n        if (hasOwn(to, prop)) {\n          properties.push(prop);\n          interpolators[prop] = interpolate(from[prop], to[prop]) || (() => to[prop]);\n        } else {\n          intermediate[prop] = from[prop];\n        }\n      }\n    }\n\n    for (const prop in to) {\n      if (hasOwn(to, prop) && !hasOwn(from, prop)) {\n        intermediate[prop] = to[prop];\n      }\n    }\n\n    const len = properties.length;\n\n    return function(t) {\n      let i = len;\n\n      while (i--) {\n        const prop = properties[i];\n\n        intermediate[prop] = interpolators[prop](t);\n      }\n\n      return intermediate;\n    };\n  }\n};\n\nexport default interpolators;\n","import { fatal } from 'utils/log';\nimport { missingPlugin } from 'config/errors';\nimport interpolators from '../Ractive/static/interpolators';\nimport { findInViewHierarchy } from './registry';\n\nexport default function interpolate(from, to, ractive, type) {\n  if (from === to) return null;\n\n  if (type) {\n    const interpol = findInViewHierarchy('interpolators', ractive, type);\n    if (interpol) return interpol(from, to) || null;\n\n    fatal(missingPlugin(type, 'interpolator'));\n  }\n\n  return (\n    interpolators.number(from, to) ||\n    interpolators.array(from, to) ||\n    interpolators.object(from, to) ||\n    null\n  );\n}\n","export function findInViewHierarchy(registryName, ractive, name) {\n  const instance = findInstance(registryName, ractive, name);\n  return instance ? instance[registryName][name] : null;\n}\n\nexport function findInstance(registryName, ractive, name) {\n  while (ractive) {\n    if (name in ractive[registryName]) {\n      return ractive;\n    }\n\n    if (ractive.isolated) {\n      return null;\n    }\n\n    ractive = ractive.parent;\n  }\n}\n","// Error messages that are used (or could be) in multiple places\nexport const badArguments = 'Bad arguments';\nexport const noRegistryFunctionReturn =\n  'A function was specified for \"%s\" %s, but no %s was returned';\nexport const missingPlugin = (name, type) =>\n  `Missing \"${name}\" ${type} plugin. You may need to download a plugin via http://ractive.js.org/integrations/#${type}s`;\n","/* global console */\n/* eslint no-console:\"off\" */\n\nimport { hasConsole } from '../config/environment';\nimport Ractive from '../Ractive';\nimport noop from './noop';\nimport { isObjectType } from 'utils/is';\n\nconst alreadyWarned = {};\nlet log, printWarning, welcome;\n\nif (hasConsole) {\n  const welcomeIntro = [\n    `%cRactive.js %cBUILD_PLACEHOLDER_VERSION %cin debug mode, %cmore...`,\n    'color: rgb(114, 157, 52); font-weight: normal;',\n    'color: rgb(85, 85, 85); font-weight: normal;',\n    'color: rgb(85, 85, 85); font-weight: normal;',\n    'color: rgb(82, 140, 224); font-weight: normal; text-decoration: underline;'\n  ];\n  const welcomeMessage = `You're running Ractive BUILD_PLACEHOLDER_VERSION in debug mode - messages will be printed to the console to help you fix problems and optimise your application.\n\nTo disable debug mode, add this line at the start of your app:\n  Ractive.DEBUG = false;\n\nTo disable debug mode when your app is minified, add this snippet:\n  Ractive.DEBUG = /unminified/.test(function(){/*unminified*/});\n\nGet help and support:\n  http://ractive.js.org\n  http://stackoverflow.com/questions/tagged/ractivejs\n  http://groups.google.com/forum/#!forum/ractive-js\n  http://twitter.com/ractivejs\n\nFound a bug? Raise an issue:\n  https://github.com/ractivejs/ractive/issues\n\n`;\n\n  welcome = () => {\n    if (Ractive.WELCOME_MESSAGE === false) {\n      welcome = noop;\n      return;\n    }\n    const message = 'WELCOME_MESSAGE' in Ractive ? Ractive.WELCOME_MESSAGE : welcomeMessage;\n    const hasGroup = !!console.groupCollapsed;\n    if (hasGroup) console.groupCollapsed.apply(console, welcomeIntro);\n    console.log(message);\n    if (hasGroup) {\n      console.groupEnd(welcomeIntro);\n    }\n\n    welcome = noop;\n  };\n\n  printWarning = (message, args) => {\n    welcome();\n\n    // extract information about the instance this message pertains to, if applicable\n    if (isObjectType(args[args.length - 1])) {\n      const options = args.pop();\n      const ractive = options ? options.ractive : null;\n\n      if (ractive) {\n        // if this is an instance of a component that we know the name of, add\n        // it to the message\n        let name;\n        if (ractive.component && (name = ractive.component.name)) {\n          message = `<${name}> ${message}`;\n        }\n\n        let node;\n        if (\n          (node =\n            options.node || (ractive.fragment && ractive.fragment.rendered && ractive.find('*')))\n        ) {\n          args.push(node);\n        }\n      }\n    }\n\n    console.warn.apply(\n      console,\n      ['%cRactive.js: %c' + message, 'color: rgb(114, 157, 52);', 'color: rgb(85, 85, 85);'].concat(\n        args\n      )\n    );\n  };\n\n  log = function() {\n    console.log.apply(console, arguments);\n  };\n} else {\n  printWarning = log = welcome = noop;\n}\n\nfunction format(message, args) {\n  return message.replace(/%s/g, () => args.shift());\n}\n\nfunction fatal(message, ...args) {\n  message = format(message, args);\n  throw new Error(message);\n}\n\nfunction logIfDebug() {\n  if (Ractive.DEBUG) {\n    log.apply(null, arguments);\n  }\n}\n\nfunction warn(message, ...args) {\n  message = format(message, args);\n  printWarning(message, args);\n}\n\nfunction warnOnce(message, ...args) {\n  message = format(message, args);\n\n  if (alreadyWarned[message]) {\n    return;\n  }\n\n  alreadyWarned[message] = true;\n  printWarning(message, args);\n}\n\nfunction warnIfDebug() {\n  if (Ractive.DEBUG) {\n    warn.apply(null, arguments);\n  }\n}\n\nfunction warnOnceIfDebug() {\n  if (Ractive.DEBUG) {\n    warnOnce.apply(null, arguments);\n  }\n}\n\nexport { fatal, log, logIfDebug, warn, warnOnce, warnIfDebug, warnOnceIfDebug, welcome };\n","export default function() {}\n","/* eslint no-console:\"off\" */\nimport { isFunction } from 'utils/is';\n\nconst win = typeof window !== 'undefined' ? window : null;\nconst doc = win ? document : null;\nconst isClient = !!doc;\nconst hasConsole =\n  typeof console !== 'undefined' && isFunction(console.warn) && isFunction(console.warn.apply);\n\nconst svg = doc\n  ? doc.implementation.hasFeature('http://www.w3.org/TR/SVG11/feature#BasicStructure', '1.1')\n  : false;\n\nconst vendors = ['o', 'ms', 'moz', 'webkit'];\n\nexport { win, doc, isClient, hasConsole, svg, vendors };\n","// These are a subset of the easing equations found at\n// https://raw.github.com/danro/easing-js - license info\n// follows:\n\n// --------------------------------------------------\n// easing.js v0.5.4\n// Generic set of easing functions with AMD support\n// https://github.com/danro/easing-js\n// This code may be freely distributed under the MIT license\n// http://danro.mit-license.org/\n// --------------------------------------------------\n// All functions adapted from Thomas Fuchs & Jeremy Kahn\n// Easing Equations (c) 2003 Robert Penner, BSD license\n// https://raw.github.com/danro/easing-js/master/LICENSE\n// --------------------------------------------------\n\n// In that library, the functions named easeIn, easeOut, and\n// easeInOut below are named easeInCubic, easeOutCubic, and\n// (you guessed it) easeInOutCubic.\n//\n// You can add additional easing functions to this list, and they\n// will be globally available.\n\nexport default {\n  linear(pos) {\n    return pos;\n  },\n  easeIn(pos) {\n    /* istanbul ignore next */\n    return Math.pow(pos, 3);\n  },\n  easeOut(pos) {\n    return Math.pow(pos - 1, 3) + 1;\n  },\n  easeInOut(pos) {\n    /* istanbul ignore next */\n    if ((pos /= 0.5) < 1) {\n      return 0.5 * Math.pow(pos, 3);\n    }\n    /* istanbul ignore next */\n    return 0.5 * (Math.pow(pos - 2, 3) + 2);\n  }\n};\n","import { create } from 'utils/object';\n\nexport default {\n  // render placement:\n  el: void 0,\n  append: false,\n  delegate: true,\n  enhance: false,\n\n  // template:\n  template: null,\n\n  // parse:\n  allowExpressions: true,\n  delimiters: ['{{', '}}'],\n  tripleDelimiters: ['{{{', '}}}'],\n  staticDelimiters: ['[[', ']]'],\n  staticTripleDelimiters: ['[[[', ']]]'],\n  csp: true,\n  interpolate: false,\n  preserveWhitespace: false,\n  sanitize: false,\n  stripComments: true,\n  contextLines: 0,\n\n  // data & binding:\n  data: create(null),\n  helpers: create(null),\n  computed: create(null),\n  syncComputedChildren: false,\n  resolveInstanceMembers: false,\n  warnAboutAmbiguity: false,\n  adapt: [],\n  isolated: true,\n  twoway: true,\n  lazy: false,\n\n  // transitions:\n  noIntro: false,\n  noOutro: false,\n  transitionsEnabled: true,\n  complete: void 0,\n  nestedTransitions: true,\n\n  // css:\n  css: null,\n  noCssTransform: false\n};\n","/* istanbul ignore if */\nif (\n  typeof window !== 'undefined' &&\n  !(window.requestAnimationFrame && window.cancelAnimationFrame)\n) {\n  let lastTime = 0;\n  window.requestAnimationFrame = function(callback) {\n    const currentTime = Date.now();\n    const timeToNextCall = Math.max(0, 16 - (currentTime - lastTime));\n    const id = window.setTimeout(() => {\n      callback(currentTime + timeToNextCall);\n    }, timeToNextCall);\n    lastTime = currentTime + timeToNextCall;\n    return id;\n  };\n  window.cancelAnimationFrame = function(id) {\n    clearTimeout(id);\n  };\n}\n","import { isFunction, isObjectType } from 'utils/is';\n\n/* istanbul ignore if */\nif (typeof window !== 'undefined' && !window.Promise) {\n  const PENDING = {};\n  const FULFILLED = {};\n  const REJECTED = {};\n\n  const Promise = (window.Promise = function(callback) {\n    const fulfilledHandlers = [];\n    const rejectedHandlers = [];\n    let state = PENDING;\n    let result;\n    let dispatchHandlers;\n\n    const makeResolver = newState => {\n      return function(value) {\n        if (state !== PENDING) return;\n        result = value;\n        state = newState;\n        dispatchHandlers = makeDispatcher(\n          state === FULFILLED ? fulfilledHandlers : rejectedHandlers,\n          result\n        );\n        wait(dispatchHandlers);\n      };\n    };\n\n    const fulfill = makeResolver(FULFILLED);\n    const reject = makeResolver(REJECTED);\n\n    try {\n      callback(fulfill, reject);\n    } catch (err) {\n      reject(err);\n    }\n\n    return {\n      // `then()` returns a Promise - 2.2.7\n      then(onFulfilled, onRejected) {\n        const promise2 = new Promise((fulfill, reject) => {\n          const processResolutionHandler = (handler, handlers, forward) => {\n            if (isFunction(handler)) {\n              handlers.push(p1result => {\n                try {\n                  resolve(promise2, handler(p1result), fulfill, reject);\n                } catch (err) {\n                  reject(err);\n                }\n              });\n            } else {\n              handlers.push(forward);\n            }\n          };\n\n          processResolutionHandler(onFulfilled, fulfilledHandlers, fulfill);\n          processResolutionHandler(onRejected, rejectedHandlers, reject);\n\n          if (state !== PENDING) {\n            wait(dispatchHandlers);\n          }\n        });\n        return promise2;\n      },\n      catch(onRejected) {\n        return this.then(null, onRejected);\n      }\n    };\n  });\n\n  Promise.all = function(promises) {\n    return new Promise((fulfil, reject) => {\n      const result = [];\n      let pending;\n      let i;\n\n      if (!promises.length) {\n        fulfil(result);\n        return;\n      }\n\n      const processPromise = (promise, i) => {\n        if (promise && isFunction(promise.then)) {\n          promise.then(value => {\n            result[i] = value;\n            --pending || fulfil(result);\n          }, reject);\n        } else {\n          result[i] = promise;\n          --pending || fulfil(result);\n        }\n      };\n\n      pending = i = promises.length;\n\n      while (i--) {\n        processPromise(promises[i], i);\n      }\n    });\n  };\n\n  Promise.resolve = function(value) {\n    return new Promise(fulfill => {\n      fulfill(value);\n    });\n  };\n\n  Promise.reject = function(reason) {\n    return new Promise((fulfill, reject) => {\n      reject(reason);\n    });\n  };\n\n  // TODO use MutationObservers or something to simulate setImmediate\n  const wait = function(callback) {\n    setTimeout(callback, 0);\n  };\n\n  const makeDispatcher = function(handlers, result) {\n    return function() {\n      for (let handler; (handler = handlers.shift()); ) {\n        handler(result);\n      }\n    };\n  };\n\n  const resolve = function(promise, x, fulfil, reject) {\n    let then;\n    if (x === promise) {\n      throw new TypeError(`A promise's fulfillment handler cannot return the same promise`);\n    }\n    if (x instanceof Promise) {\n      x.then(fulfil, reject);\n    } else if (x && (isObjectType(x) || isFunction(x))) {\n      try {\n        then = x.then;\n      } catch (e) {\n        reject(e);\n        return;\n      }\n      if (isFunction(then)) {\n        let called;\n\n        const resolvePromise = function(y) {\n          if (called) return;\n          called = true;\n          resolve(promise, y, fulfil, reject);\n        };\n        const rejectPromise = function(r) {\n          if (called) return;\n          called = true;\n          reject(r);\n        };\n\n        try {\n          then.call(x, resolvePromise, rejectPromise);\n        } catch (e) {\n          if (!called) {\n            reject(e);\n            called = true;\n            return;\n          }\n        }\n      } else {\n        fulfil(x);\n      }\n    } else {\n      fulfil(x);\n    }\n  };\n}\n","/* istanbul ignore if */\nif (typeof window !== 'undefined' && window.performance && !window.performance.now) {\n  window.performance = window.performance || {};\n\n  const nowOffset = Date.now();\n\n  window.performance.now = function() {\n    return Date.now() - nowOffset;\n  };\n}\n","// NOTE: Node doesn't exist in IE8. Nothing can be done.\n/* istanbul ignore if */\nif (\n  typeof window !== 'undefined' &&\n  window.Node &&\n  window.Node.prototype &&\n  !window.Node.prototype.contains\n) {\n  Node.prototype.contains = function(node) {\n    if (!node) throw new TypeError('node required');\n\n    do {\n      if (this === node) return true;\n    } while ((node = node && node.parentNode));\n\n    return false;\n  };\n}\n","import { hasOwn, defineProperty } from 'utils/object';\nimport { isFunction } from 'utils/is';\n\n/* istanbul ignore if */\nif (!Array.prototype.find) {\n  defineProperty(Array.prototype, 'find', {\n    value(callback, thisArg) {\n      if (this === null || this === undefined)\n        throw new TypeError('Array.prototype.find called on null or undefined');\n\n      if (!isFunction(callback)) throw new TypeError(`${callback} is not a function`);\n\n      const array = Object(this);\n      const arrayLength = array.length >>> 0;\n\n      for (let index = 0; index < arrayLength; index++) {\n        if (!hasOwn(array, index)) continue;\n        if (!callback.call(thisArg, array[index], index, array)) continue;\n        return array[index];\n      }\n\n      return undefined;\n    },\n    configurable: true,\n    writable: true\n  });\n}\n","const toString = Object.prototype.toString;\nconst arrayLikePattern = /^\\[object (?:Array|FileList)\\]$/;\n\nexport function isArrayLike(obj) {\n  return arrayLikePattern.test(toString.call(obj));\n}\n\nexport const isArray = Array.isArray;\n\nexport function isEqual(a, b) {\n  if (a === null && b === null) {\n    return true;\n  }\n\n  if (isObjectType(a) || isObjectType(b)) {\n    return false;\n  }\n\n  return a === b;\n}\n\n// http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric\nexport function isNumeric(thing) {\n  return !isNaN(parseFloat(thing)) && isFinite(thing);\n}\n\nexport function isObject(thing) {\n  return thing && toString.call(thing) === '[object Object]';\n}\n\nexport function isObjectLike(thing) {\n  return !!(thing && (isObjectType(thing) || isFunction(thing)));\n}\n\nexport function isObjectType(thing) {\n  return typeof thing === 'object';\n}\n\nexport function isFunction(thing) {\n  return typeof thing === 'function';\n}\n\nexport function isString(thing) {\n  return typeof thing === 'string';\n}\n\nexport function isNumber(thing) {\n  return typeof thing === 'number';\n}\n","export function hasOwn(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function fillGaps(target, ...sources) {\n  for (let i = 0; i < sources.length; i++) {\n    const source = sources[i];\n    for (const key in source) {\n      // Source can be a prototype-less object.\n      if (key in target || !hasOwn(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nexport function toPairs(obj = {}) {\n  const pairs = [];\n  for (const key in obj) {\n    // Source can be a prototype-less object.\n    if (!hasOwn(obj, key)) continue;\n    pairs.push([key, obj[key]]);\n  }\n  return pairs;\n}\n\nconst obj = Object;\n\nexport const assign = obj.assign;\n\nexport const create = obj.create;\n\nexport const defineProperty = obj.defineProperty;\n\nexport const defineProperties = obj.defineProperties;\n\nexport const keys = obj.keys;\n","/* istanbul ignore if */\nif (!Object.assign) {\n  Object.assign = function(target, ...sources) {\n    if (target == null) throw new TypeError('Cannot convert undefined or null to object');\n\n    const to = Object(target);\n    const sourcesLength = sources.length;\n\n    for (let index = 0; index < sourcesLength; index++) {\n      const nextSource = sources[index];\n      for (const nextKey in nextSource) {\n        if (!Object.prototype.hasOwnProperty.call(nextSource, nextKey)) continue;\n        to[nextKey] = nextSource[nextKey];\n      }\n    }\n\n    return to;\n  };\n}\n"],"names":["sharedData","use","splitKeypath","getContext","proto","opts","const","let","splitKeypathI","styleSet","this","SharedModel","updateModel","update","unrender","transition","toHTML","toCSS","toggle","teardown","subtract","set","resetTemplate","reset","render","once","on","off","insert","get","fire","findParent","findContainer","findComponent","findAllComponents","findAll","find","detach","compute","animate","add","collect","createFragment","toString","super","html","svg","prefix","createTransitions","linear","TRANSITION","testStyle","i","fragment","numberPattern","specials","onlyWhitespace","xmlns","name","isBindableByChecked","isBindableByName","getValue","push","callRender","bind","registryNames","SharedBase","div","keys","objectKeys","type","prototype","shared","model","wrapPrototype","RactiveProto","validate","combine","transformCSS","trim","callback","updateOld","star","staticContext","build","sharedSet","protoUpdate","protoAnimate","promise","result","easing","repeater","context","expr","readElement","readMustacheComment","leadingWhitespace","s","aliases","readRegexpLiteral","readConditional","readLogicalOr","namePattern","readNumberLiteral","getKeyValuePair","stringMiddlePattern","child","prop","resolve","Promise"],"mappings":"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ACT,IAAI,EAAE,GAAG;EACT,KAAK,EAAE,GAAG;EACV,GAAG,EAAE,GAAG;EACR,GAAG,EAAE,GAAG;EACR,GAAG,EAAE,GAAG;EACR,IAAI,EAAE,GAAG;EACT,GAAG,EAAE,GAAG;EACR,MAAM,EAAE,GAAG;EACX,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,KAAK,EAAE,GAAG;EACV,KAAK,EAAE,GAAG;EACV,IAAI,EAAE,GAAG;EACT,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,IAAI,EAAE,GAAG;EACT,KAAK,EAAE,GAAG;EACV,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,IAAI,EAAE,GAAG;EACT,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,IAAI,EAAE,GAAG;EACT,GAAG,EAAE,GAAG;EACR,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,IAAI,EAAE,GAAG;EACT,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,IAAI,EAAE,GAAG;EACT,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,IAAI,EAAE,GAAG;EACT,KAAK,EAAE,GAAG;E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"}