{
  "version": 3,
  "sources": ["../src/index.js", "../src/batch.js", "../src/constants.js", "../src/types/ref.js", "../src/action.js", "../src/clone.js", "../src/types/internal.js", "../src/types/array.js", "../src/types/map.js", "../src/types/set.js", "../src/proxy.js", "../src/snapshot.js"],
  "sourcesContent": ["// inspired by: https://github.com/pmndrs/valtio\n\n/**\n * @typedef {Record<string, { $$count: number; $$props?: Listeners }>} Listeners\n */\n\n/**\n * @callback UnsubscribeFunction\n */\n\nimport { batchHandler } from './batch.js'\nimport { kStaty, isValidForStaty } from './constants.js'\nimport { RefStaty } from './types/ref.js'\nimport { createProxy } from './proxy.js'\n\nfunction _subscribe (state, handler, prop, opts = {}) {\n  const { filter = null, before = false } = opts\n\n  handler = { run: handler, filter, before }\n\n  const subscriptions = state[kStaty].subscriptions\n\n  if (prop) {\n    if (!subscriptions.props.has(prop)) {\n      subscriptions.props.set(prop, new Set())\n    }\n    subscriptions.props.get(prop).add(handler)\n  } else {\n    subscriptions.default.add(handler)\n  }\n\n  return () => {\n    if (prop) {\n      subscriptions.props.get(prop).delete(handler)\n    } else {\n      subscriptions.default.delete(handler)\n    }\n  }\n}\n\nconst defaultOnReadOnly = (target, prop, value) => {\n  console.warn('snapshots are readonly', { target, prop, value })\n}\n\nconst CACHE = new WeakMap()\n\n/**\n * Creates a new proxy-state\n *\n * @template {object} T\n * @param {T} target\n * @param {object} [opts]\n * @param {(target: T, prop: unknown, value: unknown) => {}} [opts.onReadOnly]\n * @param {(state: T) => {}} [opts.onAction]\n * @returns {T}\n */\nexport function staty (target, opts = {}) {\n  const {\n    onReadOnly = defaultOnReadOnly,\n    onAction\n  } = opts\n\n  if (target?.[kStaty]) return target\n\n  const targetType = Object.prototype.toString.call(target)\n\n  if (!isValidForStaty(targetType)) {\n    throw new Error('the `target` is not valid for staty')\n  }\n\n  if (CACHE.has(/** @type {object} */(target))) {\n    return CACHE.get(/** @type {object} */(target))\n  }\n\n  const proxyOptions = { onReadOnly }\n\n  const state = createProxy(proxyOptions, target, undefined, undefined, targetType)\n\n  if (onAction) {\n    onAction(state)\n    state[kStaty].setOnAction(onAction)\n  }\n\n  CACHE.set(/** @type {object} */(target), state)\n\n  return state\n}\n\n/**\n * Get subscription listeners count\n *\n * @template {object} T\n * @param {T} state\n * @returns {{ $$count: number, $$props: Listeners }}\n */\nexport function listeners (state) {\n  if (!state || !state[kStaty] || state[kStaty].isRef) throw new Error('state is not valid')\n\n  const internal = state[kStaty]\n\n  const subscriptions = internal.subscriptions\n\n  /** @type {Listeners} */\n  const props = {}\n\n  let count = subscriptions.default.size\n\n  subscriptions.props.forEach((listeners, prop) => {\n    props[prop] = { $$count: listeners.size }\n    count += listeners.size\n  })\n\n  internal.forEach((val, prop) => {\n    if (val?.[kStaty] && !val[kStaty].isRef) {\n      const res = listeners(val)\n      count += res.$$count\n      if (props[prop]) {\n        props[prop].$$count += res.$$count\n        props[prop].$$props = res.$$props\n      } else {\n        props[prop] = res\n      }\n    }\n  })\n\n  return {\n    $$count: count,\n    $$props: props\n  }\n}\n\n/**\n * Subscribe for changes in the state\n *\n * @template {object} T\n * @param {T} state\n * @param {() => void} handler\n * @param {Object} [opts]\n * @param {string|string[]} [opts.props] props to subscribe\n * @param {(actionName: string) => boolean} [opts.filter] subscribe only for specific action names\n * @param {boolean} [opts.batch=false] execute in batch turning the subscription into async\n * @param {boolean} [opts.autorun=false] run immediately\n * @param {boolean} [opts.before=false] run before finish the action. A good place to validate changes\n * @returns {UnsubscribeFunction}\n */\nexport function subscribe (state, handler, opts = {}) {\n  if (!state || !state[kStaty] || state[kStaty].isRef) throw new Error('state is not valid')\n\n  const {\n    props,\n    filter,\n    batch = false,\n    autorun = false,\n    before = false\n  } = opts\n\n  if (batch && before) throw new Error('batch=true with before=true is not possible')\n  if (autorun && before) throw new Error('autorun=true with before=true is not possible')\n\n  const subscribeProps = {\n    filter,\n    before\n  }\n\n  if (batch) {\n    const userHandler = handler\n    handler = () => batchHandler(userHandler)\n  }\n\n  let dispose\n  if (!props) {\n    dispose = _subscribe(state, handler, null, subscribeProps)\n    if (autorun) handler()\n    return dispose\n  }\n\n  if (!Array.isArray(props)) {\n    dispose = _subscribe(state, () => {\n      return handler()\n    }, props, subscribeProps)\n    if (autorun) handler()\n    return dispose\n  }\n\n  let scheduled = false\n  const unsubscribes = props.map(prop => {\n    return _subscribe(state, () => {\n      if (!batch) return handler()\n\n      if (!scheduled) {\n        scheduled = true\n        queueMicrotask(() => {\n          scheduled = false\n        })\n        return handler()\n      }\n    }, prop, subscribeProps)\n  })\n\n  if (autorun) handler()\n  return () => unsubscribes.forEach(unsubscribe => unsubscribe())\n}\n\n/**\n * Add a ref to another object\n *\n * @template {object} T\n * @template {object | T} M\n * @param {T} value\n * @param {(ref: T) => M} [mapSnapshot]\n * @param {boolean} [cache] enable cache\n * @returns {T & RefStaty}\n */\nexport function ref (value, mapSnapshot, cache) {\n  const internal = new RefStaty(value, mapSnapshot, cache)\n\n  const obj = new Proxy(internal, {\n    get (_, prop) {\n      if (prop === kStaty) return internal\n      if (typeof internal.value[prop] === 'function') return (...args) => internal.value[prop](...args)\n      return internal.value[prop]\n    },\n    getOwnPropertyDescriptor (_, prop) {\n      try {\n        return Reflect.getOwnPropertyDescriptor(internal.value, prop)\n      } catch (err) {\n        return undefined\n      }\n    },\n    ownKeys () {\n      try {\n        return Reflect.ownKeys(internal.value)\n      } catch (err) {\n        return []\n      }\n    }\n  })\n\n  return /** @type {T & RefStaty} */(obj)\n}\n\n// /**\n//  * @param {Proxy<} target\n//  * @returns {Proxy<target> is target}\n//  */\n// export function release (target) {\n//   return new Proxy(target, {\n//     get: () => {\n//       return null\n//     }\n//   })\n// }\n\nexport { snapshot } from './snapshot.js'\nexport { action } from './action.js'\n", "const batches = new Set()\n\nexport function batchHandler (handler) {\n  if (batches.size > 0) {\n    batches.add(handler)\n    return\n  }\n\n  batches.add(handler)\n\n  queueMicrotask(() => {\n    batches.forEach(handler => handler())\n    batches.clear()\n  })\n}\n", "export const kStaty = Symbol('staty')\nexport const kEmpty = Symbol('empty')\nexport const kInternalAction = Symbol('internalAction')\nexport const isArray = '[object Array]'\nexport const isObject = '[object Object]'\nexport const isNumber = '[object Number]'\nexport const isString = '[object String]'\nexport const isBoolean = '[object Boolean]'\nexport const isSet = '[object Set]'\nexport const isMap = '[object Map]'\nexport const isDate = '[object Date]'\nexport const isRegexp = '[object RegExp]'\nexport const isDataView = '[object DataView]'\nexport const isBuffer = '[object ArrayBuffer]'\nexport const isValidForStaty = type => type === isObject || type === isArray || type === isMap || type === isSet\n", "const kValue = Symbol('valueRef')\n\nconst kMapSnapshot = Symbol('kMapSnapshot')\nconst kSnapshot = Symbol('kSnapshot')\nexport class RefStaty {\n  constructor (value, mapSnapshot, cache = false) {\n    this.isRef = true\n    this.cache = cache\n    this[kMapSnapshot] = mapSnapshot\n    this[kSnapshot] = null\n    this.setValue(value)\n  }\n\n  setValue (value) {\n    this.value = value\n    this.updateSnapshot()\n  }\n\n  getSnapshot () {\n    const snapshot = this[kSnapshot]\n    if (this.cache) return snapshot === kValue ? this.value : snapshot\n    this.updateSnapshot()\n    return snapshot === kValue ? this.value : snapshot\n  }\n\n  updateSnapshot () {\n    this[kSnapshot] = kValue\n    const mapSnapshot = this[kMapSnapshot]\n    if (mapSnapshot) {\n      this[kSnapshot] = mapSnapshot(this.value)\n    }\n  }\n}\n", "class Action {\n  constructor (name, onRelease) {\n    this._name = name\n    this._onRelease = onRelease\n    this._beforeHandlers = new Set()\n    this._handlers = new Set()\n    this._done = false\n    this._history = []\n  }\n\n  get name () {\n    return this._name\n  }\n\n  valid (handler) {\n    if (!handler.filter) return true\n    return handler.filter(this._name)\n  }\n\n  add (handler) {\n    if (handler.before) {\n      this._beforeHandlers.add(handler)\n    } else {\n      this._handlers.add(handler)\n    }\n  }\n\n  done () {\n    if (this._done) return\n\n    try {\n      this._beforeHandlers.forEach(handler => handler.run(this._name))\n    } catch (err) {\n      this.cancel()\n      throw err\n    }\n\n    this._done = true\n    this._onRelease()\n    this._handlers.forEach(handler => handler.run(this._name))\n  }\n\n  cancel () {\n    if (this._done) return\n    for (let i = this._history.length - 1; i >= 0; i--) {\n      this._history[i]()\n    }\n    this._history = []\n    this._done = true\n    this._onRelease()\n  }\n\n  pushHistory (rollback) {\n    this._history.push(rollback)\n  }\n}\n\nexport class ActionManager {\n  constructor () {\n    this._stack = []\n    this._onRelease = () => {\n      this._stack.pop()\n    }\n  }\n\n  get current () {\n    return this._stack[this._stack.length - 1]\n  }\n\n  /**\n   *\n   * @param {string | symbol | number} name\n   * @returns\n   */\n  create (name = '_') {\n    const action = new Action(name, this._onRelease)\n    this._stack.push(action)\n    return action\n  }\n}\n\nexport const actions = new ActionManager()\n\n/**\n * Create a action\n * @param {function} handler\n * @param {string} [actionName]\n */\nexport function action (handler, actionName) {\n  const action = actions.create(actionName)\n  try {\n    handler(() => action.cancel())\n  } catch (err) {\n    action.cancel()\n    throw err\n  } finally {\n    action.done()\n  }\n}\n", "import { isDate, isRegexp, isDataView, isBuffer } from './constants.js'\n\nexport function cloneStructures (x, str) {\n  let tmp\n\n  if (str === isDate) {\n    tmp = new Date(+x)\n  } else if (str === isRegexp) {\n    tmp = new RegExp(x.source, x.flags)\n    tmp.lastIndex = x.lastIndex\n  } else if (str === isDataView) {\n    tmp = new x.constructor(cloneStructures(x.buffer, isBuffer))\n  } else if (str === isBuffer) {\n    tmp = x.slice(0)\n  } else if (str.slice(-6) === 'Array]') {\n    tmp = x.constructor.from(x)\n  }\n\n  return tmp\n}\n", "import { kEmpty, kInternalAction, kStaty, isValidForStaty } from '../constants.js'\nimport { actions } from '../action.js'\nimport { cloneStructures } from '../clone.js'\nimport { createProxy } from '../proxy.js'\n\nfunction toString (value) {\n  const type = typeof value\n  if (type === 'string') return value\n  if (type === 'object') return '?'\n  if (type === 'symbol') return value.toString()\n  return String(value)\n}\n\nexport const rawValue = (value) => {\n  if (!value || typeof value !== 'object') return value\n\n  const staty = value?.[kStaty]\n  if (staty) {\n    if (staty.isRef) return value\n    return staty.getSnapshot()\n  }\n\n  return cloneStructures(value, Object.prototype.toString.call(value))\n}\nexport class InternalStaty {\n  constructor (source, target, { onReadOnly }) {\n    this.source = source\n    this.target = target\n    this.onReadOnly = onReadOnly\n    this.subscriptions = {\n      default: new Set(),\n      props: new Map()\n    }\n    this.propsBinded = new Map()\n    this.isRef = false\n    this.onGetSnapshot = this.onGetSnapshot.bind(this)\n    this._snapshot = kEmpty\n    /** @type {Proxy<typeof target>} */\n    this.proxy = null\n  }\n\n  forEach (callback) {\n    for (const prop in this.target) {\n      callback(this.target[prop], prop)\n    }\n  }\n\n  setProxy (proxy) {\n    this.proxy = proxy\n  }\n\n  setOnAction (onAction) {\n    this.onAction = {\n      run: actionName => onAction(this.proxy, actionName),\n      before: true\n    }\n  }\n\n  getValueByProp (prop) {\n    const value = this.reflectGet(this.target, prop)\n    const staty = value?.[kStaty]\n    if (staty && staty.isRef) return staty.getSnapshot()\n    return value\n  }\n\n  getSnapshot () {\n    if (this._snapshot !== kEmpty) return this._snapshot\n    const internal = this\n    const snapshot = this._snapshot = new Proxy(this.clone(), {\n      get (target, prop) {\n        const value = Reflect.get(target, prop)\n        if (prop === 'constructor') return value\n        if (value?.[kStaty]) {\n          return value[kStaty].getSnapshot()\n        }\n        return internal.onGetSnapshot(target, prop, value)\n      },\n      set (target, prop, value) {\n        internal.onReadOnly(target, prop, value)\n        return true\n      }\n    })\n    return snapshot\n  }\n\n  onGetSnapshot (target, prop, value) {\n    return value\n  }\n\n  clone () {\n    let k\n    const x = this.target\n    const tmp = Object.create(Object.getPrototypeOf(x))\n    for (k in x) {\n      tmp[k] = rawValue(x[k])\n    }\n    return tmp\n  }\n\n  clearSnapshot () {\n    this._snapshot = kEmpty\n  }\n\n  handler (value, prop) {\n    return value\n  }\n\n  checkCircularReference (prop, value) {\n    prop = toString(prop)\n\n    if (this === value) {\n      const err = new Error('circular reference detected')\n      // @ts-ignore\n      err.location = `^${prop}`\n      // @ts-ignore\n      err.value = value.getSnapshot()\n      throw err\n    }\n\n    this.propsBinded.forEach((parents, propBinded) => {\n      propBinded = toString(propBinded)\n      parents.forEach(parent => {\n        parent.checkCircularReference(`${propBinded}.${prop}`, value)\n      })\n    })\n  }\n\n  addParent (prop, parent, checkCircularReference) {\n    let parents\n    if (this.propsBinded.has(prop)) {\n      parents = this.propsBinded.get(prop)\n    } else {\n      parents = new Set()\n      this.propsBinded.set(prop, parents)\n    }\n\n    if (checkCircularReference) {\n      parent.checkCircularReference(prop, this)\n    }\n\n    parents.add(parent)\n  }\n\n  delParent (prop, parent) {\n    const parents = this.propsBinded.get(prop)\n    parents.delete(parent)\n    if (parents.size === 0) this.propsBinded.delete(prop)\n  }\n\n  run (prop, rollback) {\n    let action = actions.current\n\n    this.clearSnapshot()\n\n    let actionInitiator = false\n    if (rollback && (!action || action.name === kInternalAction)) {\n      action = actions.create(kInternalAction)\n      actionInitiator = true\n    }\n\n    try {\n      if (rollback) action.pushHistory(rollback)\n\n      if (this.onAction) {\n        action.add(this.onAction)\n      }\n\n      const subscriptions = this.subscriptions\n\n      if (prop) {\n        for (const [key, handlers] of subscriptions.props.entries()) {\n          if (prop.startsWith(`${key}.`) || prop === key) {\n            Array.from(handlers.values()).forEach(handler => {\n              if (action.valid(handler)) {\n                action.add(handler)\n              }\n            })\n          }\n        }\n      }\n\n      Array.from(subscriptions.default.values()).forEach(handler => {\n        if (action.valid(handler)) {\n          action.add(handler)\n        }\n      })\n\n      this.propsBinded.forEach((parents, propBinded) => {\n        propBinded = toString(propBinded)\n        parents.forEach(parent => {\n          parent.run(prop ? `${propBinded}.${prop}` : propBinded)\n        })\n      })\n\n      actionInitiator && action.done()\n    } catch (err) {\n      actionInitiator && action.cancel()\n      throw err\n    }\n  }\n\n  get (target, prop) {\n    return this._get(target, prop, true)\n  }\n\n  set (target, prop, value) {\n    return this._set(target, prop, value, true)\n  }\n\n  deleteProperty (target, prop) {\n    return this._deleteProperty(target, prop, true)\n  }\n\n  reflectSet (target, prop, value, useBaseReflect) {\n    return Reflect.set(target, prop, value)\n  }\n\n  reflectHas (target, prop, useBaseReflect) {\n    return Reflect.has(target, prop)\n  }\n\n  reflectGet (target, prop, useBaseReflect) {\n    return Reflect.get(target, prop)\n  }\n\n  reflectDeleteProperty (target, prop, useBaseReflect) {\n    return Reflect.deleteProperty(target, prop)\n  }\n\n  _get (target, prop, useBaseReflect) {\n    if (prop === kStaty) return this\n\n    const value = this.reflectGet(target, prop, useBaseReflect)\n    if (value === null || value === undefined) return value\n\n    const valueStaty = value?.[kStaty]\n\n    if (valueStaty?.isRef) {\n      return valueStaty.value\n    }\n\n    return this.handler(value, prop)\n  }\n\n  _set (target, prop, value, useBaseReflect) {\n    const internal = this\n    const newProp = !internal.reflectHas(target, prop, useBaseReflect)\n    const oldValue = internal.reflectGet(target, prop, useBaseReflect)\n    const oldValueStaty = oldValue?.[kStaty]\n    let valueStaty = value?.[kStaty]\n\n    // start ref support\n    if (oldValueStaty?.isRef && !valueStaty?.isRef) {\n      if (oldValue === value || oldValueStaty.value === value) return true\n      const oldRawValue = oldValueStaty.value\n      oldValueStaty.setValue(value)\n      internal.run(prop, () => {\n        internal.clearSnapshot()\n        oldValueStaty.setValue(oldRawValue)\n      })\n      return true\n    } else if (valueStaty?.isRef) {\n      if (internal.reflectSet(target, prop, value, useBaseReflect)) {\n        internal.run(prop, () => {\n          internal.clearSnapshot()\n          if (newProp) return internal.reflectDeleteProperty(target, prop, useBaseReflect)\n          internal.reflectSet(target, prop, oldValue, useBaseReflect)\n        })\n      }\n      return true\n    }\n    // end ref support\n\n    if (oldValue === value || (oldValueStaty && oldValueStaty.source === value)) return true\n\n    let checkCircularReference = true\n    let type\n    if (!valueStaty) {\n      type = Object.prototype.toString.call(value)\n      if (isValidForStaty(type)) {\n        value = createProxy({ onReadOnly: internal.onReadOnly }, value, null, null, type)\n        valueStaty = value[kStaty]\n        checkCircularReference = false\n      } else {\n        internal.reflectSet(target, prop, value, useBaseReflect)\n\n        internal.run(prop, () => {\n          internal.clearSnapshot()\n\n          if (newProp) {\n            internal.reflectDeleteProperty(target, prop, useBaseReflect)\n            return\n          }\n\n          internal.reflectSet(target, prop, oldValue, useBaseReflect)\n        })\n\n        return true\n      }\n    }\n\n    if (oldValueStaty !== valueStaty) {\n      valueStaty?.addParent(prop, internal, checkCircularReference)\n      oldValueStaty?.delParent(prop, internal)\n    }\n\n    internal.reflectSet(target, prop, value, useBaseReflect)\n\n    internal.run(prop, () => {\n      internal.clearSnapshot()\n\n      if (oldValueStaty !== valueStaty) {\n        oldValueStaty?.addParent(prop, internal)\n        valueStaty?.delParent(prop, internal)\n      }\n\n      if (newProp) {\n        internal.reflectDeleteProperty(target, prop, useBaseReflect)\n        return\n      }\n\n      internal.reflectSet(target, prop, oldValue, useBaseReflect)\n    })\n\n    return true\n  }\n\n  _deleteProperty (target, prop, useBaseReflect) {\n    const internal = this\n    if (!internal.reflectHas(target, prop, useBaseReflect)) return true\n\n    const oldValue = internal.reflectGet(target, prop, useBaseReflect)\n    oldValue?.[kStaty]?.delParent?.(prop, internal)\n\n    if (internal.reflectDeleteProperty(target, prop, useBaseReflect)) {\n      internal.run(prop, () => {\n        internal.clearSnapshot()\n        oldValue?.[kStaty]?.addParent?.(prop, internal)\n        internal.reflectSet(target, prop, oldValue, useBaseReflect)\n      })\n    }\n    return true\n  }\n}\n", "import { InternalStaty, rawValue } from './internal.js'\nimport { actions, action } from '../action.js'\n\nexport class ArrayStaty extends InternalStaty {\n  forEach (callback) {\n    this.target.forEach(callback)\n  }\n\n  onGetSnapshot (target, prop, value) {\n    if (prop === 'splice' || prop === 'unshift' || prop === 'push' || prop === 'pop' || prop === 'shift' || prop === 'reverse' || prop === 'sort') {\n      this.onReadOnly(target, prop, value)\n      return () => {}\n    }\n    if (typeof value === 'function') return value.bind(target)\n    return value\n  }\n\n  clone () {\n    let k\n    const x = this.target\n    k = x.length\n    const tmp = Array(k)\n    for (; k--;) {\n      tmp[k] = rawValue(x[k])\n    }\n    return tmp\n  }\n\n  handler (value, prop) {\n    if (prop === 'splice' || prop === 'unshift' || prop === 'push' || prop === 'pop' || prop === 'shift' || prop === 'reverse' || prop === 'sort') {\n      return (...args) => {\n        if (actions.current) {\n          return value.call(this.proxy, ...args)\n        } else {\n          let res\n          action(() => {\n            res = value.call(this.proxy, ...args)\n          })\n          return res\n        }\n      }\n    }\n    if (typeof value === 'function') return value.bind(this.target)\n    return value\n  }\n\n  reflectDeleteProperty (target, prop) {\n    const newArr = target.filter((_, i) => `${i}` !== prop)\n    target.splice(0, target.length, ...newArr)\n    return true\n  }\n}\n", "import { InternalStaty, rawValue } from './internal.js'\nimport { actions, action } from '../action.js'\n\nexport class MapStaty extends InternalStaty {\n  constructor (...args) {\n    super(...args)\n\n    this._setHandler = this._setHandler.bind(this)\n    this._deleteHandler = this._deleteHandler.bind(this)\n    this._clearHandler = this._clearHandler.bind(this)\n  }\n\n  forEach (callback) {\n    this.target.forEach(callback)\n  }\n\n  onGetSnapshot (target, prop, value) {\n    if (prop === 'set' || prop === 'delete' || prop === 'clear') {\n      this.onReadOnly(target, prop, value)\n      return () => {}\n    }\n    if (typeof value === 'function') return value.bind(target)\n    return value\n  }\n\n  clone () {\n    const x = this.target\n    const tmp = new Map()\n    x.forEach(function (val, key) {\n      tmp.set(key, rawValue(val))\n    })\n    return tmp\n  }\n\n  reflectSet (target, prop, value, useBaseReflect) {\n    if (useBaseReflect) return Reflect.set(target, prop, value)\n    return !!target.set(prop, value)\n  }\n\n  reflectHas (target, prop, useBaseReflect) {\n    if (useBaseReflect) return Reflect.has(target, prop)\n    return target.has(prop)\n  }\n\n  reflectGet (target, prop, useBaseReflect) {\n    if (useBaseReflect) return Reflect.get(target, prop)\n    return target.get(prop)\n  }\n\n  reflectDeleteProperty (target, prop, useBaseReflect) {\n    if (useBaseReflect) return Reflect.deleteProperty(target, prop)\n    return target.delete(prop)\n  }\n\n  handler (value, prop) {\n    if (prop === 'set') return this._setHandler\n    if (prop === 'delete') return this._deleteHandler\n    if (prop === 'clear') return this._clearHandler\n    if (typeof value === 'function') return value.bind(this.target)\n    return value\n  }\n\n  _setHandler (key, val) {\n    return this._set(this.target, key, val)\n  }\n\n  _deleteHandler (key) {\n    return this._deleteProperty(this.target, key)\n  }\n\n  _clearHandler () {\n    if (actions.current) {\n      this.target.forEach((_, key) => {\n        this._deleteHandler(key)\n      })\n    } else {\n      action(() => {\n        this.target.forEach((_, key) => {\n          this._deleteHandler(key)\n        })\n      })\n    }\n  }\n}\n", "import { InternalStaty, rawValue } from './internal.js'\nimport { actions, action } from '../action.js'\n\nexport class SetStaty extends InternalStaty {\n  constructor (...args) {\n    super(...args)\n\n    this._reverse = new Map(this.source.entries())\n    this._addHandler = this._addHandler.bind(this)\n    this._deleteHandler = this._deleteHandler.bind(this)\n    this._clearHandler = this._clearHandler.bind(this)\n    this._hasHandler = this._hasHandler.bind(this)\n  }\n\n  forEach (callback) {\n    this.target.forEach(callback)\n  }\n\n  onGetSnapshot (target, prop, value) {\n    if (prop === 'add' || prop === 'delete' || prop === 'clear') {\n      this.onReadOnly(target, prop, value)\n      return () => {}\n    }\n    if (typeof value === 'function') return value.bind(target)\n    return value\n  }\n\n  clone () {\n    const x = this.target\n    const tmp = new Set()\n    x.forEach(function (val) {\n      tmp.add(rawValue(val))\n    })\n    return tmp\n  }\n\n  handler (value, prop) {\n    if (prop === 'add') return this._addHandler\n    if (prop === 'delete') return this._deleteHandler\n    if (prop === 'clear') return this._clearHandler\n    if (prop === 'has') return this._hasHandler\n    if (typeof value === 'function') return value.bind(this.target)\n    return value\n  }\n\n  reflectSet (target, prop, value, useBaseReflect) {\n    if (useBaseReflect) return Reflect.set(target, prop, value)\n    this._reverse.set(prop, value)\n    return !!target.add(value)\n  }\n\n  reflectHas (target, prop, useBaseReflect) {\n    if (useBaseReflect) return Reflect.has(target, prop)\n    return this._reverse.has(prop)\n  }\n\n  reflectGet (target, prop, useBaseReflect) {\n    if (useBaseReflect) return Reflect.get(target, prop)\n    if (this._reverse.has(prop)) return prop\n    return undefined\n  }\n\n  reflectDeleteProperty (target, prop, useBaseReflect) {\n    if (useBaseReflect) return Reflect.deleteProperty(target, prop)\n    const val = this._reverse.get(prop)\n    this._reverse.delete(prop)\n    return target.delete(val)\n  }\n\n  _addHandler (val) {\n    return this._set(this.target, val, val)\n  }\n\n  _deleteHandler (val) {\n    return this._deleteProperty(this.target, val)\n  }\n\n  _hasHandler (val) {\n    return this._reverse.has(val)\n  }\n\n  _clearHandler () {\n    if (actions.current) {\n      this.target.forEach(value => {\n        this._deleteHandler(value)\n      })\n    } else {\n      action(() => {\n        this.target.forEach(value => {\n          this._deleteHandler(value)\n        })\n      })\n    }\n  }\n}\n", "import { kStaty, isObject, isArray, isSet, isMap } from './constants.js'\nimport { InternalStaty } from './types/internal.js'\nimport { ArrayStaty } from './types/array.js'\nimport { MapStaty } from './types/map.js'\nimport { SetStaty } from './types/set.js'\nimport { cloneStructures } from './clone.js'\n\nfunction _createProxy (internal) {\n  const state = new Proxy(internal.target, internal)\n  internal.setProxy(state)\n  return state\n}\n\nexport function createProxy (proxyOptions, x, p, pk, type) {\n  if (!x || typeof x !== 'object') return x\n\n  const staty = x?.[kStaty]\n  if (staty) {\n    if (p && !staty.isRef) staty.addParent(pk, p[kStaty], true)\n    return x\n  }\n\n  const str = type || Object.prototype.toString.call(x)\n\n  let k\n  let tmp\n  let proxy\n\n  if (str === isObject) {\n    tmp = Object.create(Object.getPrototypeOf(x)) // null\n    proxy = _createProxy(new InternalStaty(x, tmp, proxyOptions))\n    for (k in x) {\n      tmp[k] = createProxy(proxyOptions, x[k], proxy, k)\n    }\n  } else if (str === isArray) {\n    k = x.length\n    tmp = Array(k)\n    proxy = _createProxy(new ArrayStaty(x, tmp, proxyOptions))\n    for (; k--;) {\n      tmp[k] = createProxy(proxyOptions, x[k], proxy, k)\n    }\n  } else if (str === isSet) {\n    tmp = new Set()\n    proxy = _createProxy(new SetStaty(x, tmp, proxyOptions))\n    x.forEach(function (val) {\n      tmp.add(createProxy(proxyOptions, val, proxy, val))\n    })\n  } else if (str === isMap) {\n    tmp = new Map()\n    proxy = _createProxy(new MapStaty(x, tmp, proxyOptions))\n    x.forEach(function (val, key) {\n      tmp.set(createProxy(proxyOptions, key, proxy, key), createProxy(proxyOptions, val, proxy, key))\n    })\n  } else {\n    tmp = cloneStructures(x, str)\n  }\n\n  if (proxy) {\n    if (p) proxy[kStaty].addParent(pk, p[kStaty], false)\n    return proxy\n  }\n\n  return tmp\n}\n", "// based on https://github.com/lukeed/klona\nimport { kStaty } from './constants.js'\n\nfunction snapshotProp (state, prop) {\n  const value = dlv(state, prop)\n\n  const staty = value?.[kStaty]\n  if (staty) {\n    return staty.getSnapshot()\n  }\n\n  return value\n}\n\nfunction dlv (obj, key) {\n  let p\n  for (p = 0; p < key.length; p++) {\n    if (obj) {\n      const staty = obj?.[kStaty]\n      const k = key[p]\n      if (staty) {\n        obj = staty.getValueByProp(k)\n      } else {\n        obj = obj[k]\n      }\n    } else {\n      return obj\n    }\n  }\n  return obj\n}\n\n/**\n * Create an snapshot from the state\n *\n * @template {unknown} T\n * @overload\n * @param {T} state\n * @returns {T}\n *\n * @template {unknown} T\n * @overload\n * @param {T} state\n * @param {Array<string>} props\n * @returns {Array<unknown>}\n *\n * @template {unknown} T\n * @overload\n * @param {T} state\n * @param {string} props\n * @returns {unknown}\n */\nexport function snapshot (state, props) {\n  if (!state[kStaty]) throw new Error('the snapshot requires a valid staty object')\n\n  if (Array.isArray(props)) {\n    return props.map(p => snapshotProp(state, p.split('.')))\n  }\n\n  if (typeof props === 'string') {\n    return snapshotProp(state, props.split('.'))\n  }\n\n  return state[kStaty].getSnapshot()\n}\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAM,UAAU,oBAAI,IAAI;AAEjB,SAAS,aAAc,SAAS;AACrC,MAAI,QAAQ,OAAO,GAAG;AACpB,YAAQ,IAAI,OAAO;AACnB;AAAA,EACF;AAEA,UAAQ,IAAI,OAAO;AAEnB,iBAAe,MAAM;AACnB,YAAQ,QAAQ,CAAAA,aAAWA,SAAQ,CAAC;AACpC,YAAQ,MAAM;AAAA,EAChB,CAAC;AACH;;;ACdO,IAAM,SAAS,OAAO,OAAO;AAC7B,IAAM,SAAS,OAAO,OAAO;AAC7B,IAAM,kBAAkB,OAAO,gBAAgB;AAC/C,IAAM,UAAU;AAChB,IAAM,WAAW;AAIjB,IAAM,QAAQ;AACd,IAAM,QAAQ;AACd,IAAM,SAAS;AACf,IAAM,WAAW;AACjB,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,kBAAkB,UAAQ,SAAS,YAAY,SAAS,WAAW,SAAS,SAAS,SAAS;;;ACd3G,IAAM,SAAS,OAAO,UAAU;AAEhC,IAAM,eAAe,OAAO,cAAc;AAC1C,IAAM,YAAY,OAAO,WAAW;AAC7B,IAAM,WAAN,MAAe;AAAA,EACpB,YAAa,OAAO,aAAa,QAAQ,OAAO;AAC9C,SAAK,QAAQ;AACb,SAAK,QAAQ;AACb,SAAK,YAAY,IAAI;AACrB,SAAK,SAAS,IAAI;AAClB,SAAK,SAAS,KAAK;AAAA,EACrB;AAAA,EAEA,SAAU,OAAO;AACf,SAAK,QAAQ;AACb,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,cAAe;AACb,UAAMC,YAAW,KAAK,SAAS;AAC/B,QAAI,KAAK;AAAO,aAAOA,cAAa,SAAS,KAAK,QAAQA;AAC1D,SAAK,eAAe;AACpB,WAAOA,cAAa,SAAS,KAAK,QAAQA;AAAA,EAC5C;AAAA,EAEA,iBAAkB;AAChB,SAAK,SAAS,IAAI;AAClB,UAAM,cAAc,KAAK,YAAY;AACrC,QAAI,aAAa;AACf,WAAK,SAAS,IAAI,YAAY,KAAK,KAAK;AAAA,IAC1C;AAAA,EACF;AACF;;;AChCA,IAAM,SAAN,MAAa;AAAA,EACX,YAAa,MAAM,WAAW;AAC5B,SAAK,QAAQ;AACb,SAAK,aAAa;AAClB,SAAK,kBAAkB,oBAAI,IAAI;AAC/B,SAAK,YAAY,oBAAI,IAAI;AACzB,SAAK,QAAQ;AACb,SAAK,WAAW,CAAC;AAAA,EACnB;AAAA,EAEA,IAAI,OAAQ;AACV,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAO,SAAS;AACd,QAAI,CAAC,QAAQ;AAAQ,aAAO;AAC5B,WAAO,QAAQ,OAAO,KAAK,KAAK;AAAA,EAClC;AAAA,EAEA,IAAK,SAAS;AACZ,QAAI,QAAQ,QAAQ;AAClB,WAAK,gBAAgB,IAAI,OAAO;AAAA,IAClC,OAAO;AACL,WAAK,UAAU,IAAI,OAAO;AAAA,IAC5B;AAAA,EACF;AAAA,EAEA,OAAQ;AACN,QAAI,KAAK;AAAO;AAEhB,QAAI;AACF,WAAK,gBAAgB,QAAQ,aAAW,QAAQ,IAAI,KAAK,KAAK,CAAC;AAAA,IACjE,SAAS,KAAP;AACA,WAAK,OAAO;AACZ,YAAM;AAAA,IACR;AAEA,SAAK,QAAQ;AACb,SAAK,WAAW;AAChB,SAAK,UAAU,QAAQ,aAAW,QAAQ,IAAI,KAAK,KAAK,CAAC;AAAA,EAC3D;AAAA,EAEA,SAAU;AACR,QAAI,KAAK;AAAO;AAChB,aAAS,IAAI,KAAK,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK;AAClD,WAAK,SAAS,CAAC,EAAE;AAAA,IACnB;AACA,SAAK,WAAW,CAAC;AACjB,SAAK,QAAQ;AACb,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,YAAa,UAAU;AACrB,SAAK,SAAS,KAAK,QAAQ;AAAA,EAC7B;AACF;AAEO,IAAM,gBAAN,MAAoB;AAAA,EACzB,cAAe;AACb,SAAK,SAAS,CAAC;AACf,SAAK,aAAa,MAAM;AACtB,WAAK,OAAO,IAAI;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,IAAI,UAAW;AACb,WAAO,KAAK,OAAO,KAAK,OAAO,SAAS,CAAC;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAQ,OAAO,KAAK;AAClB,UAAMC,UAAS,IAAI,OAAO,MAAM,KAAK,UAAU;AAC/C,SAAK,OAAO,KAAKA,OAAM;AACvB,WAAOA;AAAA,EACT;AACF;AAEO,IAAM,UAAU,IAAI,cAAc;AAOlC,SAAS,OAAQ,SAAS,YAAY;AAC3C,QAAMA,UAAS,QAAQ,OAAO,UAAU;AACxC,MAAI;AACF,YAAQ,MAAMA,QAAO,OAAO,CAAC;AAAA,EAC/B,SAAS,KAAP;AACA,IAAAA,QAAO,OAAO;AACd,UAAM;AAAA,EACR,UAAE;AACA,IAAAA,QAAO,KAAK;AAAA,EACd;AACF;;;AChGO,SAAS,gBAAiB,GAAG,KAAK;AACvC,MAAI;AAEJ,MAAI,QAAQ,QAAQ;AAClB,UAAM,oBAAI,KAAK,CAAC,CAAC;AAAA,EACnB,WAAW,QAAQ,UAAU;AAC3B,UAAM,IAAI,OAAO,EAAE,QAAQ,EAAE,KAAK;AAClC,QAAI,YAAY,EAAE;AAAA,EACpB,WAAW,QAAQ,YAAY;AAC7B,UAAM,IAAI,EAAE,YAAY,gBAAgB,EAAE,QAAQ,QAAQ,CAAC;AAAA,EAC7D,WAAW,QAAQ,UAAU;AAC3B,UAAM,EAAE,MAAM,CAAC;AAAA,EACjB,WAAW,IAAI,MAAM,EAAE,MAAM,UAAU;AACrC,UAAM,EAAE,YAAY,KAAK,CAAC;AAAA,EAC5B;AAEA,SAAO;AACT;;;ACdA,SAAS,SAAU,OAAO;AACxB,QAAM,OAAO,OAAO;AACpB,MAAI,SAAS;AAAU,WAAO;AAC9B,MAAI,SAAS;AAAU,WAAO;AAC9B,MAAI,SAAS;AAAU,WAAO,MAAM,SAAS;AAC7C,SAAO,OAAO,KAAK;AACrB;AAEO,IAAM,WAAW,CAAC,UAAU;AACjC,MAAI,CAAC,SAAS,OAAO,UAAU;AAAU,WAAO;AAEhD,QAAMC,SAAQ,QAAQ,MAAM;AAC5B,MAAIA,QAAO;AACT,QAAIA,OAAM;AAAO,aAAO;AACxB,WAAOA,OAAM,YAAY;AAAA,EAC3B;AAEA,SAAO,gBAAgB,OAAO,OAAO,UAAU,SAAS,KAAK,KAAK,CAAC;AACrE;AACO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YAAa,QAAQ,QAAQ,EAAE,WAAW,GAAG;AAC3C,SAAK,SAAS;AACd,SAAK,SAAS;AACd,SAAK,aAAa;AAClB,SAAK,gBAAgB;AAAA,MACnB,SAAS,oBAAI,IAAI;AAAA,MACjB,OAAO,oBAAI,IAAI;AAAA,IACjB;AACA,SAAK,cAAc,oBAAI,IAAI;AAC3B,SAAK,QAAQ;AACb,SAAK,gBAAgB,KAAK,cAAc,KAAK,IAAI;AACjD,SAAK,YAAY;AAEjB,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,QAAS,UAAU;AACjB,eAAW,QAAQ,KAAK,QAAQ;AAC9B,eAAS,KAAK,OAAO,IAAI,GAAG,IAAI;AAAA,IAClC;AAAA,EACF;AAAA,EAEA,SAAU,OAAO;AACf,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,YAAa,UAAU;AACrB,SAAK,WAAW;AAAA,MACd,KAAK,gBAAc,SAAS,KAAK,OAAO,UAAU;AAAA,MAClD,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EAEA,eAAgB,MAAM;AACpB,UAAM,QAAQ,KAAK,WAAW,KAAK,QAAQ,IAAI;AAC/C,UAAMA,SAAQ,QAAQ,MAAM;AAC5B,QAAIA,UAASA,OAAM;AAAO,aAAOA,OAAM,YAAY;AACnD,WAAO;AAAA,EACT;AAAA,EAEA,cAAe;AACb,QAAI,KAAK,cAAc;AAAQ,aAAO,KAAK;AAC3C,UAAM,WAAW;AACjB,UAAMC,YAAW,KAAK,YAAY,IAAI,MAAM,KAAK,MAAM,GAAG;AAAA,MACxD,IAAK,QAAQ,MAAM;AACjB,cAAM,QAAQ,QAAQ,IAAI,QAAQ,IAAI;AACtC,YAAI,SAAS;AAAe,iBAAO;AACnC,YAAI,QAAQ,MAAM,GAAG;AACnB,iBAAO,MAAM,MAAM,EAAE,YAAY;AAAA,QACnC;AACA,eAAO,SAAS,cAAc,QAAQ,MAAM,KAAK;AAAA,MACnD;AAAA,MACA,IAAK,QAAQ,MAAM,OAAO;AACxB,iBAAS,WAAW,QAAQ,MAAM,KAAK;AACvC,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AACD,WAAOA;AAAA,EACT;AAAA,EAEA,cAAe,QAAQ,MAAM,OAAO;AAClC,WAAO;AAAA,EACT;AAAA,EAEA,QAAS;AACP,QAAI;AACJ,UAAM,IAAI,KAAK;AACf,UAAM,MAAM,OAAO,OAAO,OAAO,eAAe,CAAC,CAAC;AAClD,SAAK,KAAK,GAAG;AACX,UAAI,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AAAA,EAEA,gBAAiB;AACf,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,QAAS,OAAO,MAAM;AACpB,WAAO;AAAA,EACT;AAAA,EAEA,uBAAwB,MAAM,OAAO;AACnC,WAAO,SAAS,IAAI;AAEpB,QAAI,SAAS,OAAO;AAClB,YAAM,MAAM,IAAI,MAAM,6BAA6B;AAEnD,UAAI,WAAW,IAAI;AAEnB,UAAI,QAAQ,MAAM,YAAY;AAC9B,YAAM;AAAA,IACR;AAEA,SAAK,YAAY,QAAQ,CAAC,SAAS,eAAe;AAChD,mBAAa,SAAS,UAAU;AAChC,cAAQ,QAAQ,YAAU;AACxB,eAAO,uBAAuB,GAAG,cAAc,QAAQ,KAAK;AAAA,MAC9D,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,UAAW,MAAM,QAAQ,wBAAwB;AAC/C,QAAI;AACJ,QAAI,KAAK,YAAY,IAAI,IAAI,GAAG;AAC9B,gBAAU,KAAK,YAAY,IAAI,IAAI;AAAA,IACrC,OAAO;AACL,gBAAU,oBAAI,IAAI;AAClB,WAAK,YAAY,IAAI,MAAM,OAAO;AAAA,IACpC;AAEA,QAAI,wBAAwB;AAC1B,aAAO,uBAAuB,MAAM,IAAI;AAAA,IAC1C;AAEA,YAAQ,IAAI,MAAM;AAAA,EACpB;AAAA,EAEA,UAAW,MAAM,QAAQ;AACvB,UAAM,UAAU,KAAK,YAAY,IAAI,IAAI;AACzC,YAAQ,OAAO,MAAM;AACrB,QAAI,QAAQ,SAAS;AAAG,WAAK,YAAY,OAAO,IAAI;AAAA,EACtD;AAAA,EAEA,IAAK,MAAM,UAAU;AACnB,QAAIC,UAAS,QAAQ;AAErB,SAAK,cAAc;AAEnB,QAAI,kBAAkB;AACtB,QAAI,aAAa,CAACA,WAAUA,QAAO,SAAS,kBAAkB;AAC5D,MAAAA,UAAS,QAAQ,OAAO,eAAe;AACvC,wBAAkB;AAAA,IACpB;AAEA,QAAI;AACF,UAAI;AAAU,QAAAA,QAAO,YAAY,QAAQ;AAEzC,UAAI,KAAK,UAAU;AACjB,QAAAA,QAAO,IAAI,KAAK,QAAQ;AAAA,MAC1B;AAEA,YAAM,gBAAgB,KAAK;AAE3B,UAAI,MAAM;AACR,mBAAW,CAAC,KAAK,QAAQ,KAAK,cAAc,MAAM,QAAQ,GAAG;AAC3D,cAAI,KAAK,WAAW,GAAG,MAAM,KAAK,SAAS,KAAK;AAC9C,kBAAM,KAAK,SAAS,OAAO,CAAC,EAAE,QAAQ,aAAW;AAC/C,kBAAIA,QAAO,MAAM,OAAO,GAAG;AACzB,gBAAAA,QAAO,IAAI,OAAO;AAAA,cACpB;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAEA,YAAM,KAAK,cAAc,QAAQ,OAAO,CAAC,EAAE,QAAQ,aAAW;AAC5D,YAAIA,QAAO,MAAM,OAAO,GAAG;AACzB,UAAAA,QAAO,IAAI,OAAO;AAAA,QACpB;AAAA,MACF,CAAC;AAED,WAAK,YAAY,QAAQ,CAAC,SAAS,eAAe;AAChD,qBAAa,SAAS,UAAU;AAChC,gBAAQ,QAAQ,YAAU;AACxB,iBAAO,IAAI,OAAO,GAAG,cAAc,SAAS,UAAU;AAAA,QACxD,CAAC;AAAA,MACH,CAAC;AAED,yBAAmBA,QAAO,KAAK;AAAA,IACjC,SAAS,KAAP;AACA,yBAAmBA,QAAO,OAAO;AACjC,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAK,QAAQ,MAAM;AACjB,WAAO,KAAK,KAAK,QAAQ,MAAM,IAAI;AAAA,EACrC;AAAA,EAEA,IAAK,QAAQ,MAAM,OAAO;AACxB,WAAO,KAAK,KAAK,QAAQ,MAAM,OAAO,IAAI;AAAA,EAC5C;AAAA,EAEA,eAAgB,QAAQ,MAAM;AAC5B,WAAO,KAAK,gBAAgB,QAAQ,MAAM,IAAI;AAAA,EAChD;AAAA,EAEA,WAAY,QAAQ,MAAM,OAAO,gBAAgB;AAC/C,WAAO,QAAQ,IAAI,QAAQ,MAAM,KAAK;AAAA,EACxC;AAAA,EAEA,WAAY,QAAQ,MAAM,gBAAgB;AACxC,WAAO,QAAQ,IAAI,QAAQ,IAAI;AAAA,EACjC;AAAA,EAEA,WAAY,QAAQ,MAAM,gBAAgB;AACxC,WAAO,QAAQ,IAAI,QAAQ,IAAI;AAAA,EACjC;AAAA,EAEA,sBAAuB,QAAQ,MAAM,gBAAgB;AACnD,WAAO,QAAQ,eAAe,QAAQ,IAAI;AAAA,EAC5C;AAAA,EAEA,KAAM,QAAQ,MAAM,gBAAgB;AAClC,QAAI,SAAS;AAAQ,aAAO;AAE5B,UAAM,QAAQ,KAAK,WAAW,QAAQ,MAAM,cAAc;AAC1D,QAAI,UAAU,QAAQ,UAAU;AAAW,aAAO;AAElD,UAAM,aAAa,QAAQ,MAAM;AAEjC,QAAI,YAAY,OAAO;AACrB,aAAO,WAAW;AAAA,IACpB;AAEA,WAAO,KAAK,QAAQ,OAAO,IAAI;AAAA,EACjC;AAAA,EAEA,KAAM,QAAQ,MAAM,OAAO,gBAAgB;AACzC,UAAM,WAAW;AACjB,UAAM,UAAU,CAAC,SAAS,WAAW,QAAQ,MAAM,cAAc;AACjE,UAAM,WAAW,SAAS,WAAW,QAAQ,MAAM,cAAc;AACjE,UAAM,gBAAgB,WAAW,MAAM;AACvC,QAAI,aAAa,QAAQ,MAAM;AAG/B,QAAI,eAAe,SAAS,CAAC,YAAY,OAAO;AAC9C,UAAI,aAAa,SAAS,cAAc,UAAU;AAAO,eAAO;AAChE,YAAM,cAAc,cAAc;AAClC,oBAAc,SAAS,KAAK;AAC5B,eAAS,IAAI,MAAM,MAAM;AACvB,iBAAS,cAAc;AACvB,sBAAc,SAAS,WAAW;AAAA,MACpC,CAAC;AACD,aAAO;AAAA,IACT,WAAW,YAAY,OAAO;AAC5B,UAAI,SAAS,WAAW,QAAQ,MAAM,OAAO,cAAc,GAAG;AAC5D,iBAAS,IAAI,MAAM,MAAM;AACvB,mBAAS,cAAc;AACvB,cAAI;AAAS,mBAAO,SAAS,sBAAsB,QAAQ,MAAM,cAAc;AAC/E,mBAAS,WAAW,QAAQ,MAAM,UAAU,cAAc;AAAA,QAC5D,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT;AAGA,QAAI,aAAa,SAAU,iBAAiB,cAAc,WAAW;AAAQ,aAAO;AAEpF,QAAI,yBAAyB;AAC7B,QAAI;AACJ,QAAI,CAAC,YAAY;AACf,aAAO,OAAO,UAAU,SAAS,KAAK,KAAK;AAC3C,UAAI,gBAAgB,IAAI,GAAG;AACzB,gBAAQ,YAAY,EAAE,YAAY,SAAS,WAAW,GAAG,OAAO,MAAM,MAAM,IAAI;AAChF,qBAAa,MAAM,MAAM;AACzB,iCAAyB;AAAA,MAC3B,OAAO;AACL,iBAAS,WAAW,QAAQ,MAAM,OAAO,cAAc;AAEvD,iBAAS,IAAI,MAAM,MAAM;AACvB,mBAAS,cAAc;AAEvB,cAAI,SAAS;AACX,qBAAS,sBAAsB,QAAQ,MAAM,cAAc;AAC3D;AAAA,UACF;AAEA,mBAAS,WAAW,QAAQ,MAAM,UAAU,cAAc;AAAA,QAC5D,CAAC;AAED,eAAO;AAAA,MACT;AAAA,IACF;AAEA,QAAI,kBAAkB,YAAY;AAChC,kBAAY,UAAU,MAAM,UAAU,sBAAsB;AAC5D,qBAAe,UAAU,MAAM,QAAQ;AAAA,IACzC;AAEA,aAAS,WAAW,QAAQ,MAAM,OAAO,cAAc;AAEvD,aAAS,IAAI,MAAM,MAAM;AACvB,eAAS,cAAc;AAEvB,UAAI,kBAAkB,YAAY;AAChC,uBAAe,UAAU,MAAM,QAAQ;AACvC,oBAAY,UAAU,MAAM,QAAQ;AAAA,MACtC;AAEA,UAAI,SAAS;AACX,iBAAS,sBAAsB,QAAQ,MAAM,cAAc;AAC3D;AAAA,MACF;AAEA,eAAS,WAAW,QAAQ,MAAM,UAAU,cAAc;AAAA,IAC5D,CAAC;AAED,WAAO;AAAA,EACT;AAAA,EAEA,gBAAiB,QAAQ,MAAM,gBAAgB;AAC7C,UAAM,WAAW;AACjB,QAAI,CAAC,SAAS,WAAW,QAAQ,MAAM,cAAc;AAAG,aAAO;AAE/D,UAAM,WAAW,SAAS,WAAW,QAAQ,MAAM,cAAc;AACjE,eAAW,MAAM,GAAG,YAAY,MAAM,QAAQ;AAE9C,QAAI,SAAS,sBAAsB,QAAQ,MAAM,cAAc,GAAG;AAChE,eAAS,IAAI,MAAM,MAAM;AACvB,iBAAS,cAAc;AACvB,mBAAW,MAAM,GAAG,YAAY,MAAM,QAAQ;AAC9C,iBAAS,WAAW,QAAQ,MAAM,UAAU,cAAc;AAAA,MAC5D,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AACF;;;ACpVO,IAAM,aAAN,cAAyB,cAAc;AAAA,EAC5C,QAAS,UAAU;AACjB,SAAK,OAAO,QAAQ,QAAQ;AAAA,EAC9B;AAAA,EAEA,cAAe,QAAQ,MAAM,OAAO;AAClC,QAAI,SAAS,YAAY,SAAS,aAAa,SAAS,UAAU,SAAS,SAAS,SAAS,WAAW,SAAS,aAAa,SAAS,QAAQ;AAC7I,WAAK,WAAW,QAAQ,MAAM,KAAK;AACnC,aAAO,MAAM;AAAA,MAAC;AAAA,IAChB;AACA,QAAI,OAAO,UAAU;AAAY,aAAO,MAAM,KAAK,MAAM;AACzD,WAAO;AAAA,EACT;AAAA,EAEA,QAAS;AACP,QAAI;AACJ,UAAM,IAAI,KAAK;AACf,QAAI,EAAE;AACN,UAAM,MAAM,MAAM,CAAC;AACnB,WAAO,OAAM;AACX,UAAI,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AAAA,EAEA,QAAS,OAAO,MAAM;AACpB,QAAI,SAAS,YAAY,SAAS,aAAa,SAAS,UAAU,SAAS,SAAS,SAAS,WAAW,SAAS,aAAa,SAAS,QAAQ;AAC7I,aAAO,IAAI,SAAS;AAClB,YAAI,QAAQ,SAAS;AACnB,iBAAO,MAAM,KAAK,KAAK,OAAO,GAAG,IAAI;AAAA,QACvC,OAAO;AACL,cAAI;AACJ,iBAAO,MAAM;AACX,kBAAM,MAAM,KAAK,KAAK,OAAO,GAAG,IAAI;AAAA,UACtC,CAAC;AACD,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,QAAI,OAAO,UAAU;AAAY,aAAO,MAAM,KAAK,KAAK,MAAM;AAC9D,WAAO;AAAA,EACT;AAAA,EAEA,sBAAuB,QAAQ,MAAM;AACnC,UAAM,SAAS,OAAO,OAAO,CAAC,GAAG,MAAM,GAAG,QAAQ,IAAI;AACtD,WAAO,OAAO,GAAG,OAAO,QAAQ,GAAG,MAAM;AACzC,WAAO;AAAA,EACT;AACF;;;AChDO,IAAM,WAAN,cAAuB,cAAc;AAAA,EAC1C,eAAgB,MAAM;AACpB,UAAM,GAAG,IAAI;AAEb,SAAK,cAAc,KAAK,YAAY,KAAK,IAAI;AAC7C,SAAK,iBAAiB,KAAK,eAAe,KAAK,IAAI;AACnD,SAAK,gBAAgB,KAAK,cAAc,KAAK,IAAI;AAAA,EACnD;AAAA,EAEA,QAAS,UAAU;AACjB,SAAK,OAAO,QAAQ,QAAQ;AAAA,EAC9B;AAAA,EAEA,cAAe,QAAQ,MAAM,OAAO;AAClC,QAAI,SAAS,SAAS,SAAS,YAAY,SAAS,SAAS;AAC3D,WAAK,WAAW,QAAQ,MAAM,KAAK;AACnC,aAAO,MAAM;AAAA,MAAC;AAAA,IAChB;AACA,QAAI,OAAO,UAAU;AAAY,aAAO,MAAM,KAAK,MAAM;AACzD,WAAO;AAAA,EACT;AAAA,EAEA,QAAS;AACP,UAAM,IAAI,KAAK;AACf,UAAM,MAAM,oBAAI,IAAI;AACpB,MAAE,QAAQ,SAAU,KAAK,KAAK;AAC5B,UAAI,IAAI,KAAK,SAAS,GAAG,CAAC;AAAA,IAC5B,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEA,WAAY,QAAQ,MAAM,OAAO,gBAAgB;AAC/C,QAAI;AAAgB,aAAO,QAAQ,IAAI,QAAQ,MAAM,KAAK;AAC1D,WAAO,CAAC,CAAC,OAAO,IAAI,MAAM,KAAK;AAAA,EACjC;AAAA,EAEA,WAAY,QAAQ,MAAM,gBAAgB;AACxC,QAAI;AAAgB,aAAO,QAAQ,IAAI,QAAQ,IAAI;AACnD,WAAO,OAAO,IAAI,IAAI;AAAA,EACxB;AAAA,EAEA,WAAY,QAAQ,MAAM,gBAAgB;AACxC,QAAI;AAAgB,aAAO,QAAQ,IAAI,QAAQ,IAAI;AACnD,WAAO,OAAO,IAAI,IAAI;AAAA,EACxB;AAAA,EAEA,sBAAuB,QAAQ,MAAM,gBAAgB;AACnD,QAAI;AAAgB,aAAO,QAAQ,eAAe,QAAQ,IAAI;AAC9D,WAAO,OAAO,OAAO,IAAI;AAAA,EAC3B;AAAA,EAEA,QAAS,OAAO,MAAM;AACpB,QAAI,SAAS;AAAO,aAAO,KAAK;AAChC,QAAI,SAAS;AAAU,aAAO,KAAK;AACnC,QAAI,SAAS;AAAS,aAAO,KAAK;AAClC,QAAI,OAAO,UAAU;AAAY,aAAO,MAAM,KAAK,KAAK,MAAM;AAC9D,WAAO;AAAA,EACT;AAAA,EAEA,YAAa,KAAK,KAAK;AACrB,WAAO,KAAK,KAAK,KAAK,QAAQ,KAAK,GAAG;AAAA,EACxC;AAAA,EAEA,eAAgB,KAAK;AACnB,WAAO,KAAK,gBAAgB,KAAK,QAAQ,GAAG;AAAA,EAC9C;AAAA,EAEA,gBAAiB;AACf,QAAI,QAAQ,SAAS;AACnB,WAAK,OAAO,QAAQ,CAAC,GAAG,QAAQ;AAC9B,aAAK,eAAe,GAAG;AAAA,MACzB,CAAC;AAAA,IACH,OAAO;AACL,aAAO,MAAM;AACX,aAAK,OAAO,QAAQ,CAAC,GAAG,QAAQ;AAC9B,eAAK,eAAe,GAAG;AAAA,QACzB,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AChFO,IAAM,WAAN,cAAuB,cAAc;AAAA,EAC1C,eAAgB,MAAM;AACpB,UAAM,GAAG,IAAI;AAEb,SAAK,WAAW,IAAI,IAAI,KAAK,OAAO,QAAQ,CAAC;AAC7C,SAAK,cAAc,KAAK,YAAY,KAAK,IAAI;AAC7C,SAAK,iBAAiB,KAAK,eAAe,KAAK,IAAI;AACnD,SAAK,gBAAgB,KAAK,cAAc,KAAK,IAAI;AACjD,SAAK,cAAc,KAAK,YAAY,KAAK,IAAI;AAAA,EAC/C;AAAA,EAEA,QAAS,UAAU;AACjB,SAAK,OAAO,QAAQ,QAAQ;AAAA,EAC9B;AAAA,EAEA,cAAe,QAAQ,MAAM,OAAO;AAClC,QAAI,SAAS,SAAS,SAAS,YAAY,SAAS,SAAS;AAC3D,WAAK,WAAW,QAAQ,MAAM,KAAK;AACnC,aAAO,MAAM;AAAA,MAAC;AAAA,IAChB;AACA,QAAI,OAAO,UAAU;AAAY,aAAO,MAAM,KAAK,MAAM;AACzD,WAAO;AAAA,EACT;AAAA,EAEA,QAAS;AACP,UAAM,IAAI,KAAK;AACf,UAAM,MAAM,oBAAI,IAAI;AACpB,MAAE,QAAQ,SAAU,KAAK;AACvB,UAAI,IAAI,SAAS,GAAG,CAAC;AAAA,IACvB,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEA,QAAS,OAAO,MAAM;AACpB,QAAI,SAAS;AAAO,aAAO,KAAK;AAChC,QAAI,SAAS;AAAU,aAAO,KAAK;AACnC,QAAI,SAAS;AAAS,aAAO,KAAK;AAClC,QAAI,SAAS;AAAO,aAAO,KAAK;AAChC,QAAI,OAAO,UAAU;AAAY,aAAO,MAAM,KAAK,KAAK,MAAM;AAC9D,WAAO;AAAA,EACT;AAAA,EAEA,WAAY,QAAQ,MAAM,OAAO,gBAAgB;AAC/C,QAAI;AAAgB,aAAO,QAAQ,IAAI,QAAQ,MAAM,KAAK;AAC1D,SAAK,SAAS,IAAI,MAAM,KAAK;AAC7B,WAAO,CAAC,CAAC,OAAO,IAAI,KAAK;AAAA,EAC3B;AAAA,EAEA,WAAY,QAAQ,MAAM,gBAAgB;AACxC,QAAI;AAAgB,aAAO,QAAQ,IAAI,QAAQ,IAAI;AACnD,WAAO,KAAK,SAAS,IAAI,IAAI;AAAA,EAC/B;AAAA,EAEA,WAAY,QAAQ,MAAM,gBAAgB;AACxC,QAAI;AAAgB,aAAO,QAAQ,IAAI,QAAQ,IAAI;AACnD,QAAI,KAAK,SAAS,IAAI,IAAI;AAAG,aAAO;AACpC,WAAO;AAAA,EACT;AAAA,EAEA,sBAAuB,QAAQ,MAAM,gBAAgB;AACnD,QAAI;AAAgB,aAAO,QAAQ,eAAe,QAAQ,IAAI;AAC9D,UAAM,MAAM,KAAK,SAAS,IAAI,IAAI;AAClC,SAAK,SAAS,OAAO,IAAI;AACzB,WAAO,OAAO,OAAO,GAAG;AAAA,EAC1B;AAAA,EAEA,YAAa,KAAK;AAChB,WAAO,KAAK,KAAK,KAAK,QAAQ,KAAK,GAAG;AAAA,EACxC;AAAA,EAEA,eAAgB,KAAK;AACnB,WAAO,KAAK,gBAAgB,KAAK,QAAQ,GAAG;AAAA,EAC9C;AAAA,EAEA,YAAa,KAAK;AAChB,WAAO,KAAK,SAAS,IAAI,GAAG;AAAA,EAC9B;AAAA,EAEA,gBAAiB;AACf,QAAI,QAAQ,SAAS;AACnB,WAAK,OAAO,QAAQ,WAAS;AAC3B,aAAK,eAAe,KAAK;AAAA,MAC3B,CAAC;AAAA,IACH,OAAO;AACL,aAAO,MAAM;AACX,aAAK,OAAO,QAAQ,WAAS;AAC3B,eAAK,eAAe,KAAK;AAAA,QAC3B,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;ACvFA,SAAS,aAAc,UAAU;AAC/B,QAAM,QAAQ,IAAI,MAAM,SAAS,QAAQ,QAAQ;AACjD,WAAS,SAAS,KAAK;AACvB,SAAO;AACT;AAEO,SAAS,YAAa,cAAc,GAAG,GAAG,IAAI,MAAM;AACzD,MAAI,CAAC,KAAK,OAAO,MAAM;AAAU,WAAO;AAExC,QAAMC,SAAQ,IAAI,MAAM;AACxB,MAAIA,QAAO;AACT,QAAI,KAAK,CAACA,OAAM;AAAO,MAAAA,OAAM,UAAU,IAAI,EAAE,MAAM,GAAG,IAAI;AAC1D,WAAO;AAAA,EACT;AAEA,QAAM,MAAM,QAAQ,OAAO,UAAU,SAAS,KAAK,CAAC;AAEpD,MAAI;AACJ,MAAI;AACJ,MAAI;AAEJ,MAAI,QAAQ,UAAU;AACpB,UAAM,OAAO,OAAO,OAAO,eAAe,CAAC,CAAC;AAC5C,YAAQ,aAAa,IAAI,cAAc,GAAG,KAAK,YAAY,CAAC;AAC5D,SAAK,KAAK,GAAG;AACX,UAAI,CAAC,IAAI,YAAY,cAAc,EAAE,CAAC,GAAG,OAAO,CAAC;AAAA,IACnD;AAAA,EACF,WAAW,QAAQ,SAAS;AAC1B,QAAI,EAAE;AACN,UAAM,MAAM,CAAC;AACb,YAAQ,aAAa,IAAI,WAAW,GAAG,KAAK,YAAY,CAAC;AACzD,WAAO,OAAM;AACX,UAAI,CAAC,IAAI,YAAY,cAAc,EAAE,CAAC,GAAG,OAAO,CAAC;AAAA,IACnD;AAAA,EACF,WAAW,QAAQ,OAAO;AACxB,UAAM,oBAAI,IAAI;AACd,YAAQ,aAAa,IAAI,SAAS,GAAG,KAAK,YAAY,CAAC;AACvD,MAAE,QAAQ,SAAU,KAAK;AACvB,UAAI,IAAI,YAAY,cAAc,KAAK,OAAO,GAAG,CAAC;AAAA,IACpD,CAAC;AAAA,EACH,WAAW,QAAQ,OAAO;AACxB,UAAM,oBAAI,IAAI;AACd,YAAQ,aAAa,IAAI,SAAS,GAAG,KAAK,YAAY,CAAC;AACvD,MAAE,QAAQ,SAAU,KAAK,KAAK;AAC5B,UAAI,IAAI,YAAY,cAAc,KAAK,OAAO,GAAG,GAAG,YAAY,cAAc,KAAK,OAAO,GAAG,CAAC;AAAA,IAChG,CAAC;AAAA,EACH,OAAO;AACL,UAAM,gBAAgB,GAAG,GAAG;AAAA,EAC9B;AAEA,MAAI,OAAO;AACT,QAAI;AAAG,YAAM,MAAM,EAAE,UAAU,IAAI,EAAE,MAAM,GAAG,KAAK;AACnD,WAAO;AAAA,EACT;AAEA,SAAO;AACT;;;AC5DA,SAAS,aAAc,OAAO,MAAM;AAClC,QAAM,QAAQ,IAAI,OAAO,IAAI;AAE7B,QAAMC,SAAQ,QAAQ,MAAM;AAC5B,MAAIA,QAAO;AACT,WAAOA,OAAM,YAAY;AAAA,EAC3B;AAEA,SAAO;AACT;AAEA,SAAS,IAAK,KAAK,KAAK;AACtB,MAAI;AACJ,OAAK,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AAC/B,QAAI,KAAK;AACP,YAAMA,SAAQ,MAAM,MAAM;AAC1B,YAAM,IAAI,IAAI,CAAC;AACf,UAAIA,QAAO;AACT,cAAMA,OAAM,eAAe,CAAC;AAAA,MAC9B,OAAO;AACL,cAAM,IAAI,CAAC;AAAA,MACb;AAAA,IACF,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAsBO,SAAS,SAAU,OAAO,OAAO;AACtC,MAAI,CAAC,MAAM,MAAM;AAAG,UAAM,IAAI,MAAM,4CAA4C;AAEhF,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,OAAK,aAAa,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,EACzD;AAEA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,aAAa,OAAO,MAAM,MAAM,GAAG,CAAC;AAAA,EAC7C;AAEA,SAAO,MAAM,MAAM,EAAE,YAAY;AACnC;;;AXjDA,SAAS,WAAY,OAAO,SAAS,MAAM,OAAO,CAAC,GAAG;AACpD,QAAM,EAAE,SAAS,MAAM,SAAS,MAAM,IAAI;AAE1C,YAAU,EAAE,KAAK,SAAS,QAAQ,OAAO;AAEzC,QAAM,gBAAgB,MAAM,MAAM,EAAE;AAEpC,MAAI,MAAM;AACR,QAAI,CAAC,cAAc,MAAM,IAAI,IAAI,GAAG;AAClC,oBAAc,MAAM,IAAI,MAAM,oBAAI,IAAI,CAAC;AAAA,IACzC;AACA,kBAAc,MAAM,IAAI,IAAI,EAAE,IAAI,OAAO;AAAA,EAC3C,OAAO;AACL,kBAAc,QAAQ,IAAI,OAAO;AAAA,EACnC;AAEA,SAAO,MAAM;AACX,QAAI,MAAM;AACR,oBAAc,MAAM,IAAI,IAAI,EAAE,OAAO,OAAO;AAAA,IAC9C,OAAO;AACL,oBAAc,QAAQ,OAAO,OAAO;AAAA,IACtC;AAAA,EACF;AACF;AAEA,IAAM,oBAAoB,CAAC,QAAQ,MAAM,UAAU;AACjD,UAAQ,KAAK,0BAA0B,EAAE,QAAQ,MAAM,MAAM,CAAC;AAChE;AAEA,IAAM,QAAQ,oBAAI,QAAQ;AAYnB,SAAS,MAAO,QAAQ,OAAO,CAAC,GAAG;AACxC,QAAM;AAAA,IACJ,aAAa;AAAA,IACb;AAAA,EACF,IAAI;AAEJ,MAAI,SAAS,MAAM;AAAG,WAAO;AAE7B,QAAM,aAAa,OAAO,UAAU,SAAS,KAAK,MAAM;AAExD,MAAI,CAAC,gBAAgB,UAAU,GAAG;AAChC,UAAM,IAAI,MAAM,qCAAqC;AAAA,EACvD;AAEA,MAAI,MAAM;AAAA;AAAA,IAA0B;AAAA,EAAO,GAAG;AAC5C,WAAO,MAAM;AAAA;AAAA,MAA0B;AAAA,IAAO;AAAA,EAChD;AAEA,QAAM,eAAe,EAAE,WAAW;AAElC,QAAM,QAAQ,YAAY,cAAc,QAAQ,QAAW,QAAW,UAAU;AAEhF,MAAI,UAAU;AACZ,aAAS,KAAK;AACd,UAAM,MAAM,EAAE,YAAY,QAAQ;AAAA,EACpC;AAEA,QAAM;AAAA;AAAA,IAA0B;AAAA,IAAS;AAAA,EAAK;AAE9C,SAAO;AACT;AASO,SAAS,UAAW,OAAO;AAChC,MAAI,CAAC,SAAS,CAAC,MAAM,MAAM,KAAK,MAAM,MAAM,EAAE;AAAO,UAAM,IAAI,MAAM,oBAAoB;AAEzF,QAAM,WAAW,MAAM,MAAM;AAE7B,QAAM,gBAAgB,SAAS;AAG/B,QAAM,QAAQ,CAAC;AAEf,MAAI,QAAQ,cAAc,QAAQ;AAElC,gBAAc,MAAM,QAAQ,CAACC,YAAW,SAAS;AAC/C,UAAM,IAAI,IAAI,EAAE,SAASA,WAAU,KAAK;AACxC,aAASA,WAAU;AAAA,EACrB,CAAC;AAED,WAAS,QAAQ,CAAC,KAAK,SAAS;AAC9B,QAAI,MAAM,MAAM,KAAK,CAAC,IAAI,MAAM,EAAE,OAAO;AACvC,YAAM,MAAM,UAAU,GAAG;AACzB,eAAS,IAAI;AACb,UAAI,MAAM,IAAI,GAAG;AACf,cAAM,IAAI,EAAE,WAAW,IAAI;AAC3B,cAAM,IAAI,EAAE,UAAU,IAAI;AAAA,MAC5B,OAAO;AACL,cAAM,IAAI,IAAI;AAAA,MAChB;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AACF;AAgBO,SAAS,UAAW,OAAO,SAAS,OAAO,CAAC,GAAG;AACpD,MAAI,CAAC,SAAS,CAAC,MAAM,MAAM,KAAK,MAAM,MAAM,EAAE;AAAO,UAAM,IAAI,MAAM,oBAAoB;AAEzF,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,EACX,IAAI;AAEJ,MAAI,SAAS;AAAQ,UAAM,IAAI,MAAM,6CAA6C;AAClF,MAAI,WAAW;AAAQ,UAAM,IAAI,MAAM,+CAA+C;AAEtF,QAAM,iBAAiB;AAAA,IACrB;AAAA,IACA;AAAA,EACF;AAEA,MAAI,OAAO;AACT,UAAM,cAAc;AACpB,cAAU,MAAM,aAAa,WAAW;AAAA,EAC1C;AAEA,MAAI;AACJ,MAAI,CAAC,OAAO;AACV,cAAU,WAAW,OAAO,SAAS,MAAM,cAAc;AACzD,QAAI;AAAS,cAAQ;AACrB,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,cAAU,WAAW,OAAO,MAAM;AAChC,aAAO,QAAQ;AAAA,IACjB,GAAG,OAAO,cAAc;AACxB,QAAI;AAAS,cAAQ;AACrB,WAAO;AAAA,EACT;AAEA,MAAI,YAAY;AAChB,QAAM,eAAe,MAAM,IAAI,UAAQ;AACrC,WAAO,WAAW,OAAO,MAAM;AAC7B,UAAI,CAAC;AAAO,eAAO,QAAQ;AAE3B,UAAI,CAAC,WAAW;AACd,oBAAY;AACZ,uBAAe,MAAM;AACnB,sBAAY;AAAA,QACd,CAAC;AACD,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF,GAAG,MAAM,cAAc;AAAA,EACzB,CAAC;AAED,MAAI;AAAS,YAAQ;AACrB,SAAO,MAAM,aAAa,QAAQ,iBAAe,YAAY,CAAC;AAChE;AAYO,SAAS,IAAK,OAAO,aAAa,OAAO;AAC9C,QAAM,WAAW,IAAI,SAAS,OAAO,aAAa,KAAK;AAEvD,QAAM,MAAM,IAAI,MAAM,UAAU;AAAA,IAC9B,IAAK,GAAG,MAAM;AACZ,UAAI,SAAS;AAAQ,eAAO;AAC5B,UAAI,OAAO,SAAS,MAAM,IAAI,MAAM;AAAY,eAAO,IAAI,SAAS,SAAS,MAAM,IAAI,EAAE,GAAG,IAAI;AAChG,aAAO,SAAS,MAAM,IAAI;AAAA,IAC5B;AAAA,IACA,yBAA0B,GAAG,MAAM;AACjC,UAAI;AACF,eAAO,QAAQ,yBAAyB,SAAS,OAAO,IAAI;AAAA,MAC9D,SAAS,KAAP;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,UAAW;AACT,UAAI;AACF,eAAO,QAAQ,QAAQ,SAAS,KAAK;AAAA,MACvC,SAAS,KAAP;AACA,eAAO,CAAC;AAAA,MACV;AAAA,IACF;AAAA,EACF,CAAC;AAED;AAAA;AAAA,IAAmC;AAAA;AACrC;",
  "names": ["handler", "snapshot", "action", "staty", "snapshot", "action", "staty", "staty", "listeners"]
}
