diff --git a/dist/firetruss.es2015.js b/dist/firetruss.es2015.js index 9c5dcf8..f63bb2e 100644 --- a/dist/firetruss.es2015.js +++ b/dist/firetruss.es2015.js @@ -1,100 +1,6 @@ import _ from 'lodash'; import Vue from 'vue'; -let vue; -let lastDigestRequest = 0, digestInProgress = false; -const bareDigest = function() { - if (vue.digestRequest > lastDigestRequest) return; - vue.digestRequest = lastDigestRequest + 1; -}; - -const angularProxy = { - active: typeof window !== 'undefined' && window.angular -}; - -if (angularProxy.active) { - initAngular(); -} else { - _.forEach(['digest', 'watch', 'defineModule', 'debounceDigest'], method => { - angularProxy[method] = _.noop; - }); -} - -function initAngular() { - const module = window.angular.module('firetruss', []); - angularProxy.digest = bareDigest; - angularProxy.watch = function() {throw new Error('Angular watch proxy not yet initialized');}; - angularProxy.defineModule = function(Truss) { - module.constant('Truss', Truss); - }; - angularProxy.debounceDigest = function(wait) { - if (wait) { - const debouncedDigest = _.debounce(bareDigest, wait); - angularProxy.digest = function() { - if (vue.digestRequest > lastDigestRequest) return; - if (digestInProgress) bareDigest(); else debouncedDigest(); - }; - } else { - angularProxy.digest = bareDigest; - } - }; - - module.config(['$provide', function($provide) { - $provide.decorator('$rootScope', ['$delegate', '$exceptionHandler', - function($delegate, $exceptionHandler) { - const rootScope = $delegate; - angularProxy.watch = rootScope.$watch.bind(rootScope); - const proto = Object.getPrototypeOf(rootScope); - const angularDigest = proto.$digest; - proto.$digest = bareDigest; - proto.$digest.original = angularDigest; - vue = new Vue({data: {digestRequest: 0}}); - vue.$watch(() => vue.digestRequest, () => { - if (vue.digestRequest > lastDigestRequest) { - // Make sure we execute the digest outside the Vue task queue, because otherwise if the - // client replaced Promise with angular.$q all Truss.nextTick().then() functions will be - // executed inside the Angular digest and hence inside the Vue task queue. But - // Truss.nextTick() is used precisely to avoid that. Note that it's OK to use - // Vue.nextTick() here because even though it will schedule a flush via Promise.then() - // it only uses the native Promise, before it could've been monkey-patched by the app. - Vue.nextTick(() => { - if (vue.digestRequest <= lastDigestRequest) return; - digestInProgress = true; - rootScope.$digest.original.call(rootScope); - lastDigestRequest = vue.digestRequest = vue.digestRequest + 1; - }); - } else { - digestInProgress = false; - } - }); - const watcher = _.last(vue._watchers || vue._scope.effects); - watcher.id = Infinity; // make sure watcher is scheduled last - patchRenderWatcherGet(Object.getPrototypeOf(watcher)); - return rootScope; - } - ]); - }]); -} - -// This is a kludge that catches errors that get through render watchers and end up killing the -// entire Vue event loop (e.g., errors raised in transition callbacks). The state of the DOM may -// not be consistent after such an error is caught, but the global error handler should stop the -// world anyway. May be related to https://github.com/vuejs/vue/issues/7653. -function patchRenderWatcherGet(prototype) { - const originalGet = prototype.get; - prototype.get = function get() { - try { - return originalGet.call(this); - } catch (e) { - if (this.vm._watcher === this && Vue.config.errorHandler) { - Vue.config.errorHandler(e, this.vm, 'uncaught render error'); - } else { - throw e; - } - } - }; -} - class LruCacheItem { constructor(key, value) { this.key = key; @@ -990,7 +896,6 @@ class Connector { this._subConnectors = {}; this._disconnects = {}; - this._angularUnwatches = undefined; this._data = {}; this._vue = new Vue({data: { descriptors: {}, @@ -1010,10 +915,6 @@ class Connector { this._connect(key, descriptor); } }); - - if (angularProxy.active && scope && scope.$on && scope.$id) { - scope.$on('$destroy', () => {this.destroy();}); - } } get ready() { @@ -1035,7 +936,6 @@ class Connector { destroy() { this._unlinkScopeProperties(); - _.forEach(this._angularUnwatches, unwatch => {unwatch();}); _.forEach(this._connections, (descriptor, key) => {this._disconnect(key);}); this._vue.$destroy(); } @@ -1071,14 +971,7 @@ class Connector { const connectionStats = stats.for(`connection.at.${key}`); const getter = this._computeConnection.bind(this, fn, connectionStats); const update = this._updateComputedConnection.bind(this, key, fn, connectionStats); - const angularWatch = angularProxy.active && !fn.angularWatchSuppressed; - // Use this._vue.$watch instead of truss.observe here so that we can disable the immediate - // callback if we'll get one from Angular anyway. - this._vue.$watch(getter, update, {immediate: !angularWatch}); - if (angularWatch) { - if (!this._angularUnwatches) this._angularUnwatches = []; - this._angularUnwatches.push(angularProxy.watch(getter, update, true)); - } + this._vue.$watch(getter, update, {immediate: true}); } _computeConnection(fn, connectionStats) { @@ -1108,7 +1001,6 @@ class Connector { this._subConnectors[key]._updateConnections(newDescriptor); } Vue.set(this._vue.descriptors, key, newDescriptor); - angularProxy.digest(); } _updateConnections(connections) { @@ -1123,7 +1015,6 @@ class Connector { _connect(key, descriptor) { Vue.set(this._vue.descriptors, key, descriptor); - angularProxy.digest(); if (!descriptor) return; Vue.set(this._vue.values, key, undefined); if (descriptor instanceof Reference) { @@ -1148,7 +1039,6 @@ class Connector { unobserve(); delete this._disconnects[key]; Vue.set(this._vue.values, key, subScope); - angularProxy.digest(); } ); } @@ -1164,34 +1054,29 @@ class Connector { if (this._disconnects[key]) this._disconnects[key](); delete this._disconnects[key]; Vue.delete(this._vue.descriptors, key); - angularProxy.digest(); } _updateRefValue(key, value) { if (this._vue.values[key] !== value) { Vue.set(this._vue.values, key, value); - angularProxy.digest(); } } _updateQueryValue(key, childKeys) { if (!this._vue.values[key]) { Vue.set(this._vue.values, key, {}); - angularProxy.digest(); } const subScope = this._vue.values[key]; for (const childKey in subScope) { if (!Object.hasOwn(subScope, childKey)) continue; if (!_.includes(childKeys, childKey)) { Vue.delete(subScope, childKey); - angularProxy.digest(); } } const object = this._tree.getObject(this._vue.descriptors[key].path); for (const childKey of childKeys) { if (Object.hasOwn(subScope, childKey)) continue; Vue.set(subScope, childKey, object[childKey]); - angularProxy.digest(); } } @@ -1564,7 +1449,6 @@ class MetaTree { if (!Object.hasOwn(this, key)) { const update = () => { Vue.set(this, key, Date.now() + this.timeOffset); - angularProxy.digest(); }; update(); setInterval(update, intervalMillis); @@ -1632,7 +1516,6 @@ class MetaTree { if (user) Object.freeze(user); this.root.user = user; this.root.userid = user && user.uid; - angularProxy.digest(); return true; } ); @@ -1649,7 +1532,6 @@ class MetaTree { url.pathname = encodeURI(`/.info/${property}`); this._bridge.on(url.href, url.href, null, 'value', snap => { this.root[attribute] = snap.value; - angularProxy.digest(); }); } } @@ -2073,8 +1955,6 @@ class Modeler { const object = new mount.Class(); creatingObjectProperties = null; - if (angularProxy.active) this._wrapProperties(object); - if (mount.keysUnsafe) { properties.$data = {value: Object.create(null), configurable: true, enumerable: true}; } @@ -2092,24 +1972,6 @@ class Modeler { } } - _wrapProperties(object) { - _.forEach(object, (value, key) => { - const valueKey = '$_' + key; - const descriptor = Object.getOwnPropertyDescriptor(object, key); - const valueDescriptor = descriptor.get && descriptor.set ? { - get: descriptor.get, set: descriptor.set, configurable: true - } : {value, writable: true}; - Object.defineProperties(object, { - [valueKey]: valueDescriptor, - [key]: { - get: () => object[valueKey], - set: arg => {object[valueKey] = arg; angularProxy.digest();}, - enumerable: true, configurable: true - } - }); - }); - } - _buildComputedPropertyDescriptor(object, prop) { const propertyStats = stats.for(prop.fullName); @@ -2133,15 +1995,12 @@ class Modeler { if (_.isObject(newValue) && _.isFunction(newValue.then)) { const promise = newValue.then(finalValue => { if (promise === pendingPromise) update(finalValue); - // No need to angular.digest() here, since if we're running under Angular then we expect - // promises to be aliased to its $q service, which triggers digest itself. }, error => { if (promise === pendingPromise && update(new ErrorWrapper(error)) && !error.trussExpectedException) throw error; }); pendingPromise = promise; } else if (update(newValue)) { - angularProxy.digest(); if (newValue instanceof ErrorWrapper && !newValue.error.trussExpectedException) { throw newValue.error; } @@ -2357,7 +2216,6 @@ function wrapConnections(object, connections) { return wrapConnections(object, connections.call(this)); /* eslint-enable no-invalid-this */ }; - fn.angularWatchSuppressed = true; return fn; } return _.mapValues(connections, descriptor => wrapConnections(object, descriptor)); @@ -2414,7 +2272,6 @@ class QueryHandler { this); this._listening = false; this.ready = false; - angularProxy.digest(); for (const key of this._keys) { this._coupler._decoupleSegments(this._segments.concat(key)); } @@ -2428,7 +2285,6 @@ class QueryHandler { const updatedKeys = this._updateKeysAndApplySnapshot(snap); if (!this.ready) { this.ready = true; - angularProxy.digest(); for (const listener of this._listeners) { this._coupler._dispatcher.markReady(listener.operation); } @@ -2503,7 +2359,6 @@ class QueryHandler { this.ready = false; for (const key of this._keys) this._coupler._decoupleSegments(this._segments.concat(key)); this._keys = []; - angularProxy.digest(); Promise.all(_.map(this._listeners, listener => { this._coupler._dispatcher.clearReady(listener.operation); return this._coupler._dispatcher.retry(listener.operation, error).catch(e => { @@ -2564,7 +2419,6 @@ class Node { if (node.listening) return false; if (node.ready) { node.ready = false; - angularProxy.digest(); } }); } else { @@ -2578,7 +2432,6 @@ class Node { this._coupler._applySnapshot(snap); if (!this.ready && snap.path === this.path) { this.ready = true; - angularProxy.digest(); this.unlisten(true); this._forAllDescendants(node => { for (const op of node.operations) this._coupler._dispatcher.markReady(op); @@ -2594,7 +2447,6 @@ class Node { if (node.listening) return false; if (node.ready) { node.ready = false; - angularProxy.digest(); } for (const op of node.operations) this._coupler._dispatcher.clearReady(op); }); @@ -2889,7 +2741,6 @@ class Tree { this._vue.$data.$root = this._createObject('/'); this._fixObject(this._vue.$data.$root); this._completeCreateObject(this._vue.$data.$root); - angularProxy.digest(); } return this._vue.$data.$root; } @@ -3459,7 +3310,6 @@ class Tree { configurable: true, enumerable: !hidden }); } - angularProxy.digest(); } _overwriteFirebaseProperty(descriptor, key, newValue) { @@ -3477,7 +3327,6 @@ class Tree { this._getFirebasePropertyDescriptor(object, data, key); this._destroyObject(data[key]); Vue.delete(data, key); - angularProxy.digest(); } checkVueObject(object, path) { @@ -3663,7 +3512,7 @@ class Truss { unobserve(); unobserve = null; callbackPromise = promiseFinally( - callback(scope.result), () => {angularProxy.digest(); callbackPromise = null; cleanup();} + callback(scope.result), () => {callbackPromise = null; cleanup();} ).then(result => {resolve(result);}, error => {reject(error);}); }); @@ -3707,19 +3556,16 @@ class Truss { numCallbacks++; if (unwatch || options && options.immediate) { callbackFn(newValue, oldValue); - angularProxy.digest(); } else { // Delay the immediate callback until we've had a chance to return the unwatch function. Promise.resolve().then(() => { const vm = options && options.vm; if (numCallbacks > 1 || (vm && vm.$destroyed)) return; callbackFn(newValue, oldValue); - // No need to digest since under Angular we'll be using $q as Promise. }); } }, {immediate: true, deep: options && options.deep}); - if (options && options.scope) options.scope.$on('$destroy', unwatch); return unwatch; } @@ -3750,7 +3596,6 @@ class Truss { }; }); promise = promiseCancel(promiseFinally(promise, cleanup), cleanup); - if (options && options.scope) options.scope.$on('$destroy', () => {promise.cancel();}); return promise; } @@ -3822,10 +3667,6 @@ class Truss { simulatedTokenGenerator, maxSimulationDuration, callFilter); } - static debounceAngularDigest(wait) { - angularProxy.debounceDigest(wait); - } - static escapeKey(key) {return escapeKey(key);} static unescapeKey(escapedKey) {return unescapeKey(escapedKey);} @@ -3868,7 +3709,9 @@ Object.defineProperties(Truss, { }} }); -angularProxy.defineModule(Truss); +if (typeof window !== 'undefined' && window.angular) { + window.angular.module('firetruss', []).constant('Truss', Truss); +} export { Truss as default }; diff --git a/dist/firetruss.es2015.js.map b/dist/firetruss.es2015.js.map index 6152c37..e4ad13a 100644 --- a/dist/firetruss.es2015.js.map +++ b/dist/firetruss.es2015.js.map @@ -1 +1 @@ -{"version":3,"file":"firetruss.es2015.js","sources":["../src/angularCompatibility.js","../src/utils/LruCache.js","../src/utils/paths.js","../src/Bridge.js","../src/Reference.js","../src/utils/utils.js","../src/utils/stats.js","../src/Connector.js","../src/utils/promises.js","../src/Dispatcher.js","../src/KeyGenerator.js","../src/MetaTree.js","../src/Modeler.js","../src/Coupler.js","../src/Tree.js","../src/Truss.js"],"sourcesContent":["import _ from 'lodash';\nimport Vue from 'vue';\n\n\nlet vue;\nlet lastDigestRequest = 0, digestInProgress = false;\nconst bareDigest = function() {\n if (vue.digestRequest > lastDigestRequest) return;\n vue.digestRequest = lastDigestRequest + 1;\n};\n\nconst angularProxy = {\n active: typeof window !== 'undefined' && window.angular\n};\n\nif (angularProxy.active) {\n initAngular();\n} else {\n _.forEach(['digest', 'watch', 'defineModule', 'debounceDigest'], method => {\n angularProxy[method] = _.noop;\n });\n}\n\nfunction initAngular() {\n const module = window.angular.module('firetruss', []);\n angularProxy.digest = bareDigest;\n angularProxy.watch = function() {throw new Error('Angular watch proxy not yet initialized');};\n angularProxy.defineModule = function(Truss) {\n module.constant('Truss', Truss);\n };\n angularProxy.debounceDigest = function(wait) {\n if (wait) {\n const debouncedDigest = _.debounce(bareDigest, wait);\n angularProxy.digest = function() {\n if (vue.digestRequest > lastDigestRequest) return;\n if (digestInProgress) bareDigest(); else debouncedDigest();\n };\n } else {\n angularProxy.digest = bareDigest;\n }\n };\n\n module.config(['$provide', function($provide) {\n $provide.decorator('$rootScope', ['$delegate', '$exceptionHandler',\n function($delegate, $exceptionHandler) {\n const rootScope = $delegate;\n angularProxy.watch = rootScope.$watch.bind(rootScope);\n const proto = Object.getPrototypeOf(rootScope);\n const angularDigest = proto.$digest;\n proto.$digest = bareDigest;\n proto.$digest.original = angularDigest;\n vue = new Vue({data: {digestRequest: 0}});\n vue.$watch(() => vue.digestRequest, () => {\n if (vue.digestRequest > lastDigestRequest) {\n // Make sure we execute the digest outside the Vue task queue, because otherwise if the\n // client replaced Promise with angular.$q all Truss.nextTick().then() functions will be\n // executed inside the Angular digest and hence inside the Vue task queue. But\n // Truss.nextTick() is used precisely to avoid that. Note that it's OK to use\n // Vue.nextTick() here because even though it will schedule a flush via Promise.then()\n // it only uses the native Promise, before it could've been monkey-patched by the app.\n Vue.nextTick(() => {\n if (vue.digestRequest <= lastDigestRequest) return;\n digestInProgress = true;\n rootScope.$digest.original.call(rootScope);\n lastDigestRequest = vue.digestRequest = vue.digestRequest + 1;\n });\n } else {\n digestInProgress = false;\n }\n });\n const watcher = _.last(vue._watchers || vue._scope.effects);\n watcher.id = Infinity; // make sure watcher is scheduled last\n patchRenderWatcherGet(Object.getPrototypeOf(watcher));\n return rootScope;\n }\n ]);\n }]);\n}\n\n// This is a kludge that catches errors that get through render watchers and end up killing the\n// entire Vue event loop (e.g., errors raised in transition callbacks). The state of the DOM may\n// not be consistent after such an error is caught, but the global error handler should stop the\n// world anyway. May be related to https://github.com/vuejs/vue/issues/7653.\nfunction patchRenderWatcherGet(prototype) {\n const originalGet = prototype.get;\n prototype.get = function get() {\n try {\n return originalGet.call(this);\n } catch (e) {\n if (this.vm._watcher === this && Vue.config.errorHandler) {\n Vue.config.errorHandler(e, this.vm, 'uncaught render error');\n } else {\n throw e;\n }\n }\n };\n}\n\nexport default angularProxy;\n","import _ from 'lodash';\n\n\nclass LruCacheItem {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n this.touch();\n }\n\n touch() {\n this.timestamp = Date.now();\n }\n}\n\n\nexport default class LruCache {\n constructor(maxSize, pruningSize) {\n this._items = Object.create(null);\n this._size = 0;\n this._maxSize = maxSize;\n this._pruningSize = pruningSize || Math.ceil(maxSize * 0.10);\n }\n\n has(key) {\n return Boolean(this._items[key]);\n }\n\n get(key) {\n const item = this._items[key];\n if (!item) return;\n item.touch();\n return item.value;\n }\n\n set(key, value) {\n const item = this._items[key];\n if (item) {\n item.value = value;\n } else {\n if (this._size >= this._maxSize) this._prune();\n this._items[key] = new LruCacheItem(key, value);\n this._size += 1;\n }\n }\n\n delete(key) {\n const item = this._items[key];\n if (!item) return;\n delete this._items[key];\n this._size -= 1;\n }\n\n _prune() {\n const itemsToPrune =\n _(this._items).toArray().sortBy('timestamp').take(this._pruningSize).value();\n for (const item of itemsToPrune) this.delete(item.key);\n }\n}\n","import LruCache from './LruCache.js';\nimport _ from 'lodash';\n\n\nconst pathSegments = new LruCache(1000);\nconst pathMatchers = {};\nconst maxNumPathMatchers = 1000;\n\n\nexport function escapeKey(key) {\n if (!key) return key;\n // eslint-disable-next-line no-control-regex\n return key.toString().replace(/[\\x00-\\x1f\\\\.$#[\\]\\x7f/]/g, char =>\n '\\\\' + _.padStart(char.charCodeAt(0).toString(16), 2, '0')\n );\n}\n\nexport function unescapeKey(key) {\n if (!key) return key;\n return key.toString().replace(/\\\\[0-9a-f]{2}/gi, code =>\n String.fromCharCode(parseInt(code.slice(1), 16))\n );\n}\n\nexport function escapeKeys(object) {\n // isExtensible check avoids trying to escape references to Firetruss internals.\n if (!(_.isObject(object) && Object.isExtensible(object))) return object;\n let result = object;\n for (const key in object) {\n if (!Object.hasOwn(object, key)) continue;\n const value = object[key];\n const escapedKey = escapeKey(key);\n const escapedValue = escapeKeys(value);\n if (escapedKey !== key || escapedValue !== value) {\n if (result === object) result = _.clone(object);\n result[escapedKey] = escapedValue;\n if (result[key] === value) delete result[key];\n }\n }\n return result;\n}\n\nexport function joinPath() {\n const segments = [];\n for (let segment of arguments) {\n if (!_.isString(segment)) segment = '' + segment;\n if (segment.charAt(0) === '/') segments.splice(0, segments.length);\n segments.push(segment);\n }\n if (segments[0] === '/') segments[0] = '';\n return segments.join('/');\n}\n\nexport function splitPath(path, leaveSegmentsEscaped) {\n const key = (leaveSegmentsEscaped ? 'esc:' : '') + path;\n let segments = pathSegments.get(key);\n if (!segments) {\n segments = path.split('/');\n if (!leaveSegmentsEscaped) segments = _.map(segments, unescapeKey);\n pathSegments.set(key, segments);\n }\n return segments;\n}\n\n\nclass PathMatcher {\n constructor(pattern) {\n this.variables = [];\n const prefixMatch = _.endsWith(pattern, '/$*');\n if (prefixMatch) pattern = pattern.slice(0, -3);\n const pathTemplate = pattern.replace(/\\/\\$[^/]*/g, match => {\n if (match.length > 1) this.variables.push(match.slice(1));\n return '\\u0001';\n });\n Object.freeze(this.variables);\n if (/[.$#[\\]]|\\\\(?![0-9a-f][0-9a-f])/i.test(pathTemplate)) {\n throw new Error('Path pattern has unescaped keys: ' + pattern);\n }\n this._regex = new RegExp(\n // eslint-disable-next-line no-control-regex\n '^' + pathTemplate.replace(/\\u0001/g, '/([^/]+)') + (prefixMatch ? '($|/)' : '$'));\n }\n\n match(path) {\n this._regex.lastIndex = 0;\n const match = this._regex.exec(path);\n if (!match) return;\n const bindings = {};\n for (let i = 0; i < this.variables.length; i++) {\n bindings[this.variables[i]] = unescapeKey(match[i + 1]);\n }\n return bindings;\n }\n\n test(path) {\n return this._regex.test(path);\n }\n\n toString() {\n return this._regex.toString();\n }\n}\n\nexport function makePathMatcher(pattern) {\n let matcher = pathMatchers[pattern];\n if (!matcher) {\n matcher = new PathMatcher(pattern);\n // Minimal pseudo-LRU behavior, since we don't expect to actually fill up the cache.\n if (_.size(pathMatchers) === maxNumPathMatchers) delete pathMatchers[_.keys(pathMatchers)[0]];\n pathMatchers[pattern] = matcher;\n }\n return matcher;\n}\n","import {unescapeKey} from './utils/paths.js';\nimport _ from 'lodash';\n\nconst MIN_WORKER_VERSION = '4.0.0';\n\n\nclass Snapshot {\n constructor({path, value, exists, writeSerial}) {\n this._path = path;\n this._value = value;\n this._exists = value === undefined ? exists || false : value !== null;\n this._writeSerial = writeSerial;\n }\n\n get path() {\n return this._path;\n }\n\n get exists() {\n return this._exists;\n }\n\n get value() {\n if (this._value === undefined) throw new Error('Value omitted from snapshot');\n return this._value;\n }\n\n get key() {\n if (this._key === undefined) this._key = unescapeKey(this._path.replace(/.*\\//, ''));\n return this._key;\n }\n\n get writeSerial() {\n return this._writeSerial;\n }\n}\n\n\nexport default class Bridge {\n constructor(webWorker) {\n this._idCounter = 0;\n this._deferreds = {};\n this._suspended = false;\n this._servers = {};\n this._callbacks = {};\n this._log = _.noop;\n this._inboundMessages = [];\n this._outboundMessages = [];\n this._flushMessageQueue = this._flushMessageQueue.bind(this);\n this._port = webWorker.port || webWorker;\n this._shared = !!webWorker.port;\n this._dead = undefined;\n Object.seal(this);\n this._port.onmessage = this._receive.bind(this);\n }\n\n init(lockName, config) {\n const items = [];\n try {\n const storage = window.localStorage || window.sessionStorage;\n if (!storage) throw new Error('localStorage and sessionStorage not available');\n for (let i = 0; i < storage.length; i++) {\n const key = storage.key(i);\n items.push({key, value: storage.getItem(key)});\n }\n } catch {\n // Some browsers don't like us accessing local storage -- nothing we can do.\n }\n return this._send({msg: 'init', storage: items, config, lockName}).then(response => {\n const workerVersion = response.version.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(-.*)?$/);\n if (workerVersion) {\n const minVersion = MIN_WORKER_VERSION.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(-.*)?$/);\n // Major version must match precisely, minor and patch must be greater than or equal.\n const sufficient = workerVersion[1] === minVersion[1] && (\n workerVersion[2] > minVersion[2] ||\n workerVersion[2] === minVersion[2] && workerVersion[3] >= minVersion[3]\n );\n if (!sufficient) {\n return Promise.reject(new Error(\n `Incompatible Firetruss worker version: ${response.version} ` +\n `(${MIN_WORKER_VERSION} or better required)`\n ));\n }\n }\n if (response.livenessLockName) {\n navigator.locks.request(response.livenessLockName, () => {\n this.crash({error: {\n name: 'Error', message: 'worker terminated', extra: {shared: this._shared}\n }});\n });\n }\n return response;\n });\n }\n\n suspend(suspended) {\n if (suspended === undefined) suspended = true;\n if (this._suspended === suspended) return;\n this._suspended = suspended;\n if (!suspended) {\n this._receiveMessages(this._inboundMessages);\n this._inboundMessages = [];\n if (this._outboundMessages.length) Promise.resolve().then(this._flushMessageQueue);\n }\n }\n\n enableLogging(fn) {\n if (fn) {\n if (fn === true) {\n fn = console.log.bind(console);\n this._send({msg: 'enableFirebaseLogging', value: true});\n }\n this._log = fn;\n } else {\n this._send({msg: 'enableFirebaseLogging', value: false});\n this._log = _.noop;\n }\n }\n\n _send(message) {\n message.id = ++this._idCounter;\n let promise;\n if (this._dead) {\n return Promise.reject(this._dead);\n } else if (message.oneWay) {\n promise = Promise.resolve();\n } else {\n promise = new Promise((resolve, reject) => {\n this._deferreds[message.id] = {resolve, reject};\n });\n const deferred = this._deferreds[message.id];\n deferred.promise = promise;\n deferred.params = message;\n }\n if (!this._outboundMessages.length && !this._suspended) {\n Promise.resolve().then(this._flushMessageQueue);\n }\n this._log('send:', message);\n this._outboundMessages.push(message);\n return promise;\n }\n\n _flushMessageQueue() {\n this._log('flush:', this._outboundMessages.length, 'messages');\n try {\n this._port.postMessage(this._outboundMessages);\n this._outboundMessages = [];\n } catch (e) {\n this._log('flush failed:', e);\n e.extra = {messages: this._outboundMessages};\n throw e;\n }\n }\n\n _receive(event) {\n if (this._dead) return;\n if (this._suspended) {\n this._inboundMessages = this._inboundMessages.concat(event.data);\n } else {\n this._receiveMessages(event.data);\n }\n }\n\n _receiveMessages(messages) {\n for (const message of messages) {\n this._log('recv:', message);\n const fn = this[message.msg];\n if (!_.isFunction(fn)) throw new Error('Unknown message: ' + message.msg);\n fn.call(this, message);\n }\n }\n\n bindExposedFunction(name) {\n return (function() {\n return this._send({msg: 'call', name, args: Array.prototype.slice.call(arguments)});\n }).bind(this);\n }\n\n resolve(message) {\n const deferred = this._deferreds[message.id];\n if (!deferred) throw new Error('Received resolution to inexistent Firebase call');\n delete this._deferreds[message.id];\n deferred.resolve(message.result);\n }\n\n reject(message) {\n const deferred = this._deferreds[message.id];\n if (!deferred) throw new Error('Received rejection of inexistent Firebase call');\n delete this._deferreds[message.id];\n deferred.reject(errorFromJson(message.error, deferred.params));\n }\n\n crash(message) {\n let details = `Internal worker error: ${message.error.name}: ${message.error.message}`;\n if (message.error.cause) details += ` (caused by ${message.error.cause})`;\n this._dead = new Error(details);\n if (message.error.extra) this._dead.extra = message.error.extra;\n _.forEach(this._deferreds, ({reject}) => {reject(this._dead);});\n this._deferreds = {};\n throw this._dead;\n }\n\n updateLocalStorage({items}) {\n try {\n const storage = window.localStorage || window.sessionStorage;\n for (const item of items) {\n if (item.value === null) {\n storage.removeItem(item.key);\n } else {\n storage.setItem(item.key, item.value);\n }\n }\n } catch {\n // If we're denied access, there's nothing we can do.\n }\n }\n\n trackServer(rootUrl) {\n if (Object.hasOwn(this._servers, rootUrl)) return Promise.resolve();\n const server = this._servers[rootUrl] = {authListeners: []};\n const authCallbackId = this._registerCallback(this._authCallback.bind(this, server));\n this._send({msg: 'onAuth', url: rootUrl, callbackId: authCallbackId});\n }\n\n _authCallback(server, auth) {\n server.auth = auth;\n for (const listener of server.authListeners) listener(auth);\n }\n\n onAuth(rootUrl, callback, context) {\n const listener = callback.bind(context);\n listener.callback = callback;\n listener.context = context;\n this._servers[rootUrl].authListeners.push(listener);\n listener(this.getAuth(rootUrl));\n }\n\n offAuth(rootUrl, callback, context) {\n const authListeners = this._servers[rootUrl].authListeners;\n for (let i = 0; i < authListeners.length; i++) {\n const listener = authListeners[i];\n if (listener.callback === callback && listener.context === context) {\n authListeners.splice(i, 1);\n break;\n }\n }\n }\n\n getAuth(rootUrl) {\n return this._servers[rootUrl].auth;\n }\n\n authWithCustomToken(url, authToken) {\n return this._send({msg: 'authWithCustomToken', url, authToken});\n }\n\n authAnonymously(url) {\n return this._send({msg: 'authAnonymously', url});\n }\n\n unauth(url) {\n return this._send({msg: 'unauth', url});\n }\n\n set(url, value, writeSerial) {return this._send({msg: 'set', url, value, writeSerial});}\n update(url, value, writeSerial) {return this._send({msg: 'update', url, value, writeSerial});}\n\n once(url, writeSerial) {\n return this._send({msg: 'once', url, writeSerial}).then(snapshot => new Snapshot(snapshot));\n }\n\n on(listenerKey, url, spec, eventType, snapshotCallback, cancelCallback, context, options) {\n const handle = {\n listenerKey, eventType, snapshotCallback, cancelCallback, context,\n params: {msg: 'on', listenerKey, url, spec, eventType, options}\n };\n const callback = this._onCallback.bind(this, handle);\n this._registerCallback(callback, handle);\n // Keep multiple IDs to allow the same snapshotCallback to be reused.\n snapshotCallback.__callbackIds = snapshotCallback.__callbackIds || [];\n snapshotCallback.__callbackIds.push(handle.id);\n this._send({\n msg: 'on', listenerKey, url, spec, eventType, callbackId: handle.id, options\n }).catch(error => {\n callback(error);\n });\n }\n\n off(listenerKey, url, spec, eventType, snapshotCallback, context) {\n const idsToDeregister = [];\n let callbackId;\n if (snapshotCallback) {\n callbackId = this._findAndRemoveCallbackId(\n snapshotCallback, handle => _.isMatch(handle, {listenerKey, eventType, context})\n );\n if (!callbackId) return Promise.resolve(); // no-op, never registered or already deregistered\n idsToDeregister.push(callbackId);\n } else {\n for (const id of _.keys(this._callbacks)) {\n const handle = this._callbacks[id];\n if (handle.listenerKey === listenerKey && (!eventType || handle.eventType === eventType)) {\n idsToDeregister.push(id);\n }\n }\n }\n // Nullify callbacks first, then deregister after off() is complete. We don't want any\n // callbacks in flight from the worker to be invoked while the off() is processing, but we don't\n // want them to throw an exception either.\n for (const id of idsToDeregister) this._nullifyCallback(id);\n return this._send({msg: 'off', listenerKey, url, spec, eventType, callbackId}).then(() => {\n for (const id of idsToDeregister) this._deregisterCallback(id);\n });\n }\n\n _onCallback(handle, error, snapshotJson) {\n if (error) {\n this._deregisterCallback(handle.id);\n const e = errorFromJson(error, handle.params);\n if (handle.cancelCallback) {\n handle.cancelCallback.call(handle.context, e);\n } else {\n console.error(e);\n }\n } else {\n handle.snapshotCallback.call(handle.context, new Snapshot(snapshotJson));\n }\n }\n\n transaction(url, oldValue, relativeUpdates, writeSerial) {\n return this._send(\n {msg: 'transaction', url, oldValue, relativeUpdates, writeSerial}\n ).then(result => {\n if (result.snapshots) {\n result.snapshots = _.map(result.snapshots, jsonSnapshot => new Snapshot(jsonSnapshot));\n }\n return result;\n });\n }\n\n onDisconnect(url, method, value) {\n return this._send({msg: 'onDisconnect', url, method, value});\n }\n\n bounceConnection() {\n return this._send({msg: 'bounceConnection'});\n }\n\n callback({id, args}) {\n const handle = this._callbacks[id];\n if (!handle) throw new Error('Unregistered callback: ' + id);\n handle.callback.apply(null, args);\n }\n\n _registerCallback(callback, handle) {\n handle = handle || {};\n handle.callback = callback;\n handle.id = `cb${++this._idCounter}`;\n this._callbacks[handle.id] = handle;\n return handle.id;\n }\n\n _nullifyCallback(id) {\n this._callbacks[id].callback = _.noop;\n }\n\n _deregisterCallback(id) {\n delete this._callbacks[id];\n }\n\n _findAndRemoveCallbackId(callback, predicate) {\n if (!callback.__callbackIds) return;\n let i = 0;\n while (i < callback.__callbackIds.length) {\n const id = callback.__callbackIds[i];\n const handle = this._callbacks[id];\n if (!handle) {\n callback.__callbackIds.splice(i, 1);\n continue;\n }\n if (predicate(handle)) {\n callback.__callbackIds.splice(i, 1);\n return id;\n }\n i += 1;\n }\n }\n}\n\n\nfunction errorFromJson(json, params) {\n if (!json || _.isError(json)) return json;\n const error = new Error(json.message);\n try {\n error.params = params;\n for (const propertyName in json) {\n if (propertyName === 'message' || !Object.hasOwn(json, propertyName)) continue;\n try {\n error[propertyName] = json[propertyName];\n } catch {\n error.extra = error.extra || {};\n error.extra[propertyName] = json[propertyName];\n }\n }\n } catch (e) {\n if (!/object is not extensible/.test(e.message)) throw e;\n }\n return error;\n}\n","import {escapeKey, unescapeKey, makePathMatcher} from './utils/paths.js';\n\nimport _ from 'lodash';\n\n/* eslint-disable no-use-before-define */\n\nconst EMPTY_ANNOTATIONS = {};\nObject.freeze(EMPTY_ANNOTATIONS);\n\n\nexport class Handle {\n constructor(tree, path, annotations) {\n this._tree = tree;\n this._path = path.replace(/^\\/*/, '/').replace(/\\/$/, '') || '/';\n if (annotations) {\n this._annotations = annotations;\n Object.freeze(annotations);\n }\n }\n\n get $ref() {return this;}\n get key() {\n if (!this._key) this._key = unescapeKey(this._path.replace(/.*\\//, ''));\n return this._key;\n }\n\n get path() {return this._path;}\n get _pathPrefix() {return this._path === '/' ? '' : this._path;}\n get parent() {\n return new Reference(this._tree, this._path.replace(/\\/[^/]*$/, ''), this._annotations);\n }\n\n get annotations() {\n return this._annotations || EMPTY_ANNOTATIONS;\n }\n\n child() {\n if (!arguments.length) return this;\n const segments = [];\n for (const key of arguments) {\n if (_.isNil(key)) return;\n segments.push(escapeKey(key));\n }\n return new Reference(\n this._tree, `${this._pathPrefix}/${segments.join('/')}`,\n this._annotations\n );\n }\n\n children() {\n if (!arguments.length) return this;\n const escapedKeys = [];\n for (let i = 0; i < arguments.length; i++) {\n const arg = arguments[i];\n if (_.isArray(arg)) {\n const mapping = {};\n const subPath = this._pathPrefix + (escapedKeys.length ? `/${escapedKeys.join('/')}` : '');\n const rest = _.slice(arguments, i + 1);\n for (const key of arg) {\n const subRef =\n new Reference(this._tree, `${subPath}/${escapeKey(key)}`, this._annotations);\n const subMapping = subRef.children.apply(subRef, rest);\n if (subMapping) mapping[key] = subMapping;\n }\n return mapping;\n }\n if (_.isNil(arg)) return;\n escapedKeys.push(escapeKey(arg));\n }\n return new Reference(\n this._tree, `${this._pathPrefix}/${escapedKeys.join('/')}`, this._annotations);\n }\n\n peek(callback) {\n return this._tree.truss.peek(this, callback);\n }\n\n match(pattern) {\n return makePathMatcher(pattern).match(this.path);\n }\n\n test(pattern) {\n return makePathMatcher(pattern).test(this.path);\n }\n\n isEqual(that) {\n if (!(that instanceof Handle)) return false;\n return this._tree === that._tree && this.toString() === that.toString() &&\n _.isEqual(this._annotations, that._annotations);\n }\n\n belongsTo(truss) {\n return this._tree.truss === truss;\n }\n}\n\n\nexport class Query extends Handle {\n constructor(tree, path, spec, annotations) {\n super(tree, path, annotations);\n this._spec = this._copyAndValidateSpec(spec);\n const queryTerms = _(this._spec)\n .map((value, key) => `${key}=${encodeURIComponent(JSON.stringify(value))}`)\n .sortBy()\n .join('&');\n this._string = `${this._path}?${queryTerms}`;\n Object.freeze(this);\n }\n\n // Vue-bound\n get ready() {\n return this._tree.isQueryReady(this);\n }\n\n get constraints() {\n return this._spec;\n }\n\n annotate(annotations) {\n return new Query(\n this._tree, this._path, this._spec, _.assign({}, this._annotations, annotations));\n }\n\n _copyAndValidateSpec(spec) {\n if (!spec.by) throw new Error('Query needs \"by\" clause: ' + JSON.stringify(spec));\n if (('at' in spec) + ('from' in spec) + ('to' in spec) > 1) {\n throw new Error(\n 'Query must contain at most one of \"at\", \"from\", or \"to\" clauses: ' + JSON.stringify(spec));\n }\n if (('first' in spec) + ('last' in spec) > 1) {\n throw new Error(\n 'Query must contain at most one of \"first\" or \"last\" clauses: ' + JSON.stringify(spec));\n }\n if (!_.some(['at', 'from', 'to', 'first', 'last'], clause => clause in spec)) {\n throw new Error(\n 'Query must contain at least one of \"at\", \"from\", \"to\", \"first\", or \"last\" clauses: ' +\n JSON.stringify(spec));\n }\n spec = _.clone(spec);\n if (spec.by !== '$key' && spec.by !== '$value') {\n if (!(spec.by instanceof Reference)) {\n throw new Error('Query \"by\" value must be a reference: ' + spec.by);\n }\n let childPath = spec.by.toString();\n if (!_.startsWith(childPath, this._path)) {\n throw new Error(\n 'Query \"by\" value must be a descendant of target reference: ' + spec.by);\n }\n childPath = childPath.slice(this._path.length).replace(/^\\/?/, '');\n if (!_.includes(childPath, '/')) {\n throw new Error(\n 'Query \"by\" value must not be a direct child of target reference: ' + spec.by);\n }\n spec.by = childPath.replace(/.*?\\//, '');\n }\n Object.freeze(spec);\n return spec;\n }\n\n\n toString() {return this._string;}\n toJSON() {return `query → ${this.toString()}`;}\n}\n\n\nexport class Reference extends Handle {\n\n constructor(tree, path, annotations) {\n super(tree, path, annotations);\n Object.freeze(this);\n }\n\n get ready() {return this._tree.isReferenceReady(this);} // Vue-bound\n get value() {return this._tree.getObject(this.path);} // Vue-bound\n toString() {return this._path;}\n toJSON() {return `reference → ${this.toString()}`;}\n\n annotate(annotations) {\n return new Reference(this._tree, this._path, _.assign({}, this._annotations, annotations));\n }\n\n query(spec) {\n return new Query(this._tree, this._path, spec, this._annotations);\n }\n\n set(value) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'set', {[this.path]: value});\n }\n\n update(values) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'update', values);\n }\n\n override(value) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'override', {[this.path]: value});\n }\n\n commit(updateFunction) {\n this._checkForUndefinedPath();\n return this._tree.commit(this, updateFunction);\n }\n\n _checkForUndefinedPath() {\n if (this.path === '/undefined') throw new Error('Invalid path for operation: ' + this.path);\n }\n}\n\nexport default Reference;\n","import _ from 'lodash';\n\n\nexport const SERVER_TIMESTAMP = Object.freeze({'.sv': 'timestamp'});\n\nexport function isTrussEqual(a, b) {\n return _.isEqualWith(a, b, isTrussValueEqual);\n}\n\nfunction isTrussValueEqual(a, b) {\n if (a === b || a === undefined || a === null || b === undefined || b === null ||\n a.$truss || b.$truss) return a === b;\n if (a.isEqual) return a.isEqual(b);\n}\n\nexport function copyPrototype(a, b) {\n for (const prop of Object.getOwnPropertyNames(a.prototype)) {\n if (prop === 'constructor') continue;\n Object.defineProperty(b.prototype, prop, Object.getOwnPropertyDescriptor(a.prototype, prop));\n }\n}\n","import {isTrussEqual} from './utils.js';\n\nimport _ from 'lodash';\n\n\nclass StatItem {\n constructor(name) {\n _.assign(this, {name, numRecomputes: 0, numUpdates: 0, computeTime: 0, updateTime: 0});\n }\n\n add(item) {\n this.computeTime += item.computeTime;\n this.updateTime += item.updateTime;\n this.numUpdates += item.numUpdates;\n this.numRecomputes += item.numRecomputes;\n }\n\n get runtime() {\n return this.computeTime + this.updateTime;\n }\n\n get runtimePerRecompute() {\n return this.numRecomputes ? this.computeTime / this.numRecomputes : 0;\n }\n\n get runtimePerUpdate() {\n return this.numUpdates ? this.updateTime / this.numUpdates : 0;\n }\n\n toLogParts(totals) {\n return [\n `${this.name}:`, ` ${(this.runtime / 1000).toFixed(2)}s`,\n `(${(this.runtime / totals.runtime * 100).toFixed(1)}%)`,\n ` ${this.numUpdates} upd /`, `${this.numRecomputes} runs`,\n `(${(this.numUpdates / this.numRecomputes * 100).toFixed(1)}%)`,\n ` ${this.runtimePerRecompute.toFixed(2)}ms / run`,\n ` ${this.runtimePerUpdate.toFixed(2)}ms / upd`\n ];\n }\n}\n\nclass Stats {\n constructor() {\n this._items = {};\n }\n\n for(name) {\n if (!this._items[name]) this._items[name] = new StatItem(name);\n return this._items[name];\n }\n\n get list() {\n return _(this._items).values().sortBy(item => -item.runtime).value();\n }\n\n log(n = 10) {\n let stats = this.list;\n if (!stats.length) return;\n const totals = new StatItem('=== Total');\n _.forEach(stats, stat => {totals.add(stat);});\n stats = _.take(stats, n);\n const above = new StatItem('--- Above');\n _.forEach(stats, stat => {above.add(stat);});\n const lines = _.map(stats, item => item.toLogParts(totals));\n lines.push(above.toLogParts(totals));\n lines.push(totals.toLogParts(totals));\n const widths = _.map(_.range(lines[0].length), i => _(lines).map(line => line[i].length).max());\n _.forEach(lines, line => {\n console.log(_.map(line, (column, i) => _.padStart(column, widths[i])).join(' '));\n });\n }\n\n wrap(getter, className, propName) {\n const item = this.for(`${className}.${propName}`);\n return function() {\n /* eslint-disable no-invalid-this */\n const startTime = performance.now();\n const oldValue = this._computedWatchers && this._computedWatchers[propName].value;\n try {\n const newValue = getter.call(this);\n if (!isTrussEqual(oldValue, newValue)) item.numUpdates += 1;\n return newValue;\n } finally {\n item.computeTime += performance.now() - startTime;\n item.numRecomputes += 1;\n }\n };\n }\n}\n\nexport default new Stats();\n","import {Handle, Query, Reference} from './Reference.js';\nimport angular from './angularCompatibility.js';\nimport stats from './utils/stats.js';\nimport {isTrussEqual} from './utils/utils.js';\n\nimport _ from 'lodash';\nimport Vue from 'vue';\n\n\nexport default class Connector {\n constructor(scope, connections, tree, method, refs) {\n Object.freeze(connections);\n this._scope = scope;\n this._connections = connections;\n this._tree = tree;\n this._method = method;\n\n this._subConnectors = {};\n this._disconnects = {};\n this._angularUnwatches = undefined;\n this._data = {};\n this._vue = new Vue({data: {\n descriptors: {},\n refs: refs || {},\n values: _.mapValues(connections, _.constant(undefined))\n }});\n // allow instance-level overrides of destroy() method\n this.destroy = this.destroy; // eslint-disable-line no-self-assign\n Object.seal(this);\n\n this._linkScopeProperties();\n\n _.forEach(connections, (descriptor, key) => {\n if (_.isFunction(descriptor)) {\n this._bindComputedConnection(key, descriptor);\n } else {\n this._connect(key, descriptor);\n }\n });\n\n if (angular.active && scope && scope.$on && scope.$id) {\n scope.$on('$destroy', () => {this.destroy();});\n }\n }\n\n get ready() {\n return _.every(this._connections, (ignored, key) => {\n const descriptor = this._vue.descriptors[key];\n if (!descriptor) return false;\n if (descriptor instanceof Handle) return descriptor.ready;\n return this._subConnectors[key].ready;\n });\n }\n\n get at() {\n return this._vue.refs;\n }\n\n get data() {\n return this._data;\n }\n\n destroy() {\n this._unlinkScopeProperties();\n _.forEach(this._angularUnwatches, unwatch => {unwatch();});\n _.forEach(this._connections, (descriptor, key) => {this._disconnect(key);});\n this._vue.$destroy();\n }\n\n _linkScopeProperties() {\n const dataProperties = _.mapValues(this._connections, (unused, key) => ({\n configurable: true, enumerable: false, get: () => {\n const descriptor = this._vue.descriptors[key];\n if (descriptor instanceof Reference) return descriptor.value;\n return this._vue.values[key];\n }\n }));\n Object.defineProperties(this._data, dataProperties);\n if (this._scope) {\n for (const key in this._connections) {\n if (key in this._scope) {\n throw new Error(`Property already defined on connection target: ${key}`);\n }\n }\n Object.defineProperties(this._scope, dataProperties);\n if (this._scope.__ob__) this._scope.__ob__.dep.notify();\n }\n }\n\n _unlinkScopeProperties() {\n if (!this._scope) return;\n _.forEach(this._connections, (descriptor, key) => {\n delete this._scope[key];\n });\n }\n\n _bindComputedConnection(key, fn) {\n const connectionStats = stats.for(`connection.at.${key}`);\n const getter = this._computeConnection.bind(this, fn, connectionStats);\n const update = this._updateComputedConnection.bind(this, key, fn, connectionStats);\n const angularWatch = angular.active && !fn.angularWatchSuppressed;\n // Use this._vue.$watch instead of truss.observe here so that we can disable the immediate\n // callback if we'll get one from Angular anyway.\n this._vue.$watch(getter, update, {immediate: !angularWatch});\n if (angularWatch) {\n if (!this._angularUnwatches) this._angularUnwatches = [];\n this._angularUnwatches.push(angular.watch(getter, update, true));\n }\n }\n\n _computeConnection(fn, connectionStats) {\n const startTime = performance.now();\n try {\n return flattenRefs(fn.call(this._scope));\n } finally {\n connectionStats.computeTime += performance.now() - startTime;\n connectionStats.numRecomputes += 1;\n }\n }\n\n _updateComputedConnection(key, value, connectionStats) {\n const newDescriptor = _.isFunction(value) ? value(this._scope) : value;\n const oldDescriptor = this._vue.descriptors[key];\n const descriptorChanged = !isTrussEqual(oldDescriptor, newDescriptor);\n if (!descriptorChanged) return;\n if (connectionStats && descriptorChanged) connectionStats.numUpdates += 1;\n if (!newDescriptor) {\n this._disconnect(key);\n return;\n }\n if (newDescriptor instanceof Handle || !_.has(this._subConnectors, key)) {\n this._disconnect(key);\n this._connect(key, newDescriptor);\n } else {\n this._subConnectors[key]._updateConnections(newDescriptor);\n }\n Vue.set(this._vue.descriptors, key, newDescriptor);\n angular.digest();\n }\n\n _updateConnections(connections) {\n _.forEach(connections, (descriptor, key) => {\n this._updateComputedConnection(key, descriptor);\n });\n _.forEach(this._connections, (descriptor, key) => {\n if (!_.has(connections, key)) this._updateComputedConnection(key);\n });\n this._connections = connections;\n }\n\n _connect(key, descriptor) {\n Vue.set(this._vue.descriptors, key, descriptor);\n angular.digest();\n if (!descriptor) return;\n Vue.set(this._vue.values, key, undefined);\n if (descriptor instanceof Reference) {\n Vue.set(this._vue.refs, key, descriptor);\n this._disconnects[key] = this._tree.connectReference(descriptor, this._method);\n } else if (descriptor instanceof Query) {\n Vue.set(this._vue.refs, key, descriptor);\n const updateFn = this._updateQueryValue.bind(this, key);\n this._disconnects[key] = this._tree.connectQuery(descriptor, updateFn, this._method);\n } else {\n const subScope = {}, subRefs = {};\n Vue.set(this._vue.refs, key, subRefs);\n const subConnector = this._subConnectors[key] =\n new Connector(subScope, descriptor, this._tree, this._method, subRefs);\n // Use a truss.observe here instead of this._vue.$watch so that the \"immediate\" execution\n // actually takes place after we've captured the unwatch function, in case the subConnector\n // is ready immediately.\n const unobserve = this._disconnects[key] = this._tree.truss.observe(\n () => subConnector.ready,\n subReady => {\n if (!subReady) return;\n unobserve();\n delete this._disconnects[key];\n Vue.set(this._vue.values, key, subScope);\n angular.digest();\n }\n );\n }\n }\n\n _disconnect(key) {\n Vue.delete(this._vue.refs, key);\n this._updateRefValue(key, undefined);\n if (_.has(this._subConnectors, key)) {\n this._subConnectors[key].destroy();\n delete this._subConnectors[key];\n }\n if (this._disconnects[key]) this._disconnects[key]();\n delete this._disconnects[key];\n Vue.delete(this._vue.descriptors, key);\n angular.digest();\n }\n\n _updateRefValue(key, value) {\n if (this._vue.values[key] !== value) {\n Vue.set(this._vue.values, key, value);\n angular.digest();\n }\n }\n\n _updateQueryValue(key, childKeys) {\n if (!this._vue.values[key]) {\n Vue.set(this._vue.values, key, {});\n angular.digest();\n }\n const subScope = this._vue.values[key];\n for (const childKey in subScope) {\n if (!Object.hasOwn(subScope, childKey)) continue;\n if (!_.includes(childKeys, childKey)) {\n Vue.delete(subScope, childKey);\n angular.digest();\n }\n }\n const object = this._tree.getObject(this._vue.descriptors[key].path);\n for (const childKey of childKeys) {\n if (Object.hasOwn(subScope, childKey)) continue;\n Vue.set(subScope, childKey, object[childKey]);\n angular.digest();\n }\n }\n\n}\n\nfunction flattenRefs(refs) {\n if (!refs) return;\n if (refs instanceof Handle) return refs.toString();\n return _.mapValues(refs, flattenRefs);\n}\n\n","export function wrapPromiseCallback(callback) {\n return function() {\n try {\n // eslint-disable-next-line no-invalid-this\n return Promise.resolve(callback.apply(this, arguments));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\nexport function promiseCancel(promise, cancel) {\n promise = promiseFinally(promise, () => {cancel = null;});\n promise.cancel = () => {\n if (!cancel) return;\n cancel();\n cancel = null;\n };\n propagatePromiseProperty(promise, 'cancel');\n return promise;\n}\n\nfunction propagatePromiseProperty(promise, propertyName) {\n const originalThen = promise.then, originalCatch = promise.catch;\n promise.then = (onResolved, onRejected) => {\n const derivedPromise = originalThen.call(promise, onResolved, onRejected);\n derivedPromise[propertyName] = promise[propertyName];\n propagatePromiseProperty(derivedPromise, propertyName);\n return derivedPromise;\n };\n promise.catch = onRejected => {\n const derivedPromise = originalCatch.call(promise, onRejected);\n derivedPromise[propertyName] = promise[propertyName];\n propagatePromiseProperty(derivedPromise, propertyName);\n return derivedPromise;\n };\n return promise;\n}\n\nexport function promiseFinally(promise, onFinally) {\n if (!onFinally) return promise;\n onFinally = wrapPromiseCallback(onFinally);\n return promise.then(result => {\n return onFinally().then(() => result);\n }, error => {\n return onFinally().then(() => Promise.reject(error));\n });\n}\n","import _ from 'lodash';\nimport Reference from './Reference.js';\nimport {wrapPromiseCallback} from './utils/promises.js';\nimport {joinPath} from './utils/paths.js';\n\n\nconst INTERCEPT_KEYS = [\n 'read', 'write', 'auth', 'set', 'update', 'commit', 'connect', 'peek', 'authenticate',\n 'unathenticate', 'certify', 'all'\n];\n\nconst EMPTY_ARRAY = [];\n\n\nclass SlowHandle {\n constructor(operation, delay, callback) {\n this._operation = operation;\n this._delay = delay;\n this._callback = callback;\n this._fired = false;\n }\n\n initiate() {\n this.cancel();\n this._fired = false;\n const elapsed = Date.now() - this._operation._startTimestamp;\n this._timeoutId = setTimeout(() => {\n this._fired = true;\n this._callback(this._operation);\n }, this._delay - elapsed);\n }\n\n cancel() {\n if (this._fired) this._callback(this._operation);\n if (this._timeoutId) clearTimeout(this._timeoutId);\n }\n}\n\n\nclass Operation {\n constructor(type, method, target, operand) {\n this._type = type;\n this._method = method;\n this._target = target;\n this._operand = operand;\n this._ready = false;\n this._running = false;\n this._ended = false;\n this._tries = 0;\n this._startTimestamp = Date.now();\n this._slowHandles = [];\n }\n\n get type() {return this._type;}\n get method() {return this._method;}\n get target() {return this._target;}\n get targets() {\n if (this._method !== 'update') return [this._target];\n return _.map(this._operand, (value, escapedPathFragment) => {\n return new Reference(\n this._target._tree, joinPath(this._target.path, escapedPathFragment),\n this._target._annotations);\n });\n }\n\n get operand() {return this._operand;}\n get ready() {return this._ready;}\n get running() {return this._running;}\n get ended() {return this._ended;}\n get tries() {return this._tries;}\n get error() {return this._error;}\n\n onSlow(delay, callback) {\n const handle = new SlowHandle(this, delay, callback);\n this._slowHandles.push(handle);\n handle.initiate();\n }\n\n _setRunning(value) {\n this._running = value;\n }\n\n _setEnded(value) {\n this._ended = value;\n }\n\n _markReady(ending) {\n this._ready = true;\n if (!ending) this._tries = 0;\n _.forEach(this._slowHandles, handle => handle.cancel());\n }\n\n _clearReady() {\n // Temporarily set ready to correctly reset previously triggered slow handles.\n this._ready = true;\n this._startTimestamp = Date.now();\n _.forEach(this._slowHandles, handle => handle.initiate());\n this._ready = false;\n }\n\n _incrementTries() {\n this._tries++;\n }\n}\n\n\nexport default class Dispatcher {\n constructor(bridge) {\n this._bridge = bridge;\n this._callbacks = {};\n Object.freeze(this);\n }\n\n intercept(interceptKey, callbacks) {\n if (!_.includes(INTERCEPT_KEYS, interceptKey)) {\n throw new Error('Unknown intercept operation type: ' + interceptKey);\n }\n const badCallbackKeys =\n _.difference(_.keys(callbacks), ['onBefore', 'onAfter', 'onError', 'onFailure']);\n if (badCallbackKeys.length) {\n throw new Error('Unknown intercept callback types: ' + badCallbackKeys.join(', '));\n }\n const wrappedCallbacks = {\n onBefore: this._addCallback('onBefore', interceptKey, callbacks.onBefore),\n onAfter: this._addCallback('onAfter', interceptKey, callbacks.onAfter),\n onError: this._addCallback('onError', interceptKey, callbacks.onError),\n onFailure: this._addCallback('onFailure', interceptKey, callbacks.onFailure)\n };\n return this._removeCallbacks.bind(this, interceptKey, wrappedCallbacks);\n }\n\n _addCallback(stage, interceptKey, callback) {\n if (!callback) return;\n const key = this._getCallbacksKey(stage, interceptKey);\n const wrappedCallback = wrapPromiseCallback(callback);\n (this._callbacks[key] || (this._callbacks[key] = [])).push(wrappedCallback);\n return wrappedCallback;\n }\n\n _removeCallback(stage, interceptKey, wrappedCallback) {\n if (!wrappedCallback) return;\n const key = this._getCallbacksKey(stage, interceptKey);\n if (this._callbacks[key]) _.pull(this._callbacks[key], wrappedCallback);\n }\n\n _removeCallbacks(interceptKey, wrappedCallbacks) {\n _.forEach(wrappedCallbacks, (wrappedCallback, stage) => {\n this._removeCallback(stage, interceptKey, wrappedCallback);\n });\n }\n\n _getCallbacks(stage, operationType, method) {\n return [].concat(\n this._callbacks[this._getCallbacksKey(stage, method)] || EMPTY_ARRAY,\n this._callbacks[this._getCallbacksKey(stage, operationType)] || EMPTY_ARRAY,\n this._callbacks[this._getCallbacksKey(stage, 'all')] || EMPTY_ARRAY\n );\n }\n\n _getCallbacksKey(stage, interceptKey) {\n return `${stage}_${interceptKey}`;\n }\n\n execute(operationType, method, target, operand, executor) {\n executor = wrapPromiseCallback(executor);\n const operation = this.createOperation(operationType, method, target, operand);\n return this.begin(operation).then(() => {\n const executeWithRetries = () => {\n return executor().catch(e => this._retryOrEnd(operation, e).then(executeWithRetries));\n };\n return executeWithRetries();\n }).then(result => this.end(operation).then(() => result));\n }\n\n createOperation(operationType, method, target, operand) {\n return new Operation(operationType, method, target, operand);\n }\n\n begin(operation) {\n return Promise.all(_.map(\n this._getCallbacks('onBefore', operation.type, operation.method),\n onBefore => onBefore(operation)\n )).then(() => {\n if (!operation.ended) operation._setRunning(true);\n }, e => this.end(operation, e));\n }\n\n markReady(operation) {\n operation._markReady();\n }\n\n clearReady(operation) {\n operation._clearReady();\n }\n\n retry(operation, error) {\n operation._incrementTries();\n operation._error = error;\n return Promise.all(_.map(\n this._getCallbacks('onError', operation.type, operation.method),\n onError => onError(operation, error)\n )).then(results => {\n // If the operation ended in the meantime, bail. This will cause the caller to attempt to\n // fail the operation, but since it's already ended the call to end() with an error will be a\n // no-op.\n if (operation.ended) return;\n const retrying = _.some(results);\n if (retrying) delete operation._error;\n return retrying;\n });\n }\n\n _retryOrEnd(operation, error) {\n return this.retry(operation, error).then(result => {\n if (!result) return this.end(operation, error);\n }, e => this.end(operation, e));\n }\n\n end(operation, error) {\n if (operation.ended) return Promise.resolve();\n operation._setRunning(false);\n operation._setEnded(true);\n if (error) {\n operation._error = error;\n } else {\n // In case we're racing with a retry(), wipe out the error.\n delete operation._error;\n }\n return Promise.all(_.map(\n this._getCallbacks('onAfter', operation.type, operation.method),\n onAfter => onAfter(operation)\n )).then(\n () => this._afterEnd(operation),\n e => {\n operation._error = e;\n return this._afterEnd(operation);\n }\n );\n }\n\n _afterEnd(operation) {\n operation._markReady(true);\n if (!operation.error) return Promise.resolve();\n const onFailureCallbacks = this._getCallbacks('onFailure', operation.type, operation.method);\n if (onFailureCallbacks) {\n setTimeout(() => {\n _.forEach(onFailureCallbacks, onFailure => onFailure(operation));\n }, 0);\n }\n return Promise.reject(operation.error);\n }\n}\n\n","const ALPHABET = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n\nconst getRandomValues = window.crypto && window.crypto.getRandomValues &&\n window.crypto.getRandomValues.bind(window.crypto);\n\nexport default class KeyGenerator {\n constructor() {\n this._lastUniqueKeyTime = 0;\n this._lastRandomValues = [];\n }\n\n generateUniqueKey(now) {\n now = now || Date.now();\n const chars = new Array(20);\n let prefix = now;\n for (let i = 7; i >= 0; i--) {\n chars[i] = ALPHABET.charAt(prefix & 0x3f); // eslint-disable-line no-bitwise\n prefix = Math.floor(prefix / 64);\n }\n if (now === this._lastUniqueKeyTime) {\n let i = 11;\n while (i >= 0 && this._lastRandomValues[i] === 63) {\n this._lastRandomValues[i] = 0;\n i -= 1;\n }\n if (i === -1) {\n throw new Error('Internal assertion failure: ran out of unique IDs for this millisecond');\n }\n this._lastRandomValues[i] += 1;\n } else {\n this._lastUniqueKeyTime = now;\n if (getRandomValues) {\n const array = new Uint8Array(12);\n getRandomValues(array);\n for (let i = 0; i < 12; i++) {\n // eslint-disable-next-line no-bitwise\n this._lastRandomValues[i] = array[i] & (i ? 0x3f : 0x0f);\n }\n } else {\n for (let i = 0; i < 12; i++) {\n // Make sure to leave some space for incrementing in the top nibble.\n this._lastRandomValues[i] = Math.floor(Math.random() * (i ? 64 : 16));\n }\n }\n }\n for (let i = 0; i < 12; i++) {\n chars[i + 8] = ALPHABET[this._lastRandomValues[i]];\n }\n return chars.join('');\n }\n}\n","import angular from './angularCompatibility.js';\nimport Vue from 'vue';\nimport Reference from './Reference.js';\n\n\nexport default class MetaTree {\n constructor(rootUrl, tree, bridge, dispatcher) {\n this._rootUrl = rootUrl;\n this._tree = tree;\n this._dispatcher = dispatcher;\n this._bridge = bridge;\n this._vue = new Vue({data: {$root: {\n connected: undefined, timeOffset: 0, user: undefined, userid: undefined,\n nowAtInterval(intervalMillis) {\n const key = 'now' + intervalMillis;\n if (!Object.hasOwn(this, key)) {\n const update = () => {\n Vue.set(this, key, Date.now() + this.timeOffset);\n angular.digest();\n };\n update();\n setInterval(update, intervalMillis);\n }\n return this[key];\n }\n }}});\n\n this._auth = {serial: 0, initialAuthChangeReceived: false, changePromise: Promise.resolve()};\n\n bridge.onAuth(rootUrl, this._handleAuthChange, this);\n\n this._connectInfoProperty('serverTimeOffset', 'timeOffset');\n this._connectInfoProperty('connected', 'connected');\n Object.freeze(this);\n }\n\n get root() {\n return this._vue.$data.$root;\n }\n\n destroy() {\n this._bridge.offAuth(this._rootUrl, this._handleAuthChange, this);\n this._vue.$destroy();\n }\n\n authenticate(token) {\n this._auth.serial++;\n return this._dispatcher.execute(\n 'auth', 'authenticate', new Reference(this._tree, '/'), token, () => {\n const promise = token ?\n this._bridge.authWithCustomToken(this._rootUrl, token) :\n this._bridge.authAnonymously(this._rootUrl);\n return promise.then(() => this._auth.changePromise);\n }\n );\n }\n\n unauthenticate() {\n // Signal user change to null pre-emptively. This is what the Firebase SDK does as well, since\n // it lets the app tear down user-required connections before the user is actually deauthed,\n // which can prevent spurious permission denied errors.\n this._auth.serial++;\n return this._handleAuthChange(null).then(approved => {\n // Bail if auth change callback initiated another authentication, since it will have already\n // sent the command to the bridge and sending our own now would incorrectly override it.\n if (!approved) return;\n return this._dispatcher.execute(\n 'auth', 'unauthenticate', new Reference(this._tree, '/'), undefined, () => {\n return this._bridge.unauth(this._rootUrl);\n }\n );\n });\n }\n\n _handleAuthChange(user) {\n const supersededChange = !this._auth.initialAuthChangeReceived && this._auth.serial;\n if (user !== undefined) this._auth.initialAuthChangeReceived = true;\n if (supersededChange) return;\n const authSerial = this._auth.serial;\n if (this.root.user === user) return Promise.resolve(false);\n const promise = this._dispatcher.execute(\n 'auth', 'certify', new Reference(this._tree, '/'), user, () => {\n if (this.root.user === user || authSerial !== this._auth.serial) return false;\n if (user) Object.freeze(user);\n this.root.user = user;\n this.root.userid = user && user.uid;\n angular.digest();\n return true;\n }\n );\n this._auth.changePromise = this._auth.changePromise.then(() => promise).catch();\n return promise;\n }\n\n _isAuthChangeStale(user) {\n return this.root.user === user;\n }\n\n _connectInfoProperty(property, attribute) {\n const url = new URL(this._rootUrl);\n url.pathname = encodeURI(`/.info/${property}`);\n this._bridge.on(url.href, url.href, null, 'value', snap => {\n this.root[attribute] = snap.value;\n angular.digest();\n });\n }\n}\n","import {Reference, Handle} from './Reference.js';\nimport angular from './angularCompatibility.js';\nimport stats from './utils/stats.js';\nimport {makePathMatcher, joinPath, splitPath, escapeKey, unescapeKey} from './utils/paths.js';\nimport {isTrussEqual, copyPrototype} from './utils/utils.js';\nimport {promiseFinally} from './utils/promises.js';\n\nimport _ from 'lodash';\n\n// These are defined separately for each object so they're not included in Value below.\nconst RESERVED_VALUE_PROPERTY_NAMES = {__ob__: true};\n\nconst UNSUPPORTED_LIFECYCLE_METHODS = new Set([\n 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'activated', 'deactivated', 'errorCaptured'\n]);\nconst UNSUPPORTED_LIFECYCLE_HOOKS =\n new Set(_.map(UNSUPPORTED_LIFECYCLE_METHODS, method => `hook:${method}`));\n\nconst LAST_COMPUTED_VALUE = Symbol('last-computed-value');\n\n// Holds properties that we're going to set on a model object that's being created right now as soon\n// as it's been created, but that we'd like to be accessible in the constructor. The object\n// prototype's getters will pick those up until they get overridden in the instance.\nlet creatingObjectProperties;\n\nlet currentPropertyFrozen;\n\n\nexport class BaseValue {\n get $info() {return this.$truss.info;}\n get $store() {return this.$truss.store;} // access indirectly to leave dependency trace\n get $now() {return this.$truss.now;}\n\n $newKey() {return this.$truss.newKey();}\n\n $intercept(actionType, callbacks) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const unintercept = this.$truss.intercept(actionType, callbacks);\n const uninterceptAndRemoveFinalizer = () => {\n unintercept();\n this.$off('hook:destroyed', uninterceptAndRemoveFinalizer);\n };\n this.$on('hook:destroyed', uninterceptAndRemoveFinalizer);\n return uninterceptAndRemoveFinalizer;\n }\n\n $connect(scope, connections) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n if (!connections) {\n connections = scope;\n scope = undefined;\n }\n const connector = this.$truss.connect(scope, wrapConnections(this, connections));\n const originalDestroy = connector.destroy;\n const destroy = () => {\n this.$off('hook:destroyed', destroy);\n return originalDestroy.call(connector);\n };\n this.$on('hook:destroyed', destroy);\n connector.destroy = destroy;\n return connector;\n }\n\n $peek(target, callback) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = promiseFinally(\n this.$truss.peek(target, callback), () => {this.$off('hook:destroyed', promise.cancel);}\n );\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n\n $observe(subjectFn, callbackFn, options) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n let unobserveAndRemoveFinalizer;\n\n const unobserve = this.$truss.observe(() => {\n this.$$touchThis();\n return subjectFn.call(this);\n }, callbackFn.bind(this), {...options, vm: this});\n\n unobserveAndRemoveFinalizer = () => { // eslint-disable-line prefer-const\n unobserve();\n this.$off('hook:destroyed', unobserveAndRemoveFinalizer);\n };\n this.$on('hook:destroyed', unobserveAndRemoveFinalizer);\n return unobserveAndRemoveFinalizer;\n }\n\n $when(expression, options) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = this.$truss.when(() => {\n this.$$touchThis();\n return expression.call(this);\n }, options);\n promiseFinally(promise, () => {this.$off('hook:destroyed', promise.cancel);});\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n}\n\n\nclass Value {\n get $parent() {return creatingObjectProperties.$parent.value;}\n get $path() {return creatingObjectProperties.$path.value;}\n get $truss() {\n Object.defineProperty(this, '$truss', {value: this.$parent.$truss});\n return this.$truss;\n }\n\n get $ref() {\n Object.defineProperty(this, '$ref', {value: new Reference(this.$truss._tree, this.$path)});\n return this.$ref;\n }\n\n get $refs() {return this.$ref;}\n get $key() {\n Object.defineProperty(\n this, '$key', {value: unescapeKey(this.$path.slice(this.$path.lastIndexOf('/') + 1))});\n return this.$key;\n }\n\n get $data() {return this;}\n get $hidden() {return false;} // eslint-disable-line lodash/prefer-constant\n get $empty() {return _.isEmpty(this.$data);}\n get $keys() {return _.keys(this.$data);}\n get $values() {return _.values(this.$data);}\n get $ready() {return this.$ref.ready;}\n get $overridden() {return false;} // eslint-disable-line lodash/prefer-constant\n\n $nextTick() {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = this.$truss.nextTick();\n promiseFinally(promise, () => {this.$off('hook:destroyed', promise.cancel);});\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n\n $freezeComputedProperty() {\n if (!_.isBoolean(currentPropertyFrozen)) {\n throw new Error('Cannot freeze a computed property outside of its getter function');\n }\n currentPropertyFrozen = true;\n }\n\n get $lastComputedValue() {\n if (!_.isBoolean(currentPropertyFrozen)) {\n throw new Error(\n 'Cannot use last computed value of a property outside of its getter function');\n }\n return LAST_COMPUTED_VALUE;\n }\n\n $set(value) {return this.$ref.set(value);}\n $update(values) {return this.$ref.update(values);}\n $override(values) {return this.$ref.override(values);}\n $commit(options, updateFn) {return this.$ref.commit(options, updateFn);}\n\n $$touchThis() {\n /* eslint-disable no-unused-expressions */\n if (this.__ob__) {\n this.__ob__.dep.depend();\n } else if (this.$parent) {\n (Object.hasOwn(this.$parent, '$data') ? this.$parent.$data : this.$parent)[this.$key];\n } else {\n this.$store;\n }\n /* eslint-enable no-unused-expressions */\n }\n\n get $destroyed() { // eslint-disable-line lodash/prefer-constant\n return false;\n }\n\n $on(event, callback) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n if (UNSUPPORTED_LIFECYCLE_HOOKS.has(event)) {\n throw new Error(`Models don't support the \"${event}\" lifecycle event`);\n }\n (this.$$hooks[event] = this.$$hooks[event] || []).push(callback);\n return this;\n }\n\n $once(event, callback) {\n const object = this;\n function cb(...args) {\n object.$off(event, cb);\n callback(...args);\n }\n cb.fn = callback;\n return this.$on(event, cb);\n }\n\n $off(event, callback) {\n if (event) {\n if (callback) {\n if (_.isArray(event)) {\n for (const ev of event) this.$off(ev, callback);\n } else if (this.$$hooks[event]) {\n const callbacks = this.$$hooks[event];\n for (let i = 0; i < callbacks.length; i++) {\n const cb = callbacks[i];\n if (cb === callback || cb.fn === callback) {\n callbacks.splice(i, 1);\n break;\n }\n }\n }\n } else {\n delete this.$$hooks[event];\n }\n } else {\n for (const key of _.keys(this.$$hooks)) delete this.$$hooks[key];\n }\n return this;\n }\n\n $emit(event, ...args) {\n if (_.has(this, '$$hooks')) {\n // Some callbacks remove themselves from the array, so clone it before iterating.\n _.forEach(_.clone(this.$$hooks[event]), callback => {\n if (callback.$once && callback.$once[event]) {\n callback.$once[event] -= 1;\n this.$off(event, callback);\n }\n callback(...args);\n });\n }\n return this;\n }\n\n get $$hooks() {\n Object.defineProperty(this, '$$hooks', {\n value: {}, writable: false, enumerable: false, configurable: false\n });\n return this.$$hooks;\n }\n}\n\ncopyPrototype(BaseValue, Value);\n\n_.forEach(Value.prototype, (prop, name) => {\n Object.defineProperty(\n Value.prototype, name, {value: prop, enumerable: false, configurable: false, writable: false});\n});\n\n\nclass ErrorWrapper {\n constructor(error) {\n this.error = error;\n }\n}\n\n\nclass FrozenWrapper {\n constructor(value) {\n this.value = value;\n }\n}\n\n\nexport default class Modeler {\n constructor(vue, debug) {\n this._vue = vue;\n this._trie = {Class: Value};\n this._debug = debug;\n Object.freeze(this);\n }\n\n init(classes, rootAcceptable) {\n if (_.isPlainObject(classes)) {\n _.forEach(classes, (Class, path) => {\n if (Class.$trussMount) return;\n Class.$$trussMount = Class.$$trussMount || [];\n Class.$$trussMount.push(path);\n });\n classes = _.values(classes);\n _.forEach(classes, Class => {\n if (!Class.$trussMount && Class.$$trussMount) {\n Class.$trussMount = Class.$$trussMount;\n delete Class.$$trussMount;\n }\n });\n }\n classes = _.uniq(classes);\n _.forEach(classes, Class => this._mountClass(Class, rootAcceptable));\n this._decorateTrie(this._trie);\n }\n\n destroy() {/* empty */}\n\n _getMount(path, scaffold, predicate) {\n const segments = splitPath(path, true);\n let node;\n for (const segment of segments) {\n let child = segment ?\n node.children && (node.children[segment] || !scaffold && node.children.$) : this._trie;\n if (!child) {\n if (!scaffold) return;\n node.children = node.children || {};\n child = node.children[segment] = {Class: Value};\n }\n node = child;\n if (predicate && predicate(node)) break;\n }\n return node;\n }\n\n _findMount(predicate, node) {\n if (!node) node = this._trie;\n if (predicate(node)) return node;\n for (const childKey of _.keys(node.children)) {\n const result = this._findMount(predicate, node.children[childKey]);\n if (result) return result;\n }\n }\n\n _decorateTrie(node) {\n _.forEach(node.children, child => {\n this._decorateTrie(child);\n if (child.local || child.localDescendants) node.localDescendants = true;\n });\n }\n\n _augmentClass(Class) {\n let computedProperties;\n let proto = Class.prototype;\n while (proto && proto.constructor !== Object) {\n for (const name of Object.getOwnPropertyNames(proto)) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, name);\n if (name.charAt(0) === '$') {\n if (_.isEqual(descriptor, Object.getOwnPropertyDescriptor(Value.prototype, name))) {\n continue;\n }\n throw new Error(`Property names starting with \"$\" are reserved: ${Class.name}.${name}`);\n }\n if (UNSUPPORTED_LIFECYCLE_METHODS.has(name) && _.isFunction(proto[name])) {\n throw new Error(`Models don't support the \"${name}\" lifecycle method`);\n }\n if (descriptor.get && !(computedProperties && computedProperties[name])) {\n (computedProperties || (computedProperties = {}))[name] = {\n name, fullName: `${proto.constructor.name}.${name}`, get: descriptor.get,\n set: descriptor.set\n };\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n for (const name of Object.getOwnPropertyNames(Value.prototype)) {\n if (name === 'constructor' || Object.hasOwn(Class.prototype, name)) continue;\n Object.defineProperty(\n Class.prototype, name, Object.getOwnPropertyDescriptor(Value.prototype, name));\n }\n return computedProperties;\n }\n\n _mountClass(Class, rootAcceptable) {\n const computedProperties = this._augmentClass(Class);\n const allVariables = [];\n let mounts = Class.$trussMount;\n if (!mounts) throw new Error(`Class ${Class.name} lacks a $trussMount static property`);\n if (!_.isArray(mounts)) mounts = [mounts];\n _.forEach(mounts, mount => {\n if (_.isString(mount)) mount = {path: mount};\n if (!rootAcceptable && mount.path === '/') {\n throw new Error('Data root already accessed, too late to mount class');\n }\n const matcher = makePathMatcher(mount.path);\n for (const variable of matcher.variables) {\n if (variable === '$' || variable.charAt(1) === '$') {\n throw new Error(`Invalid variable name: ${variable}`);\n }\n if (variable.charAt(0) === '$' && (\n _.has(Value.prototype, variable) || RESERVED_VALUE_PROPERTY_NAMES[variable]\n )) {\n throw new Error(`Variable name conflicts with built-in property or method: ${variable}`);\n }\n allVariables.push(variable);\n }\n const escapedKey = mount.path.match(/\\/([^/]*)$/)[1];\n if (escapedKey.charAt(0) === '$') {\n if (mount.placeholder) {\n throw new Error(\n `Class ${Class.name} mounted at wildcard ${escapedKey} cannot be a placeholder`);\n }\n } else if (!_.has(mount, 'placeholder')) {\n mount.placeholder = {};\n }\n const targetMount = this._getMount(mount.path.replace(/\\$[^/]*/g, '$'), true);\n if (targetMount.matcher && (\n targetMount.escapedKey === escapedKey ||\n targetMount.escapedKey.charAt(0) === '$' && escapedKey.charAt(0) === '$'\n )) {\n throw new Error(\n `Multiple classes mounted at ${mount.path}: ${targetMount.Class.name}, ${Class.name}`);\n }\n _.assign(\n targetMount, {Class, matcher, computedProperties, escapedKey},\n _.pick(mount, 'placeholder', 'local', 'keysUnsafe', 'hidden'));\n });\n _(allVariables).uniq().forEach(variable => {\n Object.defineProperty(Class.prototype, variable, {get() {\n return creatingObjectProperties ?\n creatingObjectProperties[variable] && creatingObjectProperties[variable].value :\n undefined;\n }});\n });\n }\n\n /**\n * Creates a Truss object and sets all its basic properties: path segment variables, user-defined\n * properties, and computed properties. The latter two will be enumerable so that Vue will pick\n * them up and make the reactive.\n */\n createObject(path, properties) {\n const mount = this._getMount(path) || {Class: Value};\n try {\n if (mount.matcher) {\n const match = mount.matcher.match(path);\n for (const variable in match) {\n properties[variable] = {value: match[variable]};\n }\n }\n\n creatingObjectProperties = properties;\n const object = new mount.Class();\n creatingObjectProperties = null;\n\n if (angular.active) this._wrapProperties(object);\n\n if (mount.keysUnsafe) {\n properties.$data = {value: Object.create(null), configurable: true, enumerable: true};\n }\n if (mount.hidden) properties.$hidden = {value: true};\n if (mount.computedProperties) {\n _.forEach(mount.computedProperties, prop => {\n properties[prop.name] = this._buildComputedPropertyDescriptor(object, prop);\n });\n }\n\n return object;\n } catch (e) {\n e.extra = _.assign({mount, properties, className: mount.Class && mount.Class.name}, e.extra);\n throw e;\n }\n }\n\n _wrapProperties(object) {\n _.forEach(object, (value, key) => {\n const valueKey = '$_' + key;\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n const valueDescriptor = descriptor.get && descriptor.set ? {\n get: descriptor.get, set: descriptor.set, configurable: true\n } : {value, writable: true};\n Object.defineProperties(object, {\n [valueKey]: valueDescriptor,\n [key]: {\n get: () => object[valueKey],\n set: arg => {object[valueKey] = arg; angular.digest();},\n enumerable: true, configurable: true\n }\n });\n });\n }\n\n _buildComputedPropertyDescriptor(object, prop) {\n const propertyStats = stats.for(prop.fullName);\n\n let value, pendingPromise;\n let writeAllowed = false;\n\n const initialize = () => {\n let unwatchNow = false;\n const compute = computeValue.bind(object, prop, propertyStats);\n compute.toString = _.constant(`compute ${prop.fullName}`);\n let unwatch = () => {unwatchNow = true;};\n unwatch = this._vue.$watch(compute, newValue => {\n if (object.$destroyed) {\n unwatch();\n return;\n }\n if (pendingPromise) {\n if (pendingPromise.cancel) pendingPromise.cancel();\n pendingPromise = undefined;\n }\n if (_.isObject(newValue) && _.isFunction(newValue.then)) {\n const promise = newValue.then(finalValue => {\n if (promise === pendingPromise) update(finalValue);\n // No need to angular.digest() here, since if we're running under Angular then we expect\n // promises to be aliased to its $q service, which triggers digest itself.\n }, error => {\n if (promise === pendingPromise && update(new ErrorWrapper(error)) &&\n !error.trussExpectedException) throw error;\n });\n pendingPromise = promise;\n } else if (update(newValue)) {\n angular.digest();\n if (newValue instanceof ErrorWrapper && !newValue.error.trussExpectedException) {\n throw newValue.error;\n }\n }\n }, {immediate: true}); // use immediate:true since watcher will run computeValue anyway\n // Hack to change order of computed property watchers. By flipping their ids to be negative,\n // we ensure that they will settle before all other watchers, and also that children\n // properties will settle before their parents since values are often aggregated upwards.\n const watcher = _.last(this._vue._watchers || this._vue._scope.effects);\n watcher.id = -watcher.id;\n\n function update(newValue) {\n const startTime = performance.now();\n if (newValue instanceof FrozenWrapper) {\n newValue = newValue.value;\n unwatch();\n object.$off('hook:destroyed', unwatch);\n }\n if (newValue === LAST_COMPUTED_VALUE || isTrussEqual(value, newValue)) return;\n // console.log('updating', object.$key, prop.fullName, 'from', value, 'to', newValue);\n writeAllowed = true;\n object[prop.name] = newValue;\n writeAllowed = false;\n // Freeze the computed value so it can't be accidentally modified by a third party. Ideally\n // we'd freeze it before setting it so that Vue wouldn't instrument the object recursively\n // (since it can't change anyway), but we actually need the instrumentation in case a client\n // tries to access an inexistent property off a computed pointer to an unfrozen value (e.g.,\n // a $truss-ified object). When instrumented, Vue will add a dependency on the unfrozen\n // value in case the property is later added. If uninstrumented, the dependency won't be\n // added and we won't be notified. And Vue only instruments extensible objects...\n freeze(newValue);\n propertyStats.numUpdates += 1;\n propertyStats.updateTime += performance.now() - startTime;\n return true;\n }\n\n if (unwatchNow) {\n unwatch();\n } else {\n object.$on('hook:destroyed', unwatch);\n }\n\n object.$off('hook:created', initialize);\n };\n object.$on('hook:created', initialize);\n\n return {\n enumerable: true, configurable: true,\n get() {\n if (!writeAllowed && value instanceof ErrorWrapper) throw value.error;\n return value;\n },\n set(newValue) {\n if (writeAllowed) {\n value = newValue;\n } else if (prop.set) {\n prop.set.call(this, newValue);\n } else {\n throw new Error(`You cannot set a computed property: ${prop.name}`);\n }\n }\n };\n }\n\n destroyObject(object) {\n Object.defineProperty(\n object, '$destroyed', {value: true, enumerable: false, configurable: false});\n }\n\n emitLifecycleHook(object, hook) {\n if (_.isFunction(object[hook])) object[hook]();\n object.$emit(`hook:${hook}`);\n }\n\n isPlaceholder(path) {\n const mount = this._getMount(path);\n return mount && mount.placeholder;\n }\n\n isLocal(path, value) {\n const mount = this._getMount(path, false, mount => mount.local);\n if (mount && mount.local) return true;\n if (this._hasLocalProperties(mount, value)) {\n throw new Error('Write on a mix of local and remote tree paths.');\n }\n return false;\n }\n\n _hasLocalProperties(mount, value) {\n if (!mount) return false;\n if (mount.local) return true;\n if (!mount.localDescendants || !_.isObject(value)) return false;\n for (const key in value) {\n const local =\n this._hasLocalProperties(mount.children[escapeKey(key)] || mount.children.$, value[key]);\n if (local) return true;\n }\n return false;\n }\n\n forEachPlaceholderChild(path, iteratee) {\n const mount = this._getMount(path);\n _.forEach(mount && mount.children, child => {\n if (child.placeholder) iteratee(child);\n });\n }\n\n checkVueObject(object, path, checkedObjects) {\n const top = !checkedObjects;\n if (top) checkedObjects = new Set();\n const objectPropertyValues = new Map();\n const mount = this._findMount(candidate => candidate.Class === object.constructor);\n const targetProperties = _(object)\n .thru(Object.getOwnPropertyNames)\n .reject(key =>\n RESERVED_VALUE_PROPERTY_NAMES[key] || Object.hasOwn(Value.prototype, key) ||\n /^\\$_/.test(key)\n )\n .reject(key => mount && mount.matcher && _.includes(mount.matcher.variables, key))\n .map(key => {\n let value;\n try {\n value = object[key];\n // Ignore builtin object types.\n if (value instanceof RegExp) return;\n } catch {\n // Ignore any values that hold exceptions, or otherwise throw on access -- we won't be\n // able to check them anyway.\n return;\n }\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n const computed =\n !descriptor.enumerable && descriptor.set && !Object.hasOwn(object, '$_' + key);\n return {key, value, descriptor, computed};\n })\n .compact()\n .value();\n\n for (const {key, value, descriptor, computed} of targetProperties) {\n if (!(_.isArray(object) && (/^\\d+$/.test(key) || key === 'length'))) {\n if ('value' in descriptor || !descriptor.get) {\n throw new Error(\n `Value at ${path}, contained in a Firetruss object, has a rogue property: ${key}`);\n }\n if (object.$truss && descriptor.enumerable) {\n try {\n object[key] = value;\n throw new Error(\n `Firetruss object at ${path} has an enumerable non-Firebase property: ${key}`);\n } catch (e) {\n if (e.trussCode !== 'firebase_overwrite') throw e;\n }\n }\n }\n if (_.isObject(value)) {\n if (!checkedObjects.has(value) && !Object.isSealed(value) &&\n !(_.isFunction(value) || _.isElement(value) || value instanceof Promise)) {\n checkedObjects.add(value);\n this.checkVueObject(value, joinPath(path, escapeKey(key)), checkedObjects);\n }\n if (!computed && !value.$truss) objectPropertyValues.set(value, key);\n }\n }\n\n for (const {key, value, computed} of targetProperties) {\n if (computed && _.isObject(value) && !value.$truss) {\n const otherKey = objectPropertyValues.get(value);\n if (otherKey) {\n throw new Error(\n `Firetruss object at ${path} has properties ${key} ` +\n `and ${otherKey} with an aliased value`);\n }\n }\n }\n }\n}\n\n\nfunction computeValue(prop, propertyStats) {\n /* eslint-disable no-invalid-this */\n if (this.$destroyed) return;\n // Touch this object, since a failed access to a missing property doesn't get captured as a\n // dependency.\n this.$$touchThis();\n\n const oldPropertyFrozen = currentPropertyFrozen;\n currentPropertyFrozen = false;\n const startTime = performance.now();\n let value;\n try {\n try {\n value = prop.get.call(this);\n } catch (e) {\n value = new ErrorWrapper(e);\n } finally {\n propertyStats.computeTime += performance.now() - startTime;\n propertyStats.numRecomputes += 1;\n }\n if (currentPropertyFrozen) value = new FrozenWrapper(value);\n return value;\n } finally {\n currentPropertyFrozen = oldPropertyFrozen;\n }\n /* eslint-enable no-invalid-this */\n}\n\nfunction wrapConnections(object, connections) {\n if (!connections || connections instanceof Handle) return connections;\n if (_.isFunction(connections)) {\n const fn = function() {\n /* eslint-disable no-invalid-this */\n object.$$touchThis();\n return wrapConnections(object, connections.call(this));\n /* eslint-enable no-invalid-this */\n };\n fn.angularWatchSuppressed = true;\n return fn;\n }\n return _.mapValues(connections, descriptor => wrapConnections(object, descriptor));\n}\n\nfunction freeze(object) {\n if (_.isNil(object) || !_.isObject(object) || Object.isFrozen(object) || object.$truss) {\n return object;\n }\n object = Object.freeze(object);\n if (_.isArray(object)) return _.map(object, value => freeze(value));\n return _.mapValues(object, value => freeze(value));\n}\n","import _ from 'lodash';\nimport Vue from 'vue';\nimport angular from './angularCompatibility.js';\nimport {splitPath} from './utils/paths.js';\n\n\nclass QueryHandler {\n constructor(coupler, query) {\n this._coupler = coupler;\n this._query = query;\n this._listeners = [];\n this._keys = [];\n this._coupler._url.pathname = encodeURI(query.path);\n this._url = this._coupler._url.toString();\n this._segments = splitPath(query.path, true);\n this._listening = false;\n this.ready = false;\n }\n\n attach(operation, keysCallback) {\n this._listen();\n this._listeners.push({operation, keysCallback});\n if (this.ready) {\n this._coupler._dispatcher.markReady(operation);\n if (keysCallback) keysCallback(this._keys);\n }\n }\n\n detach(operation) {\n const k = _.findIndex(this._listeners, {operation});\n if (k >= 0) this._listeners.splice(k, 1);\n return this._listeners.length;\n }\n\n _listen() {\n if (this._listening) return;\n this._coupler._bridge.on(\n this._query.toString(), this._url, this._query.constraints, 'value',\n this._handleSnapshot, this._handleError, this, {sync: true});\n this._listening = true;\n }\n\n destroy() {\n this._coupler._bridge.off(\n this._query.toString(), this._url, this._query.constraints, 'value', this._handleSnapshot,\n this);\n this._listening = false;\n this.ready = false;\n angular.digest();\n for (const key of this._keys) {\n this._coupler._decoupleSegments(this._segments.concat(key));\n }\n }\n\n _handleSnapshot(snap) {\n this._coupler._queueSnapshotCallback(() => {\n // Order is important here: first couple any new subpaths so _handleSnapshot will update the\n // tree, then tell the client to update its keys, pulling values from the tree.\n if (!this._listeners.length || !this._listening) return;\n const updatedKeys = this._updateKeysAndApplySnapshot(snap);\n if (!this.ready) {\n this.ready = true;\n angular.digest();\n for (const listener of this._listeners) {\n this._coupler._dispatcher.markReady(listener.operation);\n }\n }\n if (updatedKeys) {\n for (const listener of this._listeners) {\n if (listener.keysCallback) listener.keysCallback(updatedKeys);\n }\n }\n });\n }\n\n _updateKeysAndApplySnapshot(snap) {\n let updatedKeys;\n if (snap.path === this._query.path) {\n updatedKeys = _.keys(snap.value);\n updatedKeys.sort();\n if (_.isEqual(this._keys, updatedKeys)) {\n updatedKeys = null;\n } else {\n for (const key of _.difference(updatedKeys, this._keys)) {\n this._coupler._coupleSegments(this._segments.concat(key));\n }\n for (const key of _.difference(this._keys, updatedKeys)) {\n // Decoupling a segment will prune the tree at that location if there are no other\n // listeners.\n this._coupler._decoupleSegments(this._segments.concat(key));\n }\n this._keys = updatedKeys;\n }\n // The snapshot may be partial, so create synthetic snapshots for subpaths and apply those to\n // update / insert values. (Deleted ones got pruned above.)\n if (snap.exists) {\n const rootValue = snap.value;\n const rootPath = snap.path;\n for (const key of this._keys) {\n snap._path = rootPath + '/' + key;\n snap._key = undefined;\n snap._value = rootValue[key];\n this._coupler._applySnapshot(snap);\n }\n // Restore original properties, just in case.\n snap._path = rootPath;\n snap._key = undefined;\n snap._value = rootValue;\n }\n } else if (snap.path.replace(/\\/[^/]+/, '') === this._query.path) {\n const hasKey = _.includes(this._keys, snap.key);\n if (snap.value) {\n if (!hasKey) {\n this._coupler._coupleSegments(this._segments.concat(snap.key));\n this._keys.push(snap.key);\n this._keys.sort();\n updatedKeys = this._keys;\n }\n } else if (hasKey) {\n this._coupler._decoupleSegments(this._segments.concat(snap.key));\n _.pull(this._keys, snap.key);\n this._keys.sort();\n updatedKeys = this._keys;\n }\n // A snapshot under the query's level is guaranteed to be a full snapshot, so we can apply it\n // directly.\n this._coupler._applySnapshot(snap);\n }\n return updatedKeys;\n }\n\n _handleError(error) {\n if (!this._listeners.length || !this._listening) return;\n this._listening = false;\n this.ready = false;\n for (const key of this._keys) this._coupler._decoupleSegments(this._segments.concat(key));\n this._keys = [];\n angular.digest();\n Promise.all(_.map(this._listeners, listener => {\n this._coupler._dispatcher.clearReady(listener.operation);\n return this._coupler._dispatcher.retry(listener.operation, error).catch(e => {\n listener.operation._disconnect(e);\n return false;\n });\n })).then(results => {\n if (_.some(results)) {\n if (this._listeners.length) this._listen();\n } else {\n for (const listener of this._listeners) listener.operation._disconnect(error);\n }\n });\n }\n}\n\n\nclass Node {\n constructor(coupler, path, parent) {\n this._coupler = coupler;\n this.path = path;\n this.parent = parent;\n this._coupler._url.pathname = encodeURI(path);\n this.url = this._coupler._url.toString();\n this.operations = [];\n this.queryCount = 0;\n this.listening = false;\n this.ready = false;\n this.children = {};\n }\n\n get active() {\n return this.count || this.queryCount;\n }\n\n get count() {\n return this.operations.length;\n }\n\n listen(skip) {\n if (!skip && this.count) {\n if (this.listening) return;\n _.forEach(this.operations, op => {this._coupler._dispatcher.clearReady(op);});\n this._coupler._bridge.on(\n this.url, this.url, null, 'value', this._handleSnapshot, this._handleError, this,\n {sync: true});\n this.listening = true;\n } else {\n _.forEach(this.children, child => {child.listen();});\n }\n }\n\n unlisten(skip) {\n if (!skip && this.listening) {\n this._coupler._bridge.off(this.url, this.url, null, 'value', this._handleSnapshot, this);\n this.listening = false;\n this._forAllDescendants(node => {\n if (node.listening) return false;\n if (node.ready) {\n node.ready = false;\n angular.digest();\n }\n });\n } else {\n _.forEach(this.children, child => {child.unlisten();});\n }\n }\n\n _handleSnapshot(snap) {\n this._coupler._queueSnapshotCallback(() => {\n if (!this.listening || !this._coupler.isTrunkCoupled(snap.path)) return;\n this._coupler._applySnapshot(snap);\n if (!this.ready && snap.path === this.path) {\n this.ready = true;\n angular.digest();\n this.unlisten(true);\n this._forAllDescendants(node => {\n for (const op of node.operations) this._coupler._dispatcher.markReady(op);\n });\n }\n });\n }\n\n _handleError(error) {\n if (!this.count || !this.listening) return;\n this.listening = false;\n this._forAllDescendants(node => {\n if (node.listening) return false;\n if (node.ready) {\n node.ready = false;\n angular.digest();\n }\n for (const op of node.operations) this._coupler._dispatcher.clearReady(op);\n });\n // Immediately prune all data below this node. We don't want to decouple it since the operation\n // may want to retry. We also don't want to look for other coupled paths below (that may not be\n // subject to the permission denied error) since they're not listening and the data would get\n // stale. If this node doesn't retry and gets decoupled we'll automatically start listening on\n // descendants and (try to) refill the subtrees.\n this._coupler._prunePath(this.path);\n return Promise.all(_.map(this.operations, op => {\n return this._coupler._dispatcher.retry(op, error).catch(e => {\n op._disconnect(e);\n return false;\n });\n })).then(results => {\n if (_.some(results)) {\n if (this.count) this.listen();\n } else {\n for (const op of this.operations) op._disconnect(error);\n // Pulling all the operations will automatically get us listening on descendants.\n }\n });\n }\n\n _forAllDescendants(iteratee) {\n if (iteratee(this) === false) return;\n _.forEach(this.children, child => child._forAllDescendants(iteratee));\n }\n\n collectCoupledDescendantPaths(paths) {\n if (!paths) paths = {};\n paths[this.path] = this.active;\n if (!this.active) {\n _.forEach(this.children, child => {child.collectCoupledDescendantPaths(paths);});\n }\n return paths;\n }\n}\n\n\nexport default class Coupler {\n constructor(rootUrl, bridge, dispatcher, applySnapshot, prunePath) {\n this._url = new URL(rootUrl);\n this._bridge = bridge;\n this._dispatcher = dispatcher;\n this._applySnapshot = applySnapshot;\n this._pendingSnapshotCallbacks = [];\n this._throttled = {processPendingSnapshots: this._processPendingSnapshots};\n this._prunePath = prunePath;\n this._vue = new Vue({data: {root: undefined, queryHandlers: {}}});\n // Prevent Vue from instrumenting rendering since there's actually nothing to render, and the\n // warnings cause false positives from Lodash primitives when running tests.\n this._vue._renderProxy = this._vue;\n this._nodeIndex = Object.create(null);\n Object.freeze(this);\n // Set root node after freezing Coupler, otherwise it gets vue-ified too.\n this._vue.$data.root = new Node(this, '/');\n this._nodeIndex['/'] = this._root;\n }\n\n get _root() {\n return this._vue.$data.root;\n }\n\n get _queryHandlers() {\n return this._vue.$data.queryHandlers;\n }\n\n destroy() {\n _.forEach(this._queryHandlers, queryHandler => {queryHandler.destroy();});\n this._root.unlisten();\n this._vue.$destroy();\n }\n\n couple(path, operation) {\n return this._coupleSegments(splitPath(path, true), operation);\n }\n\n _coupleSegments(segments, operation) {\n let node;\n let superseded = !operation;\n let ready = false;\n for (const segment of segments) {\n let child = segment ? node.children && node.children[segment] : this._root;\n if (!child) {\n child = new Node(this, `${node.path === '/' ? '' : node.path}/${segment}`, node);\n Vue.set(node.children, segment, child);\n this._nodeIndex[child.path] = child;\n }\n superseded = superseded || child.listening;\n ready = ready || child.ready;\n node = child;\n }\n if (operation) {\n node.operations.push(operation);\n } else {\n node.queryCount++;\n }\n if (superseded) {\n if (operation && ready) this._dispatcher.markReady(operation);\n } else {\n node.listen(); // node will call unlisten() on descendants when ready\n }\n }\n\n decouple(path, operation) {\n return this._decoupleSegments(splitPath(path, true), operation);\n }\n\n _decoupleSegments(segments, operation) {\n const ancestors = [];\n let node;\n for (const segment of segments) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (!node) break;\n ancestors.push(node);\n }\n if (!node || !(operation ? node.count : node.queryCount)) {\n throw new Error(`Path not coupled: ${segments.join('/') || '/'}`);\n }\n if (operation) {\n _.pull(node.operations, operation);\n } else {\n node.queryCount--;\n }\n if (operation && !node.count) {\n // Ideally, we wouldn't resync the full values here since we probably already have the current\n // value for all children. But making sure that's true is tricky in an async system (what if\n // the node's value changes and the update crosses the 'off' call in transit?) and this\n // situation should be sufficiently rare that the optimization is probably not worth it right\n // now.\n node.listen();\n if (node.listening) node.unlisten();\n }\n if (!node.active) {\n for (let i = ancestors.length - 1; i > 0; i--) {\n node = ancestors[i];\n if (node === this._root || node.active || !_.isEmpty(node.children)) break;\n Vue.delete(ancestors[i - 1].children, segments[i]);\n node.ready = undefined;\n delete this._nodeIndex[node.path];\n }\n const path = segments.join('/') || '/';\n this._prunePath(path, this.findCoupledDescendantPaths(path));\n }\n }\n\n subscribe(query, operation, keysCallback) {\n let queryHandler = this._queryHandlers[query.toString()];\n if (!queryHandler) {\n queryHandler = new QueryHandler(this, query);\n Vue.set(this._queryHandlers, query.toString(), queryHandler);\n }\n queryHandler.attach(operation, keysCallback);\n }\n\n unsubscribe(query, operation) {\n const queryHandler = this._queryHandlers[query.toString()];\n if (queryHandler && !queryHandler.detach(operation)) {\n queryHandler.destroy();\n Vue.delete(this._queryHandlers, query.toString());\n }\n }\n\n // Return whether the node at path or any ancestors are coupled.\n isTrunkCoupled(path) {\n const segments = splitPath(path, true);\n let node;\n for (const segment of segments) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (!node) return false;\n if (node.active) return true;\n }\n return false;\n }\n\n findCoupledDescendantPaths(path) {\n let node;\n for (const segment of splitPath(path, true)) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (node && node.active) return {[path]: node.active};\n if (!node) break;\n }\n return node && node.collectCoupledDescendantPaths();\n }\n\n isSubtreeReady(path) {\n let node, childSegment;\n function extractChildSegment(match) {\n childSegment = match.slice(1);\n return '';\n }\n while (!(node = this._nodeIndex[path])) {\n path = path.replace(/\\/[^/]*$/, extractChildSegment) || '/';\n }\n if (childSegment) void node.children; // state an interest in the closest ancestor's children\n while (node) {\n if (node.ready) return true;\n node = node.parent;\n }\n return false;\n }\n\n isQueryReady(query) {\n const queryHandler = this._queryHandlers[query.toString()];\n return queryHandler && queryHandler.ready;\n }\n\n _queueSnapshotCallback(callback) {\n this._pendingSnapshotCallbacks.push(callback);\n this._throttled.processPendingSnapshots.call(this);\n }\n\n _processPendingSnapshots() {\n for (const callback of this._pendingSnapshotCallbacks) callback();\n // Property is frozen, so we need to splice to empty the array.\n this._pendingSnapshotCallbacks.splice(0, Infinity);\n }\n\n throttleSnapshots(delay) {\n if (delay) {\n this._throttled.processPendingSnapshots =\n _.debounce(_.throttle(this._processPendingSnapshots, delay));\n } else {\n this._throttled.processPendingSnapshots = this._processPendingSnapshots;\n }\n }\n}\n\n","import angular from './angularCompatibility.js';\nimport Coupler from './Coupler.js';\nimport Modeler from './Modeler.js';\nimport Reference from './Reference.js';\nimport {escapeKey, escapeKeys, unescapeKey, joinPath, splitPath} from './utils/paths.js';\nimport {wrapPromiseCallback, promiseFinally} from './utils/promises.js';\nimport {SERVER_TIMESTAMP} from './utils/utils.js';\n\nimport _ from 'lodash';\nimport Vue from 'vue';\n\n\nclass Transaction {\n constructor(ref) {\n this._ref = ref;\n this._outcome = undefined;\n this._values = undefined;\n }\n\n get currentValue() {return this._ref.value;}\n get outcome() {return this._outcome;}\n get values() {return this._values;}\n\n _setOutcome(value) {\n if (this._outcome) throw new Error('Transaction already resolved with ' + this._outcome);\n this._outcome = value;\n }\n\n abort() {\n this._setOutcome('abort');\n }\n\n cancel() {\n this._setOutcome('cancel');\n }\n\n set(value) {\n if (value === undefined) throw new Error('Invalid argument: undefined');\n this._setOutcome('set');\n this._values = {'': value};\n }\n\n update(values) {\n if (values === undefined) throw new Error('Invalid argument: undefined');\n if (_.isEmpty(values)) return this.cancel();\n this._setOutcome('update');\n this._values = values;\n }\n}\n\n\nexport default class Tree {\n constructor(truss, rootUrl, bridge, dispatcher) {\n this._truss = truss;\n this._url = new URL(rootUrl);\n this._bridge = bridge;\n this._dispatcher = dispatcher;\n this._firebasePropertyEditAllowed = false;\n this._writeSerial = 0;\n this._localWrites = {};\n this._localWriteTimestamp = null;\n this._initialized = false;\n this._vue = new Vue({data: {$root: undefined}});\n this._modeler = new Modeler(this._vue, truss.constructor.VERSION === 'dev');\n this._coupler = new Coupler(\n rootUrl, bridge, dispatcher, this._integrateSnapshot.bind(this), this._prune.bind(this));\n Object.seal(this);\n // Call this.init(classes) to complete initialization; we need two phases so that truss can bind\n // the tree into its own accessors prior to defining computed functions, which may try to\n // access the tree root via truss.\n }\n\n get root() {\n if (!this._vue.$data.$root) {\n this._vue.$data.$root = this._createObject('/');\n this._fixObject(this._vue.$data.$root);\n this._completeCreateObject(this._vue.$data.$root);\n angular.digest();\n }\n return this._vue.$data.$root;\n }\n\n get truss() {\n return this._truss;\n }\n\n init(classes) {\n if (this._initialized) {\n throw new Error('Data objects already created, too late to mount classes');\n }\n this._initialized = true;\n this._modeler.init(classes, !this._vue.$data.$root);\n const createdObjects = [];\n this._plantPlaceholders(this.root, '/', undefined, createdObjects);\n for (const object of createdObjects) this._completeCreateObject(object);\n }\n\n destroy() {\n this._coupler.destroy();\n if (this._modeler) this._modeler.destroy();\n this._vue.$destroy();\n }\n\n connectReference(ref, method) {\n this._checkHandle(ref);\n const operation = this._dispatcher.createOperation('read', method, ref);\n operation._disconnect = this._disconnectReference.bind(this, ref, operation, undefined);\n this._dispatcher.begin(operation).then(() => {\n if (operation.running && !operation._disconnected) {\n this._coupler.couple(ref.path, operation);\n operation._coupled = true;\n }\n }).catch(_.noop); // ignore exception, let onFailure handlers deal with it\n return operation._disconnect;\n }\n\n _disconnectReference(ref, operation, unwatch, error) {\n if (operation._disconnected) return;\n operation._disconnected = true;\n if (unwatch) unwatch();\n if (operation._coupled) {\n this._coupler.decouple(ref.path, operation); // will call back to _prune if necessary\n operation._coupled = false;\n }\n this._dispatcher.end(operation, error).catch(_.noop);\n }\n\n isReferenceReady(ref) {\n this._checkHandle(ref);\n return this._coupler.isSubtreeReady(ref.path);\n }\n\n connectQuery(query, keysCallback, method) {\n this._checkHandle(query);\n const operation = this._dispatcher.createOperation('read', method, query);\n operation._disconnect = this._disconnectQuery.bind(this, query, operation);\n this._dispatcher.begin(operation).then(() => {\n if (operation.running && !operation._disconnected) {\n this._coupler.subscribe(query, operation, keysCallback);\n operation._coupled = true;\n }\n }).catch(_.noop); // ignore exception, let onFailure handlers deal with it\n return operation._disconnect;\n }\n\n _disconnectQuery(query, operation, error) {\n if (operation._disconnected) return;\n operation._disconnected = true;\n if (operation._coupled) {\n this._coupler.unsubscribe(query, operation); // will call back to _prune if necessary\n operation._coupled = false;\n }\n this._dispatcher.end(operation, error).catch(_.noop);\n }\n\n isQueryReady(query) {\n return this._coupler.isQueryReady(query);\n }\n\n _checkHandle(handle) {\n if (!handle.belongsTo(this._truss)) {\n throw new Error('Reference belongs to another Truss instance');\n }\n }\n\n throttleRemoteDataUpdates(delay) {\n this._coupler.throttleSnapshots(delay);\n }\n\n update(ref, method, values) {\n values = _.mapValues(values, value => escapeKeys(value));\n const numValues = _.size(values);\n if (!numValues) return Promise.resolve();\n if (method === 'update' || method === 'override') {\n checkUpdateHasOnlyDescendantsWithNoOverlap(ref.path, values);\n }\n if (this._applyLocalWrite(values, method === 'override')) return Promise.resolve();\n const pathPrefix = extractCommonPathPrefix(values);\n relativizePaths(pathPrefix, values);\n if (pathPrefix !== ref.path) ref = new Reference(ref._tree, pathPrefix, ref._annotations);\n this._url.pathname = encodeURI(pathPrefix);\n const url = this._url.toString();\n const writeSerial = this._writeSerial;\n const set = numValues === 1;\n const operand = set ? values[''] : values;\n return this._dispatcher.execute('write', set ? 'set' : 'update', ref, operand, () => {\n const promise = this._bridge[set ? 'set' : 'update'](url, operand, writeSerial);\n return promise.catch(e => {\n if (!e.immediateFailure) return Promise.reject(e);\n return promiseFinally(this._repair(ref, values), () => Promise.reject(e));\n });\n });\n }\n\n commit(ref, updateFunction) {\n let tries = 0, sameValueCount = 0;\n const attemptCounts = {};\n updateFunction = wrapPromiseCallback(updateFunction);\n\n const attemptTransaction = counter => {\n if (tries++ >= 25) {\n const error = new Error('Transaction needed too many retries, giving up');\n try {\n _.assign(error, {attemptCounts, sameValueCount});\n } catch {\n // ignore\n }\n return Promise.reject(error);\n }\n counter = counter || 'initial';\n attemptCounts[counter] = (attemptCounts[counter] || 0) + 1;\n const txn = new Transaction(ref);\n let oldValue;\n // Ensure that Vue's watcher queue gets emptied and computed properties are up to date before\n // running the updateFunction.\n return Vue.nextTick().then(() => {\n const newOldValue = toFirebaseJson(txn.currentValue);\n if (_.isEqual(newOldValue, oldValue)) sameValueCount += 1;\n oldValue = newOldValue;\n return updateFunction(txn);\n }).then(() => {\n if (!_.isEqual(oldValue, toFirebaseJson(txn.currentValue))) {\n return attemptTransaction('changed');\n }\n if (txn.outcome === 'abort') return txn; // early return to save time\n const values = _.mapValues(txn.values, value => escapeKeys(value));\n switch (txn.outcome) {\n case 'cancel':\n break;\n case 'set':\n if (this._applyLocalWrite({[ref.path]: values['']})) return Promise.resolve();\n break;\n case 'update':\n checkUpdateHasOnlyDescendantsWithNoOverlap(ref.path, values);\n if (this._applyLocalWrite(values)) return Promise.resolve();\n relativizePaths(ref.path, values);\n break;\n default:\n throw new Error('Invalid transaction outcome: ' + (txn.outcome || 'none'));\n }\n this._url.pathname = encodeURI(ref.path);\n return this._bridge.transaction(\n this._url.toString(), oldValue, values, this._writeSerial\n ).then(result => {\n _.forEach(result.snapshots, snapshot => this._integrateSnapshot(snapshot));\n return result.committed ? txn : attemptTransaction('stale');\n }, e => {\n if (e.immediateFailure && (txn.outcome === 'set' || txn.outcome === 'update')) {\n return promiseFinally(this._repair(ref, values), () => Promise.reject(e));\n }\n return Promise.reject(e);\n });\n });\n };\n\n return this._truss.peek(ref, () => {\n return this._dispatcher.execute('write', 'commit', ref, undefined, attemptTransaction);\n });\n }\n\n _repair(ref, values) {\n // If a write fails early -- that is, before it gets applied to the Firebase client's local\n // tree -- then we need to repair our own local tree manually since Firebase won't send events\n // to unwind the change. This should be very rare since it's always due to a developer mistake\n // so we don't need to be particularly efficient.\n const basePath = ref.path;\n const paths = _(values).keys().flatMap(key => {\n let path = basePath;\n if (key) path = joinPath(path, key);\n return _.keys(this._coupler.findCoupledDescendantPaths(path));\n }).value();\n return Promise.all(_.map(paths, path => {\n this._url.pathname = encodeURI(path);\n return this._bridge.once(this._url.toString()).then(snap => {\n this._integrateSnapshot(snap);\n });\n }));\n }\n\n _applyLocalWrite(values, override) {\n // TODO: correctly apply local writes that impact queries. Currently, a local write will update\n // any objects currently selected by a query, but won't add or remove results.\n this._writeSerial++;\n this._localWriteTimestamp = this._truss.now;\n const createdObjects = [];\n let numLocal = 0;\n _.forEach(values, (value, path) => {\n const local = this._modeler.isLocal(path, value);\n if (local) numLocal++;\n const coupledDescendantPaths =\n local ? {[path]: true} : this._coupler.findCoupledDescendantPaths(path);\n if (_.isEmpty(coupledDescendantPaths)) return;\n const offset = (path === '/' ? 0 : path.length) + 1;\n for (const descendantPath in coupledDescendantPaths) {\n const subPath = descendantPath.slice(offset);\n let subValue = value;\n if (subPath && value !== null && value !== undefined) {\n for (const segment of splitPath(subPath)) {\n subValue = subValue.$data[segment];\n if (subValue === undefined) break;\n }\n }\n if (_.isNil(subValue)) {\n this._prune(descendantPath);\n } else {\n const key = _.last(splitPath(descendantPath));\n this._plantValue(\n descendantPath, key, subValue,\n this._scaffoldAncestors(descendantPath, false, createdObjects), false, override, local,\n createdObjects\n );\n }\n if (!override && !local) this._localWrites[descendantPath] = this._writeSerial;\n }\n });\n for (const object of createdObjects) this._completeCreateObject(object);\n if (numLocal && numLocal < _.size(values)) {\n throw new Error('Write on a mix of local and remote tree paths.');\n }\n return override || !!numLocal;\n }\n\n /**\n * Creates a Truss object and sets all its basic properties: path segment variables, user-defined\n * properties, and computed properties. The latter two will be enumerable so that Vue will pick\n * them up and make the reactive, so you should call _completeCreateObject once it's done so and\n * before any Firebase properties are added.\n */\n _createObject(path, parent) {\n if (!this._initialized && path !== '/') this.init();\n const properties = {\n // We want Vue to wrap this; we'll make it non-enumerable in _fixObject.\n $parent: {value: parent, configurable: true, enumerable: true},\n $path: {value: path}\n };\n if (path === '/') properties.$truss = {value: this._truss};\n\n const object = this._modeler.createObject(path, properties);\n this._modeler.emitLifecycleHook(object, 'beforeCreate');\n this._defineObjectProperties(object, properties);\n return object;\n }\n\n _defineObjectProperties(object, properties) {\n const observer = object.__ob__;\n Object.defineProperties(object, properties);\n if (!observer) return;\n\n let addedReactiveProperties = false;\n for (const key of _.keys(properties)) {\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n if (!descriptor.configurable || !descriptor.enumerable) continue;\n Vue.util.defineReactive(object, key);\n addedReactiveProperties = true;\n }\n if (addedReactiveProperties) observer.dep.notify();\n }\n\n // To be called on the result of _createObject after it's been inserted into the _vue hierarchy\n // and Vue has had a chance to initialize it.\n _fixObject(object) {\n for (const name of Object.getOwnPropertyNames(object)) {\n const descriptor = Object.getOwnPropertyDescriptor(object, name);\n if (descriptor.configurable && descriptor.enumerable) {\n descriptor.enumerable = false;\n if (_.startsWith(name, '$')) descriptor.configurable = false;\n Object.defineProperty(object, name, descriptor);\n }\n }\n }\n\n // To be called on the result of _createObject after _fixObject, and after any additional Firebase\n // properties have been set, to run initializers.\n _completeCreateObject(object) {\n this._modeler.emitLifecycleHook(object, 'created');\n }\n\n _destroyObject(object) {\n if (!(object && object.$truss) || object.$destroyed) return;\n this._modeler.emitLifecycleHook(object, 'beforeDestroy');\n this._modeler.destroyObject(object);\n // Normally we'd only destroy enumerable children, which are the Firebase properties. However,\n // clients have the option of creating hidden placeholders, so we need to scan non-enumerable\n // properties as well. To distinguish such placeholders from the myriad other non-enumerable\n // properties (that lead all over tree, e.g. $parent), we check that the property's parent is\n // ourselves before destroying.\n for (const key of Object.getOwnPropertyNames(object.$data)) {\n const child = object.$data[key];\n if (child && child.$parent === object) this._destroyObject(child);\n }\n this._modeler.emitLifecycleHook(object, 'destroyed');\n }\n\n _integrateSnapshot(snap) {\n _.forEach(this._localWrites, (writeSerial, path) => {\n if (snap.writeSerial >= writeSerial) delete this._localWrites[path];\n });\n if (snap.exists) {\n const createdObjects = [];\n const parent = this._scaffoldAncestors(snap.path, true, createdObjects);\n if (parent) {\n this._plantValue(\n snap.path, snap.key, snap.value, parent, true, false, false, createdObjects);\n }\n for (const object of createdObjects) this._completeCreateObject(object);\n } else {\n this._prune(snap.path, null, true);\n }\n }\n\n _scaffoldAncestors(path, remoteWrite, createdObjects) {\n let object;\n const segments = _.dropRight(splitPath(path, true));\n let ancestorPath = '/';\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const key = unescapeKey(segment);\n let child = segment ? object.$data[key] : this.root;\n if (segment) ancestorPath += (ancestorPath === '/' ? '' : '/') + segment;\n if (child) {\n if (remoteWrite && this._localWrites[ancestorPath]) return;\n } else {\n child = this._plantValue(\n ancestorPath, key, {}, object, remoteWrite, false, false, createdObjects);\n if (!child) return;\n }\n object = child;\n }\n return object;\n }\n\n _plantValue(path, key, value, parent, remoteWrite, override, local, createdObjects) {\n if (remoteWrite && _.isNil(value)) {\n throw new Error(`Snapshot includes invalid value at ${path}: ${value}`);\n }\n if (remoteWrite && this._localWrites[path || '/']) return;\n if (_.isEqual(value, SERVER_TIMESTAMP)) value = this._localWriteTimestamp;\n let object = parent.$data[key];\n if (!_.isArray(value) && !(local ? _.isPlainObject(value) : _.isObject(value))) {\n this._destroyObject(object);\n if (!local && _.isNil(value)) {\n this._deleteFirebaseProperty(parent, key);\n } else {\n this._setFirebaseProperty(parent, key, value);\n }\n return;\n }\n let objectCreated = false;\n if (!_.isObject(object)) {\n // Need to pre-set the property, so that if the child object attempts to watch any of its own\n // properties while being created the $$touchThis method has something to add a dependency on\n // as the object's own properties won't be made reactive until *after* it's been created.\n this._setFirebaseProperty(parent, key, null);\n object = this._createObject(path, parent);\n this._setFirebaseProperty(parent, key, object, object.$hidden);\n this._fixObject(object);\n createdObjects.push(object);\n objectCreated = true;\n }\n if (override) {\n Object.defineProperty(object, '$overridden', {get: _.constant(true), configurable: true});\n } else if (object.$overridden) {\n delete object.$overridden;\n }\n // Plant hidden placeholders first, so their computed watchers will have a similar precedence to\n // the parent object, and the parent object's other children will get computed first. This can\n // optimize updates when parts of a complex model are broken out into hidden sub-models, and\n // shouldn't risk being overwritten by actual Firebase data since that will rarely (never?) be\n // hidden.\n if (objectCreated) this._plantPlaceholders(object, path, true, createdObjects);\n _.forEach(value, (item, escapedChildKey) => {\n this._plantValue(\n joinPath(path, escapedChildKey), unescapeKey(escapedChildKey), item, object, remoteWrite,\n override, local, createdObjects\n );\n });\n if (objectCreated) {\n this._plantPlaceholders(object, path, false, createdObjects);\n } else {\n _.forEach(object.$data, (item, childKey) => {\n const escapedChildKey = escapeKey(childKey);\n if (!Object.hasOwn(value, escapedChildKey)) {\n this._prune(joinPath(path, escapedChildKey), null, remoteWrite);\n }\n });\n }\n return object;\n }\n\n _plantPlaceholders(object, path, hidden, createdObjects) {\n this._modeler.forEachPlaceholderChild(path, mount => {\n if (hidden !== undefined && hidden !== !!mount.hidden) return;\n const key = unescapeKey(mount.escapedKey);\n if (!Object.hasOwn(object.$data, key)) {\n this._plantValue(\n joinPath(path, mount.escapedKey), key, mount.placeholder, object, false, false, false,\n createdObjects);\n }\n });\n }\n\n _prune(path, lockedDescendantPaths, remoteWrite) {\n lockedDescendantPaths = lockedDescendantPaths || {};\n const object = this.getObject(path);\n if (object === undefined) return;\n if (remoteWrite && this._avoidLocalWritePaths(path, lockedDescendantPaths)) return;\n if (!(_.isEmpty(lockedDescendantPaths) && this._pruneAncestors(path, object)) &&\n _.isObject(object)) {\n // The target object is a placeholder, and all ancestors are placeholders or otherwise needed\n // as well, so we can't delete it. Instead, dive into its descendants to delete what we can.\n this._pruneDescendants(object, lockedDescendantPaths);\n }\n }\n\n _avoidLocalWritePaths(path, lockedDescendantPaths) {\n for (const localWritePath in this._localWrites) {\n if (!Object.hasOwn(this._localWrites, localWritePath)) continue;\n if (path === localWritePath || localWritePath === '/' ||\n _.startsWith(path, localWritePath + '/')) return true;\n if (path === '/' || _.startsWith(localWritePath, path + '/')) {\n const segments = splitPath(localWritePath, true);\n for (let i = segments.length; i > 0; i--) {\n const subPath = segments.slice(0, i).join('/');\n const active = i === segments.length;\n if (lockedDescendantPaths[subPath] || lockedDescendantPaths[subPath] === active) break;\n lockedDescendantPaths[subPath] = active;\n if (subPath === path) break;\n }\n }\n }\n }\n\n _pruneAncestors(targetPath, targetObject) {\n // Destroy the child (unless it's a placeholder that's still needed) and any ancestors that\n // are no longer needed to keep this child rooted, and have no other reason to exist.\n let deleted = false;\n let object = targetObject;\n // The target object may be a primitive, in which case it won't have $path, $parent and $key\n // properties. In that case, use the target path to figure those out instead. Note that all\n // ancestors of the target object will necessarily not be primitives and will have those\n // properties.\n let targetKey;\n const targetParentPath = targetPath.replace(/\\/[^/]+$/, match => {\n targetKey = unescapeKey(match.slice(1));\n return '';\n });\n while (object !== undefined && object !== this.root) {\n const parent =\n object && object.$parent || object === targetObject && this.getObject(targetParentPath);\n if (!this._modeler.isPlaceholder(object && object.$path || targetPath)) {\n const ghostObjects = deleted ? null : [targetObject];\n if (!this._holdsConcreteData(object, ghostObjects)) {\n deleted = true;\n this._deleteFirebaseProperty(\n parent, object && object.$key || object === targetObject && targetKey);\n }\n }\n object = parent;\n }\n return deleted;\n }\n\n _holdsConcreteData(object, ghostObjects) {\n if (_.isNil(object)) return false;\n if (ghostObjects && _.includes(ghostObjects, object)) return false;\n if (!_.isObject(object) || !object.$truss) return true;\n return _.some(object.$data, value => this._holdsConcreteData(value, ghostObjects));\n }\n\n _pruneDescendants(object, lockedDescendantPaths) {\n if (lockedDescendantPaths[object.$path]) return true;\n if (object.$overridden) delete object.$overridden;\n let coupledDescendantFound = false;\n _.forEach(object.$data, (value, key) => {\n let shouldDelete = true;\n let valueLocked;\n if (lockedDescendantPaths[joinPath(object.$path, escapeKey(key))]) {\n shouldDelete = false;\n valueLocked = true;\n } else if (!_.isNil(value) && value.$truss) {\n const placeholder = this._modeler.isPlaceholder(value.$path);\n if (placeholder || _.has(lockedDescendantPaths, value.$path)) {\n valueLocked = this._pruneDescendants(value, lockedDescendantPaths);\n shouldDelete = !placeholder && !valueLocked;\n }\n }\n if (shouldDelete) this._deleteFirebaseProperty(object, key);\n coupledDescendantFound = coupledDescendantFound || valueLocked;\n });\n return coupledDescendantFound;\n }\n\n getObject(path) {\n const segments = splitPath(path);\n let object;\n for (const segment of segments) {\n object = segment ? object.$data[segment] : this.root;\n if (object === undefined) return;\n }\n return object;\n }\n\n _getFirebasePropertyDescriptor(object, data, key) {\n const descriptor = Object.getOwnPropertyDescriptor(data, key);\n if (descriptor) {\n if (!descriptor.enumerable) {\n const child = data[key];\n if (!child || child.$parent !== object) {\n throw new Error(\n `Key conflict between Firebase and instance or computed properties at ` +\n `${object.$path}: ${key}`);\n }\n }\n if (!descriptor.get || !descriptor.set) {\n throw new Error(`Unbound property at ${object.$path}: ${key}`);\n }\n } else if (key in data) {\n throw new Error(\n `Key conflict between Firebase and inherited property at ${object.$path}: ${key}`);\n }\n return descriptor;\n }\n\n _setFirebaseProperty(object, key, value, hidden) {\n const data = Object.hasOwn(object, '$data') ? object.$data : object;\n let descriptor = this._getFirebasePropertyDescriptor(object, data, key);\n if (descriptor) {\n if (hidden) {\n // Redefine property as hidden after it's been created, since we usually don't know whether\n // it should be hidden until too late. This is a one-way deal -- you can't unhide a\n // property later, but that's fine for our purposes.\n Object.defineProperty(data, key, {\n get: descriptor.get, set: descriptor.set, configurable: true, enumerable: false\n });\n }\n if (data[key] === value) return;\n this._firebasePropertyEditAllowed = true;\n data[key] = value;\n this._firebasePropertyEditAllowed = false;\n } else {\n Vue.set(data, key, value);\n descriptor = Object.getOwnPropertyDescriptor(data, key);\n Object.defineProperty(data, key, {\n get: descriptor.get, set: this._overwriteFirebaseProperty.bind(this, descriptor, key),\n configurable: true, enumerable: !hidden\n });\n }\n angular.digest();\n }\n\n _overwriteFirebaseProperty(descriptor, key, newValue) {\n if (!this._firebasePropertyEditAllowed) {\n const e = new Error(`Firebase data cannot be mutated directly: ${key}`);\n e.trussCode = 'firebase_overwrite';\n throw e;\n }\n descriptor.set.call(this, newValue);\n }\n\n _deleteFirebaseProperty(object, key) {\n const data = Object.hasOwn(object, '$data') ? object.$data : object;\n // Make sure it's actually a Firebase property.\n this._getFirebasePropertyDescriptor(object, data, key);\n this._destroyObject(data[key]);\n Vue.delete(data, key);\n angular.digest();\n }\n\n checkVueObject(object, path) {\n this._modeler.checkVueObject(object, path);\n }\n}\n\n\nexport function checkUpdateHasOnlyDescendantsWithNoOverlap(rootPath, values) {\n // First, check all paths for correctness and absolutize them, since there could be a mix of\n // absolute paths and relative keys.\n _.forEach(_.keys(values), path => {\n if (path.charAt(0) === '/') {\n if (!(path === rootPath || rootPath === '/' ||\n _.startsWith(path, rootPath + '/') && path.length > rootPath.length + 1)) {\n throw new Error(`Update item is not a descendant of target ref: ${path}`);\n }\n } else {\n if (_.includes(path, '/')) {\n throw new Error(`Update item deep path must be absolute, taken from a reference: ${path}`);\n }\n const absolutePath = joinPath(rootPath, escapeKey(path));\n if (Object.hasOwn(values, absolutePath)) {\n throw new Error(`Update items overlap: ${path} and ${absolutePath}`);\n }\n values[absolutePath] = values[path];\n delete values[path];\n }\n });\n // Then check for overlaps;\n const allPaths = _(values).keys().map(path => joinPath(path, '')).sortBy('length').value();\n _.forEach(values, (value, path) => {\n for (const otherPath of allPaths) {\n if (otherPath.length > path.length) break;\n if (path !== otherPath && _.startsWith(path, otherPath)) {\n throw new Error(`Update items overlap: ${otherPath} and ${path}`);\n }\n }\n });\n}\n\nexport function extractCommonPathPrefix(values) {\n let prefixSegments;\n _.forEach(values, (value, path) => {\n const segments = path === '/' ? [''] : splitPath(path, true);\n if (prefixSegments) {\n let firstMismatchIndex = 0;\n const maxIndex = Math.min(prefixSegments.length, segments.length);\n while (firstMismatchIndex < maxIndex &&\n prefixSegments[firstMismatchIndex] === segments[firstMismatchIndex]) {\n firstMismatchIndex++;\n }\n prefixSegments = prefixSegments.slice(0, firstMismatchIndex);\n if (!prefixSegments.length) return false;\n } else {\n prefixSegments = segments;\n }\n });\n return prefixSegments.length === 1 ? '/' : prefixSegments.join('/');\n}\n\nexport function relativizePaths(rootPath, values) {\n const offset = rootPath === '/' ? 1 : rootPath.length + 1;\n _.forEach(_.keys(values), path => {\n values[path.slice(offset)] = values[path];\n delete values[path];\n });\n}\n\nexport function toFirebaseJson(object) {\n if (!_.isObject(object)) return object;\n const result = {};\n const data = object.$data;\n for (const key in data) {\n if (Object.hasOwn(data, key)) result[escapeKey(key)] = toFirebaseJson(data[key]);\n }\n return result;\n}\n","import _ from 'lodash';\nimport Vue from 'vue';\nimport angular from './angularCompatibility.js';\nimport Bridge from './Bridge.js';\nimport Connector from './Connector.js';\nimport Dispatcher from './Dispatcher.js';\nimport KeyGenerator from './KeyGenerator.js';\nimport MetaTree from './MetaTree.js';\nimport {Handle} from './Reference.js';\nimport {BaseValue} from './Modeler.js';\nimport Tree from './Tree.js';\nimport stats from './utils/stats.js';\nimport {escapeKey, unescapeKey} from './utils/paths.js';\nimport {wrapPromiseCallback, promiseCancel, promiseFinally} from './utils/promises.js';\nimport {SERVER_TIMESTAMP, copyPrototype} from './utils/utils.js';\n\n\nlet bridge, logging;\nconst workerFunctions = {};\n// This version is filled in by the build, don't reformat the line.\nconst VERSION = 'dev';\n\n\nexport default class Truss {\n\n /**\n * Create a new Truss instance, specific to a given datastore. To avoid confusion there should be\n * exactly one Truss per root datastore URL, so in most code this will be a singleton.\n *\n * @param rootUrl {String} The root URL, https://{project}.firebaseio.com.\n */\n constructor(rootUrl) {\n // TODO: allow rootUrl to be a test database object for testing\n if (!bridge) {\n throw new Error('Truss worker not connected, please call Truss.connectWorker first');\n }\n this._rootUrl = rootUrl.replace(/\\/$/, '');\n this._keyGenerator = new KeyGenerator();\n this._dispatcher = new Dispatcher(bridge);\n this._vue = new Vue();\n\n bridge.trackServer(this._rootUrl);\n this._tree = new Tree(this, this._rootUrl, bridge, this._dispatcher);\n this._metaTree = new MetaTree(this._rootUrl, this._tree, bridge, this._dispatcher);\n\n Object.freeze(this);\n }\n\n get info() {return this._metaTree.root;}\n get store() {return this._tree.root;}\n\n /**\n * Mount a set of classes against the datastore structure. Must be called at most once, and\n * cannot be called once any data has been loaded into the tree.\n * @param classes {Array | Object} A list of the classes to map onto the\n * datastore structure. Each class must have a static $trussMount property that is a\n * (wildcarded) unescaped datastore path, or an options object\n * {path: string, placeholder: object}, or an array of either. If the list is an object then\n * the keys serve as default option-less $trussMount paths for classes that don't define an\n * explicit $trussMount.\n */\n mount(classes) {\n this._tree.init(classes);\n }\n\n destroy() {\n this._vue.$destroy();\n this._tree.destroy();\n this._metaTree.destroy();\n }\n\n get now() {return Date.now() + this.info.timeOffset;}\n newKey() {return this._keyGenerator.generateUniqueKey(this.now);}\n\n authenticate(token) {\n return this._metaTree.authenticate(token);\n }\n\n unauthenticate() {\n return this._metaTree.unauthenticate();\n }\n\n intercept(actionType, callbacks) {\n return this._dispatcher.intercept(actionType, callbacks);\n }\n\n // connections are {key: Query | Object | fn() -> (Query | Object)}\n connect(scope, connections) {\n if (!connections) {\n connections = scope;\n scope = undefined;\n }\n if (connections instanceof Handle || _.isFunction(connections)) connections = {_: connections};\n return new Connector(scope, connections, this._tree, 'connect');\n }\n\n // target is Reference, Query, or connection Object like above\n peek(target, callback) {\n callback = wrapPromiseCallback(callback || _.identity);\n let cleanup, cancel;\n const promise = Promise.resolve().then(() => new Promise((resolve, reject) => {\n const scope = {};\n let callbackPromise;\n\n let connector = new Connector(scope, {result: target}, this._tree, 'peek');\n\n let unintercept = this.intercept('peek', {onFailure: op => {\n function match(descriptor) {\n if (!descriptor) return;\n if (descriptor instanceof Handle) return op.target.isEqual(descriptor);\n return _.some(descriptor, value => match(value));\n }\n if (match(connector.at)) {\n reject(op.error);\n cleanup();\n }\n }});\n\n let unobserve = this.observe(() => connector.ready, ready => {\n if (!ready) return;\n unobserve();\n unobserve = null;\n callbackPromise = promiseFinally(\n callback(scope.result), () => {angular.digest(); callbackPromise = null; cleanup();}\n ).then(result => {resolve(result);}, error => {reject(error);});\n });\n\n cleanup = () => {\n if (unobserve) {unobserve(); unobserve = null;}\n if (unintercept) {unintercept(); unintercept = null;}\n if (connector) {connector.destroy(); connector = null;}\n if (callbackPromise && callbackPromise.cancel) callbackPromise.cancel();\n };\n\n cancel = () => {\n reject(new Error('Canceled'));\n cleanup();\n };\n }));\n return promiseCancel(promise, cancel);\n }\n\n observe(subjectFn, callbackFn, options) {\n const usePreciseDefaults = _.isObject(options && options.precise);\n let numCallbacks = 0;\n let oldValueClone;\n if (usePreciseDefaults) {\n oldValueClone = options.deep ? _.cloneDeep(options.precise) : _.clone(options.precise);\n }\n\n // This needs to be a `let` instead of a `const` to avoid a \"Cannot access before\n // initialization\" error.\n let unwatch;\n // eslint-disable-next-line prefer-const\n unwatch = this._vue.$watch(subjectFn, (newValue, oldValue) => {\n if (options && options.precise) {\n const newValueClone = usePreciseDefaults ?\n (options.deep ?\n _.defaultsDeep({}, newValue, options.precise) :\n _.defaults({}, newValue, options.precise)) :\n (options.deep ? _.cloneDeep(newValue) : _.clone(newValue));\n if (_.isEqual(newValueClone, oldValueClone)) return;\n oldValueClone = newValueClone;\n }\n numCallbacks++;\n if (unwatch || options && options.immediate) {\n callbackFn(newValue, oldValue);\n angular.digest();\n } else {\n // Delay the immediate callback until we've had a chance to return the unwatch function.\n Promise.resolve().then(() => {\n const vm = options && options.vm;\n if (numCallbacks > 1 || (vm && vm.$destroyed)) return;\n callbackFn(newValue, oldValue);\n // No need to digest since under Angular we'll be using $q as Promise.\n });\n }\n }, {immediate: true, deep: options && options.deep});\n\n if (options && options.scope) options.scope.$on('$destroy', unwatch);\n return unwatch;\n }\n\n when(expression, options) {\n let cleanup, timeoutHandle;\n let promise = new Promise((resolve, reject) => {\n let unobserve = this.observe(expression, value => {\n if (!value) return;\n // Wait for computed properties to settle and double-check.\n Vue.nextTick(() => {\n value = expression();\n if (!value) return;\n resolve(value);\n cleanup();\n });\n });\n if (_.has(options, 'timeout')) {\n timeoutHandle = setTimeout(() => {\n timeoutHandle = null;\n reject(new Error(options.timeoutMessage || 'Timeout'));\n cleanup();\n }, options.timeout);\n }\n cleanup = () => {\n if (unobserve) {unobserve(); unobserve = null;}\n if (timeoutHandle) {clearTimeout(timeoutHandle); timeoutHandle = null;}\n reject(new Error('Canceled'));\n };\n });\n promise = promiseCancel(promiseFinally(promise, cleanup), cleanup);\n if (options && options.scope) options.scope.$on('$destroy', () => {promise.cancel();});\n return promise;\n }\n\n nextTick() {\n let cleanup;\n let promise = new Promise((resolve, reject) => {\n Vue.nextTick(resolve);\n cleanup = () => {\n reject(new Error('Canceled'));\n };\n });\n promise = promiseCancel(promise, cleanup);\n return promise;\n }\n\n throttleRemoteDataUpdates(delay) {\n this._tree.throttleRemoteDataUpdates(delay);\n }\n\n checkObjectsForRogueProperties() {\n this._tree.checkVueObject(this._tree.root, '/');\n }\n\n static get computedPropertyStats() {\n return stats;\n }\n\n static async connectWorker(webWorker, config) {\n if (bridge) throw new Error('Worker already connected');\n if (_.isString(webWorker)) {\n const Worker = window.SharedWorker || window.Worker;\n if (!Worker) throw new Error('Browser does not implement Web Workers');\n if (!navigator.locks) throw new Error('Browser does not implement locks');\n webWorker = new Worker(webWorker);\n const random = window.crypto.getRandomValues(new Uint32Array(1))[0];\n webWorker.lockName = `truss_worker_lock_${Date.now()}.${random}`;\n await new Promise((resolve, reject) => {\n navigator.locks.request(webWorker.lockName, () => {\n resolve();\n // eslint-disable-next-line lodash/prefer-noop\n return new Promise(() => {/* release lock only on page exit or crash */});\n }).catch(reject);\n });\n }\n bridge = new Bridge(webWorker);\n if (logging) bridge.enableLogging(logging);\n const {exposedFunctionNames, firebaseSdkVersion} =\n await bridge.init(webWorker.lockName, config);\n Object.defineProperty(Truss, 'FIREBASE_SDK_VERSION', {value: firebaseSdkVersion});\n for (const name of exposedFunctionNames) Truss.preExpose(name);\n }\n\n static get worker() {return workerFunctions;}\n\n static preExpose(functionName) {\n const segments = functionName.split('.');\n let obj = Truss.worker;\n for (const segment of segments.slice(0, -1)) {\n if (!Object.hasOwnProperty.call(obj, segment)) obj[segment] = {};\n obj = obj[segment];\n }\n obj[segments[segments.length - 1]] = bridge.bindExposedFunction(functionName);\n }\n\n static bounceConnection() {return bridge.bounceConnection();}\n static suspend() {return bridge.suspend();}\n static debugPermissionDeniedErrors(simulatedTokenGenerator, maxSimulationDuration, callFilter) {\n return bridge.debugPermissionDeniedErrors(\n simulatedTokenGenerator, maxSimulationDuration, callFilter);\n }\n\n static debounceAngularDigest(wait) {\n angular.debounceDigest(wait);\n }\n\n static escapeKey(key) {return escapeKey(key);}\n static unescapeKey(escapedKey) {return unescapeKey(escapedKey);}\n\n static enableLogging(fn) {\n logging = fn;\n if (bridge) bridge.enableLogging(fn);\n }\n\n // Duplicate static constants on instance for convenience.\n get SERVER_TIMESTAMP() {return Truss.SERVER_TIMESTAMP;}\n get VERSION() {return Truss.VERSION;}\n get FIREBASE_SDK_VERSION() {return Truss.FIREBASE_SDK_VERSION;}\n}\n\nObject.defineProperties(Truss, {\n SERVER_TIMESTAMP: {value: SERVER_TIMESTAMP},\n VERSION: {value: VERSION},\n Model: {value: Object},\n\n ComponentPlugin: {value: {\n install(Vue2, pluginOptions) {\n if (Vue !== Vue2) throw new Error('Multiple versions of Vue detected');\n if (!pluginOptions.truss) {\n throw new Error('Need to pass `truss` instance as an option to use the ComponentPlugin');\n }\n const prototypeExtension = {\n $truss: {value: pluginOptions.truss},\n $destroyed: {get() {return this._isBeingDestroyed || this._isDestroyed;}},\n $$touchThis: {value() {if (this.__ob__) this.__ob__.dep.depend();}}\n };\n const conflictingKeys = _(prototypeExtension).keys()\n .union(_.keys(BaseValue.prototype)).intersection(_.keys(Vue.prototype)).value();\n if (conflictingKeys.length) {\n throw new Error(\n 'Truss extension properties conflict with Vue properties: ' + conflictingKeys.join(', '));\n }\n Object.defineProperties(Vue.prototype, prototypeExtension);\n copyPrototype(BaseValue, Vue);\n }\n }}\n});\n\nangular.defineModule(Truss);\n"],"names":["angular"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"firetruss.es2015.js","sources":["../src/utils/LruCache.js","../src/utils/paths.js","../src/Bridge.js","../src/Reference.js","../src/utils/utils.js","../src/utils/stats.js","../src/Connector.js","../src/utils/promises.js","../src/Dispatcher.js","../src/KeyGenerator.js","../src/MetaTree.js","../src/Modeler.js","../src/Coupler.js","../src/Tree.js","../src/Truss.js"],"sourcesContent":["import _ from 'lodash';\n\n\nclass LruCacheItem {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n this.touch();\n }\n\n touch() {\n this.timestamp = Date.now();\n }\n}\n\n\nexport default class LruCache {\n constructor(maxSize, pruningSize) {\n this._items = Object.create(null);\n this._size = 0;\n this._maxSize = maxSize;\n this._pruningSize = pruningSize || Math.ceil(maxSize * 0.10);\n }\n\n has(key) {\n return Boolean(this._items[key]);\n }\n\n get(key) {\n const item = this._items[key];\n if (!item) return;\n item.touch();\n return item.value;\n }\n\n set(key, value) {\n const item = this._items[key];\n if (item) {\n item.value = value;\n } else {\n if (this._size >= this._maxSize) this._prune();\n this._items[key] = new LruCacheItem(key, value);\n this._size += 1;\n }\n }\n\n delete(key) {\n const item = this._items[key];\n if (!item) return;\n delete this._items[key];\n this._size -= 1;\n }\n\n _prune() {\n const itemsToPrune =\n _(this._items).toArray().sortBy('timestamp').take(this._pruningSize).value();\n for (const item of itemsToPrune) this.delete(item.key);\n }\n}\n","import LruCache from './LruCache.js';\nimport _ from 'lodash';\n\n\nconst pathSegments = new LruCache(1000);\nconst pathMatchers = {};\nconst maxNumPathMatchers = 1000;\n\n\nexport function escapeKey(key) {\n if (!key) return key;\n // eslint-disable-next-line no-control-regex\n return key.toString().replace(/[\\x00-\\x1f\\\\.$#[\\]\\x7f/]/g, char =>\n '\\\\' + _.padStart(char.charCodeAt(0).toString(16), 2, '0')\n );\n}\n\nexport function unescapeKey(key) {\n if (!key) return key;\n return key.toString().replace(/\\\\[0-9a-f]{2}/gi, code =>\n String.fromCharCode(parseInt(code.slice(1), 16))\n );\n}\n\nexport function escapeKeys(object) {\n // isExtensible check avoids trying to escape references to Firetruss internals.\n if (!(_.isObject(object) && Object.isExtensible(object))) return object;\n let result = object;\n for (const key in object) {\n if (!Object.hasOwn(object, key)) continue;\n const value = object[key];\n const escapedKey = escapeKey(key);\n const escapedValue = escapeKeys(value);\n if (escapedKey !== key || escapedValue !== value) {\n if (result === object) result = _.clone(object);\n result[escapedKey] = escapedValue;\n if (result[key] === value) delete result[key];\n }\n }\n return result;\n}\n\nexport function joinPath() {\n const segments = [];\n for (let segment of arguments) {\n if (!_.isString(segment)) segment = '' + segment;\n if (segment.charAt(0) === '/') segments.splice(0, segments.length);\n segments.push(segment);\n }\n if (segments[0] === '/') segments[0] = '';\n return segments.join('/');\n}\n\nexport function splitPath(path, leaveSegmentsEscaped) {\n const key = (leaveSegmentsEscaped ? 'esc:' : '') + path;\n let segments = pathSegments.get(key);\n if (!segments) {\n segments = path.split('/');\n if (!leaveSegmentsEscaped) segments = _.map(segments, unescapeKey);\n pathSegments.set(key, segments);\n }\n return segments;\n}\n\n\nclass PathMatcher {\n constructor(pattern) {\n this.variables = [];\n const prefixMatch = _.endsWith(pattern, '/$*');\n if (prefixMatch) pattern = pattern.slice(0, -3);\n const pathTemplate = pattern.replace(/\\/\\$[^/]*/g, match => {\n if (match.length > 1) this.variables.push(match.slice(1));\n return '\\u0001';\n });\n Object.freeze(this.variables);\n if (/[.$#[\\]]|\\\\(?![0-9a-f][0-9a-f])/i.test(pathTemplate)) {\n throw new Error('Path pattern has unescaped keys: ' + pattern);\n }\n this._regex = new RegExp(\n // eslint-disable-next-line no-control-regex\n '^' + pathTemplate.replace(/\\u0001/g, '/([^/]+)') + (prefixMatch ? '($|/)' : '$'));\n }\n\n match(path) {\n this._regex.lastIndex = 0;\n const match = this._regex.exec(path);\n if (!match) return;\n const bindings = {};\n for (let i = 0; i < this.variables.length; i++) {\n bindings[this.variables[i]] = unescapeKey(match[i + 1]);\n }\n return bindings;\n }\n\n test(path) {\n return this._regex.test(path);\n }\n\n toString() {\n return this._regex.toString();\n }\n}\n\nexport function makePathMatcher(pattern) {\n let matcher = pathMatchers[pattern];\n if (!matcher) {\n matcher = new PathMatcher(pattern);\n // Minimal pseudo-LRU behavior, since we don't expect to actually fill up the cache.\n if (_.size(pathMatchers) === maxNumPathMatchers) delete pathMatchers[_.keys(pathMatchers)[0]];\n pathMatchers[pattern] = matcher;\n }\n return matcher;\n}\n","import {unescapeKey} from './utils/paths.js';\nimport _ from 'lodash';\n\nconst MIN_WORKER_VERSION = '4.0.0';\n\n\nclass Snapshot {\n constructor({path, value, exists, writeSerial}) {\n this._path = path;\n this._value = value;\n this._exists = value === undefined ? exists || false : value !== null;\n this._writeSerial = writeSerial;\n }\n\n get path() {\n return this._path;\n }\n\n get exists() {\n return this._exists;\n }\n\n get value() {\n if (this._value === undefined) throw new Error('Value omitted from snapshot');\n return this._value;\n }\n\n get key() {\n if (this._key === undefined) this._key = unescapeKey(this._path.replace(/.*\\//, ''));\n return this._key;\n }\n\n get writeSerial() {\n return this._writeSerial;\n }\n}\n\n\nexport default class Bridge {\n constructor(webWorker) {\n this._idCounter = 0;\n this._deferreds = {};\n this._suspended = false;\n this._servers = {};\n this._callbacks = {};\n this._log = _.noop;\n this._inboundMessages = [];\n this._outboundMessages = [];\n this._flushMessageQueue = this._flushMessageQueue.bind(this);\n this._port = webWorker.port || webWorker;\n this._shared = !!webWorker.port;\n this._dead = undefined;\n Object.seal(this);\n this._port.onmessage = this._receive.bind(this);\n }\n\n init(lockName, config) {\n const items = [];\n try {\n const storage = window.localStorage || window.sessionStorage;\n if (!storage) throw new Error('localStorage and sessionStorage not available');\n for (let i = 0; i < storage.length; i++) {\n const key = storage.key(i);\n items.push({key, value: storage.getItem(key)});\n }\n } catch {\n // Some browsers don't like us accessing local storage -- nothing we can do.\n }\n return this._send({msg: 'init', storage: items, config, lockName}).then(response => {\n const workerVersion = response.version.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(-.*)?$/);\n if (workerVersion) {\n const minVersion = MIN_WORKER_VERSION.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(-.*)?$/);\n // Major version must match precisely, minor and patch must be greater than or equal.\n const sufficient = workerVersion[1] === minVersion[1] && (\n workerVersion[2] > minVersion[2] ||\n workerVersion[2] === minVersion[2] && workerVersion[3] >= minVersion[3]\n );\n if (!sufficient) {\n return Promise.reject(new Error(\n `Incompatible Firetruss worker version: ${response.version} ` +\n `(${MIN_WORKER_VERSION} or better required)`\n ));\n }\n }\n if (response.livenessLockName) {\n navigator.locks.request(response.livenessLockName, () => {\n this.crash({error: {\n name: 'Error', message: 'worker terminated', extra: {shared: this._shared}\n }});\n });\n }\n return response;\n });\n }\n\n suspend(suspended) {\n if (suspended === undefined) suspended = true;\n if (this._suspended === suspended) return;\n this._suspended = suspended;\n if (!suspended) {\n this._receiveMessages(this._inboundMessages);\n this._inboundMessages = [];\n if (this._outboundMessages.length) Promise.resolve().then(this._flushMessageQueue);\n }\n }\n\n enableLogging(fn) {\n if (fn) {\n if (fn === true) {\n fn = console.log.bind(console);\n this._send({msg: 'enableFirebaseLogging', value: true});\n }\n this._log = fn;\n } else {\n this._send({msg: 'enableFirebaseLogging', value: false});\n this._log = _.noop;\n }\n }\n\n _send(message) {\n message.id = ++this._idCounter;\n let promise;\n if (this._dead) {\n return Promise.reject(this._dead);\n } else if (message.oneWay) {\n promise = Promise.resolve();\n } else {\n promise = new Promise((resolve, reject) => {\n this._deferreds[message.id] = {resolve, reject};\n });\n const deferred = this._deferreds[message.id];\n deferred.promise = promise;\n deferred.params = message;\n }\n if (!this._outboundMessages.length && !this._suspended) {\n Promise.resolve().then(this._flushMessageQueue);\n }\n this._log('send:', message);\n this._outboundMessages.push(message);\n return promise;\n }\n\n _flushMessageQueue() {\n this._log('flush:', this._outboundMessages.length, 'messages');\n try {\n this._port.postMessage(this._outboundMessages);\n this._outboundMessages = [];\n } catch (e) {\n this._log('flush failed:', e);\n e.extra = {messages: this._outboundMessages};\n throw e;\n }\n }\n\n _receive(event) {\n if (this._dead) return;\n if (this._suspended) {\n this._inboundMessages = this._inboundMessages.concat(event.data);\n } else {\n this._receiveMessages(event.data);\n }\n }\n\n _receiveMessages(messages) {\n for (const message of messages) {\n this._log('recv:', message);\n const fn = this[message.msg];\n if (!_.isFunction(fn)) throw new Error('Unknown message: ' + message.msg);\n fn.call(this, message);\n }\n }\n\n bindExposedFunction(name) {\n return (function() {\n return this._send({msg: 'call', name, args: Array.prototype.slice.call(arguments)});\n }).bind(this);\n }\n\n resolve(message) {\n const deferred = this._deferreds[message.id];\n if (!deferred) throw new Error('Received resolution to inexistent Firebase call');\n delete this._deferreds[message.id];\n deferred.resolve(message.result);\n }\n\n reject(message) {\n const deferred = this._deferreds[message.id];\n if (!deferred) throw new Error('Received rejection of inexistent Firebase call');\n delete this._deferreds[message.id];\n deferred.reject(errorFromJson(message.error, deferred.params));\n }\n\n crash(message) {\n let details = `Internal worker error: ${message.error.name}: ${message.error.message}`;\n if (message.error.cause) details += ` (caused by ${message.error.cause})`;\n this._dead = new Error(details);\n if (message.error.extra) this._dead.extra = message.error.extra;\n _.forEach(this._deferreds, ({reject}) => {reject(this._dead);});\n this._deferreds = {};\n throw this._dead;\n }\n\n updateLocalStorage({items}) {\n try {\n const storage = window.localStorage || window.sessionStorage;\n for (const item of items) {\n if (item.value === null) {\n storage.removeItem(item.key);\n } else {\n storage.setItem(item.key, item.value);\n }\n }\n } catch {\n // If we're denied access, there's nothing we can do.\n }\n }\n\n trackServer(rootUrl) {\n if (Object.hasOwn(this._servers, rootUrl)) return Promise.resolve();\n const server = this._servers[rootUrl] = {authListeners: []};\n const authCallbackId = this._registerCallback(this._authCallback.bind(this, server));\n this._send({msg: 'onAuth', url: rootUrl, callbackId: authCallbackId});\n }\n\n _authCallback(server, auth) {\n server.auth = auth;\n for (const listener of server.authListeners) listener(auth);\n }\n\n onAuth(rootUrl, callback, context) {\n const listener = callback.bind(context);\n listener.callback = callback;\n listener.context = context;\n this._servers[rootUrl].authListeners.push(listener);\n listener(this.getAuth(rootUrl));\n }\n\n offAuth(rootUrl, callback, context) {\n const authListeners = this._servers[rootUrl].authListeners;\n for (let i = 0; i < authListeners.length; i++) {\n const listener = authListeners[i];\n if (listener.callback === callback && listener.context === context) {\n authListeners.splice(i, 1);\n break;\n }\n }\n }\n\n getAuth(rootUrl) {\n return this._servers[rootUrl].auth;\n }\n\n authWithCustomToken(url, authToken) {\n return this._send({msg: 'authWithCustomToken', url, authToken});\n }\n\n authAnonymously(url) {\n return this._send({msg: 'authAnonymously', url});\n }\n\n unauth(url) {\n return this._send({msg: 'unauth', url});\n }\n\n set(url, value, writeSerial) {return this._send({msg: 'set', url, value, writeSerial});}\n update(url, value, writeSerial) {return this._send({msg: 'update', url, value, writeSerial});}\n\n once(url, writeSerial) {\n return this._send({msg: 'once', url, writeSerial}).then(snapshot => new Snapshot(snapshot));\n }\n\n on(listenerKey, url, spec, eventType, snapshotCallback, cancelCallback, context, options) {\n const handle = {\n listenerKey, eventType, snapshotCallback, cancelCallback, context,\n params: {msg: 'on', listenerKey, url, spec, eventType, options}\n };\n const callback = this._onCallback.bind(this, handle);\n this._registerCallback(callback, handle);\n // Keep multiple IDs to allow the same snapshotCallback to be reused.\n snapshotCallback.__callbackIds = snapshotCallback.__callbackIds || [];\n snapshotCallback.__callbackIds.push(handle.id);\n this._send({\n msg: 'on', listenerKey, url, spec, eventType, callbackId: handle.id, options\n }).catch(error => {\n callback(error);\n });\n }\n\n off(listenerKey, url, spec, eventType, snapshotCallback, context) {\n const idsToDeregister = [];\n let callbackId;\n if (snapshotCallback) {\n callbackId = this._findAndRemoveCallbackId(\n snapshotCallback, handle => _.isMatch(handle, {listenerKey, eventType, context})\n );\n if (!callbackId) return Promise.resolve(); // no-op, never registered or already deregistered\n idsToDeregister.push(callbackId);\n } else {\n for (const id of _.keys(this._callbacks)) {\n const handle = this._callbacks[id];\n if (handle.listenerKey === listenerKey && (!eventType || handle.eventType === eventType)) {\n idsToDeregister.push(id);\n }\n }\n }\n // Nullify callbacks first, then deregister after off() is complete. We don't want any\n // callbacks in flight from the worker to be invoked while the off() is processing, but we don't\n // want them to throw an exception either.\n for (const id of idsToDeregister) this._nullifyCallback(id);\n return this._send({msg: 'off', listenerKey, url, spec, eventType, callbackId}).then(() => {\n for (const id of idsToDeregister) this._deregisterCallback(id);\n });\n }\n\n _onCallback(handle, error, snapshotJson) {\n if (error) {\n this._deregisterCallback(handle.id);\n const e = errorFromJson(error, handle.params);\n if (handle.cancelCallback) {\n handle.cancelCallback.call(handle.context, e);\n } else {\n console.error(e);\n }\n } else {\n handle.snapshotCallback.call(handle.context, new Snapshot(snapshotJson));\n }\n }\n\n transaction(url, oldValue, relativeUpdates, writeSerial) {\n return this._send(\n {msg: 'transaction', url, oldValue, relativeUpdates, writeSerial}\n ).then(result => {\n if (result.snapshots) {\n result.snapshots = _.map(result.snapshots, jsonSnapshot => new Snapshot(jsonSnapshot));\n }\n return result;\n });\n }\n\n onDisconnect(url, method, value) {\n return this._send({msg: 'onDisconnect', url, method, value});\n }\n\n bounceConnection() {\n return this._send({msg: 'bounceConnection'});\n }\n\n callback({id, args}) {\n const handle = this._callbacks[id];\n if (!handle) throw new Error('Unregistered callback: ' + id);\n handle.callback.apply(null, args);\n }\n\n _registerCallback(callback, handle) {\n handle = handle || {};\n handle.callback = callback;\n handle.id = `cb${++this._idCounter}`;\n this._callbacks[handle.id] = handle;\n return handle.id;\n }\n\n _nullifyCallback(id) {\n this._callbacks[id].callback = _.noop;\n }\n\n _deregisterCallback(id) {\n delete this._callbacks[id];\n }\n\n _findAndRemoveCallbackId(callback, predicate) {\n if (!callback.__callbackIds) return;\n let i = 0;\n while (i < callback.__callbackIds.length) {\n const id = callback.__callbackIds[i];\n const handle = this._callbacks[id];\n if (!handle) {\n callback.__callbackIds.splice(i, 1);\n continue;\n }\n if (predicate(handle)) {\n callback.__callbackIds.splice(i, 1);\n return id;\n }\n i += 1;\n }\n }\n}\n\n\nfunction errorFromJson(json, params) {\n if (!json || _.isError(json)) return json;\n const error = new Error(json.message);\n try {\n error.params = params;\n for (const propertyName in json) {\n if (propertyName === 'message' || !Object.hasOwn(json, propertyName)) continue;\n try {\n error[propertyName] = json[propertyName];\n } catch {\n error.extra = error.extra || {};\n error.extra[propertyName] = json[propertyName];\n }\n }\n } catch (e) {\n if (!/object is not extensible/.test(e.message)) throw e;\n }\n return error;\n}\n","import {escapeKey, unescapeKey, makePathMatcher} from './utils/paths.js';\n\nimport _ from 'lodash';\n\n/* eslint-disable no-use-before-define */\n\nconst EMPTY_ANNOTATIONS = {};\nObject.freeze(EMPTY_ANNOTATIONS);\n\n\nexport class Handle {\n constructor(tree, path, annotations) {\n this._tree = tree;\n this._path = path.replace(/^\\/*/, '/').replace(/\\/$/, '') || '/';\n if (annotations) {\n this._annotations = annotations;\n Object.freeze(annotations);\n }\n }\n\n get $ref() {return this;}\n get key() {\n if (!this._key) this._key = unescapeKey(this._path.replace(/.*\\//, ''));\n return this._key;\n }\n\n get path() {return this._path;}\n get _pathPrefix() {return this._path === '/' ? '' : this._path;}\n get parent() {\n return new Reference(this._tree, this._path.replace(/\\/[^/]*$/, ''), this._annotations);\n }\n\n get annotations() {\n return this._annotations || EMPTY_ANNOTATIONS;\n }\n\n child() {\n if (!arguments.length) return this;\n const segments = [];\n for (const key of arguments) {\n if (_.isNil(key)) return;\n segments.push(escapeKey(key));\n }\n return new Reference(\n this._tree, `${this._pathPrefix}/${segments.join('/')}`,\n this._annotations\n );\n }\n\n children() {\n if (!arguments.length) return this;\n const escapedKeys = [];\n for (let i = 0; i < arguments.length; i++) {\n const arg = arguments[i];\n if (_.isArray(arg)) {\n const mapping = {};\n const subPath = this._pathPrefix + (escapedKeys.length ? `/${escapedKeys.join('/')}` : '');\n const rest = _.slice(arguments, i + 1);\n for (const key of arg) {\n const subRef =\n new Reference(this._tree, `${subPath}/${escapeKey(key)}`, this._annotations);\n const subMapping = subRef.children.apply(subRef, rest);\n if (subMapping) mapping[key] = subMapping;\n }\n return mapping;\n }\n if (_.isNil(arg)) return;\n escapedKeys.push(escapeKey(arg));\n }\n return new Reference(\n this._tree, `${this._pathPrefix}/${escapedKeys.join('/')}`, this._annotations);\n }\n\n peek(callback) {\n return this._tree.truss.peek(this, callback);\n }\n\n match(pattern) {\n return makePathMatcher(pattern).match(this.path);\n }\n\n test(pattern) {\n return makePathMatcher(pattern).test(this.path);\n }\n\n isEqual(that) {\n if (!(that instanceof Handle)) return false;\n return this._tree === that._tree && this.toString() === that.toString() &&\n _.isEqual(this._annotations, that._annotations);\n }\n\n belongsTo(truss) {\n return this._tree.truss === truss;\n }\n}\n\n\nexport class Query extends Handle {\n constructor(tree, path, spec, annotations) {\n super(tree, path, annotations);\n this._spec = this._copyAndValidateSpec(spec);\n const queryTerms = _(this._spec)\n .map((value, key) => `${key}=${encodeURIComponent(JSON.stringify(value))}`)\n .sortBy()\n .join('&');\n this._string = `${this._path}?${queryTerms}`;\n Object.freeze(this);\n }\n\n // Vue-bound\n get ready() {\n return this._tree.isQueryReady(this);\n }\n\n get constraints() {\n return this._spec;\n }\n\n annotate(annotations) {\n return new Query(\n this._tree, this._path, this._spec, _.assign({}, this._annotations, annotations));\n }\n\n _copyAndValidateSpec(spec) {\n if (!spec.by) throw new Error('Query needs \"by\" clause: ' + JSON.stringify(spec));\n if (('at' in spec) + ('from' in spec) + ('to' in spec) > 1) {\n throw new Error(\n 'Query must contain at most one of \"at\", \"from\", or \"to\" clauses: ' + JSON.stringify(spec));\n }\n if (('first' in spec) + ('last' in spec) > 1) {\n throw new Error(\n 'Query must contain at most one of \"first\" or \"last\" clauses: ' + JSON.stringify(spec));\n }\n if (!_.some(['at', 'from', 'to', 'first', 'last'], clause => clause in spec)) {\n throw new Error(\n 'Query must contain at least one of \"at\", \"from\", \"to\", \"first\", or \"last\" clauses: ' +\n JSON.stringify(spec));\n }\n spec = _.clone(spec);\n if (spec.by !== '$key' && spec.by !== '$value') {\n if (!(spec.by instanceof Reference)) {\n throw new Error('Query \"by\" value must be a reference: ' + spec.by);\n }\n let childPath = spec.by.toString();\n if (!_.startsWith(childPath, this._path)) {\n throw new Error(\n 'Query \"by\" value must be a descendant of target reference: ' + spec.by);\n }\n childPath = childPath.slice(this._path.length).replace(/^\\/?/, '');\n if (!_.includes(childPath, '/')) {\n throw new Error(\n 'Query \"by\" value must not be a direct child of target reference: ' + spec.by);\n }\n spec.by = childPath.replace(/.*?\\//, '');\n }\n Object.freeze(spec);\n return spec;\n }\n\n\n toString() {return this._string;}\n toJSON() {return `query → ${this.toString()}`;}\n}\n\n\nexport class Reference extends Handle {\n\n constructor(tree, path, annotations) {\n super(tree, path, annotations);\n Object.freeze(this);\n }\n\n get ready() {return this._tree.isReferenceReady(this);} // Vue-bound\n get value() {return this._tree.getObject(this.path);} // Vue-bound\n toString() {return this._path;}\n toJSON() {return `reference → ${this.toString()}`;}\n\n annotate(annotations) {\n return new Reference(this._tree, this._path, _.assign({}, this._annotations, annotations));\n }\n\n query(spec) {\n return new Query(this._tree, this._path, spec, this._annotations);\n }\n\n set(value) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'set', {[this.path]: value});\n }\n\n update(values) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'update', values);\n }\n\n override(value) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'override', {[this.path]: value});\n }\n\n commit(updateFunction) {\n this._checkForUndefinedPath();\n return this._tree.commit(this, updateFunction);\n }\n\n _checkForUndefinedPath() {\n if (this.path === '/undefined') throw new Error('Invalid path for operation: ' + this.path);\n }\n}\n\nexport default Reference;\n","import _ from 'lodash';\n\n\nexport const SERVER_TIMESTAMP = Object.freeze({'.sv': 'timestamp'});\n\nexport function isTrussEqual(a, b) {\n return _.isEqualWith(a, b, isTrussValueEqual);\n}\n\nfunction isTrussValueEqual(a, b) {\n if (a === b || a === undefined || a === null || b === undefined || b === null ||\n a.$truss || b.$truss) return a === b;\n if (a.isEqual) return a.isEqual(b);\n}\n\nexport function copyPrototype(a, b) {\n for (const prop of Object.getOwnPropertyNames(a.prototype)) {\n if (prop === 'constructor') continue;\n Object.defineProperty(b.prototype, prop, Object.getOwnPropertyDescriptor(a.prototype, prop));\n }\n}\n","import {isTrussEqual} from './utils.js';\n\nimport _ from 'lodash';\n\n\nclass StatItem {\n constructor(name) {\n _.assign(this, {name, numRecomputes: 0, numUpdates: 0, computeTime: 0, updateTime: 0});\n }\n\n add(item) {\n this.computeTime += item.computeTime;\n this.updateTime += item.updateTime;\n this.numUpdates += item.numUpdates;\n this.numRecomputes += item.numRecomputes;\n }\n\n get runtime() {\n return this.computeTime + this.updateTime;\n }\n\n get runtimePerRecompute() {\n return this.numRecomputes ? this.computeTime / this.numRecomputes : 0;\n }\n\n get runtimePerUpdate() {\n return this.numUpdates ? this.updateTime / this.numUpdates : 0;\n }\n\n toLogParts(totals) {\n return [\n `${this.name}:`, ` ${(this.runtime / 1000).toFixed(2)}s`,\n `(${(this.runtime / totals.runtime * 100).toFixed(1)}%)`,\n ` ${this.numUpdates} upd /`, `${this.numRecomputes} runs`,\n `(${(this.numUpdates / this.numRecomputes * 100).toFixed(1)}%)`,\n ` ${this.runtimePerRecompute.toFixed(2)}ms / run`,\n ` ${this.runtimePerUpdate.toFixed(2)}ms / upd`\n ];\n }\n}\n\nclass Stats {\n constructor() {\n this._items = {};\n }\n\n for(name) {\n if (!this._items[name]) this._items[name] = new StatItem(name);\n return this._items[name];\n }\n\n get list() {\n return _(this._items).values().sortBy(item => -item.runtime).value();\n }\n\n log(n = 10) {\n let stats = this.list;\n if (!stats.length) return;\n const totals = new StatItem('=== Total');\n _.forEach(stats, stat => {totals.add(stat);});\n stats = _.take(stats, n);\n const above = new StatItem('--- Above');\n _.forEach(stats, stat => {above.add(stat);});\n const lines = _.map(stats, item => item.toLogParts(totals));\n lines.push(above.toLogParts(totals));\n lines.push(totals.toLogParts(totals));\n const widths = _.map(_.range(lines[0].length), i => _(lines).map(line => line[i].length).max());\n _.forEach(lines, line => {\n console.log(_.map(line, (column, i) => _.padStart(column, widths[i])).join(' '));\n });\n }\n\n wrap(getter, className, propName) {\n const item = this.for(`${className}.${propName}`);\n return function() {\n /* eslint-disable no-invalid-this */\n const startTime = performance.now();\n const oldValue = this._computedWatchers && this._computedWatchers[propName].value;\n try {\n const newValue = getter.call(this);\n if (!isTrussEqual(oldValue, newValue)) item.numUpdates += 1;\n return newValue;\n } finally {\n item.computeTime += performance.now() - startTime;\n item.numRecomputes += 1;\n }\n };\n }\n}\n\nexport default new Stats();\n","import {Handle, Query, Reference} from './Reference.js';\nimport stats from './utils/stats.js';\nimport {isTrussEqual} from './utils/utils.js';\n\nimport _ from 'lodash';\nimport Vue from 'vue';\n\n\nexport default class Connector {\n constructor(scope, connections, tree, method, refs) {\n Object.freeze(connections);\n this._scope = scope;\n this._connections = connections;\n this._tree = tree;\n this._method = method;\n\n this._subConnectors = {};\n this._disconnects = {};\n this._data = {};\n this._vue = new Vue({data: {\n descriptors: {},\n refs: refs || {},\n values: _.mapValues(connections, _.constant(undefined))\n }});\n // allow instance-level overrides of destroy() method\n this.destroy = this.destroy; // eslint-disable-line no-self-assign\n Object.seal(this);\n\n this._linkScopeProperties();\n\n _.forEach(connections, (descriptor, key) => {\n if (_.isFunction(descriptor)) {\n this._bindComputedConnection(key, descriptor);\n } else {\n this._connect(key, descriptor);\n }\n });\n }\n\n get ready() {\n return _.every(this._connections, (ignored, key) => {\n const descriptor = this._vue.descriptors[key];\n if (!descriptor) return false;\n if (descriptor instanceof Handle) return descriptor.ready;\n return this._subConnectors[key].ready;\n });\n }\n\n get at() {\n return this._vue.refs;\n }\n\n get data() {\n return this._data;\n }\n\n destroy() {\n this._unlinkScopeProperties();\n _.forEach(this._connections, (descriptor, key) => {this._disconnect(key);});\n this._vue.$destroy();\n }\n\n _linkScopeProperties() {\n const dataProperties = _.mapValues(this._connections, (unused, key) => ({\n configurable: true, enumerable: false, get: () => {\n const descriptor = this._vue.descriptors[key];\n if (descriptor instanceof Reference) return descriptor.value;\n return this._vue.values[key];\n }\n }));\n Object.defineProperties(this._data, dataProperties);\n if (this._scope) {\n for (const key in this._connections) {\n if (key in this._scope) {\n throw new Error(`Property already defined on connection target: ${key}`);\n }\n }\n Object.defineProperties(this._scope, dataProperties);\n if (this._scope.__ob__) this._scope.__ob__.dep.notify();\n }\n }\n\n _unlinkScopeProperties() {\n if (!this._scope) return;\n _.forEach(this._connections, (descriptor, key) => {\n delete this._scope[key];\n });\n }\n\n _bindComputedConnection(key, fn) {\n const connectionStats = stats.for(`connection.at.${key}`);\n const getter = this._computeConnection.bind(this, fn, connectionStats);\n const update = this._updateComputedConnection.bind(this, key, fn, connectionStats);\n this._vue.$watch(getter, update, {immediate: true});\n }\n\n _computeConnection(fn, connectionStats) {\n const startTime = performance.now();\n try {\n return flattenRefs(fn.call(this._scope));\n } finally {\n connectionStats.computeTime += performance.now() - startTime;\n connectionStats.numRecomputes += 1;\n }\n }\n\n _updateComputedConnection(key, value, connectionStats) {\n const newDescriptor = _.isFunction(value) ? value(this._scope) : value;\n const oldDescriptor = this._vue.descriptors[key];\n const descriptorChanged = !isTrussEqual(oldDescriptor, newDescriptor);\n if (!descriptorChanged) return;\n if (connectionStats && descriptorChanged) connectionStats.numUpdates += 1;\n if (!newDescriptor) {\n this._disconnect(key);\n return;\n }\n if (newDescriptor instanceof Handle || !_.has(this._subConnectors, key)) {\n this._disconnect(key);\n this._connect(key, newDescriptor);\n } else {\n this._subConnectors[key]._updateConnections(newDescriptor);\n }\n Vue.set(this._vue.descriptors, key, newDescriptor);\n }\n\n _updateConnections(connections) {\n _.forEach(connections, (descriptor, key) => {\n this._updateComputedConnection(key, descriptor);\n });\n _.forEach(this._connections, (descriptor, key) => {\n if (!_.has(connections, key)) this._updateComputedConnection(key);\n });\n this._connections = connections;\n }\n\n _connect(key, descriptor) {\n Vue.set(this._vue.descriptors, key, descriptor);\n if (!descriptor) return;\n Vue.set(this._vue.values, key, undefined);\n if (descriptor instanceof Reference) {\n Vue.set(this._vue.refs, key, descriptor);\n this._disconnects[key] = this._tree.connectReference(descriptor, this._method);\n } else if (descriptor instanceof Query) {\n Vue.set(this._vue.refs, key, descriptor);\n const updateFn = this._updateQueryValue.bind(this, key);\n this._disconnects[key] = this._tree.connectQuery(descriptor, updateFn, this._method);\n } else {\n const subScope = {}, subRefs = {};\n Vue.set(this._vue.refs, key, subRefs);\n const subConnector = this._subConnectors[key] =\n new Connector(subScope, descriptor, this._tree, this._method, subRefs);\n // Use a truss.observe here instead of this._vue.$watch so that the \"immediate\" execution\n // actually takes place after we've captured the unwatch function, in case the subConnector\n // is ready immediately.\n const unobserve = this._disconnects[key] = this._tree.truss.observe(\n () => subConnector.ready,\n subReady => {\n if (!subReady) return;\n unobserve();\n delete this._disconnects[key];\n Vue.set(this._vue.values, key, subScope);\n }\n );\n }\n }\n\n _disconnect(key) {\n Vue.delete(this._vue.refs, key);\n this._updateRefValue(key, undefined);\n if (_.has(this._subConnectors, key)) {\n this._subConnectors[key].destroy();\n delete this._subConnectors[key];\n }\n if (this._disconnects[key]) this._disconnects[key]();\n delete this._disconnects[key];\n Vue.delete(this._vue.descriptors, key);\n }\n\n _updateRefValue(key, value) {\n if (this._vue.values[key] !== value) {\n Vue.set(this._vue.values, key, value);\n }\n }\n\n _updateQueryValue(key, childKeys) {\n if (!this._vue.values[key]) {\n Vue.set(this._vue.values, key, {});\n }\n const subScope = this._vue.values[key];\n for (const childKey in subScope) {\n if (!Object.hasOwn(subScope, childKey)) continue;\n if (!_.includes(childKeys, childKey)) {\n Vue.delete(subScope, childKey);\n }\n }\n const object = this._tree.getObject(this._vue.descriptors[key].path);\n for (const childKey of childKeys) {\n if (Object.hasOwn(subScope, childKey)) continue;\n Vue.set(subScope, childKey, object[childKey]);\n }\n }\n\n}\n\nfunction flattenRefs(refs) {\n if (!refs) return;\n if (refs instanceof Handle) return refs.toString();\n return _.mapValues(refs, flattenRefs);\n}\n","export function wrapPromiseCallback(callback) {\n return function() {\n try {\n // eslint-disable-next-line no-invalid-this\n return Promise.resolve(callback.apply(this, arguments));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\nexport function promiseCancel(promise, cancel) {\n promise = promiseFinally(promise, () => {cancel = null;});\n promise.cancel = () => {\n if (!cancel) return;\n cancel();\n cancel = null;\n };\n propagatePromiseProperty(promise, 'cancel');\n return promise;\n}\n\nfunction propagatePromiseProperty(promise, propertyName) {\n const originalThen = promise.then, originalCatch = promise.catch;\n promise.then = (onResolved, onRejected) => {\n const derivedPromise = originalThen.call(promise, onResolved, onRejected);\n derivedPromise[propertyName] = promise[propertyName];\n propagatePromiseProperty(derivedPromise, propertyName);\n return derivedPromise;\n };\n promise.catch = onRejected => {\n const derivedPromise = originalCatch.call(promise, onRejected);\n derivedPromise[propertyName] = promise[propertyName];\n propagatePromiseProperty(derivedPromise, propertyName);\n return derivedPromise;\n };\n return promise;\n}\n\nexport function promiseFinally(promise, onFinally) {\n if (!onFinally) return promise;\n onFinally = wrapPromiseCallback(onFinally);\n return promise.then(result => {\n return onFinally().then(() => result);\n }, error => {\n return onFinally().then(() => Promise.reject(error));\n });\n}\n","import _ from 'lodash';\nimport Reference from './Reference.js';\nimport {wrapPromiseCallback} from './utils/promises.js';\nimport {joinPath} from './utils/paths.js';\n\n\nconst INTERCEPT_KEYS = [\n 'read', 'write', 'auth', 'set', 'update', 'commit', 'connect', 'peek', 'authenticate',\n 'unathenticate', 'certify', 'all'\n];\n\nconst EMPTY_ARRAY = [];\n\n\nclass SlowHandle {\n constructor(operation, delay, callback) {\n this._operation = operation;\n this._delay = delay;\n this._callback = callback;\n this._fired = false;\n }\n\n initiate() {\n this.cancel();\n this._fired = false;\n const elapsed = Date.now() - this._operation._startTimestamp;\n this._timeoutId = setTimeout(() => {\n this._fired = true;\n this._callback(this._operation);\n }, this._delay - elapsed);\n }\n\n cancel() {\n if (this._fired) this._callback(this._operation);\n if (this._timeoutId) clearTimeout(this._timeoutId);\n }\n}\n\n\nclass Operation {\n constructor(type, method, target, operand) {\n this._type = type;\n this._method = method;\n this._target = target;\n this._operand = operand;\n this._ready = false;\n this._running = false;\n this._ended = false;\n this._tries = 0;\n this._startTimestamp = Date.now();\n this._slowHandles = [];\n }\n\n get type() {return this._type;}\n get method() {return this._method;}\n get target() {return this._target;}\n get targets() {\n if (this._method !== 'update') return [this._target];\n return _.map(this._operand, (value, escapedPathFragment) => {\n return new Reference(\n this._target._tree, joinPath(this._target.path, escapedPathFragment),\n this._target._annotations);\n });\n }\n\n get operand() {return this._operand;}\n get ready() {return this._ready;}\n get running() {return this._running;}\n get ended() {return this._ended;}\n get tries() {return this._tries;}\n get error() {return this._error;}\n\n onSlow(delay, callback) {\n const handle = new SlowHandle(this, delay, callback);\n this._slowHandles.push(handle);\n handle.initiate();\n }\n\n _setRunning(value) {\n this._running = value;\n }\n\n _setEnded(value) {\n this._ended = value;\n }\n\n _markReady(ending) {\n this._ready = true;\n if (!ending) this._tries = 0;\n _.forEach(this._slowHandles, handle => handle.cancel());\n }\n\n _clearReady() {\n // Temporarily set ready to correctly reset previously triggered slow handles.\n this._ready = true;\n this._startTimestamp = Date.now();\n _.forEach(this._slowHandles, handle => handle.initiate());\n this._ready = false;\n }\n\n _incrementTries() {\n this._tries++;\n }\n}\n\n\nexport default class Dispatcher {\n constructor(bridge) {\n this._bridge = bridge;\n this._callbacks = {};\n Object.freeze(this);\n }\n\n intercept(interceptKey, callbacks) {\n if (!_.includes(INTERCEPT_KEYS, interceptKey)) {\n throw new Error('Unknown intercept operation type: ' + interceptKey);\n }\n const badCallbackKeys =\n _.difference(_.keys(callbacks), ['onBefore', 'onAfter', 'onError', 'onFailure']);\n if (badCallbackKeys.length) {\n throw new Error('Unknown intercept callback types: ' + badCallbackKeys.join(', '));\n }\n const wrappedCallbacks = {\n onBefore: this._addCallback('onBefore', interceptKey, callbacks.onBefore),\n onAfter: this._addCallback('onAfter', interceptKey, callbacks.onAfter),\n onError: this._addCallback('onError', interceptKey, callbacks.onError),\n onFailure: this._addCallback('onFailure', interceptKey, callbacks.onFailure)\n };\n return this._removeCallbacks.bind(this, interceptKey, wrappedCallbacks);\n }\n\n _addCallback(stage, interceptKey, callback) {\n if (!callback) return;\n const key = this._getCallbacksKey(stage, interceptKey);\n const wrappedCallback = wrapPromiseCallback(callback);\n (this._callbacks[key] || (this._callbacks[key] = [])).push(wrappedCallback);\n return wrappedCallback;\n }\n\n _removeCallback(stage, interceptKey, wrappedCallback) {\n if (!wrappedCallback) return;\n const key = this._getCallbacksKey(stage, interceptKey);\n if (this._callbacks[key]) _.pull(this._callbacks[key], wrappedCallback);\n }\n\n _removeCallbacks(interceptKey, wrappedCallbacks) {\n _.forEach(wrappedCallbacks, (wrappedCallback, stage) => {\n this._removeCallback(stage, interceptKey, wrappedCallback);\n });\n }\n\n _getCallbacks(stage, operationType, method) {\n return [].concat(\n this._callbacks[this._getCallbacksKey(stage, method)] || EMPTY_ARRAY,\n this._callbacks[this._getCallbacksKey(stage, operationType)] || EMPTY_ARRAY,\n this._callbacks[this._getCallbacksKey(stage, 'all')] || EMPTY_ARRAY\n );\n }\n\n _getCallbacksKey(stage, interceptKey) {\n return `${stage}_${interceptKey}`;\n }\n\n execute(operationType, method, target, operand, executor) {\n executor = wrapPromiseCallback(executor);\n const operation = this.createOperation(operationType, method, target, operand);\n return this.begin(operation).then(() => {\n const executeWithRetries = () => {\n return executor().catch(e => this._retryOrEnd(operation, e).then(executeWithRetries));\n };\n return executeWithRetries();\n }).then(result => this.end(operation).then(() => result));\n }\n\n createOperation(operationType, method, target, operand) {\n return new Operation(operationType, method, target, operand);\n }\n\n begin(operation) {\n return Promise.all(_.map(\n this._getCallbacks('onBefore', operation.type, operation.method),\n onBefore => onBefore(operation)\n )).then(() => {\n if (!operation.ended) operation._setRunning(true);\n }, e => this.end(operation, e));\n }\n\n markReady(operation) {\n operation._markReady();\n }\n\n clearReady(operation) {\n operation._clearReady();\n }\n\n retry(operation, error) {\n operation._incrementTries();\n operation._error = error;\n return Promise.all(_.map(\n this._getCallbacks('onError', operation.type, operation.method),\n onError => onError(operation, error)\n )).then(results => {\n // If the operation ended in the meantime, bail. This will cause the caller to attempt to\n // fail the operation, but since it's already ended the call to end() with an error will be a\n // no-op.\n if (operation.ended) return;\n const retrying = _.some(results);\n if (retrying) delete operation._error;\n return retrying;\n });\n }\n\n _retryOrEnd(operation, error) {\n return this.retry(operation, error).then(result => {\n if (!result) return this.end(operation, error);\n }, e => this.end(operation, e));\n }\n\n end(operation, error) {\n if (operation.ended) return Promise.resolve();\n operation._setRunning(false);\n operation._setEnded(true);\n if (error) {\n operation._error = error;\n } else {\n // In case we're racing with a retry(), wipe out the error.\n delete operation._error;\n }\n return Promise.all(_.map(\n this._getCallbacks('onAfter', operation.type, operation.method),\n onAfter => onAfter(operation)\n )).then(\n () => this._afterEnd(operation),\n e => {\n operation._error = e;\n return this._afterEnd(operation);\n }\n );\n }\n\n _afterEnd(operation) {\n operation._markReady(true);\n if (!operation.error) return Promise.resolve();\n const onFailureCallbacks = this._getCallbacks('onFailure', operation.type, operation.method);\n if (onFailureCallbacks) {\n setTimeout(() => {\n _.forEach(onFailureCallbacks, onFailure => onFailure(operation));\n }, 0);\n }\n return Promise.reject(operation.error);\n }\n}\n\n","const ALPHABET = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n\nconst getRandomValues = window.crypto && window.crypto.getRandomValues &&\n window.crypto.getRandomValues.bind(window.crypto);\n\nexport default class KeyGenerator {\n constructor() {\n this._lastUniqueKeyTime = 0;\n this._lastRandomValues = [];\n }\n\n generateUniqueKey(now) {\n now = now || Date.now();\n const chars = new Array(20);\n let prefix = now;\n for (let i = 7; i >= 0; i--) {\n chars[i] = ALPHABET.charAt(prefix & 0x3f); // eslint-disable-line no-bitwise\n prefix = Math.floor(prefix / 64);\n }\n if (now === this._lastUniqueKeyTime) {\n let i = 11;\n while (i >= 0 && this._lastRandomValues[i] === 63) {\n this._lastRandomValues[i] = 0;\n i -= 1;\n }\n if (i === -1) {\n throw new Error('Internal assertion failure: ran out of unique IDs for this millisecond');\n }\n this._lastRandomValues[i] += 1;\n } else {\n this._lastUniqueKeyTime = now;\n if (getRandomValues) {\n const array = new Uint8Array(12);\n getRandomValues(array);\n for (let i = 0; i < 12; i++) {\n // eslint-disable-next-line no-bitwise\n this._lastRandomValues[i] = array[i] & (i ? 0x3f : 0x0f);\n }\n } else {\n for (let i = 0; i < 12; i++) {\n // Make sure to leave some space for incrementing in the top nibble.\n this._lastRandomValues[i] = Math.floor(Math.random() * (i ? 64 : 16));\n }\n }\n }\n for (let i = 0; i < 12; i++) {\n chars[i + 8] = ALPHABET[this._lastRandomValues[i]];\n }\n return chars.join('');\n }\n}\n","import Vue from 'vue';\nimport Reference from './Reference.js';\n\n\nexport default class MetaTree {\n constructor(rootUrl, tree, bridge, dispatcher) {\n this._rootUrl = rootUrl;\n this._tree = tree;\n this._dispatcher = dispatcher;\n this._bridge = bridge;\n this._vue = new Vue({data: {$root: {\n connected: undefined, timeOffset: 0, user: undefined, userid: undefined,\n nowAtInterval(intervalMillis) {\n const key = 'now' + intervalMillis;\n if (!Object.hasOwn(this, key)) {\n const update = () => {\n Vue.set(this, key, Date.now() + this.timeOffset);\n };\n update();\n setInterval(update, intervalMillis);\n }\n return this[key];\n }\n }}});\n\n this._auth = {serial: 0, initialAuthChangeReceived: false, changePromise: Promise.resolve()};\n\n bridge.onAuth(rootUrl, this._handleAuthChange, this);\n\n this._connectInfoProperty('serverTimeOffset', 'timeOffset');\n this._connectInfoProperty('connected', 'connected');\n Object.freeze(this);\n }\n\n get root() {\n return this._vue.$data.$root;\n }\n\n destroy() {\n this._bridge.offAuth(this._rootUrl, this._handleAuthChange, this);\n this._vue.$destroy();\n }\n\n authenticate(token) {\n this._auth.serial++;\n return this._dispatcher.execute(\n 'auth', 'authenticate', new Reference(this._tree, '/'), token, () => {\n const promise = token ?\n this._bridge.authWithCustomToken(this._rootUrl, token) :\n this._bridge.authAnonymously(this._rootUrl);\n return promise.then(() => this._auth.changePromise);\n }\n );\n }\n\n unauthenticate() {\n // Signal user change to null pre-emptively. This is what the Firebase SDK does as well, since\n // it lets the app tear down user-required connections before the user is actually deauthed,\n // which can prevent spurious permission denied errors.\n this._auth.serial++;\n return this._handleAuthChange(null).then(approved => {\n // Bail if auth change callback initiated another authentication, since it will have already\n // sent the command to the bridge and sending our own now would incorrectly override it.\n if (!approved) return;\n return this._dispatcher.execute(\n 'auth', 'unauthenticate', new Reference(this._tree, '/'), undefined, () => {\n return this._bridge.unauth(this._rootUrl);\n }\n );\n });\n }\n\n _handleAuthChange(user) {\n const supersededChange = !this._auth.initialAuthChangeReceived && this._auth.serial;\n if (user !== undefined) this._auth.initialAuthChangeReceived = true;\n if (supersededChange) return;\n const authSerial = this._auth.serial;\n if (this.root.user === user) return Promise.resolve(false);\n const promise = this._dispatcher.execute(\n 'auth', 'certify', new Reference(this._tree, '/'), user, () => {\n if (this.root.user === user || authSerial !== this._auth.serial) return false;\n if (user) Object.freeze(user);\n this.root.user = user;\n this.root.userid = user && user.uid;\n return true;\n }\n );\n this._auth.changePromise = this._auth.changePromise.then(() => promise).catch();\n return promise;\n }\n\n _isAuthChangeStale(user) {\n return this.root.user === user;\n }\n\n _connectInfoProperty(property, attribute) {\n const url = new URL(this._rootUrl);\n url.pathname = encodeURI(`/.info/${property}`);\n this._bridge.on(url.href, url.href, null, 'value', snap => {\n this.root[attribute] = snap.value;\n });\n }\n}\n","import {Reference, Handle} from './Reference.js';\nimport stats from './utils/stats.js';\nimport {makePathMatcher, joinPath, splitPath, escapeKey, unescapeKey} from './utils/paths.js';\nimport {isTrussEqual, copyPrototype} from './utils/utils.js';\nimport {promiseFinally} from './utils/promises.js';\n\nimport _ from 'lodash';\n\n// These are defined separately for each object so they're not included in Value below.\nconst RESERVED_VALUE_PROPERTY_NAMES = {__ob__: true};\n\nconst UNSUPPORTED_LIFECYCLE_METHODS = new Set([\n 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'activated', 'deactivated', 'errorCaptured'\n]);\nconst UNSUPPORTED_LIFECYCLE_HOOKS =\n new Set(_.map(UNSUPPORTED_LIFECYCLE_METHODS, method => `hook:${method}`));\n\nconst LAST_COMPUTED_VALUE = Symbol('last-computed-value');\n\n// Holds properties that we're going to set on a model object that's being created right now as soon\n// as it's been created, but that we'd like to be accessible in the constructor. The object\n// prototype's getters will pick those up until they get overridden in the instance.\nlet creatingObjectProperties;\n\nlet currentPropertyFrozen;\n\n\nexport class BaseValue {\n get $info() {return this.$truss.info;}\n get $store() {return this.$truss.store;} // access indirectly to leave dependency trace\n get $now() {return this.$truss.now;}\n\n $newKey() {return this.$truss.newKey();}\n\n $intercept(actionType, callbacks) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const unintercept = this.$truss.intercept(actionType, callbacks);\n const uninterceptAndRemoveFinalizer = () => {\n unintercept();\n this.$off('hook:destroyed', uninterceptAndRemoveFinalizer);\n };\n this.$on('hook:destroyed', uninterceptAndRemoveFinalizer);\n return uninterceptAndRemoveFinalizer;\n }\n\n $connect(scope, connections) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n if (!connections) {\n connections = scope;\n scope = undefined;\n }\n const connector = this.$truss.connect(scope, wrapConnections(this, connections));\n const originalDestroy = connector.destroy;\n const destroy = () => {\n this.$off('hook:destroyed', destroy);\n return originalDestroy.call(connector);\n };\n this.$on('hook:destroyed', destroy);\n connector.destroy = destroy;\n return connector;\n }\n\n $peek(target, callback) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = promiseFinally(\n this.$truss.peek(target, callback), () => {this.$off('hook:destroyed', promise.cancel);}\n );\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n\n $observe(subjectFn, callbackFn, options) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n let unobserveAndRemoveFinalizer;\n\n const unobserve = this.$truss.observe(() => {\n this.$$touchThis();\n return subjectFn.call(this);\n }, callbackFn.bind(this), {...options, vm: this});\n\n unobserveAndRemoveFinalizer = () => { // eslint-disable-line prefer-const\n unobserve();\n this.$off('hook:destroyed', unobserveAndRemoveFinalizer);\n };\n this.$on('hook:destroyed', unobserveAndRemoveFinalizer);\n return unobserveAndRemoveFinalizer;\n }\n\n $when(expression, options) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = this.$truss.when(() => {\n this.$$touchThis();\n return expression.call(this);\n }, options);\n promiseFinally(promise, () => {this.$off('hook:destroyed', promise.cancel);});\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n}\n\n\nclass Value {\n get $parent() {return creatingObjectProperties.$parent.value;}\n get $path() {return creatingObjectProperties.$path.value;}\n get $truss() {\n Object.defineProperty(this, '$truss', {value: this.$parent.$truss});\n return this.$truss;\n }\n\n get $ref() {\n Object.defineProperty(this, '$ref', {value: new Reference(this.$truss._tree, this.$path)});\n return this.$ref;\n }\n\n get $refs() {return this.$ref;}\n get $key() {\n Object.defineProperty(\n this, '$key', {value: unescapeKey(this.$path.slice(this.$path.lastIndexOf('/') + 1))});\n return this.$key;\n }\n\n get $data() {return this;}\n get $hidden() {return false;} // eslint-disable-line lodash/prefer-constant\n get $empty() {return _.isEmpty(this.$data);}\n get $keys() {return _.keys(this.$data);}\n get $values() {return _.values(this.$data);}\n get $ready() {return this.$ref.ready;}\n get $overridden() {return false;} // eslint-disable-line lodash/prefer-constant\n\n $nextTick() {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = this.$truss.nextTick();\n promiseFinally(promise, () => {this.$off('hook:destroyed', promise.cancel);});\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n\n $freezeComputedProperty() {\n if (!_.isBoolean(currentPropertyFrozen)) {\n throw new Error('Cannot freeze a computed property outside of its getter function');\n }\n currentPropertyFrozen = true;\n }\n\n get $lastComputedValue() {\n if (!_.isBoolean(currentPropertyFrozen)) {\n throw new Error(\n 'Cannot use last computed value of a property outside of its getter function');\n }\n return LAST_COMPUTED_VALUE;\n }\n\n $set(value) {return this.$ref.set(value);}\n $update(values) {return this.$ref.update(values);}\n $override(values) {return this.$ref.override(values);}\n $commit(options, updateFn) {return this.$ref.commit(options, updateFn);}\n\n $$touchThis() {\n /* eslint-disable no-unused-expressions */\n if (this.__ob__) {\n this.__ob__.dep.depend();\n } else if (this.$parent) {\n (Object.hasOwn(this.$parent, '$data') ? this.$parent.$data : this.$parent)[this.$key];\n } else {\n this.$store;\n }\n /* eslint-enable no-unused-expressions */\n }\n\n get $destroyed() { // eslint-disable-line lodash/prefer-constant\n return false;\n }\n\n $on(event, callback) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n if (UNSUPPORTED_LIFECYCLE_HOOKS.has(event)) {\n throw new Error(`Models don't support the \"${event}\" lifecycle event`);\n }\n (this.$$hooks[event] = this.$$hooks[event] || []).push(callback);\n return this;\n }\n\n $once(event, callback) {\n const object = this;\n function cb(...args) {\n object.$off(event, cb);\n callback(...args);\n }\n cb.fn = callback;\n return this.$on(event, cb);\n }\n\n $off(event, callback) {\n if (event) {\n if (callback) {\n if (_.isArray(event)) {\n for (const ev of event) this.$off(ev, callback);\n } else if (this.$$hooks[event]) {\n const callbacks = this.$$hooks[event];\n for (let i = 0; i < callbacks.length; i++) {\n const cb = callbacks[i];\n if (cb === callback || cb.fn === callback) {\n callbacks.splice(i, 1);\n break;\n }\n }\n }\n } else {\n delete this.$$hooks[event];\n }\n } else {\n for (const key of _.keys(this.$$hooks)) delete this.$$hooks[key];\n }\n return this;\n }\n\n $emit(event, ...args) {\n if (_.has(this, '$$hooks')) {\n // Some callbacks remove themselves from the array, so clone it before iterating.\n _.forEach(_.clone(this.$$hooks[event]), callback => {\n if (callback.$once && callback.$once[event]) {\n callback.$once[event] -= 1;\n this.$off(event, callback);\n }\n callback(...args);\n });\n }\n return this;\n }\n\n get $$hooks() {\n Object.defineProperty(this, '$$hooks', {\n value: {}, writable: false, enumerable: false, configurable: false\n });\n return this.$$hooks;\n }\n}\n\ncopyPrototype(BaseValue, Value);\n\n_.forEach(Value.prototype, (prop, name) => {\n Object.defineProperty(\n Value.prototype, name, {value: prop, enumerable: false, configurable: false, writable: false});\n});\n\n\nclass ErrorWrapper {\n constructor(error) {\n this.error = error;\n }\n}\n\n\nclass FrozenWrapper {\n constructor(value) {\n this.value = value;\n }\n}\n\n\nexport default class Modeler {\n constructor(vue, debug) {\n this._vue = vue;\n this._trie = {Class: Value};\n this._debug = debug;\n Object.freeze(this);\n }\n\n init(classes, rootAcceptable) {\n if (_.isPlainObject(classes)) {\n _.forEach(classes, (Class, path) => {\n if (Class.$trussMount) return;\n Class.$$trussMount = Class.$$trussMount || [];\n Class.$$trussMount.push(path);\n });\n classes = _.values(classes);\n _.forEach(classes, Class => {\n if (!Class.$trussMount && Class.$$trussMount) {\n Class.$trussMount = Class.$$trussMount;\n delete Class.$$trussMount;\n }\n });\n }\n classes = _.uniq(classes);\n _.forEach(classes, Class => this._mountClass(Class, rootAcceptable));\n this._decorateTrie(this._trie);\n }\n\n destroy() {/* empty */}\n\n _getMount(path, scaffold, predicate) {\n const segments = splitPath(path, true);\n let node;\n for (const segment of segments) {\n let child = segment ?\n node.children && (node.children[segment] || !scaffold && node.children.$) : this._trie;\n if (!child) {\n if (!scaffold) return;\n node.children = node.children || {};\n child = node.children[segment] = {Class: Value};\n }\n node = child;\n if (predicate && predicate(node)) break;\n }\n return node;\n }\n\n _findMount(predicate, node) {\n if (!node) node = this._trie;\n if (predicate(node)) return node;\n for (const childKey of _.keys(node.children)) {\n const result = this._findMount(predicate, node.children[childKey]);\n if (result) return result;\n }\n }\n\n _decorateTrie(node) {\n _.forEach(node.children, child => {\n this._decorateTrie(child);\n if (child.local || child.localDescendants) node.localDescendants = true;\n });\n }\n\n _augmentClass(Class) {\n let computedProperties;\n let proto = Class.prototype;\n while (proto && proto.constructor !== Object) {\n for (const name of Object.getOwnPropertyNames(proto)) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, name);\n if (name.charAt(0) === '$') {\n if (_.isEqual(descriptor, Object.getOwnPropertyDescriptor(Value.prototype, name))) {\n continue;\n }\n throw new Error(`Property names starting with \"$\" are reserved: ${Class.name}.${name}`);\n }\n if (UNSUPPORTED_LIFECYCLE_METHODS.has(name) && _.isFunction(proto[name])) {\n throw new Error(`Models don't support the \"${name}\" lifecycle method`);\n }\n if (descriptor.get && !(computedProperties && computedProperties[name])) {\n (computedProperties || (computedProperties = {}))[name] = {\n name, fullName: `${proto.constructor.name}.${name}`, get: descriptor.get,\n set: descriptor.set\n };\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n for (const name of Object.getOwnPropertyNames(Value.prototype)) {\n if (name === 'constructor' || Object.hasOwn(Class.prototype, name)) continue;\n Object.defineProperty(\n Class.prototype, name, Object.getOwnPropertyDescriptor(Value.prototype, name));\n }\n return computedProperties;\n }\n\n _mountClass(Class, rootAcceptable) {\n const computedProperties = this._augmentClass(Class);\n const allVariables = [];\n let mounts = Class.$trussMount;\n if (!mounts) throw new Error(`Class ${Class.name} lacks a $trussMount static property`);\n if (!_.isArray(mounts)) mounts = [mounts];\n _.forEach(mounts, mount => {\n if (_.isString(mount)) mount = {path: mount};\n if (!rootAcceptable && mount.path === '/') {\n throw new Error('Data root already accessed, too late to mount class');\n }\n const matcher = makePathMatcher(mount.path);\n for (const variable of matcher.variables) {\n if (variable === '$' || variable.charAt(1) === '$') {\n throw new Error(`Invalid variable name: ${variable}`);\n }\n if (variable.charAt(0) === '$' && (\n _.has(Value.prototype, variable) || RESERVED_VALUE_PROPERTY_NAMES[variable]\n )) {\n throw new Error(`Variable name conflicts with built-in property or method: ${variable}`);\n }\n allVariables.push(variable);\n }\n const escapedKey = mount.path.match(/\\/([^/]*)$/)[1];\n if (escapedKey.charAt(0) === '$') {\n if (mount.placeholder) {\n throw new Error(\n `Class ${Class.name} mounted at wildcard ${escapedKey} cannot be a placeholder`);\n }\n } else if (!_.has(mount, 'placeholder')) {\n mount.placeholder = {};\n }\n const targetMount = this._getMount(mount.path.replace(/\\$[^/]*/g, '$'), true);\n if (targetMount.matcher && (\n targetMount.escapedKey === escapedKey ||\n targetMount.escapedKey.charAt(0) === '$' && escapedKey.charAt(0) === '$'\n )) {\n throw new Error(\n `Multiple classes mounted at ${mount.path}: ${targetMount.Class.name}, ${Class.name}`);\n }\n _.assign(\n targetMount, {Class, matcher, computedProperties, escapedKey},\n _.pick(mount, 'placeholder', 'local', 'keysUnsafe', 'hidden'));\n });\n _(allVariables).uniq().forEach(variable => {\n Object.defineProperty(Class.prototype, variable, {get() {\n return creatingObjectProperties ?\n creatingObjectProperties[variable] && creatingObjectProperties[variable].value :\n undefined;\n }});\n });\n }\n\n /**\n * Creates a Truss object and sets all its basic properties: path segment variables, user-defined\n * properties, and computed properties. The latter two will be enumerable so that Vue will pick\n * them up and make the reactive.\n */\n createObject(path, properties) {\n const mount = this._getMount(path) || {Class: Value};\n try {\n if (mount.matcher) {\n const match = mount.matcher.match(path);\n for (const variable in match) {\n properties[variable] = {value: match[variable]};\n }\n }\n\n creatingObjectProperties = properties;\n const object = new mount.Class();\n creatingObjectProperties = null;\n\n if (mount.keysUnsafe) {\n properties.$data = {value: Object.create(null), configurable: true, enumerable: true};\n }\n if (mount.hidden) properties.$hidden = {value: true};\n if (mount.computedProperties) {\n _.forEach(mount.computedProperties, prop => {\n properties[prop.name] = this._buildComputedPropertyDescriptor(object, prop);\n });\n }\n\n return object;\n } catch (e) {\n e.extra = _.assign({mount, properties, className: mount.Class && mount.Class.name}, e.extra);\n throw e;\n }\n }\n\n _buildComputedPropertyDescriptor(object, prop) {\n const propertyStats = stats.for(prop.fullName);\n\n let value, pendingPromise;\n let writeAllowed = false;\n\n const initialize = () => {\n let unwatchNow = false;\n const compute = computeValue.bind(object, prop, propertyStats);\n compute.toString = _.constant(`compute ${prop.fullName}`);\n let unwatch = () => {unwatchNow = true;};\n unwatch = this._vue.$watch(compute, newValue => {\n if (object.$destroyed) {\n unwatch();\n return;\n }\n if (pendingPromise) {\n if (pendingPromise.cancel) pendingPromise.cancel();\n pendingPromise = undefined;\n }\n if (_.isObject(newValue) && _.isFunction(newValue.then)) {\n const promise = newValue.then(finalValue => {\n if (promise === pendingPromise) update(finalValue);\n }, error => {\n if (promise === pendingPromise && update(new ErrorWrapper(error)) &&\n !error.trussExpectedException) throw error;\n });\n pendingPromise = promise;\n } else if (update(newValue)) {\n if (newValue instanceof ErrorWrapper && !newValue.error.trussExpectedException) {\n throw newValue.error;\n }\n }\n }, {immediate: true}); // use immediate:true since watcher will run computeValue anyway\n // Hack to change order of computed property watchers. By flipping their ids to be negative,\n // we ensure that they will settle before all other watchers, and also that children\n // properties will settle before their parents since values are often aggregated upwards.\n const watcher = _.last(this._vue._watchers || this._vue._scope.effects);\n watcher.id = -watcher.id;\n\n function update(newValue) {\n const startTime = performance.now();\n if (newValue instanceof FrozenWrapper) {\n newValue = newValue.value;\n unwatch();\n object.$off('hook:destroyed', unwatch);\n }\n if (newValue === LAST_COMPUTED_VALUE || isTrussEqual(value, newValue)) return;\n // console.log('updating', object.$key, prop.fullName, 'from', value, 'to', newValue);\n writeAllowed = true;\n object[prop.name] = newValue;\n writeAllowed = false;\n // Freeze the computed value so it can't be accidentally modified by a third party. Ideally\n // we'd freeze it before setting it so that Vue wouldn't instrument the object recursively\n // (since it can't change anyway), but we actually need the instrumentation in case a client\n // tries to access an inexistent property off a computed pointer to an unfrozen value (e.g.,\n // a $truss-ified object). When instrumented, Vue will add a dependency on the unfrozen\n // value in case the property is later added. If uninstrumented, the dependency won't be\n // added and we won't be notified. And Vue only instruments extensible objects...\n freeze(newValue);\n propertyStats.numUpdates += 1;\n propertyStats.updateTime += performance.now() - startTime;\n return true;\n }\n\n if (unwatchNow) {\n unwatch();\n } else {\n object.$on('hook:destroyed', unwatch);\n }\n\n object.$off('hook:created', initialize);\n };\n object.$on('hook:created', initialize);\n\n return {\n enumerable: true, configurable: true,\n get() {\n if (!writeAllowed && value instanceof ErrorWrapper) throw value.error;\n return value;\n },\n set(newValue) {\n if (writeAllowed) {\n value = newValue;\n } else if (prop.set) {\n prop.set.call(this, newValue);\n } else {\n throw new Error(`You cannot set a computed property: ${prop.name}`);\n }\n }\n };\n }\n\n destroyObject(object) {\n Object.defineProperty(\n object, '$destroyed', {value: true, enumerable: false, configurable: false});\n }\n\n emitLifecycleHook(object, hook) {\n if (_.isFunction(object[hook])) object[hook]();\n object.$emit(`hook:${hook}`);\n }\n\n isPlaceholder(path) {\n const mount = this._getMount(path);\n return mount && mount.placeholder;\n }\n\n isLocal(path, value) {\n const mount = this._getMount(path, false, mount => mount.local);\n if (mount && mount.local) return true;\n if (this._hasLocalProperties(mount, value)) {\n throw new Error('Write on a mix of local and remote tree paths.');\n }\n return false;\n }\n\n _hasLocalProperties(mount, value) {\n if (!mount) return false;\n if (mount.local) return true;\n if (!mount.localDescendants || !_.isObject(value)) return false;\n for (const key in value) {\n const local =\n this._hasLocalProperties(mount.children[escapeKey(key)] || mount.children.$, value[key]);\n if (local) return true;\n }\n return false;\n }\n\n forEachPlaceholderChild(path, iteratee) {\n const mount = this._getMount(path);\n _.forEach(mount && mount.children, child => {\n if (child.placeholder) iteratee(child);\n });\n }\n\n checkVueObject(object, path, checkedObjects) {\n const top = !checkedObjects;\n if (top) checkedObjects = new Set();\n const objectPropertyValues = new Map();\n const mount = this._findMount(candidate => candidate.Class === object.constructor);\n const targetProperties = _(object)\n .thru(Object.getOwnPropertyNames)\n .reject(key =>\n RESERVED_VALUE_PROPERTY_NAMES[key] || Object.hasOwn(Value.prototype, key) ||\n /^\\$_/.test(key)\n )\n .reject(key => mount && mount.matcher && _.includes(mount.matcher.variables, key))\n .map(key => {\n let value;\n try {\n value = object[key];\n // Ignore builtin object types.\n if (value instanceof RegExp) return;\n } catch {\n // Ignore any values that hold exceptions, or otherwise throw on access -- we won't be\n // able to check them anyway.\n return;\n }\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n const computed =\n !descriptor.enumerable && descriptor.set && !Object.hasOwn(object, '$_' + key);\n return {key, value, descriptor, computed};\n })\n .compact()\n .value();\n\n for (const {key, value, descriptor, computed} of targetProperties) {\n if (!(_.isArray(object) && (/^\\d+$/.test(key) || key === 'length'))) {\n if ('value' in descriptor || !descriptor.get) {\n throw new Error(\n `Value at ${path}, contained in a Firetruss object, has a rogue property: ${key}`);\n }\n if (object.$truss && descriptor.enumerable) {\n try {\n object[key] = value;\n throw new Error(\n `Firetruss object at ${path} has an enumerable non-Firebase property: ${key}`);\n } catch (e) {\n if (e.trussCode !== 'firebase_overwrite') throw e;\n }\n }\n }\n if (_.isObject(value)) {\n if (!checkedObjects.has(value) && !Object.isSealed(value) &&\n !(_.isFunction(value) || _.isElement(value) || value instanceof Promise)) {\n checkedObjects.add(value);\n this.checkVueObject(value, joinPath(path, escapeKey(key)), checkedObjects);\n }\n if (!computed && !value.$truss) objectPropertyValues.set(value, key);\n }\n }\n\n for (const {key, value, computed} of targetProperties) {\n if (computed && _.isObject(value) && !value.$truss) {\n const otherKey = objectPropertyValues.get(value);\n if (otherKey) {\n throw new Error(\n `Firetruss object at ${path} has properties ${key} ` +\n `and ${otherKey} with an aliased value`);\n }\n }\n }\n }\n}\n\n\nfunction computeValue(prop, propertyStats) {\n /* eslint-disable no-invalid-this */\n if (this.$destroyed) return;\n // Touch this object, since a failed access to a missing property doesn't get captured as a\n // dependency.\n this.$$touchThis();\n\n const oldPropertyFrozen = currentPropertyFrozen;\n currentPropertyFrozen = false;\n const startTime = performance.now();\n let value;\n try {\n try {\n value = prop.get.call(this);\n } catch (e) {\n value = new ErrorWrapper(e);\n } finally {\n propertyStats.computeTime += performance.now() - startTime;\n propertyStats.numRecomputes += 1;\n }\n if (currentPropertyFrozen) value = new FrozenWrapper(value);\n return value;\n } finally {\n currentPropertyFrozen = oldPropertyFrozen;\n }\n /* eslint-enable no-invalid-this */\n}\n\nfunction wrapConnections(object, connections) {\n if (!connections || connections instanceof Handle) return connections;\n if (_.isFunction(connections)) {\n const fn = function() {\n /* eslint-disable no-invalid-this */\n object.$$touchThis();\n return wrapConnections(object, connections.call(this));\n /* eslint-enable no-invalid-this */\n };\n return fn;\n }\n return _.mapValues(connections, descriptor => wrapConnections(object, descriptor));\n}\n\nfunction freeze(object) {\n if (_.isNil(object) || !_.isObject(object) || Object.isFrozen(object) || object.$truss) {\n return object;\n }\n object = Object.freeze(object);\n if (_.isArray(object)) return _.map(object, value => freeze(value));\n return _.mapValues(object, value => freeze(value));\n}\n","import _ from 'lodash';\nimport Vue from 'vue';\nimport {splitPath} from './utils/paths.js';\n\n\nclass QueryHandler {\n constructor(coupler, query) {\n this._coupler = coupler;\n this._query = query;\n this._listeners = [];\n this._keys = [];\n this._coupler._url.pathname = encodeURI(query.path);\n this._url = this._coupler._url.toString();\n this._segments = splitPath(query.path, true);\n this._listening = false;\n this.ready = false;\n }\n\n attach(operation, keysCallback) {\n this._listen();\n this._listeners.push({operation, keysCallback});\n if (this.ready) {\n this._coupler._dispatcher.markReady(operation);\n if (keysCallback) keysCallback(this._keys);\n }\n }\n\n detach(operation) {\n const k = _.findIndex(this._listeners, {operation});\n if (k >= 0) this._listeners.splice(k, 1);\n return this._listeners.length;\n }\n\n _listen() {\n if (this._listening) return;\n this._coupler._bridge.on(\n this._query.toString(), this._url, this._query.constraints, 'value',\n this._handleSnapshot, this._handleError, this, {sync: true});\n this._listening = true;\n }\n\n destroy() {\n this._coupler._bridge.off(\n this._query.toString(), this._url, this._query.constraints, 'value', this._handleSnapshot,\n this);\n this._listening = false;\n this.ready = false;\n for (const key of this._keys) {\n this._coupler._decoupleSegments(this._segments.concat(key));\n }\n }\n\n _handleSnapshot(snap) {\n this._coupler._queueSnapshotCallback(() => {\n // Order is important here: first couple any new subpaths so _handleSnapshot will update the\n // tree, then tell the client to update its keys, pulling values from the tree.\n if (!this._listeners.length || !this._listening) return;\n const updatedKeys = this._updateKeysAndApplySnapshot(snap);\n if (!this.ready) {\n this.ready = true;\n for (const listener of this._listeners) {\n this._coupler._dispatcher.markReady(listener.operation);\n }\n }\n if (updatedKeys) {\n for (const listener of this._listeners) {\n if (listener.keysCallback) listener.keysCallback(updatedKeys);\n }\n }\n });\n }\n\n _updateKeysAndApplySnapshot(snap) {\n let updatedKeys;\n if (snap.path === this._query.path) {\n updatedKeys = _.keys(snap.value);\n updatedKeys.sort();\n if (_.isEqual(this._keys, updatedKeys)) {\n updatedKeys = null;\n } else {\n for (const key of _.difference(updatedKeys, this._keys)) {\n this._coupler._coupleSegments(this._segments.concat(key));\n }\n for (const key of _.difference(this._keys, updatedKeys)) {\n // Decoupling a segment will prune the tree at that location if there are no other\n // listeners.\n this._coupler._decoupleSegments(this._segments.concat(key));\n }\n this._keys = updatedKeys;\n }\n // The snapshot may be partial, so create synthetic snapshots for subpaths and apply those to\n // update / insert values. (Deleted ones got pruned above.)\n if (snap.exists) {\n const rootValue = snap.value;\n const rootPath = snap.path;\n for (const key of this._keys) {\n snap._path = rootPath + '/' + key;\n snap._key = undefined;\n snap._value = rootValue[key];\n this._coupler._applySnapshot(snap);\n }\n // Restore original properties, just in case.\n snap._path = rootPath;\n snap._key = undefined;\n snap._value = rootValue;\n }\n } else if (snap.path.replace(/\\/[^/]+/, '') === this._query.path) {\n const hasKey = _.includes(this._keys, snap.key);\n if (snap.value) {\n if (!hasKey) {\n this._coupler._coupleSegments(this._segments.concat(snap.key));\n this._keys.push(snap.key);\n this._keys.sort();\n updatedKeys = this._keys;\n }\n } else if (hasKey) {\n this._coupler._decoupleSegments(this._segments.concat(snap.key));\n _.pull(this._keys, snap.key);\n this._keys.sort();\n updatedKeys = this._keys;\n }\n // A snapshot under the query's level is guaranteed to be a full snapshot, so we can apply it\n // directly.\n this._coupler._applySnapshot(snap);\n }\n return updatedKeys;\n }\n\n _handleError(error) {\n if (!this._listeners.length || !this._listening) return;\n this._listening = false;\n this.ready = false;\n for (const key of this._keys) this._coupler._decoupleSegments(this._segments.concat(key));\n this._keys = [];\n Promise.all(_.map(this._listeners, listener => {\n this._coupler._dispatcher.clearReady(listener.operation);\n return this._coupler._dispatcher.retry(listener.operation, error).catch(e => {\n listener.operation._disconnect(e);\n return false;\n });\n })).then(results => {\n if (_.some(results)) {\n if (this._listeners.length) this._listen();\n } else {\n for (const listener of this._listeners) listener.operation._disconnect(error);\n }\n });\n }\n}\n\n\nclass Node {\n constructor(coupler, path, parent) {\n this._coupler = coupler;\n this.path = path;\n this.parent = parent;\n this._coupler._url.pathname = encodeURI(path);\n this.url = this._coupler._url.toString();\n this.operations = [];\n this.queryCount = 0;\n this.listening = false;\n this.ready = false;\n this.children = {};\n }\n\n get active() {\n return this.count || this.queryCount;\n }\n\n get count() {\n return this.operations.length;\n }\n\n listen(skip) {\n if (!skip && this.count) {\n if (this.listening) return;\n _.forEach(this.operations, op => {this._coupler._dispatcher.clearReady(op);});\n this._coupler._bridge.on(\n this.url, this.url, null, 'value', this._handleSnapshot, this._handleError, this,\n {sync: true});\n this.listening = true;\n } else {\n _.forEach(this.children, child => {child.listen();});\n }\n }\n\n unlisten(skip) {\n if (!skip && this.listening) {\n this._coupler._bridge.off(this.url, this.url, null, 'value', this._handleSnapshot, this);\n this.listening = false;\n this._forAllDescendants(node => {\n if (node.listening) return false;\n if (node.ready) {\n node.ready = false;\n }\n });\n } else {\n _.forEach(this.children, child => {child.unlisten();});\n }\n }\n\n _handleSnapshot(snap) {\n this._coupler._queueSnapshotCallback(() => {\n if (!this.listening || !this._coupler.isTrunkCoupled(snap.path)) return;\n this._coupler._applySnapshot(snap);\n if (!this.ready && snap.path === this.path) {\n this.ready = true;\n this.unlisten(true);\n this._forAllDescendants(node => {\n for (const op of node.operations) this._coupler._dispatcher.markReady(op);\n });\n }\n });\n }\n\n _handleError(error) {\n if (!this.count || !this.listening) return;\n this.listening = false;\n this._forAllDescendants(node => {\n if (node.listening) return false;\n if (node.ready) {\n node.ready = false;\n }\n for (const op of node.operations) this._coupler._dispatcher.clearReady(op);\n });\n // Immediately prune all data below this node. We don't want to decouple it since the operation\n // may want to retry. We also don't want to look for other coupled paths below (that may not be\n // subject to the permission denied error) since they're not listening and the data would get\n // stale. If this node doesn't retry and gets decoupled we'll automatically start listening on\n // descendants and (try to) refill the subtrees.\n this._coupler._prunePath(this.path);\n return Promise.all(_.map(this.operations, op => {\n return this._coupler._dispatcher.retry(op, error).catch(e => {\n op._disconnect(e);\n return false;\n });\n })).then(results => {\n if (_.some(results)) {\n if (this.count) this.listen();\n } else {\n for (const op of this.operations) op._disconnect(error);\n // Pulling all the operations will automatically get us listening on descendants.\n }\n });\n }\n\n _forAllDescendants(iteratee) {\n if (iteratee(this) === false) return;\n _.forEach(this.children, child => child._forAllDescendants(iteratee));\n }\n\n collectCoupledDescendantPaths(paths) {\n if (!paths) paths = {};\n paths[this.path] = this.active;\n if (!this.active) {\n _.forEach(this.children, child => {child.collectCoupledDescendantPaths(paths);});\n }\n return paths;\n }\n}\n\n\nexport default class Coupler {\n constructor(rootUrl, bridge, dispatcher, applySnapshot, prunePath) {\n this._url = new URL(rootUrl);\n this._bridge = bridge;\n this._dispatcher = dispatcher;\n this._applySnapshot = applySnapshot;\n this._pendingSnapshotCallbacks = [];\n this._throttled = {processPendingSnapshots: this._processPendingSnapshots};\n this._prunePath = prunePath;\n this._vue = new Vue({data: {root: undefined, queryHandlers: {}}});\n // Prevent Vue from instrumenting rendering since there's actually nothing to render, and the\n // warnings cause false positives from Lodash primitives when running tests.\n this._vue._renderProxy = this._vue;\n this._nodeIndex = Object.create(null);\n Object.freeze(this);\n // Set root node after freezing Coupler, otherwise it gets vue-ified too.\n this._vue.$data.root = new Node(this, '/');\n this._nodeIndex['/'] = this._root;\n }\n\n get _root() {\n return this._vue.$data.root;\n }\n\n get _queryHandlers() {\n return this._vue.$data.queryHandlers;\n }\n\n destroy() {\n _.forEach(this._queryHandlers, queryHandler => {queryHandler.destroy();});\n this._root.unlisten();\n this._vue.$destroy();\n }\n\n couple(path, operation) {\n return this._coupleSegments(splitPath(path, true), operation);\n }\n\n _coupleSegments(segments, operation) {\n let node;\n let superseded = !operation;\n let ready = false;\n for (const segment of segments) {\n let child = segment ? node.children && node.children[segment] : this._root;\n if (!child) {\n child = new Node(this, `${node.path === '/' ? '' : node.path}/${segment}`, node);\n Vue.set(node.children, segment, child);\n this._nodeIndex[child.path] = child;\n }\n superseded = superseded || child.listening;\n ready = ready || child.ready;\n node = child;\n }\n if (operation) {\n node.operations.push(operation);\n } else {\n node.queryCount++;\n }\n if (superseded) {\n if (operation && ready) this._dispatcher.markReady(operation);\n } else {\n node.listen(); // node will call unlisten() on descendants when ready\n }\n }\n\n decouple(path, operation) {\n return this._decoupleSegments(splitPath(path, true), operation);\n }\n\n _decoupleSegments(segments, operation) {\n const ancestors = [];\n let node;\n for (const segment of segments) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (!node) break;\n ancestors.push(node);\n }\n if (!node || !(operation ? node.count : node.queryCount)) {\n throw new Error(`Path not coupled: ${segments.join('/') || '/'}`);\n }\n if (operation) {\n _.pull(node.operations, operation);\n } else {\n node.queryCount--;\n }\n if (operation && !node.count) {\n // Ideally, we wouldn't resync the full values here since we probably already have the current\n // value for all children. But making sure that's true is tricky in an async system (what if\n // the node's value changes and the update crosses the 'off' call in transit?) and this\n // situation should be sufficiently rare that the optimization is probably not worth it right\n // now.\n node.listen();\n if (node.listening) node.unlisten();\n }\n if (!node.active) {\n for (let i = ancestors.length - 1; i > 0; i--) {\n node = ancestors[i];\n if (node === this._root || node.active || !_.isEmpty(node.children)) break;\n Vue.delete(ancestors[i - 1].children, segments[i]);\n node.ready = undefined;\n delete this._nodeIndex[node.path];\n }\n const path = segments.join('/') || '/';\n this._prunePath(path, this.findCoupledDescendantPaths(path));\n }\n }\n\n subscribe(query, operation, keysCallback) {\n let queryHandler = this._queryHandlers[query.toString()];\n if (!queryHandler) {\n queryHandler = new QueryHandler(this, query);\n Vue.set(this._queryHandlers, query.toString(), queryHandler);\n }\n queryHandler.attach(operation, keysCallback);\n }\n\n unsubscribe(query, operation) {\n const queryHandler = this._queryHandlers[query.toString()];\n if (queryHandler && !queryHandler.detach(operation)) {\n queryHandler.destroy();\n Vue.delete(this._queryHandlers, query.toString());\n }\n }\n\n // Return whether the node at path or any ancestors are coupled.\n isTrunkCoupled(path) {\n const segments = splitPath(path, true);\n let node;\n for (const segment of segments) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (!node) return false;\n if (node.active) return true;\n }\n return false;\n }\n\n findCoupledDescendantPaths(path) {\n let node;\n for (const segment of splitPath(path, true)) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (node && node.active) return {[path]: node.active};\n if (!node) break;\n }\n return node && node.collectCoupledDescendantPaths();\n }\n\n isSubtreeReady(path) {\n let node, childSegment;\n function extractChildSegment(match) {\n childSegment = match.slice(1);\n return '';\n }\n while (!(node = this._nodeIndex[path])) {\n path = path.replace(/\\/[^/]*$/, extractChildSegment) || '/';\n }\n if (childSegment) void node.children; // state an interest in the closest ancestor's children\n while (node) {\n if (node.ready) return true;\n node = node.parent;\n }\n return false;\n }\n\n isQueryReady(query) {\n const queryHandler = this._queryHandlers[query.toString()];\n return queryHandler && queryHandler.ready;\n }\n\n _queueSnapshotCallback(callback) {\n this._pendingSnapshotCallbacks.push(callback);\n this._throttled.processPendingSnapshots.call(this);\n }\n\n _processPendingSnapshots() {\n for (const callback of this._pendingSnapshotCallbacks) callback();\n // Property is frozen, so we need to splice to empty the array.\n this._pendingSnapshotCallbacks.splice(0, Infinity);\n }\n\n throttleSnapshots(delay) {\n if (delay) {\n this._throttled.processPendingSnapshots =\n _.debounce(_.throttle(this._processPendingSnapshots, delay));\n } else {\n this._throttled.processPendingSnapshots = this._processPendingSnapshots;\n }\n }\n}\n","import Coupler from './Coupler.js';\nimport Modeler from './Modeler.js';\nimport Reference from './Reference.js';\nimport {escapeKey, escapeKeys, unescapeKey, joinPath, splitPath} from './utils/paths.js';\nimport {wrapPromiseCallback, promiseFinally} from './utils/promises.js';\nimport {SERVER_TIMESTAMP} from './utils/utils.js';\n\nimport _ from 'lodash';\nimport Vue from 'vue';\n\n\nclass Transaction {\n constructor(ref) {\n this._ref = ref;\n this._outcome = undefined;\n this._values = undefined;\n }\n\n get currentValue() {return this._ref.value;}\n get outcome() {return this._outcome;}\n get values() {return this._values;}\n\n _setOutcome(value) {\n if (this._outcome) throw new Error('Transaction already resolved with ' + this._outcome);\n this._outcome = value;\n }\n\n abort() {\n this._setOutcome('abort');\n }\n\n cancel() {\n this._setOutcome('cancel');\n }\n\n set(value) {\n if (value === undefined) throw new Error('Invalid argument: undefined');\n this._setOutcome('set');\n this._values = {'': value};\n }\n\n update(values) {\n if (values === undefined) throw new Error('Invalid argument: undefined');\n if (_.isEmpty(values)) return this.cancel();\n this._setOutcome('update');\n this._values = values;\n }\n}\n\n\nexport default class Tree {\n constructor(truss, rootUrl, bridge, dispatcher) {\n this._truss = truss;\n this._url = new URL(rootUrl);\n this._bridge = bridge;\n this._dispatcher = dispatcher;\n this._firebasePropertyEditAllowed = false;\n this._writeSerial = 0;\n this._localWrites = {};\n this._localWriteTimestamp = null;\n this._initialized = false;\n this._vue = new Vue({data: {$root: undefined}});\n this._modeler = new Modeler(this._vue, truss.constructor.VERSION === 'dev');\n this._coupler = new Coupler(\n rootUrl, bridge, dispatcher, this._integrateSnapshot.bind(this), this._prune.bind(this));\n Object.seal(this);\n // Call this.init(classes) to complete initialization; we need two phases so that truss can bind\n // the tree into its own accessors prior to defining computed functions, which may try to\n // access the tree root via truss.\n }\n\n get root() {\n if (!this._vue.$data.$root) {\n this._vue.$data.$root = this._createObject('/');\n this._fixObject(this._vue.$data.$root);\n this._completeCreateObject(this._vue.$data.$root);\n }\n return this._vue.$data.$root;\n }\n\n get truss() {\n return this._truss;\n }\n\n init(classes) {\n if (this._initialized) {\n throw new Error('Data objects already created, too late to mount classes');\n }\n this._initialized = true;\n this._modeler.init(classes, !this._vue.$data.$root);\n const createdObjects = [];\n this._plantPlaceholders(this.root, '/', undefined, createdObjects);\n for (const object of createdObjects) this._completeCreateObject(object);\n }\n\n destroy() {\n this._coupler.destroy();\n if (this._modeler) this._modeler.destroy();\n this._vue.$destroy();\n }\n\n connectReference(ref, method) {\n this._checkHandle(ref);\n const operation = this._dispatcher.createOperation('read', method, ref);\n operation._disconnect = this._disconnectReference.bind(this, ref, operation, undefined);\n this._dispatcher.begin(operation).then(() => {\n if (operation.running && !operation._disconnected) {\n this._coupler.couple(ref.path, operation);\n operation._coupled = true;\n }\n }).catch(_.noop); // ignore exception, let onFailure handlers deal with it\n return operation._disconnect;\n }\n\n _disconnectReference(ref, operation, unwatch, error) {\n if (operation._disconnected) return;\n operation._disconnected = true;\n if (unwatch) unwatch();\n if (operation._coupled) {\n this._coupler.decouple(ref.path, operation); // will call back to _prune if necessary\n operation._coupled = false;\n }\n this._dispatcher.end(operation, error).catch(_.noop);\n }\n\n isReferenceReady(ref) {\n this._checkHandle(ref);\n return this._coupler.isSubtreeReady(ref.path);\n }\n\n connectQuery(query, keysCallback, method) {\n this._checkHandle(query);\n const operation = this._dispatcher.createOperation('read', method, query);\n operation._disconnect = this._disconnectQuery.bind(this, query, operation);\n this._dispatcher.begin(operation).then(() => {\n if (operation.running && !operation._disconnected) {\n this._coupler.subscribe(query, operation, keysCallback);\n operation._coupled = true;\n }\n }).catch(_.noop); // ignore exception, let onFailure handlers deal with it\n return operation._disconnect;\n }\n\n _disconnectQuery(query, operation, error) {\n if (operation._disconnected) return;\n operation._disconnected = true;\n if (operation._coupled) {\n this._coupler.unsubscribe(query, operation); // will call back to _prune if necessary\n operation._coupled = false;\n }\n this._dispatcher.end(operation, error).catch(_.noop);\n }\n\n isQueryReady(query) {\n return this._coupler.isQueryReady(query);\n }\n\n _checkHandle(handle) {\n if (!handle.belongsTo(this._truss)) {\n throw new Error('Reference belongs to another Truss instance');\n }\n }\n\n throttleRemoteDataUpdates(delay) {\n this._coupler.throttleSnapshots(delay);\n }\n\n update(ref, method, values) {\n values = _.mapValues(values, value => escapeKeys(value));\n const numValues = _.size(values);\n if (!numValues) return Promise.resolve();\n if (method === 'update' || method === 'override') {\n checkUpdateHasOnlyDescendantsWithNoOverlap(ref.path, values);\n }\n if (this._applyLocalWrite(values, method === 'override')) return Promise.resolve();\n const pathPrefix = extractCommonPathPrefix(values);\n relativizePaths(pathPrefix, values);\n if (pathPrefix !== ref.path) ref = new Reference(ref._tree, pathPrefix, ref._annotations);\n this._url.pathname = encodeURI(pathPrefix);\n const url = this._url.toString();\n const writeSerial = this._writeSerial;\n const set = numValues === 1;\n const operand = set ? values[''] : values;\n return this._dispatcher.execute('write', set ? 'set' : 'update', ref, operand, () => {\n const promise = this._bridge[set ? 'set' : 'update'](url, operand, writeSerial);\n return promise.catch(e => {\n if (!e.immediateFailure) return Promise.reject(e);\n return promiseFinally(this._repair(ref, values), () => Promise.reject(e));\n });\n });\n }\n\n commit(ref, updateFunction) {\n let tries = 0, sameValueCount = 0;\n const attemptCounts = {};\n updateFunction = wrapPromiseCallback(updateFunction);\n\n const attemptTransaction = counter => {\n if (tries++ >= 25) {\n const error = new Error('Transaction needed too many retries, giving up');\n try {\n _.assign(error, {attemptCounts, sameValueCount});\n } catch {\n // ignore\n }\n return Promise.reject(error);\n }\n counter = counter || 'initial';\n attemptCounts[counter] = (attemptCounts[counter] || 0) + 1;\n const txn = new Transaction(ref);\n let oldValue;\n // Ensure that Vue's watcher queue gets emptied and computed properties are up to date before\n // running the updateFunction.\n return Vue.nextTick().then(() => {\n const newOldValue = toFirebaseJson(txn.currentValue);\n if (_.isEqual(newOldValue, oldValue)) sameValueCount += 1;\n oldValue = newOldValue;\n return updateFunction(txn);\n }).then(() => {\n if (!_.isEqual(oldValue, toFirebaseJson(txn.currentValue))) {\n return attemptTransaction('changed');\n }\n if (txn.outcome === 'abort') return txn; // early return to save time\n const values = _.mapValues(txn.values, value => escapeKeys(value));\n switch (txn.outcome) {\n case 'cancel':\n break;\n case 'set':\n if (this._applyLocalWrite({[ref.path]: values['']})) return Promise.resolve();\n break;\n case 'update':\n checkUpdateHasOnlyDescendantsWithNoOverlap(ref.path, values);\n if (this._applyLocalWrite(values)) return Promise.resolve();\n relativizePaths(ref.path, values);\n break;\n default:\n throw new Error('Invalid transaction outcome: ' + (txn.outcome || 'none'));\n }\n this._url.pathname = encodeURI(ref.path);\n return this._bridge.transaction(\n this._url.toString(), oldValue, values, this._writeSerial\n ).then(result => {\n _.forEach(result.snapshots, snapshot => this._integrateSnapshot(snapshot));\n return result.committed ? txn : attemptTransaction('stale');\n }, e => {\n if (e.immediateFailure && (txn.outcome === 'set' || txn.outcome === 'update')) {\n return promiseFinally(this._repair(ref, values), () => Promise.reject(e));\n }\n return Promise.reject(e);\n });\n });\n };\n\n return this._truss.peek(ref, () => {\n return this._dispatcher.execute('write', 'commit', ref, undefined, attemptTransaction);\n });\n }\n\n _repair(ref, values) {\n // If a write fails early -- that is, before it gets applied to the Firebase client's local\n // tree -- then we need to repair our own local tree manually since Firebase won't send events\n // to unwind the change. This should be very rare since it's always due to a developer mistake\n // so we don't need to be particularly efficient.\n const basePath = ref.path;\n const paths = _(values).keys().flatMap(key => {\n let path = basePath;\n if (key) path = joinPath(path, key);\n return _.keys(this._coupler.findCoupledDescendantPaths(path));\n }).value();\n return Promise.all(_.map(paths, path => {\n this._url.pathname = encodeURI(path);\n return this._bridge.once(this._url.toString()).then(snap => {\n this._integrateSnapshot(snap);\n });\n }));\n }\n\n _applyLocalWrite(values, override) {\n // TODO: correctly apply local writes that impact queries. Currently, a local write will update\n // any objects currently selected by a query, but won't add or remove results.\n this._writeSerial++;\n this._localWriteTimestamp = this._truss.now;\n const createdObjects = [];\n let numLocal = 0;\n _.forEach(values, (value, path) => {\n const local = this._modeler.isLocal(path, value);\n if (local) numLocal++;\n const coupledDescendantPaths =\n local ? {[path]: true} : this._coupler.findCoupledDescendantPaths(path);\n if (_.isEmpty(coupledDescendantPaths)) return;\n const offset = (path === '/' ? 0 : path.length) + 1;\n for (const descendantPath in coupledDescendantPaths) {\n const subPath = descendantPath.slice(offset);\n let subValue = value;\n if (subPath && value !== null && value !== undefined) {\n for (const segment of splitPath(subPath)) {\n subValue = subValue.$data[segment];\n if (subValue === undefined) break;\n }\n }\n if (_.isNil(subValue)) {\n this._prune(descendantPath);\n } else {\n const key = _.last(splitPath(descendantPath));\n this._plantValue(\n descendantPath, key, subValue,\n this._scaffoldAncestors(descendantPath, false, createdObjects), false, override, local,\n createdObjects\n );\n }\n if (!override && !local) this._localWrites[descendantPath] = this._writeSerial;\n }\n });\n for (const object of createdObjects) this._completeCreateObject(object);\n if (numLocal && numLocal < _.size(values)) {\n throw new Error('Write on a mix of local and remote tree paths.');\n }\n return override || !!numLocal;\n }\n\n /**\n * Creates a Truss object and sets all its basic properties: path segment variables, user-defined\n * properties, and computed properties. The latter two will be enumerable so that Vue will pick\n * them up and make the reactive, so you should call _completeCreateObject once it's done so and\n * before any Firebase properties are added.\n */\n _createObject(path, parent) {\n if (!this._initialized && path !== '/') this.init();\n const properties = {\n // We want Vue to wrap this; we'll make it non-enumerable in _fixObject.\n $parent: {value: parent, configurable: true, enumerable: true},\n $path: {value: path}\n };\n if (path === '/') properties.$truss = {value: this._truss};\n\n const object = this._modeler.createObject(path, properties);\n this._modeler.emitLifecycleHook(object, 'beforeCreate');\n this._defineObjectProperties(object, properties);\n return object;\n }\n\n _defineObjectProperties(object, properties) {\n const observer = object.__ob__;\n Object.defineProperties(object, properties);\n if (!observer) return;\n\n let addedReactiveProperties = false;\n for (const key of _.keys(properties)) {\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n if (!descriptor.configurable || !descriptor.enumerable) continue;\n Vue.util.defineReactive(object, key);\n addedReactiveProperties = true;\n }\n if (addedReactiveProperties) observer.dep.notify();\n }\n\n // To be called on the result of _createObject after it's been inserted into the _vue hierarchy\n // and Vue has had a chance to initialize it.\n _fixObject(object) {\n for (const name of Object.getOwnPropertyNames(object)) {\n const descriptor = Object.getOwnPropertyDescriptor(object, name);\n if (descriptor.configurable && descriptor.enumerable) {\n descriptor.enumerable = false;\n if (_.startsWith(name, '$')) descriptor.configurable = false;\n Object.defineProperty(object, name, descriptor);\n }\n }\n }\n\n // To be called on the result of _createObject after _fixObject, and after any additional Firebase\n // properties have been set, to run initializers.\n _completeCreateObject(object) {\n this._modeler.emitLifecycleHook(object, 'created');\n }\n\n _destroyObject(object) {\n if (!(object && object.$truss) || object.$destroyed) return;\n this._modeler.emitLifecycleHook(object, 'beforeDestroy');\n this._modeler.destroyObject(object);\n // Normally we'd only destroy enumerable children, which are the Firebase properties. However,\n // clients have the option of creating hidden placeholders, so we need to scan non-enumerable\n // properties as well. To distinguish such placeholders from the myriad other non-enumerable\n // properties (that lead all over tree, e.g. $parent), we check that the property's parent is\n // ourselves before destroying.\n for (const key of Object.getOwnPropertyNames(object.$data)) {\n const child = object.$data[key];\n if (child && child.$parent === object) this._destroyObject(child);\n }\n this._modeler.emitLifecycleHook(object, 'destroyed');\n }\n\n _integrateSnapshot(snap) {\n _.forEach(this._localWrites, (writeSerial, path) => {\n if (snap.writeSerial >= writeSerial) delete this._localWrites[path];\n });\n if (snap.exists) {\n const createdObjects = [];\n const parent = this._scaffoldAncestors(snap.path, true, createdObjects);\n if (parent) {\n this._plantValue(\n snap.path, snap.key, snap.value, parent, true, false, false, createdObjects);\n }\n for (const object of createdObjects) this._completeCreateObject(object);\n } else {\n this._prune(snap.path, null, true);\n }\n }\n\n _scaffoldAncestors(path, remoteWrite, createdObjects) {\n let object;\n const segments = _.dropRight(splitPath(path, true));\n let ancestorPath = '/';\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const key = unescapeKey(segment);\n let child = segment ? object.$data[key] : this.root;\n if (segment) ancestorPath += (ancestorPath === '/' ? '' : '/') + segment;\n if (child) {\n if (remoteWrite && this._localWrites[ancestorPath]) return;\n } else {\n child = this._plantValue(\n ancestorPath, key, {}, object, remoteWrite, false, false, createdObjects);\n if (!child) return;\n }\n object = child;\n }\n return object;\n }\n\n _plantValue(path, key, value, parent, remoteWrite, override, local, createdObjects) {\n if (remoteWrite && _.isNil(value)) {\n throw new Error(`Snapshot includes invalid value at ${path}: ${value}`);\n }\n if (remoteWrite && this._localWrites[path || '/']) return;\n if (_.isEqual(value, SERVER_TIMESTAMP)) value = this._localWriteTimestamp;\n let object = parent.$data[key];\n if (!_.isArray(value) && !(local ? _.isPlainObject(value) : _.isObject(value))) {\n this._destroyObject(object);\n if (!local && _.isNil(value)) {\n this._deleteFirebaseProperty(parent, key);\n } else {\n this._setFirebaseProperty(parent, key, value);\n }\n return;\n }\n let objectCreated = false;\n if (!_.isObject(object)) {\n // Need to pre-set the property, so that if the child object attempts to watch any of its own\n // properties while being created the $$touchThis method has something to add a dependency on\n // as the object's own properties won't be made reactive until *after* it's been created.\n this._setFirebaseProperty(parent, key, null);\n object = this._createObject(path, parent);\n this._setFirebaseProperty(parent, key, object, object.$hidden);\n this._fixObject(object);\n createdObjects.push(object);\n objectCreated = true;\n }\n if (override) {\n Object.defineProperty(object, '$overridden', {get: _.constant(true), configurable: true});\n } else if (object.$overridden) {\n delete object.$overridden;\n }\n // Plant hidden placeholders first, so their computed watchers will have a similar precedence to\n // the parent object, and the parent object's other children will get computed first. This can\n // optimize updates when parts of a complex model are broken out into hidden sub-models, and\n // shouldn't risk being overwritten by actual Firebase data since that will rarely (never?) be\n // hidden.\n if (objectCreated) this._plantPlaceholders(object, path, true, createdObjects);\n _.forEach(value, (item, escapedChildKey) => {\n this._plantValue(\n joinPath(path, escapedChildKey), unescapeKey(escapedChildKey), item, object, remoteWrite,\n override, local, createdObjects\n );\n });\n if (objectCreated) {\n this._plantPlaceholders(object, path, false, createdObjects);\n } else {\n _.forEach(object.$data, (item, childKey) => {\n const escapedChildKey = escapeKey(childKey);\n if (!Object.hasOwn(value, escapedChildKey)) {\n this._prune(joinPath(path, escapedChildKey), null, remoteWrite);\n }\n });\n }\n return object;\n }\n\n _plantPlaceholders(object, path, hidden, createdObjects) {\n this._modeler.forEachPlaceholderChild(path, mount => {\n if (hidden !== undefined && hidden !== !!mount.hidden) return;\n const key = unescapeKey(mount.escapedKey);\n if (!Object.hasOwn(object.$data, key)) {\n this._plantValue(\n joinPath(path, mount.escapedKey), key, mount.placeholder, object, false, false, false,\n createdObjects);\n }\n });\n }\n\n _prune(path, lockedDescendantPaths, remoteWrite) {\n lockedDescendantPaths = lockedDescendantPaths || {};\n const object = this.getObject(path);\n if (object === undefined) return;\n if (remoteWrite && this._avoidLocalWritePaths(path, lockedDescendantPaths)) return;\n if (!(_.isEmpty(lockedDescendantPaths) && this._pruneAncestors(path, object)) &&\n _.isObject(object)) {\n // The target object is a placeholder, and all ancestors are placeholders or otherwise needed\n // as well, so we can't delete it. Instead, dive into its descendants to delete what we can.\n this._pruneDescendants(object, lockedDescendantPaths);\n }\n }\n\n _avoidLocalWritePaths(path, lockedDescendantPaths) {\n for (const localWritePath in this._localWrites) {\n if (!Object.hasOwn(this._localWrites, localWritePath)) continue;\n if (path === localWritePath || localWritePath === '/' ||\n _.startsWith(path, localWritePath + '/')) return true;\n if (path === '/' || _.startsWith(localWritePath, path + '/')) {\n const segments = splitPath(localWritePath, true);\n for (let i = segments.length; i > 0; i--) {\n const subPath = segments.slice(0, i).join('/');\n const active = i === segments.length;\n if (lockedDescendantPaths[subPath] || lockedDescendantPaths[subPath] === active) break;\n lockedDescendantPaths[subPath] = active;\n if (subPath === path) break;\n }\n }\n }\n }\n\n _pruneAncestors(targetPath, targetObject) {\n // Destroy the child (unless it's a placeholder that's still needed) and any ancestors that\n // are no longer needed to keep this child rooted, and have no other reason to exist.\n let deleted = false;\n let object = targetObject;\n // The target object may be a primitive, in which case it won't have $path, $parent and $key\n // properties. In that case, use the target path to figure those out instead. Note that all\n // ancestors of the target object will necessarily not be primitives and will have those\n // properties.\n let targetKey;\n const targetParentPath = targetPath.replace(/\\/[^/]+$/, match => {\n targetKey = unescapeKey(match.slice(1));\n return '';\n });\n while (object !== undefined && object !== this.root) {\n const parent =\n object && object.$parent || object === targetObject && this.getObject(targetParentPath);\n if (!this._modeler.isPlaceholder(object && object.$path || targetPath)) {\n const ghostObjects = deleted ? null : [targetObject];\n if (!this._holdsConcreteData(object, ghostObjects)) {\n deleted = true;\n this._deleteFirebaseProperty(\n parent, object && object.$key || object === targetObject && targetKey);\n }\n }\n object = parent;\n }\n return deleted;\n }\n\n _holdsConcreteData(object, ghostObjects) {\n if (_.isNil(object)) return false;\n if (ghostObjects && _.includes(ghostObjects, object)) return false;\n if (!_.isObject(object) || !object.$truss) return true;\n return _.some(object.$data, value => this._holdsConcreteData(value, ghostObjects));\n }\n\n _pruneDescendants(object, lockedDescendantPaths) {\n if (lockedDescendantPaths[object.$path]) return true;\n if (object.$overridden) delete object.$overridden;\n let coupledDescendantFound = false;\n _.forEach(object.$data, (value, key) => {\n let shouldDelete = true;\n let valueLocked;\n if (lockedDescendantPaths[joinPath(object.$path, escapeKey(key))]) {\n shouldDelete = false;\n valueLocked = true;\n } else if (!_.isNil(value) && value.$truss) {\n const placeholder = this._modeler.isPlaceholder(value.$path);\n if (placeholder || _.has(lockedDescendantPaths, value.$path)) {\n valueLocked = this._pruneDescendants(value, lockedDescendantPaths);\n shouldDelete = !placeholder && !valueLocked;\n }\n }\n if (shouldDelete) this._deleteFirebaseProperty(object, key);\n coupledDescendantFound = coupledDescendantFound || valueLocked;\n });\n return coupledDescendantFound;\n }\n\n getObject(path) {\n const segments = splitPath(path);\n let object;\n for (const segment of segments) {\n object = segment ? object.$data[segment] : this.root;\n if (object === undefined) return;\n }\n return object;\n }\n\n _getFirebasePropertyDescriptor(object, data, key) {\n const descriptor = Object.getOwnPropertyDescriptor(data, key);\n if (descriptor) {\n if (!descriptor.enumerable) {\n const child = data[key];\n if (!child || child.$parent !== object) {\n throw new Error(\n `Key conflict between Firebase and instance or computed properties at ` +\n `${object.$path}: ${key}`);\n }\n }\n if (!descriptor.get || !descriptor.set) {\n throw new Error(`Unbound property at ${object.$path}: ${key}`);\n }\n } else if (key in data) {\n throw new Error(\n `Key conflict between Firebase and inherited property at ${object.$path}: ${key}`);\n }\n return descriptor;\n }\n\n _setFirebaseProperty(object, key, value, hidden) {\n const data = Object.hasOwn(object, '$data') ? object.$data : object;\n let descriptor = this._getFirebasePropertyDescriptor(object, data, key);\n if (descriptor) {\n if (hidden) {\n // Redefine property as hidden after it's been created, since we usually don't know whether\n // it should be hidden until too late. This is a one-way deal -- you can't unhide a\n // property later, but that's fine for our purposes.\n Object.defineProperty(data, key, {\n get: descriptor.get, set: descriptor.set, configurable: true, enumerable: false\n });\n }\n if (data[key] === value) return;\n this._firebasePropertyEditAllowed = true;\n data[key] = value;\n this._firebasePropertyEditAllowed = false;\n } else {\n Vue.set(data, key, value);\n descriptor = Object.getOwnPropertyDescriptor(data, key);\n Object.defineProperty(data, key, {\n get: descriptor.get, set: this._overwriteFirebaseProperty.bind(this, descriptor, key),\n configurable: true, enumerable: !hidden\n });\n }\n }\n\n _overwriteFirebaseProperty(descriptor, key, newValue) {\n if (!this._firebasePropertyEditAllowed) {\n const e = new Error(`Firebase data cannot be mutated directly: ${key}`);\n e.trussCode = 'firebase_overwrite';\n throw e;\n }\n descriptor.set.call(this, newValue);\n }\n\n _deleteFirebaseProperty(object, key) {\n const data = Object.hasOwn(object, '$data') ? object.$data : object;\n // Make sure it's actually a Firebase property.\n this._getFirebasePropertyDescriptor(object, data, key);\n this._destroyObject(data[key]);\n Vue.delete(data, key);\n }\n\n checkVueObject(object, path) {\n this._modeler.checkVueObject(object, path);\n }\n}\n\n\nexport function checkUpdateHasOnlyDescendantsWithNoOverlap(rootPath, values) {\n // First, check all paths for correctness and absolutize them, since there could be a mix of\n // absolute paths and relative keys.\n _.forEach(_.keys(values), path => {\n if (path.charAt(0) === '/') {\n if (!(path === rootPath || rootPath === '/' ||\n _.startsWith(path, rootPath + '/') && path.length > rootPath.length + 1)) {\n throw new Error(`Update item is not a descendant of target ref: ${path}`);\n }\n } else {\n if (_.includes(path, '/')) {\n throw new Error(`Update item deep path must be absolute, taken from a reference: ${path}`);\n }\n const absolutePath = joinPath(rootPath, escapeKey(path));\n if (Object.hasOwn(values, absolutePath)) {\n throw new Error(`Update items overlap: ${path} and ${absolutePath}`);\n }\n values[absolutePath] = values[path];\n delete values[path];\n }\n });\n // Then check for overlaps;\n const allPaths = _(values).keys().map(path => joinPath(path, '')).sortBy('length').value();\n _.forEach(values, (value, path) => {\n for (const otherPath of allPaths) {\n if (otherPath.length > path.length) break;\n if (path !== otherPath && _.startsWith(path, otherPath)) {\n throw new Error(`Update items overlap: ${otherPath} and ${path}`);\n }\n }\n });\n}\n\nexport function extractCommonPathPrefix(values) {\n let prefixSegments;\n _.forEach(values, (value, path) => {\n const segments = path === '/' ? [''] : splitPath(path, true);\n if (prefixSegments) {\n let firstMismatchIndex = 0;\n const maxIndex = Math.min(prefixSegments.length, segments.length);\n while (firstMismatchIndex < maxIndex &&\n prefixSegments[firstMismatchIndex] === segments[firstMismatchIndex]) {\n firstMismatchIndex++;\n }\n prefixSegments = prefixSegments.slice(0, firstMismatchIndex);\n if (!prefixSegments.length) return false;\n } else {\n prefixSegments = segments;\n }\n });\n return prefixSegments.length === 1 ? '/' : prefixSegments.join('/');\n}\n\nexport function relativizePaths(rootPath, values) {\n const offset = rootPath === '/' ? 1 : rootPath.length + 1;\n _.forEach(_.keys(values), path => {\n values[path.slice(offset)] = values[path];\n delete values[path];\n });\n}\n\nexport function toFirebaseJson(object) {\n if (!_.isObject(object)) return object;\n const result = {};\n const data = object.$data;\n for (const key in data) {\n if (Object.hasOwn(data, key)) result[escapeKey(key)] = toFirebaseJson(data[key]);\n }\n return result;\n}\n","import _ from 'lodash';\nimport Vue from 'vue';\nimport Bridge from './Bridge.js';\nimport Connector from './Connector.js';\nimport Dispatcher from './Dispatcher.js';\nimport KeyGenerator from './KeyGenerator.js';\nimport MetaTree from './MetaTree.js';\nimport {Handle} from './Reference.js';\nimport {BaseValue} from './Modeler.js';\nimport Tree from './Tree.js';\nimport stats from './utils/stats.js';\nimport {escapeKey, unescapeKey} from './utils/paths.js';\nimport {wrapPromiseCallback, promiseCancel, promiseFinally} from './utils/promises.js';\nimport {SERVER_TIMESTAMP, copyPrototype} from './utils/utils.js';\n\n\nlet bridge, logging;\nconst workerFunctions = {};\n// This version is filled in by the build, don't reformat the line.\nconst VERSION = 'dev';\n\n\nexport default class Truss {\n\n /**\n * Create a new Truss instance, specific to a given datastore. To avoid confusion there should be\n * exactly one Truss per root datastore URL, so in most code this will be a singleton.\n *\n * @param rootUrl {String} The root URL, https://{project}.firebaseio.com.\n */\n constructor(rootUrl) {\n // TODO: allow rootUrl to be a test database object for testing\n if (!bridge) {\n throw new Error('Truss worker not connected, please call Truss.connectWorker first');\n }\n this._rootUrl = rootUrl.replace(/\\/$/, '');\n this._keyGenerator = new KeyGenerator();\n this._dispatcher = new Dispatcher(bridge);\n this._vue = new Vue();\n\n bridge.trackServer(this._rootUrl);\n this._tree = new Tree(this, this._rootUrl, bridge, this._dispatcher);\n this._metaTree = new MetaTree(this._rootUrl, this._tree, bridge, this._dispatcher);\n\n Object.freeze(this);\n }\n\n get info() {return this._metaTree.root;}\n get store() {return this._tree.root;}\n\n /**\n * Mount a set of classes against the datastore structure. Must be called at most once, and\n * cannot be called once any data has been loaded into the tree.\n * @param classes {Array | Object} A list of the classes to map onto the\n * datastore structure. Each class must have a static $trussMount property that is a\n * (wildcarded) unescaped datastore path, or an options object\n * {path: string, placeholder: object}, or an array of either. If the list is an object then\n * the keys serve as default option-less $trussMount paths for classes that don't define an\n * explicit $trussMount.\n */\n mount(classes) {\n this._tree.init(classes);\n }\n\n destroy() {\n this._vue.$destroy();\n this._tree.destroy();\n this._metaTree.destroy();\n }\n\n get now() {return Date.now() + this.info.timeOffset;}\n newKey() {return this._keyGenerator.generateUniqueKey(this.now);}\n\n authenticate(token) {\n return this._metaTree.authenticate(token);\n }\n\n unauthenticate() {\n return this._metaTree.unauthenticate();\n }\n\n intercept(actionType, callbacks) {\n return this._dispatcher.intercept(actionType, callbacks);\n }\n\n // connections are {key: Query | Object | fn() -> (Query | Object)}\n connect(scope, connections) {\n if (!connections) {\n connections = scope;\n scope = undefined;\n }\n if (connections instanceof Handle || _.isFunction(connections)) connections = {_: connections};\n return new Connector(scope, connections, this._tree, 'connect');\n }\n\n // target is Reference, Query, or connection Object like above\n peek(target, callback) {\n callback = wrapPromiseCallback(callback || _.identity);\n let cleanup, cancel;\n const promise = Promise.resolve().then(() => new Promise((resolve, reject) => {\n const scope = {};\n let callbackPromise;\n\n let connector = new Connector(scope, {result: target}, this._tree, 'peek');\n\n let unintercept = this.intercept('peek', {onFailure: op => {\n function match(descriptor) {\n if (!descriptor) return;\n if (descriptor instanceof Handle) return op.target.isEqual(descriptor);\n return _.some(descriptor, value => match(value));\n }\n if (match(connector.at)) {\n reject(op.error);\n cleanup();\n }\n }});\n\n let unobserve = this.observe(() => connector.ready, ready => {\n if (!ready) return;\n unobserve();\n unobserve = null;\n callbackPromise = promiseFinally(\n callback(scope.result), () => {callbackPromise = null; cleanup();}\n ).then(result => {resolve(result);}, error => {reject(error);});\n });\n\n cleanup = () => {\n if (unobserve) {unobserve(); unobserve = null;}\n if (unintercept) {unintercept(); unintercept = null;}\n if (connector) {connector.destroy(); connector = null;}\n if (callbackPromise && callbackPromise.cancel) callbackPromise.cancel();\n };\n\n cancel = () => {\n reject(new Error('Canceled'));\n cleanup();\n };\n }));\n return promiseCancel(promise, cancel);\n }\n\n observe(subjectFn, callbackFn, options) {\n const usePreciseDefaults = _.isObject(options && options.precise);\n let numCallbacks = 0;\n let oldValueClone;\n if (usePreciseDefaults) {\n oldValueClone = options.deep ? _.cloneDeep(options.precise) : _.clone(options.precise);\n }\n\n // This needs to be a `let` instead of a `const` to avoid a \"Cannot access before\n // initialization\" error.\n let unwatch;\n // eslint-disable-next-line prefer-const\n unwatch = this._vue.$watch(subjectFn, (newValue, oldValue) => {\n if (options && options.precise) {\n const newValueClone = usePreciseDefaults ?\n (options.deep ?\n _.defaultsDeep({}, newValue, options.precise) :\n _.defaults({}, newValue, options.precise)) :\n (options.deep ? _.cloneDeep(newValue) : _.clone(newValue));\n if (_.isEqual(newValueClone, oldValueClone)) return;\n oldValueClone = newValueClone;\n }\n numCallbacks++;\n if (unwatch || options && options.immediate) {\n callbackFn(newValue, oldValue);\n } else {\n // Delay the immediate callback until we've had a chance to return the unwatch function.\n Promise.resolve().then(() => {\n const vm = options && options.vm;\n if (numCallbacks > 1 || (vm && vm.$destroyed)) return;\n callbackFn(newValue, oldValue);\n });\n }\n }, {immediate: true, deep: options && options.deep});\n\n return unwatch;\n }\n\n when(expression, options) {\n let cleanup, timeoutHandle;\n let promise = new Promise((resolve, reject) => {\n let unobserve = this.observe(expression, value => {\n if (!value) return;\n // Wait for computed properties to settle and double-check.\n Vue.nextTick(() => {\n value = expression();\n if (!value) return;\n resolve(value);\n cleanup();\n });\n });\n if (_.has(options, 'timeout')) {\n timeoutHandle = setTimeout(() => {\n timeoutHandle = null;\n reject(new Error(options.timeoutMessage || 'Timeout'));\n cleanup();\n }, options.timeout);\n }\n cleanup = () => {\n if (unobserve) {unobserve(); unobserve = null;}\n if (timeoutHandle) {clearTimeout(timeoutHandle); timeoutHandle = null;}\n reject(new Error('Canceled'));\n };\n });\n promise = promiseCancel(promiseFinally(promise, cleanup), cleanup);\n return promise;\n }\n\n nextTick() {\n let cleanup;\n let promise = new Promise((resolve, reject) => {\n Vue.nextTick(resolve);\n cleanup = () => {\n reject(new Error('Canceled'));\n };\n });\n promise = promiseCancel(promise, cleanup);\n return promise;\n }\n\n throttleRemoteDataUpdates(delay) {\n this._tree.throttleRemoteDataUpdates(delay);\n }\n\n checkObjectsForRogueProperties() {\n this._tree.checkVueObject(this._tree.root, '/');\n }\n\n static get computedPropertyStats() {\n return stats;\n }\n\n static async connectWorker(webWorker, config) {\n if (bridge) throw new Error('Worker already connected');\n if (_.isString(webWorker)) {\n const Worker = window.SharedWorker || window.Worker;\n if (!Worker) throw new Error('Browser does not implement Web Workers');\n if (!navigator.locks) throw new Error('Browser does not implement locks');\n webWorker = new Worker(webWorker);\n const random = window.crypto.getRandomValues(new Uint32Array(1))[0];\n webWorker.lockName = `truss_worker_lock_${Date.now()}.${random}`;\n await new Promise((resolve, reject) => {\n navigator.locks.request(webWorker.lockName, () => {\n resolve();\n // eslint-disable-next-line lodash/prefer-noop\n return new Promise(() => {/* release lock only on page exit or crash */});\n }).catch(reject);\n });\n }\n bridge = new Bridge(webWorker);\n if (logging) bridge.enableLogging(logging);\n const {exposedFunctionNames, firebaseSdkVersion} =\n await bridge.init(webWorker.lockName, config);\n Object.defineProperty(Truss, 'FIREBASE_SDK_VERSION', {value: firebaseSdkVersion});\n for (const name of exposedFunctionNames) Truss.preExpose(name);\n }\n\n static get worker() {return workerFunctions;}\n\n static preExpose(functionName) {\n const segments = functionName.split('.');\n let obj = Truss.worker;\n for (const segment of segments.slice(0, -1)) {\n if (!Object.hasOwnProperty.call(obj, segment)) obj[segment] = {};\n obj = obj[segment];\n }\n obj[segments[segments.length - 1]] = bridge.bindExposedFunction(functionName);\n }\n\n static bounceConnection() {return bridge.bounceConnection();}\n static suspend() {return bridge.suspend();}\n static debugPermissionDeniedErrors(simulatedTokenGenerator, maxSimulationDuration, callFilter) {\n return bridge.debugPermissionDeniedErrors(\n simulatedTokenGenerator, maxSimulationDuration, callFilter);\n }\n\n static escapeKey(key) {return escapeKey(key);}\n static unescapeKey(escapedKey) {return unescapeKey(escapedKey);}\n\n static enableLogging(fn) {\n logging = fn;\n if (bridge) bridge.enableLogging(fn);\n }\n\n // Duplicate static constants on instance for convenience.\n get SERVER_TIMESTAMP() {return Truss.SERVER_TIMESTAMP;}\n get VERSION() {return Truss.VERSION;}\n get FIREBASE_SDK_VERSION() {return Truss.FIREBASE_SDK_VERSION;}\n}\n\nObject.defineProperties(Truss, {\n SERVER_TIMESTAMP: {value: SERVER_TIMESTAMP},\n VERSION: {value: VERSION},\n Model: {value: Object},\n\n ComponentPlugin: {value: {\n install(Vue2, pluginOptions) {\n if (Vue !== Vue2) throw new Error('Multiple versions of Vue detected');\n if (!pluginOptions.truss) {\n throw new Error('Need to pass `truss` instance as an option to use the ComponentPlugin');\n }\n const prototypeExtension = {\n $truss: {value: pluginOptions.truss},\n $destroyed: {get() {return this._isBeingDestroyed || this._isDestroyed;}},\n $$touchThis: {value() {if (this.__ob__) this.__ob__.dep.depend();}}\n };\n const conflictingKeys = _(prototypeExtension).keys()\n .union(_.keys(BaseValue.prototype)).intersection(_.keys(Vue.prototype)).value();\n if (conflictingKeys.length) {\n throw new Error(\n 'Truss extension properties conflict with Vue properties: ' + conflictingKeys.join(', '));\n }\n Object.defineProperties(Vue.prototype, prototypeExtension);\n copyPrototype(BaseValue, Vue);\n }\n }}\n});\n\nif (typeof window !== 'undefined' && window.angular) {\n window.angular.module('firetruss', []).constant('Truss', Truss);\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/firetruss.umd.js b/dist/firetruss.umd.js index 4052915..ae37a7d 100644 --- a/dist/firetruss.umd.js +++ b/dist/firetruss.umd.js @@ -9,100 +9,6 @@ var ___default = /*#__PURE__*/_interopDefaultLegacy(_); var Vue__default = /*#__PURE__*/_interopDefaultLegacy(Vue); - let vue; - let lastDigestRequest = 0, digestInProgress = false; - const bareDigest = function() { - if (vue.digestRequest > lastDigestRequest) return; - vue.digestRequest = lastDigestRequest + 1; - }; - - const angularProxy = { - active: typeof window !== 'undefined' && window.angular - }; - - if (angularProxy.active) { - initAngular(); - } else { - ___default.default.forEach(['digest', 'watch', 'defineModule', 'debounceDigest'], method => { - angularProxy[method] = ___default.default.noop; - }); - } - - function initAngular() { - const module = window.angular.module('firetruss', []); - angularProxy.digest = bareDigest; - angularProxy.watch = function() {throw new Error('Angular watch proxy not yet initialized');}; - angularProxy.defineModule = function(Truss) { - module.constant('Truss', Truss); - }; - angularProxy.debounceDigest = function(wait) { - if (wait) { - const debouncedDigest = ___default.default.debounce(bareDigest, wait); - angularProxy.digest = function() { - if (vue.digestRequest > lastDigestRequest) return; - if (digestInProgress) bareDigest(); else debouncedDigest(); - }; - } else { - angularProxy.digest = bareDigest; - } - }; - - module.config(['$provide', function($provide) { - $provide.decorator('$rootScope', ['$delegate', '$exceptionHandler', - function($delegate, $exceptionHandler) { - const rootScope = $delegate; - angularProxy.watch = rootScope.$watch.bind(rootScope); - const proto = Object.getPrototypeOf(rootScope); - const angularDigest = proto.$digest; - proto.$digest = bareDigest; - proto.$digest.original = angularDigest; - vue = new Vue__default.default({data: {digestRequest: 0}}); - vue.$watch(() => vue.digestRequest, () => { - if (vue.digestRequest > lastDigestRequest) { - // Make sure we execute the digest outside the Vue task queue, because otherwise if the - // client replaced Promise with angular.$q all Truss.nextTick().then() functions will be - // executed inside the Angular digest and hence inside the Vue task queue. But - // Truss.nextTick() is used precisely to avoid that. Note that it's OK to use - // Vue.nextTick() here because even though it will schedule a flush via Promise.then() - // it only uses the native Promise, before it could've been monkey-patched by the app. - Vue__default.default.nextTick(() => { - if (vue.digestRequest <= lastDigestRequest) return; - digestInProgress = true; - rootScope.$digest.original.call(rootScope); - lastDigestRequest = vue.digestRequest = vue.digestRequest + 1; - }); - } else { - digestInProgress = false; - } - }); - const watcher = ___default.default.last(vue._watchers || vue._scope.effects); - watcher.id = Infinity; // make sure watcher is scheduled last - patchRenderWatcherGet(Object.getPrototypeOf(watcher)); - return rootScope; - } - ]); - }]); - } - - // This is a kludge that catches errors that get through render watchers and end up killing the - // entire Vue event loop (e.g., errors raised in transition callbacks). The state of the DOM may - // not be consistent after such an error is caught, but the global error handler should stop the - // world anyway. May be related to https://github.com/vuejs/vue/issues/7653. - function patchRenderWatcherGet(prototype) { - const originalGet = prototype.get; - prototype.get = function get() { - try { - return originalGet.call(this); - } catch (e) { - if (this.vm._watcher === this && Vue__default.default.config.errorHandler) { - Vue__default.default.config.errorHandler(e, this.vm, 'uncaught render error'); - } else { - throw e; - } - } - }; - } - class LruCacheItem { constructor(key, value) { this.key = key; @@ -998,7 +904,6 @@ this._subConnectors = {}; this._disconnects = {}; - this._angularUnwatches = undefined; this._data = {}; this._vue = new Vue__default.default({data: { descriptors: {}, @@ -1018,10 +923,6 @@ this._connect(key, descriptor); } }); - - if (angularProxy.active && scope && scope.$on && scope.$id) { - scope.$on('$destroy', () => {this.destroy();}); - } } get ready() { @@ -1043,7 +944,6 @@ destroy() { this._unlinkScopeProperties(); - ___default.default.forEach(this._angularUnwatches, unwatch => {unwatch();}); ___default.default.forEach(this._connections, (descriptor, key) => {this._disconnect(key);}); this._vue.$destroy(); } @@ -1079,14 +979,7 @@ const connectionStats = stats.for(`connection.at.${key}`); const getter = this._computeConnection.bind(this, fn, connectionStats); const update = this._updateComputedConnection.bind(this, key, fn, connectionStats); - const angularWatch = angularProxy.active && !fn.angularWatchSuppressed; - // Use this._vue.$watch instead of truss.observe here so that we can disable the immediate - // callback if we'll get one from Angular anyway. - this._vue.$watch(getter, update, {immediate: !angularWatch}); - if (angularWatch) { - if (!this._angularUnwatches) this._angularUnwatches = []; - this._angularUnwatches.push(angularProxy.watch(getter, update, true)); - } + this._vue.$watch(getter, update, {immediate: true}); } _computeConnection(fn, connectionStats) { @@ -1116,7 +1009,6 @@ this._subConnectors[key]._updateConnections(newDescriptor); } Vue__default.default.set(this._vue.descriptors, key, newDescriptor); - angularProxy.digest(); } _updateConnections(connections) { @@ -1131,7 +1023,6 @@ _connect(key, descriptor) { Vue__default.default.set(this._vue.descriptors, key, descriptor); - angularProxy.digest(); if (!descriptor) return; Vue__default.default.set(this._vue.values, key, undefined); if (descriptor instanceof Reference) { @@ -1156,7 +1047,6 @@ unobserve(); delete this._disconnects[key]; Vue__default.default.set(this._vue.values, key, subScope); - angularProxy.digest(); } ); } @@ -1172,34 +1062,29 @@ if (this._disconnects[key]) this._disconnects[key](); delete this._disconnects[key]; Vue__default.default.delete(this._vue.descriptors, key); - angularProxy.digest(); } _updateRefValue(key, value) { if (this._vue.values[key] !== value) { Vue__default.default.set(this._vue.values, key, value); - angularProxy.digest(); } } _updateQueryValue(key, childKeys) { if (!this._vue.values[key]) { Vue__default.default.set(this._vue.values, key, {}); - angularProxy.digest(); } const subScope = this._vue.values[key]; for (const childKey in subScope) { if (!Object.hasOwn(subScope, childKey)) continue; if (!___default.default.includes(childKeys, childKey)) { Vue__default.default.delete(subScope, childKey); - angularProxy.digest(); } } const object = this._tree.getObject(this._vue.descriptors[key].path); for (const childKey of childKeys) { if (Object.hasOwn(subScope, childKey)) continue; Vue__default.default.set(subScope, childKey, object[childKey]); - angularProxy.digest(); } } @@ -1572,7 +1457,6 @@ if (!Object.hasOwn(this, key)) { const update = () => { Vue__default.default.set(this, key, Date.now() + this.timeOffset); - angularProxy.digest(); }; update(); setInterval(update, intervalMillis); @@ -1640,7 +1524,6 @@ if (user) Object.freeze(user); this.root.user = user; this.root.userid = user && user.uid; - angularProxy.digest(); return true; } ); @@ -1657,7 +1540,6 @@ url.pathname = encodeURI(`/.info/${property}`); this._bridge.on(url.href, url.href, null, 'value', snap => { this.root[attribute] = snap.value; - angularProxy.digest(); }); } } @@ -2081,8 +1963,6 @@ const object = new mount.Class(); creatingObjectProperties = null; - if (angularProxy.active) this._wrapProperties(object); - if (mount.keysUnsafe) { properties.$data = {value: Object.create(null), configurable: true, enumerable: true}; } @@ -2100,24 +1980,6 @@ } } - _wrapProperties(object) { - ___default.default.forEach(object, (value, key) => { - const valueKey = '$_' + key; - const descriptor = Object.getOwnPropertyDescriptor(object, key); - const valueDescriptor = descriptor.get && descriptor.set ? { - get: descriptor.get, set: descriptor.set, configurable: true - } : {value, writable: true}; - Object.defineProperties(object, { - [valueKey]: valueDescriptor, - [key]: { - get: () => object[valueKey], - set: arg => {object[valueKey] = arg; angularProxy.digest();}, - enumerable: true, configurable: true - } - }); - }); - } - _buildComputedPropertyDescriptor(object, prop) { const propertyStats = stats.for(prop.fullName); @@ -2141,15 +2003,12 @@ if (___default.default.isObject(newValue) && ___default.default.isFunction(newValue.then)) { const promise = newValue.then(finalValue => { if (promise === pendingPromise) update(finalValue); - // No need to angular.digest() here, since if we're running under Angular then we expect - // promises to be aliased to its $q service, which triggers digest itself. }, error => { if (promise === pendingPromise && update(new ErrorWrapper(error)) && !error.trussExpectedException) throw error; }); pendingPromise = promise; } else if (update(newValue)) { - angularProxy.digest(); if (newValue instanceof ErrorWrapper && !newValue.error.trussExpectedException) { throw newValue.error; } @@ -2365,7 +2224,6 @@ return wrapConnections(object, connections.call(this)); /* eslint-enable no-invalid-this */ }; - fn.angularWatchSuppressed = true; return fn; } return ___default.default.mapValues(connections, descriptor => wrapConnections(object, descriptor)); @@ -2422,7 +2280,6 @@ this); this._listening = false; this.ready = false; - angularProxy.digest(); for (const key of this._keys) { this._coupler._decoupleSegments(this._segments.concat(key)); } @@ -2436,7 +2293,6 @@ const updatedKeys = this._updateKeysAndApplySnapshot(snap); if (!this.ready) { this.ready = true; - angularProxy.digest(); for (const listener of this._listeners) { this._coupler._dispatcher.markReady(listener.operation); } @@ -2511,7 +2367,6 @@ this.ready = false; for (const key of this._keys) this._coupler._decoupleSegments(this._segments.concat(key)); this._keys = []; - angularProxy.digest(); Promise.all(___default.default.map(this._listeners, listener => { this._coupler._dispatcher.clearReady(listener.operation); return this._coupler._dispatcher.retry(listener.operation, error).catch(e => { @@ -2572,7 +2427,6 @@ if (node.listening) return false; if (node.ready) { node.ready = false; - angularProxy.digest(); } }); } else { @@ -2586,7 +2440,6 @@ this._coupler._applySnapshot(snap); if (!this.ready && snap.path === this.path) { this.ready = true; - angularProxy.digest(); this.unlisten(true); this._forAllDescendants(node => { for (const op of node.operations) this._coupler._dispatcher.markReady(op); @@ -2602,7 +2455,6 @@ if (node.listening) return false; if (node.ready) { node.ready = false; - angularProxy.digest(); } for (const op of node.operations) this._coupler._dispatcher.clearReady(op); }); @@ -2897,7 +2749,6 @@ this._vue.$data.$root = this._createObject('/'); this._fixObject(this._vue.$data.$root); this._completeCreateObject(this._vue.$data.$root); - angularProxy.digest(); } return this._vue.$data.$root; } @@ -3467,7 +3318,6 @@ configurable: true, enumerable: !hidden }); } - angularProxy.digest(); } _overwriteFirebaseProperty(descriptor, key, newValue) { @@ -3485,7 +3335,6 @@ this._getFirebasePropertyDescriptor(object, data, key); this._destroyObject(data[key]); Vue__default.default.delete(data, key); - angularProxy.digest(); } checkVueObject(object, path) { @@ -3671,7 +3520,7 @@ unobserve(); unobserve = null; callbackPromise = promiseFinally( - callback(scope.result), () => {angularProxy.digest(); callbackPromise = null; cleanup();} + callback(scope.result), () => {callbackPromise = null; cleanup();} ).then(result => {resolve(result);}, error => {reject(error);}); }); @@ -3715,19 +3564,16 @@ numCallbacks++; if (unwatch || options && options.immediate) { callbackFn(newValue, oldValue); - angularProxy.digest(); } else { // Delay the immediate callback until we've had a chance to return the unwatch function. Promise.resolve().then(() => { const vm = options && options.vm; if (numCallbacks > 1 || (vm && vm.$destroyed)) return; callbackFn(newValue, oldValue); - // No need to digest since under Angular we'll be using $q as Promise. }); } }, {immediate: true, deep: options && options.deep}); - if (options && options.scope) options.scope.$on('$destroy', unwatch); return unwatch; } @@ -3758,7 +3604,6 @@ }; }); promise = promiseCancel(promiseFinally(promise, cleanup), cleanup); - if (options && options.scope) options.scope.$on('$destroy', () => {promise.cancel();}); return promise; } @@ -3830,10 +3675,6 @@ simulatedTokenGenerator, maxSimulationDuration, callFilter); } - static debounceAngularDigest(wait) { - angularProxy.debounceDigest(wait); - } - static escapeKey(key) {return escapeKey(key);} static unescapeKey(escapedKey) {return unescapeKey(escapedKey);} @@ -3876,7 +3717,9 @@ }} }); - angularProxy.defineModule(Truss); + if (typeof window !== 'undefined' && window.angular) { + window.angular.module('firetruss', []).constant('Truss', Truss); + } return Truss; diff --git a/dist/firetruss.umd.js.map b/dist/firetruss.umd.js.map index e76ff06..cce9793 100644 --- a/dist/firetruss.umd.js.map +++ b/dist/firetruss.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"firetruss.umd.js","sources":["../src/angularCompatibility.js","../src/utils/LruCache.js","../src/utils/paths.js","../src/Bridge.js","../src/Reference.js","../src/utils/utils.js","../src/utils/stats.js","../src/Connector.js","../src/utils/promises.js","../src/Dispatcher.js","../src/KeyGenerator.js","../src/MetaTree.js","../src/Modeler.js","../src/Coupler.js","../src/Tree.js","../src/Truss.js"],"sourcesContent":["import _ from 'lodash';\nimport Vue from 'vue';\n\n\nlet vue;\nlet lastDigestRequest = 0, digestInProgress = false;\nconst bareDigest = function() {\n if (vue.digestRequest > lastDigestRequest) return;\n vue.digestRequest = lastDigestRequest + 1;\n};\n\nconst angularProxy = {\n active: typeof window !== 'undefined' && window.angular\n};\n\nif (angularProxy.active) {\n initAngular();\n} else {\n _.forEach(['digest', 'watch', 'defineModule', 'debounceDigest'], method => {\n angularProxy[method] = _.noop;\n });\n}\n\nfunction initAngular() {\n const module = window.angular.module('firetruss', []);\n angularProxy.digest = bareDigest;\n angularProxy.watch = function() {throw new Error('Angular watch proxy not yet initialized');};\n angularProxy.defineModule = function(Truss) {\n module.constant('Truss', Truss);\n };\n angularProxy.debounceDigest = function(wait) {\n if (wait) {\n const debouncedDigest = _.debounce(bareDigest, wait);\n angularProxy.digest = function() {\n if (vue.digestRequest > lastDigestRequest) return;\n if (digestInProgress) bareDigest(); else debouncedDigest();\n };\n } else {\n angularProxy.digest = bareDigest;\n }\n };\n\n module.config(['$provide', function($provide) {\n $provide.decorator('$rootScope', ['$delegate', '$exceptionHandler',\n function($delegate, $exceptionHandler) {\n const rootScope = $delegate;\n angularProxy.watch = rootScope.$watch.bind(rootScope);\n const proto = Object.getPrototypeOf(rootScope);\n const angularDigest = proto.$digest;\n proto.$digest = bareDigest;\n proto.$digest.original = angularDigest;\n vue = new Vue({data: {digestRequest: 0}});\n vue.$watch(() => vue.digestRequest, () => {\n if (vue.digestRequest > lastDigestRequest) {\n // Make sure we execute the digest outside the Vue task queue, because otherwise if the\n // client replaced Promise with angular.$q all Truss.nextTick().then() functions will be\n // executed inside the Angular digest and hence inside the Vue task queue. But\n // Truss.nextTick() is used precisely to avoid that. Note that it's OK to use\n // Vue.nextTick() here because even though it will schedule a flush via Promise.then()\n // it only uses the native Promise, before it could've been monkey-patched by the app.\n Vue.nextTick(() => {\n if (vue.digestRequest <= lastDigestRequest) return;\n digestInProgress = true;\n rootScope.$digest.original.call(rootScope);\n lastDigestRequest = vue.digestRequest = vue.digestRequest + 1;\n });\n } else {\n digestInProgress = false;\n }\n });\n const watcher = _.last(vue._watchers || vue._scope.effects);\n watcher.id = Infinity; // make sure watcher is scheduled last\n patchRenderWatcherGet(Object.getPrototypeOf(watcher));\n return rootScope;\n }\n ]);\n }]);\n}\n\n// This is a kludge that catches errors that get through render watchers and end up killing the\n// entire Vue event loop (e.g., errors raised in transition callbacks). The state of the DOM may\n// not be consistent after such an error is caught, but the global error handler should stop the\n// world anyway. May be related to https://github.com/vuejs/vue/issues/7653.\nfunction patchRenderWatcherGet(prototype) {\n const originalGet = prototype.get;\n prototype.get = function get() {\n try {\n return originalGet.call(this);\n } catch (e) {\n if (this.vm._watcher === this && Vue.config.errorHandler) {\n Vue.config.errorHandler(e, this.vm, 'uncaught render error');\n } else {\n throw e;\n }\n }\n };\n}\n\nexport default angularProxy;\n","import _ from 'lodash';\n\n\nclass LruCacheItem {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n this.touch();\n }\n\n touch() {\n this.timestamp = Date.now();\n }\n}\n\n\nexport default class LruCache {\n constructor(maxSize, pruningSize) {\n this._items = Object.create(null);\n this._size = 0;\n this._maxSize = maxSize;\n this._pruningSize = pruningSize || Math.ceil(maxSize * 0.10);\n }\n\n has(key) {\n return Boolean(this._items[key]);\n }\n\n get(key) {\n const item = this._items[key];\n if (!item) return;\n item.touch();\n return item.value;\n }\n\n set(key, value) {\n const item = this._items[key];\n if (item) {\n item.value = value;\n } else {\n if (this._size >= this._maxSize) this._prune();\n this._items[key] = new LruCacheItem(key, value);\n this._size += 1;\n }\n }\n\n delete(key) {\n const item = this._items[key];\n if (!item) return;\n delete this._items[key];\n this._size -= 1;\n }\n\n _prune() {\n const itemsToPrune =\n _(this._items).toArray().sortBy('timestamp').take(this._pruningSize).value();\n for (const item of itemsToPrune) this.delete(item.key);\n }\n}\n","import LruCache from './LruCache.js';\nimport _ from 'lodash';\n\n\nconst pathSegments = new LruCache(1000);\nconst pathMatchers = {};\nconst maxNumPathMatchers = 1000;\n\n\nexport function escapeKey(key) {\n if (!key) return key;\n // eslint-disable-next-line no-control-regex\n return key.toString().replace(/[\\x00-\\x1f\\\\.$#[\\]\\x7f/]/g, char =>\n '\\\\' + _.padStart(char.charCodeAt(0).toString(16), 2, '0')\n );\n}\n\nexport function unescapeKey(key) {\n if (!key) return key;\n return key.toString().replace(/\\\\[0-9a-f]{2}/gi, code =>\n String.fromCharCode(parseInt(code.slice(1), 16))\n );\n}\n\nexport function escapeKeys(object) {\n // isExtensible check avoids trying to escape references to Firetruss internals.\n if (!(_.isObject(object) && Object.isExtensible(object))) return object;\n let result = object;\n for (const key in object) {\n if (!Object.hasOwn(object, key)) continue;\n const value = object[key];\n const escapedKey = escapeKey(key);\n const escapedValue = escapeKeys(value);\n if (escapedKey !== key || escapedValue !== value) {\n if (result === object) result = _.clone(object);\n result[escapedKey] = escapedValue;\n if (result[key] === value) delete result[key];\n }\n }\n return result;\n}\n\nexport function joinPath() {\n const segments = [];\n for (let segment of arguments) {\n if (!_.isString(segment)) segment = '' + segment;\n if (segment.charAt(0) === '/') segments.splice(0, segments.length);\n segments.push(segment);\n }\n if (segments[0] === '/') segments[0] = '';\n return segments.join('/');\n}\n\nexport function splitPath(path, leaveSegmentsEscaped) {\n const key = (leaveSegmentsEscaped ? 'esc:' : '') + path;\n let segments = pathSegments.get(key);\n if (!segments) {\n segments = path.split('/');\n if (!leaveSegmentsEscaped) segments = _.map(segments, unescapeKey);\n pathSegments.set(key, segments);\n }\n return segments;\n}\n\n\nclass PathMatcher {\n constructor(pattern) {\n this.variables = [];\n const prefixMatch = _.endsWith(pattern, '/$*');\n if (prefixMatch) pattern = pattern.slice(0, -3);\n const pathTemplate = pattern.replace(/\\/\\$[^/]*/g, match => {\n if (match.length > 1) this.variables.push(match.slice(1));\n return '\\u0001';\n });\n Object.freeze(this.variables);\n if (/[.$#[\\]]|\\\\(?![0-9a-f][0-9a-f])/i.test(pathTemplate)) {\n throw new Error('Path pattern has unescaped keys: ' + pattern);\n }\n this._regex = new RegExp(\n // eslint-disable-next-line no-control-regex\n '^' + pathTemplate.replace(/\\u0001/g, '/([^/]+)') + (prefixMatch ? '($|/)' : '$'));\n }\n\n match(path) {\n this._regex.lastIndex = 0;\n const match = this._regex.exec(path);\n if (!match) return;\n const bindings = {};\n for (let i = 0; i < this.variables.length; i++) {\n bindings[this.variables[i]] = unescapeKey(match[i + 1]);\n }\n return bindings;\n }\n\n test(path) {\n return this._regex.test(path);\n }\n\n toString() {\n return this._regex.toString();\n }\n}\n\nexport function makePathMatcher(pattern) {\n let matcher = pathMatchers[pattern];\n if (!matcher) {\n matcher = new PathMatcher(pattern);\n // Minimal pseudo-LRU behavior, since we don't expect to actually fill up the cache.\n if (_.size(pathMatchers) === maxNumPathMatchers) delete pathMatchers[_.keys(pathMatchers)[0]];\n pathMatchers[pattern] = matcher;\n }\n return matcher;\n}\n","import {unescapeKey} from './utils/paths.js';\nimport _ from 'lodash';\n\nconst MIN_WORKER_VERSION = '4.0.0';\n\n\nclass Snapshot {\n constructor({path, value, exists, writeSerial}) {\n this._path = path;\n this._value = value;\n this._exists = value === undefined ? exists || false : value !== null;\n this._writeSerial = writeSerial;\n }\n\n get path() {\n return this._path;\n }\n\n get exists() {\n return this._exists;\n }\n\n get value() {\n if (this._value === undefined) throw new Error('Value omitted from snapshot');\n return this._value;\n }\n\n get key() {\n if (this._key === undefined) this._key = unescapeKey(this._path.replace(/.*\\//, ''));\n return this._key;\n }\n\n get writeSerial() {\n return this._writeSerial;\n }\n}\n\n\nexport default class Bridge {\n constructor(webWorker) {\n this._idCounter = 0;\n this._deferreds = {};\n this._suspended = false;\n this._servers = {};\n this._callbacks = {};\n this._log = _.noop;\n this._inboundMessages = [];\n this._outboundMessages = [];\n this._flushMessageQueue = this._flushMessageQueue.bind(this);\n this._port = webWorker.port || webWorker;\n this._shared = !!webWorker.port;\n this._dead = undefined;\n Object.seal(this);\n this._port.onmessage = this._receive.bind(this);\n }\n\n init(lockName, config) {\n const items = [];\n try {\n const storage = window.localStorage || window.sessionStorage;\n if (!storage) throw new Error('localStorage and sessionStorage not available');\n for (let i = 0; i < storage.length; i++) {\n const key = storage.key(i);\n items.push({key, value: storage.getItem(key)});\n }\n } catch {\n // Some browsers don't like us accessing local storage -- nothing we can do.\n }\n return this._send({msg: 'init', storage: items, config, lockName}).then(response => {\n const workerVersion = response.version.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(-.*)?$/);\n if (workerVersion) {\n const minVersion = MIN_WORKER_VERSION.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(-.*)?$/);\n // Major version must match precisely, minor and patch must be greater than or equal.\n const sufficient = workerVersion[1] === minVersion[1] && (\n workerVersion[2] > minVersion[2] ||\n workerVersion[2] === minVersion[2] && workerVersion[3] >= minVersion[3]\n );\n if (!sufficient) {\n return Promise.reject(new Error(\n `Incompatible Firetruss worker version: ${response.version} ` +\n `(${MIN_WORKER_VERSION} or better required)`\n ));\n }\n }\n if (response.livenessLockName) {\n navigator.locks.request(response.livenessLockName, () => {\n this.crash({error: {\n name: 'Error', message: 'worker terminated', extra: {shared: this._shared}\n }});\n });\n }\n return response;\n });\n }\n\n suspend(suspended) {\n if (suspended === undefined) suspended = true;\n if (this._suspended === suspended) return;\n this._suspended = suspended;\n if (!suspended) {\n this._receiveMessages(this._inboundMessages);\n this._inboundMessages = [];\n if (this._outboundMessages.length) Promise.resolve().then(this._flushMessageQueue);\n }\n }\n\n enableLogging(fn) {\n if (fn) {\n if (fn === true) {\n fn = console.log.bind(console);\n this._send({msg: 'enableFirebaseLogging', value: true});\n }\n this._log = fn;\n } else {\n this._send({msg: 'enableFirebaseLogging', value: false});\n this._log = _.noop;\n }\n }\n\n _send(message) {\n message.id = ++this._idCounter;\n let promise;\n if (this._dead) {\n return Promise.reject(this._dead);\n } else if (message.oneWay) {\n promise = Promise.resolve();\n } else {\n promise = new Promise((resolve, reject) => {\n this._deferreds[message.id] = {resolve, reject};\n });\n const deferred = this._deferreds[message.id];\n deferred.promise = promise;\n deferred.params = message;\n }\n if (!this._outboundMessages.length && !this._suspended) {\n Promise.resolve().then(this._flushMessageQueue);\n }\n this._log('send:', message);\n this._outboundMessages.push(message);\n return promise;\n }\n\n _flushMessageQueue() {\n this._log('flush:', this._outboundMessages.length, 'messages');\n try {\n this._port.postMessage(this._outboundMessages);\n this._outboundMessages = [];\n } catch (e) {\n this._log('flush failed:', e);\n e.extra = {messages: this._outboundMessages};\n throw e;\n }\n }\n\n _receive(event) {\n if (this._dead) return;\n if (this._suspended) {\n this._inboundMessages = this._inboundMessages.concat(event.data);\n } else {\n this._receiveMessages(event.data);\n }\n }\n\n _receiveMessages(messages) {\n for (const message of messages) {\n this._log('recv:', message);\n const fn = this[message.msg];\n if (!_.isFunction(fn)) throw new Error('Unknown message: ' + message.msg);\n fn.call(this, message);\n }\n }\n\n bindExposedFunction(name) {\n return (function() {\n return this._send({msg: 'call', name, args: Array.prototype.slice.call(arguments)});\n }).bind(this);\n }\n\n resolve(message) {\n const deferred = this._deferreds[message.id];\n if (!deferred) throw new Error('Received resolution to inexistent Firebase call');\n delete this._deferreds[message.id];\n deferred.resolve(message.result);\n }\n\n reject(message) {\n const deferred = this._deferreds[message.id];\n if (!deferred) throw new Error('Received rejection of inexistent Firebase call');\n delete this._deferreds[message.id];\n deferred.reject(errorFromJson(message.error, deferred.params));\n }\n\n crash(message) {\n let details = `Internal worker error: ${message.error.name}: ${message.error.message}`;\n if (message.error.cause) details += ` (caused by ${message.error.cause})`;\n this._dead = new Error(details);\n if (message.error.extra) this._dead.extra = message.error.extra;\n _.forEach(this._deferreds, ({reject}) => {reject(this._dead);});\n this._deferreds = {};\n throw this._dead;\n }\n\n updateLocalStorage({items}) {\n try {\n const storage = window.localStorage || window.sessionStorage;\n for (const item of items) {\n if (item.value === null) {\n storage.removeItem(item.key);\n } else {\n storage.setItem(item.key, item.value);\n }\n }\n } catch {\n // If we're denied access, there's nothing we can do.\n }\n }\n\n trackServer(rootUrl) {\n if (Object.hasOwn(this._servers, rootUrl)) return Promise.resolve();\n const server = this._servers[rootUrl] = {authListeners: []};\n const authCallbackId = this._registerCallback(this._authCallback.bind(this, server));\n this._send({msg: 'onAuth', url: rootUrl, callbackId: authCallbackId});\n }\n\n _authCallback(server, auth) {\n server.auth = auth;\n for (const listener of server.authListeners) listener(auth);\n }\n\n onAuth(rootUrl, callback, context) {\n const listener = callback.bind(context);\n listener.callback = callback;\n listener.context = context;\n this._servers[rootUrl].authListeners.push(listener);\n listener(this.getAuth(rootUrl));\n }\n\n offAuth(rootUrl, callback, context) {\n const authListeners = this._servers[rootUrl].authListeners;\n for (let i = 0; i < authListeners.length; i++) {\n const listener = authListeners[i];\n if (listener.callback === callback && listener.context === context) {\n authListeners.splice(i, 1);\n break;\n }\n }\n }\n\n getAuth(rootUrl) {\n return this._servers[rootUrl].auth;\n }\n\n authWithCustomToken(url, authToken) {\n return this._send({msg: 'authWithCustomToken', url, authToken});\n }\n\n authAnonymously(url) {\n return this._send({msg: 'authAnonymously', url});\n }\n\n unauth(url) {\n return this._send({msg: 'unauth', url});\n }\n\n set(url, value, writeSerial) {return this._send({msg: 'set', url, value, writeSerial});}\n update(url, value, writeSerial) {return this._send({msg: 'update', url, value, writeSerial});}\n\n once(url, writeSerial) {\n return this._send({msg: 'once', url, writeSerial}).then(snapshot => new Snapshot(snapshot));\n }\n\n on(listenerKey, url, spec, eventType, snapshotCallback, cancelCallback, context, options) {\n const handle = {\n listenerKey, eventType, snapshotCallback, cancelCallback, context,\n params: {msg: 'on', listenerKey, url, spec, eventType, options}\n };\n const callback = this._onCallback.bind(this, handle);\n this._registerCallback(callback, handle);\n // Keep multiple IDs to allow the same snapshotCallback to be reused.\n snapshotCallback.__callbackIds = snapshotCallback.__callbackIds || [];\n snapshotCallback.__callbackIds.push(handle.id);\n this._send({\n msg: 'on', listenerKey, url, spec, eventType, callbackId: handle.id, options\n }).catch(error => {\n callback(error);\n });\n }\n\n off(listenerKey, url, spec, eventType, snapshotCallback, context) {\n const idsToDeregister = [];\n let callbackId;\n if (snapshotCallback) {\n callbackId = this._findAndRemoveCallbackId(\n snapshotCallback, handle => _.isMatch(handle, {listenerKey, eventType, context})\n );\n if (!callbackId) return Promise.resolve(); // no-op, never registered or already deregistered\n idsToDeregister.push(callbackId);\n } else {\n for (const id of _.keys(this._callbacks)) {\n const handle = this._callbacks[id];\n if (handle.listenerKey === listenerKey && (!eventType || handle.eventType === eventType)) {\n idsToDeregister.push(id);\n }\n }\n }\n // Nullify callbacks first, then deregister after off() is complete. We don't want any\n // callbacks in flight from the worker to be invoked while the off() is processing, but we don't\n // want them to throw an exception either.\n for (const id of idsToDeregister) this._nullifyCallback(id);\n return this._send({msg: 'off', listenerKey, url, spec, eventType, callbackId}).then(() => {\n for (const id of idsToDeregister) this._deregisterCallback(id);\n });\n }\n\n _onCallback(handle, error, snapshotJson) {\n if (error) {\n this._deregisterCallback(handle.id);\n const e = errorFromJson(error, handle.params);\n if (handle.cancelCallback) {\n handle.cancelCallback.call(handle.context, e);\n } else {\n console.error(e);\n }\n } else {\n handle.snapshotCallback.call(handle.context, new Snapshot(snapshotJson));\n }\n }\n\n transaction(url, oldValue, relativeUpdates, writeSerial) {\n return this._send(\n {msg: 'transaction', url, oldValue, relativeUpdates, writeSerial}\n ).then(result => {\n if (result.snapshots) {\n result.snapshots = _.map(result.snapshots, jsonSnapshot => new Snapshot(jsonSnapshot));\n }\n return result;\n });\n }\n\n onDisconnect(url, method, value) {\n return this._send({msg: 'onDisconnect', url, method, value});\n }\n\n bounceConnection() {\n return this._send({msg: 'bounceConnection'});\n }\n\n callback({id, args}) {\n const handle = this._callbacks[id];\n if (!handle) throw new Error('Unregistered callback: ' + id);\n handle.callback.apply(null, args);\n }\n\n _registerCallback(callback, handle) {\n handle = handle || {};\n handle.callback = callback;\n handle.id = `cb${++this._idCounter}`;\n this._callbacks[handle.id] = handle;\n return handle.id;\n }\n\n _nullifyCallback(id) {\n this._callbacks[id].callback = _.noop;\n }\n\n _deregisterCallback(id) {\n delete this._callbacks[id];\n }\n\n _findAndRemoveCallbackId(callback, predicate) {\n if (!callback.__callbackIds) return;\n let i = 0;\n while (i < callback.__callbackIds.length) {\n const id = callback.__callbackIds[i];\n const handle = this._callbacks[id];\n if (!handle) {\n callback.__callbackIds.splice(i, 1);\n continue;\n }\n if (predicate(handle)) {\n callback.__callbackIds.splice(i, 1);\n return id;\n }\n i += 1;\n }\n }\n}\n\n\nfunction errorFromJson(json, params) {\n if (!json || _.isError(json)) return json;\n const error = new Error(json.message);\n try {\n error.params = params;\n for (const propertyName in json) {\n if (propertyName === 'message' || !Object.hasOwn(json, propertyName)) continue;\n try {\n error[propertyName] = json[propertyName];\n } catch {\n error.extra = error.extra || {};\n error.extra[propertyName] = json[propertyName];\n }\n }\n } catch (e) {\n if (!/object is not extensible/.test(e.message)) throw e;\n }\n return error;\n}\n","import {escapeKey, unescapeKey, makePathMatcher} from './utils/paths.js';\n\nimport _ from 'lodash';\n\n/* eslint-disable no-use-before-define */\n\nconst EMPTY_ANNOTATIONS = {};\nObject.freeze(EMPTY_ANNOTATIONS);\n\n\nexport class Handle {\n constructor(tree, path, annotations) {\n this._tree = tree;\n this._path = path.replace(/^\\/*/, '/').replace(/\\/$/, '') || '/';\n if (annotations) {\n this._annotations = annotations;\n Object.freeze(annotations);\n }\n }\n\n get $ref() {return this;}\n get key() {\n if (!this._key) this._key = unescapeKey(this._path.replace(/.*\\//, ''));\n return this._key;\n }\n\n get path() {return this._path;}\n get _pathPrefix() {return this._path === '/' ? '' : this._path;}\n get parent() {\n return new Reference(this._tree, this._path.replace(/\\/[^/]*$/, ''), this._annotations);\n }\n\n get annotations() {\n return this._annotations || EMPTY_ANNOTATIONS;\n }\n\n child() {\n if (!arguments.length) return this;\n const segments = [];\n for (const key of arguments) {\n if (_.isNil(key)) return;\n segments.push(escapeKey(key));\n }\n return new Reference(\n this._tree, `${this._pathPrefix}/${segments.join('/')}`,\n this._annotations\n );\n }\n\n children() {\n if (!arguments.length) return this;\n const escapedKeys = [];\n for (let i = 0; i < arguments.length; i++) {\n const arg = arguments[i];\n if (_.isArray(arg)) {\n const mapping = {};\n const subPath = this._pathPrefix + (escapedKeys.length ? `/${escapedKeys.join('/')}` : '');\n const rest = _.slice(arguments, i + 1);\n for (const key of arg) {\n const subRef =\n new Reference(this._tree, `${subPath}/${escapeKey(key)}`, this._annotations);\n const subMapping = subRef.children.apply(subRef, rest);\n if (subMapping) mapping[key] = subMapping;\n }\n return mapping;\n }\n if (_.isNil(arg)) return;\n escapedKeys.push(escapeKey(arg));\n }\n return new Reference(\n this._tree, `${this._pathPrefix}/${escapedKeys.join('/')}`, this._annotations);\n }\n\n peek(callback) {\n return this._tree.truss.peek(this, callback);\n }\n\n match(pattern) {\n return makePathMatcher(pattern).match(this.path);\n }\n\n test(pattern) {\n return makePathMatcher(pattern).test(this.path);\n }\n\n isEqual(that) {\n if (!(that instanceof Handle)) return false;\n return this._tree === that._tree && this.toString() === that.toString() &&\n _.isEqual(this._annotations, that._annotations);\n }\n\n belongsTo(truss) {\n return this._tree.truss === truss;\n }\n}\n\n\nexport class Query extends Handle {\n constructor(tree, path, spec, annotations) {\n super(tree, path, annotations);\n this._spec = this._copyAndValidateSpec(spec);\n const queryTerms = _(this._spec)\n .map((value, key) => `${key}=${encodeURIComponent(JSON.stringify(value))}`)\n .sortBy()\n .join('&');\n this._string = `${this._path}?${queryTerms}`;\n Object.freeze(this);\n }\n\n // Vue-bound\n get ready() {\n return this._tree.isQueryReady(this);\n }\n\n get constraints() {\n return this._spec;\n }\n\n annotate(annotations) {\n return new Query(\n this._tree, this._path, this._spec, _.assign({}, this._annotations, annotations));\n }\n\n _copyAndValidateSpec(spec) {\n if (!spec.by) throw new Error('Query needs \"by\" clause: ' + JSON.stringify(spec));\n if (('at' in spec) + ('from' in spec) + ('to' in spec) > 1) {\n throw new Error(\n 'Query must contain at most one of \"at\", \"from\", or \"to\" clauses: ' + JSON.stringify(spec));\n }\n if (('first' in spec) + ('last' in spec) > 1) {\n throw new Error(\n 'Query must contain at most one of \"first\" or \"last\" clauses: ' + JSON.stringify(spec));\n }\n if (!_.some(['at', 'from', 'to', 'first', 'last'], clause => clause in spec)) {\n throw new Error(\n 'Query must contain at least one of \"at\", \"from\", \"to\", \"first\", or \"last\" clauses: ' +\n JSON.stringify(spec));\n }\n spec = _.clone(spec);\n if (spec.by !== '$key' && spec.by !== '$value') {\n if (!(spec.by instanceof Reference)) {\n throw new Error('Query \"by\" value must be a reference: ' + spec.by);\n }\n let childPath = spec.by.toString();\n if (!_.startsWith(childPath, this._path)) {\n throw new Error(\n 'Query \"by\" value must be a descendant of target reference: ' + spec.by);\n }\n childPath = childPath.slice(this._path.length).replace(/^\\/?/, '');\n if (!_.includes(childPath, '/')) {\n throw new Error(\n 'Query \"by\" value must not be a direct child of target reference: ' + spec.by);\n }\n spec.by = childPath.replace(/.*?\\//, '');\n }\n Object.freeze(spec);\n return spec;\n }\n\n\n toString() {return this._string;}\n toJSON() {return `query → ${this.toString()}`;}\n}\n\n\nexport class Reference extends Handle {\n\n constructor(tree, path, annotations) {\n super(tree, path, annotations);\n Object.freeze(this);\n }\n\n get ready() {return this._tree.isReferenceReady(this);} // Vue-bound\n get value() {return this._tree.getObject(this.path);} // Vue-bound\n toString() {return this._path;}\n toJSON() {return `reference → ${this.toString()}`;}\n\n annotate(annotations) {\n return new Reference(this._tree, this._path, _.assign({}, this._annotations, annotations));\n }\n\n query(spec) {\n return new Query(this._tree, this._path, spec, this._annotations);\n }\n\n set(value) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'set', {[this.path]: value});\n }\n\n update(values) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'update', values);\n }\n\n override(value) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'override', {[this.path]: value});\n }\n\n commit(updateFunction) {\n this._checkForUndefinedPath();\n return this._tree.commit(this, updateFunction);\n }\n\n _checkForUndefinedPath() {\n if (this.path === '/undefined') throw new Error('Invalid path for operation: ' + this.path);\n }\n}\n\nexport default Reference;\n","import _ from 'lodash';\n\n\nexport const SERVER_TIMESTAMP = Object.freeze({'.sv': 'timestamp'});\n\nexport function isTrussEqual(a, b) {\n return _.isEqualWith(a, b, isTrussValueEqual);\n}\n\nfunction isTrussValueEqual(a, b) {\n if (a === b || a === undefined || a === null || b === undefined || b === null ||\n a.$truss || b.$truss) return a === b;\n if (a.isEqual) return a.isEqual(b);\n}\n\nexport function copyPrototype(a, b) {\n for (const prop of Object.getOwnPropertyNames(a.prototype)) {\n if (prop === 'constructor') continue;\n Object.defineProperty(b.prototype, prop, Object.getOwnPropertyDescriptor(a.prototype, prop));\n }\n}\n","import {isTrussEqual} from './utils.js';\n\nimport _ from 'lodash';\n\n\nclass StatItem {\n constructor(name) {\n _.assign(this, {name, numRecomputes: 0, numUpdates: 0, computeTime: 0, updateTime: 0});\n }\n\n add(item) {\n this.computeTime += item.computeTime;\n this.updateTime += item.updateTime;\n this.numUpdates += item.numUpdates;\n this.numRecomputes += item.numRecomputes;\n }\n\n get runtime() {\n return this.computeTime + this.updateTime;\n }\n\n get runtimePerRecompute() {\n return this.numRecomputes ? this.computeTime / this.numRecomputes : 0;\n }\n\n get runtimePerUpdate() {\n return this.numUpdates ? this.updateTime / this.numUpdates : 0;\n }\n\n toLogParts(totals) {\n return [\n `${this.name}:`, ` ${(this.runtime / 1000).toFixed(2)}s`,\n `(${(this.runtime / totals.runtime * 100).toFixed(1)}%)`,\n ` ${this.numUpdates} upd /`, `${this.numRecomputes} runs`,\n `(${(this.numUpdates / this.numRecomputes * 100).toFixed(1)}%)`,\n ` ${this.runtimePerRecompute.toFixed(2)}ms / run`,\n ` ${this.runtimePerUpdate.toFixed(2)}ms / upd`\n ];\n }\n}\n\nclass Stats {\n constructor() {\n this._items = {};\n }\n\n for(name) {\n if (!this._items[name]) this._items[name] = new StatItem(name);\n return this._items[name];\n }\n\n get list() {\n return _(this._items).values().sortBy(item => -item.runtime).value();\n }\n\n log(n = 10) {\n let stats = this.list;\n if (!stats.length) return;\n const totals = new StatItem('=== Total');\n _.forEach(stats, stat => {totals.add(stat);});\n stats = _.take(stats, n);\n const above = new StatItem('--- Above');\n _.forEach(stats, stat => {above.add(stat);});\n const lines = _.map(stats, item => item.toLogParts(totals));\n lines.push(above.toLogParts(totals));\n lines.push(totals.toLogParts(totals));\n const widths = _.map(_.range(lines[0].length), i => _(lines).map(line => line[i].length).max());\n _.forEach(lines, line => {\n console.log(_.map(line, (column, i) => _.padStart(column, widths[i])).join(' '));\n });\n }\n\n wrap(getter, className, propName) {\n const item = this.for(`${className}.${propName}`);\n return function() {\n /* eslint-disable no-invalid-this */\n const startTime = performance.now();\n const oldValue = this._computedWatchers && this._computedWatchers[propName].value;\n try {\n const newValue = getter.call(this);\n if (!isTrussEqual(oldValue, newValue)) item.numUpdates += 1;\n return newValue;\n } finally {\n item.computeTime += performance.now() - startTime;\n item.numRecomputes += 1;\n }\n };\n }\n}\n\nexport default new Stats();\n","import {Handle, Query, Reference} from './Reference.js';\nimport angular from './angularCompatibility.js';\nimport stats from './utils/stats.js';\nimport {isTrussEqual} from './utils/utils.js';\n\nimport _ from 'lodash';\nimport Vue from 'vue';\n\n\nexport default class Connector {\n constructor(scope, connections, tree, method, refs) {\n Object.freeze(connections);\n this._scope = scope;\n this._connections = connections;\n this._tree = tree;\n this._method = method;\n\n this._subConnectors = {};\n this._disconnects = {};\n this._angularUnwatches = undefined;\n this._data = {};\n this._vue = new Vue({data: {\n descriptors: {},\n refs: refs || {},\n values: _.mapValues(connections, _.constant(undefined))\n }});\n // allow instance-level overrides of destroy() method\n this.destroy = this.destroy; // eslint-disable-line no-self-assign\n Object.seal(this);\n\n this._linkScopeProperties();\n\n _.forEach(connections, (descriptor, key) => {\n if (_.isFunction(descriptor)) {\n this._bindComputedConnection(key, descriptor);\n } else {\n this._connect(key, descriptor);\n }\n });\n\n if (angular.active && scope && scope.$on && scope.$id) {\n scope.$on('$destroy', () => {this.destroy();});\n }\n }\n\n get ready() {\n return _.every(this._connections, (ignored, key) => {\n const descriptor = this._vue.descriptors[key];\n if (!descriptor) return false;\n if (descriptor instanceof Handle) return descriptor.ready;\n return this._subConnectors[key].ready;\n });\n }\n\n get at() {\n return this._vue.refs;\n }\n\n get data() {\n return this._data;\n }\n\n destroy() {\n this._unlinkScopeProperties();\n _.forEach(this._angularUnwatches, unwatch => {unwatch();});\n _.forEach(this._connections, (descriptor, key) => {this._disconnect(key);});\n this._vue.$destroy();\n }\n\n _linkScopeProperties() {\n const dataProperties = _.mapValues(this._connections, (unused, key) => ({\n configurable: true, enumerable: false, get: () => {\n const descriptor = this._vue.descriptors[key];\n if (descriptor instanceof Reference) return descriptor.value;\n return this._vue.values[key];\n }\n }));\n Object.defineProperties(this._data, dataProperties);\n if (this._scope) {\n for (const key in this._connections) {\n if (key in this._scope) {\n throw new Error(`Property already defined on connection target: ${key}`);\n }\n }\n Object.defineProperties(this._scope, dataProperties);\n if (this._scope.__ob__) this._scope.__ob__.dep.notify();\n }\n }\n\n _unlinkScopeProperties() {\n if (!this._scope) return;\n _.forEach(this._connections, (descriptor, key) => {\n delete this._scope[key];\n });\n }\n\n _bindComputedConnection(key, fn) {\n const connectionStats = stats.for(`connection.at.${key}`);\n const getter = this._computeConnection.bind(this, fn, connectionStats);\n const update = this._updateComputedConnection.bind(this, key, fn, connectionStats);\n const angularWatch = angular.active && !fn.angularWatchSuppressed;\n // Use this._vue.$watch instead of truss.observe here so that we can disable the immediate\n // callback if we'll get one from Angular anyway.\n this._vue.$watch(getter, update, {immediate: !angularWatch});\n if (angularWatch) {\n if (!this._angularUnwatches) this._angularUnwatches = [];\n this._angularUnwatches.push(angular.watch(getter, update, true));\n }\n }\n\n _computeConnection(fn, connectionStats) {\n const startTime = performance.now();\n try {\n return flattenRefs(fn.call(this._scope));\n } finally {\n connectionStats.computeTime += performance.now() - startTime;\n connectionStats.numRecomputes += 1;\n }\n }\n\n _updateComputedConnection(key, value, connectionStats) {\n const newDescriptor = _.isFunction(value) ? value(this._scope) : value;\n const oldDescriptor = this._vue.descriptors[key];\n const descriptorChanged = !isTrussEqual(oldDescriptor, newDescriptor);\n if (!descriptorChanged) return;\n if (connectionStats && descriptorChanged) connectionStats.numUpdates += 1;\n if (!newDescriptor) {\n this._disconnect(key);\n return;\n }\n if (newDescriptor instanceof Handle || !_.has(this._subConnectors, key)) {\n this._disconnect(key);\n this._connect(key, newDescriptor);\n } else {\n this._subConnectors[key]._updateConnections(newDescriptor);\n }\n Vue.set(this._vue.descriptors, key, newDescriptor);\n angular.digest();\n }\n\n _updateConnections(connections) {\n _.forEach(connections, (descriptor, key) => {\n this._updateComputedConnection(key, descriptor);\n });\n _.forEach(this._connections, (descriptor, key) => {\n if (!_.has(connections, key)) this._updateComputedConnection(key);\n });\n this._connections = connections;\n }\n\n _connect(key, descriptor) {\n Vue.set(this._vue.descriptors, key, descriptor);\n angular.digest();\n if (!descriptor) return;\n Vue.set(this._vue.values, key, undefined);\n if (descriptor instanceof Reference) {\n Vue.set(this._vue.refs, key, descriptor);\n this._disconnects[key] = this._tree.connectReference(descriptor, this._method);\n } else if (descriptor instanceof Query) {\n Vue.set(this._vue.refs, key, descriptor);\n const updateFn = this._updateQueryValue.bind(this, key);\n this._disconnects[key] = this._tree.connectQuery(descriptor, updateFn, this._method);\n } else {\n const subScope = {}, subRefs = {};\n Vue.set(this._vue.refs, key, subRefs);\n const subConnector = this._subConnectors[key] =\n new Connector(subScope, descriptor, this._tree, this._method, subRefs);\n // Use a truss.observe here instead of this._vue.$watch so that the \"immediate\" execution\n // actually takes place after we've captured the unwatch function, in case the subConnector\n // is ready immediately.\n const unobserve = this._disconnects[key] = this._tree.truss.observe(\n () => subConnector.ready,\n subReady => {\n if (!subReady) return;\n unobserve();\n delete this._disconnects[key];\n Vue.set(this._vue.values, key, subScope);\n angular.digest();\n }\n );\n }\n }\n\n _disconnect(key) {\n Vue.delete(this._vue.refs, key);\n this._updateRefValue(key, undefined);\n if (_.has(this._subConnectors, key)) {\n this._subConnectors[key].destroy();\n delete this._subConnectors[key];\n }\n if (this._disconnects[key]) this._disconnects[key]();\n delete this._disconnects[key];\n Vue.delete(this._vue.descriptors, key);\n angular.digest();\n }\n\n _updateRefValue(key, value) {\n if (this._vue.values[key] !== value) {\n Vue.set(this._vue.values, key, value);\n angular.digest();\n }\n }\n\n _updateQueryValue(key, childKeys) {\n if (!this._vue.values[key]) {\n Vue.set(this._vue.values, key, {});\n angular.digest();\n }\n const subScope = this._vue.values[key];\n for (const childKey in subScope) {\n if (!Object.hasOwn(subScope, childKey)) continue;\n if (!_.includes(childKeys, childKey)) {\n Vue.delete(subScope, childKey);\n angular.digest();\n }\n }\n const object = this._tree.getObject(this._vue.descriptors[key].path);\n for (const childKey of childKeys) {\n if (Object.hasOwn(subScope, childKey)) continue;\n Vue.set(subScope, childKey, object[childKey]);\n angular.digest();\n }\n }\n\n}\n\nfunction flattenRefs(refs) {\n if (!refs) return;\n if (refs instanceof Handle) return refs.toString();\n return _.mapValues(refs, flattenRefs);\n}\n\n","export function wrapPromiseCallback(callback) {\n return function() {\n try {\n // eslint-disable-next-line no-invalid-this\n return Promise.resolve(callback.apply(this, arguments));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\nexport function promiseCancel(promise, cancel) {\n promise = promiseFinally(promise, () => {cancel = null;});\n promise.cancel = () => {\n if (!cancel) return;\n cancel();\n cancel = null;\n };\n propagatePromiseProperty(promise, 'cancel');\n return promise;\n}\n\nfunction propagatePromiseProperty(promise, propertyName) {\n const originalThen = promise.then, originalCatch = promise.catch;\n promise.then = (onResolved, onRejected) => {\n const derivedPromise = originalThen.call(promise, onResolved, onRejected);\n derivedPromise[propertyName] = promise[propertyName];\n propagatePromiseProperty(derivedPromise, propertyName);\n return derivedPromise;\n };\n promise.catch = onRejected => {\n const derivedPromise = originalCatch.call(promise, onRejected);\n derivedPromise[propertyName] = promise[propertyName];\n propagatePromiseProperty(derivedPromise, propertyName);\n return derivedPromise;\n };\n return promise;\n}\n\nexport function promiseFinally(promise, onFinally) {\n if (!onFinally) return promise;\n onFinally = wrapPromiseCallback(onFinally);\n return promise.then(result => {\n return onFinally().then(() => result);\n }, error => {\n return onFinally().then(() => Promise.reject(error));\n });\n}\n","import _ from 'lodash';\nimport Reference from './Reference.js';\nimport {wrapPromiseCallback} from './utils/promises.js';\nimport {joinPath} from './utils/paths.js';\n\n\nconst INTERCEPT_KEYS = [\n 'read', 'write', 'auth', 'set', 'update', 'commit', 'connect', 'peek', 'authenticate',\n 'unathenticate', 'certify', 'all'\n];\n\nconst EMPTY_ARRAY = [];\n\n\nclass SlowHandle {\n constructor(operation, delay, callback) {\n this._operation = operation;\n this._delay = delay;\n this._callback = callback;\n this._fired = false;\n }\n\n initiate() {\n this.cancel();\n this._fired = false;\n const elapsed = Date.now() - this._operation._startTimestamp;\n this._timeoutId = setTimeout(() => {\n this._fired = true;\n this._callback(this._operation);\n }, this._delay - elapsed);\n }\n\n cancel() {\n if (this._fired) this._callback(this._operation);\n if (this._timeoutId) clearTimeout(this._timeoutId);\n }\n}\n\n\nclass Operation {\n constructor(type, method, target, operand) {\n this._type = type;\n this._method = method;\n this._target = target;\n this._operand = operand;\n this._ready = false;\n this._running = false;\n this._ended = false;\n this._tries = 0;\n this._startTimestamp = Date.now();\n this._slowHandles = [];\n }\n\n get type() {return this._type;}\n get method() {return this._method;}\n get target() {return this._target;}\n get targets() {\n if (this._method !== 'update') return [this._target];\n return _.map(this._operand, (value, escapedPathFragment) => {\n return new Reference(\n this._target._tree, joinPath(this._target.path, escapedPathFragment),\n this._target._annotations);\n });\n }\n\n get operand() {return this._operand;}\n get ready() {return this._ready;}\n get running() {return this._running;}\n get ended() {return this._ended;}\n get tries() {return this._tries;}\n get error() {return this._error;}\n\n onSlow(delay, callback) {\n const handle = new SlowHandle(this, delay, callback);\n this._slowHandles.push(handle);\n handle.initiate();\n }\n\n _setRunning(value) {\n this._running = value;\n }\n\n _setEnded(value) {\n this._ended = value;\n }\n\n _markReady(ending) {\n this._ready = true;\n if (!ending) this._tries = 0;\n _.forEach(this._slowHandles, handle => handle.cancel());\n }\n\n _clearReady() {\n // Temporarily set ready to correctly reset previously triggered slow handles.\n this._ready = true;\n this._startTimestamp = Date.now();\n _.forEach(this._slowHandles, handle => handle.initiate());\n this._ready = false;\n }\n\n _incrementTries() {\n this._tries++;\n }\n}\n\n\nexport default class Dispatcher {\n constructor(bridge) {\n this._bridge = bridge;\n this._callbacks = {};\n Object.freeze(this);\n }\n\n intercept(interceptKey, callbacks) {\n if (!_.includes(INTERCEPT_KEYS, interceptKey)) {\n throw new Error('Unknown intercept operation type: ' + interceptKey);\n }\n const badCallbackKeys =\n _.difference(_.keys(callbacks), ['onBefore', 'onAfter', 'onError', 'onFailure']);\n if (badCallbackKeys.length) {\n throw new Error('Unknown intercept callback types: ' + badCallbackKeys.join(', '));\n }\n const wrappedCallbacks = {\n onBefore: this._addCallback('onBefore', interceptKey, callbacks.onBefore),\n onAfter: this._addCallback('onAfter', interceptKey, callbacks.onAfter),\n onError: this._addCallback('onError', interceptKey, callbacks.onError),\n onFailure: this._addCallback('onFailure', interceptKey, callbacks.onFailure)\n };\n return this._removeCallbacks.bind(this, interceptKey, wrappedCallbacks);\n }\n\n _addCallback(stage, interceptKey, callback) {\n if (!callback) return;\n const key = this._getCallbacksKey(stage, interceptKey);\n const wrappedCallback = wrapPromiseCallback(callback);\n (this._callbacks[key] || (this._callbacks[key] = [])).push(wrappedCallback);\n return wrappedCallback;\n }\n\n _removeCallback(stage, interceptKey, wrappedCallback) {\n if (!wrappedCallback) return;\n const key = this._getCallbacksKey(stage, interceptKey);\n if (this._callbacks[key]) _.pull(this._callbacks[key], wrappedCallback);\n }\n\n _removeCallbacks(interceptKey, wrappedCallbacks) {\n _.forEach(wrappedCallbacks, (wrappedCallback, stage) => {\n this._removeCallback(stage, interceptKey, wrappedCallback);\n });\n }\n\n _getCallbacks(stage, operationType, method) {\n return [].concat(\n this._callbacks[this._getCallbacksKey(stage, method)] || EMPTY_ARRAY,\n this._callbacks[this._getCallbacksKey(stage, operationType)] || EMPTY_ARRAY,\n this._callbacks[this._getCallbacksKey(stage, 'all')] || EMPTY_ARRAY\n );\n }\n\n _getCallbacksKey(stage, interceptKey) {\n return `${stage}_${interceptKey}`;\n }\n\n execute(operationType, method, target, operand, executor) {\n executor = wrapPromiseCallback(executor);\n const operation = this.createOperation(operationType, method, target, operand);\n return this.begin(operation).then(() => {\n const executeWithRetries = () => {\n return executor().catch(e => this._retryOrEnd(operation, e).then(executeWithRetries));\n };\n return executeWithRetries();\n }).then(result => this.end(operation).then(() => result));\n }\n\n createOperation(operationType, method, target, operand) {\n return new Operation(operationType, method, target, operand);\n }\n\n begin(operation) {\n return Promise.all(_.map(\n this._getCallbacks('onBefore', operation.type, operation.method),\n onBefore => onBefore(operation)\n )).then(() => {\n if (!operation.ended) operation._setRunning(true);\n }, e => this.end(operation, e));\n }\n\n markReady(operation) {\n operation._markReady();\n }\n\n clearReady(operation) {\n operation._clearReady();\n }\n\n retry(operation, error) {\n operation._incrementTries();\n operation._error = error;\n return Promise.all(_.map(\n this._getCallbacks('onError', operation.type, operation.method),\n onError => onError(operation, error)\n )).then(results => {\n // If the operation ended in the meantime, bail. This will cause the caller to attempt to\n // fail the operation, but since it's already ended the call to end() with an error will be a\n // no-op.\n if (operation.ended) return;\n const retrying = _.some(results);\n if (retrying) delete operation._error;\n return retrying;\n });\n }\n\n _retryOrEnd(operation, error) {\n return this.retry(operation, error).then(result => {\n if (!result) return this.end(operation, error);\n }, e => this.end(operation, e));\n }\n\n end(operation, error) {\n if (operation.ended) return Promise.resolve();\n operation._setRunning(false);\n operation._setEnded(true);\n if (error) {\n operation._error = error;\n } else {\n // In case we're racing with a retry(), wipe out the error.\n delete operation._error;\n }\n return Promise.all(_.map(\n this._getCallbacks('onAfter', operation.type, operation.method),\n onAfter => onAfter(operation)\n )).then(\n () => this._afterEnd(operation),\n e => {\n operation._error = e;\n return this._afterEnd(operation);\n }\n );\n }\n\n _afterEnd(operation) {\n operation._markReady(true);\n if (!operation.error) return Promise.resolve();\n const onFailureCallbacks = this._getCallbacks('onFailure', operation.type, operation.method);\n if (onFailureCallbacks) {\n setTimeout(() => {\n _.forEach(onFailureCallbacks, onFailure => onFailure(operation));\n }, 0);\n }\n return Promise.reject(operation.error);\n }\n}\n\n","const ALPHABET = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n\nconst getRandomValues = window.crypto && window.crypto.getRandomValues &&\n window.crypto.getRandomValues.bind(window.crypto);\n\nexport default class KeyGenerator {\n constructor() {\n this._lastUniqueKeyTime = 0;\n this._lastRandomValues = [];\n }\n\n generateUniqueKey(now) {\n now = now || Date.now();\n const chars = new Array(20);\n let prefix = now;\n for (let i = 7; i >= 0; i--) {\n chars[i] = ALPHABET.charAt(prefix & 0x3f); // eslint-disable-line no-bitwise\n prefix = Math.floor(prefix / 64);\n }\n if (now === this._lastUniqueKeyTime) {\n let i = 11;\n while (i >= 0 && this._lastRandomValues[i] === 63) {\n this._lastRandomValues[i] = 0;\n i -= 1;\n }\n if (i === -1) {\n throw new Error('Internal assertion failure: ran out of unique IDs for this millisecond');\n }\n this._lastRandomValues[i] += 1;\n } else {\n this._lastUniqueKeyTime = now;\n if (getRandomValues) {\n const array = new Uint8Array(12);\n getRandomValues(array);\n for (let i = 0; i < 12; i++) {\n // eslint-disable-next-line no-bitwise\n this._lastRandomValues[i] = array[i] & (i ? 0x3f : 0x0f);\n }\n } else {\n for (let i = 0; i < 12; i++) {\n // Make sure to leave some space for incrementing in the top nibble.\n this._lastRandomValues[i] = Math.floor(Math.random() * (i ? 64 : 16));\n }\n }\n }\n for (let i = 0; i < 12; i++) {\n chars[i + 8] = ALPHABET[this._lastRandomValues[i]];\n }\n return chars.join('');\n }\n}\n","import angular from './angularCompatibility.js';\nimport Vue from 'vue';\nimport Reference from './Reference.js';\n\n\nexport default class MetaTree {\n constructor(rootUrl, tree, bridge, dispatcher) {\n this._rootUrl = rootUrl;\n this._tree = tree;\n this._dispatcher = dispatcher;\n this._bridge = bridge;\n this._vue = new Vue({data: {$root: {\n connected: undefined, timeOffset: 0, user: undefined, userid: undefined,\n nowAtInterval(intervalMillis) {\n const key = 'now' + intervalMillis;\n if (!Object.hasOwn(this, key)) {\n const update = () => {\n Vue.set(this, key, Date.now() + this.timeOffset);\n angular.digest();\n };\n update();\n setInterval(update, intervalMillis);\n }\n return this[key];\n }\n }}});\n\n this._auth = {serial: 0, initialAuthChangeReceived: false, changePromise: Promise.resolve()};\n\n bridge.onAuth(rootUrl, this._handleAuthChange, this);\n\n this._connectInfoProperty('serverTimeOffset', 'timeOffset');\n this._connectInfoProperty('connected', 'connected');\n Object.freeze(this);\n }\n\n get root() {\n return this._vue.$data.$root;\n }\n\n destroy() {\n this._bridge.offAuth(this._rootUrl, this._handleAuthChange, this);\n this._vue.$destroy();\n }\n\n authenticate(token) {\n this._auth.serial++;\n return this._dispatcher.execute(\n 'auth', 'authenticate', new Reference(this._tree, '/'), token, () => {\n const promise = token ?\n this._bridge.authWithCustomToken(this._rootUrl, token) :\n this._bridge.authAnonymously(this._rootUrl);\n return promise.then(() => this._auth.changePromise);\n }\n );\n }\n\n unauthenticate() {\n // Signal user change to null pre-emptively. This is what the Firebase SDK does as well, since\n // it lets the app tear down user-required connections before the user is actually deauthed,\n // which can prevent spurious permission denied errors.\n this._auth.serial++;\n return this._handleAuthChange(null).then(approved => {\n // Bail if auth change callback initiated another authentication, since it will have already\n // sent the command to the bridge and sending our own now would incorrectly override it.\n if (!approved) return;\n return this._dispatcher.execute(\n 'auth', 'unauthenticate', new Reference(this._tree, '/'), undefined, () => {\n return this._bridge.unauth(this._rootUrl);\n }\n );\n });\n }\n\n _handleAuthChange(user) {\n const supersededChange = !this._auth.initialAuthChangeReceived && this._auth.serial;\n if (user !== undefined) this._auth.initialAuthChangeReceived = true;\n if (supersededChange) return;\n const authSerial = this._auth.serial;\n if (this.root.user === user) return Promise.resolve(false);\n const promise = this._dispatcher.execute(\n 'auth', 'certify', new Reference(this._tree, '/'), user, () => {\n if (this.root.user === user || authSerial !== this._auth.serial) return false;\n if (user) Object.freeze(user);\n this.root.user = user;\n this.root.userid = user && user.uid;\n angular.digest();\n return true;\n }\n );\n this._auth.changePromise = this._auth.changePromise.then(() => promise).catch();\n return promise;\n }\n\n _isAuthChangeStale(user) {\n return this.root.user === user;\n }\n\n _connectInfoProperty(property, attribute) {\n const url = new URL(this._rootUrl);\n url.pathname = encodeURI(`/.info/${property}`);\n this._bridge.on(url.href, url.href, null, 'value', snap => {\n this.root[attribute] = snap.value;\n angular.digest();\n });\n }\n}\n","import {Reference, Handle} from './Reference.js';\nimport angular from './angularCompatibility.js';\nimport stats from './utils/stats.js';\nimport {makePathMatcher, joinPath, splitPath, escapeKey, unescapeKey} from './utils/paths.js';\nimport {isTrussEqual, copyPrototype} from './utils/utils.js';\nimport {promiseFinally} from './utils/promises.js';\n\nimport _ from 'lodash';\n\n// These are defined separately for each object so they're not included in Value below.\nconst RESERVED_VALUE_PROPERTY_NAMES = {__ob__: true};\n\nconst UNSUPPORTED_LIFECYCLE_METHODS = new Set([\n 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'activated', 'deactivated', 'errorCaptured'\n]);\nconst UNSUPPORTED_LIFECYCLE_HOOKS =\n new Set(_.map(UNSUPPORTED_LIFECYCLE_METHODS, method => `hook:${method}`));\n\nconst LAST_COMPUTED_VALUE = Symbol('last-computed-value');\n\n// Holds properties that we're going to set on a model object that's being created right now as soon\n// as it's been created, but that we'd like to be accessible in the constructor. The object\n// prototype's getters will pick those up until they get overridden in the instance.\nlet creatingObjectProperties;\n\nlet currentPropertyFrozen;\n\n\nexport class BaseValue {\n get $info() {return this.$truss.info;}\n get $store() {return this.$truss.store;} // access indirectly to leave dependency trace\n get $now() {return this.$truss.now;}\n\n $newKey() {return this.$truss.newKey();}\n\n $intercept(actionType, callbacks) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const unintercept = this.$truss.intercept(actionType, callbacks);\n const uninterceptAndRemoveFinalizer = () => {\n unintercept();\n this.$off('hook:destroyed', uninterceptAndRemoveFinalizer);\n };\n this.$on('hook:destroyed', uninterceptAndRemoveFinalizer);\n return uninterceptAndRemoveFinalizer;\n }\n\n $connect(scope, connections) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n if (!connections) {\n connections = scope;\n scope = undefined;\n }\n const connector = this.$truss.connect(scope, wrapConnections(this, connections));\n const originalDestroy = connector.destroy;\n const destroy = () => {\n this.$off('hook:destroyed', destroy);\n return originalDestroy.call(connector);\n };\n this.$on('hook:destroyed', destroy);\n connector.destroy = destroy;\n return connector;\n }\n\n $peek(target, callback) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = promiseFinally(\n this.$truss.peek(target, callback), () => {this.$off('hook:destroyed', promise.cancel);}\n );\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n\n $observe(subjectFn, callbackFn, options) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n let unobserveAndRemoveFinalizer;\n\n const unobserve = this.$truss.observe(() => {\n this.$$touchThis();\n return subjectFn.call(this);\n }, callbackFn.bind(this), {...options, vm: this});\n\n unobserveAndRemoveFinalizer = () => { // eslint-disable-line prefer-const\n unobserve();\n this.$off('hook:destroyed', unobserveAndRemoveFinalizer);\n };\n this.$on('hook:destroyed', unobserveAndRemoveFinalizer);\n return unobserveAndRemoveFinalizer;\n }\n\n $when(expression, options) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = this.$truss.when(() => {\n this.$$touchThis();\n return expression.call(this);\n }, options);\n promiseFinally(promise, () => {this.$off('hook:destroyed', promise.cancel);});\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n}\n\n\nclass Value {\n get $parent() {return creatingObjectProperties.$parent.value;}\n get $path() {return creatingObjectProperties.$path.value;}\n get $truss() {\n Object.defineProperty(this, '$truss', {value: this.$parent.$truss});\n return this.$truss;\n }\n\n get $ref() {\n Object.defineProperty(this, '$ref', {value: new Reference(this.$truss._tree, this.$path)});\n return this.$ref;\n }\n\n get $refs() {return this.$ref;}\n get $key() {\n Object.defineProperty(\n this, '$key', {value: unescapeKey(this.$path.slice(this.$path.lastIndexOf('/') + 1))});\n return this.$key;\n }\n\n get $data() {return this;}\n get $hidden() {return false;} // eslint-disable-line lodash/prefer-constant\n get $empty() {return _.isEmpty(this.$data);}\n get $keys() {return _.keys(this.$data);}\n get $values() {return _.values(this.$data);}\n get $ready() {return this.$ref.ready;}\n get $overridden() {return false;} // eslint-disable-line lodash/prefer-constant\n\n $nextTick() {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = this.$truss.nextTick();\n promiseFinally(promise, () => {this.$off('hook:destroyed', promise.cancel);});\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n\n $freezeComputedProperty() {\n if (!_.isBoolean(currentPropertyFrozen)) {\n throw new Error('Cannot freeze a computed property outside of its getter function');\n }\n currentPropertyFrozen = true;\n }\n\n get $lastComputedValue() {\n if (!_.isBoolean(currentPropertyFrozen)) {\n throw new Error(\n 'Cannot use last computed value of a property outside of its getter function');\n }\n return LAST_COMPUTED_VALUE;\n }\n\n $set(value) {return this.$ref.set(value);}\n $update(values) {return this.$ref.update(values);}\n $override(values) {return this.$ref.override(values);}\n $commit(options, updateFn) {return this.$ref.commit(options, updateFn);}\n\n $$touchThis() {\n /* eslint-disable no-unused-expressions */\n if (this.__ob__) {\n this.__ob__.dep.depend();\n } else if (this.$parent) {\n (Object.hasOwn(this.$parent, '$data') ? this.$parent.$data : this.$parent)[this.$key];\n } else {\n this.$store;\n }\n /* eslint-enable no-unused-expressions */\n }\n\n get $destroyed() { // eslint-disable-line lodash/prefer-constant\n return false;\n }\n\n $on(event, callback) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n if (UNSUPPORTED_LIFECYCLE_HOOKS.has(event)) {\n throw new Error(`Models don't support the \"${event}\" lifecycle event`);\n }\n (this.$$hooks[event] = this.$$hooks[event] || []).push(callback);\n return this;\n }\n\n $once(event, callback) {\n const object = this;\n function cb(...args) {\n object.$off(event, cb);\n callback(...args);\n }\n cb.fn = callback;\n return this.$on(event, cb);\n }\n\n $off(event, callback) {\n if (event) {\n if (callback) {\n if (_.isArray(event)) {\n for (const ev of event) this.$off(ev, callback);\n } else if (this.$$hooks[event]) {\n const callbacks = this.$$hooks[event];\n for (let i = 0; i < callbacks.length; i++) {\n const cb = callbacks[i];\n if (cb === callback || cb.fn === callback) {\n callbacks.splice(i, 1);\n break;\n }\n }\n }\n } else {\n delete this.$$hooks[event];\n }\n } else {\n for (const key of _.keys(this.$$hooks)) delete this.$$hooks[key];\n }\n return this;\n }\n\n $emit(event, ...args) {\n if (_.has(this, '$$hooks')) {\n // Some callbacks remove themselves from the array, so clone it before iterating.\n _.forEach(_.clone(this.$$hooks[event]), callback => {\n if (callback.$once && callback.$once[event]) {\n callback.$once[event] -= 1;\n this.$off(event, callback);\n }\n callback(...args);\n });\n }\n return this;\n }\n\n get $$hooks() {\n Object.defineProperty(this, '$$hooks', {\n value: {}, writable: false, enumerable: false, configurable: false\n });\n return this.$$hooks;\n }\n}\n\ncopyPrototype(BaseValue, Value);\n\n_.forEach(Value.prototype, (prop, name) => {\n Object.defineProperty(\n Value.prototype, name, {value: prop, enumerable: false, configurable: false, writable: false});\n});\n\n\nclass ErrorWrapper {\n constructor(error) {\n this.error = error;\n }\n}\n\n\nclass FrozenWrapper {\n constructor(value) {\n this.value = value;\n }\n}\n\n\nexport default class Modeler {\n constructor(vue, debug) {\n this._vue = vue;\n this._trie = {Class: Value};\n this._debug = debug;\n Object.freeze(this);\n }\n\n init(classes, rootAcceptable) {\n if (_.isPlainObject(classes)) {\n _.forEach(classes, (Class, path) => {\n if (Class.$trussMount) return;\n Class.$$trussMount = Class.$$trussMount || [];\n Class.$$trussMount.push(path);\n });\n classes = _.values(classes);\n _.forEach(classes, Class => {\n if (!Class.$trussMount && Class.$$trussMount) {\n Class.$trussMount = Class.$$trussMount;\n delete Class.$$trussMount;\n }\n });\n }\n classes = _.uniq(classes);\n _.forEach(classes, Class => this._mountClass(Class, rootAcceptable));\n this._decorateTrie(this._trie);\n }\n\n destroy() {/* empty */}\n\n _getMount(path, scaffold, predicate) {\n const segments = splitPath(path, true);\n let node;\n for (const segment of segments) {\n let child = segment ?\n node.children && (node.children[segment] || !scaffold && node.children.$) : this._trie;\n if (!child) {\n if (!scaffold) return;\n node.children = node.children || {};\n child = node.children[segment] = {Class: Value};\n }\n node = child;\n if (predicate && predicate(node)) break;\n }\n return node;\n }\n\n _findMount(predicate, node) {\n if (!node) node = this._trie;\n if (predicate(node)) return node;\n for (const childKey of _.keys(node.children)) {\n const result = this._findMount(predicate, node.children[childKey]);\n if (result) return result;\n }\n }\n\n _decorateTrie(node) {\n _.forEach(node.children, child => {\n this._decorateTrie(child);\n if (child.local || child.localDescendants) node.localDescendants = true;\n });\n }\n\n _augmentClass(Class) {\n let computedProperties;\n let proto = Class.prototype;\n while (proto && proto.constructor !== Object) {\n for (const name of Object.getOwnPropertyNames(proto)) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, name);\n if (name.charAt(0) === '$') {\n if (_.isEqual(descriptor, Object.getOwnPropertyDescriptor(Value.prototype, name))) {\n continue;\n }\n throw new Error(`Property names starting with \"$\" are reserved: ${Class.name}.${name}`);\n }\n if (UNSUPPORTED_LIFECYCLE_METHODS.has(name) && _.isFunction(proto[name])) {\n throw new Error(`Models don't support the \"${name}\" lifecycle method`);\n }\n if (descriptor.get && !(computedProperties && computedProperties[name])) {\n (computedProperties || (computedProperties = {}))[name] = {\n name, fullName: `${proto.constructor.name}.${name}`, get: descriptor.get,\n set: descriptor.set\n };\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n for (const name of Object.getOwnPropertyNames(Value.prototype)) {\n if (name === 'constructor' || Object.hasOwn(Class.prototype, name)) continue;\n Object.defineProperty(\n Class.prototype, name, Object.getOwnPropertyDescriptor(Value.prototype, name));\n }\n return computedProperties;\n }\n\n _mountClass(Class, rootAcceptable) {\n const computedProperties = this._augmentClass(Class);\n const allVariables = [];\n let mounts = Class.$trussMount;\n if (!mounts) throw new Error(`Class ${Class.name} lacks a $trussMount static property`);\n if (!_.isArray(mounts)) mounts = [mounts];\n _.forEach(mounts, mount => {\n if (_.isString(mount)) mount = {path: mount};\n if (!rootAcceptable && mount.path === '/') {\n throw new Error('Data root already accessed, too late to mount class');\n }\n const matcher = makePathMatcher(mount.path);\n for (const variable of matcher.variables) {\n if (variable === '$' || variable.charAt(1) === '$') {\n throw new Error(`Invalid variable name: ${variable}`);\n }\n if (variable.charAt(0) === '$' && (\n _.has(Value.prototype, variable) || RESERVED_VALUE_PROPERTY_NAMES[variable]\n )) {\n throw new Error(`Variable name conflicts with built-in property or method: ${variable}`);\n }\n allVariables.push(variable);\n }\n const escapedKey = mount.path.match(/\\/([^/]*)$/)[1];\n if (escapedKey.charAt(0) === '$') {\n if (mount.placeholder) {\n throw new Error(\n `Class ${Class.name} mounted at wildcard ${escapedKey} cannot be a placeholder`);\n }\n } else if (!_.has(mount, 'placeholder')) {\n mount.placeholder = {};\n }\n const targetMount = this._getMount(mount.path.replace(/\\$[^/]*/g, '$'), true);\n if (targetMount.matcher && (\n targetMount.escapedKey === escapedKey ||\n targetMount.escapedKey.charAt(0) === '$' && escapedKey.charAt(0) === '$'\n )) {\n throw new Error(\n `Multiple classes mounted at ${mount.path}: ${targetMount.Class.name}, ${Class.name}`);\n }\n _.assign(\n targetMount, {Class, matcher, computedProperties, escapedKey},\n _.pick(mount, 'placeholder', 'local', 'keysUnsafe', 'hidden'));\n });\n _(allVariables).uniq().forEach(variable => {\n Object.defineProperty(Class.prototype, variable, {get() {\n return creatingObjectProperties ?\n creatingObjectProperties[variable] && creatingObjectProperties[variable].value :\n undefined;\n }});\n });\n }\n\n /**\n * Creates a Truss object and sets all its basic properties: path segment variables, user-defined\n * properties, and computed properties. The latter two will be enumerable so that Vue will pick\n * them up and make the reactive.\n */\n createObject(path, properties) {\n const mount = this._getMount(path) || {Class: Value};\n try {\n if (mount.matcher) {\n const match = mount.matcher.match(path);\n for (const variable in match) {\n properties[variable] = {value: match[variable]};\n }\n }\n\n creatingObjectProperties = properties;\n const object = new mount.Class();\n creatingObjectProperties = null;\n\n if (angular.active) this._wrapProperties(object);\n\n if (mount.keysUnsafe) {\n properties.$data = {value: Object.create(null), configurable: true, enumerable: true};\n }\n if (mount.hidden) properties.$hidden = {value: true};\n if (mount.computedProperties) {\n _.forEach(mount.computedProperties, prop => {\n properties[prop.name] = this._buildComputedPropertyDescriptor(object, prop);\n });\n }\n\n return object;\n } catch (e) {\n e.extra = _.assign({mount, properties, className: mount.Class && mount.Class.name}, e.extra);\n throw e;\n }\n }\n\n _wrapProperties(object) {\n _.forEach(object, (value, key) => {\n const valueKey = '$_' + key;\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n const valueDescriptor = descriptor.get && descriptor.set ? {\n get: descriptor.get, set: descriptor.set, configurable: true\n } : {value, writable: true};\n Object.defineProperties(object, {\n [valueKey]: valueDescriptor,\n [key]: {\n get: () => object[valueKey],\n set: arg => {object[valueKey] = arg; angular.digest();},\n enumerable: true, configurable: true\n }\n });\n });\n }\n\n _buildComputedPropertyDescriptor(object, prop) {\n const propertyStats = stats.for(prop.fullName);\n\n let value, pendingPromise;\n let writeAllowed = false;\n\n const initialize = () => {\n let unwatchNow = false;\n const compute = computeValue.bind(object, prop, propertyStats);\n compute.toString = _.constant(`compute ${prop.fullName}`);\n let unwatch = () => {unwatchNow = true;};\n unwatch = this._vue.$watch(compute, newValue => {\n if (object.$destroyed) {\n unwatch();\n return;\n }\n if (pendingPromise) {\n if (pendingPromise.cancel) pendingPromise.cancel();\n pendingPromise = undefined;\n }\n if (_.isObject(newValue) && _.isFunction(newValue.then)) {\n const promise = newValue.then(finalValue => {\n if (promise === pendingPromise) update(finalValue);\n // No need to angular.digest() here, since if we're running under Angular then we expect\n // promises to be aliased to its $q service, which triggers digest itself.\n }, error => {\n if (promise === pendingPromise && update(new ErrorWrapper(error)) &&\n !error.trussExpectedException) throw error;\n });\n pendingPromise = promise;\n } else if (update(newValue)) {\n angular.digest();\n if (newValue instanceof ErrorWrapper && !newValue.error.trussExpectedException) {\n throw newValue.error;\n }\n }\n }, {immediate: true}); // use immediate:true since watcher will run computeValue anyway\n // Hack to change order of computed property watchers. By flipping their ids to be negative,\n // we ensure that they will settle before all other watchers, and also that children\n // properties will settle before their parents since values are often aggregated upwards.\n const watcher = _.last(this._vue._watchers || this._vue._scope.effects);\n watcher.id = -watcher.id;\n\n function update(newValue) {\n const startTime = performance.now();\n if (newValue instanceof FrozenWrapper) {\n newValue = newValue.value;\n unwatch();\n object.$off('hook:destroyed', unwatch);\n }\n if (newValue === LAST_COMPUTED_VALUE || isTrussEqual(value, newValue)) return;\n // console.log('updating', object.$key, prop.fullName, 'from', value, 'to', newValue);\n writeAllowed = true;\n object[prop.name] = newValue;\n writeAllowed = false;\n // Freeze the computed value so it can't be accidentally modified by a third party. Ideally\n // we'd freeze it before setting it so that Vue wouldn't instrument the object recursively\n // (since it can't change anyway), but we actually need the instrumentation in case a client\n // tries to access an inexistent property off a computed pointer to an unfrozen value (e.g.,\n // a $truss-ified object). When instrumented, Vue will add a dependency on the unfrozen\n // value in case the property is later added. If uninstrumented, the dependency won't be\n // added and we won't be notified. And Vue only instruments extensible objects...\n freeze(newValue);\n propertyStats.numUpdates += 1;\n propertyStats.updateTime += performance.now() - startTime;\n return true;\n }\n\n if (unwatchNow) {\n unwatch();\n } else {\n object.$on('hook:destroyed', unwatch);\n }\n\n object.$off('hook:created', initialize);\n };\n object.$on('hook:created', initialize);\n\n return {\n enumerable: true, configurable: true,\n get() {\n if (!writeAllowed && value instanceof ErrorWrapper) throw value.error;\n return value;\n },\n set(newValue) {\n if (writeAllowed) {\n value = newValue;\n } else if (prop.set) {\n prop.set.call(this, newValue);\n } else {\n throw new Error(`You cannot set a computed property: ${prop.name}`);\n }\n }\n };\n }\n\n destroyObject(object) {\n Object.defineProperty(\n object, '$destroyed', {value: true, enumerable: false, configurable: false});\n }\n\n emitLifecycleHook(object, hook) {\n if (_.isFunction(object[hook])) object[hook]();\n object.$emit(`hook:${hook}`);\n }\n\n isPlaceholder(path) {\n const mount = this._getMount(path);\n return mount && mount.placeholder;\n }\n\n isLocal(path, value) {\n const mount = this._getMount(path, false, mount => mount.local);\n if (mount && mount.local) return true;\n if (this._hasLocalProperties(mount, value)) {\n throw new Error('Write on a mix of local and remote tree paths.');\n }\n return false;\n }\n\n _hasLocalProperties(mount, value) {\n if (!mount) return false;\n if (mount.local) return true;\n if (!mount.localDescendants || !_.isObject(value)) return false;\n for (const key in value) {\n const local =\n this._hasLocalProperties(mount.children[escapeKey(key)] || mount.children.$, value[key]);\n if (local) return true;\n }\n return false;\n }\n\n forEachPlaceholderChild(path, iteratee) {\n const mount = this._getMount(path);\n _.forEach(mount && mount.children, child => {\n if (child.placeholder) iteratee(child);\n });\n }\n\n checkVueObject(object, path, checkedObjects) {\n const top = !checkedObjects;\n if (top) checkedObjects = new Set();\n const objectPropertyValues = new Map();\n const mount = this._findMount(candidate => candidate.Class === object.constructor);\n const targetProperties = _(object)\n .thru(Object.getOwnPropertyNames)\n .reject(key =>\n RESERVED_VALUE_PROPERTY_NAMES[key] || Object.hasOwn(Value.prototype, key) ||\n /^\\$_/.test(key)\n )\n .reject(key => mount && mount.matcher && _.includes(mount.matcher.variables, key))\n .map(key => {\n let value;\n try {\n value = object[key];\n // Ignore builtin object types.\n if (value instanceof RegExp) return;\n } catch {\n // Ignore any values that hold exceptions, or otherwise throw on access -- we won't be\n // able to check them anyway.\n return;\n }\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n const computed =\n !descriptor.enumerable && descriptor.set && !Object.hasOwn(object, '$_' + key);\n return {key, value, descriptor, computed};\n })\n .compact()\n .value();\n\n for (const {key, value, descriptor, computed} of targetProperties) {\n if (!(_.isArray(object) && (/^\\d+$/.test(key) || key === 'length'))) {\n if ('value' in descriptor || !descriptor.get) {\n throw new Error(\n `Value at ${path}, contained in a Firetruss object, has a rogue property: ${key}`);\n }\n if (object.$truss && descriptor.enumerable) {\n try {\n object[key] = value;\n throw new Error(\n `Firetruss object at ${path} has an enumerable non-Firebase property: ${key}`);\n } catch (e) {\n if (e.trussCode !== 'firebase_overwrite') throw e;\n }\n }\n }\n if (_.isObject(value)) {\n if (!checkedObjects.has(value) && !Object.isSealed(value) &&\n !(_.isFunction(value) || _.isElement(value) || value instanceof Promise)) {\n checkedObjects.add(value);\n this.checkVueObject(value, joinPath(path, escapeKey(key)), checkedObjects);\n }\n if (!computed && !value.$truss) objectPropertyValues.set(value, key);\n }\n }\n\n for (const {key, value, computed} of targetProperties) {\n if (computed && _.isObject(value) && !value.$truss) {\n const otherKey = objectPropertyValues.get(value);\n if (otherKey) {\n throw new Error(\n `Firetruss object at ${path} has properties ${key} ` +\n `and ${otherKey} with an aliased value`);\n }\n }\n }\n }\n}\n\n\nfunction computeValue(prop, propertyStats) {\n /* eslint-disable no-invalid-this */\n if (this.$destroyed) return;\n // Touch this object, since a failed access to a missing property doesn't get captured as a\n // dependency.\n this.$$touchThis();\n\n const oldPropertyFrozen = currentPropertyFrozen;\n currentPropertyFrozen = false;\n const startTime = performance.now();\n let value;\n try {\n try {\n value = prop.get.call(this);\n } catch (e) {\n value = new ErrorWrapper(e);\n } finally {\n propertyStats.computeTime += performance.now() - startTime;\n propertyStats.numRecomputes += 1;\n }\n if (currentPropertyFrozen) value = new FrozenWrapper(value);\n return value;\n } finally {\n currentPropertyFrozen = oldPropertyFrozen;\n }\n /* eslint-enable no-invalid-this */\n}\n\nfunction wrapConnections(object, connections) {\n if (!connections || connections instanceof Handle) return connections;\n if (_.isFunction(connections)) {\n const fn = function() {\n /* eslint-disable no-invalid-this */\n object.$$touchThis();\n return wrapConnections(object, connections.call(this));\n /* eslint-enable no-invalid-this */\n };\n fn.angularWatchSuppressed = true;\n return fn;\n }\n return _.mapValues(connections, descriptor => wrapConnections(object, descriptor));\n}\n\nfunction freeze(object) {\n if (_.isNil(object) || !_.isObject(object) || Object.isFrozen(object) || object.$truss) {\n return object;\n }\n object = Object.freeze(object);\n if (_.isArray(object)) return _.map(object, value => freeze(value));\n return _.mapValues(object, value => freeze(value));\n}\n","import _ from 'lodash';\nimport Vue from 'vue';\nimport angular from './angularCompatibility.js';\nimport {splitPath} from './utils/paths.js';\n\n\nclass QueryHandler {\n constructor(coupler, query) {\n this._coupler = coupler;\n this._query = query;\n this._listeners = [];\n this._keys = [];\n this._coupler._url.pathname = encodeURI(query.path);\n this._url = this._coupler._url.toString();\n this._segments = splitPath(query.path, true);\n this._listening = false;\n this.ready = false;\n }\n\n attach(operation, keysCallback) {\n this._listen();\n this._listeners.push({operation, keysCallback});\n if (this.ready) {\n this._coupler._dispatcher.markReady(operation);\n if (keysCallback) keysCallback(this._keys);\n }\n }\n\n detach(operation) {\n const k = _.findIndex(this._listeners, {operation});\n if (k >= 0) this._listeners.splice(k, 1);\n return this._listeners.length;\n }\n\n _listen() {\n if (this._listening) return;\n this._coupler._bridge.on(\n this._query.toString(), this._url, this._query.constraints, 'value',\n this._handleSnapshot, this._handleError, this, {sync: true});\n this._listening = true;\n }\n\n destroy() {\n this._coupler._bridge.off(\n this._query.toString(), this._url, this._query.constraints, 'value', this._handleSnapshot,\n this);\n this._listening = false;\n this.ready = false;\n angular.digest();\n for (const key of this._keys) {\n this._coupler._decoupleSegments(this._segments.concat(key));\n }\n }\n\n _handleSnapshot(snap) {\n this._coupler._queueSnapshotCallback(() => {\n // Order is important here: first couple any new subpaths so _handleSnapshot will update the\n // tree, then tell the client to update its keys, pulling values from the tree.\n if (!this._listeners.length || !this._listening) return;\n const updatedKeys = this._updateKeysAndApplySnapshot(snap);\n if (!this.ready) {\n this.ready = true;\n angular.digest();\n for (const listener of this._listeners) {\n this._coupler._dispatcher.markReady(listener.operation);\n }\n }\n if (updatedKeys) {\n for (const listener of this._listeners) {\n if (listener.keysCallback) listener.keysCallback(updatedKeys);\n }\n }\n });\n }\n\n _updateKeysAndApplySnapshot(snap) {\n let updatedKeys;\n if (snap.path === this._query.path) {\n updatedKeys = _.keys(snap.value);\n updatedKeys.sort();\n if (_.isEqual(this._keys, updatedKeys)) {\n updatedKeys = null;\n } else {\n for (const key of _.difference(updatedKeys, this._keys)) {\n this._coupler._coupleSegments(this._segments.concat(key));\n }\n for (const key of _.difference(this._keys, updatedKeys)) {\n // Decoupling a segment will prune the tree at that location if there are no other\n // listeners.\n this._coupler._decoupleSegments(this._segments.concat(key));\n }\n this._keys = updatedKeys;\n }\n // The snapshot may be partial, so create synthetic snapshots for subpaths and apply those to\n // update / insert values. (Deleted ones got pruned above.)\n if (snap.exists) {\n const rootValue = snap.value;\n const rootPath = snap.path;\n for (const key of this._keys) {\n snap._path = rootPath + '/' + key;\n snap._key = undefined;\n snap._value = rootValue[key];\n this._coupler._applySnapshot(snap);\n }\n // Restore original properties, just in case.\n snap._path = rootPath;\n snap._key = undefined;\n snap._value = rootValue;\n }\n } else if (snap.path.replace(/\\/[^/]+/, '') === this._query.path) {\n const hasKey = _.includes(this._keys, snap.key);\n if (snap.value) {\n if (!hasKey) {\n this._coupler._coupleSegments(this._segments.concat(snap.key));\n this._keys.push(snap.key);\n this._keys.sort();\n updatedKeys = this._keys;\n }\n } else if (hasKey) {\n this._coupler._decoupleSegments(this._segments.concat(snap.key));\n _.pull(this._keys, snap.key);\n this._keys.sort();\n updatedKeys = this._keys;\n }\n // A snapshot under the query's level is guaranteed to be a full snapshot, so we can apply it\n // directly.\n this._coupler._applySnapshot(snap);\n }\n return updatedKeys;\n }\n\n _handleError(error) {\n if (!this._listeners.length || !this._listening) return;\n this._listening = false;\n this.ready = false;\n for (const key of this._keys) this._coupler._decoupleSegments(this._segments.concat(key));\n this._keys = [];\n angular.digest();\n Promise.all(_.map(this._listeners, listener => {\n this._coupler._dispatcher.clearReady(listener.operation);\n return this._coupler._dispatcher.retry(listener.operation, error).catch(e => {\n listener.operation._disconnect(e);\n return false;\n });\n })).then(results => {\n if (_.some(results)) {\n if (this._listeners.length) this._listen();\n } else {\n for (const listener of this._listeners) listener.operation._disconnect(error);\n }\n });\n }\n}\n\n\nclass Node {\n constructor(coupler, path, parent) {\n this._coupler = coupler;\n this.path = path;\n this.parent = parent;\n this._coupler._url.pathname = encodeURI(path);\n this.url = this._coupler._url.toString();\n this.operations = [];\n this.queryCount = 0;\n this.listening = false;\n this.ready = false;\n this.children = {};\n }\n\n get active() {\n return this.count || this.queryCount;\n }\n\n get count() {\n return this.operations.length;\n }\n\n listen(skip) {\n if (!skip && this.count) {\n if (this.listening) return;\n _.forEach(this.operations, op => {this._coupler._dispatcher.clearReady(op);});\n this._coupler._bridge.on(\n this.url, this.url, null, 'value', this._handleSnapshot, this._handleError, this,\n {sync: true});\n this.listening = true;\n } else {\n _.forEach(this.children, child => {child.listen();});\n }\n }\n\n unlisten(skip) {\n if (!skip && this.listening) {\n this._coupler._bridge.off(this.url, this.url, null, 'value', this._handleSnapshot, this);\n this.listening = false;\n this._forAllDescendants(node => {\n if (node.listening) return false;\n if (node.ready) {\n node.ready = false;\n angular.digest();\n }\n });\n } else {\n _.forEach(this.children, child => {child.unlisten();});\n }\n }\n\n _handleSnapshot(snap) {\n this._coupler._queueSnapshotCallback(() => {\n if (!this.listening || !this._coupler.isTrunkCoupled(snap.path)) return;\n this._coupler._applySnapshot(snap);\n if (!this.ready && snap.path === this.path) {\n this.ready = true;\n angular.digest();\n this.unlisten(true);\n this._forAllDescendants(node => {\n for (const op of node.operations) this._coupler._dispatcher.markReady(op);\n });\n }\n });\n }\n\n _handleError(error) {\n if (!this.count || !this.listening) return;\n this.listening = false;\n this._forAllDescendants(node => {\n if (node.listening) return false;\n if (node.ready) {\n node.ready = false;\n angular.digest();\n }\n for (const op of node.operations) this._coupler._dispatcher.clearReady(op);\n });\n // Immediately prune all data below this node. We don't want to decouple it since the operation\n // may want to retry. We also don't want to look for other coupled paths below (that may not be\n // subject to the permission denied error) since they're not listening and the data would get\n // stale. If this node doesn't retry and gets decoupled we'll automatically start listening on\n // descendants and (try to) refill the subtrees.\n this._coupler._prunePath(this.path);\n return Promise.all(_.map(this.operations, op => {\n return this._coupler._dispatcher.retry(op, error).catch(e => {\n op._disconnect(e);\n return false;\n });\n })).then(results => {\n if (_.some(results)) {\n if (this.count) this.listen();\n } else {\n for (const op of this.operations) op._disconnect(error);\n // Pulling all the operations will automatically get us listening on descendants.\n }\n });\n }\n\n _forAllDescendants(iteratee) {\n if (iteratee(this) === false) return;\n _.forEach(this.children, child => child._forAllDescendants(iteratee));\n }\n\n collectCoupledDescendantPaths(paths) {\n if (!paths) paths = {};\n paths[this.path] = this.active;\n if (!this.active) {\n _.forEach(this.children, child => {child.collectCoupledDescendantPaths(paths);});\n }\n return paths;\n }\n}\n\n\nexport default class Coupler {\n constructor(rootUrl, bridge, dispatcher, applySnapshot, prunePath) {\n this._url = new URL(rootUrl);\n this._bridge = bridge;\n this._dispatcher = dispatcher;\n this._applySnapshot = applySnapshot;\n this._pendingSnapshotCallbacks = [];\n this._throttled = {processPendingSnapshots: this._processPendingSnapshots};\n this._prunePath = prunePath;\n this._vue = new Vue({data: {root: undefined, queryHandlers: {}}});\n // Prevent Vue from instrumenting rendering since there's actually nothing to render, and the\n // warnings cause false positives from Lodash primitives when running tests.\n this._vue._renderProxy = this._vue;\n this._nodeIndex = Object.create(null);\n Object.freeze(this);\n // Set root node after freezing Coupler, otherwise it gets vue-ified too.\n this._vue.$data.root = new Node(this, '/');\n this._nodeIndex['/'] = this._root;\n }\n\n get _root() {\n return this._vue.$data.root;\n }\n\n get _queryHandlers() {\n return this._vue.$data.queryHandlers;\n }\n\n destroy() {\n _.forEach(this._queryHandlers, queryHandler => {queryHandler.destroy();});\n this._root.unlisten();\n this._vue.$destroy();\n }\n\n couple(path, operation) {\n return this._coupleSegments(splitPath(path, true), operation);\n }\n\n _coupleSegments(segments, operation) {\n let node;\n let superseded = !operation;\n let ready = false;\n for (const segment of segments) {\n let child = segment ? node.children && node.children[segment] : this._root;\n if (!child) {\n child = new Node(this, `${node.path === '/' ? '' : node.path}/${segment}`, node);\n Vue.set(node.children, segment, child);\n this._nodeIndex[child.path] = child;\n }\n superseded = superseded || child.listening;\n ready = ready || child.ready;\n node = child;\n }\n if (operation) {\n node.operations.push(operation);\n } else {\n node.queryCount++;\n }\n if (superseded) {\n if (operation && ready) this._dispatcher.markReady(operation);\n } else {\n node.listen(); // node will call unlisten() on descendants when ready\n }\n }\n\n decouple(path, operation) {\n return this._decoupleSegments(splitPath(path, true), operation);\n }\n\n _decoupleSegments(segments, operation) {\n const ancestors = [];\n let node;\n for (const segment of segments) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (!node) break;\n ancestors.push(node);\n }\n if (!node || !(operation ? node.count : node.queryCount)) {\n throw new Error(`Path not coupled: ${segments.join('/') || '/'}`);\n }\n if (operation) {\n _.pull(node.operations, operation);\n } else {\n node.queryCount--;\n }\n if (operation && !node.count) {\n // Ideally, we wouldn't resync the full values here since we probably already have the current\n // value for all children. But making sure that's true is tricky in an async system (what if\n // the node's value changes and the update crosses the 'off' call in transit?) and this\n // situation should be sufficiently rare that the optimization is probably not worth it right\n // now.\n node.listen();\n if (node.listening) node.unlisten();\n }\n if (!node.active) {\n for (let i = ancestors.length - 1; i > 0; i--) {\n node = ancestors[i];\n if (node === this._root || node.active || !_.isEmpty(node.children)) break;\n Vue.delete(ancestors[i - 1].children, segments[i]);\n node.ready = undefined;\n delete this._nodeIndex[node.path];\n }\n const path = segments.join('/') || '/';\n this._prunePath(path, this.findCoupledDescendantPaths(path));\n }\n }\n\n subscribe(query, operation, keysCallback) {\n let queryHandler = this._queryHandlers[query.toString()];\n if (!queryHandler) {\n queryHandler = new QueryHandler(this, query);\n Vue.set(this._queryHandlers, query.toString(), queryHandler);\n }\n queryHandler.attach(operation, keysCallback);\n }\n\n unsubscribe(query, operation) {\n const queryHandler = this._queryHandlers[query.toString()];\n if (queryHandler && !queryHandler.detach(operation)) {\n queryHandler.destroy();\n Vue.delete(this._queryHandlers, query.toString());\n }\n }\n\n // Return whether the node at path or any ancestors are coupled.\n isTrunkCoupled(path) {\n const segments = splitPath(path, true);\n let node;\n for (const segment of segments) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (!node) return false;\n if (node.active) return true;\n }\n return false;\n }\n\n findCoupledDescendantPaths(path) {\n let node;\n for (const segment of splitPath(path, true)) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (node && node.active) return {[path]: node.active};\n if (!node) break;\n }\n return node && node.collectCoupledDescendantPaths();\n }\n\n isSubtreeReady(path) {\n let node, childSegment;\n function extractChildSegment(match) {\n childSegment = match.slice(1);\n return '';\n }\n while (!(node = this._nodeIndex[path])) {\n path = path.replace(/\\/[^/]*$/, extractChildSegment) || '/';\n }\n if (childSegment) void node.children; // state an interest in the closest ancestor's children\n while (node) {\n if (node.ready) return true;\n node = node.parent;\n }\n return false;\n }\n\n isQueryReady(query) {\n const queryHandler = this._queryHandlers[query.toString()];\n return queryHandler && queryHandler.ready;\n }\n\n _queueSnapshotCallback(callback) {\n this._pendingSnapshotCallbacks.push(callback);\n this._throttled.processPendingSnapshots.call(this);\n }\n\n _processPendingSnapshots() {\n for (const callback of this._pendingSnapshotCallbacks) callback();\n // Property is frozen, so we need to splice to empty the array.\n this._pendingSnapshotCallbacks.splice(0, Infinity);\n }\n\n throttleSnapshots(delay) {\n if (delay) {\n this._throttled.processPendingSnapshots =\n _.debounce(_.throttle(this._processPendingSnapshots, delay));\n } else {\n this._throttled.processPendingSnapshots = this._processPendingSnapshots;\n }\n }\n}\n\n","import angular from './angularCompatibility.js';\nimport Coupler from './Coupler.js';\nimport Modeler from './Modeler.js';\nimport Reference from './Reference.js';\nimport {escapeKey, escapeKeys, unescapeKey, joinPath, splitPath} from './utils/paths.js';\nimport {wrapPromiseCallback, promiseFinally} from './utils/promises.js';\nimport {SERVER_TIMESTAMP} from './utils/utils.js';\n\nimport _ from 'lodash';\nimport Vue from 'vue';\n\n\nclass Transaction {\n constructor(ref) {\n this._ref = ref;\n this._outcome = undefined;\n this._values = undefined;\n }\n\n get currentValue() {return this._ref.value;}\n get outcome() {return this._outcome;}\n get values() {return this._values;}\n\n _setOutcome(value) {\n if (this._outcome) throw new Error('Transaction already resolved with ' + this._outcome);\n this._outcome = value;\n }\n\n abort() {\n this._setOutcome('abort');\n }\n\n cancel() {\n this._setOutcome('cancel');\n }\n\n set(value) {\n if (value === undefined) throw new Error('Invalid argument: undefined');\n this._setOutcome('set');\n this._values = {'': value};\n }\n\n update(values) {\n if (values === undefined) throw new Error('Invalid argument: undefined');\n if (_.isEmpty(values)) return this.cancel();\n this._setOutcome('update');\n this._values = values;\n }\n}\n\n\nexport default class Tree {\n constructor(truss, rootUrl, bridge, dispatcher) {\n this._truss = truss;\n this._url = new URL(rootUrl);\n this._bridge = bridge;\n this._dispatcher = dispatcher;\n this._firebasePropertyEditAllowed = false;\n this._writeSerial = 0;\n this._localWrites = {};\n this._localWriteTimestamp = null;\n this._initialized = false;\n this._vue = new Vue({data: {$root: undefined}});\n this._modeler = new Modeler(this._vue, truss.constructor.VERSION === 'dev');\n this._coupler = new Coupler(\n rootUrl, bridge, dispatcher, this._integrateSnapshot.bind(this), this._prune.bind(this));\n Object.seal(this);\n // Call this.init(classes) to complete initialization; we need two phases so that truss can bind\n // the tree into its own accessors prior to defining computed functions, which may try to\n // access the tree root via truss.\n }\n\n get root() {\n if (!this._vue.$data.$root) {\n this._vue.$data.$root = this._createObject('/');\n this._fixObject(this._vue.$data.$root);\n this._completeCreateObject(this._vue.$data.$root);\n angular.digest();\n }\n return this._vue.$data.$root;\n }\n\n get truss() {\n return this._truss;\n }\n\n init(classes) {\n if (this._initialized) {\n throw new Error('Data objects already created, too late to mount classes');\n }\n this._initialized = true;\n this._modeler.init(classes, !this._vue.$data.$root);\n const createdObjects = [];\n this._plantPlaceholders(this.root, '/', undefined, createdObjects);\n for (const object of createdObjects) this._completeCreateObject(object);\n }\n\n destroy() {\n this._coupler.destroy();\n if (this._modeler) this._modeler.destroy();\n this._vue.$destroy();\n }\n\n connectReference(ref, method) {\n this._checkHandle(ref);\n const operation = this._dispatcher.createOperation('read', method, ref);\n operation._disconnect = this._disconnectReference.bind(this, ref, operation, undefined);\n this._dispatcher.begin(operation).then(() => {\n if (operation.running && !operation._disconnected) {\n this._coupler.couple(ref.path, operation);\n operation._coupled = true;\n }\n }).catch(_.noop); // ignore exception, let onFailure handlers deal with it\n return operation._disconnect;\n }\n\n _disconnectReference(ref, operation, unwatch, error) {\n if (operation._disconnected) return;\n operation._disconnected = true;\n if (unwatch) unwatch();\n if (operation._coupled) {\n this._coupler.decouple(ref.path, operation); // will call back to _prune if necessary\n operation._coupled = false;\n }\n this._dispatcher.end(operation, error).catch(_.noop);\n }\n\n isReferenceReady(ref) {\n this._checkHandle(ref);\n return this._coupler.isSubtreeReady(ref.path);\n }\n\n connectQuery(query, keysCallback, method) {\n this._checkHandle(query);\n const operation = this._dispatcher.createOperation('read', method, query);\n operation._disconnect = this._disconnectQuery.bind(this, query, operation);\n this._dispatcher.begin(operation).then(() => {\n if (operation.running && !operation._disconnected) {\n this._coupler.subscribe(query, operation, keysCallback);\n operation._coupled = true;\n }\n }).catch(_.noop); // ignore exception, let onFailure handlers deal with it\n return operation._disconnect;\n }\n\n _disconnectQuery(query, operation, error) {\n if (operation._disconnected) return;\n operation._disconnected = true;\n if (operation._coupled) {\n this._coupler.unsubscribe(query, operation); // will call back to _prune if necessary\n operation._coupled = false;\n }\n this._dispatcher.end(operation, error).catch(_.noop);\n }\n\n isQueryReady(query) {\n return this._coupler.isQueryReady(query);\n }\n\n _checkHandle(handle) {\n if (!handle.belongsTo(this._truss)) {\n throw new Error('Reference belongs to another Truss instance');\n }\n }\n\n throttleRemoteDataUpdates(delay) {\n this._coupler.throttleSnapshots(delay);\n }\n\n update(ref, method, values) {\n values = _.mapValues(values, value => escapeKeys(value));\n const numValues = _.size(values);\n if (!numValues) return Promise.resolve();\n if (method === 'update' || method === 'override') {\n checkUpdateHasOnlyDescendantsWithNoOverlap(ref.path, values);\n }\n if (this._applyLocalWrite(values, method === 'override')) return Promise.resolve();\n const pathPrefix = extractCommonPathPrefix(values);\n relativizePaths(pathPrefix, values);\n if (pathPrefix !== ref.path) ref = new Reference(ref._tree, pathPrefix, ref._annotations);\n this._url.pathname = encodeURI(pathPrefix);\n const url = this._url.toString();\n const writeSerial = this._writeSerial;\n const set = numValues === 1;\n const operand = set ? values[''] : values;\n return this._dispatcher.execute('write', set ? 'set' : 'update', ref, operand, () => {\n const promise = this._bridge[set ? 'set' : 'update'](url, operand, writeSerial);\n return promise.catch(e => {\n if (!e.immediateFailure) return Promise.reject(e);\n return promiseFinally(this._repair(ref, values), () => Promise.reject(e));\n });\n });\n }\n\n commit(ref, updateFunction) {\n let tries = 0, sameValueCount = 0;\n const attemptCounts = {};\n updateFunction = wrapPromiseCallback(updateFunction);\n\n const attemptTransaction = counter => {\n if (tries++ >= 25) {\n const error = new Error('Transaction needed too many retries, giving up');\n try {\n _.assign(error, {attemptCounts, sameValueCount});\n } catch {\n // ignore\n }\n return Promise.reject(error);\n }\n counter = counter || 'initial';\n attemptCounts[counter] = (attemptCounts[counter] || 0) + 1;\n const txn = new Transaction(ref);\n let oldValue;\n // Ensure that Vue's watcher queue gets emptied and computed properties are up to date before\n // running the updateFunction.\n return Vue.nextTick().then(() => {\n const newOldValue = toFirebaseJson(txn.currentValue);\n if (_.isEqual(newOldValue, oldValue)) sameValueCount += 1;\n oldValue = newOldValue;\n return updateFunction(txn);\n }).then(() => {\n if (!_.isEqual(oldValue, toFirebaseJson(txn.currentValue))) {\n return attemptTransaction('changed');\n }\n if (txn.outcome === 'abort') return txn; // early return to save time\n const values = _.mapValues(txn.values, value => escapeKeys(value));\n switch (txn.outcome) {\n case 'cancel':\n break;\n case 'set':\n if (this._applyLocalWrite({[ref.path]: values['']})) return Promise.resolve();\n break;\n case 'update':\n checkUpdateHasOnlyDescendantsWithNoOverlap(ref.path, values);\n if (this._applyLocalWrite(values)) return Promise.resolve();\n relativizePaths(ref.path, values);\n break;\n default:\n throw new Error('Invalid transaction outcome: ' + (txn.outcome || 'none'));\n }\n this._url.pathname = encodeURI(ref.path);\n return this._bridge.transaction(\n this._url.toString(), oldValue, values, this._writeSerial\n ).then(result => {\n _.forEach(result.snapshots, snapshot => this._integrateSnapshot(snapshot));\n return result.committed ? txn : attemptTransaction('stale');\n }, e => {\n if (e.immediateFailure && (txn.outcome === 'set' || txn.outcome === 'update')) {\n return promiseFinally(this._repair(ref, values), () => Promise.reject(e));\n }\n return Promise.reject(e);\n });\n });\n };\n\n return this._truss.peek(ref, () => {\n return this._dispatcher.execute('write', 'commit', ref, undefined, attemptTransaction);\n });\n }\n\n _repair(ref, values) {\n // If a write fails early -- that is, before it gets applied to the Firebase client's local\n // tree -- then we need to repair our own local tree manually since Firebase won't send events\n // to unwind the change. This should be very rare since it's always due to a developer mistake\n // so we don't need to be particularly efficient.\n const basePath = ref.path;\n const paths = _(values).keys().flatMap(key => {\n let path = basePath;\n if (key) path = joinPath(path, key);\n return _.keys(this._coupler.findCoupledDescendantPaths(path));\n }).value();\n return Promise.all(_.map(paths, path => {\n this._url.pathname = encodeURI(path);\n return this._bridge.once(this._url.toString()).then(snap => {\n this._integrateSnapshot(snap);\n });\n }));\n }\n\n _applyLocalWrite(values, override) {\n // TODO: correctly apply local writes that impact queries. Currently, a local write will update\n // any objects currently selected by a query, but won't add or remove results.\n this._writeSerial++;\n this._localWriteTimestamp = this._truss.now;\n const createdObjects = [];\n let numLocal = 0;\n _.forEach(values, (value, path) => {\n const local = this._modeler.isLocal(path, value);\n if (local) numLocal++;\n const coupledDescendantPaths =\n local ? {[path]: true} : this._coupler.findCoupledDescendantPaths(path);\n if (_.isEmpty(coupledDescendantPaths)) return;\n const offset = (path === '/' ? 0 : path.length) + 1;\n for (const descendantPath in coupledDescendantPaths) {\n const subPath = descendantPath.slice(offset);\n let subValue = value;\n if (subPath && value !== null && value !== undefined) {\n for (const segment of splitPath(subPath)) {\n subValue = subValue.$data[segment];\n if (subValue === undefined) break;\n }\n }\n if (_.isNil(subValue)) {\n this._prune(descendantPath);\n } else {\n const key = _.last(splitPath(descendantPath));\n this._plantValue(\n descendantPath, key, subValue,\n this._scaffoldAncestors(descendantPath, false, createdObjects), false, override, local,\n createdObjects\n );\n }\n if (!override && !local) this._localWrites[descendantPath] = this._writeSerial;\n }\n });\n for (const object of createdObjects) this._completeCreateObject(object);\n if (numLocal && numLocal < _.size(values)) {\n throw new Error('Write on a mix of local and remote tree paths.');\n }\n return override || !!numLocal;\n }\n\n /**\n * Creates a Truss object and sets all its basic properties: path segment variables, user-defined\n * properties, and computed properties. The latter two will be enumerable so that Vue will pick\n * them up and make the reactive, so you should call _completeCreateObject once it's done so and\n * before any Firebase properties are added.\n */\n _createObject(path, parent) {\n if (!this._initialized && path !== '/') this.init();\n const properties = {\n // We want Vue to wrap this; we'll make it non-enumerable in _fixObject.\n $parent: {value: parent, configurable: true, enumerable: true},\n $path: {value: path}\n };\n if (path === '/') properties.$truss = {value: this._truss};\n\n const object = this._modeler.createObject(path, properties);\n this._modeler.emitLifecycleHook(object, 'beforeCreate');\n this._defineObjectProperties(object, properties);\n return object;\n }\n\n _defineObjectProperties(object, properties) {\n const observer = object.__ob__;\n Object.defineProperties(object, properties);\n if (!observer) return;\n\n let addedReactiveProperties = false;\n for (const key of _.keys(properties)) {\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n if (!descriptor.configurable || !descriptor.enumerable) continue;\n Vue.util.defineReactive(object, key);\n addedReactiveProperties = true;\n }\n if (addedReactiveProperties) observer.dep.notify();\n }\n\n // To be called on the result of _createObject after it's been inserted into the _vue hierarchy\n // and Vue has had a chance to initialize it.\n _fixObject(object) {\n for (const name of Object.getOwnPropertyNames(object)) {\n const descriptor = Object.getOwnPropertyDescriptor(object, name);\n if (descriptor.configurable && descriptor.enumerable) {\n descriptor.enumerable = false;\n if (_.startsWith(name, '$')) descriptor.configurable = false;\n Object.defineProperty(object, name, descriptor);\n }\n }\n }\n\n // To be called on the result of _createObject after _fixObject, and after any additional Firebase\n // properties have been set, to run initializers.\n _completeCreateObject(object) {\n this._modeler.emitLifecycleHook(object, 'created');\n }\n\n _destroyObject(object) {\n if (!(object && object.$truss) || object.$destroyed) return;\n this._modeler.emitLifecycleHook(object, 'beforeDestroy');\n this._modeler.destroyObject(object);\n // Normally we'd only destroy enumerable children, which are the Firebase properties. However,\n // clients have the option of creating hidden placeholders, so we need to scan non-enumerable\n // properties as well. To distinguish such placeholders from the myriad other non-enumerable\n // properties (that lead all over tree, e.g. $parent), we check that the property's parent is\n // ourselves before destroying.\n for (const key of Object.getOwnPropertyNames(object.$data)) {\n const child = object.$data[key];\n if (child && child.$parent === object) this._destroyObject(child);\n }\n this._modeler.emitLifecycleHook(object, 'destroyed');\n }\n\n _integrateSnapshot(snap) {\n _.forEach(this._localWrites, (writeSerial, path) => {\n if (snap.writeSerial >= writeSerial) delete this._localWrites[path];\n });\n if (snap.exists) {\n const createdObjects = [];\n const parent = this._scaffoldAncestors(snap.path, true, createdObjects);\n if (parent) {\n this._plantValue(\n snap.path, snap.key, snap.value, parent, true, false, false, createdObjects);\n }\n for (const object of createdObjects) this._completeCreateObject(object);\n } else {\n this._prune(snap.path, null, true);\n }\n }\n\n _scaffoldAncestors(path, remoteWrite, createdObjects) {\n let object;\n const segments = _.dropRight(splitPath(path, true));\n let ancestorPath = '/';\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const key = unescapeKey(segment);\n let child = segment ? object.$data[key] : this.root;\n if (segment) ancestorPath += (ancestorPath === '/' ? '' : '/') + segment;\n if (child) {\n if (remoteWrite && this._localWrites[ancestorPath]) return;\n } else {\n child = this._plantValue(\n ancestorPath, key, {}, object, remoteWrite, false, false, createdObjects);\n if (!child) return;\n }\n object = child;\n }\n return object;\n }\n\n _plantValue(path, key, value, parent, remoteWrite, override, local, createdObjects) {\n if (remoteWrite && _.isNil(value)) {\n throw new Error(`Snapshot includes invalid value at ${path}: ${value}`);\n }\n if (remoteWrite && this._localWrites[path || '/']) return;\n if (_.isEqual(value, SERVER_TIMESTAMP)) value = this._localWriteTimestamp;\n let object = parent.$data[key];\n if (!_.isArray(value) && !(local ? _.isPlainObject(value) : _.isObject(value))) {\n this._destroyObject(object);\n if (!local && _.isNil(value)) {\n this._deleteFirebaseProperty(parent, key);\n } else {\n this._setFirebaseProperty(parent, key, value);\n }\n return;\n }\n let objectCreated = false;\n if (!_.isObject(object)) {\n // Need to pre-set the property, so that if the child object attempts to watch any of its own\n // properties while being created the $$touchThis method has something to add a dependency on\n // as the object's own properties won't be made reactive until *after* it's been created.\n this._setFirebaseProperty(parent, key, null);\n object = this._createObject(path, parent);\n this._setFirebaseProperty(parent, key, object, object.$hidden);\n this._fixObject(object);\n createdObjects.push(object);\n objectCreated = true;\n }\n if (override) {\n Object.defineProperty(object, '$overridden', {get: _.constant(true), configurable: true});\n } else if (object.$overridden) {\n delete object.$overridden;\n }\n // Plant hidden placeholders first, so their computed watchers will have a similar precedence to\n // the parent object, and the parent object's other children will get computed first. This can\n // optimize updates when parts of a complex model are broken out into hidden sub-models, and\n // shouldn't risk being overwritten by actual Firebase data since that will rarely (never?) be\n // hidden.\n if (objectCreated) this._plantPlaceholders(object, path, true, createdObjects);\n _.forEach(value, (item, escapedChildKey) => {\n this._plantValue(\n joinPath(path, escapedChildKey), unescapeKey(escapedChildKey), item, object, remoteWrite,\n override, local, createdObjects\n );\n });\n if (objectCreated) {\n this._plantPlaceholders(object, path, false, createdObjects);\n } else {\n _.forEach(object.$data, (item, childKey) => {\n const escapedChildKey = escapeKey(childKey);\n if (!Object.hasOwn(value, escapedChildKey)) {\n this._prune(joinPath(path, escapedChildKey), null, remoteWrite);\n }\n });\n }\n return object;\n }\n\n _plantPlaceholders(object, path, hidden, createdObjects) {\n this._modeler.forEachPlaceholderChild(path, mount => {\n if (hidden !== undefined && hidden !== !!mount.hidden) return;\n const key = unescapeKey(mount.escapedKey);\n if (!Object.hasOwn(object.$data, key)) {\n this._plantValue(\n joinPath(path, mount.escapedKey), key, mount.placeholder, object, false, false, false,\n createdObjects);\n }\n });\n }\n\n _prune(path, lockedDescendantPaths, remoteWrite) {\n lockedDescendantPaths = lockedDescendantPaths || {};\n const object = this.getObject(path);\n if (object === undefined) return;\n if (remoteWrite && this._avoidLocalWritePaths(path, lockedDescendantPaths)) return;\n if (!(_.isEmpty(lockedDescendantPaths) && this._pruneAncestors(path, object)) &&\n _.isObject(object)) {\n // The target object is a placeholder, and all ancestors are placeholders or otherwise needed\n // as well, so we can't delete it. Instead, dive into its descendants to delete what we can.\n this._pruneDescendants(object, lockedDescendantPaths);\n }\n }\n\n _avoidLocalWritePaths(path, lockedDescendantPaths) {\n for (const localWritePath in this._localWrites) {\n if (!Object.hasOwn(this._localWrites, localWritePath)) continue;\n if (path === localWritePath || localWritePath === '/' ||\n _.startsWith(path, localWritePath + '/')) return true;\n if (path === '/' || _.startsWith(localWritePath, path + '/')) {\n const segments = splitPath(localWritePath, true);\n for (let i = segments.length; i > 0; i--) {\n const subPath = segments.slice(0, i).join('/');\n const active = i === segments.length;\n if (lockedDescendantPaths[subPath] || lockedDescendantPaths[subPath] === active) break;\n lockedDescendantPaths[subPath] = active;\n if (subPath === path) break;\n }\n }\n }\n }\n\n _pruneAncestors(targetPath, targetObject) {\n // Destroy the child (unless it's a placeholder that's still needed) and any ancestors that\n // are no longer needed to keep this child rooted, and have no other reason to exist.\n let deleted = false;\n let object = targetObject;\n // The target object may be a primitive, in which case it won't have $path, $parent and $key\n // properties. In that case, use the target path to figure those out instead. Note that all\n // ancestors of the target object will necessarily not be primitives and will have those\n // properties.\n let targetKey;\n const targetParentPath = targetPath.replace(/\\/[^/]+$/, match => {\n targetKey = unescapeKey(match.slice(1));\n return '';\n });\n while (object !== undefined && object !== this.root) {\n const parent =\n object && object.$parent || object === targetObject && this.getObject(targetParentPath);\n if (!this._modeler.isPlaceholder(object && object.$path || targetPath)) {\n const ghostObjects = deleted ? null : [targetObject];\n if (!this._holdsConcreteData(object, ghostObjects)) {\n deleted = true;\n this._deleteFirebaseProperty(\n parent, object && object.$key || object === targetObject && targetKey);\n }\n }\n object = parent;\n }\n return deleted;\n }\n\n _holdsConcreteData(object, ghostObjects) {\n if (_.isNil(object)) return false;\n if (ghostObjects && _.includes(ghostObjects, object)) return false;\n if (!_.isObject(object) || !object.$truss) return true;\n return _.some(object.$data, value => this._holdsConcreteData(value, ghostObjects));\n }\n\n _pruneDescendants(object, lockedDescendantPaths) {\n if (lockedDescendantPaths[object.$path]) return true;\n if (object.$overridden) delete object.$overridden;\n let coupledDescendantFound = false;\n _.forEach(object.$data, (value, key) => {\n let shouldDelete = true;\n let valueLocked;\n if (lockedDescendantPaths[joinPath(object.$path, escapeKey(key))]) {\n shouldDelete = false;\n valueLocked = true;\n } else if (!_.isNil(value) && value.$truss) {\n const placeholder = this._modeler.isPlaceholder(value.$path);\n if (placeholder || _.has(lockedDescendantPaths, value.$path)) {\n valueLocked = this._pruneDescendants(value, lockedDescendantPaths);\n shouldDelete = !placeholder && !valueLocked;\n }\n }\n if (shouldDelete) this._deleteFirebaseProperty(object, key);\n coupledDescendantFound = coupledDescendantFound || valueLocked;\n });\n return coupledDescendantFound;\n }\n\n getObject(path) {\n const segments = splitPath(path);\n let object;\n for (const segment of segments) {\n object = segment ? object.$data[segment] : this.root;\n if (object === undefined) return;\n }\n return object;\n }\n\n _getFirebasePropertyDescriptor(object, data, key) {\n const descriptor = Object.getOwnPropertyDescriptor(data, key);\n if (descriptor) {\n if (!descriptor.enumerable) {\n const child = data[key];\n if (!child || child.$parent !== object) {\n throw new Error(\n `Key conflict between Firebase and instance or computed properties at ` +\n `${object.$path}: ${key}`);\n }\n }\n if (!descriptor.get || !descriptor.set) {\n throw new Error(`Unbound property at ${object.$path}: ${key}`);\n }\n } else if (key in data) {\n throw new Error(\n `Key conflict between Firebase and inherited property at ${object.$path}: ${key}`);\n }\n return descriptor;\n }\n\n _setFirebaseProperty(object, key, value, hidden) {\n const data = Object.hasOwn(object, '$data') ? object.$data : object;\n let descriptor = this._getFirebasePropertyDescriptor(object, data, key);\n if (descriptor) {\n if (hidden) {\n // Redefine property as hidden after it's been created, since we usually don't know whether\n // it should be hidden until too late. This is a one-way deal -- you can't unhide a\n // property later, but that's fine for our purposes.\n Object.defineProperty(data, key, {\n get: descriptor.get, set: descriptor.set, configurable: true, enumerable: false\n });\n }\n if (data[key] === value) return;\n this._firebasePropertyEditAllowed = true;\n data[key] = value;\n this._firebasePropertyEditAllowed = false;\n } else {\n Vue.set(data, key, value);\n descriptor = Object.getOwnPropertyDescriptor(data, key);\n Object.defineProperty(data, key, {\n get: descriptor.get, set: this._overwriteFirebaseProperty.bind(this, descriptor, key),\n configurable: true, enumerable: !hidden\n });\n }\n angular.digest();\n }\n\n _overwriteFirebaseProperty(descriptor, key, newValue) {\n if (!this._firebasePropertyEditAllowed) {\n const e = new Error(`Firebase data cannot be mutated directly: ${key}`);\n e.trussCode = 'firebase_overwrite';\n throw e;\n }\n descriptor.set.call(this, newValue);\n }\n\n _deleteFirebaseProperty(object, key) {\n const data = Object.hasOwn(object, '$data') ? object.$data : object;\n // Make sure it's actually a Firebase property.\n this._getFirebasePropertyDescriptor(object, data, key);\n this._destroyObject(data[key]);\n Vue.delete(data, key);\n angular.digest();\n }\n\n checkVueObject(object, path) {\n this._modeler.checkVueObject(object, path);\n }\n}\n\n\nexport function checkUpdateHasOnlyDescendantsWithNoOverlap(rootPath, values) {\n // First, check all paths for correctness and absolutize them, since there could be a mix of\n // absolute paths and relative keys.\n _.forEach(_.keys(values), path => {\n if (path.charAt(0) === '/') {\n if (!(path === rootPath || rootPath === '/' ||\n _.startsWith(path, rootPath + '/') && path.length > rootPath.length + 1)) {\n throw new Error(`Update item is not a descendant of target ref: ${path}`);\n }\n } else {\n if (_.includes(path, '/')) {\n throw new Error(`Update item deep path must be absolute, taken from a reference: ${path}`);\n }\n const absolutePath = joinPath(rootPath, escapeKey(path));\n if (Object.hasOwn(values, absolutePath)) {\n throw new Error(`Update items overlap: ${path} and ${absolutePath}`);\n }\n values[absolutePath] = values[path];\n delete values[path];\n }\n });\n // Then check for overlaps;\n const allPaths = _(values).keys().map(path => joinPath(path, '')).sortBy('length').value();\n _.forEach(values, (value, path) => {\n for (const otherPath of allPaths) {\n if (otherPath.length > path.length) break;\n if (path !== otherPath && _.startsWith(path, otherPath)) {\n throw new Error(`Update items overlap: ${otherPath} and ${path}`);\n }\n }\n });\n}\n\nexport function extractCommonPathPrefix(values) {\n let prefixSegments;\n _.forEach(values, (value, path) => {\n const segments = path === '/' ? [''] : splitPath(path, true);\n if (prefixSegments) {\n let firstMismatchIndex = 0;\n const maxIndex = Math.min(prefixSegments.length, segments.length);\n while (firstMismatchIndex < maxIndex &&\n prefixSegments[firstMismatchIndex] === segments[firstMismatchIndex]) {\n firstMismatchIndex++;\n }\n prefixSegments = prefixSegments.slice(0, firstMismatchIndex);\n if (!prefixSegments.length) return false;\n } else {\n prefixSegments = segments;\n }\n });\n return prefixSegments.length === 1 ? '/' : prefixSegments.join('/');\n}\n\nexport function relativizePaths(rootPath, values) {\n const offset = rootPath === '/' ? 1 : rootPath.length + 1;\n _.forEach(_.keys(values), path => {\n values[path.slice(offset)] = values[path];\n delete values[path];\n });\n}\n\nexport function toFirebaseJson(object) {\n if (!_.isObject(object)) return object;\n const result = {};\n const data = object.$data;\n for (const key in data) {\n if (Object.hasOwn(data, key)) result[escapeKey(key)] = toFirebaseJson(data[key]);\n }\n return result;\n}\n","import _ from 'lodash';\nimport Vue from 'vue';\nimport angular from './angularCompatibility.js';\nimport Bridge from './Bridge.js';\nimport Connector from './Connector.js';\nimport Dispatcher from './Dispatcher.js';\nimport KeyGenerator from './KeyGenerator.js';\nimport MetaTree from './MetaTree.js';\nimport {Handle} from './Reference.js';\nimport {BaseValue} from './Modeler.js';\nimport Tree from './Tree.js';\nimport stats from './utils/stats.js';\nimport {escapeKey, unescapeKey} from './utils/paths.js';\nimport {wrapPromiseCallback, promiseCancel, promiseFinally} from './utils/promises.js';\nimport {SERVER_TIMESTAMP, copyPrototype} from './utils/utils.js';\n\n\nlet bridge, logging;\nconst workerFunctions = {};\n// This version is filled in by the build, don't reformat the line.\nconst VERSION = 'dev';\n\n\nexport default class Truss {\n\n /**\n * Create a new Truss instance, specific to a given datastore. To avoid confusion there should be\n * exactly one Truss per root datastore URL, so in most code this will be a singleton.\n *\n * @param rootUrl {String} The root URL, https://{project}.firebaseio.com.\n */\n constructor(rootUrl) {\n // TODO: allow rootUrl to be a test database object for testing\n if (!bridge) {\n throw new Error('Truss worker not connected, please call Truss.connectWorker first');\n }\n this._rootUrl = rootUrl.replace(/\\/$/, '');\n this._keyGenerator = new KeyGenerator();\n this._dispatcher = new Dispatcher(bridge);\n this._vue = new Vue();\n\n bridge.trackServer(this._rootUrl);\n this._tree = new Tree(this, this._rootUrl, bridge, this._dispatcher);\n this._metaTree = new MetaTree(this._rootUrl, this._tree, bridge, this._dispatcher);\n\n Object.freeze(this);\n }\n\n get info() {return this._metaTree.root;}\n get store() {return this._tree.root;}\n\n /**\n * Mount a set of classes against the datastore structure. Must be called at most once, and\n * cannot be called once any data has been loaded into the tree.\n * @param classes {Array | Object} A list of the classes to map onto the\n * datastore structure. Each class must have a static $trussMount property that is a\n * (wildcarded) unescaped datastore path, or an options object\n * {path: string, placeholder: object}, or an array of either. If the list is an object then\n * the keys serve as default option-less $trussMount paths for classes that don't define an\n * explicit $trussMount.\n */\n mount(classes) {\n this._tree.init(classes);\n }\n\n destroy() {\n this._vue.$destroy();\n this._tree.destroy();\n this._metaTree.destroy();\n }\n\n get now() {return Date.now() + this.info.timeOffset;}\n newKey() {return this._keyGenerator.generateUniqueKey(this.now);}\n\n authenticate(token) {\n return this._metaTree.authenticate(token);\n }\n\n unauthenticate() {\n return this._metaTree.unauthenticate();\n }\n\n intercept(actionType, callbacks) {\n return this._dispatcher.intercept(actionType, callbacks);\n }\n\n // connections are {key: Query | Object | fn() -> (Query | Object)}\n connect(scope, connections) {\n if (!connections) {\n connections = scope;\n scope = undefined;\n }\n if (connections instanceof Handle || _.isFunction(connections)) connections = {_: connections};\n return new Connector(scope, connections, this._tree, 'connect');\n }\n\n // target is Reference, Query, or connection Object like above\n peek(target, callback) {\n callback = wrapPromiseCallback(callback || _.identity);\n let cleanup, cancel;\n const promise = Promise.resolve().then(() => new Promise((resolve, reject) => {\n const scope = {};\n let callbackPromise;\n\n let connector = new Connector(scope, {result: target}, this._tree, 'peek');\n\n let unintercept = this.intercept('peek', {onFailure: op => {\n function match(descriptor) {\n if (!descriptor) return;\n if (descriptor instanceof Handle) return op.target.isEqual(descriptor);\n return _.some(descriptor, value => match(value));\n }\n if (match(connector.at)) {\n reject(op.error);\n cleanup();\n }\n }});\n\n let unobserve = this.observe(() => connector.ready, ready => {\n if (!ready) return;\n unobserve();\n unobserve = null;\n callbackPromise = promiseFinally(\n callback(scope.result), () => {angular.digest(); callbackPromise = null; cleanup();}\n ).then(result => {resolve(result);}, error => {reject(error);});\n });\n\n cleanup = () => {\n if (unobserve) {unobserve(); unobserve = null;}\n if (unintercept) {unintercept(); unintercept = null;}\n if (connector) {connector.destroy(); connector = null;}\n if (callbackPromise && callbackPromise.cancel) callbackPromise.cancel();\n };\n\n cancel = () => {\n reject(new Error('Canceled'));\n cleanup();\n };\n }));\n return promiseCancel(promise, cancel);\n }\n\n observe(subjectFn, callbackFn, options) {\n const usePreciseDefaults = _.isObject(options && options.precise);\n let numCallbacks = 0;\n let oldValueClone;\n if (usePreciseDefaults) {\n oldValueClone = options.deep ? _.cloneDeep(options.precise) : _.clone(options.precise);\n }\n\n // This needs to be a `let` instead of a `const` to avoid a \"Cannot access before\n // initialization\" error.\n let unwatch;\n // eslint-disable-next-line prefer-const\n unwatch = this._vue.$watch(subjectFn, (newValue, oldValue) => {\n if (options && options.precise) {\n const newValueClone = usePreciseDefaults ?\n (options.deep ?\n _.defaultsDeep({}, newValue, options.precise) :\n _.defaults({}, newValue, options.precise)) :\n (options.deep ? _.cloneDeep(newValue) : _.clone(newValue));\n if (_.isEqual(newValueClone, oldValueClone)) return;\n oldValueClone = newValueClone;\n }\n numCallbacks++;\n if (unwatch || options && options.immediate) {\n callbackFn(newValue, oldValue);\n angular.digest();\n } else {\n // Delay the immediate callback until we've had a chance to return the unwatch function.\n Promise.resolve().then(() => {\n const vm = options && options.vm;\n if (numCallbacks > 1 || (vm && vm.$destroyed)) return;\n callbackFn(newValue, oldValue);\n // No need to digest since under Angular we'll be using $q as Promise.\n });\n }\n }, {immediate: true, deep: options && options.deep});\n\n if (options && options.scope) options.scope.$on('$destroy', unwatch);\n return unwatch;\n }\n\n when(expression, options) {\n let cleanup, timeoutHandle;\n let promise = new Promise((resolve, reject) => {\n let unobserve = this.observe(expression, value => {\n if (!value) return;\n // Wait for computed properties to settle and double-check.\n Vue.nextTick(() => {\n value = expression();\n if (!value) return;\n resolve(value);\n cleanup();\n });\n });\n if (_.has(options, 'timeout')) {\n timeoutHandle = setTimeout(() => {\n timeoutHandle = null;\n reject(new Error(options.timeoutMessage || 'Timeout'));\n cleanup();\n }, options.timeout);\n }\n cleanup = () => {\n if (unobserve) {unobserve(); unobserve = null;}\n if (timeoutHandle) {clearTimeout(timeoutHandle); timeoutHandle = null;}\n reject(new Error('Canceled'));\n };\n });\n promise = promiseCancel(promiseFinally(promise, cleanup), cleanup);\n if (options && options.scope) options.scope.$on('$destroy', () => {promise.cancel();});\n return promise;\n }\n\n nextTick() {\n let cleanup;\n let promise = new Promise((resolve, reject) => {\n Vue.nextTick(resolve);\n cleanup = () => {\n reject(new Error('Canceled'));\n };\n });\n promise = promiseCancel(promise, cleanup);\n return promise;\n }\n\n throttleRemoteDataUpdates(delay) {\n this._tree.throttleRemoteDataUpdates(delay);\n }\n\n checkObjectsForRogueProperties() {\n this._tree.checkVueObject(this._tree.root, '/');\n }\n\n static get computedPropertyStats() {\n return stats;\n }\n\n static async connectWorker(webWorker, config) {\n if (bridge) throw new Error('Worker already connected');\n if (_.isString(webWorker)) {\n const Worker = window.SharedWorker || window.Worker;\n if (!Worker) throw new Error('Browser does not implement Web Workers');\n if (!navigator.locks) throw new Error('Browser does not implement locks');\n webWorker = new Worker(webWorker);\n const random = window.crypto.getRandomValues(new Uint32Array(1))[0];\n webWorker.lockName = `truss_worker_lock_${Date.now()}.${random}`;\n await new Promise((resolve, reject) => {\n navigator.locks.request(webWorker.lockName, () => {\n resolve();\n // eslint-disable-next-line lodash/prefer-noop\n return new Promise(() => {/* release lock only on page exit or crash */});\n }).catch(reject);\n });\n }\n bridge = new Bridge(webWorker);\n if (logging) bridge.enableLogging(logging);\n const {exposedFunctionNames, firebaseSdkVersion} =\n await bridge.init(webWorker.lockName, config);\n Object.defineProperty(Truss, 'FIREBASE_SDK_VERSION', {value: firebaseSdkVersion});\n for (const name of exposedFunctionNames) Truss.preExpose(name);\n }\n\n static get worker() {return workerFunctions;}\n\n static preExpose(functionName) {\n const segments = functionName.split('.');\n let obj = Truss.worker;\n for (const segment of segments.slice(0, -1)) {\n if (!Object.hasOwnProperty.call(obj, segment)) obj[segment] = {};\n obj = obj[segment];\n }\n obj[segments[segments.length - 1]] = bridge.bindExposedFunction(functionName);\n }\n\n static bounceConnection() {return bridge.bounceConnection();}\n static suspend() {return bridge.suspend();}\n static debugPermissionDeniedErrors(simulatedTokenGenerator, maxSimulationDuration, callFilter) {\n return bridge.debugPermissionDeniedErrors(\n simulatedTokenGenerator, maxSimulationDuration, callFilter);\n }\n\n static debounceAngularDigest(wait) {\n angular.debounceDigest(wait);\n }\n\n static escapeKey(key) {return escapeKey(key);}\n static unescapeKey(escapedKey) {return unescapeKey(escapedKey);}\n\n static enableLogging(fn) {\n logging = fn;\n if (bridge) bridge.enableLogging(fn);\n }\n\n // Duplicate static constants on instance for convenience.\n get SERVER_TIMESTAMP() {return Truss.SERVER_TIMESTAMP;}\n get VERSION() {return Truss.VERSION;}\n get FIREBASE_SDK_VERSION() {return Truss.FIREBASE_SDK_VERSION;}\n}\n\nObject.defineProperties(Truss, {\n SERVER_TIMESTAMP: {value: SERVER_TIMESTAMP},\n VERSION: {value: VERSION},\n Model: {value: Object},\n\n ComponentPlugin: {value: {\n install(Vue2, pluginOptions) {\n if (Vue !== Vue2) throw new Error('Multiple versions of Vue detected');\n if (!pluginOptions.truss) {\n throw new Error('Need to pass `truss` instance as an option to use the ComponentPlugin');\n }\n const prototypeExtension = {\n $truss: {value: pluginOptions.truss},\n $destroyed: {get() {return this._isBeingDestroyed || this._isDestroyed;}},\n $$touchThis: {value() {if (this.__ob__) this.__ob__.dep.depend();}}\n };\n const conflictingKeys = _(prototypeExtension).keys()\n .union(_.keys(BaseValue.prototype)).intersection(_.keys(Vue.prototype)).value();\n if (conflictingKeys.length) {\n throw new Error(\n 'Truss extension properties conflict with Vue properties: ' + conflictingKeys.join(', '));\n }\n Object.defineProperties(Vue.prototype, prototypeExtension);\n copyPrototype(BaseValue, Vue);\n }\n }}\n});\n\nangular.defineModule(Truss);\n"],"names":["_","Vue","angular"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"firetruss.umd.js","sources":["../src/utils/LruCache.js","../src/utils/paths.js","../src/Bridge.js","../src/Reference.js","../src/utils/utils.js","../src/utils/stats.js","../src/Connector.js","../src/utils/promises.js","../src/Dispatcher.js","../src/KeyGenerator.js","../src/MetaTree.js","../src/Modeler.js","../src/Coupler.js","../src/Tree.js","../src/Truss.js"],"sourcesContent":["import _ from 'lodash';\n\n\nclass LruCacheItem {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n this.touch();\n }\n\n touch() {\n this.timestamp = Date.now();\n }\n}\n\n\nexport default class LruCache {\n constructor(maxSize, pruningSize) {\n this._items = Object.create(null);\n this._size = 0;\n this._maxSize = maxSize;\n this._pruningSize = pruningSize || Math.ceil(maxSize * 0.10);\n }\n\n has(key) {\n return Boolean(this._items[key]);\n }\n\n get(key) {\n const item = this._items[key];\n if (!item) return;\n item.touch();\n return item.value;\n }\n\n set(key, value) {\n const item = this._items[key];\n if (item) {\n item.value = value;\n } else {\n if (this._size >= this._maxSize) this._prune();\n this._items[key] = new LruCacheItem(key, value);\n this._size += 1;\n }\n }\n\n delete(key) {\n const item = this._items[key];\n if (!item) return;\n delete this._items[key];\n this._size -= 1;\n }\n\n _prune() {\n const itemsToPrune =\n _(this._items).toArray().sortBy('timestamp').take(this._pruningSize).value();\n for (const item of itemsToPrune) this.delete(item.key);\n }\n}\n","import LruCache from './LruCache.js';\nimport _ from 'lodash';\n\n\nconst pathSegments = new LruCache(1000);\nconst pathMatchers = {};\nconst maxNumPathMatchers = 1000;\n\n\nexport function escapeKey(key) {\n if (!key) return key;\n // eslint-disable-next-line no-control-regex\n return key.toString().replace(/[\\x00-\\x1f\\\\.$#[\\]\\x7f/]/g, char =>\n '\\\\' + _.padStart(char.charCodeAt(0).toString(16), 2, '0')\n );\n}\n\nexport function unescapeKey(key) {\n if (!key) return key;\n return key.toString().replace(/\\\\[0-9a-f]{2}/gi, code =>\n String.fromCharCode(parseInt(code.slice(1), 16))\n );\n}\n\nexport function escapeKeys(object) {\n // isExtensible check avoids trying to escape references to Firetruss internals.\n if (!(_.isObject(object) && Object.isExtensible(object))) return object;\n let result = object;\n for (const key in object) {\n if (!Object.hasOwn(object, key)) continue;\n const value = object[key];\n const escapedKey = escapeKey(key);\n const escapedValue = escapeKeys(value);\n if (escapedKey !== key || escapedValue !== value) {\n if (result === object) result = _.clone(object);\n result[escapedKey] = escapedValue;\n if (result[key] === value) delete result[key];\n }\n }\n return result;\n}\n\nexport function joinPath() {\n const segments = [];\n for (let segment of arguments) {\n if (!_.isString(segment)) segment = '' + segment;\n if (segment.charAt(0) === '/') segments.splice(0, segments.length);\n segments.push(segment);\n }\n if (segments[0] === '/') segments[0] = '';\n return segments.join('/');\n}\n\nexport function splitPath(path, leaveSegmentsEscaped) {\n const key = (leaveSegmentsEscaped ? 'esc:' : '') + path;\n let segments = pathSegments.get(key);\n if (!segments) {\n segments = path.split('/');\n if (!leaveSegmentsEscaped) segments = _.map(segments, unescapeKey);\n pathSegments.set(key, segments);\n }\n return segments;\n}\n\n\nclass PathMatcher {\n constructor(pattern) {\n this.variables = [];\n const prefixMatch = _.endsWith(pattern, '/$*');\n if (prefixMatch) pattern = pattern.slice(0, -3);\n const pathTemplate = pattern.replace(/\\/\\$[^/]*/g, match => {\n if (match.length > 1) this.variables.push(match.slice(1));\n return '\\u0001';\n });\n Object.freeze(this.variables);\n if (/[.$#[\\]]|\\\\(?![0-9a-f][0-9a-f])/i.test(pathTemplate)) {\n throw new Error('Path pattern has unescaped keys: ' + pattern);\n }\n this._regex = new RegExp(\n // eslint-disable-next-line no-control-regex\n '^' + pathTemplate.replace(/\\u0001/g, '/([^/]+)') + (prefixMatch ? '($|/)' : '$'));\n }\n\n match(path) {\n this._regex.lastIndex = 0;\n const match = this._regex.exec(path);\n if (!match) return;\n const bindings = {};\n for (let i = 0; i < this.variables.length; i++) {\n bindings[this.variables[i]] = unescapeKey(match[i + 1]);\n }\n return bindings;\n }\n\n test(path) {\n return this._regex.test(path);\n }\n\n toString() {\n return this._regex.toString();\n }\n}\n\nexport function makePathMatcher(pattern) {\n let matcher = pathMatchers[pattern];\n if (!matcher) {\n matcher = new PathMatcher(pattern);\n // Minimal pseudo-LRU behavior, since we don't expect to actually fill up the cache.\n if (_.size(pathMatchers) === maxNumPathMatchers) delete pathMatchers[_.keys(pathMatchers)[0]];\n pathMatchers[pattern] = matcher;\n }\n return matcher;\n}\n","import {unescapeKey} from './utils/paths.js';\nimport _ from 'lodash';\n\nconst MIN_WORKER_VERSION = '4.0.0';\n\n\nclass Snapshot {\n constructor({path, value, exists, writeSerial}) {\n this._path = path;\n this._value = value;\n this._exists = value === undefined ? exists || false : value !== null;\n this._writeSerial = writeSerial;\n }\n\n get path() {\n return this._path;\n }\n\n get exists() {\n return this._exists;\n }\n\n get value() {\n if (this._value === undefined) throw new Error('Value omitted from snapshot');\n return this._value;\n }\n\n get key() {\n if (this._key === undefined) this._key = unescapeKey(this._path.replace(/.*\\//, ''));\n return this._key;\n }\n\n get writeSerial() {\n return this._writeSerial;\n }\n}\n\n\nexport default class Bridge {\n constructor(webWorker) {\n this._idCounter = 0;\n this._deferreds = {};\n this._suspended = false;\n this._servers = {};\n this._callbacks = {};\n this._log = _.noop;\n this._inboundMessages = [];\n this._outboundMessages = [];\n this._flushMessageQueue = this._flushMessageQueue.bind(this);\n this._port = webWorker.port || webWorker;\n this._shared = !!webWorker.port;\n this._dead = undefined;\n Object.seal(this);\n this._port.onmessage = this._receive.bind(this);\n }\n\n init(lockName, config) {\n const items = [];\n try {\n const storage = window.localStorage || window.sessionStorage;\n if (!storage) throw new Error('localStorage and sessionStorage not available');\n for (let i = 0; i < storage.length; i++) {\n const key = storage.key(i);\n items.push({key, value: storage.getItem(key)});\n }\n } catch {\n // Some browsers don't like us accessing local storage -- nothing we can do.\n }\n return this._send({msg: 'init', storage: items, config, lockName}).then(response => {\n const workerVersion = response.version.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(-.*)?$/);\n if (workerVersion) {\n const minVersion = MIN_WORKER_VERSION.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(-.*)?$/);\n // Major version must match precisely, minor and patch must be greater than or equal.\n const sufficient = workerVersion[1] === minVersion[1] && (\n workerVersion[2] > minVersion[2] ||\n workerVersion[2] === minVersion[2] && workerVersion[3] >= minVersion[3]\n );\n if (!sufficient) {\n return Promise.reject(new Error(\n `Incompatible Firetruss worker version: ${response.version} ` +\n `(${MIN_WORKER_VERSION} or better required)`\n ));\n }\n }\n if (response.livenessLockName) {\n navigator.locks.request(response.livenessLockName, () => {\n this.crash({error: {\n name: 'Error', message: 'worker terminated', extra: {shared: this._shared}\n }});\n });\n }\n return response;\n });\n }\n\n suspend(suspended) {\n if (suspended === undefined) suspended = true;\n if (this._suspended === suspended) return;\n this._suspended = suspended;\n if (!suspended) {\n this._receiveMessages(this._inboundMessages);\n this._inboundMessages = [];\n if (this._outboundMessages.length) Promise.resolve().then(this._flushMessageQueue);\n }\n }\n\n enableLogging(fn) {\n if (fn) {\n if (fn === true) {\n fn = console.log.bind(console);\n this._send({msg: 'enableFirebaseLogging', value: true});\n }\n this._log = fn;\n } else {\n this._send({msg: 'enableFirebaseLogging', value: false});\n this._log = _.noop;\n }\n }\n\n _send(message) {\n message.id = ++this._idCounter;\n let promise;\n if (this._dead) {\n return Promise.reject(this._dead);\n } else if (message.oneWay) {\n promise = Promise.resolve();\n } else {\n promise = new Promise((resolve, reject) => {\n this._deferreds[message.id] = {resolve, reject};\n });\n const deferred = this._deferreds[message.id];\n deferred.promise = promise;\n deferred.params = message;\n }\n if (!this._outboundMessages.length && !this._suspended) {\n Promise.resolve().then(this._flushMessageQueue);\n }\n this._log('send:', message);\n this._outboundMessages.push(message);\n return promise;\n }\n\n _flushMessageQueue() {\n this._log('flush:', this._outboundMessages.length, 'messages');\n try {\n this._port.postMessage(this._outboundMessages);\n this._outboundMessages = [];\n } catch (e) {\n this._log('flush failed:', e);\n e.extra = {messages: this._outboundMessages};\n throw e;\n }\n }\n\n _receive(event) {\n if (this._dead) return;\n if (this._suspended) {\n this._inboundMessages = this._inboundMessages.concat(event.data);\n } else {\n this._receiveMessages(event.data);\n }\n }\n\n _receiveMessages(messages) {\n for (const message of messages) {\n this._log('recv:', message);\n const fn = this[message.msg];\n if (!_.isFunction(fn)) throw new Error('Unknown message: ' + message.msg);\n fn.call(this, message);\n }\n }\n\n bindExposedFunction(name) {\n return (function() {\n return this._send({msg: 'call', name, args: Array.prototype.slice.call(arguments)});\n }).bind(this);\n }\n\n resolve(message) {\n const deferred = this._deferreds[message.id];\n if (!deferred) throw new Error('Received resolution to inexistent Firebase call');\n delete this._deferreds[message.id];\n deferred.resolve(message.result);\n }\n\n reject(message) {\n const deferred = this._deferreds[message.id];\n if (!deferred) throw new Error('Received rejection of inexistent Firebase call');\n delete this._deferreds[message.id];\n deferred.reject(errorFromJson(message.error, deferred.params));\n }\n\n crash(message) {\n let details = `Internal worker error: ${message.error.name}: ${message.error.message}`;\n if (message.error.cause) details += ` (caused by ${message.error.cause})`;\n this._dead = new Error(details);\n if (message.error.extra) this._dead.extra = message.error.extra;\n _.forEach(this._deferreds, ({reject}) => {reject(this._dead);});\n this._deferreds = {};\n throw this._dead;\n }\n\n updateLocalStorage({items}) {\n try {\n const storage = window.localStorage || window.sessionStorage;\n for (const item of items) {\n if (item.value === null) {\n storage.removeItem(item.key);\n } else {\n storage.setItem(item.key, item.value);\n }\n }\n } catch {\n // If we're denied access, there's nothing we can do.\n }\n }\n\n trackServer(rootUrl) {\n if (Object.hasOwn(this._servers, rootUrl)) return Promise.resolve();\n const server = this._servers[rootUrl] = {authListeners: []};\n const authCallbackId = this._registerCallback(this._authCallback.bind(this, server));\n this._send({msg: 'onAuth', url: rootUrl, callbackId: authCallbackId});\n }\n\n _authCallback(server, auth) {\n server.auth = auth;\n for (const listener of server.authListeners) listener(auth);\n }\n\n onAuth(rootUrl, callback, context) {\n const listener = callback.bind(context);\n listener.callback = callback;\n listener.context = context;\n this._servers[rootUrl].authListeners.push(listener);\n listener(this.getAuth(rootUrl));\n }\n\n offAuth(rootUrl, callback, context) {\n const authListeners = this._servers[rootUrl].authListeners;\n for (let i = 0; i < authListeners.length; i++) {\n const listener = authListeners[i];\n if (listener.callback === callback && listener.context === context) {\n authListeners.splice(i, 1);\n break;\n }\n }\n }\n\n getAuth(rootUrl) {\n return this._servers[rootUrl].auth;\n }\n\n authWithCustomToken(url, authToken) {\n return this._send({msg: 'authWithCustomToken', url, authToken});\n }\n\n authAnonymously(url) {\n return this._send({msg: 'authAnonymously', url});\n }\n\n unauth(url) {\n return this._send({msg: 'unauth', url});\n }\n\n set(url, value, writeSerial) {return this._send({msg: 'set', url, value, writeSerial});}\n update(url, value, writeSerial) {return this._send({msg: 'update', url, value, writeSerial});}\n\n once(url, writeSerial) {\n return this._send({msg: 'once', url, writeSerial}).then(snapshot => new Snapshot(snapshot));\n }\n\n on(listenerKey, url, spec, eventType, snapshotCallback, cancelCallback, context, options) {\n const handle = {\n listenerKey, eventType, snapshotCallback, cancelCallback, context,\n params: {msg: 'on', listenerKey, url, spec, eventType, options}\n };\n const callback = this._onCallback.bind(this, handle);\n this._registerCallback(callback, handle);\n // Keep multiple IDs to allow the same snapshotCallback to be reused.\n snapshotCallback.__callbackIds = snapshotCallback.__callbackIds || [];\n snapshotCallback.__callbackIds.push(handle.id);\n this._send({\n msg: 'on', listenerKey, url, spec, eventType, callbackId: handle.id, options\n }).catch(error => {\n callback(error);\n });\n }\n\n off(listenerKey, url, spec, eventType, snapshotCallback, context) {\n const idsToDeregister = [];\n let callbackId;\n if (snapshotCallback) {\n callbackId = this._findAndRemoveCallbackId(\n snapshotCallback, handle => _.isMatch(handle, {listenerKey, eventType, context})\n );\n if (!callbackId) return Promise.resolve(); // no-op, never registered or already deregistered\n idsToDeregister.push(callbackId);\n } else {\n for (const id of _.keys(this._callbacks)) {\n const handle = this._callbacks[id];\n if (handle.listenerKey === listenerKey && (!eventType || handle.eventType === eventType)) {\n idsToDeregister.push(id);\n }\n }\n }\n // Nullify callbacks first, then deregister after off() is complete. We don't want any\n // callbacks in flight from the worker to be invoked while the off() is processing, but we don't\n // want them to throw an exception either.\n for (const id of idsToDeregister) this._nullifyCallback(id);\n return this._send({msg: 'off', listenerKey, url, spec, eventType, callbackId}).then(() => {\n for (const id of idsToDeregister) this._deregisterCallback(id);\n });\n }\n\n _onCallback(handle, error, snapshotJson) {\n if (error) {\n this._deregisterCallback(handle.id);\n const e = errorFromJson(error, handle.params);\n if (handle.cancelCallback) {\n handle.cancelCallback.call(handle.context, e);\n } else {\n console.error(e);\n }\n } else {\n handle.snapshotCallback.call(handle.context, new Snapshot(snapshotJson));\n }\n }\n\n transaction(url, oldValue, relativeUpdates, writeSerial) {\n return this._send(\n {msg: 'transaction', url, oldValue, relativeUpdates, writeSerial}\n ).then(result => {\n if (result.snapshots) {\n result.snapshots = _.map(result.snapshots, jsonSnapshot => new Snapshot(jsonSnapshot));\n }\n return result;\n });\n }\n\n onDisconnect(url, method, value) {\n return this._send({msg: 'onDisconnect', url, method, value});\n }\n\n bounceConnection() {\n return this._send({msg: 'bounceConnection'});\n }\n\n callback({id, args}) {\n const handle = this._callbacks[id];\n if (!handle) throw new Error('Unregistered callback: ' + id);\n handle.callback.apply(null, args);\n }\n\n _registerCallback(callback, handle) {\n handle = handle || {};\n handle.callback = callback;\n handle.id = `cb${++this._idCounter}`;\n this._callbacks[handle.id] = handle;\n return handle.id;\n }\n\n _nullifyCallback(id) {\n this._callbacks[id].callback = _.noop;\n }\n\n _deregisterCallback(id) {\n delete this._callbacks[id];\n }\n\n _findAndRemoveCallbackId(callback, predicate) {\n if (!callback.__callbackIds) return;\n let i = 0;\n while (i < callback.__callbackIds.length) {\n const id = callback.__callbackIds[i];\n const handle = this._callbacks[id];\n if (!handle) {\n callback.__callbackIds.splice(i, 1);\n continue;\n }\n if (predicate(handle)) {\n callback.__callbackIds.splice(i, 1);\n return id;\n }\n i += 1;\n }\n }\n}\n\n\nfunction errorFromJson(json, params) {\n if (!json || _.isError(json)) return json;\n const error = new Error(json.message);\n try {\n error.params = params;\n for (const propertyName in json) {\n if (propertyName === 'message' || !Object.hasOwn(json, propertyName)) continue;\n try {\n error[propertyName] = json[propertyName];\n } catch {\n error.extra = error.extra || {};\n error.extra[propertyName] = json[propertyName];\n }\n }\n } catch (e) {\n if (!/object is not extensible/.test(e.message)) throw e;\n }\n return error;\n}\n","import {escapeKey, unescapeKey, makePathMatcher} from './utils/paths.js';\n\nimport _ from 'lodash';\n\n/* eslint-disable no-use-before-define */\n\nconst EMPTY_ANNOTATIONS = {};\nObject.freeze(EMPTY_ANNOTATIONS);\n\n\nexport class Handle {\n constructor(tree, path, annotations) {\n this._tree = tree;\n this._path = path.replace(/^\\/*/, '/').replace(/\\/$/, '') || '/';\n if (annotations) {\n this._annotations = annotations;\n Object.freeze(annotations);\n }\n }\n\n get $ref() {return this;}\n get key() {\n if (!this._key) this._key = unescapeKey(this._path.replace(/.*\\//, ''));\n return this._key;\n }\n\n get path() {return this._path;}\n get _pathPrefix() {return this._path === '/' ? '' : this._path;}\n get parent() {\n return new Reference(this._tree, this._path.replace(/\\/[^/]*$/, ''), this._annotations);\n }\n\n get annotations() {\n return this._annotations || EMPTY_ANNOTATIONS;\n }\n\n child() {\n if (!arguments.length) return this;\n const segments = [];\n for (const key of arguments) {\n if (_.isNil(key)) return;\n segments.push(escapeKey(key));\n }\n return new Reference(\n this._tree, `${this._pathPrefix}/${segments.join('/')}`,\n this._annotations\n );\n }\n\n children() {\n if (!arguments.length) return this;\n const escapedKeys = [];\n for (let i = 0; i < arguments.length; i++) {\n const arg = arguments[i];\n if (_.isArray(arg)) {\n const mapping = {};\n const subPath = this._pathPrefix + (escapedKeys.length ? `/${escapedKeys.join('/')}` : '');\n const rest = _.slice(arguments, i + 1);\n for (const key of arg) {\n const subRef =\n new Reference(this._tree, `${subPath}/${escapeKey(key)}`, this._annotations);\n const subMapping = subRef.children.apply(subRef, rest);\n if (subMapping) mapping[key] = subMapping;\n }\n return mapping;\n }\n if (_.isNil(arg)) return;\n escapedKeys.push(escapeKey(arg));\n }\n return new Reference(\n this._tree, `${this._pathPrefix}/${escapedKeys.join('/')}`, this._annotations);\n }\n\n peek(callback) {\n return this._tree.truss.peek(this, callback);\n }\n\n match(pattern) {\n return makePathMatcher(pattern).match(this.path);\n }\n\n test(pattern) {\n return makePathMatcher(pattern).test(this.path);\n }\n\n isEqual(that) {\n if (!(that instanceof Handle)) return false;\n return this._tree === that._tree && this.toString() === that.toString() &&\n _.isEqual(this._annotations, that._annotations);\n }\n\n belongsTo(truss) {\n return this._tree.truss === truss;\n }\n}\n\n\nexport class Query extends Handle {\n constructor(tree, path, spec, annotations) {\n super(tree, path, annotations);\n this._spec = this._copyAndValidateSpec(spec);\n const queryTerms = _(this._spec)\n .map((value, key) => `${key}=${encodeURIComponent(JSON.stringify(value))}`)\n .sortBy()\n .join('&');\n this._string = `${this._path}?${queryTerms}`;\n Object.freeze(this);\n }\n\n // Vue-bound\n get ready() {\n return this._tree.isQueryReady(this);\n }\n\n get constraints() {\n return this._spec;\n }\n\n annotate(annotations) {\n return new Query(\n this._tree, this._path, this._spec, _.assign({}, this._annotations, annotations));\n }\n\n _copyAndValidateSpec(spec) {\n if (!spec.by) throw new Error('Query needs \"by\" clause: ' + JSON.stringify(spec));\n if (('at' in spec) + ('from' in spec) + ('to' in spec) > 1) {\n throw new Error(\n 'Query must contain at most one of \"at\", \"from\", or \"to\" clauses: ' + JSON.stringify(spec));\n }\n if (('first' in spec) + ('last' in spec) > 1) {\n throw new Error(\n 'Query must contain at most one of \"first\" or \"last\" clauses: ' + JSON.stringify(spec));\n }\n if (!_.some(['at', 'from', 'to', 'first', 'last'], clause => clause in spec)) {\n throw new Error(\n 'Query must contain at least one of \"at\", \"from\", \"to\", \"first\", or \"last\" clauses: ' +\n JSON.stringify(spec));\n }\n spec = _.clone(spec);\n if (spec.by !== '$key' && spec.by !== '$value') {\n if (!(spec.by instanceof Reference)) {\n throw new Error('Query \"by\" value must be a reference: ' + spec.by);\n }\n let childPath = spec.by.toString();\n if (!_.startsWith(childPath, this._path)) {\n throw new Error(\n 'Query \"by\" value must be a descendant of target reference: ' + spec.by);\n }\n childPath = childPath.slice(this._path.length).replace(/^\\/?/, '');\n if (!_.includes(childPath, '/')) {\n throw new Error(\n 'Query \"by\" value must not be a direct child of target reference: ' + spec.by);\n }\n spec.by = childPath.replace(/.*?\\//, '');\n }\n Object.freeze(spec);\n return spec;\n }\n\n\n toString() {return this._string;}\n toJSON() {return `query → ${this.toString()}`;}\n}\n\n\nexport class Reference extends Handle {\n\n constructor(tree, path, annotations) {\n super(tree, path, annotations);\n Object.freeze(this);\n }\n\n get ready() {return this._tree.isReferenceReady(this);} // Vue-bound\n get value() {return this._tree.getObject(this.path);} // Vue-bound\n toString() {return this._path;}\n toJSON() {return `reference → ${this.toString()}`;}\n\n annotate(annotations) {\n return new Reference(this._tree, this._path, _.assign({}, this._annotations, annotations));\n }\n\n query(spec) {\n return new Query(this._tree, this._path, spec, this._annotations);\n }\n\n set(value) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'set', {[this.path]: value});\n }\n\n update(values) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'update', values);\n }\n\n override(value) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'override', {[this.path]: value});\n }\n\n commit(updateFunction) {\n this._checkForUndefinedPath();\n return this._tree.commit(this, updateFunction);\n }\n\n _checkForUndefinedPath() {\n if (this.path === '/undefined') throw new Error('Invalid path for operation: ' + this.path);\n }\n}\n\nexport default Reference;\n","import _ from 'lodash';\n\n\nexport const SERVER_TIMESTAMP = Object.freeze({'.sv': 'timestamp'});\n\nexport function isTrussEqual(a, b) {\n return _.isEqualWith(a, b, isTrussValueEqual);\n}\n\nfunction isTrussValueEqual(a, b) {\n if (a === b || a === undefined || a === null || b === undefined || b === null ||\n a.$truss || b.$truss) return a === b;\n if (a.isEqual) return a.isEqual(b);\n}\n\nexport function copyPrototype(a, b) {\n for (const prop of Object.getOwnPropertyNames(a.prototype)) {\n if (prop === 'constructor') continue;\n Object.defineProperty(b.prototype, prop, Object.getOwnPropertyDescriptor(a.prototype, prop));\n }\n}\n","import {isTrussEqual} from './utils.js';\n\nimport _ from 'lodash';\n\n\nclass StatItem {\n constructor(name) {\n _.assign(this, {name, numRecomputes: 0, numUpdates: 0, computeTime: 0, updateTime: 0});\n }\n\n add(item) {\n this.computeTime += item.computeTime;\n this.updateTime += item.updateTime;\n this.numUpdates += item.numUpdates;\n this.numRecomputes += item.numRecomputes;\n }\n\n get runtime() {\n return this.computeTime + this.updateTime;\n }\n\n get runtimePerRecompute() {\n return this.numRecomputes ? this.computeTime / this.numRecomputes : 0;\n }\n\n get runtimePerUpdate() {\n return this.numUpdates ? this.updateTime / this.numUpdates : 0;\n }\n\n toLogParts(totals) {\n return [\n `${this.name}:`, ` ${(this.runtime / 1000).toFixed(2)}s`,\n `(${(this.runtime / totals.runtime * 100).toFixed(1)}%)`,\n ` ${this.numUpdates} upd /`, `${this.numRecomputes} runs`,\n `(${(this.numUpdates / this.numRecomputes * 100).toFixed(1)}%)`,\n ` ${this.runtimePerRecompute.toFixed(2)}ms / run`,\n ` ${this.runtimePerUpdate.toFixed(2)}ms / upd`\n ];\n }\n}\n\nclass Stats {\n constructor() {\n this._items = {};\n }\n\n for(name) {\n if (!this._items[name]) this._items[name] = new StatItem(name);\n return this._items[name];\n }\n\n get list() {\n return _(this._items).values().sortBy(item => -item.runtime).value();\n }\n\n log(n = 10) {\n let stats = this.list;\n if (!stats.length) return;\n const totals = new StatItem('=== Total');\n _.forEach(stats, stat => {totals.add(stat);});\n stats = _.take(stats, n);\n const above = new StatItem('--- Above');\n _.forEach(stats, stat => {above.add(stat);});\n const lines = _.map(stats, item => item.toLogParts(totals));\n lines.push(above.toLogParts(totals));\n lines.push(totals.toLogParts(totals));\n const widths = _.map(_.range(lines[0].length), i => _(lines).map(line => line[i].length).max());\n _.forEach(lines, line => {\n console.log(_.map(line, (column, i) => _.padStart(column, widths[i])).join(' '));\n });\n }\n\n wrap(getter, className, propName) {\n const item = this.for(`${className}.${propName}`);\n return function() {\n /* eslint-disable no-invalid-this */\n const startTime = performance.now();\n const oldValue = this._computedWatchers && this._computedWatchers[propName].value;\n try {\n const newValue = getter.call(this);\n if (!isTrussEqual(oldValue, newValue)) item.numUpdates += 1;\n return newValue;\n } finally {\n item.computeTime += performance.now() - startTime;\n item.numRecomputes += 1;\n }\n };\n }\n}\n\nexport default new Stats();\n","import {Handle, Query, Reference} from './Reference.js';\nimport stats from './utils/stats.js';\nimport {isTrussEqual} from './utils/utils.js';\n\nimport _ from 'lodash';\nimport Vue from 'vue';\n\n\nexport default class Connector {\n constructor(scope, connections, tree, method, refs) {\n Object.freeze(connections);\n this._scope = scope;\n this._connections = connections;\n this._tree = tree;\n this._method = method;\n\n this._subConnectors = {};\n this._disconnects = {};\n this._data = {};\n this._vue = new Vue({data: {\n descriptors: {},\n refs: refs || {},\n values: _.mapValues(connections, _.constant(undefined))\n }});\n // allow instance-level overrides of destroy() method\n this.destroy = this.destroy; // eslint-disable-line no-self-assign\n Object.seal(this);\n\n this._linkScopeProperties();\n\n _.forEach(connections, (descriptor, key) => {\n if (_.isFunction(descriptor)) {\n this._bindComputedConnection(key, descriptor);\n } else {\n this._connect(key, descriptor);\n }\n });\n }\n\n get ready() {\n return _.every(this._connections, (ignored, key) => {\n const descriptor = this._vue.descriptors[key];\n if (!descriptor) return false;\n if (descriptor instanceof Handle) return descriptor.ready;\n return this._subConnectors[key].ready;\n });\n }\n\n get at() {\n return this._vue.refs;\n }\n\n get data() {\n return this._data;\n }\n\n destroy() {\n this._unlinkScopeProperties();\n _.forEach(this._connections, (descriptor, key) => {this._disconnect(key);});\n this._vue.$destroy();\n }\n\n _linkScopeProperties() {\n const dataProperties = _.mapValues(this._connections, (unused, key) => ({\n configurable: true, enumerable: false, get: () => {\n const descriptor = this._vue.descriptors[key];\n if (descriptor instanceof Reference) return descriptor.value;\n return this._vue.values[key];\n }\n }));\n Object.defineProperties(this._data, dataProperties);\n if (this._scope) {\n for (const key in this._connections) {\n if (key in this._scope) {\n throw new Error(`Property already defined on connection target: ${key}`);\n }\n }\n Object.defineProperties(this._scope, dataProperties);\n if (this._scope.__ob__) this._scope.__ob__.dep.notify();\n }\n }\n\n _unlinkScopeProperties() {\n if (!this._scope) return;\n _.forEach(this._connections, (descriptor, key) => {\n delete this._scope[key];\n });\n }\n\n _bindComputedConnection(key, fn) {\n const connectionStats = stats.for(`connection.at.${key}`);\n const getter = this._computeConnection.bind(this, fn, connectionStats);\n const update = this._updateComputedConnection.bind(this, key, fn, connectionStats);\n this._vue.$watch(getter, update, {immediate: true});\n }\n\n _computeConnection(fn, connectionStats) {\n const startTime = performance.now();\n try {\n return flattenRefs(fn.call(this._scope));\n } finally {\n connectionStats.computeTime += performance.now() - startTime;\n connectionStats.numRecomputes += 1;\n }\n }\n\n _updateComputedConnection(key, value, connectionStats) {\n const newDescriptor = _.isFunction(value) ? value(this._scope) : value;\n const oldDescriptor = this._vue.descriptors[key];\n const descriptorChanged = !isTrussEqual(oldDescriptor, newDescriptor);\n if (!descriptorChanged) return;\n if (connectionStats && descriptorChanged) connectionStats.numUpdates += 1;\n if (!newDescriptor) {\n this._disconnect(key);\n return;\n }\n if (newDescriptor instanceof Handle || !_.has(this._subConnectors, key)) {\n this._disconnect(key);\n this._connect(key, newDescriptor);\n } else {\n this._subConnectors[key]._updateConnections(newDescriptor);\n }\n Vue.set(this._vue.descriptors, key, newDescriptor);\n }\n\n _updateConnections(connections) {\n _.forEach(connections, (descriptor, key) => {\n this._updateComputedConnection(key, descriptor);\n });\n _.forEach(this._connections, (descriptor, key) => {\n if (!_.has(connections, key)) this._updateComputedConnection(key);\n });\n this._connections = connections;\n }\n\n _connect(key, descriptor) {\n Vue.set(this._vue.descriptors, key, descriptor);\n if (!descriptor) return;\n Vue.set(this._vue.values, key, undefined);\n if (descriptor instanceof Reference) {\n Vue.set(this._vue.refs, key, descriptor);\n this._disconnects[key] = this._tree.connectReference(descriptor, this._method);\n } else if (descriptor instanceof Query) {\n Vue.set(this._vue.refs, key, descriptor);\n const updateFn = this._updateQueryValue.bind(this, key);\n this._disconnects[key] = this._tree.connectQuery(descriptor, updateFn, this._method);\n } else {\n const subScope = {}, subRefs = {};\n Vue.set(this._vue.refs, key, subRefs);\n const subConnector = this._subConnectors[key] =\n new Connector(subScope, descriptor, this._tree, this._method, subRefs);\n // Use a truss.observe here instead of this._vue.$watch so that the \"immediate\" execution\n // actually takes place after we've captured the unwatch function, in case the subConnector\n // is ready immediately.\n const unobserve = this._disconnects[key] = this._tree.truss.observe(\n () => subConnector.ready,\n subReady => {\n if (!subReady) return;\n unobserve();\n delete this._disconnects[key];\n Vue.set(this._vue.values, key, subScope);\n }\n );\n }\n }\n\n _disconnect(key) {\n Vue.delete(this._vue.refs, key);\n this._updateRefValue(key, undefined);\n if (_.has(this._subConnectors, key)) {\n this._subConnectors[key].destroy();\n delete this._subConnectors[key];\n }\n if (this._disconnects[key]) this._disconnects[key]();\n delete this._disconnects[key];\n Vue.delete(this._vue.descriptors, key);\n }\n\n _updateRefValue(key, value) {\n if (this._vue.values[key] !== value) {\n Vue.set(this._vue.values, key, value);\n }\n }\n\n _updateQueryValue(key, childKeys) {\n if (!this._vue.values[key]) {\n Vue.set(this._vue.values, key, {});\n }\n const subScope = this._vue.values[key];\n for (const childKey in subScope) {\n if (!Object.hasOwn(subScope, childKey)) continue;\n if (!_.includes(childKeys, childKey)) {\n Vue.delete(subScope, childKey);\n }\n }\n const object = this._tree.getObject(this._vue.descriptors[key].path);\n for (const childKey of childKeys) {\n if (Object.hasOwn(subScope, childKey)) continue;\n Vue.set(subScope, childKey, object[childKey]);\n }\n }\n\n}\n\nfunction flattenRefs(refs) {\n if (!refs) return;\n if (refs instanceof Handle) return refs.toString();\n return _.mapValues(refs, flattenRefs);\n}\n","export function wrapPromiseCallback(callback) {\n return function() {\n try {\n // eslint-disable-next-line no-invalid-this\n return Promise.resolve(callback.apply(this, arguments));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\nexport function promiseCancel(promise, cancel) {\n promise = promiseFinally(promise, () => {cancel = null;});\n promise.cancel = () => {\n if (!cancel) return;\n cancel();\n cancel = null;\n };\n propagatePromiseProperty(promise, 'cancel');\n return promise;\n}\n\nfunction propagatePromiseProperty(promise, propertyName) {\n const originalThen = promise.then, originalCatch = promise.catch;\n promise.then = (onResolved, onRejected) => {\n const derivedPromise = originalThen.call(promise, onResolved, onRejected);\n derivedPromise[propertyName] = promise[propertyName];\n propagatePromiseProperty(derivedPromise, propertyName);\n return derivedPromise;\n };\n promise.catch = onRejected => {\n const derivedPromise = originalCatch.call(promise, onRejected);\n derivedPromise[propertyName] = promise[propertyName];\n propagatePromiseProperty(derivedPromise, propertyName);\n return derivedPromise;\n };\n return promise;\n}\n\nexport function promiseFinally(promise, onFinally) {\n if (!onFinally) return promise;\n onFinally = wrapPromiseCallback(onFinally);\n return promise.then(result => {\n return onFinally().then(() => result);\n }, error => {\n return onFinally().then(() => Promise.reject(error));\n });\n}\n","import _ from 'lodash';\nimport Reference from './Reference.js';\nimport {wrapPromiseCallback} from './utils/promises.js';\nimport {joinPath} from './utils/paths.js';\n\n\nconst INTERCEPT_KEYS = [\n 'read', 'write', 'auth', 'set', 'update', 'commit', 'connect', 'peek', 'authenticate',\n 'unathenticate', 'certify', 'all'\n];\n\nconst EMPTY_ARRAY = [];\n\n\nclass SlowHandle {\n constructor(operation, delay, callback) {\n this._operation = operation;\n this._delay = delay;\n this._callback = callback;\n this._fired = false;\n }\n\n initiate() {\n this.cancel();\n this._fired = false;\n const elapsed = Date.now() - this._operation._startTimestamp;\n this._timeoutId = setTimeout(() => {\n this._fired = true;\n this._callback(this._operation);\n }, this._delay - elapsed);\n }\n\n cancel() {\n if (this._fired) this._callback(this._operation);\n if (this._timeoutId) clearTimeout(this._timeoutId);\n }\n}\n\n\nclass Operation {\n constructor(type, method, target, operand) {\n this._type = type;\n this._method = method;\n this._target = target;\n this._operand = operand;\n this._ready = false;\n this._running = false;\n this._ended = false;\n this._tries = 0;\n this._startTimestamp = Date.now();\n this._slowHandles = [];\n }\n\n get type() {return this._type;}\n get method() {return this._method;}\n get target() {return this._target;}\n get targets() {\n if (this._method !== 'update') return [this._target];\n return _.map(this._operand, (value, escapedPathFragment) => {\n return new Reference(\n this._target._tree, joinPath(this._target.path, escapedPathFragment),\n this._target._annotations);\n });\n }\n\n get operand() {return this._operand;}\n get ready() {return this._ready;}\n get running() {return this._running;}\n get ended() {return this._ended;}\n get tries() {return this._tries;}\n get error() {return this._error;}\n\n onSlow(delay, callback) {\n const handle = new SlowHandle(this, delay, callback);\n this._slowHandles.push(handle);\n handle.initiate();\n }\n\n _setRunning(value) {\n this._running = value;\n }\n\n _setEnded(value) {\n this._ended = value;\n }\n\n _markReady(ending) {\n this._ready = true;\n if (!ending) this._tries = 0;\n _.forEach(this._slowHandles, handle => handle.cancel());\n }\n\n _clearReady() {\n // Temporarily set ready to correctly reset previously triggered slow handles.\n this._ready = true;\n this._startTimestamp = Date.now();\n _.forEach(this._slowHandles, handle => handle.initiate());\n this._ready = false;\n }\n\n _incrementTries() {\n this._tries++;\n }\n}\n\n\nexport default class Dispatcher {\n constructor(bridge) {\n this._bridge = bridge;\n this._callbacks = {};\n Object.freeze(this);\n }\n\n intercept(interceptKey, callbacks) {\n if (!_.includes(INTERCEPT_KEYS, interceptKey)) {\n throw new Error('Unknown intercept operation type: ' + interceptKey);\n }\n const badCallbackKeys =\n _.difference(_.keys(callbacks), ['onBefore', 'onAfter', 'onError', 'onFailure']);\n if (badCallbackKeys.length) {\n throw new Error('Unknown intercept callback types: ' + badCallbackKeys.join(', '));\n }\n const wrappedCallbacks = {\n onBefore: this._addCallback('onBefore', interceptKey, callbacks.onBefore),\n onAfter: this._addCallback('onAfter', interceptKey, callbacks.onAfter),\n onError: this._addCallback('onError', interceptKey, callbacks.onError),\n onFailure: this._addCallback('onFailure', interceptKey, callbacks.onFailure)\n };\n return this._removeCallbacks.bind(this, interceptKey, wrappedCallbacks);\n }\n\n _addCallback(stage, interceptKey, callback) {\n if (!callback) return;\n const key = this._getCallbacksKey(stage, interceptKey);\n const wrappedCallback = wrapPromiseCallback(callback);\n (this._callbacks[key] || (this._callbacks[key] = [])).push(wrappedCallback);\n return wrappedCallback;\n }\n\n _removeCallback(stage, interceptKey, wrappedCallback) {\n if (!wrappedCallback) return;\n const key = this._getCallbacksKey(stage, interceptKey);\n if (this._callbacks[key]) _.pull(this._callbacks[key], wrappedCallback);\n }\n\n _removeCallbacks(interceptKey, wrappedCallbacks) {\n _.forEach(wrappedCallbacks, (wrappedCallback, stage) => {\n this._removeCallback(stage, interceptKey, wrappedCallback);\n });\n }\n\n _getCallbacks(stage, operationType, method) {\n return [].concat(\n this._callbacks[this._getCallbacksKey(stage, method)] || EMPTY_ARRAY,\n this._callbacks[this._getCallbacksKey(stage, operationType)] || EMPTY_ARRAY,\n this._callbacks[this._getCallbacksKey(stage, 'all')] || EMPTY_ARRAY\n );\n }\n\n _getCallbacksKey(stage, interceptKey) {\n return `${stage}_${interceptKey}`;\n }\n\n execute(operationType, method, target, operand, executor) {\n executor = wrapPromiseCallback(executor);\n const operation = this.createOperation(operationType, method, target, operand);\n return this.begin(operation).then(() => {\n const executeWithRetries = () => {\n return executor().catch(e => this._retryOrEnd(operation, e).then(executeWithRetries));\n };\n return executeWithRetries();\n }).then(result => this.end(operation).then(() => result));\n }\n\n createOperation(operationType, method, target, operand) {\n return new Operation(operationType, method, target, operand);\n }\n\n begin(operation) {\n return Promise.all(_.map(\n this._getCallbacks('onBefore', operation.type, operation.method),\n onBefore => onBefore(operation)\n )).then(() => {\n if (!operation.ended) operation._setRunning(true);\n }, e => this.end(operation, e));\n }\n\n markReady(operation) {\n operation._markReady();\n }\n\n clearReady(operation) {\n operation._clearReady();\n }\n\n retry(operation, error) {\n operation._incrementTries();\n operation._error = error;\n return Promise.all(_.map(\n this._getCallbacks('onError', operation.type, operation.method),\n onError => onError(operation, error)\n )).then(results => {\n // If the operation ended in the meantime, bail. This will cause the caller to attempt to\n // fail the operation, but since it's already ended the call to end() with an error will be a\n // no-op.\n if (operation.ended) return;\n const retrying = _.some(results);\n if (retrying) delete operation._error;\n return retrying;\n });\n }\n\n _retryOrEnd(operation, error) {\n return this.retry(operation, error).then(result => {\n if (!result) return this.end(operation, error);\n }, e => this.end(operation, e));\n }\n\n end(operation, error) {\n if (operation.ended) return Promise.resolve();\n operation._setRunning(false);\n operation._setEnded(true);\n if (error) {\n operation._error = error;\n } else {\n // In case we're racing with a retry(), wipe out the error.\n delete operation._error;\n }\n return Promise.all(_.map(\n this._getCallbacks('onAfter', operation.type, operation.method),\n onAfter => onAfter(operation)\n )).then(\n () => this._afterEnd(operation),\n e => {\n operation._error = e;\n return this._afterEnd(operation);\n }\n );\n }\n\n _afterEnd(operation) {\n operation._markReady(true);\n if (!operation.error) return Promise.resolve();\n const onFailureCallbacks = this._getCallbacks('onFailure', operation.type, operation.method);\n if (onFailureCallbacks) {\n setTimeout(() => {\n _.forEach(onFailureCallbacks, onFailure => onFailure(operation));\n }, 0);\n }\n return Promise.reject(operation.error);\n }\n}\n\n","const ALPHABET = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n\nconst getRandomValues = window.crypto && window.crypto.getRandomValues &&\n window.crypto.getRandomValues.bind(window.crypto);\n\nexport default class KeyGenerator {\n constructor() {\n this._lastUniqueKeyTime = 0;\n this._lastRandomValues = [];\n }\n\n generateUniqueKey(now) {\n now = now || Date.now();\n const chars = new Array(20);\n let prefix = now;\n for (let i = 7; i >= 0; i--) {\n chars[i] = ALPHABET.charAt(prefix & 0x3f); // eslint-disable-line no-bitwise\n prefix = Math.floor(prefix / 64);\n }\n if (now === this._lastUniqueKeyTime) {\n let i = 11;\n while (i >= 0 && this._lastRandomValues[i] === 63) {\n this._lastRandomValues[i] = 0;\n i -= 1;\n }\n if (i === -1) {\n throw new Error('Internal assertion failure: ran out of unique IDs for this millisecond');\n }\n this._lastRandomValues[i] += 1;\n } else {\n this._lastUniqueKeyTime = now;\n if (getRandomValues) {\n const array = new Uint8Array(12);\n getRandomValues(array);\n for (let i = 0; i < 12; i++) {\n // eslint-disable-next-line no-bitwise\n this._lastRandomValues[i] = array[i] & (i ? 0x3f : 0x0f);\n }\n } else {\n for (let i = 0; i < 12; i++) {\n // Make sure to leave some space for incrementing in the top nibble.\n this._lastRandomValues[i] = Math.floor(Math.random() * (i ? 64 : 16));\n }\n }\n }\n for (let i = 0; i < 12; i++) {\n chars[i + 8] = ALPHABET[this._lastRandomValues[i]];\n }\n return chars.join('');\n }\n}\n","import Vue from 'vue';\nimport Reference from './Reference.js';\n\n\nexport default class MetaTree {\n constructor(rootUrl, tree, bridge, dispatcher) {\n this._rootUrl = rootUrl;\n this._tree = tree;\n this._dispatcher = dispatcher;\n this._bridge = bridge;\n this._vue = new Vue({data: {$root: {\n connected: undefined, timeOffset: 0, user: undefined, userid: undefined,\n nowAtInterval(intervalMillis) {\n const key = 'now' + intervalMillis;\n if (!Object.hasOwn(this, key)) {\n const update = () => {\n Vue.set(this, key, Date.now() + this.timeOffset);\n };\n update();\n setInterval(update, intervalMillis);\n }\n return this[key];\n }\n }}});\n\n this._auth = {serial: 0, initialAuthChangeReceived: false, changePromise: Promise.resolve()};\n\n bridge.onAuth(rootUrl, this._handleAuthChange, this);\n\n this._connectInfoProperty('serverTimeOffset', 'timeOffset');\n this._connectInfoProperty('connected', 'connected');\n Object.freeze(this);\n }\n\n get root() {\n return this._vue.$data.$root;\n }\n\n destroy() {\n this._bridge.offAuth(this._rootUrl, this._handleAuthChange, this);\n this._vue.$destroy();\n }\n\n authenticate(token) {\n this._auth.serial++;\n return this._dispatcher.execute(\n 'auth', 'authenticate', new Reference(this._tree, '/'), token, () => {\n const promise = token ?\n this._bridge.authWithCustomToken(this._rootUrl, token) :\n this._bridge.authAnonymously(this._rootUrl);\n return promise.then(() => this._auth.changePromise);\n }\n );\n }\n\n unauthenticate() {\n // Signal user change to null pre-emptively. This is what the Firebase SDK does as well, since\n // it lets the app tear down user-required connections before the user is actually deauthed,\n // which can prevent spurious permission denied errors.\n this._auth.serial++;\n return this._handleAuthChange(null).then(approved => {\n // Bail if auth change callback initiated another authentication, since it will have already\n // sent the command to the bridge and sending our own now would incorrectly override it.\n if (!approved) return;\n return this._dispatcher.execute(\n 'auth', 'unauthenticate', new Reference(this._tree, '/'), undefined, () => {\n return this._bridge.unauth(this._rootUrl);\n }\n );\n });\n }\n\n _handleAuthChange(user) {\n const supersededChange = !this._auth.initialAuthChangeReceived && this._auth.serial;\n if (user !== undefined) this._auth.initialAuthChangeReceived = true;\n if (supersededChange) return;\n const authSerial = this._auth.serial;\n if (this.root.user === user) return Promise.resolve(false);\n const promise = this._dispatcher.execute(\n 'auth', 'certify', new Reference(this._tree, '/'), user, () => {\n if (this.root.user === user || authSerial !== this._auth.serial) return false;\n if (user) Object.freeze(user);\n this.root.user = user;\n this.root.userid = user && user.uid;\n return true;\n }\n );\n this._auth.changePromise = this._auth.changePromise.then(() => promise).catch();\n return promise;\n }\n\n _isAuthChangeStale(user) {\n return this.root.user === user;\n }\n\n _connectInfoProperty(property, attribute) {\n const url = new URL(this._rootUrl);\n url.pathname = encodeURI(`/.info/${property}`);\n this._bridge.on(url.href, url.href, null, 'value', snap => {\n this.root[attribute] = snap.value;\n });\n }\n}\n","import {Reference, Handle} from './Reference.js';\nimport stats from './utils/stats.js';\nimport {makePathMatcher, joinPath, splitPath, escapeKey, unescapeKey} from './utils/paths.js';\nimport {isTrussEqual, copyPrototype} from './utils/utils.js';\nimport {promiseFinally} from './utils/promises.js';\n\nimport _ from 'lodash';\n\n// These are defined separately for each object so they're not included in Value below.\nconst RESERVED_VALUE_PROPERTY_NAMES = {__ob__: true};\n\nconst UNSUPPORTED_LIFECYCLE_METHODS = new Set([\n 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'activated', 'deactivated', 'errorCaptured'\n]);\nconst UNSUPPORTED_LIFECYCLE_HOOKS =\n new Set(_.map(UNSUPPORTED_LIFECYCLE_METHODS, method => `hook:${method}`));\n\nconst LAST_COMPUTED_VALUE = Symbol('last-computed-value');\n\n// Holds properties that we're going to set on a model object that's being created right now as soon\n// as it's been created, but that we'd like to be accessible in the constructor. The object\n// prototype's getters will pick those up until they get overridden in the instance.\nlet creatingObjectProperties;\n\nlet currentPropertyFrozen;\n\n\nexport class BaseValue {\n get $info() {return this.$truss.info;}\n get $store() {return this.$truss.store;} // access indirectly to leave dependency trace\n get $now() {return this.$truss.now;}\n\n $newKey() {return this.$truss.newKey();}\n\n $intercept(actionType, callbacks) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const unintercept = this.$truss.intercept(actionType, callbacks);\n const uninterceptAndRemoveFinalizer = () => {\n unintercept();\n this.$off('hook:destroyed', uninterceptAndRemoveFinalizer);\n };\n this.$on('hook:destroyed', uninterceptAndRemoveFinalizer);\n return uninterceptAndRemoveFinalizer;\n }\n\n $connect(scope, connections) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n if (!connections) {\n connections = scope;\n scope = undefined;\n }\n const connector = this.$truss.connect(scope, wrapConnections(this, connections));\n const originalDestroy = connector.destroy;\n const destroy = () => {\n this.$off('hook:destroyed', destroy);\n return originalDestroy.call(connector);\n };\n this.$on('hook:destroyed', destroy);\n connector.destroy = destroy;\n return connector;\n }\n\n $peek(target, callback) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = promiseFinally(\n this.$truss.peek(target, callback), () => {this.$off('hook:destroyed', promise.cancel);}\n );\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n\n $observe(subjectFn, callbackFn, options) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n let unobserveAndRemoveFinalizer;\n\n const unobserve = this.$truss.observe(() => {\n this.$$touchThis();\n return subjectFn.call(this);\n }, callbackFn.bind(this), {...options, vm: this});\n\n unobserveAndRemoveFinalizer = () => { // eslint-disable-line prefer-const\n unobserve();\n this.$off('hook:destroyed', unobserveAndRemoveFinalizer);\n };\n this.$on('hook:destroyed', unobserveAndRemoveFinalizer);\n return unobserveAndRemoveFinalizer;\n }\n\n $when(expression, options) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = this.$truss.when(() => {\n this.$$touchThis();\n return expression.call(this);\n }, options);\n promiseFinally(promise, () => {this.$off('hook:destroyed', promise.cancel);});\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n}\n\n\nclass Value {\n get $parent() {return creatingObjectProperties.$parent.value;}\n get $path() {return creatingObjectProperties.$path.value;}\n get $truss() {\n Object.defineProperty(this, '$truss', {value: this.$parent.$truss});\n return this.$truss;\n }\n\n get $ref() {\n Object.defineProperty(this, '$ref', {value: new Reference(this.$truss._tree, this.$path)});\n return this.$ref;\n }\n\n get $refs() {return this.$ref;}\n get $key() {\n Object.defineProperty(\n this, '$key', {value: unescapeKey(this.$path.slice(this.$path.lastIndexOf('/') + 1))});\n return this.$key;\n }\n\n get $data() {return this;}\n get $hidden() {return false;} // eslint-disable-line lodash/prefer-constant\n get $empty() {return _.isEmpty(this.$data);}\n get $keys() {return _.keys(this.$data);}\n get $values() {return _.values(this.$data);}\n get $ready() {return this.$ref.ready;}\n get $overridden() {return false;} // eslint-disable-line lodash/prefer-constant\n\n $nextTick() {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = this.$truss.nextTick();\n promiseFinally(promise, () => {this.$off('hook:destroyed', promise.cancel);});\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n\n $freezeComputedProperty() {\n if (!_.isBoolean(currentPropertyFrozen)) {\n throw new Error('Cannot freeze a computed property outside of its getter function');\n }\n currentPropertyFrozen = true;\n }\n\n get $lastComputedValue() {\n if (!_.isBoolean(currentPropertyFrozen)) {\n throw new Error(\n 'Cannot use last computed value of a property outside of its getter function');\n }\n return LAST_COMPUTED_VALUE;\n }\n\n $set(value) {return this.$ref.set(value);}\n $update(values) {return this.$ref.update(values);}\n $override(values) {return this.$ref.override(values);}\n $commit(options, updateFn) {return this.$ref.commit(options, updateFn);}\n\n $$touchThis() {\n /* eslint-disable no-unused-expressions */\n if (this.__ob__) {\n this.__ob__.dep.depend();\n } else if (this.$parent) {\n (Object.hasOwn(this.$parent, '$data') ? this.$parent.$data : this.$parent)[this.$key];\n } else {\n this.$store;\n }\n /* eslint-enable no-unused-expressions */\n }\n\n get $destroyed() { // eslint-disable-line lodash/prefer-constant\n return false;\n }\n\n $on(event, callback) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n if (UNSUPPORTED_LIFECYCLE_HOOKS.has(event)) {\n throw new Error(`Models don't support the \"${event}\" lifecycle event`);\n }\n (this.$$hooks[event] = this.$$hooks[event] || []).push(callback);\n return this;\n }\n\n $once(event, callback) {\n const object = this;\n function cb(...args) {\n object.$off(event, cb);\n callback(...args);\n }\n cb.fn = callback;\n return this.$on(event, cb);\n }\n\n $off(event, callback) {\n if (event) {\n if (callback) {\n if (_.isArray(event)) {\n for (const ev of event) this.$off(ev, callback);\n } else if (this.$$hooks[event]) {\n const callbacks = this.$$hooks[event];\n for (let i = 0; i < callbacks.length; i++) {\n const cb = callbacks[i];\n if (cb === callback || cb.fn === callback) {\n callbacks.splice(i, 1);\n break;\n }\n }\n }\n } else {\n delete this.$$hooks[event];\n }\n } else {\n for (const key of _.keys(this.$$hooks)) delete this.$$hooks[key];\n }\n return this;\n }\n\n $emit(event, ...args) {\n if (_.has(this, '$$hooks')) {\n // Some callbacks remove themselves from the array, so clone it before iterating.\n _.forEach(_.clone(this.$$hooks[event]), callback => {\n if (callback.$once && callback.$once[event]) {\n callback.$once[event] -= 1;\n this.$off(event, callback);\n }\n callback(...args);\n });\n }\n return this;\n }\n\n get $$hooks() {\n Object.defineProperty(this, '$$hooks', {\n value: {}, writable: false, enumerable: false, configurable: false\n });\n return this.$$hooks;\n }\n}\n\ncopyPrototype(BaseValue, Value);\n\n_.forEach(Value.prototype, (prop, name) => {\n Object.defineProperty(\n Value.prototype, name, {value: prop, enumerable: false, configurable: false, writable: false});\n});\n\n\nclass ErrorWrapper {\n constructor(error) {\n this.error = error;\n }\n}\n\n\nclass FrozenWrapper {\n constructor(value) {\n this.value = value;\n }\n}\n\n\nexport default class Modeler {\n constructor(vue, debug) {\n this._vue = vue;\n this._trie = {Class: Value};\n this._debug = debug;\n Object.freeze(this);\n }\n\n init(classes, rootAcceptable) {\n if (_.isPlainObject(classes)) {\n _.forEach(classes, (Class, path) => {\n if (Class.$trussMount) return;\n Class.$$trussMount = Class.$$trussMount || [];\n Class.$$trussMount.push(path);\n });\n classes = _.values(classes);\n _.forEach(classes, Class => {\n if (!Class.$trussMount && Class.$$trussMount) {\n Class.$trussMount = Class.$$trussMount;\n delete Class.$$trussMount;\n }\n });\n }\n classes = _.uniq(classes);\n _.forEach(classes, Class => this._mountClass(Class, rootAcceptable));\n this._decorateTrie(this._trie);\n }\n\n destroy() {/* empty */}\n\n _getMount(path, scaffold, predicate) {\n const segments = splitPath(path, true);\n let node;\n for (const segment of segments) {\n let child = segment ?\n node.children && (node.children[segment] || !scaffold && node.children.$) : this._trie;\n if (!child) {\n if (!scaffold) return;\n node.children = node.children || {};\n child = node.children[segment] = {Class: Value};\n }\n node = child;\n if (predicate && predicate(node)) break;\n }\n return node;\n }\n\n _findMount(predicate, node) {\n if (!node) node = this._trie;\n if (predicate(node)) return node;\n for (const childKey of _.keys(node.children)) {\n const result = this._findMount(predicate, node.children[childKey]);\n if (result) return result;\n }\n }\n\n _decorateTrie(node) {\n _.forEach(node.children, child => {\n this._decorateTrie(child);\n if (child.local || child.localDescendants) node.localDescendants = true;\n });\n }\n\n _augmentClass(Class) {\n let computedProperties;\n let proto = Class.prototype;\n while (proto && proto.constructor !== Object) {\n for (const name of Object.getOwnPropertyNames(proto)) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, name);\n if (name.charAt(0) === '$') {\n if (_.isEqual(descriptor, Object.getOwnPropertyDescriptor(Value.prototype, name))) {\n continue;\n }\n throw new Error(`Property names starting with \"$\" are reserved: ${Class.name}.${name}`);\n }\n if (UNSUPPORTED_LIFECYCLE_METHODS.has(name) && _.isFunction(proto[name])) {\n throw new Error(`Models don't support the \"${name}\" lifecycle method`);\n }\n if (descriptor.get && !(computedProperties && computedProperties[name])) {\n (computedProperties || (computedProperties = {}))[name] = {\n name, fullName: `${proto.constructor.name}.${name}`, get: descriptor.get,\n set: descriptor.set\n };\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n for (const name of Object.getOwnPropertyNames(Value.prototype)) {\n if (name === 'constructor' || Object.hasOwn(Class.prototype, name)) continue;\n Object.defineProperty(\n Class.prototype, name, Object.getOwnPropertyDescriptor(Value.prototype, name));\n }\n return computedProperties;\n }\n\n _mountClass(Class, rootAcceptable) {\n const computedProperties = this._augmentClass(Class);\n const allVariables = [];\n let mounts = Class.$trussMount;\n if (!mounts) throw new Error(`Class ${Class.name} lacks a $trussMount static property`);\n if (!_.isArray(mounts)) mounts = [mounts];\n _.forEach(mounts, mount => {\n if (_.isString(mount)) mount = {path: mount};\n if (!rootAcceptable && mount.path === '/') {\n throw new Error('Data root already accessed, too late to mount class');\n }\n const matcher = makePathMatcher(mount.path);\n for (const variable of matcher.variables) {\n if (variable === '$' || variable.charAt(1) === '$') {\n throw new Error(`Invalid variable name: ${variable}`);\n }\n if (variable.charAt(0) === '$' && (\n _.has(Value.prototype, variable) || RESERVED_VALUE_PROPERTY_NAMES[variable]\n )) {\n throw new Error(`Variable name conflicts with built-in property or method: ${variable}`);\n }\n allVariables.push(variable);\n }\n const escapedKey = mount.path.match(/\\/([^/]*)$/)[1];\n if (escapedKey.charAt(0) === '$') {\n if (mount.placeholder) {\n throw new Error(\n `Class ${Class.name} mounted at wildcard ${escapedKey} cannot be a placeholder`);\n }\n } else if (!_.has(mount, 'placeholder')) {\n mount.placeholder = {};\n }\n const targetMount = this._getMount(mount.path.replace(/\\$[^/]*/g, '$'), true);\n if (targetMount.matcher && (\n targetMount.escapedKey === escapedKey ||\n targetMount.escapedKey.charAt(0) === '$' && escapedKey.charAt(0) === '$'\n )) {\n throw new Error(\n `Multiple classes mounted at ${mount.path}: ${targetMount.Class.name}, ${Class.name}`);\n }\n _.assign(\n targetMount, {Class, matcher, computedProperties, escapedKey},\n _.pick(mount, 'placeholder', 'local', 'keysUnsafe', 'hidden'));\n });\n _(allVariables).uniq().forEach(variable => {\n Object.defineProperty(Class.prototype, variable, {get() {\n return creatingObjectProperties ?\n creatingObjectProperties[variable] && creatingObjectProperties[variable].value :\n undefined;\n }});\n });\n }\n\n /**\n * Creates a Truss object and sets all its basic properties: path segment variables, user-defined\n * properties, and computed properties. The latter two will be enumerable so that Vue will pick\n * them up and make the reactive.\n */\n createObject(path, properties) {\n const mount = this._getMount(path) || {Class: Value};\n try {\n if (mount.matcher) {\n const match = mount.matcher.match(path);\n for (const variable in match) {\n properties[variable] = {value: match[variable]};\n }\n }\n\n creatingObjectProperties = properties;\n const object = new mount.Class();\n creatingObjectProperties = null;\n\n if (mount.keysUnsafe) {\n properties.$data = {value: Object.create(null), configurable: true, enumerable: true};\n }\n if (mount.hidden) properties.$hidden = {value: true};\n if (mount.computedProperties) {\n _.forEach(mount.computedProperties, prop => {\n properties[prop.name] = this._buildComputedPropertyDescriptor(object, prop);\n });\n }\n\n return object;\n } catch (e) {\n e.extra = _.assign({mount, properties, className: mount.Class && mount.Class.name}, e.extra);\n throw e;\n }\n }\n\n _buildComputedPropertyDescriptor(object, prop) {\n const propertyStats = stats.for(prop.fullName);\n\n let value, pendingPromise;\n let writeAllowed = false;\n\n const initialize = () => {\n let unwatchNow = false;\n const compute = computeValue.bind(object, prop, propertyStats);\n compute.toString = _.constant(`compute ${prop.fullName}`);\n let unwatch = () => {unwatchNow = true;};\n unwatch = this._vue.$watch(compute, newValue => {\n if (object.$destroyed) {\n unwatch();\n return;\n }\n if (pendingPromise) {\n if (pendingPromise.cancel) pendingPromise.cancel();\n pendingPromise = undefined;\n }\n if (_.isObject(newValue) && _.isFunction(newValue.then)) {\n const promise = newValue.then(finalValue => {\n if (promise === pendingPromise) update(finalValue);\n }, error => {\n if (promise === pendingPromise && update(new ErrorWrapper(error)) &&\n !error.trussExpectedException) throw error;\n });\n pendingPromise = promise;\n } else if (update(newValue)) {\n if (newValue instanceof ErrorWrapper && !newValue.error.trussExpectedException) {\n throw newValue.error;\n }\n }\n }, {immediate: true}); // use immediate:true since watcher will run computeValue anyway\n // Hack to change order of computed property watchers. By flipping their ids to be negative,\n // we ensure that they will settle before all other watchers, and also that children\n // properties will settle before their parents since values are often aggregated upwards.\n const watcher = _.last(this._vue._watchers || this._vue._scope.effects);\n watcher.id = -watcher.id;\n\n function update(newValue) {\n const startTime = performance.now();\n if (newValue instanceof FrozenWrapper) {\n newValue = newValue.value;\n unwatch();\n object.$off('hook:destroyed', unwatch);\n }\n if (newValue === LAST_COMPUTED_VALUE || isTrussEqual(value, newValue)) return;\n // console.log('updating', object.$key, prop.fullName, 'from', value, 'to', newValue);\n writeAllowed = true;\n object[prop.name] = newValue;\n writeAllowed = false;\n // Freeze the computed value so it can't be accidentally modified by a third party. Ideally\n // we'd freeze it before setting it so that Vue wouldn't instrument the object recursively\n // (since it can't change anyway), but we actually need the instrumentation in case a client\n // tries to access an inexistent property off a computed pointer to an unfrozen value (e.g.,\n // a $truss-ified object). When instrumented, Vue will add a dependency on the unfrozen\n // value in case the property is later added. If uninstrumented, the dependency won't be\n // added and we won't be notified. And Vue only instruments extensible objects...\n freeze(newValue);\n propertyStats.numUpdates += 1;\n propertyStats.updateTime += performance.now() - startTime;\n return true;\n }\n\n if (unwatchNow) {\n unwatch();\n } else {\n object.$on('hook:destroyed', unwatch);\n }\n\n object.$off('hook:created', initialize);\n };\n object.$on('hook:created', initialize);\n\n return {\n enumerable: true, configurable: true,\n get() {\n if (!writeAllowed && value instanceof ErrorWrapper) throw value.error;\n return value;\n },\n set(newValue) {\n if (writeAllowed) {\n value = newValue;\n } else if (prop.set) {\n prop.set.call(this, newValue);\n } else {\n throw new Error(`You cannot set a computed property: ${prop.name}`);\n }\n }\n };\n }\n\n destroyObject(object) {\n Object.defineProperty(\n object, '$destroyed', {value: true, enumerable: false, configurable: false});\n }\n\n emitLifecycleHook(object, hook) {\n if (_.isFunction(object[hook])) object[hook]();\n object.$emit(`hook:${hook}`);\n }\n\n isPlaceholder(path) {\n const mount = this._getMount(path);\n return mount && mount.placeholder;\n }\n\n isLocal(path, value) {\n const mount = this._getMount(path, false, mount => mount.local);\n if (mount && mount.local) return true;\n if (this._hasLocalProperties(mount, value)) {\n throw new Error('Write on a mix of local and remote tree paths.');\n }\n return false;\n }\n\n _hasLocalProperties(mount, value) {\n if (!mount) return false;\n if (mount.local) return true;\n if (!mount.localDescendants || !_.isObject(value)) return false;\n for (const key in value) {\n const local =\n this._hasLocalProperties(mount.children[escapeKey(key)] || mount.children.$, value[key]);\n if (local) return true;\n }\n return false;\n }\n\n forEachPlaceholderChild(path, iteratee) {\n const mount = this._getMount(path);\n _.forEach(mount && mount.children, child => {\n if (child.placeholder) iteratee(child);\n });\n }\n\n checkVueObject(object, path, checkedObjects) {\n const top = !checkedObjects;\n if (top) checkedObjects = new Set();\n const objectPropertyValues = new Map();\n const mount = this._findMount(candidate => candidate.Class === object.constructor);\n const targetProperties = _(object)\n .thru(Object.getOwnPropertyNames)\n .reject(key =>\n RESERVED_VALUE_PROPERTY_NAMES[key] || Object.hasOwn(Value.prototype, key) ||\n /^\\$_/.test(key)\n )\n .reject(key => mount && mount.matcher && _.includes(mount.matcher.variables, key))\n .map(key => {\n let value;\n try {\n value = object[key];\n // Ignore builtin object types.\n if (value instanceof RegExp) return;\n } catch {\n // Ignore any values that hold exceptions, or otherwise throw on access -- we won't be\n // able to check them anyway.\n return;\n }\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n const computed =\n !descriptor.enumerable && descriptor.set && !Object.hasOwn(object, '$_' + key);\n return {key, value, descriptor, computed};\n })\n .compact()\n .value();\n\n for (const {key, value, descriptor, computed} of targetProperties) {\n if (!(_.isArray(object) && (/^\\d+$/.test(key) || key === 'length'))) {\n if ('value' in descriptor || !descriptor.get) {\n throw new Error(\n `Value at ${path}, contained in a Firetruss object, has a rogue property: ${key}`);\n }\n if (object.$truss && descriptor.enumerable) {\n try {\n object[key] = value;\n throw new Error(\n `Firetruss object at ${path} has an enumerable non-Firebase property: ${key}`);\n } catch (e) {\n if (e.trussCode !== 'firebase_overwrite') throw e;\n }\n }\n }\n if (_.isObject(value)) {\n if (!checkedObjects.has(value) && !Object.isSealed(value) &&\n !(_.isFunction(value) || _.isElement(value) || value instanceof Promise)) {\n checkedObjects.add(value);\n this.checkVueObject(value, joinPath(path, escapeKey(key)), checkedObjects);\n }\n if (!computed && !value.$truss) objectPropertyValues.set(value, key);\n }\n }\n\n for (const {key, value, computed} of targetProperties) {\n if (computed && _.isObject(value) && !value.$truss) {\n const otherKey = objectPropertyValues.get(value);\n if (otherKey) {\n throw new Error(\n `Firetruss object at ${path} has properties ${key} ` +\n `and ${otherKey} with an aliased value`);\n }\n }\n }\n }\n}\n\n\nfunction computeValue(prop, propertyStats) {\n /* eslint-disable no-invalid-this */\n if (this.$destroyed) return;\n // Touch this object, since a failed access to a missing property doesn't get captured as a\n // dependency.\n this.$$touchThis();\n\n const oldPropertyFrozen = currentPropertyFrozen;\n currentPropertyFrozen = false;\n const startTime = performance.now();\n let value;\n try {\n try {\n value = prop.get.call(this);\n } catch (e) {\n value = new ErrorWrapper(e);\n } finally {\n propertyStats.computeTime += performance.now() - startTime;\n propertyStats.numRecomputes += 1;\n }\n if (currentPropertyFrozen) value = new FrozenWrapper(value);\n return value;\n } finally {\n currentPropertyFrozen = oldPropertyFrozen;\n }\n /* eslint-enable no-invalid-this */\n}\n\nfunction wrapConnections(object, connections) {\n if (!connections || connections instanceof Handle) return connections;\n if (_.isFunction(connections)) {\n const fn = function() {\n /* eslint-disable no-invalid-this */\n object.$$touchThis();\n return wrapConnections(object, connections.call(this));\n /* eslint-enable no-invalid-this */\n };\n return fn;\n }\n return _.mapValues(connections, descriptor => wrapConnections(object, descriptor));\n}\n\nfunction freeze(object) {\n if (_.isNil(object) || !_.isObject(object) || Object.isFrozen(object) || object.$truss) {\n return object;\n }\n object = Object.freeze(object);\n if (_.isArray(object)) return _.map(object, value => freeze(value));\n return _.mapValues(object, value => freeze(value));\n}\n","import _ from 'lodash';\nimport Vue from 'vue';\nimport {splitPath} from './utils/paths.js';\n\n\nclass QueryHandler {\n constructor(coupler, query) {\n this._coupler = coupler;\n this._query = query;\n this._listeners = [];\n this._keys = [];\n this._coupler._url.pathname = encodeURI(query.path);\n this._url = this._coupler._url.toString();\n this._segments = splitPath(query.path, true);\n this._listening = false;\n this.ready = false;\n }\n\n attach(operation, keysCallback) {\n this._listen();\n this._listeners.push({operation, keysCallback});\n if (this.ready) {\n this._coupler._dispatcher.markReady(operation);\n if (keysCallback) keysCallback(this._keys);\n }\n }\n\n detach(operation) {\n const k = _.findIndex(this._listeners, {operation});\n if (k >= 0) this._listeners.splice(k, 1);\n return this._listeners.length;\n }\n\n _listen() {\n if (this._listening) return;\n this._coupler._bridge.on(\n this._query.toString(), this._url, this._query.constraints, 'value',\n this._handleSnapshot, this._handleError, this, {sync: true});\n this._listening = true;\n }\n\n destroy() {\n this._coupler._bridge.off(\n this._query.toString(), this._url, this._query.constraints, 'value', this._handleSnapshot,\n this);\n this._listening = false;\n this.ready = false;\n for (const key of this._keys) {\n this._coupler._decoupleSegments(this._segments.concat(key));\n }\n }\n\n _handleSnapshot(snap) {\n this._coupler._queueSnapshotCallback(() => {\n // Order is important here: first couple any new subpaths so _handleSnapshot will update the\n // tree, then tell the client to update its keys, pulling values from the tree.\n if (!this._listeners.length || !this._listening) return;\n const updatedKeys = this._updateKeysAndApplySnapshot(snap);\n if (!this.ready) {\n this.ready = true;\n for (const listener of this._listeners) {\n this._coupler._dispatcher.markReady(listener.operation);\n }\n }\n if (updatedKeys) {\n for (const listener of this._listeners) {\n if (listener.keysCallback) listener.keysCallback(updatedKeys);\n }\n }\n });\n }\n\n _updateKeysAndApplySnapshot(snap) {\n let updatedKeys;\n if (snap.path === this._query.path) {\n updatedKeys = _.keys(snap.value);\n updatedKeys.sort();\n if (_.isEqual(this._keys, updatedKeys)) {\n updatedKeys = null;\n } else {\n for (const key of _.difference(updatedKeys, this._keys)) {\n this._coupler._coupleSegments(this._segments.concat(key));\n }\n for (const key of _.difference(this._keys, updatedKeys)) {\n // Decoupling a segment will prune the tree at that location if there are no other\n // listeners.\n this._coupler._decoupleSegments(this._segments.concat(key));\n }\n this._keys = updatedKeys;\n }\n // The snapshot may be partial, so create synthetic snapshots for subpaths and apply those to\n // update / insert values. (Deleted ones got pruned above.)\n if (snap.exists) {\n const rootValue = snap.value;\n const rootPath = snap.path;\n for (const key of this._keys) {\n snap._path = rootPath + '/' + key;\n snap._key = undefined;\n snap._value = rootValue[key];\n this._coupler._applySnapshot(snap);\n }\n // Restore original properties, just in case.\n snap._path = rootPath;\n snap._key = undefined;\n snap._value = rootValue;\n }\n } else if (snap.path.replace(/\\/[^/]+/, '') === this._query.path) {\n const hasKey = _.includes(this._keys, snap.key);\n if (snap.value) {\n if (!hasKey) {\n this._coupler._coupleSegments(this._segments.concat(snap.key));\n this._keys.push(snap.key);\n this._keys.sort();\n updatedKeys = this._keys;\n }\n } else if (hasKey) {\n this._coupler._decoupleSegments(this._segments.concat(snap.key));\n _.pull(this._keys, snap.key);\n this._keys.sort();\n updatedKeys = this._keys;\n }\n // A snapshot under the query's level is guaranteed to be a full snapshot, so we can apply it\n // directly.\n this._coupler._applySnapshot(snap);\n }\n return updatedKeys;\n }\n\n _handleError(error) {\n if (!this._listeners.length || !this._listening) return;\n this._listening = false;\n this.ready = false;\n for (const key of this._keys) this._coupler._decoupleSegments(this._segments.concat(key));\n this._keys = [];\n Promise.all(_.map(this._listeners, listener => {\n this._coupler._dispatcher.clearReady(listener.operation);\n return this._coupler._dispatcher.retry(listener.operation, error).catch(e => {\n listener.operation._disconnect(e);\n return false;\n });\n })).then(results => {\n if (_.some(results)) {\n if (this._listeners.length) this._listen();\n } else {\n for (const listener of this._listeners) listener.operation._disconnect(error);\n }\n });\n }\n}\n\n\nclass Node {\n constructor(coupler, path, parent) {\n this._coupler = coupler;\n this.path = path;\n this.parent = parent;\n this._coupler._url.pathname = encodeURI(path);\n this.url = this._coupler._url.toString();\n this.operations = [];\n this.queryCount = 0;\n this.listening = false;\n this.ready = false;\n this.children = {};\n }\n\n get active() {\n return this.count || this.queryCount;\n }\n\n get count() {\n return this.operations.length;\n }\n\n listen(skip) {\n if (!skip && this.count) {\n if (this.listening) return;\n _.forEach(this.operations, op => {this._coupler._dispatcher.clearReady(op);});\n this._coupler._bridge.on(\n this.url, this.url, null, 'value', this._handleSnapshot, this._handleError, this,\n {sync: true});\n this.listening = true;\n } else {\n _.forEach(this.children, child => {child.listen();});\n }\n }\n\n unlisten(skip) {\n if (!skip && this.listening) {\n this._coupler._bridge.off(this.url, this.url, null, 'value', this._handleSnapshot, this);\n this.listening = false;\n this._forAllDescendants(node => {\n if (node.listening) return false;\n if (node.ready) {\n node.ready = false;\n }\n });\n } else {\n _.forEach(this.children, child => {child.unlisten();});\n }\n }\n\n _handleSnapshot(snap) {\n this._coupler._queueSnapshotCallback(() => {\n if (!this.listening || !this._coupler.isTrunkCoupled(snap.path)) return;\n this._coupler._applySnapshot(snap);\n if (!this.ready && snap.path === this.path) {\n this.ready = true;\n this.unlisten(true);\n this._forAllDescendants(node => {\n for (const op of node.operations) this._coupler._dispatcher.markReady(op);\n });\n }\n });\n }\n\n _handleError(error) {\n if (!this.count || !this.listening) return;\n this.listening = false;\n this._forAllDescendants(node => {\n if (node.listening) return false;\n if (node.ready) {\n node.ready = false;\n }\n for (const op of node.operations) this._coupler._dispatcher.clearReady(op);\n });\n // Immediately prune all data below this node. We don't want to decouple it since the operation\n // may want to retry. We also don't want to look for other coupled paths below (that may not be\n // subject to the permission denied error) since they're not listening and the data would get\n // stale. If this node doesn't retry and gets decoupled we'll automatically start listening on\n // descendants and (try to) refill the subtrees.\n this._coupler._prunePath(this.path);\n return Promise.all(_.map(this.operations, op => {\n return this._coupler._dispatcher.retry(op, error).catch(e => {\n op._disconnect(e);\n return false;\n });\n })).then(results => {\n if (_.some(results)) {\n if (this.count) this.listen();\n } else {\n for (const op of this.operations) op._disconnect(error);\n // Pulling all the operations will automatically get us listening on descendants.\n }\n });\n }\n\n _forAllDescendants(iteratee) {\n if (iteratee(this) === false) return;\n _.forEach(this.children, child => child._forAllDescendants(iteratee));\n }\n\n collectCoupledDescendantPaths(paths) {\n if (!paths) paths = {};\n paths[this.path] = this.active;\n if (!this.active) {\n _.forEach(this.children, child => {child.collectCoupledDescendantPaths(paths);});\n }\n return paths;\n }\n}\n\n\nexport default class Coupler {\n constructor(rootUrl, bridge, dispatcher, applySnapshot, prunePath) {\n this._url = new URL(rootUrl);\n this._bridge = bridge;\n this._dispatcher = dispatcher;\n this._applySnapshot = applySnapshot;\n this._pendingSnapshotCallbacks = [];\n this._throttled = {processPendingSnapshots: this._processPendingSnapshots};\n this._prunePath = prunePath;\n this._vue = new Vue({data: {root: undefined, queryHandlers: {}}});\n // Prevent Vue from instrumenting rendering since there's actually nothing to render, and the\n // warnings cause false positives from Lodash primitives when running tests.\n this._vue._renderProxy = this._vue;\n this._nodeIndex = Object.create(null);\n Object.freeze(this);\n // Set root node after freezing Coupler, otherwise it gets vue-ified too.\n this._vue.$data.root = new Node(this, '/');\n this._nodeIndex['/'] = this._root;\n }\n\n get _root() {\n return this._vue.$data.root;\n }\n\n get _queryHandlers() {\n return this._vue.$data.queryHandlers;\n }\n\n destroy() {\n _.forEach(this._queryHandlers, queryHandler => {queryHandler.destroy();});\n this._root.unlisten();\n this._vue.$destroy();\n }\n\n couple(path, operation) {\n return this._coupleSegments(splitPath(path, true), operation);\n }\n\n _coupleSegments(segments, operation) {\n let node;\n let superseded = !operation;\n let ready = false;\n for (const segment of segments) {\n let child = segment ? node.children && node.children[segment] : this._root;\n if (!child) {\n child = new Node(this, `${node.path === '/' ? '' : node.path}/${segment}`, node);\n Vue.set(node.children, segment, child);\n this._nodeIndex[child.path] = child;\n }\n superseded = superseded || child.listening;\n ready = ready || child.ready;\n node = child;\n }\n if (operation) {\n node.operations.push(operation);\n } else {\n node.queryCount++;\n }\n if (superseded) {\n if (operation && ready) this._dispatcher.markReady(operation);\n } else {\n node.listen(); // node will call unlisten() on descendants when ready\n }\n }\n\n decouple(path, operation) {\n return this._decoupleSegments(splitPath(path, true), operation);\n }\n\n _decoupleSegments(segments, operation) {\n const ancestors = [];\n let node;\n for (const segment of segments) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (!node) break;\n ancestors.push(node);\n }\n if (!node || !(operation ? node.count : node.queryCount)) {\n throw new Error(`Path not coupled: ${segments.join('/') || '/'}`);\n }\n if (operation) {\n _.pull(node.operations, operation);\n } else {\n node.queryCount--;\n }\n if (operation && !node.count) {\n // Ideally, we wouldn't resync the full values here since we probably already have the current\n // value for all children. But making sure that's true is tricky in an async system (what if\n // the node's value changes and the update crosses the 'off' call in transit?) and this\n // situation should be sufficiently rare that the optimization is probably not worth it right\n // now.\n node.listen();\n if (node.listening) node.unlisten();\n }\n if (!node.active) {\n for (let i = ancestors.length - 1; i > 0; i--) {\n node = ancestors[i];\n if (node === this._root || node.active || !_.isEmpty(node.children)) break;\n Vue.delete(ancestors[i - 1].children, segments[i]);\n node.ready = undefined;\n delete this._nodeIndex[node.path];\n }\n const path = segments.join('/') || '/';\n this._prunePath(path, this.findCoupledDescendantPaths(path));\n }\n }\n\n subscribe(query, operation, keysCallback) {\n let queryHandler = this._queryHandlers[query.toString()];\n if (!queryHandler) {\n queryHandler = new QueryHandler(this, query);\n Vue.set(this._queryHandlers, query.toString(), queryHandler);\n }\n queryHandler.attach(operation, keysCallback);\n }\n\n unsubscribe(query, operation) {\n const queryHandler = this._queryHandlers[query.toString()];\n if (queryHandler && !queryHandler.detach(operation)) {\n queryHandler.destroy();\n Vue.delete(this._queryHandlers, query.toString());\n }\n }\n\n // Return whether the node at path or any ancestors are coupled.\n isTrunkCoupled(path) {\n const segments = splitPath(path, true);\n let node;\n for (const segment of segments) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (!node) return false;\n if (node.active) return true;\n }\n return false;\n }\n\n findCoupledDescendantPaths(path) {\n let node;\n for (const segment of splitPath(path, true)) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (node && node.active) return {[path]: node.active};\n if (!node) break;\n }\n return node && node.collectCoupledDescendantPaths();\n }\n\n isSubtreeReady(path) {\n let node, childSegment;\n function extractChildSegment(match) {\n childSegment = match.slice(1);\n return '';\n }\n while (!(node = this._nodeIndex[path])) {\n path = path.replace(/\\/[^/]*$/, extractChildSegment) || '/';\n }\n if (childSegment) void node.children; // state an interest in the closest ancestor's children\n while (node) {\n if (node.ready) return true;\n node = node.parent;\n }\n return false;\n }\n\n isQueryReady(query) {\n const queryHandler = this._queryHandlers[query.toString()];\n return queryHandler && queryHandler.ready;\n }\n\n _queueSnapshotCallback(callback) {\n this._pendingSnapshotCallbacks.push(callback);\n this._throttled.processPendingSnapshots.call(this);\n }\n\n _processPendingSnapshots() {\n for (const callback of this._pendingSnapshotCallbacks) callback();\n // Property is frozen, so we need to splice to empty the array.\n this._pendingSnapshotCallbacks.splice(0, Infinity);\n }\n\n throttleSnapshots(delay) {\n if (delay) {\n this._throttled.processPendingSnapshots =\n _.debounce(_.throttle(this._processPendingSnapshots, delay));\n } else {\n this._throttled.processPendingSnapshots = this._processPendingSnapshots;\n }\n }\n}\n","import Coupler from './Coupler.js';\nimport Modeler from './Modeler.js';\nimport Reference from './Reference.js';\nimport {escapeKey, escapeKeys, unescapeKey, joinPath, splitPath} from './utils/paths.js';\nimport {wrapPromiseCallback, promiseFinally} from './utils/promises.js';\nimport {SERVER_TIMESTAMP} from './utils/utils.js';\n\nimport _ from 'lodash';\nimport Vue from 'vue';\n\n\nclass Transaction {\n constructor(ref) {\n this._ref = ref;\n this._outcome = undefined;\n this._values = undefined;\n }\n\n get currentValue() {return this._ref.value;}\n get outcome() {return this._outcome;}\n get values() {return this._values;}\n\n _setOutcome(value) {\n if (this._outcome) throw new Error('Transaction already resolved with ' + this._outcome);\n this._outcome = value;\n }\n\n abort() {\n this._setOutcome('abort');\n }\n\n cancel() {\n this._setOutcome('cancel');\n }\n\n set(value) {\n if (value === undefined) throw new Error('Invalid argument: undefined');\n this._setOutcome('set');\n this._values = {'': value};\n }\n\n update(values) {\n if (values === undefined) throw new Error('Invalid argument: undefined');\n if (_.isEmpty(values)) return this.cancel();\n this._setOutcome('update');\n this._values = values;\n }\n}\n\n\nexport default class Tree {\n constructor(truss, rootUrl, bridge, dispatcher) {\n this._truss = truss;\n this._url = new URL(rootUrl);\n this._bridge = bridge;\n this._dispatcher = dispatcher;\n this._firebasePropertyEditAllowed = false;\n this._writeSerial = 0;\n this._localWrites = {};\n this._localWriteTimestamp = null;\n this._initialized = false;\n this._vue = new Vue({data: {$root: undefined}});\n this._modeler = new Modeler(this._vue, truss.constructor.VERSION === 'dev');\n this._coupler = new Coupler(\n rootUrl, bridge, dispatcher, this._integrateSnapshot.bind(this), this._prune.bind(this));\n Object.seal(this);\n // Call this.init(classes) to complete initialization; we need two phases so that truss can bind\n // the tree into its own accessors prior to defining computed functions, which may try to\n // access the tree root via truss.\n }\n\n get root() {\n if (!this._vue.$data.$root) {\n this._vue.$data.$root = this._createObject('/');\n this._fixObject(this._vue.$data.$root);\n this._completeCreateObject(this._vue.$data.$root);\n }\n return this._vue.$data.$root;\n }\n\n get truss() {\n return this._truss;\n }\n\n init(classes) {\n if (this._initialized) {\n throw new Error('Data objects already created, too late to mount classes');\n }\n this._initialized = true;\n this._modeler.init(classes, !this._vue.$data.$root);\n const createdObjects = [];\n this._plantPlaceholders(this.root, '/', undefined, createdObjects);\n for (const object of createdObjects) this._completeCreateObject(object);\n }\n\n destroy() {\n this._coupler.destroy();\n if (this._modeler) this._modeler.destroy();\n this._vue.$destroy();\n }\n\n connectReference(ref, method) {\n this._checkHandle(ref);\n const operation = this._dispatcher.createOperation('read', method, ref);\n operation._disconnect = this._disconnectReference.bind(this, ref, operation, undefined);\n this._dispatcher.begin(operation).then(() => {\n if (operation.running && !operation._disconnected) {\n this._coupler.couple(ref.path, operation);\n operation._coupled = true;\n }\n }).catch(_.noop); // ignore exception, let onFailure handlers deal with it\n return operation._disconnect;\n }\n\n _disconnectReference(ref, operation, unwatch, error) {\n if (operation._disconnected) return;\n operation._disconnected = true;\n if (unwatch) unwatch();\n if (operation._coupled) {\n this._coupler.decouple(ref.path, operation); // will call back to _prune if necessary\n operation._coupled = false;\n }\n this._dispatcher.end(operation, error).catch(_.noop);\n }\n\n isReferenceReady(ref) {\n this._checkHandle(ref);\n return this._coupler.isSubtreeReady(ref.path);\n }\n\n connectQuery(query, keysCallback, method) {\n this._checkHandle(query);\n const operation = this._dispatcher.createOperation('read', method, query);\n operation._disconnect = this._disconnectQuery.bind(this, query, operation);\n this._dispatcher.begin(operation).then(() => {\n if (operation.running && !operation._disconnected) {\n this._coupler.subscribe(query, operation, keysCallback);\n operation._coupled = true;\n }\n }).catch(_.noop); // ignore exception, let onFailure handlers deal with it\n return operation._disconnect;\n }\n\n _disconnectQuery(query, operation, error) {\n if (operation._disconnected) return;\n operation._disconnected = true;\n if (operation._coupled) {\n this._coupler.unsubscribe(query, operation); // will call back to _prune if necessary\n operation._coupled = false;\n }\n this._dispatcher.end(operation, error).catch(_.noop);\n }\n\n isQueryReady(query) {\n return this._coupler.isQueryReady(query);\n }\n\n _checkHandle(handle) {\n if (!handle.belongsTo(this._truss)) {\n throw new Error('Reference belongs to another Truss instance');\n }\n }\n\n throttleRemoteDataUpdates(delay) {\n this._coupler.throttleSnapshots(delay);\n }\n\n update(ref, method, values) {\n values = _.mapValues(values, value => escapeKeys(value));\n const numValues = _.size(values);\n if (!numValues) return Promise.resolve();\n if (method === 'update' || method === 'override') {\n checkUpdateHasOnlyDescendantsWithNoOverlap(ref.path, values);\n }\n if (this._applyLocalWrite(values, method === 'override')) return Promise.resolve();\n const pathPrefix = extractCommonPathPrefix(values);\n relativizePaths(pathPrefix, values);\n if (pathPrefix !== ref.path) ref = new Reference(ref._tree, pathPrefix, ref._annotations);\n this._url.pathname = encodeURI(pathPrefix);\n const url = this._url.toString();\n const writeSerial = this._writeSerial;\n const set = numValues === 1;\n const operand = set ? values[''] : values;\n return this._dispatcher.execute('write', set ? 'set' : 'update', ref, operand, () => {\n const promise = this._bridge[set ? 'set' : 'update'](url, operand, writeSerial);\n return promise.catch(e => {\n if (!e.immediateFailure) return Promise.reject(e);\n return promiseFinally(this._repair(ref, values), () => Promise.reject(e));\n });\n });\n }\n\n commit(ref, updateFunction) {\n let tries = 0, sameValueCount = 0;\n const attemptCounts = {};\n updateFunction = wrapPromiseCallback(updateFunction);\n\n const attemptTransaction = counter => {\n if (tries++ >= 25) {\n const error = new Error('Transaction needed too many retries, giving up');\n try {\n _.assign(error, {attemptCounts, sameValueCount});\n } catch {\n // ignore\n }\n return Promise.reject(error);\n }\n counter = counter || 'initial';\n attemptCounts[counter] = (attemptCounts[counter] || 0) + 1;\n const txn = new Transaction(ref);\n let oldValue;\n // Ensure that Vue's watcher queue gets emptied and computed properties are up to date before\n // running the updateFunction.\n return Vue.nextTick().then(() => {\n const newOldValue = toFirebaseJson(txn.currentValue);\n if (_.isEqual(newOldValue, oldValue)) sameValueCount += 1;\n oldValue = newOldValue;\n return updateFunction(txn);\n }).then(() => {\n if (!_.isEqual(oldValue, toFirebaseJson(txn.currentValue))) {\n return attemptTransaction('changed');\n }\n if (txn.outcome === 'abort') return txn; // early return to save time\n const values = _.mapValues(txn.values, value => escapeKeys(value));\n switch (txn.outcome) {\n case 'cancel':\n break;\n case 'set':\n if (this._applyLocalWrite({[ref.path]: values['']})) return Promise.resolve();\n break;\n case 'update':\n checkUpdateHasOnlyDescendantsWithNoOverlap(ref.path, values);\n if (this._applyLocalWrite(values)) return Promise.resolve();\n relativizePaths(ref.path, values);\n break;\n default:\n throw new Error('Invalid transaction outcome: ' + (txn.outcome || 'none'));\n }\n this._url.pathname = encodeURI(ref.path);\n return this._bridge.transaction(\n this._url.toString(), oldValue, values, this._writeSerial\n ).then(result => {\n _.forEach(result.snapshots, snapshot => this._integrateSnapshot(snapshot));\n return result.committed ? txn : attemptTransaction('stale');\n }, e => {\n if (e.immediateFailure && (txn.outcome === 'set' || txn.outcome === 'update')) {\n return promiseFinally(this._repair(ref, values), () => Promise.reject(e));\n }\n return Promise.reject(e);\n });\n });\n };\n\n return this._truss.peek(ref, () => {\n return this._dispatcher.execute('write', 'commit', ref, undefined, attemptTransaction);\n });\n }\n\n _repair(ref, values) {\n // If a write fails early -- that is, before it gets applied to the Firebase client's local\n // tree -- then we need to repair our own local tree manually since Firebase won't send events\n // to unwind the change. This should be very rare since it's always due to a developer mistake\n // so we don't need to be particularly efficient.\n const basePath = ref.path;\n const paths = _(values).keys().flatMap(key => {\n let path = basePath;\n if (key) path = joinPath(path, key);\n return _.keys(this._coupler.findCoupledDescendantPaths(path));\n }).value();\n return Promise.all(_.map(paths, path => {\n this._url.pathname = encodeURI(path);\n return this._bridge.once(this._url.toString()).then(snap => {\n this._integrateSnapshot(snap);\n });\n }));\n }\n\n _applyLocalWrite(values, override) {\n // TODO: correctly apply local writes that impact queries. Currently, a local write will update\n // any objects currently selected by a query, but won't add or remove results.\n this._writeSerial++;\n this._localWriteTimestamp = this._truss.now;\n const createdObjects = [];\n let numLocal = 0;\n _.forEach(values, (value, path) => {\n const local = this._modeler.isLocal(path, value);\n if (local) numLocal++;\n const coupledDescendantPaths =\n local ? {[path]: true} : this._coupler.findCoupledDescendantPaths(path);\n if (_.isEmpty(coupledDescendantPaths)) return;\n const offset = (path === '/' ? 0 : path.length) + 1;\n for (const descendantPath in coupledDescendantPaths) {\n const subPath = descendantPath.slice(offset);\n let subValue = value;\n if (subPath && value !== null && value !== undefined) {\n for (const segment of splitPath(subPath)) {\n subValue = subValue.$data[segment];\n if (subValue === undefined) break;\n }\n }\n if (_.isNil(subValue)) {\n this._prune(descendantPath);\n } else {\n const key = _.last(splitPath(descendantPath));\n this._plantValue(\n descendantPath, key, subValue,\n this._scaffoldAncestors(descendantPath, false, createdObjects), false, override, local,\n createdObjects\n );\n }\n if (!override && !local) this._localWrites[descendantPath] = this._writeSerial;\n }\n });\n for (const object of createdObjects) this._completeCreateObject(object);\n if (numLocal && numLocal < _.size(values)) {\n throw new Error('Write on a mix of local and remote tree paths.');\n }\n return override || !!numLocal;\n }\n\n /**\n * Creates a Truss object and sets all its basic properties: path segment variables, user-defined\n * properties, and computed properties. The latter two will be enumerable so that Vue will pick\n * them up and make the reactive, so you should call _completeCreateObject once it's done so and\n * before any Firebase properties are added.\n */\n _createObject(path, parent) {\n if (!this._initialized && path !== '/') this.init();\n const properties = {\n // We want Vue to wrap this; we'll make it non-enumerable in _fixObject.\n $parent: {value: parent, configurable: true, enumerable: true},\n $path: {value: path}\n };\n if (path === '/') properties.$truss = {value: this._truss};\n\n const object = this._modeler.createObject(path, properties);\n this._modeler.emitLifecycleHook(object, 'beforeCreate');\n this._defineObjectProperties(object, properties);\n return object;\n }\n\n _defineObjectProperties(object, properties) {\n const observer = object.__ob__;\n Object.defineProperties(object, properties);\n if (!observer) return;\n\n let addedReactiveProperties = false;\n for (const key of _.keys(properties)) {\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n if (!descriptor.configurable || !descriptor.enumerable) continue;\n Vue.util.defineReactive(object, key);\n addedReactiveProperties = true;\n }\n if (addedReactiveProperties) observer.dep.notify();\n }\n\n // To be called on the result of _createObject after it's been inserted into the _vue hierarchy\n // and Vue has had a chance to initialize it.\n _fixObject(object) {\n for (const name of Object.getOwnPropertyNames(object)) {\n const descriptor = Object.getOwnPropertyDescriptor(object, name);\n if (descriptor.configurable && descriptor.enumerable) {\n descriptor.enumerable = false;\n if (_.startsWith(name, '$')) descriptor.configurable = false;\n Object.defineProperty(object, name, descriptor);\n }\n }\n }\n\n // To be called on the result of _createObject after _fixObject, and after any additional Firebase\n // properties have been set, to run initializers.\n _completeCreateObject(object) {\n this._modeler.emitLifecycleHook(object, 'created');\n }\n\n _destroyObject(object) {\n if (!(object && object.$truss) || object.$destroyed) return;\n this._modeler.emitLifecycleHook(object, 'beforeDestroy');\n this._modeler.destroyObject(object);\n // Normally we'd only destroy enumerable children, which are the Firebase properties. However,\n // clients have the option of creating hidden placeholders, so we need to scan non-enumerable\n // properties as well. To distinguish such placeholders from the myriad other non-enumerable\n // properties (that lead all over tree, e.g. $parent), we check that the property's parent is\n // ourselves before destroying.\n for (const key of Object.getOwnPropertyNames(object.$data)) {\n const child = object.$data[key];\n if (child && child.$parent === object) this._destroyObject(child);\n }\n this._modeler.emitLifecycleHook(object, 'destroyed');\n }\n\n _integrateSnapshot(snap) {\n _.forEach(this._localWrites, (writeSerial, path) => {\n if (snap.writeSerial >= writeSerial) delete this._localWrites[path];\n });\n if (snap.exists) {\n const createdObjects = [];\n const parent = this._scaffoldAncestors(snap.path, true, createdObjects);\n if (parent) {\n this._plantValue(\n snap.path, snap.key, snap.value, parent, true, false, false, createdObjects);\n }\n for (const object of createdObjects) this._completeCreateObject(object);\n } else {\n this._prune(snap.path, null, true);\n }\n }\n\n _scaffoldAncestors(path, remoteWrite, createdObjects) {\n let object;\n const segments = _.dropRight(splitPath(path, true));\n let ancestorPath = '/';\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const key = unescapeKey(segment);\n let child = segment ? object.$data[key] : this.root;\n if (segment) ancestorPath += (ancestorPath === '/' ? '' : '/') + segment;\n if (child) {\n if (remoteWrite && this._localWrites[ancestorPath]) return;\n } else {\n child = this._plantValue(\n ancestorPath, key, {}, object, remoteWrite, false, false, createdObjects);\n if (!child) return;\n }\n object = child;\n }\n return object;\n }\n\n _plantValue(path, key, value, parent, remoteWrite, override, local, createdObjects) {\n if (remoteWrite && _.isNil(value)) {\n throw new Error(`Snapshot includes invalid value at ${path}: ${value}`);\n }\n if (remoteWrite && this._localWrites[path || '/']) return;\n if (_.isEqual(value, SERVER_TIMESTAMP)) value = this._localWriteTimestamp;\n let object = parent.$data[key];\n if (!_.isArray(value) && !(local ? _.isPlainObject(value) : _.isObject(value))) {\n this._destroyObject(object);\n if (!local && _.isNil(value)) {\n this._deleteFirebaseProperty(parent, key);\n } else {\n this._setFirebaseProperty(parent, key, value);\n }\n return;\n }\n let objectCreated = false;\n if (!_.isObject(object)) {\n // Need to pre-set the property, so that if the child object attempts to watch any of its own\n // properties while being created the $$touchThis method has something to add a dependency on\n // as the object's own properties won't be made reactive until *after* it's been created.\n this._setFirebaseProperty(parent, key, null);\n object = this._createObject(path, parent);\n this._setFirebaseProperty(parent, key, object, object.$hidden);\n this._fixObject(object);\n createdObjects.push(object);\n objectCreated = true;\n }\n if (override) {\n Object.defineProperty(object, '$overridden', {get: _.constant(true), configurable: true});\n } else if (object.$overridden) {\n delete object.$overridden;\n }\n // Plant hidden placeholders first, so their computed watchers will have a similar precedence to\n // the parent object, and the parent object's other children will get computed first. This can\n // optimize updates when parts of a complex model are broken out into hidden sub-models, and\n // shouldn't risk being overwritten by actual Firebase data since that will rarely (never?) be\n // hidden.\n if (objectCreated) this._plantPlaceholders(object, path, true, createdObjects);\n _.forEach(value, (item, escapedChildKey) => {\n this._plantValue(\n joinPath(path, escapedChildKey), unescapeKey(escapedChildKey), item, object, remoteWrite,\n override, local, createdObjects\n );\n });\n if (objectCreated) {\n this._plantPlaceholders(object, path, false, createdObjects);\n } else {\n _.forEach(object.$data, (item, childKey) => {\n const escapedChildKey = escapeKey(childKey);\n if (!Object.hasOwn(value, escapedChildKey)) {\n this._prune(joinPath(path, escapedChildKey), null, remoteWrite);\n }\n });\n }\n return object;\n }\n\n _plantPlaceholders(object, path, hidden, createdObjects) {\n this._modeler.forEachPlaceholderChild(path, mount => {\n if (hidden !== undefined && hidden !== !!mount.hidden) return;\n const key = unescapeKey(mount.escapedKey);\n if (!Object.hasOwn(object.$data, key)) {\n this._plantValue(\n joinPath(path, mount.escapedKey), key, mount.placeholder, object, false, false, false,\n createdObjects);\n }\n });\n }\n\n _prune(path, lockedDescendantPaths, remoteWrite) {\n lockedDescendantPaths = lockedDescendantPaths || {};\n const object = this.getObject(path);\n if (object === undefined) return;\n if (remoteWrite && this._avoidLocalWritePaths(path, lockedDescendantPaths)) return;\n if (!(_.isEmpty(lockedDescendantPaths) && this._pruneAncestors(path, object)) &&\n _.isObject(object)) {\n // The target object is a placeholder, and all ancestors are placeholders or otherwise needed\n // as well, so we can't delete it. Instead, dive into its descendants to delete what we can.\n this._pruneDescendants(object, lockedDescendantPaths);\n }\n }\n\n _avoidLocalWritePaths(path, lockedDescendantPaths) {\n for (const localWritePath in this._localWrites) {\n if (!Object.hasOwn(this._localWrites, localWritePath)) continue;\n if (path === localWritePath || localWritePath === '/' ||\n _.startsWith(path, localWritePath + '/')) return true;\n if (path === '/' || _.startsWith(localWritePath, path + '/')) {\n const segments = splitPath(localWritePath, true);\n for (let i = segments.length; i > 0; i--) {\n const subPath = segments.slice(0, i).join('/');\n const active = i === segments.length;\n if (lockedDescendantPaths[subPath] || lockedDescendantPaths[subPath] === active) break;\n lockedDescendantPaths[subPath] = active;\n if (subPath === path) break;\n }\n }\n }\n }\n\n _pruneAncestors(targetPath, targetObject) {\n // Destroy the child (unless it's a placeholder that's still needed) and any ancestors that\n // are no longer needed to keep this child rooted, and have no other reason to exist.\n let deleted = false;\n let object = targetObject;\n // The target object may be a primitive, in which case it won't have $path, $parent and $key\n // properties. In that case, use the target path to figure those out instead. Note that all\n // ancestors of the target object will necessarily not be primitives and will have those\n // properties.\n let targetKey;\n const targetParentPath = targetPath.replace(/\\/[^/]+$/, match => {\n targetKey = unescapeKey(match.slice(1));\n return '';\n });\n while (object !== undefined && object !== this.root) {\n const parent =\n object && object.$parent || object === targetObject && this.getObject(targetParentPath);\n if (!this._modeler.isPlaceholder(object && object.$path || targetPath)) {\n const ghostObjects = deleted ? null : [targetObject];\n if (!this._holdsConcreteData(object, ghostObjects)) {\n deleted = true;\n this._deleteFirebaseProperty(\n parent, object && object.$key || object === targetObject && targetKey);\n }\n }\n object = parent;\n }\n return deleted;\n }\n\n _holdsConcreteData(object, ghostObjects) {\n if (_.isNil(object)) return false;\n if (ghostObjects && _.includes(ghostObjects, object)) return false;\n if (!_.isObject(object) || !object.$truss) return true;\n return _.some(object.$data, value => this._holdsConcreteData(value, ghostObjects));\n }\n\n _pruneDescendants(object, lockedDescendantPaths) {\n if (lockedDescendantPaths[object.$path]) return true;\n if (object.$overridden) delete object.$overridden;\n let coupledDescendantFound = false;\n _.forEach(object.$data, (value, key) => {\n let shouldDelete = true;\n let valueLocked;\n if (lockedDescendantPaths[joinPath(object.$path, escapeKey(key))]) {\n shouldDelete = false;\n valueLocked = true;\n } else if (!_.isNil(value) && value.$truss) {\n const placeholder = this._modeler.isPlaceholder(value.$path);\n if (placeholder || _.has(lockedDescendantPaths, value.$path)) {\n valueLocked = this._pruneDescendants(value, lockedDescendantPaths);\n shouldDelete = !placeholder && !valueLocked;\n }\n }\n if (shouldDelete) this._deleteFirebaseProperty(object, key);\n coupledDescendantFound = coupledDescendantFound || valueLocked;\n });\n return coupledDescendantFound;\n }\n\n getObject(path) {\n const segments = splitPath(path);\n let object;\n for (const segment of segments) {\n object = segment ? object.$data[segment] : this.root;\n if (object === undefined) return;\n }\n return object;\n }\n\n _getFirebasePropertyDescriptor(object, data, key) {\n const descriptor = Object.getOwnPropertyDescriptor(data, key);\n if (descriptor) {\n if (!descriptor.enumerable) {\n const child = data[key];\n if (!child || child.$parent !== object) {\n throw new Error(\n `Key conflict between Firebase and instance or computed properties at ` +\n `${object.$path}: ${key}`);\n }\n }\n if (!descriptor.get || !descriptor.set) {\n throw new Error(`Unbound property at ${object.$path}: ${key}`);\n }\n } else if (key in data) {\n throw new Error(\n `Key conflict between Firebase and inherited property at ${object.$path}: ${key}`);\n }\n return descriptor;\n }\n\n _setFirebaseProperty(object, key, value, hidden) {\n const data = Object.hasOwn(object, '$data') ? object.$data : object;\n let descriptor = this._getFirebasePropertyDescriptor(object, data, key);\n if (descriptor) {\n if (hidden) {\n // Redefine property as hidden after it's been created, since we usually don't know whether\n // it should be hidden until too late. This is a one-way deal -- you can't unhide a\n // property later, but that's fine for our purposes.\n Object.defineProperty(data, key, {\n get: descriptor.get, set: descriptor.set, configurable: true, enumerable: false\n });\n }\n if (data[key] === value) return;\n this._firebasePropertyEditAllowed = true;\n data[key] = value;\n this._firebasePropertyEditAllowed = false;\n } else {\n Vue.set(data, key, value);\n descriptor = Object.getOwnPropertyDescriptor(data, key);\n Object.defineProperty(data, key, {\n get: descriptor.get, set: this._overwriteFirebaseProperty.bind(this, descriptor, key),\n configurable: true, enumerable: !hidden\n });\n }\n }\n\n _overwriteFirebaseProperty(descriptor, key, newValue) {\n if (!this._firebasePropertyEditAllowed) {\n const e = new Error(`Firebase data cannot be mutated directly: ${key}`);\n e.trussCode = 'firebase_overwrite';\n throw e;\n }\n descriptor.set.call(this, newValue);\n }\n\n _deleteFirebaseProperty(object, key) {\n const data = Object.hasOwn(object, '$data') ? object.$data : object;\n // Make sure it's actually a Firebase property.\n this._getFirebasePropertyDescriptor(object, data, key);\n this._destroyObject(data[key]);\n Vue.delete(data, key);\n }\n\n checkVueObject(object, path) {\n this._modeler.checkVueObject(object, path);\n }\n}\n\n\nexport function checkUpdateHasOnlyDescendantsWithNoOverlap(rootPath, values) {\n // First, check all paths for correctness and absolutize them, since there could be a mix of\n // absolute paths and relative keys.\n _.forEach(_.keys(values), path => {\n if (path.charAt(0) === '/') {\n if (!(path === rootPath || rootPath === '/' ||\n _.startsWith(path, rootPath + '/') && path.length > rootPath.length + 1)) {\n throw new Error(`Update item is not a descendant of target ref: ${path}`);\n }\n } else {\n if (_.includes(path, '/')) {\n throw new Error(`Update item deep path must be absolute, taken from a reference: ${path}`);\n }\n const absolutePath = joinPath(rootPath, escapeKey(path));\n if (Object.hasOwn(values, absolutePath)) {\n throw new Error(`Update items overlap: ${path} and ${absolutePath}`);\n }\n values[absolutePath] = values[path];\n delete values[path];\n }\n });\n // Then check for overlaps;\n const allPaths = _(values).keys().map(path => joinPath(path, '')).sortBy('length').value();\n _.forEach(values, (value, path) => {\n for (const otherPath of allPaths) {\n if (otherPath.length > path.length) break;\n if (path !== otherPath && _.startsWith(path, otherPath)) {\n throw new Error(`Update items overlap: ${otherPath} and ${path}`);\n }\n }\n });\n}\n\nexport function extractCommonPathPrefix(values) {\n let prefixSegments;\n _.forEach(values, (value, path) => {\n const segments = path === '/' ? [''] : splitPath(path, true);\n if (prefixSegments) {\n let firstMismatchIndex = 0;\n const maxIndex = Math.min(prefixSegments.length, segments.length);\n while (firstMismatchIndex < maxIndex &&\n prefixSegments[firstMismatchIndex] === segments[firstMismatchIndex]) {\n firstMismatchIndex++;\n }\n prefixSegments = prefixSegments.slice(0, firstMismatchIndex);\n if (!prefixSegments.length) return false;\n } else {\n prefixSegments = segments;\n }\n });\n return prefixSegments.length === 1 ? '/' : prefixSegments.join('/');\n}\n\nexport function relativizePaths(rootPath, values) {\n const offset = rootPath === '/' ? 1 : rootPath.length + 1;\n _.forEach(_.keys(values), path => {\n values[path.slice(offset)] = values[path];\n delete values[path];\n });\n}\n\nexport function toFirebaseJson(object) {\n if (!_.isObject(object)) return object;\n const result = {};\n const data = object.$data;\n for (const key in data) {\n if (Object.hasOwn(data, key)) result[escapeKey(key)] = toFirebaseJson(data[key]);\n }\n return result;\n}\n","import _ from 'lodash';\nimport Vue from 'vue';\nimport Bridge from './Bridge.js';\nimport Connector from './Connector.js';\nimport Dispatcher from './Dispatcher.js';\nimport KeyGenerator from './KeyGenerator.js';\nimport MetaTree from './MetaTree.js';\nimport {Handle} from './Reference.js';\nimport {BaseValue} from './Modeler.js';\nimport Tree from './Tree.js';\nimport stats from './utils/stats.js';\nimport {escapeKey, unescapeKey} from './utils/paths.js';\nimport {wrapPromiseCallback, promiseCancel, promiseFinally} from './utils/promises.js';\nimport {SERVER_TIMESTAMP, copyPrototype} from './utils/utils.js';\n\n\nlet bridge, logging;\nconst workerFunctions = {};\n// This version is filled in by the build, don't reformat the line.\nconst VERSION = 'dev';\n\n\nexport default class Truss {\n\n /**\n * Create a new Truss instance, specific to a given datastore. To avoid confusion there should be\n * exactly one Truss per root datastore URL, so in most code this will be a singleton.\n *\n * @param rootUrl {String} The root URL, https://{project}.firebaseio.com.\n */\n constructor(rootUrl) {\n // TODO: allow rootUrl to be a test database object for testing\n if (!bridge) {\n throw new Error('Truss worker not connected, please call Truss.connectWorker first');\n }\n this._rootUrl = rootUrl.replace(/\\/$/, '');\n this._keyGenerator = new KeyGenerator();\n this._dispatcher = new Dispatcher(bridge);\n this._vue = new Vue();\n\n bridge.trackServer(this._rootUrl);\n this._tree = new Tree(this, this._rootUrl, bridge, this._dispatcher);\n this._metaTree = new MetaTree(this._rootUrl, this._tree, bridge, this._dispatcher);\n\n Object.freeze(this);\n }\n\n get info() {return this._metaTree.root;}\n get store() {return this._tree.root;}\n\n /**\n * Mount a set of classes against the datastore structure. Must be called at most once, and\n * cannot be called once any data has been loaded into the tree.\n * @param classes {Array | Object} A list of the classes to map onto the\n * datastore structure. Each class must have a static $trussMount property that is a\n * (wildcarded) unescaped datastore path, or an options object\n * {path: string, placeholder: object}, or an array of either. If the list is an object then\n * the keys serve as default option-less $trussMount paths for classes that don't define an\n * explicit $trussMount.\n */\n mount(classes) {\n this._tree.init(classes);\n }\n\n destroy() {\n this._vue.$destroy();\n this._tree.destroy();\n this._metaTree.destroy();\n }\n\n get now() {return Date.now() + this.info.timeOffset;}\n newKey() {return this._keyGenerator.generateUniqueKey(this.now);}\n\n authenticate(token) {\n return this._metaTree.authenticate(token);\n }\n\n unauthenticate() {\n return this._metaTree.unauthenticate();\n }\n\n intercept(actionType, callbacks) {\n return this._dispatcher.intercept(actionType, callbacks);\n }\n\n // connections are {key: Query | Object | fn() -> (Query | Object)}\n connect(scope, connections) {\n if (!connections) {\n connections = scope;\n scope = undefined;\n }\n if (connections instanceof Handle || _.isFunction(connections)) connections = {_: connections};\n return new Connector(scope, connections, this._tree, 'connect');\n }\n\n // target is Reference, Query, or connection Object like above\n peek(target, callback) {\n callback = wrapPromiseCallback(callback || _.identity);\n let cleanup, cancel;\n const promise = Promise.resolve().then(() => new Promise((resolve, reject) => {\n const scope = {};\n let callbackPromise;\n\n let connector = new Connector(scope, {result: target}, this._tree, 'peek');\n\n let unintercept = this.intercept('peek', {onFailure: op => {\n function match(descriptor) {\n if (!descriptor) return;\n if (descriptor instanceof Handle) return op.target.isEqual(descriptor);\n return _.some(descriptor, value => match(value));\n }\n if (match(connector.at)) {\n reject(op.error);\n cleanup();\n }\n }});\n\n let unobserve = this.observe(() => connector.ready, ready => {\n if (!ready) return;\n unobserve();\n unobserve = null;\n callbackPromise = promiseFinally(\n callback(scope.result), () => {callbackPromise = null; cleanup();}\n ).then(result => {resolve(result);}, error => {reject(error);});\n });\n\n cleanup = () => {\n if (unobserve) {unobserve(); unobserve = null;}\n if (unintercept) {unintercept(); unintercept = null;}\n if (connector) {connector.destroy(); connector = null;}\n if (callbackPromise && callbackPromise.cancel) callbackPromise.cancel();\n };\n\n cancel = () => {\n reject(new Error('Canceled'));\n cleanup();\n };\n }));\n return promiseCancel(promise, cancel);\n }\n\n observe(subjectFn, callbackFn, options) {\n const usePreciseDefaults = _.isObject(options && options.precise);\n let numCallbacks = 0;\n let oldValueClone;\n if (usePreciseDefaults) {\n oldValueClone = options.deep ? _.cloneDeep(options.precise) : _.clone(options.precise);\n }\n\n // This needs to be a `let` instead of a `const` to avoid a \"Cannot access before\n // initialization\" error.\n let unwatch;\n // eslint-disable-next-line prefer-const\n unwatch = this._vue.$watch(subjectFn, (newValue, oldValue) => {\n if (options && options.precise) {\n const newValueClone = usePreciseDefaults ?\n (options.deep ?\n _.defaultsDeep({}, newValue, options.precise) :\n _.defaults({}, newValue, options.precise)) :\n (options.deep ? _.cloneDeep(newValue) : _.clone(newValue));\n if (_.isEqual(newValueClone, oldValueClone)) return;\n oldValueClone = newValueClone;\n }\n numCallbacks++;\n if (unwatch || options && options.immediate) {\n callbackFn(newValue, oldValue);\n } else {\n // Delay the immediate callback until we've had a chance to return the unwatch function.\n Promise.resolve().then(() => {\n const vm = options && options.vm;\n if (numCallbacks > 1 || (vm && vm.$destroyed)) return;\n callbackFn(newValue, oldValue);\n });\n }\n }, {immediate: true, deep: options && options.deep});\n\n return unwatch;\n }\n\n when(expression, options) {\n let cleanup, timeoutHandle;\n let promise = new Promise((resolve, reject) => {\n let unobserve = this.observe(expression, value => {\n if (!value) return;\n // Wait for computed properties to settle and double-check.\n Vue.nextTick(() => {\n value = expression();\n if (!value) return;\n resolve(value);\n cleanup();\n });\n });\n if (_.has(options, 'timeout')) {\n timeoutHandle = setTimeout(() => {\n timeoutHandle = null;\n reject(new Error(options.timeoutMessage || 'Timeout'));\n cleanup();\n }, options.timeout);\n }\n cleanup = () => {\n if (unobserve) {unobserve(); unobserve = null;}\n if (timeoutHandle) {clearTimeout(timeoutHandle); timeoutHandle = null;}\n reject(new Error('Canceled'));\n };\n });\n promise = promiseCancel(promiseFinally(promise, cleanup), cleanup);\n return promise;\n }\n\n nextTick() {\n let cleanup;\n let promise = new Promise((resolve, reject) => {\n Vue.nextTick(resolve);\n cleanup = () => {\n reject(new Error('Canceled'));\n };\n });\n promise = promiseCancel(promise, cleanup);\n return promise;\n }\n\n throttleRemoteDataUpdates(delay) {\n this._tree.throttleRemoteDataUpdates(delay);\n }\n\n checkObjectsForRogueProperties() {\n this._tree.checkVueObject(this._tree.root, '/');\n }\n\n static get computedPropertyStats() {\n return stats;\n }\n\n static async connectWorker(webWorker, config) {\n if (bridge) throw new Error('Worker already connected');\n if (_.isString(webWorker)) {\n const Worker = window.SharedWorker || window.Worker;\n if (!Worker) throw new Error('Browser does not implement Web Workers');\n if (!navigator.locks) throw new Error('Browser does not implement locks');\n webWorker = new Worker(webWorker);\n const random = window.crypto.getRandomValues(new Uint32Array(1))[0];\n webWorker.lockName = `truss_worker_lock_${Date.now()}.${random}`;\n await new Promise((resolve, reject) => {\n navigator.locks.request(webWorker.lockName, () => {\n resolve();\n // eslint-disable-next-line lodash/prefer-noop\n return new Promise(() => {/* release lock only on page exit or crash */});\n }).catch(reject);\n });\n }\n bridge = new Bridge(webWorker);\n if (logging) bridge.enableLogging(logging);\n const {exposedFunctionNames, firebaseSdkVersion} =\n await bridge.init(webWorker.lockName, config);\n Object.defineProperty(Truss, 'FIREBASE_SDK_VERSION', {value: firebaseSdkVersion});\n for (const name of exposedFunctionNames) Truss.preExpose(name);\n }\n\n static get worker() {return workerFunctions;}\n\n static preExpose(functionName) {\n const segments = functionName.split('.');\n let obj = Truss.worker;\n for (const segment of segments.slice(0, -1)) {\n if (!Object.hasOwnProperty.call(obj, segment)) obj[segment] = {};\n obj = obj[segment];\n }\n obj[segments[segments.length - 1]] = bridge.bindExposedFunction(functionName);\n }\n\n static bounceConnection() {return bridge.bounceConnection();}\n static suspend() {return bridge.suspend();}\n static debugPermissionDeniedErrors(simulatedTokenGenerator, maxSimulationDuration, callFilter) {\n return bridge.debugPermissionDeniedErrors(\n simulatedTokenGenerator, maxSimulationDuration, callFilter);\n }\n\n static escapeKey(key) {return escapeKey(key);}\n static unescapeKey(escapedKey) {return unescapeKey(escapedKey);}\n\n static enableLogging(fn) {\n logging = fn;\n if (bridge) bridge.enableLogging(fn);\n }\n\n // Duplicate static constants on instance for convenience.\n get SERVER_TIMESTAMP() {return Truss.SERVER_TIMESTAMP;}\n get VERSION() {return Truss.VERSION;}\n get FIREBASE_SDK_VERSION() {return Truss.FIREBASE_SDK_VERSION;}\n}\n\nObject.defineProperties(Truss, {\n SERVER_TIMESTAMP: {value: SERVER_TIMESTAMP},\n VERSION: {value: VERSION},\n Model: {value: Object},\n\n ComponentPlugin: {value: {\n install(Vue2, pluginOptions) {\n if (Vue !== Vue2) throw new Error('Multiple versions of Vue detected');\n if (!pluginOptions.truss) {\n throw new Error('Need to pass `truss` instance as an option to use the ComponentPlugin');\n }\n const prototypeExtension = {\n $truss: {value: pluginOptions.truss},\n $destroyed: {get() {return this._isBeingDestroyed || this._isDestroyed;}},\n $$touchThis: {value() {if (this.__ob__) this.__ob__.dep.depend();}}\n };\n const conflictingKeys = _(prototypeExtension).keys()\n .union(_.keys(BaseValue.prototype)).intersection(_.keys(Vue.prototype)).value();\n if (conflictingKeys.length) {\n throw new Error(\n 'Truss extension properties conflict with Vue properties: ' + conflictingKeys.join(', '));\n }\n Object.defineProperties(Vue.prototype, prototypeExtension);\n copyPrototype(BaseValue, Vue);\n }\n }}\n});\n\nif (typeof window !== 'undefined' && window.angular) {\n window.angular.module('firetruss', []).constant('Truss', Truss);\n}\n"],"names":["_","Vue"],"mappings":";;;;;;;;;;;EAGA,MAAM,YAAY,CAAC;EACnB,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;EAC1B,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;EACnB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;EACjB,GAAG;AACH;EACA,EAAE,KAAK,GAAG;EACV,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChC,GAAG;EACH,CAAC;AACD;AACA;EACe,MAAM,QAAQ,CAAC;EAC9B,EAAE,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE;EACpC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACtC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACnB,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;EAC5B,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;EACjE,GAAG;AACH;EACA,EAAE,GAAG,CAAC,GAAG,EAAE;EACX,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;EACrC,GAAG;AACH;EACA,EAAE,GAAG,CAAC,GAAG,EAAE;EACX,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAClC,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO;EACtB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;EACjB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;EACtB,GAAG;AACH;EACA,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE;EAClB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAClC,IAAI,IAAI,IAAI,EAAE;EACd,MAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACzB,KAAK,MAAM;EACX,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;EACrD,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;EACtD,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;EACtB,KAAK;EACL,GAAG;AACH;EACA,EAAE,MAAM,CAAC,GAAG,EAAE;EACd,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAClC,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO;EACtB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;EACpB,GAAG;AACH;EACA,EAAE,MAAM,GAAG;EACX,IAAI,MAAM,YAAY;EACtB,MAAMA,kBAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;EACnF,IAAI,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC3D,GAAG;EACH;;ECtDA,MAAM,YAAY,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;EACxC,MAAM,YAAY,GAAG,EAAE,CAAC;EACxB,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC;AACA;EACO,SAAS,SAAS,CAAC,GAAG,EAAE;EAC/B,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC;EACvB;EACA,EAAE,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,2BAA2B,EAAE,IAAI;EACjE,IAAI,IAAI,GAAGA,kBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;EAC9D,GAAG,CAAC;EACJ,CAAC;AACD;EACO,SAAS,WAAW,CAAC,GAAG,EAAE;EACjC,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC;EACvB,EAAE,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI;EACvD,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACpD,GAAG,CAAC;EACJ,CAAC;AACD;EACO,SAAS,UAAU,CAAC,MAAM,EAAE;EACnC;EACA,EAAE,IAAI,EAAEA,kBAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,MAAM,CAAC;EAC1E,EAAE,IAAI,MAAM,GAAG,MAAM,CAAC;EACtB,EAAE,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;EAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS;EAC9C,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;EAC9B,IAAI,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;EACtC,IAAI,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;EAC3C,IAAI,IAAI,UAAU,KAAK,GAAG,IAAI,YAAY,KAAK,KAAK,EAAE;EACtD,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,MAAM,GAAGA,kBAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;EACtD,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC;EACxC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;EACpD,KAAK;EACL,GAAG;EACH,EAAE,OAAO,MAAM,CAAC;EAChB,CAAC;AACD;EACO,SAAS,QAAQ,GAAG;EAC3B,EAAE,MAAM,QAAQ,GAAG,EAAE,CAAC;EACtB,EAAE,KAAK,IAAI,OAAO,IAAI,SAAS,EAAE;EACjC,IAAI,IAAI,CAACA,kBAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC;EACrD,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;EACvE,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAC3B,GAAG;EACH,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EAC5C,EAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC5B,CAAC;AACD;EACO,SAAS,SAAS,CAAC,IAAI,EAAE,oBAAoB,EAAE;EACtD,EAAE,MAAM,GAAG,GAAG,CAAC,oBAAoB,GAAG,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC;EAC1D,EAAE,IAAI,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACvC,EAAE,IAAI,CAAC,QAAQ,EAAE;EACjB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC/B,IAAI,IAAI,CAAC,oBAAoB,EAAE,QAAQ,GAAGA,kBAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;EACvE,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;EACpC,GAAG;EACH,EAAE,OAAO,QAAQ,CAAC;EAClB,CAAC;AACD;AACA;EACA,MAAM,WAAW,CAAC;EAClB,EAAE,WAAW,CAAC,OAAO,EAAE;EACvB,IAAI,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;EACxB,IAAI,MAAM,WAAW,GAAGA,kBAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;EACnD,IAAI,IAAI,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EACpD,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,IAAI;EAChE,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAChE,MAAM,OAAO,QAAQ,CAAC;EACtB,KAAK,CAAC,CAAC;EACP,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAClC,IAAI,IAAI,kCAAkC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;EAC/D,MAAM,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,OAAO,CAAC,CAAC;EACrE,KAAK;EACL,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM;EAC5B;EACA,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,WAAW,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;EACzF,GAAG;AACH;EACA,EAAE,KAAK,CAAC,IAAI,EAAE;EACd,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;EAC9B,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACzC,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO;EACvB,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;EACxB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACpD,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9D,KAAK;EACL,IAAI,OAAO,QAAQ,CAAC;EACpB,GAAG;AACH;EACA,EAAE,IAAI,CAAC,IAAI,EAAE;EACb,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAClC,GAAG;AACH;EACA,EAAE,QAAQ,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;EAClC,GAAG;EACH,CAAC;AACD;EACO,SAAS,eAAe,CAAC,OAAO,EAAE;EACzC,EAAE,IAAI,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;EACtC,EAAE,IAAI,CAAC,OAAO,EAAE;EAChB,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;EACvC;EACA,IAAI,IAAIA,kBAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,kBAAkB,EAAE,OAAO,YAAY,CAACA,kBAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAClG,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;EACpC,GAAG;EACH,EAAE,OAAO,OAAO,CAAC;EACjB;;EC7GA,MAAM,kBAAkB,GAAG,OAAO,CAAC;AACnC;AACA;EACA,MAAM,QAAQ,CAAC;EACf,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE;EAClD,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,KAAK,SAAS,GAAG,MAAM,IAAI,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC;EAC1E,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;EACpC,GAAG;AACH;EACA,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;EACtB,GAAG;AACH;EACA,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;EACxB,GAAG;AACH;EACA,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;EAClF,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC;EACvB,GAAG;AACH;EACA,EAAE,IAAI,GAAG,GAAG;EACZ,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;EACzF,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC;EACrB,GAAG;AACH;EACA,EAAE,IAAI,WAAW,GAAG;EACpB,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC;EAC7B,GAAG;EACH,CAAC;AACD;AACA;EACe,MAAM,MAAM,CAAC;EAC5B,EAAE,WAAW,CAAC,SAAS,EAAE;EACzB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACzB,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EAC5B,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;EACvB,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACzB,IAAI,IAAI,CAAC,IAAI,GAAGA,kBAAC,CAAC,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;EAC/B,IAAI,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;EAChC,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACjE,IAAI,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC;EAC7C,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;EACpC,IAAI,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;EAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACtB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACpD,GAAG;AACH;EACA,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;EACzB,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;EACrB,IAAI,IAAI;EACR,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,cAAc,CAAC;EACnE,MAAM,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;EACrF,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC/C,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACnC,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACvD,OAAO;EACP,KAAK,CAAC,MAAM;EACZ;EACA,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI;EACxF,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;EAClF,MAAM,IAAI,aAAa,EAAE;EACzB,QAAQ,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;EACnF;EACA,QAAQ,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC;EAC7D,UAAU,aAAa,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;EAC1C,UAAU,aAAa,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;EACjF,SAAS,CAAC;EACV,QAAQ,IAAI,CAAC,UAAU,EAAE;EACzB,UAAU,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK;EACzC,YAAY,CAAC,uCAAuC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;EACzE,YAAY,CAAC,CAAC,EAAE,kBAAkB,CAAC,oBAAoB,CAAC;EACxD,WAAW,CAAC,CAAC;EACb,SAAS;EACT,OAAO;EACP,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE;EACrC,QAAQ,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM;EACjE,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;EAC7B,YAAY,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC;EACtF,WAAW,CAAC,CAAC,CAAC;EACd,SAAS,CAAC,CAAC;EACX,OAAO;EACP,MAAM,OAAO,QAAQ,CAAC;EACtB,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,OAAO,CAAC,SAAS,EAAE;EACrB,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;EAClD,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,OAAO;EAC9C,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;EAChC,IAAI,IAAI,CAAC,SAAS,EAAE;EACpB,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;EACnD,MAAM,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;EACjC,MAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;EACzF,KAAK;EACL,GAAG;AACH;EACA,EAAE,aAAa,CAAC,EAAE,EAAE;EACpB,IAAI,IAAI,EAAE,EAAE;EACZ,MAAM,IAAI,EAAE,KAAK,IAAI,EAAE;EACvB,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EACvC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;EAChE,OAAO;EACP,MAAM,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;EACrB,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;EAC/D,MAAM,IAAI,CAAC,IAAI,GAAGA,kBAAC,CAAC,IAAI,CAAC;EACzB,KAAK;EACL,GAAG;AACH;EACA,EAAE,KAAK,CAAC,OAAO,EAAE;EACjB,IAAI,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC;EACnC,IAAI,IAAI,OAAO,CAAC;EAChB,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;EACpB,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACxC,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;EAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;EAClC,KAAK,MAAM;EACX,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;EACjD,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EACxD,OAAO,CAAC,CAAC;EACT,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACnD,MAAM,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;EACjC,MAAM,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC;EAChC,KAAK;EACL,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;EAC5D,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;EACtD,KAAK;EACL,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;EAChC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EACzC,IAAI,OAAO,OAAO,CAAC;EACnB,GAAG;AACH;EACA,EAAE,kBAAkB,GAAG;EACvB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;EACnE,IAAI,IAAI;EACR,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;EACrD,MAAM,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;EAClC,KAAK,CAAC,OAAO,CAAC,EAAE;EAChB,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;EACpC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EACnD,MAAM,MAAM,CAAC,CAAC;EACd,KAAK;EACL,GAAG;AACH;EACA,EAAE,QAAQ,CAAC,KAAK,EAAE;EAClB,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO;EAC3B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;EACzB,MAAM,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACvE,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACxC,KAAK;EACL,GAAG;AACH;EACA,EAAE,gBAAgB,CAAC,QAAQ,EAAE;EAC7B,IAAI,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;EACpC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;EAClC,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;EACnC,MAAM,IAAI,CAACA,kBAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;EAChF,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;EAC7B,KAAK;EACL,GAAG;AACH;EACA,EAAE,mBAAmB,CAAC,IAAI,EAAE;EAC5B,IAAI,OAAO,CAAC,WAAW;EACvB,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EAC1F,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;EAClB,GAAG;AACH;EACA,EAAE,OAAO,CAAC,OAAO,EAAE;EACnB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACjD,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;EACtF,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACvC,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;EACrC,GAAG;AACH;EACA,EAAE,MAAM,CAAC,OAAO,EAAE;EAClB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACjD,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;EACrF,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACvC,IAAI,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;EACnE,GAAG;AACH;EACA,EAAE,KAAK,CAAC,OAAO,EAAE;EACjB,IAAI,IAAI,OAAO,GAAG,CAAC,uBAAuB,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;EAC3F,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9E,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;EACpC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;EACpE,IAAIA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACpE,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACzB,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC;EACrB,GAAG;AACH;EACA,EAAE,kBAAkB,CAAC,CAAC,KAAK,CAAC,EAAE;EAC9B,IAAI,IAAI;EACR,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,cAAc,CAAC;EACnE,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;EAChC,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;EACjC,UAAU,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACvC,SAAS,MAAM;EACf,UAAU,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;EAChD,SAAS;EACT,OAAO;EACP,KAAK,CAAC,MAAM;EACZ;EACA,KAAK;EACL,GAAG;AACH;EACA,EAAE,WAAW,CAAC,OAAO,EAAE;EACvB,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;EACxE,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;EAChE,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;EACzF,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;EAC1E,GAAG;AACH;EACA,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE;EAC9B,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;EACvB,IAAI,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;EAChE,GAAG;AACH;EACA,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;EACrC,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAC5C,IAAI,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;EACjC,IAAI,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;EAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EACxD,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;EACpC,GAAG;AACH;EACA,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;EACtC,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;EAC/D,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACnD,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;EACxC,MAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,EAAE;EAC1E,QAAQ,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACnC,QAAQ,MAAM;EACd,OAAO;EACP,KAAK;EACL,GAAG;AACH;EACA,EAAE,OAAO,CAAC,OAAO,EAAE;EACnB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;EACvC,GAAG;AACH;EACA,EAAE,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE;EACtC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,qBAAqB,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;EACpE,GAAG;AACH;EACA,EAAE,eAAe,CAAC,GAAG,EAAE;EACvB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC;EACrD,GAAG;AACH;EACA,EAAE,MAAM,CAAC,GAAG,EAAE;EACd,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;EAC5C,GAAG;AACH;EACA,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;EAC1F,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AAChG;EACA,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE;EACzB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;EAChG,GAAG;AACH;EACA,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE;EAC5F,IAAI,MAAM,MAAM,GAAG;EACnB,MAAM,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,OAAO;EACvE,MAAM,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC;EACrE,KAAK,CAAC;EACN,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;EACzD,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;EAC7C;EACA,IAAI,gBAAgB,CAAC,aAAa,GAAG,gBAAgB,CAAC,aAAa,IAAI,EAAE,CAAC;EAC1E,IAAI,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACnD,IAAI,IAAI,CAAC,KAAK,CAAC;EACf,MAAM,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO;EAClF,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI;EACtB,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;EACtB,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE;EACpE,IAAI,MAAM,eAAe,GAAG,EAAE,CAAC;EAC/B,IAAI,IAAI,UAAU,CAAC;EACnB,IAAI,IAAI,gBAAgB,EAAE;EAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB;EAChD,QAAQ,gBAAgB,EAAE,MAAM,IAAIA,kBAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;EACxF,OAAO,CAAC;EACR,MAAM,IAAI,CAAC,UAAU,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;EAChD,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;EACvC,KAAK,MAAM;EACX,MAAM,KAAK,MAAM,EAAE,IAAIA,kBAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;EAChD,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;EAC3C,QAAQ,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE;EAClG,UAAU,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACnC,SAAS;EACT,OAAO;EACP,KAAK;EACL;EACA;EACA;EACA,IAAI,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;EAChE,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;EAC9F,MAAM,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;EACrE,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE;EAC3C,IAAI,IAAI,KAAK,EAAE;EACf,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC1C,MAAM,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;EACpD,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE;EACjC,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;EACtD,OAAO,MAAM;EACb,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACzB,OAAO;EACP,KAAK,MAAM;EACX,MAAM,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;EAC/E,KAAK;EACL,GAAG;AACH;EACA,EAAE,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE;EAC3D,IAAI,OAAO,IAAI,CAAC,KAAK;EACrB,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,CAAC;EACvE,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI;EACrB,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE;EAC5B,QAAQ,MAAM,CAAC,SAAS,GAAGA,kBAAC,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,IAAI,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;EAC/F,OAAO;EACP,MAAM,OAAO,MAAM,CAAC;EACpB,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;EACnC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;EACjE,GAAG;AACH;EACA,EAAE,gBAAgB,GAAG;EACrB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC,CAAC;EACjD,GAAG;AACH;EACA,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE;EACvB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;EACvC,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;EACjE,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EACtC,GAAG;AACH;EACA,EAAE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE;EACtC,IAAI,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;EAC1B,IAAI,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;EAC/B,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;EACzC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;EACxC,IAAI,OAAO,MAAM,CAAC,EAAE,CAAC;EACrB,GAAG;AACH;EACA,EAAE,gBAAgB,CAAC,EAAE,EAAE;EACvB,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAGA,kBAAC,CAAC,IAAI,CAAC;EAC1C,GAAG;AACH;EACA,EAAE,mBAAmB,CAAC,EAAE,EAAE;EAC1B,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;EAC/B,GAAG;AACH;EACA,EAAE,wBAAwB,CAAC,QAAQ,EAAE,SAAS,EAAE;EAChD,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO;EACxC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EACd,IAAI,OAAO,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE;EAC9C,MAAM,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;EAC3C,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;EACzC,MAAM,IAAI,CAAC,MAAM,EAAE;EACnB,QAAQ,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC5C,QAAQ,SAAS;EACjB,OAAO;EACP,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;EAC7B,QAAQ,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC5C,QAAQ,OAAO,EAAE,CAAC;EAClB,OAAO;EACP,MAAM,CAAC,IAAI,CAAC,CAAC;EACb,KAAK;EACL,GAAG;EACH,CAAC;AACD;AACA;EACA,SAAS,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE;EACrC,EAAE,IAAI,CAAC,IAAI,IAAIA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC;EAC5C,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EACxC,EAAE,IAAI;EACN,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;EAC1B,IAAI,KAAK,MAAM,YAAY,IAAI,IAAI,EAAE;EACrC,MAAM,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,SAAS;EACrF,MAAM,IAAI;EACV,QAAQ,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;EACjD,OAAO,CAAC,MAAM;EACd,QAAQ,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;EACxC,QAAQ,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;EACvD,OAAO;EACP,KAAK;EACL,GAAG,CAAC,OAAO,CAAC,EAAE;EACd,IAAI,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;EAC7D,GAAG;EACH,EAAE,OAAO,KAAK,CAAC;EACf;;ECnZA;AACA;EACA,MAAM,iBAAiB,GAAG,EAAE,CAAC;EAC7B,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACjC;AACA;EACO,MAAM,MAAM,CAAC;EACpB,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE;EACvC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;EACrE,IAAI,IAAI,WAAW,EAAE;EACrB,MAAM,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;EACtC,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;EACjC,KAAK;EACL,GAAG;AACH;EACA,EAAE,IAAI,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;EAC3B,EAAE,IAAI,GAAG,GAAG;EACZ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;EAC5E,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC;EACrB,GAAG;AACH;EACA,EAAE,IAAI,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;EACjC,EAAE,IAAI,WAAW,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;EAClE,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;EAC5F,GAAG;AACH;EACA,EAAE,IAAI,WAAW,GAAG;EACpB,IAAI,OAAO,IAAI,CAAC,YAAY,IAAI,iBAAiB,CAAC;EAClD,GAAG;AACH;EACA,EAAE,KAAK,GAAG;EACV,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC;EACvC,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;EACxB,IAAI,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;EACjC,MAAM,IAAIA,kBAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO;EAC/B,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;EACpC,KAAK;EACL,IAAI,OAAO,IAAI,SAAS;EACxB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EAC7D,MAAM,IAAI,CAAC,YAAY;EACvB,KAAK,CAAC;EACN,GAAG;AACH;EACA,EAAE,QAAQ,GAAG;EACb,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC;EACvC,IAAI,MAAM,WAAW,GAAG,EAAE,CAAC;EAC3B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC/C,MAAM,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EAC/B,MAAM,IAAIA,kBAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;EAC1B,QAAQ,MAAM,OAAO,GAAG,EAAE,CAAC;EAC3B,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;EACnG,QAAQ,MAAM,IAAI,GAAGA,kBAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EAC/C,QAAQ,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;EAC/B,UAAU,MAAM,MAAM;EACtB,YAAY,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;EACzF,UAAU,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EACjE,UAAU,IAAI,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;EACpD,SAAS;EACT,QAAQ,OAAO,OAAO,CAAC;EACvB,OAAO;EACP,MAAM,IAAIA,kBAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO;EAC/B,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;EACvC,KAAK;EACL,IAAI,OAAO,IAAI,SAAS;EACxB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;EACrF,GAAG;AACH;EACA,EAAE,IAAI,CAAC,QAAQ,EAAE;EACjB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;EACjD,GAAG;AACH;EACA,EAAE,KAAK,CAAC,OAAO,EAAE;EACjB,IAAI,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACrD,GAAG;AACH;EACA,EAAE,IAAI,CAAC,OAAO,EAAE;EAChB,IAAI,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACpD,GAAG;AACH;EACA,EAAE,OAAO,CAAC,IAAI,EAAE;EAChB,IAAI,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC,EAAE,OAAO,KAAK,CAAC;EAChD,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE;EAC3E,MAAMA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;EACtD,GAAG;AACH;EACA,EAAE,SAAS,CAAC,KAAK,EAAE;EACnB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC;EACtC,GAAG;EACH,CAAC;AACD;AACA;EACO,MAAM,KAAK,SAAS,MAAM,CAAC;EAClC,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE;EAC7C,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;EACnC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;EACjD,IAAI,MAAM,UAAU,GAAGA,kBAAC,CAAC,IAAI,CAAC,KAAK,CAAC;EACpC,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACjF,OAAO,MAAM,EAAE;EACf,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;EACjB,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;EACjD,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACxB,GAAG;AACH;EACA;EACA,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;EACzC,GAAG;AACH;EACA,EAAE,IAAI,WAAW,GAAG;EACpB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;EACtB,GAAG;AACH;EACA,EAAE,QAAQ,CAAC,WAAW,EAAE;EACxB,IAAI,OAAO,IAAI,KAAK;EACpB,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAEA,kBAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;EACxF,GAAG;AACH;EACA,EAAE,oBAAoB,CAAC,IAAI,EAAE;EAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;EACtF,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE;EAChE,MAAM,MAAM,IAAI,KAAK;EACrB,QAAQ,mEAAmE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;EACpG,KAAK;EACL,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE;EAClD,MAAM,MAAM,IAAI,KAAK;EACrB,QAAQ,+DAA+D,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;EAChG,KAAK;EACL,IAAI,IAAI,CAACA,kBAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC,EAAE;EAClF,MAAM,MAAM,IAAI,KAAK;EACrB,QAAQ,qFAAqF;EAC7F,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;EAC9B,KAAK;EACL,IAAI,IAAI,GAAGA,kBAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACzB,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE;EACpD,MAAM,IAAI,EAAE,IAAI,CAAC,EAAE,YAAY,SAAS,CAAC,EAAE;EAC3C,QAAQ,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;EAC5E,OAAO;EACP,MAAM,IAAI,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;EACzC,MAAM,IAAI,CAACA,kBAAC,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;EAChD,QAAQ,MAAM,IAAI,KAAK;EACvB,UAAU,6DAA6D,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;EACnF,OAAO;EACP,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;EACzE,MAAM,IAAI,CAACA,kBAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE;EACvC,QAAQ,MAAM,IAAI,KAAK;EACvB,UAAU,mEAAmE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;EACzF,OAAO;EACP,MAAM,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;EAC/C,KAAK;EACL,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACxB,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;AACH;AACA;EACA,EAAE,QAAQ,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;EACnC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;EACjD,CAAC;AACD;AACA;EACO,MAAM,SAAS,SAAS,MAAM,CAAC;AACtC;EACA,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE;EACvC,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;EACnC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACxB,GAAG;AACH;EACA,EAAE,IAAI,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;EACzD,EAAE,IAAI,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EACvD,EAAE,QAAQ,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;EACjC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AACrD;EACA,EAAE,QAAQ,CAAC,WAAW,EAAE;EACxB,IAAI,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAEA,kBAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;EAC/F,GAAG;AACH;EACA,EAAE,KAAK,CAAC,IAAI,EAAE;EACd,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;EACtE,GAAG;AACH;EACA,EAAE,GAAG,CAAC,KAAK,EAAE;EACb,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;EAClC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;EAChE,GAAG;AACH;EACA,EAAE,MAAM,CAAC,MAAM,EAAE;EACjB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;EAClC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;EACrD,GAAG;AACH;EACA,EAAE,QAAQ,CAAC,KAAK,EAAE;EAClB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;EAClC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;EACrE,GAAG;AACH;EACA,EAAE,MAAM,CAAC,cAAc,EAAE;EACzB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;EAClC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;EACnD,GAAG;AACH;EACA,EAAE,sBAAsB,GAAG;EAC3B,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;EAChG,GAAG;EACH;;EC7MO,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AACpE;EACO,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;EACnC,EAAE,OAAOA,kBAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;EAChD,CAAC;AACD;EACA,SAAS,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;EACjC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;EAC/E,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;EAC3C,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACrC,CAAC;AACD;EACO,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;EACpC,EAAE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE;EAC9D,IAAI,IAAI,IAAI,KAAK,aAAa,EAAE,SAAS;EACzC,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;EACjG,GAAG;EACH;;ECfA,MAAM,QAAQ,CAAC;EACf,EAAE,WAAW,CAAC,IAAI,EAAE;EACpB,IAAIA,kBAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;EAC3F,GAAG;AACH;EACA,EAAE,GAAG,CAAC,IAAI,EAAE;EACZ,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;EACzC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;EACvC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;EACvC,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC;EAC7C,GAAG;AACH;EACA,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;EAC9C,GAAG;AACH;EACA,EAAE,IAAI,mBAAmB,GAAG;EAC5B,IAAI,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;EAC1E,GAAG;AACH;EACA,EAAE,IAAI,gBAAgB,GAAG;EACzB,IAAI,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;EACnE,GAAG;AACH;EACA,EAAE,UAAU,CAAC,MAAM,EAAE;EACrB,IAAI,OAAO;EACX,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC9D,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;EAC9D,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;EAC/D,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;EACrE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;EACvD,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;EACpD,KAAK,CAAC;EACN,GAAG;EACH,CAAC;AACD;EACA,MAAM,KAAK,CAAC;EACZ,EAAE,WAAW,GAAG;EAChB,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACrB,GAAG;AACH;EACA,EAAE,GAAG,CAAC,IAAI,EAAE;EACZ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;EACnE,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC7B,GAAG;AACH;EACA,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAOA,kBAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;EACzE,GAAG;AACH;EACA,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;EACd,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;EAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO;EAC9B,IAAI,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC;EAC7C,IAAIA,kBAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAClD,IAAI,KAAK,GAAGA,kBAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;EAC7B,IAAI,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC;EAC5C,IAAIA,kBAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EACjD,IAAI,MAAM,KAAK,GAAGA,kBAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;EAChE,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;EACzC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;EAC1C,IAAI,MAAM,MAAM,GAAGA,kBAAC,CAAC,GAAG,CAACA,kBAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAIA,kBAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;EACpG,IAAIA,kBAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI;EAC7B,MAAM,OAAO,CAAC,GAAG,CAACA,kBAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAKA,kBAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EACvF,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE;EACpC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;EACtD,IAAI,OAAO,WAAW;EACtB;EACA,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;EAC1C,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;EACxF,MAAM,IAAI;EACV,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC3C,QAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;EACpE,QAAQ,OAAO,QAAQ,CAAC;EACxB,OAAO,SAAS;EAChB,QAAQ,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;EAC1D,QAAQ,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;EAChC,OAAO;EACP,KAAK,CAAC;EACN,GAAG;EACH,CAAC;AACD;AACA,cAAe,IAAI,KAAK,EAAE;;EClFX,MAAM,SAAS,CAAC;EAC/B,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;EACtD,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;EAC/B,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;EACpC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC1B;EACA,IAAI,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;EAC7B,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;EAC3B,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;EACpB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAIC,oBAAG,CAAC,CAAC,IAAI,EAAE;EAC/B,MAAM,WAAW,EAAE,EAAE;EACrB,MAAM,IAAI,EAAE,IAAI,IAAI,EAAE;EACtB,MAAM,MAAM,EAAED,kBAAC,CAAC,SAAS,CAAC,WAAW,EAAEA,kBAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;EAC7D,KAAK,CAAC,CAAC,CAAC;EACR;EACA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;EAChC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB;EACA,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChC;EACA,IAAIA,kBAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK;EAChD,MAAM,IAAIA,kBAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;EACpC,QAAQ,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;EACtD,OAAO,MAAM;EACb,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;EACvC,OAAO;EACP,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAOA,kBAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK;EACxD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;EACpD,MAAM,IAAI,CAAC,UAAU,EAAE,OAAO,KAAK,CAAC;EACpC,MAAM,IAAI,UAAU,YAAY,MAAM,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;EAChE,MAAM,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;EAC5C,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,IAAI,EAAE,GAAG;EACX,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;EAC1B,GAAG;AACH;EACA,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;EACtB,GAAG;AACH;EACA,EAAE,OAAO,GAAG;EACZ,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;EAClC,IAAIA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAChF,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;EACzB,GAAG;AACH;EACA,EAAE,oBAAoB,GAAG;EACzB,IAAI,MAAM,cAAc,GAAGA,kBAAC,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,GAAG,MAAM;EAC5E,MAAM,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM;EACxD,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;EACtD,QAAQ,IAAI,UAAU,YAAY,SAAS,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;EACrE,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EACrC,OAAO;EACP,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;EACxD,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;EACrB,MAAM,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE;EAC3C,QAAQ,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;EAChC,UAAU,MAAM,IAAI,KAAK,CAAC,CAAC,+CAA+C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EACnF,SAAS;EACT,OAAO;EACP,MAAM,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;EAC3D,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;EAC9D,KAAK;EACL,GAAG;AACH;EACA,EAAE,sBAAsB,GAAG;EAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO;EAC7B,IAAIA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK;EACtD,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC9B,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,uBAAuB,CAAC,GAAG,EAAE,EAAE,EAAE;EACnC,IAAI,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9D,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC;EAC3E,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC;EACvF,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;EACxD,GAAG;AACH;EACA,EAAE,kBAAkB,CAAC,EAAE,EAAE,eAAe,EAAE;EAC1C,IAAI,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;EACxC,IAAI,IAAI;EACR,MAAM,OAAO,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EAC/C,KAAK,SAAS;EACd,MAAM,eAAe,CAAC,WAAW,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;EACnE,MAAM,eAAe,CAAC,aAAa,IAAI,CAAC,CAAC;EACzC,KAAK;EACL,GAAG;AACH;EACA,EAAE,yBAAyB,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE;EACzD,IAAI,MAAM,aAAa,GAAGA,kBAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;EAC3E,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;EACrD,IAAI,MAAM,iBAAiB,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;EAC1E,IAAI,IAAI,CAAC,iBAAiB,EAAE,OAAO;EACnC,IAAI,IAAI,eAAe,IAAI,iBAAiB,EAAE,eAAe,CAAC,UAAU,IAAI,CAAC,CAAC;EAC9E,IAAI,IAAI,CAAC,aAAa,EAAE;EACxB,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;EAC5B,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,aAAa,YAAY,MAAM,IAAI,CAACA,kBAAC,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE;EAC7E,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;EAC5B,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;EACxC,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;EACjE,KAAK;EACL,IAAIC,oBAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;EACvD,GAAG;AACH;EACA,EAAE,kBAAkB,CAAC,WAAW,EAAE;EAClC,IAAID,kBAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK;EAChD,MAAM,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;EACtD,KAAK,CAAC,CAAC;EACP,IAAIA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK;EACtD,MAAM,IAAI,CAACA,kBAAC,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;EACxE,KAAK,CAAC,CAAC;EACP,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;EACpC,GAAG;AACH;EACA,EAAE,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE;EAC5B,IAAIC,oBAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;EACpD,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO;EAC5B,IAAIA,oBAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;EAC9C,IAAI,IAAI,UAAU,YAAY,SAAS,EAAE;EACzC,MAAMA,oBAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;EAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;EACrF,KAAK,MAAM,IAAI,UAAU,YAAY,KAAK,EAAE;EAC5C,MAAMA,oBAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;EAC/C,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EAC9D,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;EAC3F,KAAK,MAAM;EACX,MAAM,MAAM,QAAQ,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,CAAC;EACxC,MAAMA,oBAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;EAC5C,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;EACnD,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;EAC/E;EACA;EACA;EACA,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO;EACzE,QAAQ,MAAM,YAAY,CAAC,KAAK;EAChC,QAAQ,QAAQ,IAAI;EACpB,UAAU,IAAI,CAAC,QAAQ,EAAE,OAAO;EAChC,UAAU,SAAS,EAAE,CAAC;EACtB,UAAU,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;EACxC,UAAUA,oBAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;EACnD,SAAS;EACT,OAAO,CAAC;EACR,KAAK;EACL,GAAG;AACH;EACA,EAAE,WAAW,CAAC,GAAG,EAAE;EACnB,IAAIA,oBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACpC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;EACzC,IAAI,IAAID,kBAAC,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE;EACzC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;EACzC,MAAM,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;EACtC,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;EACzD,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;EAClC,IAAIC,oBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;EAC3C,GAAG;AACH;EACA,EAAE,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE;EAC9B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE;EACzC,MAAMA,oBAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;EAC5C,KAAK;EACL,GAAG;AACH;EACA,EAAE,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE;EACpC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;EAChC,MAAMA,oBAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;EACzC,KAAK;EACL,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC3C,IAAI,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE;EACrC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS;EACvD,MAAM,IAAI,CAACD,kBAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE;EAC5C,QAAQC,oBAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;EACvC,OAAO;EACP,KAAK;EACL,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;EACzE,IAAI,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;EACtC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS;EACtD,MAAMA,oBAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;EACpD,KAAK;EACL,GAAG;AACH;EACA,CAAC;AACD;EACA,SAAS,WAAW,CAAC,IAAI,EAAE;EAC3B,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO;EACpB,EAAE,IAAI,IAAI,YAAY,MAAM,EAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;EACrD,EAAE,OAAOD,kBAAC,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;EACxC;;EChNO,SAAS,mBAAmB,CAAC,QAAQ,EAAE;EAC9C,EAAE,OAAO,WAAW;EACpB,IAAI,IAAI;EACR;EACA,MAAM,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;EAC9D,KAAK,CAAC,OAAO,CAAC,EAAE;EAChB,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC/B,KAAK;EACL,GAAG,CAAC;EACJ,CAAC;AACD;EACO,SAAS,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE;EAC/C,EAAE,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EAC5D,EAAE,OAAO,CAAC,MAAM,GAAG,MAAM;EACzB,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO;EACxB,IAAI,MAAM,EAAE,CAAC;EACb,IAAI,MAAM,GAAG,IAAI,CAAC;EAClB,GAAG,CAAC;EACJ,EAAE,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;EAC9C,EAAE,OAAO,OAAO,CAAC;EACjB,CAAC;AACD;EACA,SAAS,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE;EACzD,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;EACnE,EAAE,OAAO,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,UAAU,KAAK;EAC7C,IAAI,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;EAC9E,IAAI,cAAc,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;EACzD,IAAI,wBAAwB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;EAC3D,IAAI,OAAO,cAAc,CAAC;EAC1B,GAAG,CAAC;EACJ,EAAE,OAAO,CAAC,KAAK,GAAG,UAAU,IAAI;EAChC,IAAI,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;EACnE,IAAI,cAAc,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;EACzD,IAAI,wBAAwB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;EAC3D,IAAI,OAAO,cAAc,CAAC;EAC1B,GAAG,CAAC;EACJ,EAAE,OAAO,OAAO,CAAC;EACjB,CAAC;AACD;EACO,SAAS,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE;EACnD,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,OAAO,CAAC;EACjC,EAAE,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;EAC7C,EAAE,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI;EAChC,IAAI,OAAO,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,CAAC;EAC1C,GAAG,EAAE,KAAK,IAAI;EACd,IAAI,OAAO,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;EACzD,GAAG,CAAC,CAAC;EACL;;ECzCA,MAAM,cAAc,GAAG;EACvB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc;EACvF,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK;EACnC,CAAC,CAAC;AACF;EACA,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB;AACA;EACA,MAAM,UAAU,CAAC;EACjB,EAAE,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;EAC1C,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;EAChC,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;EAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,GAAG;AACH;EACA,EAAE,QAAQ,GAAG;EACb,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;EAClB,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;EACjE,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM;EACvC,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACzB,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;EACtC,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;EAC9B,GAAG;AACH;EACA,EAAE,MAAM,GAAG;EACX,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;EACrD,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;EACvD,GAAG;EACH,CAAC;AACD;AACA;EACA,MAAM,SAAS,CAAC;EAChB,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;EAC7C,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;EAC1B,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;EAC1B,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;EAC5B,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;EAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;EACpB,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EACtC,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;EAC3B,GAAG;AACH;EACA,EAAE,IAAI,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;EACjC,EAAE,IAAI,MAAM,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;EACrC,EAAE,IAAI,MAAM,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;EACrC,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EACzD,IAAI,OAAOA,kBAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK;EAChE,MAAM,OAAO,IAAI,SAAS;EAC1B,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,mBAAmB,CAAC;EAC5E,QAAQ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;EACnC,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,IAAI,OAAO,GAAG,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;EACvC,EAAE,IAAI,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;EACnC,EAAE,IAAI,OAAO,GAAG,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;EACvC,EAAE,IAAI,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;EACnC,EAAE,IAAI,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;EACnC,EAAE,IAAI,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACnC;EACA,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE;EAC1B,IAAI,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;EACzD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACnC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;EACtB,GAAG;AACH;EACA,EAAE,WAAW,CAAC,KAAK,EAAE;EACrB,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;EAC1B,GAAG;AACH;EACA,EAAE,SAAS,CAAC,KAAK,EAAE;EACnB,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,GAAG;AACH;EACA,EAAE,UAAU,CAAC,MAAM,EAAE;EACrB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;EACjC,IAAIA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;EAC5D,GAAG;AACH;EACA,EAAE,WAAW,GAAG;EAChB;EACA,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EACtC,IAAIA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;EAC9D,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,GAAG;AACH;EACA,EAAE,eAAe,GAAG;EACpB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;EAClB,GAAG;EACH,CAAC;AACD;AACA;EACe,MAAM,UAAU,CAAC;EAChC,EAAE,WAAW,CAAC,MAAM,EAAE;EACtB,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;EAC1B,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACzB,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACxB,GAAG;AACH;EACA,EAAE,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE;EACrC,IAAI,IAAI,CAACA,kBAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC,EAAE;EACnD,MAAM,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,YAAY,CAAC,CAAC;EAC3E,KAAK;EACL,IAAI,MAAM,eAAe;EACzB,MAAMA,kBAAC,CAAC,UAAU,CAACA,kBAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;EACvF,IAAI,IAAI,eAAe,CAAC,MAAM,EAAE;EAChC,MAAM,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EACzF,KAAK;EACL,IAAI,MAAM,gBAAgB,GAAG;EAC7B,MAAM,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,EAAE,SAAS,CAAC,QAAQ,CAAC;EAC/E,MAAM,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC;EAC5E,MAAM,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC;EAC5E,MAAM,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,SAAS,CAAC;EAClF,KAAK,CAAC;EACN,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;EAC5E,GAAG;AACH;EACA,EAAE,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE;EAC9C,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO;EAC1B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;EAC3D,IAAI,MAAM,eAAe,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;EAC1D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;EAChF,IAAI,OAAO,eAAe,CAAC;EAC3B,GAAG;AACH;EACA,EAAE,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE;EACxD,IAAI,IAAI,CAAC,eAAe,EAAE,OAAO;EACjC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;EAC3D,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAEA,kBAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;EAC5E,GAAG;AACH;EACA,EAAE,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,EAAE;EACnD,IAAIA,kBAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,eAAe,EAAE,KAAK,KAAK;EAC5D,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;EACjE,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE;EAC9C,IAAI,OAAO,EAAE,CAAC,MAAM;EACpB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,WAAW;EAC1E,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,IAAI,WAAW;EACjF,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,WAAW;EACzE,KAAK,CAAC;EACN,GAAG;AACH;EACA,EAAE,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE;EACxC,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;EACtC,GAAG;AACH;EACA,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;EAC5D,IAAI,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;EAC7C,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;EACnF,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM;EAC5C,MAAM,MAAM,kBAAkB,GAAG,MAAM;EACvC,QAAQ,OAAO,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;EAC9F,OAAO,CAAC;EACR,MAAM,OAAO,kBAAkB,EAAE,CAAC;EAClC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC;EAC9D,GAAG;AACH;EACA,EAAE,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;EAC1D,IAAI,OAAO,IAAI,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;EACjE,GAAG;AACH;EACA,EAAE,KAAK,CAAC,SAAS,EAAE;EACnB,IAAI,OAAO,OAAO,CAAC,GAAG,CAACA,kBAAC,CAAC,GAAG;EAC5B,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC;EACtE,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC;EACrC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM;EAClB,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;EACxD,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;EACpC,GAAG;AACH;EACA,EAAE,SAAS,CAAC,SAAS,EAAE;EACvB,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;EAC3B,GAAG;AACH;EACA,EAAE,UAAU,CAAC,SAAS,EAAE;EACxB,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;EAC5B,GAAG;AACH;EACA,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE;EAC1B,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;EAChC,IAAI,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;EAC7B,IAAI,OAAO,OAAO,CAAC,GAAG,CAACA,kBAAC,CAAC,GAAG;EAC5B,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC;EACrE,MAAM,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;EAC1C,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI;EACvB;EACA;EACA;EACA,MAAM,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO;EAClC,MAAM,MAAM,QAAQ,GAAGA,kBAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EACvC,MAAM,IAAI,QAAQ,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC;EAC5C,MAAM,OAAO,QAAQ,CAAC;EACtB,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE;EAChC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI;EACvD,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;EACrD,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;EACpC,GAAG;AACH;EACA,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE;EACxB,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;EAClD,IAAI,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;EACjC,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC9B,IAAI,IAAI,KAAK,EAAE;EACf,MAAM,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;EAC/B,KAAK,MAAM;EACX;EACA,MAAM,OAAO,SAAS,CAAC,MAAM,CAAC;EAC9B,KAAK;EACL,IAAI,OAAO,OAAO,CAAC,GAAG,CAACA,kBAAC,CAAC,GAAG;EAC5B,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC;EACrE,MAAM,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;EACnC,KAAK,CAAC,CAAC,IAAI;EACX,MAAM,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;EACrC,MAAM,CAAC,IAAI;EACX,QAAQ,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;EAC7B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;EACzC,OAAO;EACP,KAAK,CAAC;EACN,GAAG;AACH;EACA,EAAE,SAAS,CAAC,SAAS,EAAE;EACvB,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;EACnD,IAAI,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;EACjG,IAAI,IAAI,kBAAkB,EAAE;EAC5B,MAAM,UAAU,CAAC,MAAM;EACvB,QAAQA,kBAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;EACzE,OAAO,EAAE,CAAC,CAAC,CAAC;EACZ,KAAK;EACL,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;EAC3C,GAAG;EACH;;EC3PA,MAAM,QAAQ,GAAG,kEAAkE,CAAC;AACpF;EACA,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe;EACtE,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpD;EACe,MAAM,YAAY,CAAC;EAClC,EAAE,WAAW,GAAG;EAChB,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;EAChC,IAAI,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;EAChC,GAAG;AACH;EACA,EAAE,iBAAiB,CAAC,GAAG,EAAE;EACzB,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;EAC5B,IAAI,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;EAChC,IAAI,IAAI,MAAM,GAAG,GAAG,CAAC;EACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EACjC,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;EAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;EACvC,KAAK;EACL,IAAI,IAAI,GAAG,KAAK,IAAI,CAAC,kBAAkB,EAAE;EACzC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;EACzD,QAAQ,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACtC,QAAQ,CAAC,IAAI,CAAC,CAAC;EACf,OAAO;EACP,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;EACpB,QAAQ,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;EAClG,OAAO;EACP,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EACrC,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC;EACpC,MAAM,IAAI,eAAe,EAAE;EAC3B,QAAQ,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,eAAe,CAAC,KAAK,CAAC,CAAC;EAC/B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EACrC;EACA,UAAU,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;EACnE,SAAS;EACT,OAAO,MAAM;EACb,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EACrC;EACA,UAAU,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;EAChF,SAAS;EACT,OAAO;EACP,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EACjC,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;EACzD,KAAK;EACL,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EAC1B,GAAG;EACH;;EC9Ce,MAAM,QAAQ,CAAC;EAC9B,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE;EACjD,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;EAC5B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;EAClC,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;EAC1B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAIC,oBAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE;EACvC,MAAM,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS;EAC7E,MAAM,aAAa,CAAC,cAAc,EAAE;EACpC,QAAQ,MAAM,GAAG,GAAG,KAAK,GAAG,cAAc,CAAC;EAC3C,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;EACvC,UAAU,MAAM,MAAM,GAAG,MAAM;EAC/B,YAAYA,oBAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;EAC7D,WAAW,CAAC;EACZ,UAAU,MAAM,EAAE,CAAC;EACnB,UAAU,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;EAC9C,SAAS;EACT,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;EACzB,OAAO;EACP,KAAK,CAAC,CAAC,CAAC,CAAC;AACT;EACA,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,yBAAyB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AACjG;EACA,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;AACzD;EACA,IAAI,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;EAChE,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;EACxD,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACxB,GAAG;AACH;EACA,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;EACjC,GAAG;AACH;EACA,EAAE,OAAO,GAAG;EACZ,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;EACtE,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;EACzB,GAAG;AACH;EACA,EAAE,YAAY,CAAC,KAAK,EAAE;EACtB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;EACxB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;EACnC,MAAM,MAAM,EAAE,cAAc,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM;EAC3E,QAAQ,MAAM,OAAO,GAAG,KAAK;EAC7B,UAAU,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;EAChE,UAAU,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EACtD,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;EAC5D,OAAO;EACP,KAAK,CAAC;EACN,GAAG;AACH;EACA,EAAE,cAAc,GAAG;EACnB;EACA;EACA;EACA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;EACxB,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI;EACzD;EACA;EACA,MAAM,IAAI,CAAC,QAAQ,EAAE,OAAO;EAC5B,MAAM,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;EACrC,QAAQ,MAAM,EAAE,gBAAgB,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM;EACnF,UAAU,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EACpD,SAAS;EACT,OAAO,CAAC;EACR,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,iBAAiB,CAAC,IAAI,EAAE;EAC1B,IAAI,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;EACxF,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,yBAAyB,GAAG,IAAI,CAAC;EACxE,IAAI,IAAI,gBAAgB,EAAE,OAAO;EACjC,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;EACzC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EAC/D,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO;EAC5C,MAAM,MAAM,EAAE,SAAS,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM;EACrE,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC;EACtF,QAAQ,IAAI,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACtC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EAC9B,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC;EAC5C,QAAQ,OAAO,IAAI,CAAC;EACpB,OAAO;EACP,KAAK,CAAC;EACN,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;EACpF,IAAI,OAAO,OAAO,CAAC;EACnB,GAAG;AACH;EACA,EAAE,kBAAkB,CAAC,IAAI,EAAE;EAC3B,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;EACnC,GAAG;AACH;EACA,EAAE,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE;EAC5C,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EACvC,IAAI,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;EACnD,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI;EAC/D,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;EACxC,KAAK,CAAC,CAAC;EACP,GAAG;EACH;;EC9FA;EACA,MAAM,6BAA6B,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACrD;EACA,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC;EAC9C,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe;EAClG,CAAC,CAAC,CAAC;EACH,MAAM,2BAA2B;EACjC,EAAE,IAAI,GAAG,CAACD,kBAAC,CAAC,GAAG,CAAC,6BAA6B,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E;EACA,MAAM,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAC1D;EACA;EACA;EACA;EACA,IAAI,wBAAwB,CAAC;AAC7B;EACA,IAAI,qBAAqB,CAAC;AAC1B;AACA;EACO,MAAM,SAAS,CAAC;EACvB,EAAE,IAAI,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACxC,EAAE,IAAI,MAAM,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EAC1C,EAAE,IAAI,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtC;EACA,EAAE,OAAO,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC1C;EACA,EAAE,UAAU,CAAC,UAAU,EAAE,SAAS,EAAE;EACpC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;EACrE,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;EACrE,IAAI,MAAM,6BAA6B,GAAG,MAAM;EAChD,MAAM,WAAW,EAAE,CAAC;EACpB,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,CAAC;EACjE,KAAK,CAAC;EACN,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,CAAC;EAC9D,IAAI,OAAO,6BAA6B,CAAC;EACzC,GAAG;AACH;EACA,EAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE;EAC/B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;EACrE,IAAI,IAAI,CAAC,WAAW,EAAE;EACtB,MAAM,WAAW,GAAG,KAAK,CAAC;EAC1B,MAAM,KAAK,GAAG,SAAS,CAAC;EACxB,KAAK;EACL,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;EACrF,IAAI,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC;EAC9C,IAAI,MAAM,OAAO,GAAG,MAAM;EAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;EAC3C,MAAM,OAAO,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAC7C,KAAK,CAAC;EACN,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;EACxC,IAAI,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;EAChC,IAAI,OAAO,SAAS,CAAC;EACrB,GAAG;AACH;EACA,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE;EAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;EACrE,IAAI,MAAM,OAAO,GAAG,cAAc;EAClC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;EAC9F,KAAK,CAAC;EACN,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;EAC/C,IAAI,OAAO,OAAO,CAAC;EACnB,GAAG;AACH;EACA,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE;EAC3C,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;EACrE,IAAI,IAAI,2BAA2B,CAAC;AACpC;EACA,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;EAChD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;EACzB,MAAM,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAClC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AACtD;EACA,IAAI,2BAA2B,GAAG,MAAM;EACxC,MAAM,SAAS,EAAE,CAAC;EAClB,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,CAAC;EAC/D,KAAK,CAAC;EACN,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,CAAC;EAC5D,IAAI,OAAO,2BAA2B,CAAC;EACvC,GAAG;AACH;EACA,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE;EAC7B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;EACrE,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;EAC3C,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;EACzB,MAAM,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACnC,KAAK,EAAE,OAAO,CAAC,CAAC;EAChB,IAAI,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EAClF,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;EAC/C,IAAI,OAAO,OAAO,CAAC;EACnB,GAAG;EACH,CAAC;AACD;AACA;EACA,MAAM,KAAK,CAAC;EACZ,EAAE,IAAI,OAAO,GAAG,CAAC,OAAO,wBAAwB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EAChE,EAAE,IAAI,KAAK,GAAG,CAAC,OAAO,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EAC5D,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;EACxE,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC;EACvB,GAAG;AACH;EACA,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC/F,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC;EACrB,GAAG;AACH;EACA,EAAE,IAAI,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;EACjC,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,MAAM,CAAC,cAAc;EACzB,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7F,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC;EACrB,GAAG;AACH;EACA,EAAE,IAAI,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;EAC5B,EAAE,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC;EAC/B,EAAE,IAAI,MAAM,GAAG,CAAC,OAAOA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAC9C,EAAE,IAAI,KAAK,GAAG,CAAC,OAAOA,kBAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,EAAE,IAAI,OAAO,GAAG,CAAC,OAAOA,kBAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAC9C,EAAE,IAAI,MAAM,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACxC,EAAE,IAAI,WAAW,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC;AACnC;EACA,EAAE,SAAS,GAAG;EACd,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;EACrE,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;EAC3C,IAAI,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EAClF,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;EAC/C,IAAI,OAAO,OAAO,CAAC;EACnB,GAAG;AACH;EACA,EAAE,uBAAuB,GAAG;EAC5B,IAAI,IAAI,CAACA,kBAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,EAAE;EAC7C,MAAM,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;EAC1F,KAAK;EACL,IAAI,qBAAqB,GAAG,IAAI,CAAC;EACjC,GAAG;AACH;EACA,EAAE,IAAI,kBAAkB,GAAG;EAC3B,IAAI,IAAI,CAACA,kBAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,EAAE;EAC7C,MAAM,MAAM,IAAI,KAAK;EACrB,QAAQ,6EAA6E,CAAC,CAAC;EACvF,KAAK;EACL,IAAI,OAAO,mBAAmB,CAAC;EAC/B,GAAG;AACH;EACA,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EAC5C,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;EACpD,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;EACxD,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1E;EACA,EAAE,WAAW,GAAG;EAChB;EACA,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;EACrB,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;EAC/B,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;EAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;EAC5F,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,MAAM,CAAC;EAClB,KAAK;EACL;EACA,GAAG;AACH;EACA,EAAE,IAAI,UAAU,GAAG;EACnB,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;AACH;EACA,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE;EACvB,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;EACrE,IAAI,IAAI,2BAA2B,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;EAChD,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,0BAA0B,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;EAC7E,KAAK;EACL,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;EACrE,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;AACH;EACA,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE;EACzB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;EACxB,IAAI,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE;EACzB,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;EAC7B,MAAM,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;EACxB,KAAK;EACL,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC;EACrB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;EAC/B,GAAG;AACH;EACA,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;EACxB,IAAI,IAAI,KAAK,EAAE;EACf,MAAM,IAAI,QAAQ,EAAE;EACpB,QAAQ,IAAIA,kBAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;EAC9B,UAAU,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;EAC1D,SAAS,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;EACxC,UAAU,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EAChD,UAAU,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACrD,YAAY,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EACpC,YAAY,IAAI,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,EAAE,KAAK,QAAQ,EAAE;EACvD,cAAc,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACrC,cAAc,MAAM;EACpB,aAAa;EACb,WAAW;EACX,SAAS;EACT,OAAO,MAAM;EACb,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EACnC,OAAO;EACP,KAAK,MAAM;EACX,MAAM,KAAK,MAAM,GAAG,IAAIA,kBAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;EACvE,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;AACH;EACA,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE;EACxB,IAAI,IAAIA,kBAAC,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;EAChC;EACA,MAAMA,kBAAC,CAAC,OAAO,CAACA,kBAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,IAAI;EAC1D,QAAQ,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;EACrD,UAAU,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACrC,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;EACrC,SAAS;EACT,QAAQ,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;EAC1B,OAAO,CAAC,CAAC;EACT,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;AACH;EACA,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;EAC3C,MAAM,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK;EACxE,KAAK,CAAC,CAAC;EACP,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;EACxB,GAAG;EACH,CAAC;AACD;EACA,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAChC;AACAA,oBAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK;EAC3C,EAAE,MAAM,CAAC,cAAc;EACvB,IAAI,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;EACnG,CAAC,CAAC,CAAC;AACH;AACA;EACA,MAAM,YAAY,CAAC;EACnB,EAAE,WAAW,CAAC,KAAK,EAAE;EACrB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,GAAG;EACH,CAAC;AACD;AACA;EACA,MAAM,aAAa,CAAC;EACpB,EAAE,WAAW,CAAC,KAAK,EAAE;EACrB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,GAAG;EACH,CAAC;AACD;AACA;EACe,MAAM,OAAO,CAAC;EAC7B,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;EAC1B,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;EACpB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;EAChC,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACxB,GAAG;AACH;EACA,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE;EAChC,IAAI,IAAIA,kBAAC,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;EAClC,MAAMA,kBAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK;EAC1C,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE,OAAO;EACtC,QAAQ,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;EACtD,QAAQ,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACtC,OAAO,CAAC,CAAC;EACT,MAAM,OAAO,GAAGA,kBAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;EAClC,MAAMA,kBAAC,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI;EAClC,QAAQ,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,YAAY,EAAE;EACtD,UAAU,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC;EACjD,UAAU,OAAO,KAAK,CAAC,YAAY,CAAC;EACpC,SAAS;EACT,OAAO,CAAC,CAAC;EACT,KAAK;EACL,IAAI,OAAO,GAAGA,kBAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAC9B,IAAIA,kBAAC,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;EACzE,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACnC,GAAG;AACH;EACA,EAAE,OAAO,GAAG,aAAa;AACzB;EACA,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE;EACvC,IAAI,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EAC3C,IAAI,IAAI,IAAI,CAAC;EACb,IAAI,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;EACpC,MAAM,IAAI,KAAK,GAAG,OAAO;EACzB,QAAQ,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;EAC/F,MAAM,IAAI,CAAC,KAAK,EAAE;EAClB,QAAQ,IAAI,CAAC,QAAQ,EAAE,OAAO;EAC9B,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;EAC5C,QAAQ,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;EACxD,OAAO;EACP,MAAM,IAAI,GAAG,KAAK,CAAC;EACnB,MAAM,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM;EAC9C,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;AACH;EACA,EAAE,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE;EAC9B,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;EACjC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC;EACrC,IAAI,KAAK,MAAM,QAAQ,IAAIA,kBAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;EAClD,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;EACzE,MAAM,IAAI,MAAM,EAAE,OAAO,MAAM,CAAC;EAChC,KAAK;EACL,GAAG;AACH;EACA,EAAE,aAAa,CAAC,IAAI,EAAE;EACtB,IAAIA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI;EACtC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;EAChC,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;EAC9E,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,aAAa,CAAC,KAAK,EAAE;EACvB,IAAI,IAAI,kBAAkB,CAAC;EAC3B,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;EAChC,IAAI,OAAO,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,EAAE;EAClD,MAAM,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;EAC5D,QAAQ,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;EACxE,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EACpC,UAAU,IAAIA,kBAAC,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE;EAC7F,YAAY,SAAS;EACrB,WAAW;EACX,UAAU,MAAM,IAAI,KAAK,CAAC,CAAC,+CAA+C,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;EAClG,SAAS;EACT,QAAQ,IAAI,6BAA6B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAIA,kBAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;EAClF,UAAU,MAAM,IAAI,KAAK,CAAC,CAAC,0BAA0B,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;EACjF,SAAS;EACT,QAAQ,IAAI,UAAU,CAAC,GAAG,IAAI,EAAE,kBAAkB,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE;EACjF,UAAU,CAAC,kBAAkB,KAAK,kBAAkB,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG;EACpE,YAAY,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG;EACpF,YAAY,GAAG,EAAE,UAAU,CAAC,GAAG;EAC/B,WAAW,CAAC;EACZ,SAAS;EACT,OAAO;EACP,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;EAC3C,KAAK;EACL,IAAI,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;EACpE,MAAM,IAAI,IAAI,KAAK,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,SAAS;EACnF,MAAM,MAAM,CAAC,cAAc;EAC3B,QAAQ,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;EACvF,KAAK;EACL,IAAI,OAAO,kBAAkB,CAAC;EAC9B,GAAG;AACH;EACA,EAAE,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE;EACrC,IAAI,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;EACzD,IAAI,MAAM,YAAY,GAAG,EAAE,CAAC;EAC5B,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC;EACnC,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;EAC5F,IAAI,IAAI,CAACA,kBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;EAC9C,IAAIA,kBAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI;EAC/B,MAAM,IAAIA,kBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;EACnD,MAAM,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;EACjD,QAAQ,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;EAC/E,OAAO;EACP,MAAM,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EAClD,MAAM,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE;EAChD,QAAQ,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EAC5D,UAAU,MAAM,IAAI,KAAK,CAAC,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;EAChE,SAAS;EACT,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;EACtC,UAAUA,kBAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,6BAA6B,CAAC,QAAQ,CAAC;EACrF,SAAS,EAAE;EACX,UAAU,MAAM,IAAI,KAAK,CAAC,CAAC,0DAA0D,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;EACnG,SAAS;EACT,QAAQ,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EACpC,OAAO;EACP,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3D,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EACxC,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE;EAC/B,UAAU,MAAM,IAAI,KAAK;EACzB,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,UAAU,CAAC,wBAAwB,CAAC,CAAC,CAAC;EAC7F,SAAS;EACT,OAAO,MAAM,IAAI,CAACA,kBAAC,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE;EAC/C,QAAQ,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;EAC/B,OAAO;EACP,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;EACpF,MAAM,IAAI,WAAW,CAAC,OAAO;EAC7B,QAAQ,WAAW,CAAC,UAAU,KAAK,UAAU;EAC7C,QAAQ,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;EAChF,OAAO,EAAE;EACT,QAAQ,MAAM,IAAI,KAAK;EACvB,UAAU,CAAC,4BAA4B,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACjG,OAAO;EACP,MAAMA,kBAAC,CAAC,MAAM;EACd,QAAQ,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,UAAU,CAAC;EACrE,QAAQA,kBAAC,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;EACvE,KAAK,CAAC,CAAC;EACP,IAAIA,kBAAC,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI;EAC/C,MAAM,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,GAAG;EAC9D,QAAQ,OAAO,wBAAwB;EACvC,UAAU,wBAAwB,CAAC,QAAQ,CAAC,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAAC,KAAK;EACxF,UAAU,SAAS,CAAC;EACpB,OAAO,CAAC,CAAC,CAAC;EACV,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE;EACjC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;EACzD,IAAI,IAAI;EACR,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE;EACzB,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EAChD,QAAQ,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE;EACtC,UAAU,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;EAC1D,SAAS;EACT,OAAO;AACP;EACA,MAAM,wBAAwB,GAAG,UAAU,CAAC;EAC5C,MAAM,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;EACvC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AACtC;EACA,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE;EAC5B,QAAQ,UAAU,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;EAC9F,OAAO;EACP,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;EAC3D,MAAM,IAAI,KAAK,CAAC,kBAAkB,EAAE;EACpC,QAAQA,kBAAC,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,IAAI;EACpD,UAAU,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EACtF,SAAS,CAAC,CAAC;EACX,OAAO;AACP;EACA,MAAM,OAAO,MAAM,CAAC;EACpB,KAAK,CAAC,OAAO,CAAC,EAAE;EAChB,MAAM,CAAC,CAAC,KAAK,GAAGA,kBAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;EACnG,MAAM,MAAM,CAAC,CAAC;EACd,KAAK;EACL,GAAG;AACH;EACA,EAAE,gCAAgC,CAAC,MAAM,EAAE,IAAI,EAAE;EACjD,IAAI,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnD;EACA,IAAI,IAAI,KAAK,EAAE,cAAc,CAAC;EAC9B,IAAI,IAAI,YAAY,GAAG,KAAK,CAAC;AAC7B;EACA,IAAI,MAAM,UAAU,GAAG,MAAM;EAC7B,MAAM,IAAI,UAAU,GAAG,KAAK,CAAC;EAC7B,MAAM,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;EACrE,MAAM,OAAO,CAAC,QAAQ,GAAGA,kBAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EAChE,MAAM,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;EAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,IAAI;EACtD,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE;EAC/B,UAAU,OAAO,EAAE,CAAC;EACpB,UAAU,OAAO;EACjB,SAAS;EACT,QAAQ,IAAI,cAAc,EAAE;EAC5B,UAAU,IAAI,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC;EAC7D,UAAU,cAAc,GAAG,SAAS,CAAC;EACrC,SAAS;EACT,QAAQ,IAAIA,kBAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAIA,kBAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;EACjE,UAAU,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI;EACtD,YAAY,IAAI,OAAO,KAAK,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;EAC/D,WAAW,EAAE,KAAK,IAAI;EACtB,YAAY,IAAI,OAAO,KAAK,cAAc,IAAI,MAAM,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;EAC7E,gBAAgB,CAAC,KAAK,CAAC,sBAAsB,EAAE,MAAM,KAAK,CAAC;EAC3D,WAAW,CAAC,CAAC;EACb,UAAU,cAAc,GAAG,OAAO,CAAC;EACnC,SAAS,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE;EACrC,UAAU,IAAI,QAAQ,YAAY,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,sBAAsB,EAAE;EAC1F,YAAY,MAAM,QAAQ,CAAC,KAAK,CAAC;EACjC,WAAW;EACX,SAAS;EACT,OAAO,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;EAC5B;EACA;EACA;EACA,MAAM,MAAM,OAAO,GAAGA,kBAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;EAC9E,MAAM,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;AAC/B;EACA,MAAM,SAAS,MAAM,CAAC,QAAQ,EAAE;EAChC,QAAQ,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;EAC5C,QAAQ,IAAI,QAAQ,YAAY,aAAa,EAAE;EAC/C,UAAU,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;EACpC,UAAU,OAAO,EAAE,CAAC;EACpB,UAAU,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;EACjD,SAAS;EACT,QAAQ,IAAI,QAAQ,KAAK,mBAAmB,IAAI,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,OAAO;EACtF;EACA,QAAQ,YAAY,GAAG,IAAI,CAAC;EAC5B,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;EACrC,QAAQ,YAAY,GAAG,KAAK,CAAC;EAC7B;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ,MAAM,CAAC,QAAQ,CAAC,CAAC;EACzB,QAAQ,aAAa,CAAC,UAAU,IAAI,CAAC,CAAC;EACtC,QAAQ,aAAa,CAAC,UAAU,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;EAClE,QAAQ,OAAO,IAAI,CAAC;EACpB,OAAO;AACP;EACA,MAAM,IAAI,UAAU,EAAE;EACtB,QAAQ,OAAO,EAAE,CAAC;EAClB,OAAO,MAAM;EACb,QAAQ,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;EAC9C,OAAO;AACP;EACA,MAAM,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;EAC9C,KAAK,CAAC;EACN,IAAI,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;AAC3C;EACA,IAAI,OAAO;EACX,MAAM,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI;EAC1C,MAAM,GAAG,GAAG;EACZ,QAAQ,IAAI,CAAC,YAAY,IAAI,KAAK,YAAY,YAAY,EAAE,MAAM,KAAK,CAAC,KAAK,CAAC;EAC9E,QAAQ,OAAO,KAAK,CAAC;EACrB,OAAO;EACP,MAAM,GAAG,CAAC,QAAQ,EAAE;EACpB,QAAQ,IAAI,YAAY,EAAE;EAC1B,UAAU,KAAK,GAAG,QAAQ,CAAC;EAC3B,SAAS,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE;EAC7B,UAAU,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;EACxC,SAAS,MAAM;EACf,UAAU,MAAM,IAAI,KAAK,CAAC,CAAC,oCAAoC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC9E,SAAS;EACT,OAAO;EACP,KAAK,CAAC;EACN,GAAG;AACH;EACA,EAAE,aAAa,CAAC,MAAM,EAAE;EACxB,IAAI,MAAM,CAAC,cAAc;EACzB,MAAM,MAAM,EAAE,YAAY,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;EACnF,GAAG;AACH;EACA,EAAE,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE;EAClC,IAAI,IAAIA,kBAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;EACnD,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;EACjC,GAAG;AACH;EACA,EAAE,aAAa,CAAC,IAAI,EAAE;EACtB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EACvC,IAAI,OAAO,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC;EACtC,GAAG;AACH;EACA,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;EACvB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;EACpE,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC;EAC1C,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;EAChD,MAAM,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;EACxE,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;AACH;EACA,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE;EACpC,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC;EAC7B,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC;EACjC,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAACA,kBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;EACpE,IAAI,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;EAC7B,MAAM,MAAM,KAAK;EACjB,QAAQ,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;EACjG,MAAM,IAAI,KAAK,EAAE,OAAO,IAAI,CAAC;EAC7B,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;AACH;EACA,EAAE,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE;EAC1C,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EACvC,IAAIA,kBAAC,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,IAAI;EAChD,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;EAC7C,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE;EAC/C,IAAI,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC;EAChC,IAAI,IAAI,GAAG,EAAE,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;EACxC,IAAI,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC;EAC3C,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC;EACvF,IAAI,MAAM,gBAAgB,GAAGA,kBAAC,CAAC,MAAM,CAAC;EACtC,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;EACvC,OAAO,MAAM,CAAC,GAAG;EACjB,QAAQ,6BAA6B,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC;EACjF,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;EACxB,OAAO;EACP,OAAO,MAAM,CAAC,GAAG,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,IAAIA,kBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;EACxF,OAAO,GAAG,CAAC,GAAG,IAAI;EAClB,QAAQ,IAAI,KAAK,CAAC;EAClB,QAAQ,IAAI;EACZ,UAAU,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;EAC9B;EACA,UAAU,IAAI,KAAK,YAAY,MAAM,EAAE,OAAO;EAC9C,SAAS,CAAC,MAAM;EAChB;EACA;EACA,UAAU,OAAO;EACjB,SAAS;EACT,QAAQ,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EACxE,QAAQ,MAAM,QAAQ;EACtB,UAAU,CAAC,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;EACzF,QAAQ,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;EAClD,OAAO,CAAC;EACR,OAAO,OAAO,EAAE;EAChB,OAAO,KAAK,EAAE,CAAC;AACf;EACA,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,gBAAgB,EAAE;EACvE,MAAM,IAAI,EAAEA,kBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,QAAQ,CAAC,CAAC,EAAE;EAC3E,QAAQ,IAAI,OAAO,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;EACtD,UAAU,MAAM,IAAI,KAAK;EACzB,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,yDAAyD,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EAC/F,SAAS;EACT,QAAQ,IAAI,MAAM,CAAC,MAAM,IAAI,UAAU,CAAC,UAAU,EAAE;EACpD,UAAU,IAAI;EACd,YAAY,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EAChC,YAAY,MAAM,IAAI,KAAK;EAC3B,cAAc,CAAC,oBAAoB,EAAE,IAAI,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EAC7F,WAAW,CAAC,OAAO,CAAC,EAAE;EACtB,YAAY,IAAI,CAAC,CAAC,SAAS,KAAK,oBAAoB,EAAE,MAAM,CAAC,CAAC;EAC9D,WAAW;EACX,SAAS;EACT,OAAO;EACP,MAAM,IAAIA,kBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;EAC7B,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;EACjE,YAAY,EAAEA,kBAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAIA,kBAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,OAAO,CAAC,EAAE;EACtF,UAAU,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EACpC,UAAU,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;EACrF,SAAS;EACT,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;EAC7E,OAAO;EACP,KAAK;AACL;EACA,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,gBAAgB,EAAE;EAC3D,MAAM,IAAI,QAAQ,IAAIA,kBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;EAC1D,QAAQ,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EACzD,QAAQ,IAAI,QAAQ,EAAE;EACtB,UAAU,MAAM,IAAI,KAAK;EACzB,YAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC;EAChE,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC;EACrD,SAAS;EACT,OAAO;EACP,KAAK;EACL,GAAG;EACH,CAAC;AACD;AACA;EACA,SAAS,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE;EAC3C;EACA,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO;EAC9B;EACA;EACA,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB;EACA,EAAE,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;EAClD,EAAE,qBAAqB,GAAG,KAAK,CAAC;EAChC,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;EACtC,EAAE,IAAI,KAAK,CAAC;EACZ,EAAE,IAAI;EACN,IAAI,IAAI;EACR,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAClC,KAAK,CAAC,OAAO,CAAC,EAAE;EAChB,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;EAClC,KAAK,SAAS;EACd,MAAM,aAAa,CAAC,WAAW,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;EACjE,MAAM,aAAa,CAAC,aAAa,IAAI,CAAC,CAAC;EACvC,KAAK;EACL,IAAI,IAAI,qBAAqB,EAAE,KAAK,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;EAChE,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG,SAAS;EACZ,IAAI,qBAAqB,GAAG,iBAAiB,CAAC;EAC9C,GAAG;EACH;EACA,CAAC;AACD;EACA,SAAS,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE;EAC9C,EAAE,IAAI,CAAC,WAAW,IAAI,WAAW,YAAY,MAAM,EAAE,OAAO,WAAW,CAAC;EACxE,EAAE,IAAIA,kBAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;EACjC,IAAI,MAAM,EAAE,GAAG,WAAW;EAC1B;EACA,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;EAC3B,MAAM,OAAO,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EAC7D;EACA,KAAK,CAAC;EACN,IAAI,OAAO,EAAE,CAAC;EACd,GAAG;EACH,EAAE,OAAOA,kBAAC,CAAC,SAAS,CAAC,WAAW,EAAE,UAAU,IAAI,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;EACrF,CAAC;AACD;EACA,SAAS,MAAM,CAAC,MAAM,EAAE;EACxB,EAAE,IAAIA,kBAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAACA,kBAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;EAC1F,IAAI,OAAO,MAAM,CAAC;EAClB,GAAG;EACH,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;EACjC,EAAE,IAAIA,kBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAOA,kBAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;EACtE,EAAE,OAAOA,kBAAC,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;EACrD;;ECvrBA,MAAM,YAAY,CAAC;EACnB,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE;EAC9B,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;EAC5B,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACzB,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;EACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACxD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;EAC9C,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EACjD,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EAC5B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,GAAG;AACH;EACA,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE;EAClC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;EACnB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;EACpD,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;EACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;EACrD,MAAM,IAAI,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACjD,KAAK;EACL,GAAG;AACH;EACA,EAAE,MAAM,CAAC,SAAS,EAAE;EACpB,IAAI,MAAM,CAAC,GAAGA,kBAAC,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;EACxD,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC7C,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;EAClC,GAAG;AACH;EACA,EAAE,OAAO,GAAG;EACZ,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO;EAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;EAC5B,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO;EACzE,MAAM,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;EACnE,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,GAAG;AACH;EACA,EAAE,OAAO,GAAG;EACZ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG;EAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe;EAC/F,MAAM,IAAI,CAAC,CAAC;EACZ,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EAC5B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;EAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;EAClE,KAAK;EACL,GAAG;AACH;EACA,EAAE,eAAe,CAAC,IAAI,EAAE;EACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM;EAC/C;EACA;EACA,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO;EAC9D,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;EACjE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;EACvB,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EAC1B,QAAQ,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;EAChD,UAAU,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;EAClE,SAAS;EACT,OAAO;EACP,MAAM,IAAI,WAAW,EAAE;EACvB,QAAQ,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;EAChD,UAAU,IAAI,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;EACxE,SAAS;EACT,OAAO;EACP,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,2BAA2B,CAAC,IAAI,EAAE;EACpC,IAAI,IAAI,WAAW,CAAC;EACpB,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;EACxC,MAAM,WAAW,GAAGA,kBAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACvC,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;EACzB,MAAM,IAAIA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE;EAC9C,QAAQ,WAAW,GAAG,IAAI,CAAC;EAC3B,OAAO,MAAM;EACb,QAAQ,KAAK,MAAM,GAAG,IAAIA,kBAAC,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;EACjE,UAAU,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;EACpE,SAAS;EACT,QAAQ,KAAK,MAAM,GAAG,IAAIA,kBAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE;EACjE;EACA;EACA,UAAU,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;EACtE,SAAS;EACT,QAAQ,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;EACjC,OAAO;EACP;EACA;EACA,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;EACvB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;EACrC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;EACnC,QAAQ,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;EACtC,UAAU,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC;EAC5C,UAAU,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;EAChC,UAAU,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;EACvC,UAAU,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;EAC7C,SAAS;EACT;EACA,QAAQ,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;EAC9B,QAAQ,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;EAC9B,QAAQ,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;EAChC,OAAO;EACP,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;EACtE,MAAM,MAAM,MAAM,GAAGA,kBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;EACtD,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;EACtB,QAAQ,IAAI,CAAC,MAAM,EAAE;EACrB,UAAU,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EACzE,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACpC,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;EAC5B,UAAU,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;EACnC,SAAS;EACT,OAAO,MAAM,IAAI,MAAM,EAAE;EACzB,QAAQ,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EACzE,QAAQA,kBAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;EACrC,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;EAC1B,QAAQ,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;EACjC,OAAO;EACP;EACA;EACA,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;EACzC,KAAK;EACL,IAAI,OAAO,WAAW,CAAC;EACvB,GAAG;AACH;EACA,EAAE,YAAY,CAAC,KAAK,EAAE;EACtB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO;EAC5D,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EAC5B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;EAC9F,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;EACpB,IAAI,OAAO,CAAC,GAAG,CAACA,kBAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,IAAI;EACnD,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;EAC/D,MAAM,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI;EACnF,QAAQ,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;EAC1C,QAAQ,OAAO,KAAK,CAAC;EACrB,OAAO,CAAC,CAAC;EACT,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI;EACxB,MAAM,IAAIA,kBAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;EAC3B,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;EACnD,OAAO,MAAM;EACb,QAAQ,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;EACtF,OAAO;EACP,KAAK,CAAC,CAAC;EACP,GAAG;EACH,CAAC;AACD;AACA;EACA,MAAM,IAAI,CAAC;EACX,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;EACrC,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;EAC5B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;EAClD,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;EAC7C,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACzB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;EACvB,GAAG;AACH;EACA,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC;EACzC,GAAG;AACH;EACA,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;EAClC,GAAG;AACH;EACA,EAAE,MAAM,CAAC,IAAI,EAAE;EACf,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;EAC7B,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO;EACjC,MAAMA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EACpF,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;EAC9B,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI;EACxF,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;EACtB,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC5B,KAAK,MAAM;EACX,MAAMA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;EAC3D,KAAK;EACL,GAAG;AACH;EACA,EAAE,QAAQ,CAAC,IAAI,EAAE;EACjB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;EACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;EAC/F,MAAM,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC7B,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,IAAI;EACtC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,KAAK,CAAC;EACzC,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;EACxB,UAAU,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EAC7B,SAAS;EACT,OAAO,CAAC,CAAC;EACT,KAAK,MAAM;EACX,MAAMA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;EAC7D,KAAK;EACL,GAAG;AACH;EACA,EAAE,eAAe,CAAC,IAAI,EAAE;EACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM;EAC/C,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO;EAC9E,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;EACzC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;EAClD,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EAC1B,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;EAC5B,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,IAAI;EACxC,UAAU,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;EACpF,SAAS,CAAC,CAAC;EACX,OAAO;EACP,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,YAAY,CAAC,KAAK,EAAE;EACtB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO;EAC/C,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,IAAI;EACpC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,KAAK,CAAC;EACvC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;EACtB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EAC3B,OAAO;EACP,MAAM,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;EACjF,KAAK,CAAC,CAAC;EACP;EACA;EACA;EACA;EACA;EACA,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACxC,IAAI,OAAO,OAAO,CAAC,GAAG,CAACA,kBAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI;EACpD,MAAM,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI;EACnE,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;EAC1B,QAAQ,OAAO,KAAK,CAAC;EACrB,OAAO,CAAC,CAAC;EACT,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI;EACxB,MAAM,IAAIA,kBAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;EAC3B,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;EACtC,OAAO,MAAM;EACb,QAAQ,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;EAChE;EACA,OAAO;EACP,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,kBAAkB,CAAC,QAAQ,EAAE;EAC/B,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,OAAO;EACzC,IAAIA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;EAC1E,GAAG;AACH;EACA,EAAE,6BAA6B,CAAC,KAAK,EAAE;EACvC,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE,CAAC;EAC3B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;EACnC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;EACtB,MAAMA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACvF,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,CAAC;AACD;AACA;EACe,MAAM,OAAO,CAAC;EAC7B,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE;EACrE,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;EACjC,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;EAC1B,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;EAClC,IAAI,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;EACxC,IAAI,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC;EACxC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;EAC/E,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;EAChC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAIC,oBAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;EACtE;EACA;EACA,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;EACvC,IAAI,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC1C,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACxB;EACA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EAC/C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;EACtC,GAAG;AACH;EACA,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;EAChC,GAAG;AACH;EACA,EAAE,IAAI,cAAc,GAAG;EACvB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;EACzC,GAAG;AACH;EACA,EAAE,OAAO,GAAG;EACZ,IAAID,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;EAC9E,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;EAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;EACzB,GAAG;AACH;EACA,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE;EAC1B,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;EAClE,GAAG;AACH;EACA,EAAE,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE;EACvC,IAAI,IAAI,IAAI,CAAC;EACb,IAAI,IAAI,UAAU,GAAG,CAAC,SAAS,CAAC;EAChC,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC;EACtB,IAAI,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;EACpC,MAAM,IAAI,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;EACjF,MAAM,IAAI,CAAC,KAAK,EAAE;EAClB,QAAQ,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EACzF,QAAQC,oBAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAC/C,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;EAC5C,OAAO;EACP,MAAM,UAAU,GAAG,UAAU,IAAI,KAAK,CAAC,SAAS,CAAC;EACjD,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC;EACnC,MAAM,IAAI,GAAG,KAAK,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,SAAS,EAAE;EACnB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EACtC,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;EACxB,KAAK;EACL,IAAI,IAAI,UAAU,EAAE;EACpB,MAAM,IAAI,SAAS,IAAI,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;EACpE,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;EACpB,KAAK;EACL,GAAG;AACH;EACA,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;EAC5B,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;EACpE,GAAG;AACH;EACA,EAAE,iBAAiB,CAAC,QAAQ,EAAE,SAAS,EAAE;EACzC,IAAI,MAAM,SAAS,GAAG,EAAE,CAAC;EACzB,IAAI,IAAI,IAAI,CAAC;EACb,IAAI,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;EACpC,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;EAC5E,MAAM,IAAI,CAAC,IAAI,EAAE,MAAM;EACvB,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC3B,KAAK;EACL,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE;EAC9D,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,kBAAkB,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;EACxE,KAAK;EACL,IAAI,IAAI,SAAS,EAAE;EACnB,MAAMD,kBAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;EACzC,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;EACxB,KAAK;EACL,IAAI,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;EAClC;EACA;EACA;EACA;EACA;EACA,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;EACpB,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;EAC1C,KAAK;EACL,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;EACtB,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACrD,QAAQ,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EAC5B,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,CAACA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM;EACnF,QAAQC,oBAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3D,QAAQ,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;EAC/B,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC1C,OAAO;EACP,MAAM,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;EAC7C,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;EACnE,KAAK;EACL,GAAG;AACH;EACA,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE;EAC5C,IAAI,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;EAC7D,IAAI,IAAI,CAAC,YAAY,EAAE;EACvB,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;EACnD,MAAMA,oBAAG,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,CAAC;EACnE,KAAK;EACL,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;EACjD,GAAG;AACH;EACA,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE;EAChC,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;EAC/D,IAAI,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;EACzD,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;EAC7B,MAAMA,oBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;EACxD,KAAK;EACL,GAAG;AACH;EACA;EACA,EAAE,cAAc,CAAC,IAAI,EAAE;EACvB,IAAI,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EAC3C,IAAI,IAAI,IAAI,CAAC;EACb,IAAI,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;EACpC,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;EAC5E,MAAM,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK,CAAC;EAC9B,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC;EACnC,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;AACH;EACA,EAAE,0BAA0B,CAAC,IAAI,EAAE;EACnC,IAAI,IAAI,IAAI,CAAC;EACb,IAAI,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;EACjD,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;EAC5E,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;EAC5D,MAAM,IAAI,CAAC,IAAI,EAAE,MAAM;EACvB,KAAK;EACL,IAAI,OAAO,IAAI,IAAI,IAAI,CAAC,6BAA6B,EAAE,CAAC;EACxD,GAAG;AACH;EACA,EAAE,cAAc,CAAC,IAAI,EAAE;EACvB,IAAI,IAAI,IAAI,EAAE,YAAY,CAAC;EAC3B,IAAI,SAAS,mBAAmB,CAAC,KAAK,EAAE;EACxC,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACpC,MAAM,OAAO,EAAE,CAAC;EAChB,KAAK;EACL,IAAI,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;EAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,mBAAmB,CAAC,IAAI,GAAG,CAAC;EAClE,KAAK;EACL,IAAI,IAAI,YAAY,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC;EACzC,IAAI,OAAO,IAAI,EAAE;EACjB,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC;EAClC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;EACzB,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;AACH;EACA,EAAE,YAAY,CAAC,KAAK,EAAE;EACtB,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;EAC/D,IAAI,OAAO,YAAY,IAAI,YAAY,CAAC,KAAK,CAAC;EAC9C,GAAG;AACH;EACA,EAAE,sBAAsB,CAAC,QAAQ,EAAE;EACnC,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EAClD,IAAI,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACvD,GAAG;AACH;EACA,EAAE,wBAAwB,GAAG;EAC7B,IAAI,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,yBAAyB,EAAE,QAAQ,EAAE,CAAC;EACtE;EACA,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;EACvD,GAAG;AACH;EACA,EAAE,iBAAiB,CAAC,KAAK,EAAE;EAC3B,IAAI,IAAI,KAAK,EAAE;EACf,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB;EAC7C,QAAQD,kBAAC,CAAC,QAAQ,CAACA,kBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC,CAAC;EACrE,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,GAAG,IAAI,CAAC,wBAAwB,CAAC;EAC9E,KAAK;EACL,GAAG;EACH;;ECtbA,MAAM,WAAW,CAAC;EAClB,EAAE,WAAW,CAAC,GAAG,EAAE;EACnB,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;EACpB,IAAI,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;EAC9B,IAAI,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;EAC7B,GAAG;AACH;EACA,EAAE,IAAI,YAAY,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAC9C,EAAE,IAAI,OAAO,GAAG,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;EACvC,EAAE,IAAI,MAAM,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC;EACA,EAAE,WAAW,CAAC,KAAK,EAAE;EACrB,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;EAC7F,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;EAC1B,GAAG;AACH;EACA,EAAE,KAAK,GAAG;EACV,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;EAC9B,GAAG;AACH;EACA,EAAE,MAAM,GAAG;EACX,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;EAC/B,GAAG;AACH;EACA,EAAE,GAAG,CAAC,KAAK,EAAE;EACb,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;EAC5E,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;EAC/B,GAAG;AACH;EACA,EAAE,MAAM,CAAC,MAAM,EAAE;EACjB,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;EAC7E,IAAI,IAAIA,kBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;EAChD,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;EAC/B,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;EAC1B,GAAG;EACH,CAAC;AACD;AACA;EACe,MAAM,IAAI,CAAC;EAC1B,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE;EAClD,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;EACjC,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;EAC1B,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;EAClC,IAAI,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;EAC9C,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;EAC1B,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;EAC3B,IAAI,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;EACrC,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC9B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAIC,oBAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;EACpD,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;EAChF,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO;EAC/B,MAAM,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EAC/F,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACtB;EACA;EACA;EACA,GAAG;AACH;EACA,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;EAChC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;EACtD,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EAC7C,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACxD,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;EACjC,GAAG;AACH;EACA,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC;EACvB,GAAG;AACH;EACA,EAAE,IAAI,CAAC,OAAO,EAAE;EAChB,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;EAC3B,MAAM,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;EACjF,KAAK;EACL,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;EAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACxD,IAAI,MAAM,cAAc,GAAG,EAAE,CAAC;EAC9B,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;EACvE,IAAI,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;EAC5E,GAAG;AACH;EACA,EAAE,OAAO,GAAG;EACZ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;EAC5B,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;EAC/C,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;EACzB,GAAG;AACH;EACA,EAAE,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE;EAChC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;EAC3B,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;EAC5E,IAAI,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;EAC5F,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM;EACjD,MAAM,IAAI,SAAS,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;EACzD,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;EAClD,QAAQ,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;EAClC,OAAO;EACP,KAAK,CAAC,CAAC,KAAK,CAACD,kBAAC,CAAC,IAAI,CAAC,CAAC;EACrB,IAAI,OAAO,SAAS,CAAC,WAAW,CAAC;EACjC,GAAG;AACH;EACA,EAAE,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;EACvD,IAAI,IAAI,SAAS,CAAC,aAAa,EAAE,OAAO;EACxC,IAAI,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACnC,IAAI,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;EAC3B,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE;EAC5B,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;EAClD,MAAM,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;EACjC,KAAK;EACL,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,KAAK,CAACA,kBAAC,CAAC,IAAI,CAAC,CAAC;EACzD,GAAG;AACH;EACA,EAAE,gBAAgB,CAAC,GAAG,EAAE;EACxB,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;EAC3B,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAClD,GAAG;AACH;EACA,EAAE,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE;EAC5C,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;EAC7B,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;EAC9E,IAAI,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;EAC/E,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM;EACjD,MAAM,IAAI,SAAS,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;EACzD,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;EAChE,QAAQ,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;EAClC,OAAO;EACP,KAAK,CAAC,CAAC,KAAK,CAACA,kBAAC,CAAC,IAAI,CAAC,CAAC;EACrB,IAAI,OAAO,SAAS,CAAC,WAAW,CAAC;EACjC,GAAG;AACH;EACA,EAAE,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;EAC5C,IAAI,IAAI,SAAS,CAAC,aAAa,EAAE,OAAO;EACxC,IAAI,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACnC,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE;EAC5B,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;EAClD,MAAM,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;EACjC,KAAK;EACL,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,KAAK,CAACA,kBAAC,CAAC,IAAI,CAAC,CAAC;EACzD,GAAG;AACH;EACA,EAAE,YAAY,CAAC,KAAK,EAAE;EACtB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;EAC7C,GAAG;AACH;EACA,EAAE,YAAY,CAAC,MAAM,EAAE;EACvB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;EACxC,MAAM,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;EACrE,KAAK;EACL,GAAG;AACH;EACA,EAAE,yBAAyB,CAAC,KAAK,EAAE;EACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;EAC3C,GAAG;AACH;EACA,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;EAC9B,IAAI,MAAM,GAAGA,kBAAC,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;EAC7D,IAAI,MAAM,SAAS,GAAGA,kBAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACrC,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;EAC7C,IAAI,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,UAAU,EAAE;EACtD,MAAM,0CAA0C,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;EACnE,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,KAAK,UAAU,CAAC,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;EACvF,IAAI,MAAM,UAAU,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;EACvD,IAAI,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;EACxC,IAAI,IAAI,UAAU,KAAK,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;EAC9F,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;EAC/C,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;EACrC,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;EAC1C,IAAI,MAAM,GAAG,GAAG,SAAS,KAAK,CAAC,CAAC;EAChC,IAAI,MAAM,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;EAC9C,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,GAAG,KAAK,GAAG,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;EACzF,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;EACtF,MAAM,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI;EAChC,QAAQ,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC1D,QAAQ,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EAClF,OAAO,CAAC,CAAC;EACT,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,MAAM,CAAC,GAAG,EAAE,cAAc,EAAE;EAC9B,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC;EACtC,IAAI,MAAM,aAAa,GAAG,EAAE,CAAC;EAC7B,IAAI,cAAc,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;AACzD;EACA,IAAI,MAAM,kBAAkB,GAAG,OAAO,IAAI;EAC1C,MAAM,IAAI,KAAK,EAAE,IAAI,EAAE,EAAE;EACzB,QAAQ,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;EAClF,QAAQ,IAAI;EACZ,UAAUA,kBAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;EAC3D,SAAS,CAAC,MAAM;EAChB;EACA,SAAS;EACT,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EACrC,OAAO;EACP,MAAM,OAAO,GAAG,OAAO,IAAI,SAAS,CAAC;EACrC,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACjE,MAAM,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;EACvC,MAAM,IAAI,QAAQ,CAAC;EACnB;EACA;EACA,MAAM,OAAOC,oBAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM;EACvC,QAAQ,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;EAC7D,QAAQ,IAAID,kBAAC,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,cAAc,IAAI,CAAC,CAAC;EAClE,QAAQ,QAAQ,GAAG,WAAW,CAAC;EAC/B,QAAQ,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;EACnC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM;EACpB,QAAQ,IAAI,CAACA,kBAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE;EACpE,UAAU,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAC;EAC/C,SAAS;EACT,QAAQ,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,EAAE,OAAO,GAAG,CAAC;EAChD,QAAQ,MAAM,MAAM,GAAGA,kBAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;EAC3E,QAAQ,QAAQ,GAAG,CAAC,OAAO;EAC3B,UAAU,KAAK,QAAQ;EACvB,YAAY,MAAM;EAClB,UAAU,KAAK,KAAK;EACpB,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;EAC1F,YAAY,MAAM;EAClB,UAAU,KAAK,QAAQ;EACvB,YAAY,0CAA0C,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;EACzE,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;EACxE,YAAY,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;EAC9C,YAAY,MAAM;EAClB,UAAU;EACV,YAAY,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC;EACvF,SAAS;EACT,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EACjD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW;EACvC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY;EACnE,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI;EACzB,UAAUA,kBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;EACrF,UAAU,OAAO,MAAM,CAAC,SAAS,GAAG,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;EACtE,SAAS,EAAE,CAAC,IAAI;EAChB,UAAU,IAAI,CAAC,CAAC,gBAAgB,KAAK,GAAG,CAAC,OAAO,KAAK,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,EAAE;EACzF,YAAY,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACtF,WAAW;EACX,UAAU,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACnC,SAAS,CAAC,CAAC;EACX,OAAO,CAAC,CAAC;EACT,KAAK,CAAC;AACN;EACA,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM;EACvC,MAAM,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC;EAC7F,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;EACvB;EACA;EACA;EACA;EACA,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;EAC9B,IAAI,MAAM,KAAK,GAAGA,kBAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,IAAI;EAClD,MAAM,IAAI,IAAI,GAAG,QAAQ,CAAC;EAC1B,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EAC1C,MAAM,OAAOA,kBAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;EACpE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;EACf,IAAI,OAAO,OAAO,CAAC,GAAG,CAACA,kBAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI;EAC5C,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;EAC3C,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI;EAClE,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;EACtC,OAAO,CAAC,CAAC;EACT,KAAK,CAAC,CAAC,CAAC;EACR,GAAG;AACH;EACA,EAAE,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE;EACrC;EACA;EACA,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;EACxB,IAAI,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;EAChD,IAAI,MAAM,cAAc,GAAG,EAAE,CAAC;EAC9B,IAAI,IAAI,QAAQ,GAAG,CAAC,CAAC;EACrB,IAAIA,kBAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK;EACvC,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;EACvD,MAAM,IAAI,KAAK,EAAE,QAAQ,EAAE,CAAC;EAC5B,MAAM,MAAM,sBAAsB;EAClC,QAAQ,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;EAChF,MAAM,IAAIA,kBAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,OAAO;EACpD,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;EAC1D,MAAM,KAAK,MAAM,cAAc,IAAI,sBAAsB,EAAE;EAC3D,QAAQ,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;EACrD,QAAQ,IAAI,QAAQ,GAAG,KAAK,CAAC;EAC7B,QAAQ,IAAI,OAAO,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;EAC9D,UAAU,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE;EACpD,YAAY,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;EAC/C,YAAY,IAAI,QAAQ,KAAK,SAAS,EAAE,MAAM;EAC9C,WAAW;EACX,SAAS;EACT,QAAQ,IAAIA,kBAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;EAC/B,UAAU,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;EACtC,SAAS,MAAM;EACf,UAAU,MAAM,GAAG,GAAGA,kBAAC,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;EACxD,UAAU,IAAI,CAAC,WAAW;EAC1B,YAAY,cAAc,EAAE,GAAG,EAAE,QAAQ;EACzC,YAAY,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;EAClG,YAAY,cAAc;EAC1B,WAAW,CAAC;EACZ,SAAS;EACT,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;EACvF,OAAO;EACP,KAAK,CAAC,CAAC;EACP,IAAI,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;EAC5E,IAAI,IAAI,QAAQ,IAAI,QAAQ,GAAGA,kBAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;EAC/C,MAAM,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;EACxE,KAAK;EACL,IAAI,OAAO,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC;EAClC,GAAG;AACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE;EAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,KAAK,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;EACxD,IAAI,MAAM,UAAU,GAAG;EACvB;EACA,MAAM,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC;EACpE,MAAM,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;EAC1B,KAAK,CAAC;EACN,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/D;EACA,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;EAChE,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;EAC5D,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;EACrD,IAAI,OAAO,MAAM,CAAC;EAClB,GAAG;AACH;EACA,EAAE,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE;EAC9C,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;EACnC,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;EAChD,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO;AAC1B;EACA,IAAI,IAAI,uBAAuB,GAAG,KAAK,CAAC;EACxC,IAAI,KAAK,MAAM,GAAG,IAAIA,kBAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;EAC1C,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EACtE,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,SAAS;EACvE,MAAMC,oBAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EAC3C,MAAM,uBAAuB,GAAG,IAAI,CAAC;EACrC,KAAK;EACL,IAAI,IAAI,uBAAuB,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;EACvD,GAAG;AACH;EACA;EACA;EACA,EAAE,UAAU,CAAC,MAAM,EAAE;EACrB,IAAI,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE;EAC3D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EACvE,MAAM,IAAI,UAAU,CAAC,YAAY,IAAI,UAAU,CAAC,UAAU,EAAE;EAC5D,QAAQ,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;EACtC,QAAQ,IAAID,kBAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC;EACrE,QAAQ,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;EACxD,OAAO;EACP,KAAK;EACL,GAAG;AACH;EACA;EACA;EACA,EAAE,qBAAqB,CAAC,MAAM,EAAE;EAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;EACvD,GAAG;AACH;EACA,EAAE,cAAc,CAAC,MAAM,EAAE;EACzB,IAAI,IAAI,EAAE,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO;EAChE,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;EAC7D,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EACxC;EACA;EACA;EACA;EACA;EACA,IAAI,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;EAChE,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACtC,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;EACxE,KAAK;EACL,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;EACzD,GAAG;AACH;EACA,EAAE,kBAAkB,CAAC,IAAI,EAAE;EAC3B,IAAIA,kBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,IAAI,KAAK;EACxD,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;EAC1E,KAAK,CAAC,CAAC;EACP,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;EACrB,MAAM,MAAM,cAAc,GAAG,EAAE,CAAC;EAChC,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;EAC9E,MAAM,IAAI,MAAM,EAAE;EAClB,QAAQ,IAAI,CAAC,WAAW;EACxB,UAAU,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;EACvF,OAAO;EACP,MAAM,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;EAC9E,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACzC,KAAK;EACL,GAAG;AACH;EACA,EAAE,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;EACxD,IAAI,IAAI,MAAM,CAAC;EACf,IAAI,MAAM,QAAQ,GAAGA,kBAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;EACxD,IAAI,IAAI,YAAY,GAAG,GAAG,CAAC;EAC3B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC9C,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EAClC,MAAM,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;EACvC,MAAM,IAAI,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;EAC1D,MAAM,IAAI,OAAO,EAAE,YAAY,IAAI,CAAC,YAAY,KAAK,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,OAAO,CAAC;EAC/E,MAAM,IAAI,KAAK,EAAE;EACjB,QAAQ,IAAI,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO;EACnE,OAAO,MAAM;EACb,QAAQ,KAAK,GAAG,IAAI,CAAC,WAAW;EAChC,UAAU,YAAY,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;EACpF,QAAQ,IAAI,CAAC,KAAK,EAAE,OAAO;EAC3B,OAAO;EACP,MAAM,MAAM,GAAG,KAAK,CAAC;EACrB,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,GAAG;AACH;EACA,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE;EACtF,IAAI,IAAI,WAAW,IAAIA,kBAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;EACvC,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,mCAAmC,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9E,KAAK;EACL,IAAI,IAAI,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,OAAO;EAC9D,IAAI,IAAIA,kBAAC,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC;EAC9E,IAAI,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnC,IAAI,IAAI,CAACA,kBAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,GAAGA,kBAAC,CAAC,aAAa,CAAC,KAAK,CAAC,GAAGA,kBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;EACpF,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;EAClC,MAAM,IAAI,CAAC,KAAK,IAAIA,kBAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;EACpC,QAAQ,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EAClD,OAAO,MAAM;EACb,QAAQ,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;EACtD,OAAO;EACP,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,aAAa,GAAG,KAAK,CAAC;EAC9B,IAAI,IAAI,CAACA,kBAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;EAC7B;EACA;EACA;EACA,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;EACnD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;EAChD,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;EACrE,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;EAC9B,MAAM,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EAClC,MAAM,aAAa,GAAG,IAAI,CAAC;EAC3B,KAAK;EACL,IAAI,IAAI,QAAQ,EAAE;EAClB,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,GAAG,EAAEA,kBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;EAChG,KAAK,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE;EACnC,MAAM,OAAO,MAAM,CAAC,WAAW,CAAC;EAChC,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,IAAI,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;EACnF,IAAIA,kBAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK;EAChD,MAAM,IAAI,CAAC,WAAW;EACtB,QAAQ,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW;EAChG,QAAQ,QAAQ,EAAE,KAAK,EAAE,cAAc;EACvC,OAAO,CAAC;EACR,KAAK,CAAC,CAAC;EACP,IAAI,IAAI,aAAa,EAAE;EACvB,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;EACnE,KAAK,MAAM;EACX,MAAMA,kBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK;EAClD,QAAQ,MAAM,eAAe,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;EACpD,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE;EACpD,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;EAC1E,SAAS;EACT,OAAO,CAAC,CAAC;EACT,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,GAAG;AACH;EACA,EAAE,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE;EAC3D,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,IAAI;EACzD,MAAM,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO;EACpE,MAAM,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;EAChD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;EAC7C,QAAQ,IAAI,CAAC,WAAW;EACxB,UAAU,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;EAC/F,UAAU,cAAc,CAAC,CAAC;EAC1B,OAAO;EACP,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,MAAM,CAAC,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE;EACnD,IAAI,qBAAqB,GAAG,qBAAqB,IAAI,EAAE,CAAC;EACxD,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EACxC,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,OAAO;EACrC,IAAI,IAAI,WAAW,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,qBAAqB,CAAC,EAAE,OAAO;EACvF,IAAI,IAAI,EAAEA,kBAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;EACjF,QAAQA,kBAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;EAC5B;EACA;EACA,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;EAC5D,KAAK;EACL,GAAG;AACH;EACA,EAAE,qBAAqB,CAAC,IAAI,EAAE,qBAAqB,EAAE;EACrD,IAAI,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,YAAY,EAAE;EACpD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,SAAS;EACtE,MAAM,IAAI,IAAI,KAAK,cAAc,IAAI,cAAc,KAAK,GAAG;EAC3D,UAAUA,kBAAC,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC;EAChE,MAAM,IAAI,IAAI,KAAK,GAAG,IAAIA,kBAAC,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,GAAG,GAAG,CAAC,EAAE;EACpE,QAAQ,MAAM,QAAQ,GAAG,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;EACzD,QAAQ,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAClD,UAAU,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACzD,UAAU,MAAM,MAAM,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC;EAC/C,UAAU,IAAI,qBAAqB,CAAC,OAAO,CAAC,IAAI,qBAAqB,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,MAAM;EACjG,UAAU,qBAAqB,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;EAClD,UAAU,IAAI,OAAO,KAAK,IAAI,EAAE,MAAM;EACtC,SAAS;EACT,OAAO;EACP,KAAK;EACL,GAAG;AACH;EACA,EAAE,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE;EAC5C;EACA;EACA,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC;EACxB,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC;EAC9B;EACA;EACA;EACA;EACA,IAAI,IAAI,SAAS,CAAC;EAClB,IAAI,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,IAAI;EACrE,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAC9C,MAAM,OAAO,EAAE,CAAC;EAChB,KAAK,CAAC,CAAC;EACP,IAAI,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE;EACzD,MAAM,MAAM,MAAM;EAClB,QAAQ,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,KAAK,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;EAChG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC,EAAE;EAC9E,QAAQ,MAAM,YAAY,GAAG,OAAO,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;EAC7D,QAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE;EAC5D,UAAU,OAAO,GAAG,IAAI,CAAC;EACzB,UAAU,IAAI,CAAC,uBAAuB;EACtC,YAAY,MAAM,EAAE,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,KAAK,YAAY,IAAI,SAAS,CAAC,CAAC;EACnF,SAAS;EACT,OAAO;EACP,MAAM,MAAM,GAAG,MAAM,CAAC;EACtB,KAAK;EACL,IAAI,OAAO,OAAO,CAAC;EACnB,GAAG;AACH;EACA,EAAE,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE;EAC3C,IAAI,IAAIA,kBAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,CAAC;EACtC,IAAI,IAAI,YAAY,IAAIA,kBAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,CAAC;EACvE,IAAI,IAAI,CAACA,kBAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC;EAC3D,IAAI,OAAOA,kBAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;EACvF,GAAG;AACH;EACA,EAAE,iBAAiB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EACnD,IAAI,IAAI,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC;EACzD,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE,OAAO,MAAM,CAAC,WAAW,CAAC;EACtD,IAAI,IAAI,sBAAsB,GAAG,KAAK,CAAC;EACvC,IAAIA,kBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK;EAC5C,MAAM,IAAI,YAAY,GAAG,IAAI,CAAC;EAC9B,MAAM,IAAI,WAAW,CAAC;EACtB,MAAM,IAAI,qBAAqB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;EACzE,QAAQ,YAAY,GAAG,KAAK,CAAC;EAC7B,QAAQ,WAAW,GAAG,IAAI,CAAC;EAC3B,OAAO,MAAM,IAAI,CAACA,kBAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE;EAClD,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACrE,QAAQ,IAAI,WAAW,IAAIA,kBAAC,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;EACtE,UAAU,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;EAC7E,UAAU,YAAY,GAAG,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC;EACtD,SAAS;EACT,OAAO;EACP,MAAM,IAAI,YAAY,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EAClE,MAAM,sBAAsB,GAAG,sBAAsB,IAAI,WAAW,CAAC;EACrE,KAAK,CAAC,CAAC;EACP,IAAI,OAAO,sBAAsB,CAAC;EAClC,GAAG;AACH;EACA,EAAE,SAAS,CAAC,IAAI,EAAE;EAClB,IAAI,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;EACrC,IAAI,IAAI,MAAM,CAAC;EACf,IAAI,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;EACpC,MAAM,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;EAC3D,MAAM,IAAI,MAAM,KAAK,SAAS,EAAE,OAAO;EACvC,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,GAAG;AACH;EACA,EAAE,8BAA8B,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE;EACpD,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EAClE,IAAI,IAAI,UAAU,EAAE;EACpB,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;EAClC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;EAChC,QAAQ,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;EAChD,UAAU,MAAM,IAAI,KAAK;EACzB,YAAY,CAAC,qEAAqE,CAAC;EACnF,YAAY,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EACvC,SAAS;EACT,OAAO;EACP,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;EAC9C,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EACvE,OAAO;EACP,KAAK,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE;EAC5B,MAAM,MAAM,IAAI,KAAK;EACrB,QAAQ,CAAC,wDAAwD,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EAC3F,KAAK;EACL,IAAI,OAAO,UAAU,CAAC;EACtB,GAAG;AACH;EACA,EAAE,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;EACnD,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;EACxE,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;EAC5E,IAAI,IAAI,UAAU,EAAE;EACpB,MAAM,IAAI,MAAM,EAAE;EAClB;EACA;EACA;EACA,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;EACzC,UAAU,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK;EACzF,SAAS,CAAC,CAAC;EACX,OAAO;EACP,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,OAAO;EACtC,MAAM,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;EAC/C,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,MAAM,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;EAChD,KAAK,MAAM;EACX,MAAMC,oBAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;EAChC,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EAC9D,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;EACvC,QAAQ,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC;EAC7F,QAAQ,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,MAAM;EAC/C,OAAO,CAAC,CAAC;EACT,KAAK;EACL,GAAG;AACH;EACA,EAAE,0BAA0B,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE;EACxD,IAAI,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;EAC5C,MAAM,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9E,MAAM,CAAC,CAAC,SAAS,GAAG,oBAAoB,CAAC;EACzC,MAAM,MAAM,CAAC,CAAC;EACd,KAAK;EACL,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;EACxC,GAAG;AACH;EACA,EAAE,uBAAuB,CAAC,MAAM,EAAE,GAAG,EAAE;EACvC,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;EACxE;EACA,IAAI,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;EAC3D,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EACnC,IAAIA,oBAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EAC1B,GAAG;AACH;EACA,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;EAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EAC/C,GAAG;EACH,CAAC;AACD;AACA;EACO,SAAS,0CAA0C,CAAC,QAAQ,EAAE,MAAM,EAAE;EAC7E;EACA;EACA,EAAED,kBAAC,CAAC,OAAO,CAACA,kBAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI;EACpC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EAChC,MAAM,IAAI,EAAE,IAAI,KAAK,QAAQ,IAAI,QAAQ,KAAK,GAAG;EACjD,YAAYA,kBAAC,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;EACtF,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,+CAA+C,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;EAClF,OAAO;EACP,KAAK,MAAM;EACX,MAAM,IAAIA,kBAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;EACjC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,gEAAgE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;EACnG,OAAO;EACP,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;EAC/D,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE;EAC/C,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;EAC7E,OAAO;EACP,MAAM,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;EAC1C,MAAM,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;EAC1B,KAAK;EACL,GAAG,CAAC,CAAC;EACL;EACA,EAAE,MAAM,QAAQ,GAAGA,kBAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;EAC7F,EAAEA,kBAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK;EACrC,IAAI,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE;EACtC,MAAM,IAAI,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM;EAChD,MAAM,IAAI,IAAI,KAAK,SAAS,IAAIA,kBAAC,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;EAC/D,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;EAC1E,OAAO;EACP,KAAK;EACL,GAAG,CAAC,CAAC;EACL,CAAC;AACD;EACO,SAAS,uBAAuB,CAAC,MAAM,EAAE;EAChD,EAAE,IAAI,cAAc,CAAC;EACrB,EAAEA,kBAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK;EACrC,IAAI,MAAM,QAAQ,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EACjE,IAAI,IAAI,cAAc,EAAE;EACxB,MAAM,IAAI,kBAAkB,GAAG,CAAC,CAAC;EACjC,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;EACxE,MAAM,OAAO,kBAAkB,GAAG,QAAQ;EAC1C,aAAa,cAAc,CAAC,kBAAkB,CAAC,KAAK,QAAQ,CAAC,kBAAkB,CAAC,EAAE;EAClF,QAAQ,kBAAkB,EAAE,CAAC;EAC7B,OAAO;EACP,MAAM,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;EACnE,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC;EAC/C,KAAK,MAAM;EACX,MAAM,cAAc,GAAG,QAAQ,CAAC;EAChC,KAAK;EACL,GAAG,CAAC,CAAC;EACL,EAAE,OAAO,cAAc,CAAC,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACtE,CAAC;AACD;EACO,SAAS,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE;EAClD,EAAE,MAAM,MAAM,GAAG,QAAQ,KAAK,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;EAC5D,EAAEA,kBAAC,CAAC,OAAO,CAACA,kBAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI;EACpC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;EAC9C,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;EACxB,GAAG,CAAC,CAAC;EACL,CAAC;AACD;EACO,SAAS,cAAc,CAAC,MAAM,EAAE;EACvC,EAAE,IAAI,CAACA,kBAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAC;EACzC,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;EACpB,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;EAC5B,EAAE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;EAC1B,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EACrF,GAAG;EACH,EAAE,OAAO,MAAM,CAAC;EAChB;;ECntBA,IAAI,MAAM,EAAE,OAAO,CAAC;EACpB,MAAM,eAAe,GAAG,EAAE,CAAC;EAC3B;EACA,MAAM,OAAO,GAAG,KAAK,CAAC;AACtB;AACA;EACe,MAAM,KAAK,CAAC;AAC3B;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,WAAW,CAAC,OAAO,EAAE;EACvB;EACA,IAAI,IAAI,CAAC,MAAM,EAAE;EACjB,MAAM,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;EAC3F,KAAK;EACL,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;EAC/C,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;EAC5C,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;EAC9C,IAAI,IAAI,CAAC,IAAI,GAAG,IAAIC,oBAAG,EAAE,CAAC;AAC1B;EACA,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EACtC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;EACzE,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACvF;EACA,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACxB,GAAG;AACH;EACA,EAAE,IAAI,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC1C,EAAE,IAAI,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACvC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,KAAK,CAAC,OAAO,EAAE;EACjB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAC7B,GAAG;AACH;EACA,EAAE,OAAO,GAAG;EACZ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;EACzB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;EACzB,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;EAC7B,GAAG;AACH;EACA,EAAE,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;EACvD,EAAE,MAAM,GAAG,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnE;EACA,EAAE,YAAY,CAAC,KAAK,EAAE;EACtB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;EAC9C,GAAG;AACH;EACA,EAAE,cAAc,GAAG;EACnB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;EAC3C,GAAG;AACH;EACA,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE;EACnC,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;EAC7D,GAAG;AACH;EACA;EACA,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE;EAC9B,IAAI,IAAI,CAAC,WAAW,EAAE;EACtB,MAAM,WAAW,GAAG,KAAK,CAAC;EAC1B,MAAM,KAAK,GAAG,SAAS,CAAC;EACxB,KAAK;EACL,IAAI,IAAI,WAAW,YAAY,MAAM,IAAID,kBAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;EACnG,IAAI,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;EACpE,GAAG;AACH;EACA;EACA,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE;EACzB,IAAI,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,IAAIA,kBAAC,CAAC,QAAQ,CAAC,CAAC;EAC3D,IAAI,IAAI,OAAO,EAAE,MAAM,CAAC;EACxB,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;EAClF,MAAM,MAAM,KAAK,GAAG,EAAE,CAAC;EACvB,MAAM,IAAI,eAAe,CAAC;AAC1B;EACA,MAAM,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACjF;EACA,MAAM,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,IAAI;EACjE,QAAQ,SAAS,KAAK,CAAC,UAAU,EAAE;EACnC,UAAU,IAAI,CAAC,UAAU,EAAE,OAAO;EAClC,UAAU,IAAI,UAAU,YAAY,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;EACjF,UAAU,OAAOA,kBAAC,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;EAC3D,SAAS;EACT,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;EACjC,UAAU,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;EAC3B,UAAU,OAAO,EAAE,CAAC;EACpB,SAAS;EACT,OAAO,CAAC,CAAC,CAAC;AACV;EACA,MAAM,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,KAAK,IAAI;EACnE,QAAQ,IAAI,CAAC,KAAK,EAAE,OAAO;EAC3B,QAAQ,SAAS,EAAE,CAAC;EACpB,QAAQ,SAAS,GAAG,IAAI,CAAC;EACzB,QAAQ,eAAe,GAAG,cAAc;EACxC,UAAU,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;EAC5E,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACxE,OAAO,CAAC,CAAC;AACT;EACA,MAAM,OAAO,GAAG,MAAM;EACtB,QAAQ,IAAI,SAAS,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;EACvD,QAAQ,IAAI,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;EAC7D,QAAQ,IAAI,SAAS,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;EAC/D,QAAQ,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC;EAChF,OAAO,CAAC;AACR;EACA,MAAM,MAAM,GAAG,MAAM;EACrB,QAAQ,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;EACtC,QAAQ,OAAO,EAAE,CAAC;EAClB,OAAO,CAAC;EACR,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,OAAO,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EAC1C,GAAG;AACH;EACA,EAAE,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE;EAC1C,IAAI,MAAM,kBAAkB,GAAGA,kBAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;EACtE,IAAI,IAAI,YAAY,GAAG,CAAC,CAAC;EACzB,IAAI,IAAI,aAAa,CAAC;EACtB,IAAI,IAAI,kBAAkB,EAAE;EAC5B,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,GAAGA,kBAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAGA,kBAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EAC7F,KAAK;AACL;EACA;EACA;EACA,IAAI,IAAI,OAAO,CAAC;EAChB;EACA,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK;EAClE,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;EACtC,QAAQ,MAAM,aAAa,GAAG,kBAAkB;EAChD,WAAW,OAAO,CAAC,IAAI;EACvB,YAAYA,kBAAC,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC;EACzD,YAAYA,kBAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC;EACrD,WAAW,OAAO,CAAC,IAAI,GAAGA,kBAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAGA,kBAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;EACrE,QAAQ,IAAIA,kBAAC,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE,OAAO;EAC5D,QAAQ,aAAa,GAAG,aAAa,CAAC;EACtC,OAAO;EACP,MAAM,YAAY,EAAE,CAAC;EACrB,MAAM,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE;EACnD,QAAQ,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;EACvC,OAAO,MAAM;EACb;EACA,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM;EACrC,UAAU,MAAM,EAAE,GAAG,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC;EAC3C,UAAU,IAAI,YAAY,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO;EAChE,UAAU,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;EACzC,SAAS,CAAC,CAAC;EACX,OAAO;EACP,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD;EACA,IAAI,OAAO,OAAO,CAAC;EACnB,GAAG;AACH;EACA,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;EAC5B,IAAI,IAAI,OAAO,EAAE,aAAa,CAAC;EAC/B,IAAI,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;EACnD,MAAM,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,IAAI;EACxD,QAAQ,IAAI,CAAC,KAAK,EAAE,OAAO;EAC3B;EACA,QAAQC,oBAAG,CAAC,QAAQ,CAAC,MAAM;EAC3B,UAAU,KAAK,GAAG,UAAU,EAAE,CAAC;EAC/B,UAAU,IAAI,CAAC,KAAK,EAAE,OAAO;EAC7B,UAAU,OAAO,CAAC,KAAK,CAAC,CAAC;EACzB,UAAU,OAAO,EAAE,CAAC;EACpB,SAAS,CAAC,CAAC;EACX,OAAO,CAAC,CAAC;EACT,MAAM,IAAID,kBAAC,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;EACrC,QAAQ,aAAa,GAAG,UAAU,CAAC,MAAM;EACzC,UAAU,aAAa,GAAG,IAAI,CAAC;EAC/B,UAAU,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,IAAI,SAAS,CAAC,CAAC,CAAC;EACjE,UAAU,OAAO,EAAE,CAAC;EACpB,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;EAC5B,OAAO;EACP,MAAM,OAAO,GAAG,MAAM;EACtB,QAAQ,IAAI,SAAS,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;EACvD,QAAQ,IAAI,aAAa,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;EAC/E,QAAQ,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;EACtC,OAAO,CAAC;EACR,KAAK,CAAC,CAAC;EACP,IAAI,OAAO,GAAG,aAAa,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;EACvE,IAAI,OAAO,OAAO,CAAC;EACnB,GAAG;AACH;EACA,EAAE,QAAQ,GAAG;EACb,IAAI,IAAI,OAAO,CAAC;EAChB,IAAI,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;EACnD,MAAMC,oBAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;EAC5B,MAAM,OAAO,GAAG,MAAM;EACtB,QAAQ,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;EACtC,OAAO,CAAC;EACR,KAAK,CAAC,CAAC;EACP,IAAI,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;EAC9C,IAAI,OAAO,OAAO,CAAC;EACnB,GAAG;AACH;EACA,EAAE,yBAAyB,CAAC,KAAK,EAAE;EACnC,IAAI,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;EAChD,GAAG;AACH;EACA,EAAE,8BAA8B,GAAG;EACnC,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACpD,GAAG;AACH;EACA,EAAE,WAAW,qBAAqB,GAAG;EACrC,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;AACH;EACA,EAAE,aAAa,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE;EAChD,IAAI,IAAI,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;EAC5D,IAAI,IAAID,kBAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;EAC/B,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC;EAC1D,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;EAC7E,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;EAChF,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;EACxC,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1E,MAAM,SAAS,CAAC,QAAQ,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;EACvE,MAAM,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;EAC7C,QAAQ,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM;EAC1D,UAAU,OAAO,EAAE,CAAC;EACpB;EACA,UAAU,OAAO,IAAI,OAAO,CAAC,MAAM,+CAA+C,CAAC,CAAC;EACpF,SAAS,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;EACzB,OAAO,CAAC,CAAC;EACT,KAAK;EACL,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;EACnC,IAAI,IAAI,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;EAC/C,IAAI,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;EACpD,MAAM,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;EACpD,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,sBAAsB,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC;EACtF,IAAI,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EACnE,GAAG;AACH;EACA,EAAE,WAAW,MAAM,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC;AAC/C;EACA,EAAE,OAAO,SAAS,CAAC,YAAY,EAAE;EACjC,IAAI,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC7C,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;EAC3B,IAAI,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;EACjD,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;EACvE,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;EACzB,KAAK;EACL,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;EAClF,GAAG;AACH;EACA,EAAE,OAAO,gBAAgB,GAAG,CAAC,OAAO,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;EAC/D,EAAE,OAAO,OAAO,GAAG,CAAC,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;EAC7C,EAAE,OAAO,2BAA2B,CAAC,uBAAuB,EAAE,qBAAqB,EAAE,UAAU,EAAE;EACjG,IAAI,OAAO,MAAM,CAAC,2BAA2B;EAC7C,MAAM,uBAAuB,EAAE,qBAAqB,EAAE,UAAU,CAAC,CAAC;EAClE,GAAG;AACH;EACA,EAAE,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;EAChD,EAAE,OAAO,WAAW,CAAC,UAAU,EAAE,CAAC,OAAO,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;AAClE;EACA,EAAE,OAAO,aAAa,CAAC,EAAE,EAAE;EAC3B,IAAI,OAAO,GAAG,EAAE,CAAC;EACjB,IAAI,IAAI,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;EACzC,GAAG;AACH;EACA;EACA,EAAE,IAAI,gBAAgB,GAAG,CAAC,OAAO,KAAK,CAAC,gBAAgB,CAAC,CAAC;EACzD,EAAE,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC;EACvC,EAAE,IAAI,oBAAoB,GAAG,CAAC,OAAO,KAAK,CAAC,oBAAoB,CAAC,CAAC;EACjE,CAAC;AACD;EACA,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE;EAC/B,EAAE,gBAAgB,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC;EAC7C,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;EAC3B,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;AACxB;EACA,EAAE,eAAe,EAAE,CAAC,KAAK,EAAE;EAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE;EACjC,MAAM,IAAIC,oBAAG,KAAK,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;EAC7E,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;EAChC,QAAQ,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;EACjG,OAAO;EACP,MAAM,MAAM,kBAAkB,GAAG;EACjC,QAAQ,MAAM,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;EAC5C,QAAQ,UAAU,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;EACjF,QAAQ,WAAW,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;EAC3E,OAAO,CAAC;EACR,MAAM,MAAM,eAAe,GAAGD,kBAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE;EAC1D,SAAS,KAAK,CAACA,kBAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAACA,kBAAC,CAAC,IAAI,CAACC,oBAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;EACxF,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE;EAClC,QAAQ,MAAM,IAAI,KAAK;EACvB,UAAU,2DAA2D,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EACpG,OAAO;EACP,MAAM,MAAM,CAAC,gBAAgB,CAACA,oBAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;EACjE,MAAM,aAAa,CAAC,SAAS,EAAEA,oBAAG,CAAC,CAAC;EACpC,KAAK;EACL,GAAG,CAAC;EACJ,CAAC,CAAC,CAAC;AACH;EACA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE;EACrD,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;EAClE;;;;;;;;"} \ No newline at end of file diff --git a/dist/firetruss.umd.min.js b/dist/firetruss.umd.min.js index e717802..e4d8324 100644 --- a/dist/firetruss.umd.min.js +++ b/dist/firetruss.umd.min.js @@ -1,2 +1,2 @@ -((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("lodash"),require("vue")):"function"==typeof define&&define.amd?define(["lodash","vue"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).Truss=t(e._,e.Vue)})(this,function(U,I){function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=e(U),u=e(I);function i(){a.digestRequest>n||(a.digestRequest=n+1)}let a,n=0,o=!1,c={active:"undefined"!=typeof window&&window.angular};if(c.active){let t=window.angular.module("firetruss",[]);c.digest=i,c.watch=function(){throw new Error("Angular watch proxy not yet initialized")},c.defineModule=function(e){t.constant("Truss",e)},c.debounceDigest=function(t){if(t){let e=_.default.debounce(i,t);c.digest=function(){a.digestRequest>n||(o?i:e)()}}else c.digest=i},t.config(["$provide",function(e){e.decorator("$rootScope",["$delegate","$exceptionHandler",function(t,e){let r=t;c.watch=r.$watch.bind(r);var t=Object.getPrototypeOf(r),s=t.$digest,t=(t.$digest=i,t.$digest.original=s,(a=new u.default({data:{digestRequest:0}})).$watch(()=>a.digestRequest,()=>{a.digestRequest>n?u.default.nextTick(()=>{a.digestRequest<=n||(o=!0,r.$digest.original.call(r),n=a.digestRequest=a.digestRequest+1)}):o=!1}),_.default.last(a._watchers||a._scope.effects));t.id=1/0;{let e=(s=Object.getPrototypeOf(t)).get;s.get=function(){try{return e.call(this)}catch(e){if(this.vm._watcher!==this||!u.default.config.errorHandler)throw e;u.default.config.errorHandler(e,this.vm,"uncaught render error")}}}return r}])}])}else _.default.forEach(["digest","watch","defineModule","debounceDigest"],e=>{c[e]=_.default.noop});class q{constructor(e,t){this.key=e,this.value=t,this.touch()}touch(){this.timestamp=Date.now()}}let F=new class{constructor(e,t){this._items=Object.create(null),this._size=0,this._maxSize=e,this._pruningSize=t||Math.ceil(.1*e)}has(e){return Boolean(this._items[e])}get(e){e=this._items[e];if(e)return e.touch(),e.value}set(e,t){var r=this._items[e];r?r.value=t:(this._size>=this._maxSize&&this._prune(),this._items[e]=new q(e,t),this._size+=1)}delete(e){this._items[e]&&(delete this._items[e],--this._size)}_prune(){var e;for(e of _.default(this._items).toArray().sortBy("timestamp").take(this._pruningSize).value())this.delete(e.key)}}(1e3),r={};function p(e){return e&&e.toString().replace(/[\x00-\x1f\\.$#[\]\x7f/]/g,e=>"\\"+_.default.padStart(e.charCodeAt(0).toString(16),2,"0"))}function d(e){return e&&e.toString().replace(/\\[0-9a-f]{2}/gi,e=>String.fromCharCode(parseInt(e.slice(1),16)))}function f(e){if(!_.default.isObject(e)||!Object.isExtensible(e))return e;let t=e;for(var r in e){var s,i,a;Object.hasOwn(e,r)&&(s=e[r],i=p(r),a=f(s),i===r&&a===s||((t=t===e?_.default.clone(e):t)[i]=a,t[r]===s&&delete t[r]))}return t}function g(){var e,t=[];for(e of arguments)"/"===(e=_.default.isString(e)?e:""+e).charAt(0)&&t.splice(0,t.length),t.push(e);return"/"===t[0]&&(t[0]=""),t.join("/")}function m(e,t){var r=(t?"esc:":"")+e;let s=F.get(r);return s||(s=e.split("/"),t||(s=_.default.map(s,d)),F.set(r,s)),s}class V{constructor(e){this.variables=[];var t=_.default.endsWith(e,"/$*"),r=(e=t?e.slice(0,-3):e).replace(/\/\$[^/]*/g,e=>(1{var t=e.version.match(/^(\d+)\.(\d+)\.(\d+)(-.*)?$/);if(t){var r=W.match(/^(\d+)\.(\d+)\.(\d+)(-.*)?$/);if(!(t[1]===r[1]&&(t[2]>r[2]||t[2]===r[2]&&t[3]>=r[3])))return Promise.reject(new Error(`Incompatible Firetruss worker version: ${e.version} `+`(${W} or better required)`))}return e.livenessLockName&&navigator.locks.request(e.livenessLockName,()=>{this.crash({error:{name:"Error",message:"worker terminated",extra:{shared:this._shared}}})}),e})}suspend(e){this._suspended===(e=void 0===e?!0:e)||(this._suspended=e)||(this._receiveMessages(this._inboundMessages),this._inboundMessages=[],this._outboundMessages.length&&Promise.resolve().then(this._flushMessageQueue))}enableLogging(e){e?(!0===e&&(e=console.log.bind(console),this._send({msg:"enableFirebaseLogging",value:!0})),this._log=e):(this._send({msg:"enableFirebaseLogging",value:!1}),this._log=_.default.noop)}_send(r){r.id=++this._idCounter;let e;var t;return this._dead?Promise.reject(this._dead):(r.oneWay?e=Promise.resolve():(e=new Promise((e,t)=>{this._deferreds[r.id]={resolve:e,reject:t}}),(t=this._deferreds[r.id]).promise=e,t.params=r),this._outboundMessages.length||this._suspended||Promise.resolve().then(this._flushMessageQueue),this._log("send:",r),this._outboundMessages.push(r),e)}_flushMessageQueue(){this._log("flush:",this._outboundMessages.length,"messages");try{this._port.postMessage(this._outboundMessages),this._outboundMessages=[]}catch(e){throw this._log("flush failed:",e),e.extra={messages:this._outboundMessages},e}}_receive(e){this._dead||(this._suspended?this._inboundMessages=this._inboundMessages.concat(e.data):this._receiveMessages(e.data))}_receiveMessages(e){for(var t of e){this._log("recv:",t);var r=this[t.msg];if(!_.default.isFunction(r))throw new Error("Unknown message: "+t.msg);r.call(this,t)}}bindExposedFunction(e){return function(){return this._send({msg:"call",name:e,args:Array.prototype.slice.call(arguments)})}.bind(this)}resolve(e){var t=this._deferreds[e.id];if(!t)throw new Error("Received resolution to inexistent Firebase call");delete this._deferreds[e.id],t.resolve(e.result)}reject(e){var t=this._deferreds[e.id];if(!t)throw new Error("Received rejection of inexistent Firebase call");delete this._deferreds[e.id],t.reject(L(e.error,t.params))}crash(e){let t=`Internal worker error: ${e.error.name}: `+e.error.message;throw e.error.cause&&(t+=` (caused by ${e.error.cause})`),this._dead=new Error(t),e.error.extra&&(this._dead.extra=e.error.extra),_.default.forEach(this._deferreds,({reject:e})=>{e(this._dead)}),this._deferreds={},this._dead}updateLocalStorage({items:e}){try{var t,r=window.localStorage||window.sessionStorage;for(t of e)null===t.value?r.removeItem(t.key):r.setItem(t.key,t.value)}catch{}}trackServer(e){if(Object.hasOwn(this._servers,e))return Promise.resolve();var t=this._servers[e]={authListeners:[]},t=this._registerCallback(this._authCallback.bind(this,t));this._send({msg:"onAuth",url:e,callbackId:t})}_authCallback(e,t){e.auth=t;for(var r of e.authListeners)r(t)}onAuth(e,t,r){var s=t.bind(r);s.callback=t,s.context=r,this._servers[e].authListeners.push(s),s(this.getAuth(e))}offAuth(e,t,r){var s=this._servers[e].authListeners;for(let e=0;enew h(e))}on(e,t,r,s,i,a,n,o){a={listenerKey:e,eventType:s,snapshotCallback:i,cancelCallback:a,context:n,params:{msg:"on",listenerKey:e,url:t,spec:r,eventType:s,options:o}};let h=this._onCallback.bind(this,a);this._registerCallback(h,a),i.__callbackIds=i.__callbackIds||[],i.__callbackIds.push(a.id),this._send({msg:"on",listenerKey:e,url:t,spec:r,eventType:s,callbackId:a.id,options:o}).catch(e=>{h(e)})}off(t,e,r,s,i,a){let n=[],o;if(i){if(!(o=this._findAndRemoveCallbackId(i,e=>_.default.isMatch(e,{listenerKey:t,eventType:s,context:a}))))return Promise.resolve();n.push(o)}else for(var h of _.default.keys(this._callbacks)){var l=this._callbacks[h];l.listenerKey!==t||s&&l.eventType!==s||n.push(h)}for(var u of n)this._nullifyCallback(u);return this._send({msg:"off",listenerKey:t,url:e,spec:r,eventType:s,callbackId:o}).then(()=>{for(var e of n)this._deregisterCallback(e)})}_onCallback(e,t,r){t?(this._deregisterCallback(e.id),t=L(t,e.params),e.cancelCallback?e.cancelCallback.call(e.context,t):console.error(t)):e.snapshotCallback.call(e.context,new h(r))}transaction(e,t,r,s){return this._send({msg:"transaction",url:e,oldValue:t,relativeUpdates:r,writeSerial:s}).then(e=>(e.snapshots&&(e.snapshots=_.default.map(e.snapshots,e=>new h(e))),e))}onDisconnect(e,t,r){return this._send({msg:"onDisconnect",url:e,method:t,value:r})}bounceConnection(){return this._send({msg:"bounceConnection"})}callback({id:e,args:t}){var r=this._callbacks[e];if(!r)throw new Error("Unregistered callback: "+e);r.callback.apply(null,t)}_registerCallback(e,t){return(t=t||{}).callback=e,t.id="cb"+ ++this._idCounter,(this._callbacks[t.id]=t).id}_nullifyCallback(e){this._callbacks[e].callback=_.default.noop}_deregisterCallback(e){delete this._callbacks[e]}_findAndRemoveCallbackId(t,r){if(t.__callbackIds){let e=0;for(;et+"="+encodeURIComponent(JSON.stringify(e))).sortBy().join("&");this._string=this._path+"?"+e,Object.freeze(this)}get ready(){return this._tree.isQueryReady(this)}get constraints(){return this._spec}annotate(e){return new t(this._tree,this._path,this._spec,_.default.assign({},this._annotations,e))}_copyAndValidateSpec(t){if(!t.by)throw new Error('Query needs "by" clause: '+JSON.stringify(t));if(1<("at"in t)+("from"in t)+("to"in t))throw new Error('Query must contain at most one of "at", "from", or "to" clauses: '+JSON.stringify(t));if(1<("first"in t)+("last"in t))throw new Error('Query must contain at most one of "first" or "last" clauses: '+JSON.stringify(t));if(!_.default.some(["at","from","to","first","last"],e=>e in t))throw new Error('Query must contain at least one of "at", "from", "to", "first", or "last" clauses: '+JSON.stringify(t));if("$key"!==(t=_.default.clone(t)).by&&"$value"!==t.by){if(!(t.by instanceof b))throw new Error('Query "by" value must be a reference: '+t.by);let e=t.by.toString();if(!_.default.startsWith(e,this._path))throw new Error('Query "by" value must be a descendant of target reference: '+t.by);if(e=e.slice(this._path.length).replace(/^\/?/,""),!_.default.includes(e,"/"))throw new Error('Query "by" value must not be a direct child of target reference: '+t.by);t.by=e.replace(/.*?\//,"")}return Object.freeze(t),t}toString(){return this._string}toJSON(){return"query → "+this.toString()}}class b extends y{constructor(e,t,r){super(e,t,r),Object.freeze(this)}get ready(){return this._tree.isReferenceReady(this)}get value(){return this._tree.getObject(this.path)}toString(){return this._path}toJSON(){return"reference → "+this.toString()}annotate(e){return new b(this._tree,this._path,_.default.assign({},this._annotations,e))}query(e){return new t(this._tree,this._path,e,this._annotations)}set(e){return this._checkForUndefinedPath(),this._tree.update(this,"set",{[this.path]:e})}update(e){return this._checkForUndefinedPath(),this._tree.update(this,"update",e)}override(e){return this._checkForUndefinedPath(),this._tree.update(this,"override",{[this.path]:e})}commit(e){return this._checkForUndefinedPath(),this._tree.commit(this,e)}_checkForUndefinedPath(){if("/undefined"===this.path)throw new Error("Invalid path for operation: "+this.path)}}let K=Object.freeze({".sv":"timestamp"});function v(e,t){return _.default.isEqualWith(e,t,H)}function H(e,t){return e===t||null==e||null==t||e.$truss||t.$truss?e===t:e.isEqual?e.isEqual(t):void 0}function Q(e,t){for(var r of Object.getOwnPropertyNames(e.prototype))"constructor"!==r&&Object.defineProperty(t.prototype,r,Object.getOwnPropertyDescriptor(e.prototype,r))}class w{constructor(e){_.default.assign(this,{name:e,numRecomputes:0,numUpdates:0,computeTime:0,updateTime:0})}add(e){this.computeTime+=e.computeTime,this.updateTime+=e.updateTime,this.numUpdates+=e.numUpdates,this.numRecomputes+=e.numRecomputes}get runtime(){return this.computeTime+this.updateTime}get runtimePerRecompute(){return this.numRecomputes?this.computeTime/this.numRecomputes:0}get runtimePerUpdate(){return this.numUpdates?this.updateTime/this.numUpdates:0}toLogParts(e){return[this.name+":",` ${(this.runtime/1e3).toFixed(2)}s`,`(${(this.runtime/e.runtime*100).toFixed(1)}%)`,` ${this.numUpdates} upd /`,this.numRecomputes+" runs",`(${(this.numUpdates/this.numRecomputes*100).toFixed(1)}%)`,` ${this.runtimePerRecompute.toFixed(2)}ms / run`,` ${this.runtimePerUpdate.toFixed(2)}ms / upd`]}}var $=new class{constructor(){this._items={}}for(e){return this._items[e]||(this._items[e]=new w(e)),this._items[e]}get list(){return _.default(this._items).values().sortBy(e=>-e.runtime).value()}log(i=10){var a=this.list;if(a.length){let t=new w("=== Total"),r=(_.default.forEach(a,e=>{t.add(e)}),a=_.default.take(a,i),new w("--- Above")),e=(_.default.forEach(a,e=>{r.add(e)}),_.default.map(a,e=>e.toLogParts(t))),s=(e.push(r.toLogParts(t)),e.push(t.toLogParts(t)),_.default.map(_.default.range(e[0].length),t=>_.default(e).map(e=>e[t].length).max()));_.default.forEach(e,e=>{console.log(_.default.map(e,(e,t)=>_.default.padStart(e,s[t])).join(" "))})}}wrap(s,e,i){let a=this.for(e+"."+i);return function(){var e=performance.now(),t=this._computedWatchers&&this._computedWatchers[i].value;try{var r=s.call(this);return v(t,r)||(a.numUpdates+=1),r}finally{a.computeTime+=performance.now()-e,a.numRecomputes+=1}}}};class k{constructor(e,t,r,s,i){Object.freeze(t),this._scope=e,this._connections=t,this._tree=r,this._method=s,this._subConnectors={},this._disconnects={},this._angularUnwatches=void 0,this._data={},this._vue=new u.default({data:{descriptors:{},refs:i||{},values:_.default.mapValues(t,_.default.constant(void 0))}}),this.destroy=this.destroy,Object.seal(this),this._linkScopeProperties(),_.default.forEach(t,(e,t)=>{_.default.isFunction(e)?this._bindComputedConnection(t,e):this._connect(t,e)}),c.active&&e&&e.$on&&e.$id&&e.$on("$destroy",()=>{this.destroy()})}get ready(){return _.default.every(this._connections,(e,t)=>{var r=this._vue.descriptors[t];return!!r&&(r instanceof y?r:this._subConnectors[t]).ready})}get at(){return this._vue.refs}get data(){return this._data}destroy(){this._unlinkScopeProperties(),_.default.forEach(this._angularUnwatches,e=>{e()}),_.default.forEach(this._connections,(e,t)=>{this._disconnect(t)}),this._vue.$destroy()}_linkScopeProperties(){var e=_.default.mapValues(this._connections,(e,t)=>({configurable:!0,enumerable:!1,get:()=>{var e=this._vue.descriptors[t];return e instanceof b?e.value:this._vue.values[t]}}));if(Object.defineProperties(this._data,e),this._scope){for(var t in this._connections)if(t in this._scope)throw new Error("Property already defined on connection target: "+t);Object.defineProperties(this._scope,e),this._scope.__ob__&&this._scope.__ob__.dep.notify()}}_unlinkScopeProperties(){this._scope&&_.default.forEach(this._connections,(e,t)=>{delete this._scope[t]})}_bindComputedConnection(e,t){var r=$.for("connection.at."+e),s=this._computeConnection.bind(this,t,r),e=this._updateComputedConnection.bind(this,e,t,r),r=c.active&&!t.angularWatchSuppressed;this._vue.$watch(s,e,{immediate:!r}),r&&(this._angularUnwatches||(this._angularUnwatches=[]),this._angularUnwatches.push(c.watch(s,e,!0)))}_computeConnection(e,t){var r=performance.now();try{return B(e.call(this._scope))}finally{t.computeTime+=performance.now()-r,t.numRecomputes+=1}}_updateComputedConnection(e,t,r){var t=_.default.isFunction(t)?t(this._scope):t,s=!v(this._vue.descriptors[e],t);s&&(r&&s&&(r.numUpdates+=1),t?(t instanceof y||!_.default.has(this._subConnectors,e)?(this._disconnect(e),this._connect(e,t)):this._subConnectors[e]._updateConnections(t),u.default.set(this._vue.descriptors,e,t),c.digest()):this._disconnect(e))}_updateConnections(r){_.default.forEach(r,(e,t)=>{this._updateComputedConnection(t,e)}),_.default.forEach(this._connections,(e,t)=>{_.default.has(r,t)||this._updateComputedConnection(t)}),this._connections=r}_connect(i,a){if(u.default.set(this._vue.descriptors,i,a),c.digest(),a)if(u.default.set(this._vue.values,i,void 0),a instanceof b)u.default.set(this._vue.refs,i,a),this._disconnects[i]=this._tree.connectReference(a,this._method);else if(a instanceof t){u.default.set(this._vue.refs,i,a);var e=this._updateQueryValue.bind(this,i);this._disconnects[i]=this._tree.connectQuery(a,e,this._method)}else{let t={},e={},r=(u.default.set(this._vue.refs,i,e),this._subConnectors[i]=new k(t,a,this._tree,this._method,e)),s=this._disconnects[i]=this._tree.truss.observe(()=>r.ready,e=>{e&&(s(),delete this._disconnects[i],u.default.set(this._vue.values,i,t),c.digest())})}}_disconnect(e){u.default.delete(this._vue.refs,e),this._updateRefValue(e,void 0),_.default.has(this._subConnectors,e)&&(this._subConnectors[e].destroy(),delete this._subConnectors[e]),this._disconnects[e]&&this._disconnects[e](),delete this._disconnects[e],u.default.delete(this._vue.descriptors,e),c.digest()}_updateRefValue(e,t){this._vue.values[e]!==t&&(u.default.set(this._vue.values,e,t),c.digest())}_updateQueryValue(e,t){this._vue.values[e]||(u.default.set(this._vue.values,e,{}),c.digest());var r,s=this._vue.values[e];for(r in s)!Object.hasOwn(s,r)||_.default.includes(t,r)||(u.default.delete(s,r),c.digest());var i,a=this._tree.getObject(this._vue.descriptors[e].path);for(i of t)Object.hasOwn(s,i)||(u.default.set(s,i,a[i]),c.digest())}}function B(e){if(e)return e instanceof y?e.toString():_.default.mapValues(e,B)}function O(e){return function(){try{return Promise.resolve(e.apply(this,arguments))}catch(e){return Promise.reject(e)}}}function E(e,t){return(e=P(e,()=>{t=null})).cancel=()=>{t&&(t(),t=null)},function s(i,a){let n=i.then,r=i.catch;i.then=(e,t)=>{let r=n.call(i,e,t);return r[a]=i[a],s(r,a),r};i.catch=e=>{let t=r.call(i,e);return t[a]=i[a],s(t,a),t};return i}(e,"cancel"),e}function P(e,t){return t?(t=O(t),e.then(e=>t().then(()=>e),e=>t().then(()=>Promise.reject(e)))):e}let J=["read","write","auth","set","update","commit","connect","peek","authenticate","unathenticate","certify","all"],s=[];class G{constructor(e,t,r){this._operation=e,this._delay=t,this._callback=r,this._fired=!1}initiate(){this.cancel(),this._fired=!1;var e=Date.now()-this._operation._startTimestamp;this._timeoutId=setTimeout(()=>{this._fired=!0,this._callback(this._operation)},this._delay-e)}cancel(){this._fired&&this._callback(this._operation),this._timeoutId&&clearTimeout(this._timeoutId)}}class Y{constructor(e,t,r,s){this._type=e,this._method=t,this._target=r,this._operand=s,this._ready=!1,this._running=!1,this._ended=!1,this._tries=0,this._startTimestamp=Date.now(),this._slowHandles=[]}get type(){return this._type}get method(){return this._method}get target(){return this._target}get targets(){return"update"!==this._method?[this._target]:_.default.map(this._operand,(e,t)=>new b(this._target._tree,g(this._target.path,t),this._target._annotations))}get operand(){return this._operand}get ready(){return this._ready}get running(){return this._running}get ended(){return this._ended}get tries(){return this._tries}get error(){return this._error}onSlow(e,t){e=new G(this,e,t);this._slowHandles.push(e),e.initiate()}_setRunning(e){this._running=e}_setEnded(e){this._ended=e}_markReady(e){this._ready=!0,e||(this._tries=0),_.default.forEach(this._slowHandles,e=>e.cancel())}_clearReady(){this._ready=!0,this._startTimestamp=Date.now(),_.default.forEach(this._slowHandles,e=>e.initiate()),this._ready=!1}_incrementTries(){this._tries++}}class X{constructor(e){this._bridge=e,this._callbacks={},Object.freeze(this)}intercept(e,t){if(!_.default.includes(J,e))throw new Error("Unknown intercept operation type: "+e);var r=_.default.difference(_.default.keys(t),["onBefore","onAfter","onError","onFailure"]);if(r.length)throw new Error("Unknown intercept callback types: "+r.join(", "));r={onBefore:this._addCallback("onBefore",e,t.onBefore),onAfter:this._addCallback("onAfter",e,t.onAfter),onError:this._addCallback("onError",e,t.onError),onFailure:this._addCallback("onFailure",e,t.onFailure)};return this._removeCallbacks.bind(this,e,r)}_addCallback(e,t,r){if(r)return e=this._getCallbacksKey(e,t),t=O(r),(this._callbacks[e]||(this._callbacks[e]=[])).push(t),t}_removeCallback(e,t,r){r&&(e=this._getCallbacksKey(e,t),this._callbacks[e])&&_.default.pull(this._callbacks[e],r)}_removeCallbacks(r,e){_.default.forEach(e,(e,t)=>{this._removeCallback(t,r,e)})}_getCallbacks(e,t,r){return[].concat(this._callbacks[this._getCallbacksKey(e,r)]||s,this._callbacks[this._getCallbacksKey(e,t)]||s,this._callbacks[this._getCallbacksKey(e,"all")]||s)}_getCallbacksKey(e,t){return e+"_"+t}execute(e,t,r,s,i){i=O(i);let a=this.createOperation(e,t,r,s);return this.begin(a).then(()=>{let t=()=>i().catch(e=>this._retryOrEnd(a,e).then(t));return t()}).then(e=>this.end(a).then(()=>e))}createOperation(e,t,r,s){return new Y(e,t,r,s)}begin(t){return Promise.all(_.default.map(this._getCallbacks("onBefore",t.type,t.method),e=>e(t))).then(()=>{t.ended||t._setRunning(!0)},e=>this.end(t,e))}markReady(e){e._markReady()}clearReady(e){e._clearReady()}retry(t,r){return t._incrementTries(),t._error=r,Promise.all(_.default.map(this._getCallbacks("onError",t.type,t.method),e=>e(t,r))).then(e=>{if(!t.ended)return(e=_.default.some(e))&&delete t._error,e})}_retryOrEnd(t,r){return this.retry(t,r).then(e=>{if(!e)return this.end(t,r)},e=>this.end(t,e))}end(t,e){return t.ended?Promise.resolve():(t._setRunning(!1),t._setEnded(!0),e?t._error=e:delete t._error,Promise.all(_.default.map(this._getCallbacks("onAfter",t.type,t.method),e=>e(t))).then(()=>this._afterEnd(t),e=>(t._error=e,this._afterEnd(t))))}_afterEnd(t){if(t._markReady(!0),!t.error)return Promise.resolve();let e=this._getCallbacks("onFailure",t.type,t.method);return e&&setTimeout(()=>{_.default.forEach(e,e=>e(t))},0),Promise.reject(t.error)}}let Z="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz",ee=window.crypto&&window.crypto.getRandomValues&&window.crypto.getRandomValues.bind(window.crypto);class te{constructor(){this._lastUniqueKeyTime=0,this._lastRandomValues=[]}generateUniqueKey(e){e=e||Date.now();var t=new Array(20);let r=e;for(let e=7;0<=e;e--)t[e]=Z.charAt(63&r),r=Math.floor(r/64);if(e===this._lastUniqueKeyTime){let e=11;for(;0<=e&&63===this._lastRandomValues[e];)this._lastRandomValues[e]=0,--e;if(-1===e)throw new Error("Internal assertion failure: ran out of unique IDs for this millisecond");this._lastRandomValues[e]+=1}else if(this._lastUniqueKeyTime=e,ee){var s=new Uint8Array(12);ee(s);for(let e=0;e<12;e++)this._lastRandomValues[e]=s[e]&(e?63:15)}else for(let e=0;e<12;e++)this._lastRandomValues[e]=Math.floor(Math.random()*(e?64:16));for(let e=0;e<12;e++)t[e+8]=Z[this._lastRandomValues[e]];return t.join("")}}class re{constructor(e,t,r,s){this._rootUrl=e,this._tree=t,this._dispatcher=s,this._bridge=r,this._vue=new u.default({data:{$root:{connected:void 0,timeOffset:0,user:void 0,userid:void 0,nowAtInterval(e){let t="now"+e;var r;return Object.hasOwn(this,t)||((r=()=>{u.default.set(this,t,Date.now()+this.timeOffset),c.digest()})(),setInterval(r,e)),this[t]}}}}),this._auth={serial:0,initialAuthChangeReceived:!1,changePromise:Promise.resolve()},r.onAuth(e,this._handleAuthChange,this),this._connectInfoProperty("serverTimeOffset","timeOffset"),this._connectInfoProperty("connected","connected"),Object.freeze(this)}get root(){return this._vue.$data.$root}destroy(){this._bridge.offAuth(this._rootUrl,this._handleAuthChange,this),this._vue.$destroy()}authenticate(e){return this._auth.serial++,this._dispatcher.execute("auth","authenticate",new b(this._tree,"/"),e,()=>(e?this._bridge.authWithCustomToken(this._rootUrl,e):this._bridge.authAnonymously(this._rootUrl)).then(()=>this._auth.changePromise))}unauthenticate(){return this._auth.serial++,this._handleAuthChange(null).then(e=>{if(e)return this._dispatcher.execute("auth","unauthenticate",new b(this._tree,"/"),void 0,()=>this._bridge.unauth(this._rootUrl))})}_handleAuthChange(r){var e=!this._auth.initialAuthChangeReceived&&this._auth.serial;if(void 0!==r&&(this._auth.initialAuthChangeReceived=!0),!e){let e=this._auth.serial;if(this.root.user===r)return Promise.resolve(!1);let t=this._dispatcher.execute("auth","certify",new b(this._tree,"/"),r,()=>this.root.user!==r&&e===this._auth.serial&&(r&&Object.freeze(r),this.root.user=r,this.root.userid=r&&r.uid,c.digest(),!0));return this._auth.changePromise=this._auth.changePromise.then(()=>t).catch(),t}}_isAuthChangeStale(e){return this.root.user===e}_connectInfoProperty(e,t){var r=new URL(this._rootUrl);r.pathname=encodeURI("/.info/"+e),this._bridge.on(r.href,r.href,null,"value",e=>{this.root[t]=e.value,c.digest()})}}let se={__ob__:!0},ie=new Set(["beforeMount","mounted","beforeUpdate","updated","activated","deactivated","errorCaptured"]),ae=new Set(_.default.map(ie,e=>"hook:"+e)),ne=Symbol("last-computed-value"),j,C;class S{get $info(){return this.$truss.info}get $store(){return this.$truss.store}get $now(){return this.$truss.now}$newKey(){return this.$truss.newKey()}$intercept(e,t){if(this.$destroyed)throw new Error("Object already destroyed");let r=this.$truss.intercept(e,t),s=()=>{r(),this.$off("hook:destroyed",s)};return this.$on("hook:destroyed",s),s}$connect(e,t){if(this.$destroyed)throw new Error("Object already destroyed");t||(t=e,e=void 0);let r=this.$truss.connect(e,function t(r,s){if(!s||s instanceof y)return s;if(_.default.isFunction(s)){let e=function(){return r.$$touchThis(),t(r,s.call(this))};return e.angularWatchSuppressed=!0,e}return _.default.mapValues(s,e=>t(r,e))}(this,t)),s=r.destroy,i=()=>(this.$off("hook:destroyed",i),s.call(r));return this.$on("hook:destroyed",i),r.destroy=i,r}$peek(e,t){if(this.$destroyed)throw new Error("Object already destroyed");let r=P(this.$truss.peek(e,t),()=>{this.$off("hook:destroyed",r.cancel)});return this.$on("hook:destroyed",r.cancel),r}$observe(e,t,r){if(this.$destroyed)throw new Error("Object already destroyed");let s,i=this.$truss.observe(()=>(this.$$touchThis(),e.call(this)),t.bind(this),{...r,vm:this});return s=()=>{i(),this.$off("hook:destroyed",s)},this.$on("hook:destroyed",s),s}$when(e,t){if(this.$destroyed)throw new Error("Object already destroyed");let r=this.$truss.when(()=>(this.$$touchThis(),e.call(this)),t);return P(r,()=>{this.$off("hook:destroyed",r.cancel)}),this.$on("hook:destroyed",r.cancel),r}}class R{get $parent(){return j.$parent.value}get $path(){return j.$path.value}get $truss(){return Object.defineProperty(this,"$truss",{value:this.$parent.$truss}),this.$truss}get $ref(){return Object.defineProperty(this,"$ref",{value:new b(this.$truss._tree,this.$path)}),this.$ref}get $refs(){return this.$ref}get $key(){return Object.defineProperty(this,"$key",{value:d(this.$path.slice(this.$path.lastIndexOf("/")+1))}),this.$key}get $data(){return this}get $hidden(){return!1}get $empty(){return _.default.isEmpty(this.$data)}get $keys(){return _.default.keys(this.$data)}get $values(){return _.default.values(this.$data)}get $ready(){return this.$ref.ready}get $overridden(){return!1}$nextTick(){if(this.$destroyed)throw new Error("Object already destroyed");let e=this.$truss.nextTick();return P(e,()=>{this.$off("hook:destroyed",e.cancel)}),this.$on("hook:destroyed",e.cancel),e}$freezeComputedProperty(){if(!_.default.isBoolean(C))throw new Error("Cannot freeze a computed property outside of its getter function");C=!0}get $lastComputedValue(){if(_.default.isBoolean(C))return ne;throw new Error("Cannot use last computed value of a property outside of its getter function")}$set(e){return this.$ref.set(e)}$update(e){return this.$ref.update(e)}$override(e){return this.$ref.override(e)}$commit(e,t){return this.$ref.commit(e,t)}$$touchThis(){this.__ob__?this.__ob__.dep.depend():this.$parent?(Object.hasOwn(this.$parent,"$data")?this.$parent.$data:this.$parent)[this.$key]:this.$store}get $destroyed(){return!1}$on(e,t){if(this.$destroyed)throw new Error("Object already destroyed");if(ae.has(e))throw new Error(`Models don't support the "${e}" lifecycle event`);return(this.$$hooks[e]=this.$$hooks[e]||[]).push(t),this}$once(t,r){let s=this;function i(...e){s.$off(t,i),r(...e)}return i.fn=r,this.$on(t,i)}$off(e,t){if(e)if(t){if(_.default.isArray(e))for(var r of e)this.$off(r,t);else if(this.$$hooks[e]){var s=this.$$hooks[e];for(let e=0;e{e.$once&&e.$once[t]&&(--e.$once[t],this.$off(t,e)),e(...r)}),this}get $$hooks(){return Object.defineProperty(this,"$$hooks",{value:{},writable:!1,enumerable:!1,configurable:!1}),this.$$hooks}}Q(S,R),_.default.forEach(R.prototype,(e,t)=>{Object.defineProperty(R.prototype,t,{value:e,enumerable:!1,configurable:!1,writable:!1})});class x{constructor(e){this.error=e}}class oe{constructor(e){this.value=e}}class he{constructor(e,t){this._vue=e,this._trie={Class:R},this._debug=t,Object.freeze(this)}init(e,t){_.default.isPlainObject(e)&&(_.default.forEach(e,(e,t)=>{e.$trussMount||(e.$$trussMount=e.$$trussMount||[],e.$$trussMount.push(t))}),e=_.default.values(e),_.default.forEach(e,e=>{!e.$trussMount&&e.$$trussMount&&(e.$trussMount=e.$$trussMount,delete e.$$trussMount)})),e=_.default.uniq(e),_.default.forEach(e,e=>this._mountClass(e,t)),this._decorateTrie(this._trie)}destroy(){}_getMount(e,t,r){var s;let i;for(s of m(e,!0)){let e=s?i.children&&(i.children[s]||!t&&i.children.$):this._trie;if(!e){if(!t)return;i.children=i.children||{},e=i.children[s]={Class:R}}if(i=e,r&&r(i))break}return i}_findMount(e,t){if(e(t=t||this._trie))return t;for(var r of _.default.keys(t.children)){r=this._findMount(e,t.children[r]);if(r)return r}}_decorateTrie(t){_.default.forEach(t.children,e=>{this._decorateTrie(e),(e.local||e.localDescendants)&&(t.localDescendants=!0)})}_augmentClass(e){let t,r=e.prototype;for(;r&&r.constructor!==Object;){for(var s of Object.getOwnPropertyNames(r)){var i=Object.getOwnPropertyDescriptor(r,s);if("$"===s.charAt(0)){if(_.default.isEqual(i,Object.getOwnPropertyDescriptor(R.prototype,s)))continue;throw new Error(`Property names starting with "$" are reserved: ${e.name}.`+s)}if(ie.has(s)&&_.default.isFunction(r[s]))throw new Error(`Models don't support the "${s}" lifecycle method`);!i.get||t&&t[s]||((t=t||{})[s]={name:s,fullName:r.constructor.name+"."+s,get:i.get,set:i.set})}r=Object.getPrototypeOf(r)}for(var a of Object.getOwnPropertyNames(R.prototype))"constructor"===a||Object.hasOwn(e.prototype,a)||Object.defineProperty(e.prototype,a,Object.getOwnPropertyDescriptor(R.prototype,a));return t}_mountClass(a,n){let o=this._augmentClass(a),h=[],e=a.$trussMount;if(!e)throw new Error(`Class ${a.name} lacks a $trussMount static property`);_.default.isArray(e)||(e=[e]),_.default.forEach(e,e=>{if(_.default.isString(e)&&(e={path:e}),!n&&"/"===e.path)throw new Error("Data root already accessed, too late to mount class");var t,r=l(e.path);for(t of r.variables){if("$"===t||"$"===t.charAt(1))throw new Error("Invalid variable name: "+t);if("$"===t.charAt(0)&&(_.default.has(R.prototype,t)||se[t]))throw new Error("Variable name conflicts with built-in property or method: "+t);h.push(t)}var s=e.path.match(/\/([^/]*)$/)[1];if("$"===s.charAt(0)){if(e.placeholder)throw new Error(`Class ${a.name} mounted at wildcard ${s} cannot be a placeholder`)}else _.default.has(e,"placeholder")||(e.placeholder={});var i=this._getMount(e.path.replace(/\$[^/]*/g,"$"),!0);if(i.matcher&&(i.escapedKey===s||"$"===i.escapedKey.charAt(0)&&"$"===s.charAt(0)))throw new Error(`Multiple classes mounted at ${e.path}: ${i.Class.name}, `+a.name);_.default.assign(i,{Class:a,matcher:r,computedProperties:o,escapedKey:s},_.default.pick(e,"placeholder","local","keysUnsafe","hidden"))}),_.default(h).uniq().forEach(e=>{Object.defineProperty(a.prototype,e,{get(){return j?j[e]&&j[e].value:void 0}})})}createObject(e,r){var s=this._getMount(e)||{Class:R};try{if(s.matcher){var i,a=s.matcher.match(e);for(i in a)r[i]={value:a[i]}}j=r;let t=new s.Class;return j=null,c.active&&this._wrapProperties(t),s.keysUnsafe&&(r.$data={value:Object.create(null),configurable:!0,enumerable:!0}),s.hidden&&(r.$hidden={value:!0}),s.computedProperties&&_.default.forEach(s.computedProperties,e=>{r[e.name]=this._buildComputedPropertyDescriptor(t,e)}),t}catch(e){throw e.extra=_.default.assign({mount:s,properties:r,className:s.Class&&s.Class.name},e.extra),e}}_wrapProperties(i){_.default.forEach(i,(e,t)=>{let r="$_"+t;var s=Object.getOwnPropertyDescriptor(i,t),s=s.get&&s.set?{get:s.get,set:s.set,configurable:!0}:{value:e,writable:!0};Object.defineProperties(i,{[r]:s,[t]:{get:()=>i[r],set:e=>{i[r]=e,c.digest()},enumerable:!0,configurable:!0}})})}_buildComputedPropertyDescriptor(i,a){let n=$.for(a.fullName),o,h,l=!1,u=()=>{let e=!1;var t=function(e,r){if(!this.$destroyed){this.$$touchThis();var s=C,i=(C=!1,performance.now());let t;try{try{t=e.get.call(this)}catch(e){t=new x(e)}finally{r.computeTime+=performance.now()-i,r.numRecomputes+=1}return t=C?new oe(t):t}finally{C=s}}}.bind(i,a,n);t.toString=_.default.constant("compute "+a.fullName);let r=()=>{e=!0};r=this._vue.$watch(t,e=>{if(i.$destroyed)r();else if(h&&(h.cancel&&h.cancel(),h=void 0),_.default.isObject(e)&&_.default.isFunction(e.then)){let t=e.then(e=>{t===h&&s(e)},e=>{if(t===h&&s(new x(e))&&!e.trussExpectedException)throw e});h=t}else if(s(e)&&(c.digest(),e instanceof x)&&!e.error.trussExpectedException)throw e.error},{immediate:!0});t=_.default.last(this._vue._watchers||this._vue._scope.effects);function s(e){var t=performance.now();return e instanceof oe&&(e=e.value,r(),i.$off("hook:destroyed",r)),e!==ne&&!v(o,e)&&(l=!0,i[a.name]=e,l=!1,function t(e){if(_.default.isNil(e)||!_.default.isObject(e)||Object.isFrozen(e)||e.$truss)return e;e=Object.freeze(e);if(_.default.isArray(e))return _.default.map(e,e=>t(e));return _.default.mapValues(e,e=>t(e))}(e),n.numUpdates+=1,n.updateTime+=performance.now()-t,1)}t.id=-t.id,e?r():i.$on("hook:destroyed",r),i.$off("hook:created",u)};return i.$on("hook:created",u),{enumerable:!0,configurable:!0,get(){if(!l&&o instanceof x)throw o.error;return o},set(e){if(l)o=e;else{if(!a.set)throw new Error("You cannot set a computed property: "+a.name);a.set.call(this,e)}}}}destroyObject(e){Object.defineProperty(e,"$destroyed",{value:!0,enumerable:!1,configurable:!1})}emitLifecycleHook(e,t){_.default.isFunction(e[t])&&e[t](),e.$emit("hook:"+t)}isPlaceholder(e){e=this._getMount(e);return e&&e.placeholder}isLocal(e,t){e=this._getMount(e,!1,e=>e.local);if(e&&e.local)return!0;if(this._hasLocalProperties(e,t))throw new Error("Write on a mix of local and remote tree paths.");return!1}_hasLocalProperties(e,t){if(e){if(e.local)return!0;if(e.localDescendants&&_.default.isObject(t))for(var r in t)if(this._hasLocalProperties(e.children[p(r)]||e.children.$,t[r]))return!0}return!1}forEachPlaceholderChild(e,t){e=this._getMount(e);_.default.forEach(e&&e.children,e=>{e.placeholder&&t(e)})}checkVueObject(i,e,t){t||(t=new Set);var r=new Map;let s=this._findMount(e=>e.Class===i.constructor);var a,n,o,h,l,u,c,d=_.default(i).thru(Object.getOwnPropertyNames).reject(e=>se[e]||Object.hasOwn(R.prototype,e)||/^\$_/.test(e)).reject(e=>s&&s.matcher&&_.default.includes(s.matcher.variables,e)).map(e=>{let t;try{if((t=i[e])instanceof RegExp)return}catch{return}var r=Object.getOwnPropertyDescriptor(i,e),s=!r.enumerable&&r.set&&!Object.hasOwn(i,"$_"+e);return{key:e,value:t,descriptor:r,computed:s}}).compact().value();for({key:a,value:n,descriptor:o,computed:h}of d){if(!_.default.isArray(i)||!/^\d+$/.test(a)&&"length"!==a){if("value"in o||!o.get)throw new Error(`Value at ${e}, contained in a Firetruss object, has a rogue property: `+a);if(i.$truss&&o.enumerable)try{throw i[a]=n,new Error(`Firetruss object at ${e} has an enumerable non-Firebase property: `+a)}catch(e){if("firebase_overwrite"!==e.trussCode)throw e}}_.default.isObject(n)&&(t.has(n)||Object.isSealed(n)||_.default.isFunction(n)||_.default.isElement(n)||n instanceof Promise||(t.add(n),this.checkVueObject(n,g(e,p(a)),t)),h||n.$truss||r.set(n,a))}for({key:l,value:u,computed:c}of d)if(c&&_.default.isObject(u)&&!u.$truss){var f=r.get(u);if(f)throw new Error(`Firetruss object at ${e} has properties ${l} `+`and ${f} with an aliased value`)}}}class le{constructor(e,t){this._coupler=e,this._query=t,this._listeners=[],this._keys=[],this._coupler._url.pathname=encodeURI(t.path),this._url=this._coupler._url.toString(),this._segments=m(t.path,!0),this._listening=!1,this.ready=!1}attach(e,t){this._listen(),this._listeners.push({operation:e,keysCallback:t}),this.ready&&(this._coupler._dispatcher.markReady(e),t)&&t(this._keys)}detach(e){e=_.default.findIndex(this._listeners,{operation:e});return 0<=e&&this._listeners.splice(e,1),this._listeners.length}_listen(){this._listening||(this._coupler._bridge.on(this._query.toString(),this._url,this._query.constraints,"value",this._handleSnapshot,this._handleError,this,{sync:!0}),this._listening=!0)}destroy(){this._coupler._bridge.off(this._query.toString(),this._url,this._query.constraints,"value",this._handleSnapshot,this),this._listening=!1,this.ready=!1,c.digest();for(var e of this._keys)this._coupler._decoupleSegments(this._segments.concat(e))}_handleSnapshot(s){this._coupler._queueSnapshotCallback(()=>{if(this._listeners.length&&this._listening){var e=this._updateKeysAndApplySnapshot(s);if(!this.ready){this.ready=!0,c.digest();for(var t of this._listeners)this._coupler._dispatcher.markReady(t.operation)}if(e)for(var r of this._listeners)r.keysCallback&&r.keysCallback(e)}})}_updateKeysAndApplySnapshot(e){let t;if(e.path===this._query.path){if((t=_.default.keys(e.value)).sort(),_.default.isEqual(this._keys,t))t=null;else{for(var r of _.default.difference(t,this._keys))this._coupler._coupleSegments(this._segments.concat(r));for(var s of _.default.difference(this._keys,t))this._coupler._decoupleSegments(this._segments.concat(s));this._keys=t}if(e.exists){var i,a=e.value,n=e.path;for(i of this._keys)e._path=n+"/"+i,e._key=void 0,e._value=a[i],this._coupler._applySnapshot(e);e._path=n,e._key=void 0,e._value=a}}else{var o;e.path.replace(/\/[^/]+/,"")===this._query.path&&(o=_.default.includes(this._keys,e.key),e.value?o||(this._coupler._coupleSegments(this._segments.concat(e.key)),this._keys.push(e.key),this._keys.sort(),t=this._keys):o&&(this._coupler._decoupleSegments(this._segments.concat(e.key)),_.default.pull(this._keys,e.key),this._keys.sort(),t=this._keys),this._coupler._applySnapshot(e))}return t}_handleError(r){if(this._listeners.length&&this._listening){this._listening=!1,this.ready=!1;for(var e of this._keys)this._coupler._decoupleSegments(this._segments.concat(e));this._keys=[],c.digest(),Promise.all(_.default.map(this._listeners,t=>(this._coupler._dispatcher.clearReady(t.operation),this._coupler._dispatcher.retry(t.operation,r).catch(e=>(t.operation._disconnect(e),!1))))).then(e=>{if(_.default.some(e))this._listeners.length&&this._listen();else for(var t of this._listeners)t.operation._disconnect(r)})}}}class ue{constructor(e,t,r){this._coupler=e,this.path=t,this.parent=r,this._coupler._url.pathname=encodeURI(t),this.url=this._coupler._url.toString(),this.operations=[],this.queryCount=0,this.listening=!1,this.ready=!1,this.children={}}get active(){return this.count||this.queryCount}get count(){return this.operations.length}listen(e){!e&&this.count?this.listening||(_.default.forEach(this.operations,e=>{this._coupler._dispatcher.clearReady(e)}),this._coupler._bridge.on(this.url,this.url,null,"value",this._handleSnapshot,this._handleError,this,{sync:!0}),this.listening=!0):_.default.forEach(this.children,e=>{e.listen()})}unlisten(e){!e&&this.listening?(this._coupler._bridge.off(this.url,this.url,null,"value",this._handleSnapshot,this),this.listening=!1,this._forAllDescendants(e=>{if(e.listening)return!1;e.ready&&(e.ready=!1,c.digest())})):_.default.forEach(this.children,e=>{e.unlisten()})}_handleSnapshot(e){this._coupler._queueSnapshotCallback(()=>{this.listening&&this._coupler.isTrunkCoupled(e.path)&&(this._coupler._applySnapshot(e),this.ready||e.path!==this.path||(this.ready=!0,c.digest(),this.unlisten(!0),this._forAllDescendants(e=>{for(var t of e.operations)this._coupler._dispatcher.markReady(t)})))})}_handleError(r){if(this.count&&this.listening)return this.listening=!1,this._forAllDescendants(e=>{if(e.listening)return!1;e.ready&&(e.ready=!1,c.digest());for(var t of e.operations)this._coupler._dispatcher.clearReady(t)}),this._coupler._prunePath(this.path),Promise.all(_.default.map(this.operations,t=>this._coupler._dispatcher.retry(t,r).catch(e=>(t._disconnect(e),!1)))).then(e=>{if(_.default.some(e))this.count&&this.listen();else for(var t of this.operations)t._disconnect(r)})}_forAllDescendants(t){!1!==t(this)&&_.default.forEach(this.children,e=>e._forAllDescendants(t))}collectCoupledDescendantPaths(t){return(t=t||{})[this.path]=this.active,this.active||_.default.forEach(this.children,e=>{e.collectCoupledDescendantPaths(t)}),t}}class ce{constructor(e,t,r,s,i){this._url=new URL(e),this._bridge=t,this._dispatcher=r,this._applySnapshot=s,this._pendingSnapshotCallbacks=[],this._throttled={processPendingSnapshots:this._processPendingSnapshots},this._prunePath=i,this._vue=new u.default({data:{root:void 0,queryHandlers:{}}}),this._vue._renderProxy=this._vue,this._nodeIndex=Object.create(null),Object.freeze(this),this._vue.$data.root=new ue(this,"/"),this._nodeIndex["/"]=this._root}get _root(){return this._vue.$data.root}get _queryHandlers(){return this._vue.$data.queryHandlers}destroy(){_.default.forEach(this._queryHandlers,e=>{e.destroy()}),this._root.unlisten(),this._vue.$destroy()}couple(e,t){return this._coupleSegments(m(e,!0),t)}_coupleSegments(e,t){let r,s=!t,i=!1;for(var a of e){let e=a?r.children&&r.children[a]:this._root;e||(e=new ue(this,`${"/"===r.path?"":r.path}/`+a,r),u.default.set(r.children,a,e),this._nodeIndex[e.path]=e),s=s||e.listening,i=i||e.ready,r=e}t?r.operations.push(t):r.queryCount++,s?t&&i&&this._dispatcher.markReady(t):r.listen()}decouple(e,t){return this._decoupleSegments(m(e,!0),t)}_decoupleSegments(t,e){var r,s=[];let i;for(r of t){if(!(i=r?i.children&&i.children[r]:this._root))break;s.push(i)}if(!i||!(e?i.count:i.queryCount))throw new Error("Path not coupled: "+(t.join("/")||"/"));if(e?_.default.pull(i.operations,e):i.queryCount--,e&&!i.count&&(i.listen(),i.listening)&&i.unlisten(),!i.active){for(let e=s.length-1;0{r.running&&!r._disconnected&&(this._coupler.couple(e.path,r),r._coupled=!0)}).catch(_.default.noop),r._disconnect}_disconnectReference(e,t,r,s){t._disconnected||(t._disconnected=!0,r&&r(),t._coupled&&(this._coupler.decouple(e.path,t),t._coupled=!1),this._dispatcher.end(t,s).catch(_.default.noop))}isReferenceReady(e){return this._checkHandle(e),this._coupler.isSubtreeReady(e.path)}connectQuery(e,t,r){this._checkHandle(e);let s=this._dispatcher.createOperation("read",r,e);return s._disconnect=this._disconnectQuery.bind(this,e,s),this._dispatcher.begin(s).then(()=>{s.running&&!s._disconnected&&(this._coupler.subscribe(e,s,t),s._coupled=!0)}).catch(_.default.noop),s._disconnect}_disconnectQuery(e,t,r){t._disconnected||(t._disconnected=!0,t._coupled&&(this._coupler.unsubscribe(e,t),t._coupled=!1),this._dispatcher.end(t,r).catch(_.default.noop))}isQueryReady(e){return this._coupler.isQueryReady(e)}_checkHandle(e){if(!e.belongsTo(this._truss))throw new Error("Reference belongs to another Truss instance")}throttleRemoteDataUpdates(e){this._coupler.throttleSnapshots(e)}update(t,e,r){r=_.default.mapValues(r,e=>f(e));var s=_.default.size(r);if(!s)return Promise.resolve();if("update"!==e&&"override"!==e||_e(t.path,r),this._applyLocalWrite(r,"override"===e))return Promise.resolve();e=(e=>{let i;return _.default.forEach(e,(e,t)=>{var r="/"===t?[""]:m(t,!0);if(i){let e=0;for(var s=Math.min(i.length,r.length);ethis._bridge[n?"set":"update"](i,o,a).catch(e=>e.immediateFailure?P(this._repair(t,r),()=>Promise.reject(e)):Promise.reject(e)))}commit(i,a){let n=0,o=0,h={},l=(a=O(a),e=>{if(25<=n++){var t=new Error("Transaction needed too many retries, giving up");try{_.default.assign(t,{attemptCounts:h,sameValueCount:o})}catch{}return Promise.reject(t)}e=e||"initial",h[e]=(h[e]||0)+1;let r=new de(i),s;return u.default.nextTick().then(()=>{var e=T(r.currentValue);return _.default.isEqual(e,s)&&(o+=1),s=e,a(r)}).then(()=>{if(!_.default.isEqual(s,T(r.currentValue)))return l("changed");if("abort"===r.outcome)return r;let t=_.default.mapValues(r.values,e=>f(e));switch(r.outcome){case"cancel":break;case"set":if(this._applyLocalWrite({[i.path]:t[""]}))return Promise.resolve();break;case"update":if(_e(i.path,t),this._applyLocalWrite(t))return Promise.resolve();pe(i.path,t);break;default:throw new Error("Invalid transaction outcome: "+(r.outcome||"none"))}return this._url.pathname=encodeURI(i.path),this._bridge.transaction(this._url.toString(),s,t,this._writeSerial).then(e=>(_.default.forEach(e.snapshots,e=>this._integrateSnapshot(e)),e.committed?r:l("stale")),e=>!e.immediateFailure||"set"!==r.outcome&&"update"!==r.outcome?Promise.reject(e):P(this._repair(i,t),()=>Promise.reject(e)))})});return this._truss.peek(i,()=>this._dispatcher.execute("write","commit",i,void 0,l))}_repair(e,t){let r=e.path;e=_.default(t).keys().flatMap(e=>{let t=r;return e&&(t=g(t,e)),_.default.keys(this._coupler.findCoupledDescendantPaths(t))}).value();return Promise.all(_.default.map(e,e=>(this._url.pathname=encodeURI(e),this._bridge.once(this._url.toString()).then(e=>{this._integrateSnapshot(e)}))))}_applyLocalWrite(e,h){this._writeSerial++,this._localWriteTimestamp=this._truss.now;let l=[],u=0;_.default.forEach(e,(t,e)=>{var r=this._modeler.isLocal(e,t),s=(r&&u++,r?{[e]:!0}:this._coupler.findCoupledDescendantPaths(e));if(!_.default.isEmpty(s)){var i,a=("/"===e?0:e.length)+1;for(i in s){var n=i.slice(a);let e=t;if(n&&null!=t)for(var o of m(n))if(void 0===(e=e.$data[o]))break;_.default.isNil(e)?this._prune(i):(n=_.default.last(m(i)),this._plantValue(i,n,e,this._scaffoldAncestors(i,!1,l),!1,h,r,l)),h||r||(this._localWrites[i]=this._writeSerial)}}});for(var t of l)this._completeCreateObject(t);if(u&&u<_.default.size(e))throw new Error("Write on a mix of local and remote tree paths.");return h||!!u}_createObject(e,t){this._initialized||"/"===e||this.init();t={$parent:{value:t,configurable:!0,enumerable:!0},$path:{value:e}},"/"===e&&(t.$truss={value:this._truss}),e=this._modeler.createObject(e,t);return this._modeler.emitLifecycleHook(e,"beforeCreate"),this._defineObjectProperties(e,t),e}_defineObjectProperties(t,r){var s=t.__ob__;if(Object.defineProperties(t,r),s){let e=!1;for(var i of _.default.keys(r)){var a=Object.getOwnPropertyDescriptor(t,i);a.configurable&&a.enumerable&&(u.default.util.defineReactive(t,i),e=!0)}e&&s.dep.notify()}}_fixObject(e){for(var t of Object.getOwnPropertyNames(e)){var r=Object.getOwnPropertyDescriptor(e,t);r.configurable&&r.enumerable&&(r.enumerable=!1,_.default.startsWith(t,"$")&&(r.configurable=!1),Object.defineProperty(e,t,r))}}_completeCreateObject(e){this._modeler.emitLifecycleHook(e,"created")}_destroyObject(e){if(e&&e.$truss&&!e.$destroyed){this._modeler.emitLifecycleHook(e,"beforeDestroy"),this._modeler.destroyObject(e);for(var t of Object.getOwnPropertyNames(e.$data)){t=e.$data[t];t&&t.$parent===e&&this._destroyObject(t)}this._modeler.emitLifecycleHook(e,"destroyed")}}_integrateSnapshot(r){if(_.default.forEach(this._localWrites,(e,t)=>{r.writeSerial>=e&&delete this._localWrites[t]}),r.exists){var e,t=[],s=this._scaffoldAncestors(r.path,!0,t);s&&this._plantValue(r.path,r.key,r.value,s,!0,!1,!1,t);for(e of t)this._completeCreateObject(e)}else this._prune(r.path,null,!0)}_scaffoldAncestors(e,r,s){let i;var a=_.default.dropRight(m(e,!0));let n="/";for(let t=0;t{this._plantValue(g(s,t),d(t),e,r,n,o,h,l)}),e?this._plantPlaceholders(r,s,!1,l):_.default.forEach(r.$data,(e,t)=>{t=p(t);Object.hasOwn(i,t)||this._prune(g(s,t),null,n)}),r}this._destroyObject(r),!h&&_.default.isNil(i)?this._deleteFirebaseProperty(a,t):this._setFirebaseProperty(a,t,i)}}_plantPlaceholders(r,s,i,a){this._modeler.forEachPlaceholderChild(s,e=>{var t;void 0!==i&&i!==!!e.hidden||(t=d(e.escapedKey),Object.hasOwn(r.$data,t))||this._plantValue(g(s,e.escapedKey),t,e.placeholder,r,!1,!1,!1,a)})}_prune(e,t,r){t=t||{};var s=this.getObject(e);void 0===s||r&&this._avoidLocalWritePaths(e,t)||_.default.isEmpty(t)&&this._pruneAncestors(e,s)||!_.default.isObject(s)||this._pruneDescendants(s,t)}_avoidLocalWritePaths(t,r){for(var e in this._localWrites)if(Object.hasOwn(this._localWrites,e)){if(t===e||"/"===e||_.default.startsWith(t,e+"/"))return!0;if("/"===t||_.default.startsWith(e,t+"/")){var s=m(e,!0);for(let e=s.length;0(i=d(e.slice(1)),""));void 0!==s&&s!==this.root;){var n,o=s&&s.$parent||s===t&&this.getObject(a);this._modeler.isPlaceholder(s&&s.$path||e)||(n=r?null:[t],this._holdsConcreteData(s,n))||(r=!0,this._deleteFirebaseProperty(o,s&&s.$key||s===t&&i)),s=o}return r}_holdsConcreteData(e,t){return!(_.default.isNil(e)||t&&_.default.includes(t,e))&&(!_.default.isObject(e)||!e.$truss||_.default.some(e.$data,e=>this._holdsConcreteData(e,t)))}_pruneDescendants(a,n){if(n[a.$path])return!0;a.$overridden&&delete a.$overridden;let o=!1;return _.default.forEach(a.$data,(e,t)=>{let r=!0,s;var i;n[g(a.$path,p(t))]?(r=!1,s=!0):!_.default.isNil(e)&&e.$truss&&((i=this._modeler.isPlaceholder(e.$path))||_.default.has(n,e.$path))&&(s=this._pruneDescendants(e,n),r=!i&&!s),r&&this._deleteFirebaseProperty(a,t),o=o||s}),o}getObject(e){var t;let r;for(t of m(e))if(void 0===(r=t?r.$data[t]:this.root))return;return r}_getFirebasePropertyDescriptor(e,t,r){var s=Object.getOwnPropertyDescriptor(t,r);if(s){if(!s.enumerable){var i=t[r];if(!i||i.$parent!==e)throw new Error("Key conflict between Firebase and instance or computed properties at "+e.$path+": "+r)}if(!s.get||!s.set)throw new Error(`Unbound property at ${e.$path}: `+r)}else if(r in t)throw new Error(`Key conflict between Firebase and inherited property at ${e.$path}: `+r);return s}_setFirebaseProperty(e,t,r,s){var i=Object.hasOwn(e,"$data")?e.$data:e,e=this._getFirebasePropertyDescriptor(e,i,t);if(e){if(s&&Object.defineProperty(i,t,{get:e.get,set:e.set,configurable:!0,enumerable:!1}),i[t]===r)return;this._firebasePropertyEditAllowed=!0,i[t]=r,this._firebasePropertyEditAllowed=!1}else u.default.set(i,t,r),e=Object.getOwnPropertyDescriptor(i,t),Object.defineProperty(i,t,{get:e.get,set:this._overwriteFirebaseProperty.bind(this,e,t),configurable:!0,enumerable:!s});c.digest()}_overwriteFirebaseProperty(e,t,r){if(!this._firebasePropertyEditAllowed)throw(t=new Error("Firebase data cannot be mutated directly: "+t)).trussCode="firebase_overwrite",t;e.set.call(this,r)}_deleteFirebaseProperty(e,t){var r=Object.hasOwn(e,"$data")?e.$data:e;this._getFirebasePropertyDescriptor(e,r,t),this._destroyObject(r[t]),u.default.delete(r,t),c.digest()}checkVueObject(e,t){this._modeler.checkVueObject(e,t)}}function _e(r,s){_.default.forEach(_.default.keys(s),e=>{if("/"===e.charAt(0)){if(!(e===r||"/"===r||_.default.startsWith(e,r+"/")&&e.length>r.length+1))throw new Error("Update item is not a descendant of target ref: "+e)}else{if(_.default.includes(e,"/"))throw new Error("Update item deep path must be absolute, taken from a reference: "+e);var t=g(r,p(e));if(Object.hasOwn(s,t))throw new Error(`Update items overlap: ${e} and `+t);s[t]=s[e],delete s[e]}});let i=_.default(s).keys().map(e=>g(e,"")).sortBy("length").value();_.default.forEach(s,(e,t)=>{for(var r of i){if(r.length>t.length)break;if(t!==r&&_.default.startsWith(t,r))throw new Error(`Update items overlap: ${r} and `+t)}})}function pe(e,t){let r="/"===e?1:e.length+1;_.default.forEach(_.default.keys(t),e=>{t[e.slice(r)]=t[e],delete t[e]})}function T(e){if(!_.default.isObject(e))return e;var t,r={},s=e.$data;for(t in s)Object.hasOwn(s,t)&&(r[p(t)]=T(s[t]));return r}let A,D,ge={};class M{constructor(e){if(!A)throw new Error("Truss worker not connected, please call Truss.connectWorker first");this._rootUrl=e.replace(/\/$/,""),this._keyGenerator=new te,this._dispatcher=new X(A),this._vue=new u.default,A.trackServer(this._rootUrl),this._tree=new fe(this,this._rootUrl,A,this._dispatcher),this._metaTree=new re(this._rootUrl,this._tree,A,this._dispatcher),Object.freeze(this)}get info(){return this._metaTree.root}get store(){return this._tree.root}mount(e){this._tree.init(e)}destroy(){this._vue.$destroy(),this._tree.destroy(),this._metaTree.destroy()}get now(){return Date.now()+this.info.timeOffset}newKey(){return this._keyGenerator.generateUniqueKey(this.now)}authenticate(e){return this._metaTree.authenticate(e)}unauthenticate(){return this._metaTree.unauthenticate()}intercept(e,t){return this._dispatcher.intercept(e,t)}connect(e,t){return t||(t=e,e=void 0),(t instanceof y||_.default.isFunction(t))&&(t={_:t}),new k(e,t,this._tree,"connect")}peek(o,h){h=O(h||_.default.identity);let l,u;return E(Promise.resolve().then(()=>new Promise((t,s)=>{let r={},i,e=new k(r,{result:o},this._tree,"peek"),a=this.intercept("peek",{onFailure:r=>{!function t(e){if(e)return e instanceof y?r.target.isEqual(e):_.default.some(e,e=>t(e))}(e.at)||(s(r.error),l())}}),n=this.observe(()=>e.ready,e=>{e&&(n(),n=null,i=P(h(r.result),()=>{c.digest(),i=null,l()}).then(e=>{t(e)},e=>{s(e)}))});l=()=>{n&&(n(),n=null),a&&(a(),a=null),e&&(e.destroy(),e=null),i&&i.cancel&&i.cancel()},u=()=>{s(new Error("Canceled")),l()}})),u)}observe(e,s,i){let a=_.default.isObject(i&&i.precise),n=0,o;a&&(o=i.deep?_.default.cloneDeep(i.precise):_.default.clone(i.precise));let h;return h=this._vue.$watch(e,(t,r)=>{if(i&&i.precise){var e=a?i.deep?_.default.defaultsDeep({},t,i.precise):_.default.defaults({},t,i.precise):i.deep?_.default.cloneDeep(t):_.default.clone(t);if(_.default.isEqual(e,o))return;o=e}n++,h||i&&i.immediate?(s(t,r),c.digest()):Promise.resolve().then(()=>{var e=i&&i.vm;1{let r=this.observe(s,e=>{e&&u.default.nextTick(()=>{(e=s())&&(t(e),a())})});_.default.has(i,"timeout")&&(n=setTimeout(()=>{n=null,e(new Error(i.timeoutMessage||"Timeout")),a()},i.timeout)),a=()=>{r&&(r(),r=null),n&&(clearTimeout(n),n=null),e(new Error("Canceled"))}});return e=E(P(e,a),a),i&&i.scope&&i.scope.$on("$destroy",()=>{e.cancel()}),e}nextTick(){let r;return E(new Promise((e,t)=>{u.default.nextTick(e),r=()=>{t(new Error("Canceled"))}}),r)}throttleRemoteDataUpdates(e){this._tree.throttleRemoteDataUpdates(e)}checkObjectsForRogueProperties(){this._tree.checkVueObject(this._tree.root,"/")}static get computedPropertyStats(){return $}static async connectWorker(r,e){if(A)throw new Error("Worker already connected");if(_.default.isString(r)){var t=window.SharedWorker||window.Worker;if(!t)throw new Error("Browser does not implement Web Workers");if(!navigator.locks)throw new Error("Browser does not implement locks");r=new t(r);t=window.crypto.getRandomValues(new Uint32Array(1))[0];r.lockName=`truss_worker_lock_${Date.now()}.`+t,await new Promise((e,t)=>{navigator.locks.request(r.lockName,()=>(e(),new Promise(()=>{}))).catch(t)})}A=new N(r),D&&A.enableLogging(D);var s,{exposedFunctionNames:t,firebaseSdkVersion:e}=await A.init(r.lockName,e);Object.defineProperty(M,"FIREBASE_SDK_VERSION",{value:e});for(s of t)M.preExpose(s)}static get worker(){return ge}static preExpose(e){var t,r=e.split(".");let s=M.worker;for(t of r.slice(0,-1))Object.hasOwnProperty.call(s,t)||(s[t]={}),s=s[t];s[r[r.length-1]]=A.bindExposedFunction(e)}static bounceConnection(){return A.bounceConnection()}static suspend(){return A.suspend()}static debugPermissionDeniedErrors(e,t,r){return A.debugPermissionDeniedErrors(e,t,r)}static debounceAngularDigest(e){c.debounceDigest(e)}static escapeKey(e){return p(e)}static unescapeKey(e){return d(e)}static enableLogging(e){D=e,A&&A.enableLogging(e)}get SERVER_TIMESTAMP(){return M.SERVER_TIMESTAMP}get VERSION(){return M.VERSION}get FIREBASE_SDK_VERSION(){return M.FIREBASE_SDK_VERSION}}return Object.defineProperties(M,{SERVER_TIMESTAMP:{value:K},VERSION:{value:"dev"},Model:{value:Object},ComponentPlugin:{value:{install(e,t){if(u.default!==e)throw new Error("Multiple versions of Vue detected");if(!t.truss)throw new Error("Need to pass `truss` instance as an option to use the ComponentPlugin");e={$truss:{value:t.truss},$destroyed:{get(){return this._isBeingDestroyed||this._isDestroyed}},$$touchThis:{value(){this.__ob__&&this.__ob__.dep.depend()}}},t=_.default(e).keys().union(_.default.keys(S.prototype)).intersection(_.default.keys(u.default.prototype)).value();if(t.length)throw new Error("Truss extension properties conflict with Vue properties: "+t.join(", "));Object.defineProperties(u.default.prototype,e),Q(S,u.default)}}}}),c.defineModule(M),M}); +((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("lodash"),require("vue")):"function"==typeof define&&define.amd?define(["lodash","vue"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).Truss=t(e._,e.Vue)})(this,function(I,F){function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=e(I),u=e(F);class U{constructor(e,t){this.key=e,this.value=t,this.touch()}touch(){this.timestamp=Date.now()}}let i=new class{constructor(e,t){this._items=Object.create(null),this._size=0,this._maxSize=e,this._pruningSize=t||Math.ceil(.1*e)}has(e){return Boolean(this._items[e])}get(e){e=this._items[e];if(e)return e.touch(),e.value}set(e,t){var r=this._items[e];r?r.value=t:(this._size>=this._maxSize&&this._prune(),this._items[e]=new U(e,t),this._size+=1)}delete(e){this._items[e]&&(delete this._items[e],--this._size)}_prune(){var e;for(e of _.default(this._items).toArray().sortBy("timestamp").take(this._pruningSize).value())this.delete(e.key)}}(1e3),r={};function p(e){return e&&e.toString().replace(/[\x00-\x1f\\.$#[\]\x7f/]/g,e=>"\\"+_.default.padStart(e.charCodeAt(0).toString(16),2,"0"))}function c(e){return e&&e.toString().replace(/\\[0-9a-f]{2}/gi,e=>String.fromCharCode(parseInt(e.slice(1),16)))}function d(e){if(!_.default.isObject(e)||!Object.isExtensible(e))return e;let t=e;for(var r in e){var s,i,a;Object.hasOwn(e,r)&&(s=e[r],i=p(r),a=d(s),i===r&&a===s||((t=t===e?_.default.clone(e):t)[i]=a,t[r]===s&&delete t[r]))}return t}function m(){var e,t=[];for(e of arguments)"/"===(e=_.default.isString(e)?e:""+e).charAt(0)&&t.splice(0,t.length),t.push(e);return"/"===t[0]&&(t[0]=""),t.join("/")}function f(e,t){var r=(t?"esc:":"")+e;let s=i.get(r);return s||(s=e.split("/"),t||(s=_.default.map(s,c)),i.set(r,s)),s}class V{constructor(e){this.variables=[];var t=_.default.endsWith(e,"/$*"),r=(e=t?e.slice(0,-3):e).replace(/\/\$[^/]*/g,e=>(1{var t=e.version.match(/^(\d+)\.(\d+)\.(\d+)(-.*)?$/);if(t){var r=a.match(/^(\d+)\.(\d+)\.(\d+)(-.*)?$/);if(!(t[1]===r[1]&&(t[2]>r[2]||t[2]===r[2]&&t[3]>=r[3])))return Promise.reject(new Error(`Incompatible Firetruss worker version: ${e.version} `+`(${a} or better required)`))}return e.livenessLockName&&navigator.locks.request(e.livenessLockName,()=>{this.crash({error:{name:"Error",message:"worker terminated",extra:{shared:this._shared}}})}),e})}suspend(e){this._suspended===(e=void 0===e?!0:e)||(this._suspended=e)||(this._receiveMessages(this._inboundMessages),this._inboundMessages=[],this._outboundMessages.length&&Promise.resolve().then(this._flushMessageQueue))}enableLogging(e){e?(!0===e&&(e=console.log.bind(console),this._send({msg:"enableFirebaseLogging",value:!0})),this._log=e):(this._send({msg:"enableFirebaseLogging",value:!1}),this._log=_.default.noop)}_send(r){r.id=++this._idCounter;let e;var t;return this._dead?Promise.reject(this._dead):(r.oneWay?e=Promise.resolve():(e=new Promise((e,t)=>{this._deferreds[r.id]={resolve:e,reject:t}}),(t=this._deferreds[r.id]).promise=e,t.params=r),this._outboundMessages.length||this._suspended||Promise.resolve().then(this._flushMessageQueue),this._log("send:",r),this._outboundMessages.push(r),e)}_flushMessageQueue(){this._log("flush:",this._outboundMessages.length,"messages");try{this._port.postMessage(this._outboundMessages),this._outboundMessages=[]}catch(e){throw this._log("flush failed:",e),e.extra={messages:this._outboundMessages},e}}_receive(e){this._dead||(this._suspended?this._inboundMessages=this._inboundMessages.concat(e.data):this._receiveMessages(e.data))}_receiveMessages(e){for(var t of e){this._log("recv:",t);var r=this[t.msg];if(!_.default.isFunction(r))throw new Error("Unknown message: "+t.msg);r.call(this,t)}}bindExposedFunction(e){return function(){return this._send({msg:"call",name:e,args:Array.prototype.slice.call(arguments)})}.bind(this)}resolve(e){var t=this._deferreds[e.id];if(!t)throw new Error("Received resolution to inexistent Firebase call");delete this._deferreds[e.id],t.resolve(e.result)}reject(e){var t=this._deferreds[e.id];if(!t)throw new Error("Received rejection of inexistent Firebase call");delete this._deferreds[e.id],t.reject(s(e.error,t.params))}crash(e){let t=`Internal worker error: ${e.error.name}: `+e.error.message;throw e.error.cause&&(t+=` (caused by ${e.error.cause})`),this._dead=new Error(t),e.error.extra&&(this._dead.extra=e.error.extra),_.default.forEach(this._deferreds,({reject:e})=>{e(this._dead)}),this._deferreds={},this._dead}updateLocalStorage({items:e}){try{var t,r=window.localStorage||window.sessionStorage;for(t of e)null===t.value?r.removeItem(t.key):r.setItem(t.key,t.value)}catch{}}trackServer(e){if(Object.hasOwn(this._servers,e))return Promise.resolve();var t=this._servers[e]={authListeners:[]},t=this._registerCallback(this._authCallback.bind(this,t));this._send({msg:"onAuth",url:e,callbackId:t})}_authCallback(e,t){e.auth=t;for(var r of e.authListeners)r(t)}onAuth(e,t,r){var s=t.bind(r);s.callback=t,s.context=r,this._servers[e].authListeners.push(s),s(this.getAuth(e))}offAuth(e,t,r){var s=this._servers[e].authListeners;for(let e=0;enew n(e))}on(e,t,r,s,i,a,n,o){a={listenerKey:e,eventType:s,snapshotCallback:i,cancelCallback:a,context:n,params:{msg:"on",listenerKey:e,url:t,spec:r,eventType:s,options:o}};let h=this._onCallback.bind(this,a);this._registerCallback(h,a),i.__callbackIds=i.__callbackIds||[],i.__callbackIds.push(a.id),this._send({msg:"on",listenerKey:e,url:t,spec:r,eventType:s,callbackId:a.id,options:o}).catch(e=>{h(e)})}off(t,e,r,s,i,a){let n=[],o;if(i){if(!(o=this._findAndRemoveCallbackId(i,e=>_.default.isMatch(e,{listenerKey:t,eventType:s,context:a}))))return Promise.resolve();n.push(o)}else for(var h of _.default.keys(this._callbacks)){var l=this._callbacks[h];l.listenerKey!==t||s&&l.eventType!==s||n.push(h)}for(var u of n)this._nullifyCallback(u);return this._send({msg:"off",listenerKey:t,url:e,spec:r,eventType:s,callbackId:o}).then(()=>{for(var e of n)this._deregisterCallback(e)})}_onCallback(e,t,r){t?(this._deregisterCallback(e.id),t=s(t,e.params),e.cancelCallback?e.cancelCallback.call(e.context,t):console.error(t)):e.snapshotCallback.call(e.context,new n(r))}transaction(e,t,r,s){return this._send({msg:"transaction",url:e,oldValue:t,relativeUpdates:r,writeSerial:s}).then(e=>(e.snapshots&&(e.snapshots=_.default.map(e.snapshots,e=>new n(e))),e))}onDisconnect(e,t,r){return this._send({msg:"onDisconnect",url:e,method:t,value:r})}bounceConnection(){return this._send({msg:"bounceConnection"})}callback({id:e,args:t}){var r=this._callbacks[e];if(!r)throw new Error("Unregistered callback: "+e);r.callback.apply(null,t)}_registerCallback(e,t){return(t=t||{}).callback=e,t.id="cb"+ ++this._idCounter,(this._callbacks[t.id]=t).id}_nullifyCallback(e){this._callbacks[e].callback=_.default.noop}_deregisterCallback(e){delete this._callbacks[e]}_findAndRemoveCallbackId(t,r){if(t.__callbackIds){let e=0;for(;et+"="+encodeURIComponent(JSON.stringify(e))).sortBy().join("&");this._string=this._path+"?"+e,Object.freeze(this)}get ready(){return this._tree.isQueryReady(this)}get constraints(){return this._spec}annotate(e){return new o(this._tree,this._path,this._spec,_.default.assign({},this._annotations,e))}_copyAndValidateSpec(t){if(!t.by)throw new Error('Query needs "by" clause: '+JSON.stringify(t));if(1<("at"in t)+("from"in t)+("to"in t))throw new Error('Query must contain at most one of "at", "from", or "to" clauses: '+JSON.stringify(t));if(1<("first"in t)+("last"in t))throw new Error('Query must contain at most one of "first" or "last" clauses: '+JSON.stringify(t));if(!_.default.some(["at","from","to","first","last"],e=>e in t))throw new Error('Query must contain at least one of "at", "from", "to", "first", or "last" clauses: '+JSON.stringify(t));if("$key"!==(t=_.default.clone(t)).by&&"$value"!==t.by){if(!(t.by instanceof h))throw new Error('Query "by" value must be a reference: '+t.by);let e=t.by.toString();if(!_.default.startsWith(e,this._path))throw new Error('Query "by" value must be a descendant of target reference: '+t.by);if(e=e.slice(this._path.length).replace(/^\/?/,""),!_.default.includes(e,"/"))throw new Error('Query "by" value must not be a direct child of target reference: '+t.by);t.by=e.replace(/.*?\//,"")}return Object.freeze(t),t}toString(){return this._string}toJSON(){return"query → "+this.toString()}}class h extends y{constructor(e,t,r){super(e,t,r),Object.freeze(this)}get ready(){return this._tree.isReferenceReady(this)}get value(){return this._tree.getObject(this.path)}toString(){return this._path}toJSON(){return"reference → "+this.toString()}annotate(e){return new h(this._tree,this._path,_.default.assign({},this._annotations,e))}query(e){return new o(this._tree,this._path,e,this._annotations)}set(e){return this._checkForUndefinedPath(),this._tree.update(this,"set",{[this.path]:e})}update(e){return this._checkForUndefinedPath(),this._tree.update(this,"update",e)}override(e){return this._checkForUndefinedPath(),this._tree.update(this,"override",{[this.path]:e})}commit(e){return this._checkForUndefinedPath(),this._tree.commit(this,e)}_checkForUndefinedPath(){if("/undefined"===this.path)throw new Error("Invalid path for operation: "+this.path)}}let g=Object.freeze({".sv":"timestamp"});function b(e,t){return _.default.isEqualWith(e,t,N)}function N(e,t){return e===t||null==e||null==t||e.$truss||t.$truss?e===t:e.isEqual?e.isEqual(t):void 0}function W(e,t){for(var r of Object.getOwnPropertyNames(e.prototype))"constructor"!==r&&Object.defineProperty(t.prototype,r,Object.getOwnPropertyDescriptor(e.prototype,r))}class v{constructor(e){_.default.assign(this,{name:e,numRecomputes:0,numUpdates:0,computeTime:0,updateTime:0})}add(e){this.computeTime+=e.computeTime,this.updateTime+=e.updateTime,this.numUpdates+=e.numUpdates,this.numRecomputes+=e.numRecomputes}get runtime(){return this.computeTime+this.updateTime}get runtimePerRecompute(){return this.numRecomputes?this.computeTime/this.numRecomputes:0}get runtimePerUpdate(){return this.numUpdates?this.updateTime/this.numUpdates:0}toLogParts(e){return[this.name+":",` ${(this.runtime/1e3).toFixed(2)}s`,`(${(this.runtime/e.runtime*100).toFixed(1)}%)`,` ${this.numUpdates} upd /`,this.numRecomputes+" runs",`(${(this.numUpdates/this.numRecomputes*100).toFixed(1)}%)`,` ${this.runtimePerRecompute.toFixed(2)}ms / run`,` ${this.runtimePerUpdate.toFixed(2)}ms / upd`]}}var w=new class{constructor(){this._items={}}for(e){return this._items[e]||(this._items[e]=new v(e)),this._items[e]}get list(){return _.default(this._items).values().sortBy(e=>-e.runtime).value()}log(i=10){var a=this.list;if(a.length){let t=new v("=== Total"),r=(_.default.forEach(a,e=>{t.add(e)}),a=_.default.take(a,i),new v("--- Above")),e=(_.default.forEach(a,e=>{r.add(e)}),_.default.map(a,e=>e.toLogParts(t))),s=(e.push(r.toLogParts(t)),e.push(t.toLogParts(t)),_.default.map(_.default.range(e[0].length),t=>_.default(e).map(e=>e[t].length).max()));_.default.forEach(e,e=>{console.log(_.default.map(e,(e,t)=>_.default.padStart(e,s[t])).join(" "))})}}wrap(s,e,i){let a=this.for(e+"."+i);return function(){var e=performance.now(),t=this._computedWatchers&&this._computedWatchers[i].value;try{var r=s.call(this);return b(t,r)||(a.numUpdates+=1),r}finally{a.computeTime+=performance.now()-e,a.numRecomputes+=1}}}};class ${constructor(e,t,r,s,i){Object.freeze(t),this._scope=e,this._connections=t,this._tree=r,this._method=s,this._subConnectors={},this._disconnects={},this._data={},this._vue=new u.default({data:{descriptors:{},refs:i||{},values:_.default.mapValues(t,_.default.constant(void 0))}}),this.destroy=this.destroy,Object.seal(this),this._linkScopeProperties(),_.default.forEach(t,(e,t)=>{_.default.isFunction(e)?this._bindComputedConnection(t,e):this._connect(t,e)})}get ready(){return _.default.every(this._connections,(e,t)=>{var r=this._vue.descriptors[t];return!!r&&(r instanceof y?r:this._subConnectors[t]).ready})}get at(){return this._vue.refs}get data(){return this._data}destroy(){this._unlinkScopeProperties(),_.default.forEach(this._connections,(e,t)=>{this._disconnect(t)}),this._vue.$destroy()}_linkScopeProperties(){var e=_.default.mapValues(this._connections,(e,t)=>({configurable:!0,enumerable:!1,get:()=>{var e=this._vue.descriptors[t];return e instanceof h?e.value:this._vue.values[t]}}));if(Object.defineProperties(this._data,e),this._scope){for(var t in this._connections)if(t in this._scope)throw new Error("Property already defined on connection target: "+t);Object.defineProperties(this._scope,e),this._scope.__ob__&&this._scope.__ob__.dep.notify()}}_unlinkScopeProperties(){this._scope&&_.default.forEach(this._connections,(e,t)=>{delete this._scope[t]})}_bindComputedConnection(e,t){var r=w.for("connection.at."+e),s=this._computeConnection.bind(this,t,r),e=this._updateComputedConnection.bind(this,e,t,r);this._vue.$watch(s,e,{immediate:!0})}_computeConnection(e,t){var r=performance.now();try{return L(e.call(this._scope))}finally{t.computeTime+=performance.now()-r,t.numRecomputes+=1}}_updateComputedConnection(e,t,r){var t=_.default.isFunction(t)?t(this._scope):t,s=!b(this._vue.descriptors[e],t);s&&(r&&s&&(r.numUpdates+=1),t?(t instanceof y||!_.default.has(this._subConnectors,e)?(this._disconnect(e),this._connect(e,t)):this._subConnectors[e]._updateConnections(t),u.default.set(this._vue.descriptors,e,t)):this._disconnect(e))}_updateConnections(r){_.default.forEach(r,(e,t)=>{this._updateComputedConnection(t,e)}),_.default.forEach(this._connections,(e,t)=>{_.default.has(r,t)||this._updateComputedConnection(t)}),this._connections=r}_connect(i,a){if(u.default.set(this._vue.descriptors,i,a),a)if(u.default.set(this._vue.values,i,void 0),a instanceof h)u.default.set(this._vue.refs,i,a),this._disconnects[i]=this._tree.connectReference(a,this._method);else if(a instanceof o){u.default.set(this._vue.refs,i,a);var e=this._updateQueryValue.bind(this,i);this._disconnects[i]=this._tree.connectQuery(a,e,this._method)}else{let t={},e={},r=(u.default.set(this._vue.refs,i,e),this._subConnectors[i]=new $(t,a,this._tree,this._method,e)),s=this._disconnects[i]=this._tree.truss.observe(()=>r.ready,e=>{e&&(s(),delete this._disconnects[i],u.default.set(this._vue.values,i,t))})}}_disconnect(e){u.default.delete(this._vue.refs,e),this._updateRefValue(e,void 0),_.default.has(this._subConnectors,e)&&(this._subConnectors[e].destroy(),delete this._subConnectors[e]),this._disconnects[e]&&this._disconnects[e](),delete this._disconnects[e],u.default.delete(this._vue.descriptors,e)}_updateRefValue(e,t){this._vue.values[e]!==t&&u.default.set(this._vue.values,e,t)}_updateQueryValue(e,t){this._vue.values[e]||u.default.set(this._vue.values,e,{});var r,s=this._vue.values[e];for(r in s)!Object.hasOwn(s,r)||_.default.includes(t,r)||u.default.delete(s,r);var i,a=this._tree.getObject(this._vue.descriptors[e].path);for(i of t)Object.hasOwn(s,i)||u.default.set(s,i,a[i])}}function L(e){if(e)return e instanceof y?e.toString():_.default.mapValues(e,L)}function k(e){return function(){try{return Promise.resolve(e.apply(this,arguments))}catch(e){return Promise.reject(e)}}}function O(e,t){return(e=E(e,()=>{t=null})).cancel=()=>{t&&(t(),t=null)},function s(i,a){let n=i.then,r=i.catch;i.then=(e,t)=>{let r=n.call(i,e,t);return r[a]=i[a],s(r,a),r};i.catch=e=>{let t=r.call(i,e);return t[a]=i[a],s(t,a),t};return i}(e,"cancel"),e}function E(e,t){return t?(t=k(t),e.then(e=>t().then(()=>e),e=>t().then(()=>Promise.reject(e)))):e}let K=["read","write","auth","set","update","commit","connect","peek","authenticate","unathenticate","certify","all"],P=[];class z{constructor(e,t,r){this._operation=e,this._delay=t,this._callback=r,this._fired=!1}initiate(){this.cancel(),this._fired=!1;var e=Date.now()-this._operation._startTimestamp;this._timeoutId=setTimeout(()=>{this._fired=!0,this._callback(this._operation)},this._delay-e)}cancel(){this._fired&&this._callback(this._operation),this._timeoutId&&clearTimeout(this._timeoutId)}}class H{constructor(e,t,r,s){this._type=e,this._method=t,this._target=r,this._operand=s,this._ready=!1,this._running=!1,this._ended=!1,this._tries=0,this._startTimestamp=Date.now(),this._slowHandles=[]}get type(){return this._type}get method(){return this._method}get target(){return this._target}get targets(){return"update"!==this._method?[this._target]:_.default.map(this._operand,(e,t)=>new h(this._target._tree,m(this._target.path,t),this._target._annotations))}get operand(){return this._operand}get ready(){return this._ready}get running(){return this._running}get ended(){return this._ended}get tries(){return this._tries}get error(){return this._error}onSlow(e,t){e=new z(this,e,t);this._slowHandles.push(e),e.initiate()}_setRunning(e){this._running=e}_setEnded(e){this._ended=e}_markReady(e){this._ready=!0,e||(this._tries=0),_.default.forEach(this._slowHandles,e=>e.cancel())}_clearReady(){this._ready=!0,this._startTimestamp=Date.now(),_.default.forEach(this._slowHandles,e=>e.initiate()),this._ready=!1}_incrementTries(){this._tries++}}class Q{constructor(e){this._bridge=e,this._callbacks={},Object.freeze(this)}intercept(e,t){if(!_.default.includes(K,e))throw new Error("Unknown intercept operation type: "+e);var r=_.default.difference(_.default.keys(t),["onBefore","onAfter","onError","onFailure"]);if(r.length)throw new Error("Unknown intercept callback types: "+r.join(", "));r={onBefore:this._addCallback("onBefore",e,t.onBefore),onAfter:this._addCallback("onAfter",e,t.onAfter),onError:this._addCallback("onError",e,t.onError),onFailure:this._addCallback("onFailure",e,t.onFailure)};return this._removeCallbacks.bind(this,e,r)}_addCallback(e,t,r){if(r)return e=this._getCallbacksKey(e,t),t=k(r),(this._callbacks[e]||(this._callbacks[e]=[])).push(t),t}_removeCallback(e,t,r){r&&(e=this._getCallbacksKey(e,t),this._callbacks[e])&&_.default.pull(this._callbacks[e],r)}_removeCallbacks(r,e){_.default.forEach(e,(e,t)=>{this._removeCallback(t,r,e)})}_getCallbacks(e,t,r){return[].concat(this._callbacks[this._getCallbacksKey(e,r)]||P,this._callbacks[this._getCallbacksKey(e,t)]||P,this._callbacks[this._getCallbacksKey(e,"all")]||P)}_getCallbacksKey(e,t){return e+"_"+t}execute(e,t,r,s,i){i=k(i);let a=this.createOperation(e,t,r,s);return this.begin(a).then(()=>{let t=()=>i().catch(e=>this._retryOrEnd(a,e).then(t));return t()}).then(e=>this.end(a).then(()=>e))}createOperation(e,t,r,s){return new H(e,t,r,s)}begin(t){return Promise.all(_.default.map(this._getCallbacks("onBefore",t.type,t.method),e=>e(t))).then(()=>{t.ended||t._setRunning(!0)},e=>this.end(t,e))}markReady(e){e._markReady()}clearReady(e){e._clearReady()}retry(t,r){return t._incrementTries(),t._error=r,Promise.all(_.default.map(this._getCallbacks("onError",t.type,t.method),e=>e(t,r))).then(e=>{if(!t.ended)return(e=_.default.some(e))&&delete t._error,e})}_retryOrEnd(t,r){return this.retry(t,r).then(e=>{if(!e)return this.end(t,r)},e=>this.end(t,e))}end(t,e){return t.ended?Promise.resolve():(t._setRunning(!1),t._setEnded(!0),e?t._error=e:delete t._error,Promise.all(_.default.map(this._getCallbacks("onAfter",t.type,t.method),e=>e(t))).then(()=>this._afterEnd(t),e=>(t._error=e,this._afterEnd(t))))}_afterEnd(t){if(t._markReady(!0),!t.error)return Promise.resolve();let e=this._getCallbacks("onFailure",t.type,t.method);return e&&setTimeout(()=>{_.default.forEach(e,e=>e(t))},0),Promise.reject(t.error)}}let B="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz",J=window.crypto&&window.crypto.getRandomValues&&window.crypto.getRandomValues.bind(window.crypto);class G{constructor(){this._lastUniqueKeyTime=0,this._lastRandomValues=[]}generateUniqueKey(e){e=e||Date.now();var t=new Array(20);let r=e;for(let e=7;0<=e;e--)t[e]=B.charAt(63&r),r=Math.floor(r/64);if(e===this._lastUniqueKeyTime){let e=11;for(;0<=e&&63===this._lastRandomValues[e];)this._lastRandomValues[e]=0,--e;if(-1===e)throw new Error("Internal assertion failure: ran out of unique IDs for this millisecond");this._lastRandomValues[e]+=1}else if(this._lastUniqueKeyTime=e,J){var s=new Uint8Array(12);J(s);for(let e=0;e<12;e++)this._lastRandomValues[e]=s[e]&(e?63:15)}else for(let e=0;e<12;e++)this._lastRandomValues[e]=Math.floor(Math.random()*(e?64:16));for(let e=0;e<12;e++)t[e+8]=B[this._lastRandomValues[e]];return t.join("")}}class Y{constructor(e,t,r,s){this._rootUrl=e,this._tree=t,this._dispatcher=s,this._bridge=r,this._vue=new u.default({data:{$root:{connected:void 0,timeOffset:0,user:void 0,userid:void 0,nowAtInterval(e){let t="now"+e;var r;return Object.hasOwn(this,t)||((r=()=>{u.default.set(this,t,Date.now()+this.timeOffset)})(),setInterval(r,e)),this[t]}}}}),this._auth={serial:0,initialAuthChangeReceived:!1,changePromise:Promise.resolve()},r.onAuth(e,this._handleAuthChange,this),this._connectInfoProperty("serverTimeOffset","timeOffset"),this._connectInfoProperty("connected","connected"),Object.freeze(this)}get root(){return this._vue.$data.$root}destroy(){this._bridge.offAuth(this._rootUrl,this._handleAuthChange,this),this._vue.$destroy()}authenticate(e){return this._auth.serial++,this._dispatcher.execute("auth","authenticate",new h(this._tree,"/"),e,()=>(e?this._bridge.authWithCustomToken(this._rootUrl,e):this._bridge.authAnonymously(this._rootUrl)).then(()=>this._auth.changePromise))}unauthenticate(){return this._auth.serial++,this._handleAuthChange(null).then(e=>{if(e)return this._dispatcher.execute("auth","unauthenticate",new h(this._tree,"/"),void 0,()=>this._bridge.unauth(this._rootUrl))})}_handleAuthChange(r){var e=!this._auth.initialAuthChangeReceived&&this._auth.serial;if(void 0!==r&&(this._auth.initialAuthChangeReceived=!0),!e){let e=this._auth.serial;if(this.root.user===r)return Promise.resolve(!1);let t=this._dispatcher.execute("auth","certify",new h(this._tree,"/"),r,()=>this.root.user!==r&&e===this._auth.serial&&(r&&Object.freeze(r),this.root.user=r,this.root.userid=r&&r.uid,!0));return this._auth.changePromise=this._auth.changePromise.then(()=>t).catch(),t}}_isAuthChangeStale(e){return this.root.user===e}_connectInfoProperty(e,t){var r=new URL(this._rootUrl);r.pathname=encodeURI("/.info/"+e),this._bridge.on(r.href,r.href,null,"value",e=>{this.root[t]=e.value})}}let X={__ob__:!0},Z=new Set(["beforeMount","mounted","beforeUpdate","updated","activated","deactivated","errorCaptured"]),ee=new Set(_.default.map(Z,e=>"hook:"+e)),te=Symbol("last-computed-value"),j,C;class S{get $info(){return this.$truss.info}get $store(){return this.$truss.store}get $now(){return this.$truss.now}$newKey(){return this.$truss.newKey()}$intercept(e,t){if(this.$destroyed)throw new Error("Object already destroyed");let r=this.$truss.intercept(e,t),s=()=>{r(),this.$off("hook:destroyed",s)};return this.$on("hook:destroyed",s),s}$connect(e,t){if(this.$destroyed)throw new Error("Object already destroyed");t||(t=e,e=void 0);let r=this.$truss.connect(e,function t(r,s){if(!s||s instanceof y)return s;if(_.default.isFunction(s)){let e=function(){return r.$$touchThis(),t(r,s.call(this))};return e}return _.default.mapValues(s,e=>t(r,e))}(this,t)),s=r.destroy,i=()=>(this.$off("hook:destroyed",i),s.call(r));return this.$on("hook:destroyed",i),r.destroy=i,r}$peek(e,t){if(this.$destroyed)throw new Error("Object already destroyed");let r=E(this.$truss.peek(e,t),()=>{this.$off("hook:destroyed",r.cancel)});return this.$on("hook:destroyed",r.cancel),r}$observe(e,t,r){if(this.$destroyed)throw new Error("Object already destroyed");let s,i=this.$truss.observe(()=>(this.$$touchThis(),e.call(this)),t.bind(this),{...r,vm:this});return s=()=>{i(),this.$off("hook:destroyed",s)},this.$on("hook:destroyed",s),s}$when(e,t){if(this.$destroyed)throw new Error("Object already destroyed");let r=this.$truss.when(()=>(this.$$touchThis(),e.call(this)),t);return E(r,()=>{this.$off("hook:destroyed",r.cancel)}),this.$on("hook:destroyed",r.cancel),r}}class R{get $parent(){return j.$parent.value}get $path(){return j.$path.value}get $truss(){return Object.defineProperty(this,"$truss",{value:this.$parent.$truss}),this.$truss}get $ref(){return Object.defineProperty(this,"$ref",{value:new h(this.$truss._tree,this.$path)}),this.$ref}get $refs(){return this.$ref}get $key(){return Object.defineProperty(this,"$key",{value:c(this.$path.slice(this.$path.lastIndexOf("/")+1))}),this.$key}get $data(){return this}get $hidden(){return!1}get $empty(){return _.default.isEmpty(this.$data)}get $keys(){return _.default.keys(this.$data)}get $values(){return _.default.values(this.$data)}get $ready(){return this.$ref.ready}get $overridden(){return!1}$nextTick(){if(this.$destroyed)throw new Error("Object already destroyed");let e=this.$truss.nextTick();return E(e,()=>{this.$off("hook:destroyed",e.cancel)}),this.$on("hook:destroyed",e.cancel),e}$freezeComputedProperty(){if(!_.default.isBoolean(C))throw new Error("Cannot freeze a computed property outside of its getter function");C=!0}get $lastComputedValue(){if(_.default.isBoolean(C))return te;throw new Error("Cannot use last computed value of a property outside of its getter function")}$set(e){return this.$ref.set(e)}$update(e){return this.$ref.update(e)}$override(e){return this.$ref.override(e)}$commit(e,t){return this.$ref.commit(e,t)}$$touchThis(){this.__ob__?this.__ob__.dep.depend():this.$parent?(Object.hasOwn(this.$parent,"$data")?this.$parent.$data:this.$parent)[this.$key]:this.$store}get $destroyed(){return!1}$on(e,t){if(this.$destroyed)throw new Error("Object already destroyed");if(ee.has(e))throw new Error(`Models don't support the "${e}" lifecycle event`);return(this.$$hooks[e]=this.$$hooks[e]||[]).push(t),this}$once(t,r){let s=this;function i(...e){s.$off(t,i),r(...e)}return i.fn=r,this.$on(t,i)}$off(e,t){if(e)if(t){if(_.default.isArray(e))for(var r of e)this.$off(r,t);else if(this.$$hooks[e]){var s=this.$$hooks[e];for(let e=0;e{e.$once&&e.$once[t]&&(--e.$once[t],this.$off(t,e)),e(...r)}),this}get $$hooks(){return Object.defineProperty(this,"$$hooks",{value:{},writable:!1,enumerable:!1,configurable:!1}),this.$$hooks}}W(S,R),_.default.forEach(R.prototype,(e,t)=>{Object.defineProperty(R.prototype,t,{value:e,enumerable:!1,configurable:!1,writable:!1})});class x{constructor(e){this.error=e}}class re{constructor(e){this.value=e}}class se{constructor(e,t){this._vue=e,this._trie={Class:R},this._debug=t,Object.freeze(this)}init(e,t){_.default.isPlainObject(e)&&(_.default.forEach(e,(e,t)=>{e.$trussMount||(e.$$trussMount=e.$$trussMount||[],e.$$trussMount.push(t))}),e=_.default.values(e),_.default.forEach(e,e=>{!e.$trussMount&&e.$$trussMount&&(e.$trussMount=e.$$trussMount,delete e.$$trussMount)})),e=_.default.uniq(e),_.default.forEach(e,e=>this._mountClass(e,t)),this._decorateTrie(this._trie)}destroy(){}_getMount(e,t,r){var s;let i;for(s of f(e,!0)){let e=s?i.children&&(i.children[s]||!t&&i.children.$):this._trie;if(!e){if(!t)return;i.children=i.children||{},e=i.children[s]={Class:R}}if(i=e,r&&r(i))break}return i}_findMount(e,t){if(e(t=t||this._trie))return t;for(var r of _.default.keys(t.children)){r=this._findMount(e,t.children[r]);if(r)return r}}_decorateTrie(t){_.default.forEach(t.children,e=>{this._decorateTrie(e),(e.local||e.localDescendants)&&(t.localDescendants=!0)})}_augmentClass(e){let t,r=e.prototype;for(;r&&r.constructor!==Object;){for(var s of Object.getOwnPropertyNames(r)){var i=Object.getOwnPropertyDescriptor(r,s);if("$"===s.charAt(0)){if(_.default.isEqual(i,Object.getOwnPropertyDescriptor(R.prototype,s)))continue;throw new Error(`Property names starting with "$" are reserved: ${e.name}.`+s)}if(Z.has(s)&&_.default.isFunction(r[s]))throw new Error(`Models don't support the "${s}" lifecycle method`);!i.get||t&&t[s]||((t=t||{})[s]={name:s,fullName:r.constructor.name+"."+s,get:i.get,set:i.set})}r=Object.getPrototypeOf(r)}for(var a of Object.getOwnPropertyNames(R.prototype))"constructor"===a||Object.hasOwn(e.prototype,a)||Object.defineProperty(e.prototype,a,Object.getOwnPropertyDescriptor(R.prototype,a));return t}_mountClass(a,n){let o=this._augmentClass(a),h=[],e=a.$trussMount;if(!e)throw new Error(`Class ${a.name} lacks a $trussMount static property`);_.default.isArray(e)||(e=[e]),_.default.forEach(e,e=>{if(_.default.isString(e)&&(e={path:e}),!n&&"/"===e.path)throw new Error("Data root already accessed, too late to mount class");var t,r=l(e.path);for(t of r.variables){if("$"===t||"$"===t.charAt(1))throw new Error("Invalid variable name: "+t);if("$"===t.charAt(0)&&(_.default.has(R.prototype,t)||X[t]))throw new Error("Variable name conflicts with built-in property or method: "+t);h.push(t)}var s=e.path.match(/\/([^/]*)$/)[1];if("$"===s.charAt(0)){if(e.placeholder)throw new Error(`Class ${a.name} mounted at wildcard ${s} cannot be a placeholder`)}else _.default.has(e,"placeholder")||(e.placeholder={});var i=this._getMount(e.path.replace(/\$[^/]*/g,"$"),!0);if(i.matcher&&(i.escapedKey===s||"$"===i.escapedKey.charAt(0)&&"$"===s.charAt(0)))throw new Error(`Multiple classes mounted at ${e.path}: ${i.Class.name}, `+a.name);_.default.assign(i,{Class:a,matcher:r,computedProperties:o,escapedKey:s},_.default.pick(e,"placeholder","local","keysUnsafe","hidden"))}),_.default(h).uniq().forEach(e=>{Object.defineProperty(a.prototype,e,{get(){return j?j[e]&&j[e].value:void 0}})})}createObject(e,r){var s=this._getMount(e)||{Class:R};try{if(s.matcher){var i,a=s.matcher.match(e);for(i in a)r[i]={value:a[i]}}j=r;let t=new s.Class;return j=null,s.keysUnsafe&&(r.$data={value:Object.create(null),configurable:!0,enumerable:!0}),s.hidden&&(r.$hidden={value:!0}),s.computedProperties&&_.default.forEach(s.computedProperties,e=>{r[e.name]=this._buildComputedPropertyDescriptor(t,e)}),t}catch(e){throw e.extra=_.default.assign({mount:s,properties:r,className:s.Class&&s.Class.name},e.extra),e}}_buildComputedPropertyDescriptor(i,a){let n=w.for(a.fullName),o,h,l=!1,u=()=>{let e=!1;var t=function(e,r){if(!this.$destroyed){this.$$touchThis();var s=C,i=(C=!1,performance.now());let t;try{try{t=e.get.call(this)}catch(e){t=new x(e)}finally{r.computeTime+=performance.now()-i,r.numRecomputes+=1}return t=C?new re(t):t}finally{C=s}}}.bind(i,a,n);t.toString=_.default.constant("compute "+a.fullName);let r=()=>{e=!0};r=this._vue.$watch(t,e=>{if(i.$destroyed)r();else if(h&&(h.cancel&&h.cancel(),h=void 0),_.default.isObject(e)&&_.default.isFunction(e.then)){let t=e.then(e=>{t===h&&s(e)},e=>{if(t===h&&s(new x(e))&&!e.trussExpectedException)throw e});h=t}else if(s(e)&&e instanceof x&&!e.error.trussExpectedException)throw e.error},{immediate:!0});t=_.default.last(this._vue._watchers||this._vue._scope.effects);function s(e){var t=performance.now();return e instanceof re&&(e=e.value,r(),i.$off("hook:destroyed",r)),e!==te&&!b(o,e)&&(l=!0,i[a.name]=e,l=!1,function t(e){if(_.default.isNil(e)||!_.default.isObject(e)||Object.isFrozen(e)||e.$truss)return e;e=Object.freeze(e);if(_.default.isArray(e))return _.default.map(e,e=>t(e));return _.default.mapValues(e,e=>t(e))}(e),n.numUpdates+=1,n.updateTime+=performance.now()-t,1)}t.id=-t.id,e?r():i.$on("hook:destroyed",r),i.$off("hook:created",u)};return i.$on("hook:created",u),{enumerable:!0,configurable:!0,get(){if(!l&&o instanceof x)throw o.error;return o},set(e){if(l)o=e;else{if(!a.set)throw new Error("You cannot set a computed property: "+a.name);a.set.call(this,e)}}}}destroyObject(e){Object.defineProperty(e,"$destroyed",{value:!0,enumerable:!1,configurable:!1})}emitLifecycleHook(e,t){_.default.isFunction(e[t])&&e[t](),e.$emit("hook:"+t)}isPlaceholder(e){e=this._getMount(e);return e&&e.placeholder}isLocal(e,t){e=this._getMount(e,!1,e=>e.local);if(e&&e.local)return!0;if(this._hasLocalProperties(e,t))throw new Error("Write on a mix of local and remote tree paths.");return!1}_hasLocalProperties(e,t){if(e){if(e.local)return!0;if(e.localDescendants&&_.default.isObject(t))for(var r in t)if(this._hasLocalProperties(e.children[p(r)]||e.children.$,t[r]))return!0}return!1}forEachPlaceholderChild(e,t){e=this._getMount(e);_.default.forEach(e&&e.children,e=>{e.placeholder&&t(e)})}checkVueObject(i,e,t){t||(t=new Set);var r=new Map;let s=this._findMount(e=>e.Class===i.constructor);var a,n,o,h,l,u,c,d=_.default(i).thru(Object.getOwnPropertyNames).reject(e=>X[e]||Object.hasOwn(R.prototype,e)||/^\$_/.test(e)).reject(e=>s&&s.matcher&&_.default.includes(s.matcher.variables,e)).map(e=>{let t;try{if((t=i[e])instanceof RegExp)return}catch{return}var r=Object.getOwnPropertyDescriptor(i,e),s=!r.enumerable&&r.set&&!Object.hasOwn(i,"$_"+e);return{key:e,value:t,descriptor:r,computed:s}}).compact().value();for({key:a,value:n,descriptor:o,computed:h}of d){if(!_.default.isArray(i)||!/^\d+$/.test(a)&&"length"!==a){if("value"in o||!o.get)throw new Error(`Value at ${e}, contained in a Firetruss object, has a rogue property: `+a);if(i.$truss&&o.enumerable)try{throw i[a]=n,new Error(`Firetruss object at ${e} has an enumerable non-Firebase property: `+a)}catch(e){if("firebase_overwrite"!==e.trussCode)throw e}}_.default.isObject(n)&&(t.has(n)||Object.isSealed(n)||_.default.isFunction(n)||_.default.isElement(n)||n instanceof Promise||(t.add(n),this.checkVueObject(n,m(e,p(a)),t)),h||n.$truss||r.set(n,a))}for({key:l,value:u,computed:c}of d)if(c&&_.default.isObject(u)&&!u.$truss){var f=r.get(u);if(f)throw new Error(`Firetruss object at ${e} has properties ${l} `+`and ${f} with an aliased value`)}}}class ie{constructor(e,t){this._coupler=e,this._query=t,this._listeners=[],this._keys=[],this._coupler._url.pathname=encodeURI(t.path),this._url=this._coupler._url.toString(),this._segments=f(t.path,!0),this._listening=!1,this.ready=!1}attach(e,t){this._listen(),this._listeners.push({operation:e,keysCallback:t}),this.ready&&(this._coupler._dispatcher.markReady(e),t)&&t(this._keys)}detach(e){e=_.default.findIndex(this._listeners,{operation:e});return 0<=e&&this._listeners.splice(e,1),this._listeners.length}_listen(){this._listening||(this._coupler._bridge.on(this._query.toString(),this._url,this._query.constraints,"value",this._handleSnapshot,this._handleError,this,{sync:!0}),this._listening=!0)}destroy(){this._coupler._bridge.off(this._query.toString(),this._url,this._query.constraints,"value",this._handleSnapshot,this),this._listening=!1,this.ready=!1;for(var e of this._keys)this._coupler._decoupleSegments(this._segments.concat(e))}_handleSnapshot(s){this._coupler._queueSnapshotCallback(()=>{if(this._listeners.length&&this._listening){var e=this._updateKeysAndApplySnapshot(s);if(!this.ready){this.ready=!0;for(var t of this._listeners)this._coupler._dispatcher.markReady(t.operation)}if(e)for(var r of this._listeners)r.keysCallback&&r.keysCallback(e)}})}_updateKeysAndApplySnapshot(e){let t;if(e.path===this._query.path){if((t=_.default.keys(e.value)).sort(),_.default.isEqual(this._keys,t))t=null;else{for(var r of _.default.difference(t,this._keys))this._coupler._coupleSegments(this._segments.concat(r));for(var s of _.default.difference(this._keys,t))this._coupler._decoupleSegments(this._segments.concat(s));this._keys=t}if(e.exists){var i,a=e.value,n=e.path;for(i of this._keys)e._path=n+"/"+i,e._key=void 0,e._value=a[i],this._coupler._applySnapshot(e);e._path=n,e._key=void 0,e._value=a}}else{var o;e.path.replace(/\/[^/]+/,"")===this._query.path&&(o=_.default.includes(this._keys,e.key),e.value?o||(this._coupler._coupleSegments(this._segments.concat(e.key)),this._keys.push(e.key),this._keys.sort(),t=this._keys):o&&(this._coupler._decoupleSegments(this._segments.concat(e.key)),_.default.pull(this._keys,e.key),this._keys.sort(),t=this._keys),this._coupler._applySnapshot(e))}return t}_handleError(r){if(this._listeners.length&&this._listening){this._listening=!1,this.ready=!1;for(var e of this._keys)this._coupler._decoupleSegments(this._segments.concat(e));this._keys=[],Promise.all(_.default.map(this._listeners,t=>(this._coupler._dispatcher.clearReady(t.operation),this._coupler._dispatcher.retry(t.operation,r).catch(e=>(t.operation._disconnect(e),!1))))).then(e=>{if(_.default.some(e))this._listeners.length&&this._listen();else for(var t of this._listeners)t.operation._disconnect(r)})}}}class ae{constructor(e,t,r){this._coupler=e,this.path=t,this.parent=r,this._coupler._url.pathname=encodeURI(t),this.url=this._coupler._url.toString(),this.operations=[],this.queryCount=0,this.listening=!1,this.ready=!1,this.children={}}get active(){return this.count||this.queryCount}get count(){return this.operations.length}listen(e){!e&&this.count?this.listening||(_.default.forEach(this.operations,e=>{this._coupler._dispatcher.clearReady(e)}),this._coupler._bridge.on(this.url,this.url,null,"value",this._handleSnapshot,this._handleError,this,{sync:!0}),this.listening=!0):_.default.forEach(this.children,e=>{e.listen()})}unlisten(e){!e&&this.listening?(this._coupler._bridge.off(this.url,this.url,null,"value",this._handleSnapshot,this),this.listening=!1,this._forAllDescendants(e=>{if(e.listening)return!1;e.ready&&(e.ready=!1)})):_.default.forEach(this.children,e=>{e.unlisten()})}_handleSnapshot(e){this._coupler._queueSnapshotCallback(()=>{this.listening&&this._coupler.isTrunkCoupled(e.path)&&(this._coupler._applySnapshot(e),this.ready||e.path!==this.path||(this.ready=!0,this.unlisten(!0),this._forAllDescendants(e=>{for(var t of e.operations)this._coupler._dispatcher.markReady(t)})))})}_handleError(r){if(this.count&&this.listening)return this.listening=!1,this._forAllDescendants(e=>{if(e.listening)return!1;e.ready&&(e.ready=!1);for(var t of e.operations)this._coupler._dispatcher.clearReady(t)}),this._coupler._prunePath(this.path),Promise.all(_.default.map(this.operations,t=>this._coupler._dispatcher.retry(t,r).catch(e=>(t._disconnect(e),!1)))).then(e=>{if(_.default.some(e))this.count&&this.listen();else for(var t of this.operations)t._disconnect(r)})}_forAllDescendants(t){!1!==t(this)&&_.default.forEach(this.children,e=>e._forAllDescendants(t))}collectCoupledDescendantPaths(t){return(t=t||{})[this.path]=this.active,this.active||_.default.forEach(this.children,e=>{e.collectCoupledDescendantPaths(t)}),t}}class ne{constructor(e,t,r,s,i){this._url=new URL(e),this._bridge=t,this._dispatcher=r,this._applySnapshot=s,this._pendingSnapshotCallbacks=[],this._throttled={processPendingSnapshots:this._processPendingSnapshots},this._prunePath=i,this._vue=new u.default({data:{root:void 0,queryHandlers:{}}}),this._vue._renderProxy=this._vue,this._nodeIndex=Object.create(null),Object.freeze(this),this._vue.$data.root=new ae(this,"/"),this._nodeIndex["/"]=this._root}get _root(){return this._vue.$data.root}get _queryHandlers(){return this._vue.$data.queryHandlers}destroy(){_.default.forEach(this._queryHandlers,e=>{e.destroy()}),this._root.unlisten(),this._vue.$destroy()}couple(e,t){return this._coupleSegments(f(e,!0),t)}_coupleSegments(e,t){let r,s=!t,i=!1;for(var a of e){let e=a?r.children&&r.children[a]:this._root;e||(e=new ae(this,`${"/"===r.path?"":r.path}/`+a,r),u.default.set(r.children,a,e),this._nodeIndex[e.path]=e),s=s||e.listening,i=i||e.ready,r=e}t?r.operations.push(t):r.queryCount++,s?t&&i&&this._dispatcher.markReady(t):r.listen()}decouple(e,t){return this._decoupleSegments(f(e,!0),t)}_decoupleSegments(t,e){var r,s=[];let i;for(r of t){if(!(i=r?i.children&&i.children[r]:this._root))break;s.push(i)}if(!i||!(e?i.count:i.queryCount))throw new Error("Path not coupled: "+(t.join("/")||"/"));if(e?_.default.pull(i.operations,e):i.queryCount--,e&&!i.count&&(i.listen(),i.listening)&&i.unlisten(),!i.active){for(let e=s.length-1;0{r.running&&!r._disconnected&&(this._coupler.couple(e.path,r),r._coupled=!0)}).catch(_.default.noop),r._disconnect}_disconnectReference(e,t,r,s){t._disconnected||(t._disconnected=!0,r&&r(),t._coupled&&(this._coupler.decouple(e.path,t),t._coupled=!1),this._dispatcher.end(t,s).catch(_.default.noop))}isReferenceReady(e){return this._checkHandle(e),this._coupler.isSubtreeReady(e.path)}connectQuery(e,t,r){this._checkHandle(e);let s=this._dispatcher.createOperation("read",r,e);return s._disconnect=this._disconnectQuery.bind(this,e,s),this._dispatcher.begin(s).then(()=>{s.running&&!s._disconnected&&(this._coupler.subscribe(e,s,t),s._coupled=!0)}).catch(_.default.noop),s._disconnect}_disconnectQuery(e,t,r){t._disconnected||(t._disconnected=!0,t._coupled&&(this._coupler.unsubscribe(e,t),t._coupled=!1),this._dispatcher.end(t,r).catch(_.default.noop))}isQueryReady(e){return this._coupler.isQueryReady(e)}_checkHandle(e){if(!e.belongsTo(this._truss))throw new Error("Reference belongs to another Truss instance")}throttleRemoteDataUpdates(e){this._coupler.throttleSnapshots(e)}update(t,e,r){r=_.default.mapValues(r,e=>d(e));var s=_.default.size(r);if(!s)return Promise.resolve();if("update"!==e&&"override"!==e||le(t.path,r),this._applyLocalWrite(r,"override"===e))return Promise.resolve();e=(e=>{let i;return _.default.forEach(e,(e,t)=>{var r="/"===t?[""]:f(t,!0);if(i){let e=0;for(var s=Math.min(i.length,r.length);ethis._bridge[n?"set":"update"](i,o,a).catch(e=>e.immediateFailure?E(this._repair(t,r),()=>Promise.reject(e)):Promise.reject(e)))}commit(i,a){let n=0,o=0,h={},l=(a=k(a),e=>{if(25<=n++){var t=new Error("Transaction needed too many retries, giving up");try{_.default.assign(t,{attemptCounts:h,sameValueCount:o})}catch{}return Promise.reject(t)}e=e||"initial",h[e]=(h[e]||0)+1;let r=new oe(i),s;return u.default.nextTick().then(()=>{var e=T(r.currentValue);return _.default.isEqual(e,s)&&(o+=1),s=e,a(r)}).then(()=>{if(!_.default.isEqual(s,T(r.currentValue)))return l("changed");if("abort"===r.outcome)return r;let t=_.default.mapValues(r.values,e=>d(e));switch(r.outcome){case"cancel":break;case"set":if(this._applyLocalWrite({[i.path]:t[""]}))return Promise.resolve();break;case"update":if(le(i.path,t),this._applyLocalWrite(t))return Promise.resolve();ue(i.path,t);break;default:throw new Error("Invalid transaction outcome: "+(r.outcome||"none"))}return this._url.pathname=encodeURI(i.path),this._bridge.transaction(this._url.toString(),s,t,this._writeSerial).then(e=>(_.default.forEach(e.snapshots,e=>this._integrateSnapshot(e)),e.committed?r:l("stale")),e=>!e.immediateFailure||"set"!==r.outcome&&"update"!==r.outcome?Promise.reject(e):E(this._repair(i,t),()=>Promise.reject(e)))})});return this._truss.peek(i,()=>this._dispatcher.execute("write","commit",i,void 0,l))}_repair(e,t){let r=e.path;e=_.default(t).keys().flatMap(e=>{let t=r;return e&&(t=m(t,e)),_.default.keys(this._coupler.findCoupledDescendantPaths(t))}).value();return Promise.all(_.default.map(e,e=>(this._url.pathname=encodeURI(e),this._bridge.once(this._url.toString()).then(e=>{this._integrateSnapshot(e)}))))}_applyLocalWrite(e,h){this._writeSerial++,this._localWriteTimestamp=this._truss.now;let l=[],u=0;_.default.forEach(e,(t,e)=>{var r=this._modeler.isLocal(e,t),s=(r&&u++,r?{[e]:!0}:this._coupler.findCoupledDescendantPaths(e));if(!_.default.isEmpty(s)){var i,a=("/"===e?0:e.length)+1;for(i in s){var n=i.slice(a);let e=t;if(n&&null!=t)for(var o of f(n))if(void 0===(e=e.$data[o]))break;_.default.isNil(e)?this._prune(i):(n=_.default.last(f(i)),this._plantValue(i,n,e,this._scaffoldAncestors(i,!1,l),!1,h,r,l)),h||r||(this._localWrites[i]=this._writeSerial)}}});for(var t of l)this._completeCreateObject(t);if(u&&u<_.default.size(e))throw new Error("Write on a mix of local and remote tree paths.");return h||!!u}_createObject(e,t){this._initialized||"/"===e||this.init();t={$parent:{value:t,configurable:!0,enumerable:!0},$path:{value:e}},"/"===e&&(t.$truss={value:this._truss}),e=this._modeler.createObject(e,t);return this._modeler.emitLifecycleHook(e,"beforeCreate"),this._defineObjectProperties(e,t),e}_defineObjectProperties(t,r){var s=t.__ob__;if(Object.defineProperties(t,r),s){let e=!1;for(var i of _.default.keys(r)){var a=Object.getOwnPropertyDescriptor(t,i);a.configurable&&a.enumerable&&(u.default.util.defineReactive(t,i),e=!0)}e&&s.dep.notify()}}_fixObject(e){for(var t of Object.getOwnPropertyNames(e)){var r=Object.getOwnPropertyDescriptor(e,t);r.configurable&&r.enumerable&&(r.enumerable=!1,_.default.startsWith(t,"$")&&(r.configurable=!1),Object.defineProperty(e,t,r))}}_completeCreateObject(e){this._modeler.emitLifecycleHook(e,"created")}_destroyObject(e){if(e&&e.$truss&&!e.$destroyed){this._modeler.emitLifecycleHook(e,"beforeDestroy"),this._modeler.destroyObject(e);for(var t of Object.getOwnPropertyNames(e.$data)){t=e.$data[t];t&&t.$parent===e&&this._destroyObject(t)}this._modeler.emitLifecycleHook(e,"destroyed")}}_integrateSnapshot(r){if(_.default.forEach(this._localWrites,(e,t)=>{r.writeSerial>=e&&delete this._localWrites[t]}),r.exists){var e,t=[],s=this._scaffoldAncestors(r.path,!0,t);s&&this._plantValue(r.path,r.key,r.value,s,!0,!1,!1,t);for(e of t)this._completeCreateObject(e)}else this._prune(r.path,null,!0)}_scaffoldAncestors(e,r,s){let i;var a=_.default.dropRight(f(e,!0));let n="/";for(let t=0;t{this._plantValue(m(s,t),c(t),e,r,n,o,h,l)}),e?this._plantPlaceholders(r,s,!1,l):_.default.forEach(r.$data,(e,t)=>{t=p(t);Object.hasOwn(i,t)||this._prune(m(s,t),null,n)}),r}this._destroyObject(r),!h&&_.default.isNil(i)?this._deleteFirebaseProperty(a,t):this._setFirebaseProperty(a,t,i)}}_plantPlaceholders(r,s,i,a){this._modeler.forEachPlaceholderChild(s,e=>{var t;void 0!==i&&i!==!!e.hidden||(t=c(e.escapedKey),Object.hasOwn(r.$data,t))||this._plantValue(m(s,e.escapedKey),t,e.placeholder,r,!1,!1,!1,a)})}_prune(e,t,r){t=t||{};var s=this.getObject(e);void 0===s||r&&this._avoidLocalWritePaths(e,t)||_.default.isEmpty(t)&&this._pruneAncestors(e,s)||!_.default.isObject(s)||this._pruneDescendants(s,t)}_avoidLocalWritePaths(t,r){for(var e in this._localWrites)if(Object.hasOwn(this._localWrites,e)){if(t===e||"/"===e||_.default.startsWith(t,e+"/"))return!0;if("/"===t||_.default.startsWith(e,t+"/")){var s=f(e,!0);for(let e=s.length;0(i=c(e.slice(1)),""));void 0!==s&&s!==this.root;){var n,o=s&&s.$parent||s===t&&this.getObject(a);this._modeler.isPlaceholder(s&&s.$path||e)||(n=r?null:[t],this._holdsConcreteData(s,n))||(r=!0,this._deleteFirebaseProperty(o,s&&s.$key||s===t&&i)),s=o}return r}_holdsConcreteData(e,t){return!(_.default.isNil(e)||t&&_.default.includes(t,e))&&(!_.default.isObject(e)||!e.$truss||_.default.some(e.$data,e=>this._holdsConcreteData(e,t)))}_pruneDescendants(a,n){if(n[a.$path])return!0;a.$overridden&&delete a.$overridden;let o=!1;return _.default.forEach(a.$data,(e,t)=>{let r=!0,s;var i;n[m(a.$path,p(t))]?(r=!1,s=!0):!_.default.isNil(e)&&e.$truss&&((i=this._modeler.isPlaceholder(e.$path))||_.default.has(n,e.$path))&&(s=this._pruneDescendants(e,n),r=!i&&!s),r&&this._deleteFirebaseProperty(a,t),o=o||s}),o}getObject(e){var t;let r;for(t of f(e))if(void 0===(r=t?r.$data[t]:this.root))return;return r}_getFirebasePropertyDescriptor(e,t,r){var s=Object.getOwnPropertyDescriptor(t,r);if(s){if(!s.enumerable){var i=t[r];if(!i||i.$parent!==e)throw new Error("Key conflict between Firebase and instance or computed properties at "+e.$path+": "+r)}if(!s.get||!s.set)throw new Error(`Unbound property at ${e.$path}: `+r)}else if(r in t)throw new Error(`Key conflict between Firebase and inherited property at ${e.$path}: `+r);return s}_setFirebaseProperty(e,t,r,s){var i=Object.hasOwn(e,"$data")?e.$data:e,e=this._getFirebasePropertyDescriptor(e,i,t);e?(s&&Object.defineProperty(i,t,{get:e.get,set:e.set,configurable:!0,enumerable:!1}),i[t]!==r&&(this._firebasePropertyEditAllowed=!0,i[t]=r,this._firebasePropertyEditAllowed=!1)):(u.default.set(i,t,r),e=Object.getOwnPropertyDescriptor(i,t),Object.defineProperty(i,t,{get:e.get,set:this._overwriteFirebaseProperty.bind(this,e,t),configurable:!0,enumerable:!s}))}_overwriteFirebaseProperty(e,t,r){if(!this._firebasePropertyEditAllowed)throw(t=new Error("Firebase data cannot be mutated directly: "+t)).trussCode="firebase_overwrite",t;e.set.call(this,r)}_deleteFirebaseProperty(e,t){var r=Object.hasOwn(e,"$data")?e.$data:e;this._getFirebasePropertyDescriptor(e,r,t),this._destroyObject(r[t]),u.default.delete(r,t)}checkVueObject(e,t){this._modeler.checkVueObject(e,t)}}function le(r,s){_.default.forEach(_.default.keys(s),e=>{if("/"===e.charAt(0)){if(!(e===r||"/"===r||_.default.startsWith(e,r+"/")&&e.length>r.length+1))throw new Error("Update item is not a descendant of target ref: "+e)}else{if(_.default.includes(e,"/"))throw new Error("Update item deep path must be absolute, taken from a reference: "+e);var t=m(r,p(e));if(Object.hasOwn(s,t))throw new Error(`Update items overlap: ${e} and `+t);s[t]=s[e],delete s[e]}});let i=_.default(s).keys().map(e=>m(e,"")).sortBy("length").value();_.default.forEach(s,(e,t)=>{for(var r of i){if(r.length>t.length)break;if(t!==r&&_.default.startsWith(t,r))throw new Error(`Update items overlap: ${r} and `+t)}})}function ue(e,t){let r="/"===e?1:e.length+1;_.default.forEach(_.default.keys(t),e=>{t[e.slice(r)]=t[e],delete t[e]})}function T(e){if(!_.default.isObject(e))return e;var t,r={},s=e.$data;for(t in s)Object.hasOwn(s,t)&&(r[p(t)]=T(s[t]));return r}let A,M,ce={};class D{constructor(e){if(!A)throw new Error("Truss worker not connected, please call Truss.connectWorker first");this._rootUrl=e.replace(/\/$/,""),this._keyGenerator=new G,this._dispatcher=new Q(A),this._vue=new u.default,A.trackServer(this._rootUrl),this._tree=new he(this,this._rootUrl,A,this._dispatcher),this._metaTree=new Y(this._rootUrl,this._tree,A,this._dispatcher),Object.freeze(this)}get info(){return this._metaTree.root}get store(){return this._tree.root}mount(e){this._tree.init(e)}destroy(){this._vue.$destroy(),this._tree.destroy(),this._metaTree.destroy()}get now(){return Date.now()+this.info.timeOffset}newKey(){return this._keyGenerator.generateUniqueKey(this.now)}authenticate(e){return this._metaTree.authenticate(e)}unauthenticate(){return this._metaTree.unauthenticate()}intercept(e,t){return this._dispatcher.intercept(e,t)}connect(e,t){return t||(t=e,e=void 0),(t instanceof y||_.default.isFunction(t))&&(t={_:t}),new $(e,t,this._tree,"connect")}peek(o,h){h=k(h||_.default.identity);let l,u;return O(Promise.resolve().then(()=>new Promise((t,s)=>{let r={},i,e=new $(r,{result:o},this._tree,"peek"),a=this.intercept("peek",{onFailure:r=>{!function t(e){if(e)return e instanceof y?r.target.isEqual(e):_.default.some(e,e=>t(e))}(e.at)||(s(r.error),l())}}),n=this.observe(()=>e.ready,e=>{e&&(n(),n=null,i=E(h(r.result),()=>{i=null,l()}).then(e=>{t(e)},e=>{s(e)}))});l=()=>{n&&(n(),n=null),a&&(a(),a=null),e&&(e.destroy(),e=null),i&&i.cancel&&i.cancel()},u=()=>{s(new Error("Canceled")),l()}})),u)}observe(e,s,i){let a=_.default.isObject(i&&i.precise),n=0,o;a&&(o=i.deep?_.default.cloneDeep(i.precise):_.default.clone(i.precise));let h;return h=this._vue.$watch(e,(t,r)=>{if(i&&i.precise){var e=a?i.deep?_.default.defaultsDeep({},t,i.precise):_.default.defaults({},t,i.precise):i.deep?_.default.cloneDeep(t):_.default.clone(t);if(_.default.isEqual(e,o))return;o=e}n++,h||i&&i.immediate?s(t,r):Promise.resolve().then(()=>{var e=i&&i.vm;1{let r=this.observe(s,e=>{e&&u.default.nextTick(()=>{(e=s())&&(t(e),a())})});_.default.has(i,"timeout")&&(n=setTimeout(()=>{n=null,e(new Error(i.timeoutMessage||"Timeout")),a()},i.timeout)),a=()=>{r&&(r(),r=null),n&&(clearTimeout(n),n=null),e(new Error("Canceled"))}}),a),a)}nextTick(){let r;return O(new Promise((e,t)=>{u.default.nextTick(e),r=()=>{t(new Error("Canceled"))}}),r)}throttleRemoteDataUpdates(e){this._tree.throttleRemoteDataUpdates(e)}checkObjectsForRogueProperties(){this._tree.checkVueObject(this._tree.root,"/")}static get computedPropertyStats(){return w}static async connectWorker(r,e){if(A)throw new Error("Worker already connected");if(_.default.isString(r)){var t=window.SharedWorker||window.Worker;if(!t)throw new Error("Browser does not implement Web Workers");if(!navigator.locks)throw new Error("Browser does not implement locks");r=new t(r);t=window.crypto.getRandomValues(new Uint32Array(1))[0];r.lockName=`truss_worker_lock_${Date.now()}.`+t,await new Promise((e,t)=>{navigator.locks.request(r.lockName,()=>(e(),new Promise(()=>{}))).catch(t)})}A=new q(r),M&&A.enableLogging(M);var s,{exposedFunctionNames:t,firebaseSdkVersion:e}=await A.init(r.lockName,e);Object.defineProperty(D,"FIREBASE_SDK_VERSION",{value:e});for(s of t)D.preExpose(s)}static get worker(){return ce}static preExpose(e){var t,r=e.split(".");let s=D.worker;for(t of r.slice(0,-1))Object.hasOwnProperty.call(s,t)||(s[t]={}),s=s[t];s[r[r.length-1]]=A.bindExposedFunction(e)}static bounceConnection(){return A.bounceConnection()}static suspend(){return A.suspend()}static debugPermissionDeniedErrors(e,t,r){return A.debugPermissionDeniedErrors(e,t,r)}static escapeKey(e){return p(e)}static unescapeKey(e){return c(e)}static enableLogging(e){M=e,A&&A.enableLogging(e)}get SERVER_TIMESTAMP(){return D.SERVER_TIMESTAMP}get VERSION(){return D.VERSION}get FIREBASE_SDK_VERSION(){return D.FIREBASE_SDK_VERSION}}return Object.defineProperties(D,{SERVER_TIMESTAMP:{value:g},VERSION:{value:"dev"},Model:{value:Object},ComponentPlugin:{value:{install(e,t){if(u.default!==e)throw new Error("Multiple versions of Vue detected");if(!t.truss)throw new Error("Need to pass `truss` instance as an option to use the ComponentPlugin");e={$truss:{value:t.truss},$destroyed:{get(){return this._isBeingDestroyed||this._isDestroyed}},$$touchThis:{value(){this.__ob__&&this.__ob__.dep.depend()}}},t=_.default(e).keys().union(_.default.keys(S.prototype)).intersection(_.default.keys(u.default.prototype)).value();if(t.length)throw new Error("Truss extension properties conflict with Vue properties: "+t.join(", "));Object.defineProperties(u.default.prototype,e),W(S,u.default)}}}}),"undefined"!=typeof window&&window.angular&&window.angular.module("firetruss",[]).constant("Truss",D),D}); //# sourceMappingURL=firetruss.umd.min.js.map \ No newline at end of file diff --git a/dist/firetruss.umd.min.js.map b/dist/firetruss.umd.min.js.map index 58ed391..8543227 100644 --- a/dist/firetruss.umd.min.js.map +++ b/dist/firetruss.umd.min.js.map @@ -1 +1 @@ -{"version":3,"file":"firetruss.umd.min.js","sources":["../src/angularCompatibility.js","../src/utils/LruCache.js","../src/utils/paths.js","../src/Bridge.js","../src/Reference.js","../src/utils/utils.js","../src/utils/stats.js","../src/Connector.js","../src/utils/promises.js","../src/Dispatcher.js","../src/KeyGenerator.js","../src/MetaTree.js","../src/Modeler.js","../src/Coupler.js","../src/Tree.js","../src/Truss.js"],"names":["bareDigest","vue","digestRequest","lastDigestRequest","let","digestInProgress","angularProxy","active","window","angular","initAngular","module","digest","watch","Error","defineModule","Truss","constant","debounceDigest","wait","debouncedDigest","_","debounce","config","$provide","decorator","$delegate","$exceptionHandler","rootScope","$watch","bind","proto","Object","getPrototypeOf","angularDigest","$digest","watcher","original","Vue","data","nextTick","call","last","_watchers","_scope","effects","id","Infinity","patchRenderWatcherGet","originalGet","prototype","get","this","e","vm","_watcher","errorHandler","forEach","method","noop","LruCacheItem","constructor","key","value","touch","timestamp","Date","now","pathSegments","maxSize","pruningSize","_items","create","_size","_maxSize","_pruningSize","Math","ceil","has","Boolean","item","set","_prune","delete","toArray","sortBy","take","pathMatchers","escapeKey","toString","replace","char","padStart","charCodeAt","unescapeKey","code","String","fromCharCode","parseInt","slice","escapeKeys","object","isObject","isExtensible","result","escapedKey","escapedValue","hasOwn","clone","joinPath","segment","segments","arguments","isString","charAt","splice","length","push","join","splitPath","path","leaveSegmentsEscaped","split","map","PathMatcher","pattern","variables","prefixMatch","endsWith","pathTemplate","match","freeze","test","_regex","RegExp","lastIndex","exec","bindings","i","makePathMatcher","matcher","size","keys","MIN_WORKER_VERSION","Snapshot","exists","writeSerial","_path","_value","_exists","undefined","_writeSerial","_key","Bridge","webWorker","_idCounter","_deferreds","_suspended","_servers","_callbacks","_log","_inboundMessages","_outboundMessages","_flushMessageQueue","_port","port","_shared","_dead","seal","onmessage","_receive","init","lockName","items","storage","localStorage","sessionStorage","getItem","_send","msg","then","response","workerVersion","version","minVersion","Promise","reject","livenessLockName","navigator","locks","request","crash","error","name","message","extra","shared","suspend","suspended","_receiveMessages","resolve","enableLogging","fn","console","log","promise","deferred","oneWay","params","postMessage","messages","event","concat","isFunction","bindExposedFunction","args","Array","errorFromJson","details","cause","updateLocalStorage","removeItem","setItem","trackServer","rootUrl","server","authListeners","authCallbackId","_registerCallback","_authCallback","url","callbackId","auth","listener","onAuth","callback","context","getAuth","offAuth","authWithCustomToken","authToken","authAnonymously","unauth","update","once","snapshot","on","listenerKey","spec","eventType","snapshotCallback","cancelCallback","options","handle","_onCallback","__callbackIds","catch","off","idsToDeregister","_findAndRemoveCallbackId","isMatch","_nullifyCallback","_deregisterCallback","snapshotJson","transaction","oldValue","relativeUpdates","snapshots","jsonSnapshot","onDisconnect","bounceConnection","apply","predicate","json","isError","propertyName","EMPTY_ANNOTATIONS","Handle","tree","annotations","_tree","_annotations","$ref","_pathPrefix","parent","Reference","child","isNil","children","escapedKeys","arg","isArray","mapping","subPath","rest","subRef","subMapping","peek","truss","isEqual","that","belongsTo","Query","super","_spec","_copyAndValidateSpec","queryTerms","encodeURIComponent","JSON","stringify","_string","ready","isQueryReady","constraints","annotate","assign","by","some","clause","childPath","startsWith","includes","toJSON","isReferenceReady","getObject","query","_checkForUndefinedPath","values","override","commit","updateFunction","SERVER_TIMESTAMP",".sv","isTrussEqual","a","b","isEqualWith","isTrussValueEqual","$truss","copyPrototype","prop","getOwnPropertyNames","defineProperty","getOwnPropertyDescriptor","StatItem","numRecomputes","numUpdates","computeTime","updateTime","add","runtime","runtimePerRecompute","runtimePerUpdate","toLogParts","totals","toFixed","stats","for","list","n","above","stat","lines","widths","range","line","max","column","wrap","getter","className","propName","startTime","performance","_computedWatchers","newValue","Connector","scope","connections","refs","_connections","_method","_subConnectors","_disconnects","_angularUnwatches","_data","_vue","descriptors","mapValues","destroy","_linkScopeProperties","descriptor","_bindComputedConnection","_connect","$on","$id","every","ignored","at","_unlinkScopeProperties","unwatch","_disconnect","$destroy","dataProperties","unused","configurable","enumerable","defineProperties","__ob__","dep","notify","connectionStats","_computeConnection","_updateComputedConnection","angularWatch","angularWatchSuppressed","immediate","flattenRefs","newDescriptor","descriptorChanged","_updateConnections","connectReference","updateFn","_updateQueryValue","connectQuery","subScope","subRefs","subConnector","unobserve","observe","subReady","_updateRefValue","childKeys","childKey","wrapPromiseCallback","promiseCancel","cancel","promiseFinally","propagatePromiseProperty","originalThen","originalCatch","onResolved","onRejected","derivedPromise","onFinally","INTERCEPT_KEYS","EMPTY_ARRAY","SlowHandle","operation","delay","_operation","_delay","_callback","_fired","initiate","elapsed","_startTimestamp","_timeoutId","setTimeout","clearTimeout","Operation","type","target","operand","_type","_target","_operand","_ready","_running","_ended","_tries","_slowHandles","targets","escapedPathFragment","running","ended","tries","_error","onSlow","_setRunning","_setEnded","_markReady","ending","_clearReady","_incrementTries","Dispatcher","bridge","_bridge","intercept","interceptKey","callbacks","badCallbackKeys","difference","wrappedCallbacks","onBefore","_addCallback","onAfter","onError","onFailure","_removeCallbacks","stage","_getCallbacksKey","wrappedCallback","_removeCallback","pull","_getCallbacks","operationType","execute","executor","createOperation","begin","executeWithRetries","_retryOrEnd","end","all","markReady","clearReady","retry","results","retrying","_afterEnd","onFailureCallbacks","ALPHABET","getRandomValues","crypto","KeyGenerator","_lastUniqueKeyTime","_lastRandomValues","generateUniqueKey","chars","prefix","floor","array","Uint8Array","random","MetaTree","dispatcher","_rootUrl","_dispatcher","$root","connected","timeOffset","user","userid","nowAtInterval","intervalMillis","setInterval","_auth","serial","initialAuthChangeReceived","changePromise","_handleAuthChange","_connectInfoProperty","root","$data","authenticate","token","unauthenticate","approved","supersededChange","authSerial","uid","_isAuthChangeStale","property","attribute","URL","pathname","encodeURI","href","snap","RESERVED_VALUE_PROPERTY_NAMES","UNSUPPORTED_LIFECYCLE_METHODS","Set","UNSUPPORTED_LIFECYCLE_HOOKS","LAST_COMPUTED_VALUE","Symbol","creatingObjectProperties","currentPropertyFrozen","BaseValue","$info","info","$store","store","$now","$newKey","newKey","$intercept","actionType","$destroyed","unintercept","uninterceptAndRemoveFinalizer","$off","$connect","connector","connect","wrapConnections","$$touchThis","originalDestroy","$peek","$observe","subjectFn","callbackFn","unobserveAndRemoveFinalizer","$when","expression","when","Value","$parent","$path","$refs","$key","lastIndexOf","$hidden","$empty","isEmpty","$keys","$values","$ready","$overridden","$nextTick","$freezeComputedProperty","isBoolean","$lastComputedValue","$set","$update","$override","$commit","depend","$$hooks","$once","cb","ev","$emit","writable","ErrorWrapper","FrozenWrapper","Modeler","debug","_trie","Class","_debug","classes","rootAcceptable","isPlainObject","$trussMount","$$trussMount","uniq","_mountClass","_decorateTrie","_getMount","scaffold","node","$","_findMount","local","localDescendants","_augmentClass","computedProperties","fullName","allVariables","mounts","mount","variable","placeholder","targetMount","pick","createObject","properties","_wrapProperties","keysUnsafe","hidden","_buildComputedPropertyDescriptor","valueKey","valueDescriptor","propertyStats","pendingPromise","writeAllowed","initialize","unwatchNow","compute","oldPropertyFrozen","finalValue","trussExpectedException","isFrozen","destroyObject","emitLifecycleHook","hook","isPlaceholder","isLocal","_hasLocalProperties","forEachPlaceholderChild","iteratee","checkVueObject","checkedObjects","objectPropertyValues","Map","candidate","computed","targetProperties","thru","compact","trussCode","isSealed","isElement","otherKey","QueryHandler","coupler","_coupler","_query","_listeners","_keys","_url","_segments","_listening","attach","keysCallback","_listen","detach","k","findIndex","_handleSnapshot","_handleError","sync","_decoupleSegments","_queueSnapshotCallback","updatedKeys","_updateKeysAndApplySnapshot","sort","_coupleSegments","rootValue","rootPath","_applySnapshot","hasKey","Node","operations","queryCount","listening","count","listen","skip","op","unlisten","_forAllDescendants","isTrunkCoupled","_prunePath","collectCoupledDescendantPaths","paths","Coupler","applySnapshot","prunePath","_pendingSnapshotCallbacks","_throttled","processPendingSnapshots","_processPendingSnapshots","queryHandlers","_renderProxy","_nodeIndex","_root","_queryHandlers","queryHandler","couple","superseded","decouple","ancestors","findCoupledDescendantPaths","subscribe","unsubscribe","isSubtreeReady","childSegment","extractChildSegment","throttleSnapshots","throttle","Transaction","ref","_ref","_outcome","_values","currentValue","outcome","_setOutcome","abort","","Tree","_truss","_firebasePropertyEditAllowed","_localWrites","_localWriteTimestamp","_initialized","_modeler","VERSION","_integrateSnapshot","_createObject","_fixObject","_completeCreateObject","createdObjects","_plantPlaceholders","_checkHandle","_disconnectReference","_disconnected","_coupled","_disconnectQuery","throttleRemoteDataUpdates","numValues","checkUpdateHasOnlyDescendantsWithNoOverlap","_applyLocalWrite","pathPrefix","prefixSegments","firstMismatchIndex","maxIndex","min","relativizePaths","immediateFailure","_repair","sameValueCount","attemptCounts","attemptTransaction","counter","txn","newOldValue","toFirebaseJson","committed","basePath","flatMap","numLocal","coupledDescendantPaths","descendantPath","offset","subValue","_plantValue","_scaffoldAncestors","_defineObjectProperties","observer","addedReactiveProperties","util","defineReactive","_destroyObject","remoteWrite","dropRight","ancestorPath","objectCreated","_setFirebaseProperty","escapedChildKey","_deleteFirebaseProperty","lockedDescendantPaths","_avoidLocalWritePaths","_pruneAncestors","_pruneDescendants","localWritePath","targetPath","targetObject","deleted","targetKey","targetParentPath","ghostObjects","_holdsConcreteData","coupledDescendantFound","shouldDelete","valueLocked","_getFirebasePropertyDescriptor","_overwriteFirebaseProperty","absolutePath","allPaths","otherPath","logging","workerFunctions","_keyGenerator","_metaTree","identity","cleanup","callbackPromise","usePreciseDefaults","precise","numCallbacks","oldValueClone","deep","cloneDeep","newValueClone","defaultsDeep","defaults","timeoutHandle","timeoutMessage","timeout","checkObjectsForRogueProperties","computedPropertyStats","connectWorker","Worker","SharedWorker","Uint32Array","await","exposedFunctionNames","firebaseSdkVersion","preExpose","worker","functionName","obj","hasOwnProperty","debugPermissionDeniedErrors","simulatedTokenGenerator","maxSimulationDuration","callFilter","debounceAngularDigest","FIREBASE_SDK_VERSION","Model","ComponentPlugin","install","Vue2","pluginOptions","prototypeExtension","_isBeingDestroyed","_isDestroyed","conflictingKeys","union","intersection"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"firetruss.umd.min.js","sources":["../src/utils/LruCache.js","../src/utils/paths.js","../src/Bridge.js","../src/Reference.js","../src/utils/utils.js","../src/utils/stats.js","../src/Connector.js","../src/utils/promises.js","../src/Dispatcher.js","../src/KeyGenerator.js","../src/MetaTree.js","../src/Modeler.js","../src/Coupler.js","../src/Tree.js","../src/Truss.js"],"names":["LruCacheItem","constructor","key","value","this","touch","timestamp","Date","now","pathSegments","maxSize","pruningSize","_items","Object","create","_size","_maxSize","_pruningSize","Math","ceil","has","Boolean","get","item","set","_prune","delete","_","toArray","sortBy","take","pathMatchers","escapeKey","toString","replace","char","padStart","charCodeAt","unescapeKey","code","String","fromCharCode","parseInt","slice","escapeKeys","object","isObject","isExtensible","let","result","escapedKey","escapedValue","hasOwn","clone","joinPath","segment","segments","arguments","isString","charAt","splice","length","push","join","splitPath","path","leaveSegmentsEscaped","split","map","PathMatcher","pattern","variables","prefixMatch","endsWith","pathTemplate","match","freeze","test","Error","_regex","RegExp","lastIndex","exec","bindings","i","makePathMatcher","matcher","size","keys","MIN_WORKER_VERSION","Snapshot","exists","writeSerial","_path","_value","_exists","undefined","_writeSerial","_key","Bridge","webWorker","_idCounter","_deferreds","_suspended","_servers","_callbacks","_log","noop","_inboundMessages","_outboundMessages","_flushMessageQueue","bind","_port","port","_shared","_dead","seal","onmessage","_receive","init","lockName","config","items","storage","window","localStorage","sessionStorage","getItem","_send","msg","then","response","workerVersion","version","minVersion","Promise","reject","livenessLockName","navigator","locks","request","crash","error","name","message","extra","shared","suspend","suspended","_receiveMessages","resolve","enableLogging","fn","console","log","id","promise","deferred","oneWay","params","postMessage","e","messages","event","concat","data","isFunction","call","bindExposedFunction","args","Array","prototype","errorFromJson","details","cause","forEach","updateLocalStorage","removeItem","setItem","trackServer","rootUrl","server","authListeners","authCallbackId","_registerCallback","_authCallback","url","callbackId","auth","listener","onAuth","callback","context","getAuth","offAuth","authWithCustomToken","authToken","authAnonymously","unauth","update","once","snapshot","on","listenerKey","spec","eventType","snapshotCallback","cancelCallback","options","handle","_onCallback","__callbackIds","catch","off","idsToDeregister","_findAndRemoveCallbackId","isMatch","_nullifyCallback","_deregisterCallback","snapshotJson","transaction","oldValue","relativeUpdates","snapshots","jsonSnapshot","onDisconnect","method","bounceConnection","apply","predicate","json","isError","propertyName","EMPTY_ANNOTATIONS","Handle","tree","annotations","_tree","_annotations","$ref","_pathPrefix","parent","Reference","child","isNil","children","escapedKeys","arg","isArray","mapping","subPath","rest","subRef","subMapping","peek","truss","isEqual","that","belongsTo","Query","super","_spec","_copyAndValidateSpec","queryTerms","encodeURIComponent","JSON","stringify","_string","ready","isQueryReady","constraints","annotate","assign","by","some","clause","childPath","startsWith","includes","toJSON","isReferenceReady","getObject","query","_checkForUndefinedPath","values","override","commit","updateFunction","SERVER_TIMESTAMP",".sv","isTrussEqual","a","b","isEqualWith","isTrussValueEqual","$truss","copyPrototype","prop","getOwnPropertyNames","defineProperty","getOwnPropertyDescriptor","StatItem","numRecomputes","numUpdates","computeTime","updateTime","add","runtime","runtimePerRecompute","runtimePerUpdate","toLogParts","totals","toFixed","stats","for","list","n","above","stat","lines","widths","range","line","max","column","wrap","getter","className","propName","startTime","performance","_computedWatchers","newValue","Connector","scope","connections","refs","_scope","_connections","_method","_subConnectors","_disconnects","_data","_vue","Vue","descriptors","mapValues","constant","destroy","_linkScopeProperties","descriptor","_bindComputedConnection","_connect","every","ignored","at","_unlinkScopeProperties","_disconnect","$destroy","dataProperties","unused","configurable","enumerable","defineProperties","__ob__","dep","notify","connectionStats","_computeConnection","_updateComputedConnection","$watch","immediate","flattenRefs","newDescriptor","descriptorChanged","_updateConnections","connectReference","updateFn","_updateQueryValue","connectQuery","subScope","subRefs","subConnector","unobserve","observe","subReady","_updateRefValue","childKeys","childKey","wrapPromiseCallback","promiseCancel","cancel","promiseFinally","propagatePromiseProperty","originalThen","originalCatch","onResolved","onRejected","derivedPromise","onFinally","INTERCEPT_KEYS","EMPTY_ARRAY","SlowHandle","operation","delay","_operation","_delay","_callback","_fired","initiate","elapsed","_startTimestamp","_timeoutId","setTimeout","clearTimeout","Operation","type","target","operand","_type","_target","_operand","_ready","_running","_ended","_tries","_slowHandles","targets","escapedPathFragment","running","ended","tries","_error","onSlow","_setRunning","_setEnded","_markReady","ending","_clearReady","_incrementTries","Dispatcher","bridge","_bridge","intercept","interceptKey","callbacks","badCallbackKeys","difference","wrappedCallbacks","onBefore","_addCallback","onAfter","onError","onFailure","_removeCallbacks","stage","_getCallbacksKey","wrappedCallback","_removeCallback","pull","_getCallbacks","operationType","execute","executor","createOperation","begin","executeWithRetries","_retryOrEnd","end","all","markReady","clearReady","retry","results","retrying","_afterEnd","onFailureCallbacks","ALPHABET","getRandomValues","crypto","KeyGenerator","_lastUniqueKeyTime","_lastRandomValues","generateUniqueKey","chars","prefix","floor","array","Uint8Array","random","MetaTree","dispatcher","_rootUrl","_dispatcher","$root","connected","timeOffset","user","userid","nowAtInterval","intervalMillis","setInterval","_auth","serial","initialAuthChangeReceived","changePromise","_handleAuthChange","_connectInfoProperty","root","$data","authenticate","token","unauthenticate","approved","supersededChange","authSerial","uid","_isAuthChangeStale","property","attribute","URL","pathname","encodeURI","href","snap","RESERVED_VALUE_PROPERTY_NAMES","UNSUPPORTED_LIFECYCLE_METHODS","Set","UNSUPPORTED_LIFECYCLE_HOOKS","LAST_COMPUTED_VALUE","Symbol","creatingObjectProperties","currentPropertyFrozen","BaseValue","$info","info","$store","store","$now","$newKey","newKey","$intercept","actionType","$destroyed","unintercept","uninterceptAndRemoveFinalizer","$off","$on","$connect","connector","connect","wrapConnections","$$touchThis","originalDestroy","$peek","$observe","subjectFn","callbackFn","unobserveAndRemoveFinalizer","vm","$when","expression","when","Value","$parent","$path","$refs","$key","lastIndexOf","$hidden","$empty","isEmpty","$keys","$values","$ready","$overridden","$nextTick","nextTick","$freezeComputedProperty","isBoolean","$lastComputedValue","$set","$update","$override","$commit","depend","$$hooks","$once","cb","ev","$emit","writable","ErrorWrapper","FrozenWrapper","Modeler","vue","debug","_trie","Class","_debug","classes","rootAcceptable","isPlainObject","$trussMount","$$trussMount","uniq","_mountClass","_decorateTrie","_getMount","scaffold","node","$","_findMount","local","localDescendants","_augmentClass","computedProperties","proto","fullName","getPrototypeOf","allVariables","mounts","mount","variable","placeholder","targetMount","pick","createObject","properties","keysUnsafe","hidden","_buildComputedPropertyDescriptor","propertyStats","pendingPromise","writeAllowed","initialize","unwatchNow","compute","oldPropertyFrozen","unwatch","finalValue","trussExpectedException","watcher","last","_watchers","effects","isFrozen","destroyObject","emitLifecycleHook","hook","isPlaceholder","isLocal","_hasLocalProperties","forEachPlaceholderChild","iteratee","checkVueObject","checkedObjects","objectPropertyValues","Map","candidate","computed","targetProperties","thru","compact","trussCode","isSealed","isElement","otherKey","QueryHandler","coupler","_coupler","_query","_listeners","_keys","_url","_segments","_listening","attach","keysCallback","_listen","detach","k","findIndex","_handleSnapshot","_handleError","sync","_decoupleSegments","_queueSnapshotCallback","updatedKeys","_updateKeysAndApplySnapshot","sort","_coupleSegments","rootValue","rootPath","_applySnapshot","hasKey","Node","operations","queryCount","listening","active","count","listen","skip","op","unlisten","_forAllDescendants","isTrunkCoupled","_prunePath","collectCoupledDescendantPaths","paths","Coupler","applySnapshot","prunePath","_pendingSnapshotCallbacks","_throttled","processPendingSnapshots","_processPendingSnapshots","queryHandlers","_renderProxy","_nodeIndex","_root","_queryHandlers","queryHandler","couple","superseded","decouple","ancestors","findCoupledDescendantPaths","subscribe","unsubscribe","isSubtreeReady","childSegment","extractChildSegment","Infinity","throttleSnapshots","debounce","throttle","Transaction","ref","_ref","_outcome","_values","currentValue","outcome","_setOutcome","abort","","Tree","_truss","_firebasePropertyEditAllowed","_localWrites","_localWriteTimestamp","_initialized","_modeler","VERSION","_integrateSnapshot","_createObject","_fixObject","_completeCreateObject","createdObjects","_plantPlaceholders","_checkHandle","_disconnectReference","_disconnected","_coupled","_disconnectQuery","throttleRemoteDataUpdates","numValues","checkUpdateHasOnlyDescendantsWithNoOverlap","_applyLocalWrite","pathPrefix","prefixSegments","firstMismatchIndex","maxIndex","min","relativizePaths","immediateFailure","_repair","sameValueCount","attemptCounts","attemptTransaction","counter","txn","newOldValue","toFirebaseJson","committed","basePath","flatMap","numLocal","coupledDescendantPaths","descendantPath","offset","subValue","_plantValue","_scaffoldAncestors","_defineObjectProperties","observer","addedReactiveProperties","util","defineReactive","_destroyObject","remoteWrite","dropRight","ancestorPath","objectCreated","_setFirebaseProperty","escapedChildKey","_deleteFirebaseProperty","lockedDescendantPaths","_avoidLocalWritePaths","_pruneAncestors","_pruneDescendants","localWritePath","targetPath","targetObject","deleted","targetKey","targetParentPath","ghostObjects","_holdsConcreteData","coupledDescendantFound","shouldDelete","valueLocked","_getFirebasePropertyDescriptor","_overwriteFirebaseProperty","absolutePath","allPaths","otherPath","logging","workerFunctions","Truss","_keyGenerator","_metaTree","identity","cleanup","callbackPromise","usePreciseDefaults","precise","numCallbacks","oldValueClone","deep","cloneDeep","newValueClone","defaultsDeep","defaults","timeoutHandle","timeoutMessage","timeout","checkObjectsForRogueProperties","computedPropertyStats","connectWorker","Worker","SharedWorker","Uint32Array","await","exposedFunctionNames","firebaseSdkVersion","preExpose","worker","functionName","obj","hasOwnProperty","debugPermissionDeniedErrors","simulatedTokenGenerator","maxSimulationDuration","callFilter","FIREBASE_SDK_VERSION","Model","ComponentPlugin","install","Vue2","pluginOptions","prototypeExtension","_isBeingDestroyed","_isDestroyed","conflictingKeys","union","intersection","angular","module"],"mappings":"gXAGMA,EACJC,YAAYC,EAAKC,GACfC,KAAKF,IAAMA,EACXE,KAAKD,MAAQA,EACbC,KAAKC,MAAK,CACd,CAEEA,QACED,KAAKE,UAAYC,KAAKC,IAAG,CAC7B,CACA,CCTA,IAAMC,EAAe,UDanBR,YAAYS,EAASC,GACnBP,KAAKQ,OAASC,OAAOC,OAAO,IAAI,EAChCV,KAAKW,MAAQ,EACbX,KAAKY,SAAWN,EAChBN,KAAKa,aAAeN,GAAeO,KAAKC,KAAe,GAAVT,CAAc,CAC/D,CAEEU,IAAIlB,GACF,OAAOmB,QAAQjB,KAAKQ,OAAOV,EAAI,CACnC,CAEEoB,IAAIpB,GACIqB,EAAOnB,KAAKQ,OAAOV,GACzB,GAAKqB,EAEL,OADAA,EAAKlB,MAAK,EACHkB,EAAKpB,KAChB,CAEEqB,IAAItB,EAAKC,GACP,IAAMoB,EAAOnB,KAAKQ,OAAOV,GACrBqB,EACFA,EAAKpB,MAAQA,GAETC,KAAKW,OAASX,KAAKY,UAAUZ,KAAKqB,OAAM,EAC5CrB,KAAKQ,OAAOV,GAAO,IAAIF,EAAaE,EAAKC,CAAK,EAC9CC,KAAKW,OAAS,EAEpB,CAEEW,OAAOxB,GACQE,KAAKQ,OAAOV,KAEzB,OAAOE,KAAKQ,OAAOV,GACnBE,EAAAA,KAAKW,MACT,CAEEU,SACE,IAEWF,EAAX,IAAWA,KADTI,EAAAA,QAAEvB,KAAKQ,MAAM,EAAEgB,QAAO,EAAGC,OAAO,WAAW,EAAEC,KAAK1B,KAAKa,YAAY,EAAEd,MAAK,EAC3CC,KAAKsB,OAAOH,EAAKrB,GAAG,CACzD,CACA,ECtDkC,GAAI,EAChC6B,EAAe,GAId,SAASC,EAAU9B,GACxB,OAAKA,GAEEA,EAAI+B,SAAQ,EAAGC,QAAQ,4BAA6BC,GACzD,KAAOR,EAAAA,QAAES,SAASD,EAAKE,WAAW,CAAC,EAAEJ,SAAS,EAAE,EAAG,EAAG,GAAG,CAC7D,CACA,CAEO,SAASK,EAAYpC,GAC1B,OAAKA,GACEA,EAAI+B,SAAQ,EAAGC,QAAQ,kBAAmBK,GAC/CC,OAAOC,aAAaC,SAASH,EAAKI,MAAM,CAAC,EAAG,EAAE,CAAC,CACnD,CACA,CAEO,SAASC,EAAWC,GAEzB,GAAMlB,CAAAA,EAAAA,QAAEmB,SAASD,CAAM,GAAKhC,CAAAA,OAAOkC,aAAaF,CAAM,EAAI,OAAOA,EACjEG,IAAIC,EAASJ,EACb,IAAK,IAAM3C,KAAO2C,EAAQ,CACxB,IACM1C,EACA+C,EACAC,EAHDtC,OAAOuC,OAAOP,EAAQ3C,CAAG,IACxBC,EAAQ0C,EAAO3C,GACfgD,EAAalB,EAAU9B,CAAG,EAC1BiD,EAAeP,EAAWzC,CAAK,EACjC+C,IAAehD,GAAOiD,IAAiBhD,KAClB8C,EAAnBA,IAAWJ,EAAiBlB,EAAAA,QAAE0B,MAAMR,CAAM,EAC9CI,GAAOC,GAAcC,EACjBF,EAAO/C,KAASC,GAAO,OAAO8C,EAAO/C,IAE/C,CACE,OAAO+C,CACT,CAEO,SAASK,IACd,IACSC,EADHC,EAAW,GACjB,IAASD,KAAWE,UAEQ,OADAF,EAArB5B,EAAAA,QAAE+B,SAASH,CAAO,EACnBA,EADgC,GAAKA,GAC7BI,OAAO,CAAC,GAAWH,EAASI,OAAO,EAAGJ,EAASK,MAAM,EACjEL,EAASM,KAAKP,CAAO,EAGvB,MADoB,MAAhBC,EAAS,KAAYA,EAAS,GAAK,IAChCA,EAASO,KAAK,GAAG,CAC1B,CAEO,SAASC,EAAUC,EAAMC,GAC9B,IAAMhE,GAAOgE,EAAuB,OAAS,IAAMD,EACnDjB,IAAIQ,EAAW/C,EAAaa,IAAIpB,CAAG,EAMnC,OALKsD,IACHA,EAAWS,EAAKE,MAAM,GAAG,EACpBD,IAAsBV,EAAW7B,EAAAA,QAAEyC,IAAIZ,EAAUlB,CAAW,GACjE7B,EAAae,IAAItB,EAAKsD,CAAQ,GAEzBA,CACT,OAGMa,EACJpE,YAAYqE,GACVlE,KAAKmE,UAAY,GACjB,IAAMC,EAAc7C,EAAAA,QAAE8C,SAASH,EAAS,KAAK,EAEvCI,GADWJ,EAAbE,EAAuBF,EAAQ3B,MAAM,EAAG,CAAC,CAAC,EACzB2B,GAAQpC,QAAQ,aAAcyC,IAC9B,EAAfA,EAAMd,QAAYzD,KAAKmE,UAAUT,KAAKa,EAAMhC,MAAM,CAAC,CAAC,EACjD,IACR,EAED,GADA9B,OAAO+D,OAAOxE,KAAKmE,SAAS,EACxB,mCAAmCM,KAAKH,CAAY,EACtD,MAAM,IAAII,MAAM,oCAAsCR,CAAO,EAE/DlE,KAAK2E,OAAS,IAAIC,OAEhB,IAAMN,EAAaxC,QAAQ,UAAW,UAAU,GAAKsC,EAAc,QAAU,IAAI,CACvF,CAEEG,MAAMV,GACJ7D,KAAK2E,OAAOE,UAAY,EACxB,IAAMN,EAAQvE,KAAK2E,OAAOG,KAAKjB,CAAI,EACnC,GAAKU,EAAL,CACA,IAAMQ,EAAW,GACjB,IAAKnC,IAAIoC,EAAI,EAAGA,EAAIhF,KAAKmE,UAAUV,OAAQuB,CAAC,GAC1CD,EAAS/E,KAAKmE,UAAUa,IAAM9C,EAAYqC,EAAMS,EAAI,EAAE,EAExD,OAAOD,CALK,CAMhB,CAEEN,KAAKZ,GACH,OAAO7D,KAAK2E,OAAOF,KAAKZ,CAAI,CAChC,CAEEhC,WACE,OAAO7B,KAAK2E,OAAO9C,SAAQ,CAC/B,CACA,CAEO,SAASoD,EAAgBf,GAC9BtB,IAAIsC,EAAUvD,EAAauC,GAO3B,OANKgB,IACHA,EAAU,IAAIjB,EAAYC,CAAO,EApGV,MAsGnB3C,EAAAA,QAAE4D,KAAKxD,CAAY,GAA0B,OAAOA,EAAaJ,EAAAA,QAAE6D,KAAKzD,CAAY,EAAE,IAC1FA,EAAauC,GAAWgB,GAEnBA,CACT,CC7GA,IAAMG,EAAqB,cAGrBC,EACJzF,YAAY,CAACgE,KAAAA,EAAM9D,MAAAA,EAAOwF,OAAAA,EAAQC,YAAAA,CAAW,GAC3CxF,KAAKyF,MAAQ5B,EACb7D,KAAK0F,OAAS3F,EACdC,KAAK2F,QAAoBC,KAAAA,IAAV7F,EAAsBwF,GAAU,CAAA,EAAkB,OAAVxF,EACvDC,KAAK6F,aAAeL,CACxB,CAEE3B,WACE,OAAO7D,KAAKyF,KAChB,CAEEF,aACE,OAAOvF,KAAK2F,OAChB,CAEE5F,YACE,GAAoB6F,KAAAA,IAAhB5F,KAAK0F,OAAsB,MAAM,IAAIhB,MAAM,6BAA6B,EAC5E,OAAO1E,KAAK0F,MAChB,CAEE5F,UAEE,OADkB8F,KAAAA,IAAd5F,KAAK8F,OAAoB9F,KAAK8F,KAAO5D,EAAYlC,KAAKyF,MAAM3D,QAAQ,OAAQ,EAAE,CAAC,GAC5E9B,KAAK8F,IAChB,CAEEN,kBACE,OAAOxF,KAAK6F,YAChB,CACA,OAGqBE,EACnBlG,YAAYmG,GACVhG,KAAKiG,WAAa,EAClBjG,KAAKkG,WAAa,GAClBlG,KAAKmG,WAAa,CAAA,EAClBnG,KAAKoG,SAAW,GAChBpG,KAAKqG,WAAa,GAClBrG,KAAKsG,KAAO/E,EAAAA,QAAEgF,KACdvG,KAAKwG,iBAAmB,GACxBxG,KAAKyG,kBAAoB,GACzBzG,KAAK0G,mBAAqB1G,KAAK0G,mBAAmBC,KAAK3G,IAAI,EAC3DA,KAAK4G,MAAQZ,EAAUa,MAAQb,EAC/BhG,KAAK8G,QAAU,CAAC,CAACd,EAAUa,KAC3B7G,KAAK+G,MAAQnB,KAAAA,EACbnF,OAAOuG,KAAKhH,IAAI,EAChBA,KAAK4G,MAAMK,UAAYjH,KAAKkH,SAASP,KAAK3G,IAAI,CAClD,CAEEmH,KAAKC,EAAUC,GACb,IAAMC,EAAQ,GACd,IACE,IAAMC,EAAUC,OAAOC,cAAgBD,OAAOE,eAC9C,GAAI,CAACH,EAAS,MAAM,IAAI7C,MAAM,+CAA+C,EAC7E,IAAK9B,IAAIoC,EAAI,EAAGA,EAAIuC,EAAQ9D,OAAQuB,CAAC,GAAI,CACvC,IAAMlF,EAAMyH,EAAQzH,IAAIkF,CAAC,EACzBsC,EAAM5D,KAAK,CAAC5D,IAAAA,EAAKC,MAAOwH,EAAQI,QAAQ7H,CAAG,CAAC,CAAC,CACrD,CAGA,CAFM,OAGF,OAAOE,KAAK4H,MAAM,CAACC,IAAK,OAAQN,QAASD,EAAOD,OAAAA,EAAQD,SAAAA,CAAQ,CAAC,EAAEU,KAAKC,IACtE,IAAMC,EAAgBD,EAASE,QAAQ1D,MAAM,6BAA6B,EAC1E,GAAIyD,EAAe,CACjB,IAAME,EAAa7C,EAAmBd,MAAM,6BAA6B,EAMzE,GAAI,EAJeyD,EAAc,KAAOE,EAAW,KACjDF,EAAc,GAAKE,EAAW,IAC9BF,EAAc,KAAOE,EAAW,IAAMF,EAAc,IAAME,EAAW,KAGrE,OAAOC,QAAQC,OAAO,IAAI1D,gDACkBqD,EAASE,eAC/C5C,uBAChB,CAAW,CAEX,CAQM,OAPI0C,EAASM,kBACXC,UAAUC,MAAMC,QAAQT,EAASM,iBAAkB,KACjDrI,KAAKyI,MAAM,CAACC,MAAO,CACjBC,KAAM,QAASC,QAAS,oBAAqBC,MAAO,CAACC,OAAQ9I,KAAK8G,OAAO,CACrF,CAAW,CAAC,CACZ,CAAS,EAEIiB,CACb,CAAK,CACL,CAEEgB,QAAQC,GAEFhJ,KAAKmG,cADoB6C,EAAXpD,KAAAA,IAAdoD,EAAqC,CAAA,EACjBA,KACxBhJ,KAAKmG,WAAa6C,KAEhBhJ,KAAKiJ,iBAAiBjJ,KAAKwG,gBAAgB,EAC3CxG,KAAKwG,iBAAmB,GACpBxG,KAAKyG,kBAAkBhD,QAAQ0E,QAAQe,QAAO,EAAGpB,KAAK9H,KAAK0G,kBAAkB,EAEvF,CAEEyC,cAAcC,GACRA,GACS,CAAA,IAAPA,IACFA,EAAKC,QAAQC,IAAI3C,KAAK0C,OAAO,EAC7BrJ,KAAK4H,MAAM,CAACC,IAAK,wBAAyB9H,MAAO,CAAA,CAAI,CAAC,GAExDC,KAAKsG,KAAO8C,IAEZpJ,KAAK4H,MAAM,CAACC,IAAK,wBAAyB9H,MAAO,CAAA,CAAK,CAAC,EACvDC,KAAKsG,KAAO/E,EAAAA,QAAEgF,KAEpB,CAEEqB,MAAMgB,GACJA,EAAQW,GAAK,EAAEvJ,KAAKiG,WACpBrD,IAAI4G,EACJ,IAQQC,EARR,OAAIzJ,KAAK+G,MACAoB,QAAQC,OAAOpI,KAAK+G,KAAK,GACvB6B,EAAQc,OACjBF,EAAUrB,QAAQe,QAAO,GAEzBM,EAAU,IAAIrB,QAAQ,CAACe,EAASd,KAC9BpI,KAAKkG,WAAW0C,EAAQW,IAAM,CAACL,QAAAA,EAASd,OAAAA,CAAM,CACtD,CAAO,GACKqB,EAAWzJ,KAAKkG,WAAW0C,EAAQW,KAChCC,QAAUA,EACnBC,EAASE,OAASf,GAEf5I,KAAKyG,kBAAkBhD,QAAWzD,KAAKmG,YAC1CgC,QAAQe,QAAO,EAAGpB,KAAK9H,KAAK0G,kBAAkB,EAEhD1G,KAAKsG,KAAK,QAASsC,CAAO,EAC1B5I,KAAKyG,kBAAkB/C,KAAKkF,CAAO,EAC5BY,EACX,CAEE9C,qBACE1G,KAAKsG,KAAK,SAAUtG,KAAKyG,kBAAkBhD,OAAQ,UAAU,EAC7D,IACEzD,KAAK4G,MAAMgD,YAAY5J,KAAKyG,iBAAiB,EAC7CzG,KAAKyG,kBAAoB,EAK/B,CAJM,MAAOoD,GAGP,MAFA7J,KAAKsG,KAAK,gBAAiBuD,CAAC,EAC5BA,EAAEhB,MAAQ,CAACiB,SAAU9J,KAAKyG,iBAAiB,EACrCoD,CACZ,CACA,CAEE3C,SAAS6C,GACH/J,KAAK+G,QACL/G,KAAKmG,WACPnG,KAAKwG,iBAAmBxG,KAAKwG,iBAAiBwD,OAAOD,EAAME,IAAI,EAE/DjK,KAAKiJ,iBAAiBc,EAAME,IAAI,EAEtC,CAEEhB,iBAAiBa,GACf,IAAK,IAAMlB,KAAWkB,EAAU,CAC9B9J,KAAKsG,KAAK,QAASsC,CAAO,EAC1B,IAAMQ,EAAKpJ,KAAK4I,EAAQf,KACxB,GAAI,CAACtG,EAAAA,QAAE2I,WAAWd,CAAE,EAAG,MAAM,IAAI1E,MAAM,oBAAsBkE,EAAQf,GAAG,EACxEuB,EAAGe,KAAKnK,KAAM4I,CAAO,CAC3B,CACA,CAEEwB,oBAAoBzB,GAClB,OAAO,WACL,OAAO3I,KAAK4H,MAAM,CAACC,IAAK,OAAQc,KAAAA,EAAM0B,KAAMC,MAAMC,UAAUhI,MAAM4H,KAAK9G,SAAS,CAAC,CAAC,CACnF,EAAEsD,KAAK3G,IAAI,CAChB,CAEEkJ,QAAQN,GACN,IAAMa,EAAWzJ,KAAKkG,WAAW0C,EAAQW,IACzC,GAAI,CAACE,EAAU,MAAM,IAAI/E,MAAM,iDAAiD,EAChF,OAAO1E,KAAKkG,WAAW0C,EAAQW,IAC/BE,EAASP,QAAQN,EAAQ/F,MAAM,CACnC,CAEEuF,OAAOQ,GACL,IAAMa,EAAWzJ,KAAKkG,WAAW0C,EAAQW,IACzC,GAAI,CAACE,EAAU,MAAM,IAAI/E,MAAM,gDAAgD,EAC/E,OAAO1E,KAAKkG,WAAW0C,EAAQW,IAC/BE,EAASrB,OAAOoC,EAAc5B,EAAQF,MAAOe,EAASE,MAAM,CAAC,CACjE,CAEElB,MAAMG,GACJhG,IAAI6H,4BAAoC7B,EAAQF,MAAMC,SAASC,EAAQF,MAAME,QAM7E,MALIA,EAAQF,MAAMgC,QAAOD,kBAA0B7B,EAAQF,MAAMgC,UACjE1K,KAAK+G,MAAQ,IAAIrC,MAAM+F,CAAO,EAC1B7B,EAAQF,MAAMG,QAAO7I,KAAK+G,MAAM8B,MAAQD,EAAQF,MAAMG,OAC1DtH,EAAAA,QAAEoJ,QAAQ3K,KAAKkG,WAAY,CAAA,CAAEkC,OAAAA,CAAO,KAAMA,EAAOpI,KAAK+G,KAAK,CAAE,CAAC,EAC9D/G,KAAKkG,WAAa,GACZlG,KAAK+G,KACf,CAEE6D,mBAAmB,CAACtD,MAAAA,CAAK,GACvB,IACE,IACWnG,EADLoG,EAAUC,OAAOC,cAAgBD,OAAOE,eAC9C,IAAWvG,KAAQmG,EACE,OAAfnG,EAAKpB,MACPwH,EAAQsD,WAAW1J,EAAKrB,GAAG,EAE3ByH,EAAQuD,QAAQ3J,EAAKrB,IAAKqB,EAAKpB,KAAK,CAK9C,CAFM,OAGN,CAEEgL,YAAYC,GACV,GAAIvK,OAAOuC,OAAOhD,KAAKoG,SAAU4E,CAAO,EAAG,OAAO7C,QAAQe,QAAO,EACjE,IAAM+B,EAASjL,KAAKoG,SAAS4E,GAAW,CAACE,cAAe,EAAE,EACpDC,EAAiBnL,KAAKoL,kBAAkBpL,KAAKqL,cAAc1E,KAAK3G,KAAMiL,CAAM,CAAC,EACnFjL,KAAK4H,MAAM,CAACC,IAAK,SAAUyD,IAAKN,EAASO,WAAYJ,CAAc,CAAC,CACxE,CAEEE,cAAcJ,EAAQO,GACpBP,EAAOO,KAAOA,EACd,IAAK,IAAMC,KAAYR,EAAOC,cAAeO,EAASD,CAAI,CAC9D,CAEEE,OAAOV,EAASW,EAAUC,GACxB,IAAMH,EAAWE,EAAShF,KAAKiF,CAAO,EACtCH,EAASE,SAAWA,EACpBF,EAASG,QAAUA,EACnB5L,KAAKoG,SAAS4E,GAASE,cAAcxH,KAAK+H,CAAQ,EAClDA,EAASzL,KAAK6L,QAAQb,CAAO,CAAC,CAClC,CAEEc,QAAQd,EAASW,EAAUC,GACzB,IAAMV,EAAgBlL,KAAKoG,SAAS4E,GAASE,cAC7C,IAAKtI,IAAIoC,EAAI,EAAGA,EAAIkG,EAAczH,OAAQuB,CAAC,GAAI,CAC7C,IAAMyG,EAAWP,EAAclG,GAC/B,GAAIyG,EAASE,WAAaA,GAAYF,EAASG,UAAYA,EAAS,CAClEV,EAAc1H,OAAOwB,EAAG,CAAC,EACzB,KACR,CACA,CACA,CAEE6G,QAAQb,GACN,OAAOhL,KAAKoG,SAAS4E,GAASQ,IAClC,CAEEO,oBAAoBT,EAAKU,GACvB,OAAOhM,KAAK4H,MAAM,CAACC,IAAK,sBAAuByD,IAAAA,EAAKU,UAAAA,CAAS,CAAC,CAClE,CAEEC,gBAAgBX,GACd,OAAOtL,KAAK4H,MAAM,CAACC,IAAK,kBAAmByD,IAAAA,CAAG,CAAC,CACnD,CAEEY,OAAOZ,GACL,OAAOtL,KAAK4H,MAAM,CAACC,IAAK,SAAUyD,IAAAA,CAAG,CAAC,CAC1C,CAEElK,IAAIkK,EAAKvL,EAAOyF,GAAc,OAAOxF,KAAK4H,MAAM,CAACC,IAAK,MAAOyD,IAAAA,EAAKvL,MAAAA,EAAOyF,YAAAA,CAAW,CAAC,CAAE,CACvF2G,OAAOb,EAAKvL,EAAOyF,GAAc,OAAOxF,KAAK4H,MAAM,CAACC,IAAK,SAAUyD,IAAAA,EAAKvL,MAAAA,EAAOyF,YAAAA,CAAW,CAAC,CAAE,CAE7F4G,KAAKd,EAAK9F,GACR,OAAOxF,KAAK4H,MAAM,CAACC,IAAK,OAAQyD,IAAAA,EAAK9F,YAAAA,CAAW,CAAC,EAAEsC,KAAKuE,GAAY,IAAI/G,EAAS+G,CAAQ,CAAC,CAC9F,CAEEC,GAAGC,EAAajB,EAAKkB,EAAMC,EAAWC,EAAkBC,EAAgBf,EAASgB,GACzEC,EAAS,CACbN,YAAAA,EAAaE,UAAAA,EAAWC,iBAAAA,EAAkBC,eAAAA,EAAgBf,QAAAA,EAC1DjC,OAAQ,CAAC9B,IAAK,KAAM0E,YAAAA,EAAajB,IAAAA,EAAKkB,KAAAA,EAAMC,UAAAA,EAAWG,QAAAA,CAAO,CACpE,EACI,IAAMjB,EAAW3L,KAAK8M,YAAYnG,KAAK3G,KAAM6M,CAAM,EACnD7M,KAAKoL,kBAAkBO,EAAUkB,CAAM,EAEvCH,EAAiBK,cAAgBL,EAAiBK,eAAiB,GACnEL,EAAiBK,cAAcrJ,KAAKmJ,EAAOtD,EAAE,EAC7CvJ,KAAK4H,MAAM,CACTC,IAAK,KAAM0E,YAAAA,EAAajB,IAAAA,EAAKkB,KAAAA,EAAMC,UAAAA,EAAWlB,WAAYsB,EAAOtD,GAAIqD,QAAAA,CAC3E,CAAK,EAAEI,MAAMtE,IACPiD,EAASjD,CAAK,CACpB,CAAK,CACL,CAEEuE,IAAIV,EAAajB,EAAKkB,EAAMC,EAAWC,EAAkBd,GACvD,IAAMsB,EAAkB,GACpB3B,EACJ,GAAImB,EAAkB,CAIpB,GAAI,EAHJnB,EAAavL,KAAKmN,yBAChBT,EAAkBG,GAAUtL,EAAAA,QAAE6L,QAAQP,EAAQ,CAACN,YAAAA,EAAaE,UAAAA,EAAWb,QAAAA,CAAO,CAAC,CACvF,GACuB,OAAOzD,QAAQe,QAAO,EACvCgE,EAAgBxJ,KAAK6H,CAAU,CACrC,MACM,IAAK,IAAMhC,KAAMhI,EAAAA,QAAE6D,KAAKpF,KAAKqG,UAAU,EAAG,CACxC,IAAMwG,EAAS7M,KAAKqG,WAAWkD,GAC3BsD,EAAON,cAAgBA,GAAiBE,GAAaI,EAAOJ,YAAcA,GAC5ES,EAAgBxJ,KAAK6F,CAAE,CAEjC,CAKI,IAAK,IAAMA,KAAM2D,EAAiBlN,KAAKqN,iBAAiB9D,CAAE,EAC1D,OAAOvJ,KAAK4H,MAAM,CAACC,IAAK,MAAO0E,YAAAA,EAAajB,IAAAA,EAAKkB,KAAAA,EAAMC,UAAAA,EAAWlB,WAAAA,CAAU,CAAC,EAAEzD,KAAK,KAClF,IAAK,IAAMyB,KAAM2D,EAAiBlN,KAAKsN,oBAAoB/D,CAAE,CACnE,CAAK,CACL,CAEEuD,YAAYD,EAAQnE,EAAO6E,GACrB7E,GACF1I,KAAKsN,oBAAoBT,EAAOtD,EAAE,EAC5BM,EAAIW,EAAc9B,EAAOmE,EAAOlD,MAAM,EACxCkD,EAAOF,eACTE,EAAOF,eAAexC,KAAK0C,EAAOjB,QAAS/B,CAAC,EAE5CR,QAAQX,MAAMmB,CAAC,GAGjBgD,EAAOH,iBAAiBvC,KAAK0C,EAAOjB,QAAS,IAAItG,EAASiI,CAAY,CAAC,CAE7E,CAEEC,YAAYlC,EAAKmC,EAAUC,EAAiBlI,GAC1C,OAAOxF,KAAK4H,MACV,CAACC,IAAK,cAAeyD,IAAAA,EAAKmC,SAAAA,EAAUC,gBAAAA,EAAiBlI,YAAAA,CAAW,CACtE,EAAMsC,KAAKjF,IACDA,EAAO8K,YACT9K,EAAO8K,UAAYpM,EAAAA,QAAEyC,IAAInB,EAAO8K,UAAWC,GAAgB,IAAItI,EAASsI,CAAY,CAAC,GAEhF/K,EACR,CACL,CAEEgL,aAAavC,EAAKwC,EAAQ/N,GACxB,OAAOC,KAAK4H,MAAM,CAACC,IAAK,eAAgByD,IAAAA,EAAKwC,OAAAA,EAAQ/N,MAAAA,CAAK,CAAC,CAC/D,CAEEgO,mBACE,OAAO/N,KAAK4H,MAAM,CAACC,IAAK,kBAAkB,CAAC,CAC/C,CAEE8D,SAAS,CAACpC,GAAAA,EAAIc,KAAAA,CAAI,GAChB,IAAMwC,EAAS7M,KAAKqG,WAAWkD,GAC/B,GAAI,CAACsD,EAAQ,MAAM,IAAInI,MAAM,0BAA4B6E,CAAE,EAC3DsD,EAAOlB,SAASqC,MAAM,KAAM3D,CAAI,CACpC,CAEEe,kBAAkBO,EAAUkB,GAK1B,OAJAA,EAASA,GAAU,IACZlB,SAAWA,EAClBkB,EAAOtD,GAAK,MAAK,EAAEvJ,KAAKiG,YACxBjG,KAAKqG,WAAWwG,EAAOtD,IAAMsD,GACftD,EAClB,CAEE8D,iBAAiB9D,GACfvJ,KAAKqG,WAAWkD,GAAIoC,SAAWpK,EAAAA,QAAEgF,IACrC,CAEE+G,oBAAoB/D,GAClB,OAAOvJ,KAAKqG,WAAWkD,EAC3B,CAEE4D,yBAAyBxB,EAAUsC,GACjC,GAAKtC,EAASoB,cAAd,CACAnK,IAAIoC,EAAI,EACR,KAAOA,EAAI2G,EAASoB,cAActJ,QAAQ,CACxC,IAAM8F,EAAKoC,EAASoB,cAAc/H,GAC5B6H,EAAS7M,KAAKqG,WAAWkD,GAC/B,GAAKsD,EAAL,CAIA,GAAIoB,EAAUpB,CAAM,EAElB,OADAlB,EAASoB,cAAcvJ,OAAOwB,EAAG,CAAC,EAC3BuE,EAETvE,GAAK,CALX,MAFQ2G,EAASoB,cAAcvJ,OAAOwB,EAAG,CAAC,CAQ1C,CAdiC,CAejC,CACA,CAGA,SAASwF,EAAc0D,EAAMvE,GAC3B,GAAI,CAACuE,GAAQ3M,EAAAA,QAAE4M,QAAQD,CAAI,EAAG,OAAOA,EACrC,IAAMxF,EAAQ,IAAIhE,MAAMwJ,EAAKtF,OAAO,EACpC,IAEE,IAAK,IAAMwF,KADX1F,EAAMiB,OAASA,EACYuE,EACzB,GAAqB,YAAjBE,GAA+B3N,OAAOuC,OAAOkL,EAAME,CAAY,EACnE,IACE1F,EAAM0F,GAAgBF,EAAKE,EAInC,CAHQ,MACA1F,EAAMG,MAAQH,EAAMG,OAAS,GAC7BH,EAAMG,MAAMuF,GAAgBF,EAAKE,EACzC,CAIA,CAFI,MAAOvE,GACP,GAAI,CAAC,2BAA2BpF,KAAKoF,EAAEjB,OAAO,EAAG,MAAMiB,CAC3D,CACE,OAAOnB,CACT,CCjZA,IAAM2F,EAAoB,GAC1B5N,OAAO+D,OAAO6J,CAAiB,QAGlBC,EACXzO,YAAY0O,EAAM1K,EAAM2K,GACtBxO,KAAKyO,MAAQF,EACbvO,KAAKyF,MAAQ5B,EAAK/B,QAAQ,OAAQ,GAAG,EAAEA,QAAQ,MAAO,EAAE,GAAK,IACzD0M,IACFxO,KAAK0O,aAAeF,EACpB/N,OAAO+D,OAAOgK,CAAW,EAE/B,CAEEG,WAAY,OAAO3O,IAAK,CACxBF,UAEE,OADKE,KAAK8F,OAAM9F,KAAK8F,KAAO5D,EAAYlC,KAAKyF,MAAM3D,QAAQ,OAAQ,EAAE,CAAC,GAC/D9B,KAAK8F,IAChB,CAEEjC,WAAY,OAAO7D,KAAKyF,KAAM,CAC9BmJ,kBAAmB,MAAsB,MAAf5O,KAAKyF,MAAgB,GAAKzF,KAAKyF,KAAM,CAC/DoJ,aACE,OAAO,IAAIC,EAAU9O,KAAKyO,MAAOzO,KAAKyF,MAAM3D,QAAQ,WAAY,EAAE,EAAG9B,KAAK0O,YAAY,CAC1F,CAEEF,kBACE,OAAOxO,KAAK0O,cAAgBL,CAChC,CAEEU,QACE,GAAI,CAAC1L,UAAUI,OAAQ,OAAOzD,KAC9B,IACWF,EADLsD,EAAW,GACjB,IAAWtD,KAAOuD,UAAW,CAC3B,GAAI9B,EAAAA,QAAEyN,MAAMlP,CAAG,EAAG,OAClBsD,EAASM,KAAK9B,EAAU9B,CAAG,CAAC,CAClC,CACI,OAAO,IAAIgP,EACT9O,KAAKyO,MAAUzO,KAAK4O,YAAR,IAAuBxL,EAASO,KAAK,GAAG,EACpD3D,KAAK0O,YACX,CACA,CAEEO,WACE,GAAI,CAAC5L,UAAUI,OAAQ,OAAOzD,KAC9B,IAAMkP,EAAc,GACpB,IAAKtM,IAAIoC,EAAI,EAAGA,EAAI3B,UAAUI,OAAQuB,CAAC,GAAI,CACzC,IAAMmK,EAAM9L,UAAU2B,GACtB,GAAIzD,EAAAA,QAAE6N,QAAQD,CAAG,EAAG,CAClB,IAGWrP,EAHLuP,EAAU,GACVC,EAAUtP,KAAK4O,aAAeM,EAAYzL,OAAS,IAAIyL,EAAYvL,KAAK,GAAG,EAAM,IACjF4L,EAAOhO,EAAAA,QAAEgB,MAAMc,UAAW2B,EAAI,CAAC,EACrC,IAAWlF,KAAOqP,EAAK,CACrB,IAAMK,EACJ,IAAIV,EAAU9O,KAAKyO,MAAUa,EAAH,IAAc1N,EAAU9B,CAAG,EAAKE,KAAK0O,YAAY,EACvEe,EAAaD,EAAOP,SAASjB,MAAMwB,EAAQD,CAAI,EACjDE,IAAYJ,EAAQvP,GAAO2P,EACzC,CACQ,OAAOJ,CACf,CACM,GAAI9N,EAAAA,QAAEyN,MAAMG,CAAG,EAAG,OAClBD,EAAYxL,KAAK9B,EAAUuN,CAAG,CAAC,CACrC,CACI,OAAO,IAAIL,EACT9O,KAAKyO,MAAUzO,KAAK4O,YAAR,IAAuBM,EAAYvL,KAAK,GAAG,EAAK3D,KAAK0O,YAAY,CACnF,CAEEgB,KAAK/D,GACH,OAAO3L,KAAKyO,MAAMkB,MAAMD,KAAK1P,KAAM2L,CAAQ,CAC/C,CAEEpH,MAAML,GACJ,OAAOe,EAAgBf,CAAO,EAAEK,MAAMvE,KAAK6D,IAAI,CACnD,CAEEY,KAAKP,GACH,OAAOe,EAAgBf,CAAO,EAAEO,KAAKzE,KAAK6D,IAAI,CAClD,CAEE+L,QAAQC,GACN,OAAMA,aAAgBvB,GACftO,KAAKyO,QAAUoB,EAAKpB,OAASzO,KAAK6B,SAAQ,IAAOgO,EAAKhO,SAAQ,GACnEN,EAAAA,QAAEqO,QAAQ5P,KAAK0O,aAAcmB,EAAKnB,YAAY,CACpD,CAEEoB,UAAUH,GACR,OAAO3P,KAAKyO,MAAMkB,QAAUA,CAChC,CACA,OAGaI,UAAczB,EACzBzO,YAAY0O,EAAM1K,EAAM2I,EAAMgC,GAC5BwB,MAAMzB,EAAM1K,EAAM2K,CAAW,EAC7BxO,KAAKiQ,MAAQjQ,KAAKkQ,qBAAqB1D,CAAI,EACrC2D,EAAa5O,EAAAA,QAAEvB,KAAKiQ,KAAK,EAC5BjM,IAAI,CAACjE,EAAOD,IAAWA,EAAH,IAAUsQ,mBAAmBC,KAAKC,UAAUvQ,CAAK,CAAC,CAAG,EACzE0B,OAAM,EACNkC,KAAK,GAAG,EACX3D,KAAKuQ,QAAavQ,KAAKyF,MAAR,IAAiB0K,EAChC1P,OAAO+D,OAAOxE,IAAI,CACtB,CAGEwQ,YACE,OAAOxQ,KAAKyO,MAAMgC,aAAazQ,IAAI,CACvC,CAEE0Q,kBACE,OAAO1Q,KAAKiQ,KAChB,CAEEU,SAASnC,GACP,OAAO,IAAIuB,EACT/P,KAAKyO,MAAOzO,KAAKyF,MAAOzF,KAAKiQ,MAAO1O,EAAAA,QAAEqP,OAAO,GAAI5Q,KAAK0O,aAAcF,CAAW,CAAC,CACtF,CAEE0B,qBAAqB1D,GACnB,GAAI,CAACA,EAAKqE,GAAI,MAAM,IAAInM,MAAM,4BAA8B2L,KAAKC,UAAU9D,CAAI,CAAC,EAChF,GAAyD,GAApD,OAAQA,IAAS,SAAUA,IAAS,OAAQA,GAC/C,MAAM,IAAI9H,MACR,oEAAsE2L,KAAKC,UAAU9D,CAAI,CAAC,EAE9F,GAA2C,GAAtC,UAAWA,IAAS,SAAUA,GACjC,MAAM,IAAI9H,MACR,gEAAkE2L,KAAKC,UAAU9D,CAAI,CAAC,EAE1F,GAAI,CAACjL,EAAAA,QAAEuP,KAAK,CAAC,KAAM,OAAQ,KAAM,QAAS,QAASC,GAAUA,KAAUvE,CAAI,EACzE,MAAM,IAAI9H,MACR,sFACA2L,KAAKC,UAAU9D,CAAI,CAAC,EAGxB,GAAgB,UADhBA,EAAOjL,EAAAA,QAAE0B,MAAMuJ,CAAI,GACVqE,IAA6B,WAAZrE,EAAKqE,GAAiB,CAC9C,GAAI,EAAErE,EAAKqE,cAAc/B,GACvB,MAAM,IAAIpK,MAAM,yCAA2C8H,EAAKqE,EAAE,EAEpEjO,IAAIoO,EAAYxE,EAAKqE,GAAGhP,SAAQ,EAChC,GAAI,CAACN,EAAAA,QAAE0P,WAAWD,EAAWhR,KAAKyF,KAAK,EACrC,MAAM,IAAIf,MACR,8DAAgE8H,EAAKqE,EAAE,EAG3E,GADAG,EAAYA,EAAUzO,MAAMvC,KAAKyF,MAAMhC,MAAM,EAAE3B,QAAQ,OAAQ,EAAE,EAC7D,CAACP,EAAAA,QAAE2P,SAASF,EAAW,GAAG,EAC5B,MAAM,IAAItM,MACR,oEAAsE8H,EAAKqE,EAAE,EAEjFrE,EAAKqE,GAAKG,EAAUlP,QAAQ,QAAS,EAAE,CAC7C,CAEI,OADArB,OAAO+D,OAAOgI,CAAI,EACXA,CACX,CAGE3K,WAAY,OAAO7B,KAAKuQ,OAAQ,CAChCY,SAAU,MAAO,WAAWnR,KAAK6B,SAAQ,CAAK,CAChD,OAGaiN,UAAkBR,EAE7BzO,YAAY0O,EAAM1K,EAAM2K,GACtBwB,MAAMzB,EAAM1K,EAAM2K,CAAW,EAC7B/N,OAAO+D,OAAOxE,IAAI,CACtB,CAEEwQ,YAAa,OAAOxQ,KAAKyO,MAAM2C,iBAAiBpR,IAAI,CAAE,CACtDD,YAAa,OAAOC,KAAKyO,MAAM4C,UAAUrR,KAAK6D,IAAI,CAAE,CACpDhC,WAAY,OAAO7B,KAAKyF,KAAM,CAC9B0L,SAAU,MAAO,eAAenR,KAAK6B,SAAQ,CAAK,CAElD8O,SAASnC,GACP,OAAO,IAAIM,EAAU9O,KAAKyO,MAAOzO,KAAKyF,MAAOlE,EAAAA,QAAEqP,OAAO,GAAI5Q,KAAK0O,aAAcF,CAAW,CAAC,CAC7F,CAEE8C,MAAM9E,GACJ,OAAO,IAAIuD,EAAM/P,KAAKyO,MAAOzO,KAAKyF,MAAO+G,EAAMxM,KAAK0O,YAAY,CACpE,CAEEtN,IAAIrB,GAEF,OADAC,KAAKuR,uBAAsB,EACpBvR,KAAKyO,MAAMtC,OAAOnM,KAAM,MAAO,EAAEA,KAAK6D,MAAO9D,CAAK,CAAC,CAC9D,CAEEoM,OAAOqF,GAEL,OADAxR,KAAKuR,uBAAsB,EACpBvR,KAAKyO,MAAMtC,OAAOnM,KAAM,SAAUwR,CAAM,CACnD,CAEEC,SAAS1R,GAEP,OADAC,KAAKuR,uBAAsB,EACpBvR,KAAKyO,MAAMtC,OAAOnM,KAAM,WAAY,EAAEA,KAAK6D,MAAO9D,CAAK,CAAC,CACnE,CAEE2R,OAAOC,GAEL,OADA3R,KAAKuR,uBAAsB,EACpBvR,KAAKyO,MAAMiD,OAAO1R,KAAM2R,CAAc,CACjD,CAEEJ,yBACE,GAAkB,eAAdvR,KAAK6D,KAAuB,MAAM,IAAIa,MAAM,+BAAiC1E,KAAK6D,IAAI,CAC9F,CACA,CC7MO,IAAM+N,EAAmBnR,OAAO+D,OAAO,CAACqN,MAAO,WAAW,CAAC,EAE3D,SAASC,EAAaC,EAAGC,GAC9B,OAAOzQ,EAAAA,QAAE0Q,YAAYF,EAAGC,EAAGE,CAAiB,CAC9C,CAEA,SAASA,EAAkBH,EAAGC,GAC5B,OAAID,IAAMC,GAAND,MAAWA,GAAXA,MAA4CC,GAC5CD,EAAEI,QAAUH,EAAEG,OAAeJ,IAAMC,EACnCD,EAAEnC,QAAgBmC,EAAEnC,QAAQoC,CAAC,EAAjC,KAAA,CACF,CAEO,SAASI,EAAcL,EAAGC,GAC/B,IAAK,IAAMK,KAAQ5R,OAAO6R,oBAAoBP,EAAExH,SAAS,EAC1C,gBAAT8H,GACJ5R,OAAO8R,eAAeP,EAAEzH,UAAW8H,EAAM5R,OAAO+R,yBAAyBT,EAAExH,UAAW8H,CAAI,CAAC,CAE/F,OCfMI,EACJ5S,YAAY8I,GACVpH,EAAAA,QAAEqP,OAAO5Q,KAAM,CAAC2I,KAAAA,EAAM+J,cAAe,EAAGC,WAAY,EAAGC,YAAa,EAAGC,WAAY,CAAC,CAAC,CACzF,CAEEC,IAAI3R,GACFnB,KAAK4S,aAAezR,EAAKyR,YACzB5S,KAAK6S,YAAc1R,EAAK0R,WACxB7S,KAAK2S,YAAcxR,EAAKwR,WACxB3S,KAAK0S,eAAiBvR,EAAKuR,aAC/B,CAEEK,cACE,OAAO/S,KAAK4S,YAAc5S,KAAK6S,UACnC,CAEEG,0BACE,OAAOhT,KAAK0S,cAAgB1S,KAAK4S,YAAc5S,KAAK0S,cAAgB,CACxE,CAEEO,uBACE,OAAOjT,KAAK2S,WAAa3S,KAAK6S,WAAa7S,KAAK2S,WAAa,CACjE,CAEEO,WAAWC,GACT,MAAO,CACFnT,KAAK2I,KAAR,SAAsB3I,KAAK+S,QAAU,KAAMK,QAAQ,CAAC,UAC/CpT,KAAK+S,QAAUI,EAAOJ,QAAU,KAAKK,QAAQ,CAAC,UAC/CpT,KAAK2S,mBAAuB3S,KAAK0S,cAAR,aACxB1S,KAAK2S,WAAa3S,KAAK0S,cAAgB,KAAKU,QAAQ,CAAC,UACtDpT,KAAKgT,oBAAoBI,QAAQ,CAAC,gBAClCpT,KAAKiT,iBAAiBG,QAAQ,CAAC,YAEzC,CACA,CAmDA,IAAAC,EAAe,UAhDbxT,cACEG,KAAKQ,OAAS,EAClB,CAEE8S,IAAI3K,GAEF,OADK3I,KAAKQ,OAAOmI,KAAO3I,KAAKQ,OAAOmI,GAAQ,IAAI8J,EAAS9J,CAAI,GACtD3I,KAAKQ,OAAOmI,EACvB,CAEE4K,WACE,OAAOhS,EAAAA,QAAEvB,KAAKQ,MAAM,EAAEgR,OAAM,EAAG/P,OAAON,GAAQ,CAACA,EAAK4R,OAAO,EAAEhT,MAAK,CACtE,CAEEuJ,IAAIkK,EAAI,IACN5Q,IAAIyQ,EAAQrT,KAAKuT,KACjB,GAAKF,EAAM5P,OAAX,CACA,IAAM0P,EAAS,IAAIV,EAAS,WAAW,EAGjCgB,GAFNlS,EAAAA,QAAEoJ,QAAQ0I,EAAOK,IAASP,EAAOL,IAAIY,CAAI,CAAE,CAAC,EAC5CL,EAAQ9R,EAAAA,QAAEG,KAAK2R,EAAOG,CAAC,EACT,IAAIf,EAAS,WAAW,GAEhCkB,GADNpS,EAAAA,QAAEoJ,QAAQ0I,EAAOK,IAASD,EAAMX,IAAIY,CAAI,CAAE,CAAC,EAC7BnS,EAAAA,QAAEyC,IAAIqP,EAAOlS,GAAQA,EAAK+R,WAAWC,CAAM,CAAC,GAGpDS,GAFND,EAAMjQ,KAAK+P,EAAMP,WAAWC,CAAM,CAAC,EACnCQ,EAAMjQ,KAAKyP,EAAOD,WAAWC,CAAM,CAAC,EACrB5R,EAAAA,QAAEyC,IAAIzC,EAAAA,QAAEsS,MAAMF,EAAM,GAAGlQ,MAAM,EAAGuB,GAAKzD,EAAAA,QAAEoS,CAAK,EAAE3P,IAAI8P,GAAQA,EAAK9O,GAAGvB,MAAM,EAAEsQ,IAAG,CAAE,GAC9FxS,EAAAA,QAAEoJ,QAAQgJ,EAAOG,IACfzK,QAAQC,IAAI/H,EAAAA,QAAEyC,IAAI8P,EAAM,CAACE,EAAQhP,IAAMzD,EAAAA,QAAES,SAASgS,EAAQJ,EAAO5O,EAAE,CAAC,EAAErB,KAAK,GAAG,CAAC,CACrF,CAAK,CAZkB,CAavB,CAEEsQ,KAAKC,EAAQC,EAAWC,GACtB,IAAMjT,EAAOnB,KAAKsT,IAAOa,EAAH,IAAgBC,CAAU,EAChD,OAAO,WAEL,IAAMC,EAAYC,YAAYlU,IAAG,EAC3BqN,EAAWzN,KAAKuU,mBAAqBvU,KAAKuU,kBAAkBH,GAAUrU,MAC5E,IACE,IAAMyU,EAAWN,EAAO/J,KAAKnK,IAAI,EAEjC,OADK8R,EAAarE,EAAU+G,CAAQ,IAAGrT,EAAKwR,YAAc,GACnD6B,CAIf,CAHO,QACCrT,EAAKyR,aAAe0B,YAAYlU,IAAG,EAAKiU,EACxClT,EAAKuR,eAAiB,CAC9B,CACA,CACA,CACA,QChFqB+B,EACnB5U,YAAY6U,EAAOC,EAAapG,EAAMT,EAAQ8G,GAC5CnU,OAAO+D,OAAOmQ,CAAW,EACzB3U,KAAK6U,OAASH,EACd1U,KAAK8U,aAAeH,EACpB3U,KAAKyO,MAAQF,EACbvO,KAAK+U,QAAUjH,EAEf9N,KAAKgV,eAAiB,GACtBhV,KAAKiV,aAAe,GACpBjV,KAAKkV,MAAQ,GACblV,KAAKmV,KAAO,IAAIC,EAAAA,QAAI,CAACnL,KAAM,CACzBoL,YAAa,GACbT,KAAMA,GAAQ,GACdpD,OAAQjQ,EAAAA,QAAE+T,UAAUX,EAAapT,EAAAA,QAAEgU,SAAS3P,KAAAA,CAAS,CAAC,CAC5D,CAAK,CAAC,EAEF5F,KAAKwV,QAAUxV,KAAKwV,QACpB/U,OAAOuG,KAAKhH,IAAI,EAEhBA,KAAKyV,qBAAoB,EAEzBlU,EAAAA,QAAEoJ,QAAQgK,EAAa,CAACe,EAAY5V,KAC9ByB,EAAAA,QAAE2I,WAAWwL,CAAU,EACzB1V,KAAK2V,wBAAwB7V,EAAK4V,CAAU,EAE5C1V,KAAK4V,SAAS9V,EAAK4V,CAAU,CAErC,CAAK,CACL,CAEElF,YACE,OAAOjP,EAAAA,QAAEsU,MAAM7V,KAAK8U,aAAc,CAACgB,EAAShW,KAC1C,IAAM4V,EAAa1V,KAAKmV,KAAKE,YAAYvV,GACzC,MAAK4V,CAAAA,CAAAA,IACDA,aAAsBpH,EAAeoH,EAClC1V,KAAKgV,eAAelV,IADyB0Q,KAE1D,CAAK,CACL,CAEEuF,SACE,OAAO/V,KAAKmV,KAAKP,IACrB,CAEE3K,WACE,OAAOjK,KAAKkV,KAChB,CAEEM,UACExV,KAAKgW,uBAAsB,EAC3BzU,EAAAA,QAAEoJ,QAAQ3K,KAAK8U,aAAc,CAACY,EAAY5V,KAASE,KAAKiW,YAAYnW,CAAG,CAAE,CAAC,EAC1EE,KAAKmV,KAAKe,SAAQ,CACtB,CAEET,uBACE,IAAMU,EAAiB5U,EAAAA,QAAE+T,UAAUtV,KAAK8U,aAAc,CAACsB,EAAQtW,KAAG,CAChEuW,aAAc,CAAA,EAAMC,WAAY,CAAA,EAAOpV,IAAK,KAC1C,IAAMwU,EAAa1V,KAAKmV,KAAKE,YAAYvV,GACzC,OAAI4V,aAAsB5G,EAAkB4G,EAAW3V,MAChDC,KAAKmV,KAAK3D,OAAO1R,EAChC,CACK,EAAC,EAEF,GADAW,OAAO8V,iBAAiBvW,KAAKkV,MAAOiB,CAAc,EAC9CnW,KAAK6U,OAAQ,CACf,IAAK,IAAM/U,KAAOE,KAAK8U,aACrB,GAAIhV,KAAOE,KAAK6U,OACd,MAAM,IAAInQ,MAAM,kDAAkD5E,CAAK,EAG3EW,OAAO8V,iBAAiBvW,KAAK6U,OAAQsB,CAAc,EAC/CnW,KAAK6U,OAAO2B,QAAQxW,KAAK6U,OAAO2B,OAAOC,IAAIC,OAAM,CAC3D,CACA,CAEEV,yBACOhW,KAAK6U,QACVtT,EAAAA,QAAEoJ,QAAQ3K,KAAK8U,aAAc,CAACY,EAAY5V,KACxC,OAAOE,KAAK6U,OAAO/U,EACzB,CAAK,CACL,CAEE6V,wBAAwB7V,EAAKsJ,GAC3B,IAAMuN,EAAkBtD,EAAMC,IAAI,iBAAiBxT,CAAK,EAClDoU,EAASlU,KAAK4W,mBAAmBjQ,KAAK3G,KAAMoJ,EAAIuN,CAAe,EAC/DxK,EAASnM,KAAK6W,0BAA0BlQ,KAAK3G,KAAMF,EAAKsJ,EAAIuN,CAAe,EACjF3W,KAAKmV,KAAK2B,OAAO5C,EAAQ/H,EAAQ,CAAC4K,UAAW,CAAA,CAAI,CAAC,CACtD,CAEEH,mBAAmBxN,EAAIuN,GACrB,IAAMtC,EAAYC,YAAYlU,IAAG,EACjC,IACE,OAAO4W,EAAY5N,EAAGe,KAAKnK,KAAK6U,MAAM,CAAC,CAI7C,CAHK,QACC8B,EAAgB/D,aAAe0B,YAAYlU,IAAG,EAAKiU,EACnDsC,EAAgBjE,eAAiB,CACvC,CACA,CAEEmE,0BAA0B/W,EAAKC,EAAO4W,GACpC,IAAMM,EAAgB1V,EAAAA,QAAE2I,WAAWnK,CAAK,EAAIA,EAAMC,KAAK6U,MAAM,EAAI9U,EAE3DmX,EAAoB,CAACpF,EADL9R,KAAKmV,KAAKE,YAAYvV,GACWmX,CAAa,EAC/DC,IACDP,GAAmBO,IAAmBP,EAAgBhE,YAAc,GACnEsE,GAIDA,aAAyB3I,GAAU,CAAC/M,EAAAA,QAAEP,IAAIhB,KAAKgV,eAAgBlV,CAAG,GACpEE,KAAKiW,YAAYnW,CAAG,EACpBE,KAAK4V,SAAS9V,EAAKmX,CAAa,GAEhCjX,KAAKgV,eAAelV,GAAKqX,mBAAmBF,CAAa,EAE3D7B,EAAAA,QAAIhU,IAAIpB,KAAKmV,KAAKE,YAAavV,EAAKmX,CAAa,GAT/CjX,KAAKiW,YAAYnW,CAAG,EAU1B,CAEEqX,mBAAmBxC,GACjBpT,EAAAA,QAAEoJ,QAAQgK,EAAa,CAACe,EAAY5V,KAClCE,KAAK6W,0BAA0B/W,EAAK4V,CAAU,CACpD,CAAK,EACDnU,EAAAA,QAAEoJ,QAAQ3K,KAAK8U,aAAc,CAACY,EAAY5V,KACnCyB,EAAAA,QAAEP,IAAI2T,EAAa7U,CAAG,GAAGE,KAAK6W,0BAA0B/W,CAAG,CACtE,CAAK,EACDE,KAAK8U,aAAeH,CACxB,CAEEiB,SAAS9V,EAAK4V,GAEZ,GADAN,EAAAA,QAAIhU,IAAIpB,KAAKmV,KAAKE,YAAavV,EAAK4V,CAAU,EACzCA,EAEL,GADAN,EAAAA,QAAIhU,IAAIpB,KAAKmV,KAAK3D,OAAQ1R,EAAK8F,KAAAA,CAAS,EACpC8P,aAAsB5G,EACxBsG,EAAAA,QAAIhU,IAAIpB,KAAKmV,KAAKP,KAAM9U,EAAK4V,CAAU,EACvC1V,KAAKiV,aAAanV,GAAOE,KAAKyO,MAAM2I,iBAAiB1B,EAAY1V,KAAK+U,OAAO,OACxE,GAAIW,aAAsB3F,EAAO,CACtCqF,EAAAA,QAAIhU,IAAIpB,KAAKmV,KAAKP,KAAM9U,EAAK4V,CAAU,EACvC,IAAM2B,EAAWrX,KAAKsX,kBAAkB3Q,KAAK3G,KAAMF,CAAG,EACtDE,KAAKiV,aAAanV,GAAOE,KAAKyO,MAAM8I,aAAa7B,EAAY2B,EAAUrX,KAAK+U,OAAO,CACzF,KAAW,CACL,IAAMyC,EAAW,GAAIC,EAAU,GAEzBC,GADNtC,EAAAA,QAAIhU,IAAIpB,KAAKmV,KAAKP,KAAM9U,EAAK2X,CAAO,EACfzX,KAAKgV,eAAelV,GACvC,IAAI2U,EAAU+C,EAAU9B,EAAY1V,KAAKyO,MAAOzO,KAAK+U,QAAS0C,CAAO,GAIjEE,EAAY3X,KAAKiV,aAAanV,GAAOE,KAAKyO,MAAMkB,MAAMiI,QAC1D,IAAMF,EAAalH,MACnBqH,IACOA,IACLF,EAAS,EACT,OAAO3X,KAAKiV,aAAanV,GACzBsV,EAAAA,QAAIhU,IAAIpB,KAAKmV,KAAK3D,OAAQ1R,EAAK0X,CAAQ,EACjD,CACA,CACA,CACA,CAEEvB,YAAYnW,GACVsV,EAAAA,QAAI9T,OAAOtB,KAAKmV,KAAKP,KAAM9U,CAAG,EAC9BE,KAAK8X,gBAAgBhY,EAAK8F,KAAAA,CAAS,EAC/BrE,EAAAA,QAAEP,IAAIhB,KAAKgV,eAAgBlV,CAAG,IAChCE,KAAKgV,eAAelV,GAAK0V,QAAO,EAChC,OAAOxV,KAAKgV,eAAelV,IAEzBE,KAAKiV,aAAanV,IAAME,KAAKiV,aAAanV,GAAI,EAClD,OAAOE,KAAKiV,aAAanV,GACzBsV,EAAAA,QAAI9T,OAAOtB,KAAKmV,KAAKE,YAAavV,CAAG,CACzC,CAEEgY,gBAAgBhY,EAAKC,GACfC,KAAKmV,KAAK3D,OAAO1R,KAASC,GAC5BqV,EAAAA,QAAIhU,IAAIpB,KAAKmV,KAAK3D,OAAQ1R,EAAKC,CAAK,CAE1C,CAEEuX,kBAAkBxX,EAAKiY,GAChB/X,KAAKmV,KAAK3D,OAAO1R,IACpBsV,EAAAA,QAAIhU,IAAIpB,KAAKmV,KAAK3D,OAAQ1R,EAAK,EAAE,EAEnC,IACWkY,EADLR,EAAWxX,KAAKmV,KAAK3D,OAAO1R,GAClC,IAAWkY,KAAYR,EAChB/W,CAAAA,OAAOuC,OAAOwU,EAAUQ,CAAQ,GAChCzW,EAAAA,QAAE2P,SAAS6G,EAAWC,CAAQ,GACjC5C,EAAAA,QAAI9T,OAAOkW,EAAUQ,CAAQ,EAGjC,IACWA,EADLvV,EAASzC,KAAKyO,MAAM4C,UAAUrR,KAAKmV,KAAKE,YAAYvV,GAAK+D,IAAI,EACnE,IAAWmU,KAAYD,EACjBtX,OAAOuC,OAAOwU,EAAUQ,CAAQ,GACpC5C,EAAAA,QAAIhU,IAAIoW,EAAUQ,EAAUvV,EAAOuV,EAAS,CAElD,CAEA,CAEA,SAAShB,EAAYpC,GACnB,GAAKA,EACL,OAAIA,aAAgBtG,EAAesG,EAAK/S,SAAQ,EACzCN,EAAAA,QAAE+T,UAAUV,EAAMoC,CAAW,CACtC,CChNO,SAASiB,EAAoBtM,GAClC,OAAO,WACL,IAEE,OAAOxD,QAAQe,QAAQyC,EAASqC,MAAMhO,KAAMqD,SAAS,CAAC,CAG5D,CAFM,MAAOwG,GACP,OAAO1B,QAAQC,OAAOyB,CAAC,CAC7B,CACA,CACA,CAEO,SAASqO,EAAc1O,EAAS2O,GAQrC,OAPA3O,EAAU4O,EAAe5O,EAAS,KAAO2O,EAAS,IAAK,CAAC,GAChDA,OAAS,KACVA,IACLA,EAAM,EACNA,EAAS,KACb,EAKA,SAASE,EAAyB7O,EAAS4E,GACzC,IAAMkK,EAAe9O,EAAQ1B,KAAMyQ,EAAgB/O,EAAQwD,MAC3DxD,EAAQ1B,KAAO,CAAC0Q,EAAYC,KAC1B,IAAMC,EAAiBJ,EAAanO,KAAKX,EAASgP,EAAYC,CAAU,EAGxE,OAFAC,EAAetK,GAAgB5E,EAAQ4E,GACvCiK,EAAyBK,EAAgBtK,CAAY,EAC9CsK,CACX,EACElP,EAAQwD,MAAQyL,IACd,IAAMC,EAAiBH,EAAcpO,KAAKX,EAASiP,CAAU,EAG7D,OAFAC,EAAetK,GAAgB5E,EAAQ4E,GACvCiK,EAAyBK,EAAgBtK,CAAY,EAC9CsK,CACX,EACE,OAAOlP,CACT,EAnB2BA,EAAS,QAAQ,EACnCA,CACT,CAmBO,SAAS4O,EAAe5O,EAASmP,GACtC,OAAKA,GACLA,EAAYV,EAAoBU,CAAS,EAClCnP,EAAQ1B,KAAKjF,GACX8V,EAAS,EAAG7Q,KAAK,IAAMjF,CAAM,EACnC6F,GACMiQ,EAAS,EAAG7Q,KAAK,IAAMK,QAAQC,OAAOM,CAAK,CAAC,CACpD,GANsBc,CAOzB,CCzCA,IAAMoP,EAAiB,CACrB,OAAQ,QAAS,OAAQ,MAAO,SAAU,SAAU,UAAW,OAAQ,eACvE,gBAAiB,UAAW,OAGxBC,EAAc,SAGdC,EACJjZ,YAAYkZ,EAAWC,EAAOrN,GAC5B3L,KAAKiZ,WAAaF,EAClB/Y,KAAKkZ,OAASF,EACdhZ,KAAKmZ,UAAYxN,EACjB3L,KAAKoZ,OAAS,CAAA,CAClB,CAEEC,WACErZ,KAAKmY,OAAM,EACXnY,KAAKoZ,OAAS,CAAA,EACd,IAAME,EAAUnZ,KAAKC,IAAG,EAAKJ,KAAKiZ,WAAWM,gBAC7CvZ,KAAKwZ,WAAaC,WAAW,KAC3BzZ,KAAKoZ,OAAS,CAAA,EACdpZ,KAAKmZ,UAAUnZ,KAAKiZ,UAAU,CACpC,EAAOjZ,KAAKkZ,OAASI,CAAO,CAC5B,CAEEnB,SACMnY,KAAKoZ,QAAQpZ,KAAKmZ,UAAUnZ,KAAKiZ,UAAU,EAC3CjZ,KAAKwZ,YAAYE,aAAa1Z,KAAKwZ,UAAU,CACrD,CACA,OAGMG,EACJ9Z,YAAY+Z,EAAM9L,EAAQ+L,EAAQC,GAChC9Z,KAAK+Z,MAAQH,EACb5Z,KAAK+U,QAAUjH,EACf9N,KAAKga,QAAUH,EACf7Z,KAAKia,SAAWH,EAChB9Z,KAAKka,OAAS,CAAA,EACdla,KAAKma,SAAW,CAAA,EAChBna,KAAKoa,OAAS,CAAA,EACdpa,KAAKqa,OAAS,EACdra,KAAKuZ,gBAAkBpZ,KAAKC,IAAG,EAC/BJ,KAAKsa,aAAe,EACxB,CAEEV,WAAY,OAAO5Z,KAAK+Z,KAAM,CAC9BjM,aAAc,OAAO9N,KAAK+U,OAAQ,CAClC8E,aAAc,OAAO7Z,KAAKga,OAAQ,CAClCO,cACE,MAAqB,WAAjBva,KAAK+U,QAA6B,CAAC/U,KAAKga,SACrCzY,EAAAA,QAAEyC,IAAIhE,KAAKia,SAAU,CAACla,EAAOya,IAC3B,IAAI1L,EACT9O,KAAKga,QAAQvL,MAAOvL,EAASlD,KAAKga,QAAQnW,KAAM2W,CAAmB,EACnExa,KAAKga,QAAQtL,YAAY,CAC5B,CACL,CAEEoL,cAAe,OAAO9Z,KAAKia,QAAS,CACpCzJ,YAAa,OAAOxQ,KAAKka,MAAO,CAChCO,cAAe,OAAOza,KAAKma,QAAS,CACpCO,YAAa,OAAO1a,KAAKoa,MAAO,CAChCO,YAAa,OAAO3a,KAAKqa,MAAO,CAChC3R,YAAa,OAAO1I,KAAK4a,MAAO,CAEhCC,OAAO7B,EAAOrN,GACNkB,EAAS,IAAIiM,EAAW9Y,KAAMgZ,EAAOrN,CAAQ,EACnD3L,KAAKsa,aAAa5W,KAAKmJ,CAAM,EAC7BA,EAAOwM,SAAQ,CACnB,CAEEyB,YAAY/a,GACVC,KAAKma,SAAWpa,CACpB,CAEEgb,UAAUhb,GACRC,KAAKoa,OAASra,CAClB,CAEEib,WAAWC,GACTjb,KAAKka,OAAS,CAAA,EACTe,IAAQjb,KAAKqa,OAAS,GAC3B9Y,EAAAA,QAAEoJ,QAAQ3K,KAAKsa,aAAczN,GAAUA,EAAOsL,OAAM,CAAE,CAC1D,CAEE+C,cAEElb,KAAKka,OAAS,CAAA,EACdla,KAAKuZ,gBAAkBpZ,KAAKC,IAAG,EAC/BmB,EAAAA,QAAEoJ,QAAQ3K,KAAKsa,aAAczN,GAAUA,EAAOwM,SAAQ,CAAE,EACxDrZ,KAAKka,OAAS,CAAA,CAClB,CAEEiB,kBACEnb,KAAKqa,MAAM,EACf,CACA,OAGqBe,EACnBvb,YAAYwb,GACVrb,KAAKsb,QAAUD,EACfrb,KAAKqG,WAAa,GAClB5F,OAAO+D,OAAOxE,IAAI,CACtB,CAEEub,UAAUC,EAAcC,GACtB,GAAI,CAACla,EAAAA,QAAE2P,SAAS0H,EAAgB4C,CAAY,EAC1C,MAAM,IAAI9W,MAAM,qCAAuC8W,CAAY,EAErE,IAAME,EACJna,EAAAA,QAAEoa,WAAWpa,EAAAA,QAAE6D,KAAKqW,CAAS,EAAG,CAAC,WAAY,UAAW,UAAW,YAAY,EACjF,GAAIC,EAAgBjY,OAClB,MAAM,IAAIiB,MAAM,qCAAuCgX,EAAgB/X,KAAK,IAAI,CAAC,EAE7EiY,EAAmB,CACvBC,SAAU7b,KAAK8b,aAAa,WAAYN,EAAcC,EAAUI,QAAQ,EACxEE,QAAS/b,KAAK8b,aAAa,UAAWN,EAAcC,EAAUM,OAAO,EACrEC,QAAShc,KAAK8b,aAAa,UAAWN,EAAcC,EAAUO,OAAO,EACrEC,UAAWjc,KAAK8b,aAAa,YAAaN,EAAcC,EAAUQ,SAAS,CACjF,EACI,OAAOjc,KAAKkc,iBAAiBvV,KAAK3G,KAAMwb,EAAcI,CAAgB,CAC1E,CAEEE,aAAaK,EAAOX,EAAc7P,GAChC,GAAKA,EAIL,OAHM7L,EAAME,KAAKoc,iBAAiBD,EAAOX,CAAY,EAC/Ca,EAAkBpE,EAAoBtM,CAAQ,GACnD3L,KAAKqG,WAAWvG,KAASE,KAAKqG,WAAWvG,GAAO,KAAK4D,KAAK2Y,CAAe,EACnEA,CACX,CAEEC,gBAAgBH,EAAOX,EAAca,GAC9BA,IACCvc,EAAME,KAAKoc,iBAAiBD,EAAOX,CAAY,EACjDxb,KAAKqG,WAAWvG,KAAMyB,EAAAA,QAAEgb,KAAKvc,KAAKqG,WAAWvG,GAAMuc,CAAe,CAC1E,CAEEH,iBAAiBV,EAAcI,GAC7Bra,EAAAA,QAAEoJ,QAAQiR,EAAkB,CAACS,EAAiBF,KAC5Cnc,KAAKsc,gBAAgBH,EAAOX,EAAca,CAAe,CAC/D,CAAK,CACL,CAEEG,cAAcL,EAAOM,EAAe3O,GAClC,MAAO,GAAG9D,OACRhK,KAAKqG,WAAWrG,KAAKoc,iBAAiBD,EAAOrO,CAAM,IAAM+K,EACzD7Y,KAAKqG,WAAWrG,KAAKoc,iBAAiBD,EAAOM,CAAa,IAAM5D,EAChE7Y,KAAKqG,WAAWrG,KAAKoc,iBAAiBD,EAAO,KAAK,IAAMtD,CAC9D,CACA,CAEEuD,iBAAiBD,EAAOX,GACtB,OAAUW,EAAH,IAAYX,CACvB,CAEEkB,QAAQD,EAAe3O,EAAQ+L,EAAQC,EAAS6C,GAC9CA,EAAW1E,EAAoB0E,CAAQ,EACvC,IAAM5D,EAAY/Y,KAAK4c,gBAAgBH,EAAe3O,EAAQ+L,EAAQC,CAAO,EAC7E,OAAO9Z,KAAK6c,MAAM9D,CAAS,EAAEjR,KAAK,KAChC,IAAMgV,EAAqB,IAClBH,EAAQ,EAAG3P,MAAMnD,GAAK7J,KAAK+c,YAAYhE,EAAWlP,CAAC,EAAE/B,KAAKgV,CAAkB,CAAC,EAEtF,OAAOA,EAAkB,CAC/B,CAAK,EAAEhV,KAAKjF,GAAU7C,KAAKgd,IAAIjE,CAAS,EAAEjR,KAAK,IAAMjF,CAAM,CAAC,CAC5D,CAEE+Z,gBAAgBH,EAAe3O,EAAQ+L,EAAQC,GAC7C,OAAO,IAAIH,EAAU8C,EAAe3O,EAAQ+L,EAAQC,CAAO,CAC/D,CAEE+C,MAAM9D,GACJ,OAAO5Q,QAAQ8U,IAAI1b,EAAAA,QAAEyC,IACnBhE,KAAKwc,cAAc,WAAYzD,EAAUa,KAAMb,EAAUjL,MAAM,EAC/D+N,GAAYA,EAAS9C,CAAS,CACpC,CAAK,EAAEjR,KAAK,KACDiR,EAAU2B,OAAO3B,EAAU+B,YAAY,CAAA,CAAI,CACtD,EAAOjR,GAAK7J,KAAKgd,IAAIjE,EAAWlP,CAAC,CAAC,CAClC,CAEEqT,UAAUnE,GACRA,EAAUiC,WAAU,CACxB,CAEEmC,WAAWpE,GACTA,EAAUmC,YAAW,CACzB,CAEEkC,MAAMrE,EAAWrQ,GAGf,OAFAqQ,EAAUoC,gBAAe,EACzBpC,EAAU6B,OAASlS,EACZP,QAAQ8U,IAAI1b,EAAAA,QAAEyC,IACnBhE,KAAKwc,cAAc,UAAWzD,EAAUa,KAAMb,EAAUjL,MAAM,EAC9DkO,GAAWA,EAAQjD,EAAWrQ,CAAK,CACzC,CAAK,EAAEZ,KAAKuV,IAIN,GAAItE,CAAAA,EAAU2B,MAGd,OAFM4C,EAAW/b,EAAAA,QAAEuP,KAAKuM,CAAO,IACjB,OAAOtE,EAAU6B,OACxB0C,CACb,CAAK,CACL,CAEEP,YAAYhE,EAAWrQ,GACrB,OAAO1I,KAAKod,MAAMrE,EAAWrQ,CAAK,EAAEZ,KAAKjF,IACvC,GAAI,CAACA,EAAQ,OAAO7C,KAAKgd,IAAIjE,EAAWrQ,CAAK,CACnD,EAAOmB,GAAK7J,KAAKgd,IAAIjE,EAAWlP,CAAC,CAAC,CAClC,CAEEmT,IAAIjE,EAAWrQ,GACb,OAAIqQ,EAAU2B,MAAcvS,QAAQe,QAAO,GAC3C6P,EAAU+B,YAAY,CAAA,CAAK,EAC3B/B,EAAUgC,UAAU,CAAA,CAAI,EACpBrS,EACFqQ,EAAU6B,OAASlS,EAGnB,OAAOqQ,EAAU6B,OAEZzS,QAAQ8U,IAAI1b,EAAAA,QAAEyC,IACnBhE,KAAKwc,cAAc,UAAWzD,EAAUa,KAAMb,EAAUjL,MAAM,EAC9DiO,GAAWA,EAAQhD,CAAS,CAClC,CAAK,EAAEjR,KACD,IAAM9H,KAAKud,UAAUxE,CAAS,EAC9BlP,IACEkP,EAAU6B,OAAS/Q,EACZ7J,KAAKud,UAAUxE,CAAS,EAEvC,EACA,CAEEwE,UAAUxE,GAER,GADAA,EAAUiC,WAAW,CAAA,CAAI,EACrB,CAACjC,EAAUrQ,MAAO,OAAOP,QAAQe,QAAO,EAC5C,IAAMsU,EAAqBxd,KAAKwc,cAAc,YAAazD,EAAUa,KAAMb,EAAUjL,MAAM,EAM3F,OALI0P,GACF/D,WAAW,KACTlY,EAAAA,QAAEoJ,QAAQ6S,EAAoBvB,GAAaA,EAAUlD,CAAS,CAAC,CACvE,EAAS,CAAC,EAEC5Q,QAAQC,OAAO2Q,EAAUrQ,KAAK,CACzC,CACA,CC3PA,IAAM+U,EAAW,mEAEXC,EAAkBlW,OAAOmW,QAAUnW,OAAOmW,OAAOD,iBACrDlW,OAAOmW,OAAOD,gBAAgB/W,KAAKa,OAAOmW,MAAM,QAE7BC,EACnB/d,cACEG,KAAK6d,mBAAqB,EAC1B7d,KAAK8d,kBAAoB,EAC7B,CAEEC,kBAAkB3d,GAChBA,EAAMA,GAAOD,KAAKC,IAAG,EACrB,IAAM4d,EAAQ,IAAI1T,MAAM,EAAE,EAC1B1H,IAAIqb,EAAS7d,EACb,IAAKwC,IAAIoC,EAAI,EAAQ,GAALA,EAAQA,CAAC,GACvBgZ,EAAMhZ,GAAKyY,EAASla,OAAgB,GAAT0a,CAAa,EACxCA,EAASnd,KAAKod,MAAMD,EAAS,EAAE,EAEjC,GAAI7d,IAAQJ,KAAK6d,mBAAoB,CACnCjb,IAAIoC,EAAI,GACR,KAAY,GAALA,GAAwC,KAA9BhF,KAAK8d,kBAAkB9Y,IACtChF,KAAK8d,kBAAkB9Y,GAAK,EAC5BA,EAAAA,EAEF,GAAU,CAAC,IAAPA,EACF,MAAM,IAAIN,MAAM,wEAAwE,EAE1F1E,KAAK8d,kBAAkB9Y,IAAM,CACnC,MAEM,GADAhF,KAAK6d,mBAAqBzd,EACtBsd,EAAiB,CACnB,IAAMS,EAAQ,IAAIC,WAAW,EAAE,EAC/BV,EAAgBS,CAAK,EACrB,IAAKvb,IAAIoC,EAAI,EAAGA,EAAI,GAAIA,CAAC,GAEvBhF,KAAK8d,kBAAkB9Y,GAAKmZ,EAAMnZ,IAAMA,EAAI,GAAO,GAE7D,MACQ,IAAKpC,IAAIoC,EAAI,EAAGA,EAAI,GAAIA,CAAC,GAEvBhF,KAAK8d,kBAAkB9Y,GAAKlE,KAAKod,MAAMpd,KAAKud,OAAM,GAAMrZ,EAAI,GAAK,GAAG,EAI1E,IAAKpC,IAAIoC,EAAI,EAAGA,EAAI,GAAIA,CAAC,GACvBgZ,EAAMhZ,EAAI,GAAKyY,EAASzd,KAAK8d,kBAAkB9Y,IAEjD,OAAOgZ,EAAMra,KAAK,EAAE,CACxB,CACA,OC9CqB2a,EACnBze,YAAYmL,EAASuD,EAAM8M,EAAQkD,GACjCve,KAAKwe,SAAWxT,EAChBhL,KAAKyO,MAAQF,EACbvO,KAAKye,YAAcF,EACnBve,KAAKsb,QAAUD,EACfrb,KAAKmV,KAAO,IAAIC,EAAAA,QAAI,CAACnL,KAAM,CAACyU,MAAO,CACjCC,UAAW/Y,KAAAA,EAAWgZ,WAAY,EAAGC,KAAMjZ,KAAAA,EAAWkZ,OAAQlZ,KAAAA,EAC9DmZ,cAAcC,GACZ,IAAMlf,EAAM,MAAQkf,EACpB,IACQ7S,EAMR,OAPK1L,OAAOuC,OAAOhD,KAAMF,CAAG,KACpBqM,EAAS,KACbiJ,EAAAA,QAAIhU,IAAIpB,KAAMF,EAAKK,KAAKC,IAAG,EAAKJ,KAAK4e,UAAU,CAC3D,GACgB,EACNK,YAAY9S,EAAQ6S,CAAc,GAE7Bhf,KAAKF,EACpB,CACA,CAAK,CAAC,CAAC,EAEHE,KAAKkf,MAAQ,CAACC,OAAQ,EAAGC,0BAA2B,CAAA,EAAOC,cAAelX,QAAQe,QAAO,CAAE,EAE3FmS,EAAO3P,OAAOV,EAAShL,KAAKsf,kBAAmBtf,IAAI,EAEnDA,KAAKuf,qBAAqB,mBAAoB,YAAY,EAC1Dvf,KAAKuf,qBAAqB,YAAa,WAAW,EAClD9e,OAAO+D,OAAOxE,IAAI,CACtB,CAEEwf,WACE,OAAOxf,KAAKmV,KAAKsK,MAAMf,KAC3B,CAEElJ,UACExV,KAAKsb,QAAQxP,QAAQ9L,KAAKwe,SAAUxe,KAAKsf,kBAAmBtf,IAAI,EAChEA,KAAKmV,KAAKe,SAAQ,CACtB,CAEEwJ,aAAaC,GAEX,OADA3f,KAAKkf,MAAMC,MAAM,GACVnf,KAAKye,YAAY/B,QACtB,OAAQ,eAAgB,IAAI5N,EAAU9O,KAAKyO,MAAO,GAAG,EAAGkR,EAAO,KAC7CA,EACd3f,KAAKsb,QAAQvP,oBAAoB/L,KAAKwe,SAAUmB,CAAK,EACrD3f,KAAKsb,QAAQrP,gBAAgBjM,KAAKwe,QAAQ,GAC7B1W,KAAK,IAAM9H,KAAKkf,MAAMG,aAAa,CAE1D,CACA,CAEEO,iBAKE,OADA5f,KAAKkf,MAAMC,MAAM,GACVnf,KAAKsf,kBAAkB,IAAI,EAAExX,KAAK+X,IAGvC,GAAKA,EACL,OAAO7f,KAAKye,YAAY/B,QACtB,OAAQ,iBAAkB,IAAI5N,EAAU9O,KAAKyO,MAAO,GAAG,EAAG7I,KAAAA,EAAW,IAC5D5F,KAAKsb,QAAQpP,OAAOlM,KAAKwe,QAAQ,CAElD,CACA,CAAK,CACL,CAEEc,kBAAkBT,GAChB,IAAMiB,EAAmB,CAAC9f,KAAKkf,MAAME,2BAA6Bpf,KAAKkf,MAAMC,OAE7E,GADavZ,KAAAA,IAATiZ,IAAoB7e,KAAKkf,MAAME,0BAA4B,CAAA,GAC3DU,CAAAA,EAAJ,CACA,IAAMC,EAAa/f,KAAKkf,MAAMC,OAC9B,GAAInf,KAAKwf,KAAKX,OAASA,EAAM,OAAO1W,QAAQe,QAAQ,CAAA,CAAK,EACzD,IAAMM,EAAUxJ,KAAKye,YAAY/B,QAC/B,OAAQ,UAAW,IAAI5N,EAAU9O,KAAKyO,MAAO,GAAG,EAAGoQ,EAAM,IACnD7e,KAAKwf,KAAKX,OAASA,GAAQkB,IAAe/f,KAAKkf,MAAMC,SACrDN,GAAMpe,OAAO+D,OAAOqa,CAAI,EAC5B7e,KAAKwf,KAAKX,KAAOA,EACjB7e,KAAKwf,KAAKV,OAASD,GAAQA,EAAKmB,IACzB,CAAA,EAEf,EAEI,OADAhgB,KAAKkf,MAAMG,cAAgBrf,KAAKkf,MAAMG,cAAcvX,KAAK,IAAM0B,CAAO,EAAEwD,MAAK,EACtExD,CAbe,CAc1B,CAEEyW,mBAAmBpB,GACjB,OAAO7e,KAAKwf,KAAKX,OAASA,CAC9B,CAEEU,qBAAqBW,EAAUC,GAC7B,IAAM7U,EAAM,IAAI8U,IAAIpgB,KAAKwe,QAAQ,EACjClT,EAAI+U,SAAWC,UAAU,UAAUJ,CAAU,EAC7ClgB,KAAKsb,QAAQhP,GAAGhB,EAAIiV,KAAMjV,EAAIiV,KAAM,KAAM,QAASC,IACjDxgB,KAAKwf,KAAKW,GAAaK,EAAKzgB,KAClC,CAAK,CACL,CACA,CC7FA,IAAM0gB,EAAgC,CAACjK,OAAQ,CAAA,CAAI,EAE7CkK,EAAgC,IAAIC,IAAI,CAC5C,cAAe,UAAW,eAAgB,UAAW,YAAa,cAAe,gBAClF,EACKC,GACJ,IAAID,IAAIpf,EAAAA,QAAEyC,IAAI0c,EAA+B5S,GAAU,QAAQA,CAAQ,CAAC,EAEpE+S,GAAsBC,OAAO,qBAAqB,EAKpDC,EAEAC,QAGSC,EACXC,YAAa,OAAOlhB,KAAKmS,OAAOgP,IAAK,CACrCC,aAAc,OAAOphB,KAAKmS,OAAOkP,KAAM,CACvCC,WAAY,OAAOthB,KAAKmS,OAAO/R,GAAI,CAEnCmhB,UAAW,OAAOvhB,KAAKmS,OAAOqP,OAAM,CAAG,CAEvCC,WAAWC,EAAYjG,GACrB,GAAIzb,KAAK2hB,WAAY,MAAM,IAAIjd,MAAM,0BAA0B,EAC/D,IAAMkd,EAAc5hB,KAAKmS,OAAOoJ,UAAUmG,EAAYjG,CAAS,EACzDoG,EAAgC,KACpCD,EAAW,EACX5hB,KAAK8hB,KAAK,iBAAkBD,CAA6B,CAC/D,EAEI,OADA7hB,KAAK+hB,IAAI,iBAAkBF,CAA6B,EACjDA,CACX,CAEEG,SAAStN,EAAOC,GACd,GAAI3U,KAAK2hB,WAAY,MAAM,IAAIjd,MAAM,0BAA0B,EAC1DiQ,IACHA,EAAcD,EACdA,EAAQ9O,KAAAA,GAEV,IAAMqc,EAAYjiB,KAAKmS,OAAO+P,QAAQxN,EAonB1C,SAASyN,EAAgB1f,EAAQkS,GAC/B,GAAI,CAACA,GAAeA,aAAuBrG,EAAQ,OAAOqG,EAC1D,GAAIpT,EAAAA,QAAE2I,WAAWyK,CAAW,EAAG,CAC7B,IAAMvL,EAAK,WAGT,OADA3G,EAAO2f,YAAW,EACXD,EAAgB1f,EAAQkS,EAAYxK,KAAKnK,IAAI,CAAC,CAE3D,EACI,OAAOoJ,CACX,CACE,OAAO7H,EAAAA,QAAE+T,UAAUX,EAAae,GAAcyM,EAAgB1f,EAAQiT,CAAU,CAAC,CACnF,EAhoBiE1V,KAAM2U,CAAW,CAAC,EACzE0N,EAAkBJ,EAAUzM,QAC5BA,EAAU,KACdxV,KAAK8hB,KAAK,iBAAkBtM,CAAO,EAC5B6M,EAAgBlY,KAAK8X,CAAS,GAIvC,OAFAjiB,KAAK+hB,IAAI,iBAAkBvM,CAAO,EAClCyM,EAAUzM,QAAUA,EACbyM,CACX,CAEEK,MAAMzI,EAAQlO,GACZ,GAAI3L,KAAK2hB,WAAY,MAAM,IAAIjd,MAAM,0BAA0B,EAC/D,IAAM8E,EAAU4O,EACdpY,KAAKmS,OAAOzC,KAAKmK,EAAQlO,CAAQ,EAAG,KAAO3L,KAAK8hB,KAAK,iBAAkBtY,EAAQ2O,MAAM,CAAE,CAC7F,EAEI,OADAnY,KAAK+hB,IAAI,iBAAkBvY,EAAQ2O,MAAM,EAClC3O,CACX,CAEE+Y,SAASC,EAAWC,EAAY7V,GAC9B,GAAI5M,KAAK2hB,WAAY,MAAM,IAAIjd,MAAM,0BAA0B,EAC/D9B,IAAI8f,EAEE/K,EAAY3X,KAAKmS,OAAOyF,QAAQ,KACpC5X,KAAKoiB,YAAW,EACTI,EAAUrY,KAAKnK,IAAI,GACzByiB,EAAW9b,KAAK3G,IAAI,EAAG,CAAC,GAAG4M,EAAS+V,GAAI3iB,IAAI,CAAC,EAOhD,OALA0iB,EAA8B,KAC5B/K,EAAS,EACT3X,KAAK8hB,KAAK,iBAAkBY,CAA2B,CAC7D,EACI1iB,KAAK+hB,IAAI,iBAAkBW,CAA2B,EAC/CA,CACX,CAEEE,MAAMC,EAAYjW,GAChB,GAAI5M,KAAK2hB,WAAY,MAAM,IAAIjd,MAAM,0BAA0B,EAC/D,IAAM8E,EAAUxJ,KAAKmS,OAAO2Q,KAAK,KAC/B9iB,KAAKoiB,YAAW,EACTS,EAAW1Y,KAAKnK,IAAI,GAC1B4M,CAAO,EAGV,OAFAwL,EAAe5O,EAAS,KAAOxJ,KAAK8hB,KAAK,iBAAkBtY,EAAQ2O,MAAM,CAAE,CAAC,EAC5EnY,KAAK+hB,IAAI,iBAAkBvY,EAAQ2O,MAAM,EAClC3O,CACX,CACA,OAGMuZ,EACJC,cAAe,OAAOjC,EAAyBiC,QAAQjjB,KAAM,CAC7DkjB,YAAa,OAAOlC,EAAyBkC,MAAMljB,KAAM,CACzDoS,aAEE,OADA1R,OAAO8R,eAAevS,KAAM,SAAU,CAACD,MAAOC,KAAKgjB,QAAQ7Q,MAAM,CAAC,EAC3DnS,KAAKmS,MAChB,CAEExD,WAEE,OADAlO,OAAO8R,eAAevS,KAAM,OAAQ,CAACD,MAAO,IAAI+O,EAAU9O,KAAKmS,OAAO1D,MAAOzO,KAAKijB,KAAK,CAAC,CAAC,EAClFjjB,KAAK2O,IAChB,CAEEuU,YAAa,OAAOljB,KAAK2O,IAAK,CAC9BwU,WAGE,OAFA1iB,OAAO8R,eACLvS,KAAM,OAAQ,CAACD,MAAOmC,EAAYlC,KAAKijB,MAAM1gB,MAAMvC,KAAKijB,MAAMG,YAAY,GAAG,EAAI,CAAC,CAAC,CAAC,CAAC,EAChFpjB,KAAKmjB,IAChB,CAEE1D,YAAa,OAAOzf,IAAK,CACzBqjB,cAAe,MAAO,CAAA,CAAM,CAC5BC,aAAc,OAAO/hB,EAAAA,QAAEgiB,QAAQvjB,KAAKyf,KAAK,CAAE,CAC3C+D,YAAa,OAAOjiB,EAAAA,QAAE6D,KAAKpF,KAAKyf,KAAK,CAAE,CACvCgE,cAAe,OAAOliB,EAAAA,QAAEiQ,OAAOxR,KAAKyf,KAAK,CAAE,CAC3CiE,aAAc,OAAO1jB,KAAK2O,KAAK6B,KAAM,CACrCmT,kBAAmB,MAAO,CAAA,CAAM,CAEhCC,YACE,GAAI5jB,KAAK2hB,WAAY,MAAM,IAAIjd,MAAM,0BAA0B,EAC/D,IAAM8E,EAAUxJ,KAAKmS,OAAO0R,SAAQ,EAGpC,OAFAzL,EAAe5O,EAAS,KAAOxJ,KAAK8hB,KAAK,iBAAkBtY,EAAQ2O,MAAM,CAAE,CAAC,EAC5EnY,KAAK+hB,IAAI,iBAAkBvY,EAAQ2O,MAAM,EAClC3O,CACX,CAEEsa,0BACE,GAAI,CAACviB,EAAAA,QAAEwiB,UAAU/C,CAAqB,EACpC,MAAM,IAAItc,MAAM,kEAAkE,EAEpFsc,EAAwB,CAAA,CAC5B,CAEEgD,yBACE,GAAKziB,EAAAA,QAAEwiB,UAAU/C,CAAqB,EAItC,OAAOH,GAHL,MAAM,IAAInc,MACR,6EAA6E,CAGrF,CAEEuf,KAAKlkB,GAAQ,OAAOC,KAAK2O,KAAKvN,IAAIrB,CAAK,CAAE,CACzCmkB,QAAQ1S,GAAS,OAAOxR,KAAK2O,KAAKxC,OAAOqF,CAAM,CAAE,CACjD2S,UAAU3S,GAAS,OAAOxR,KAAK2O,KAAK8C,SAASD,CAAM,CAAE,CACrD4S,QAAQxX,EAASyK,GAAW,OAAOrX,KAAK2O,KAAK+C,OAAO9E,EAASyK,CAAQ,CAAE,CAEvE+K,cAEMpiB,KAAKwW,OACPxW,KAAKwW,OAAOC,IAAI4N,OAAM,EACbrkB,KAAKgjB,SACbviB,OAAOuC,OAAOhD,KAAKgjB,QAAS,OAAO,EAAIhjB,KAAKgjB,QAAQvD,MAAQzf,KAAKgjB,SAAShjB,KAAKmjB,MAEhFnjB,KAAKohB,MAGX,CAEEO,iBACE,MAAO,CAAA,CACX,CAEEI,IAAIhY,EAAO4B,GACT,GAAI3L,KAAK2hB,WAAY,MAAM,IAAIjd,MAAM,0BAA0B,EAC/D,GAAIkc,GAA4B5f,IAAI+I,CAAK,EACvC,MAAM,IAAIrF,mCAAmCqF,oBAAwB,EAGvE,OADC/J,KAAKskB,QAAQva,GAAS/J,KAAKskB,QAAQva,IAAU,IAAIrG,KAAKiI,CAAQ,EACxD3L,IACX,CAEEukB,MAAMxa,EAAO4B,GACX,IAAMlJ,EAASzC,KACf,SAASwkB,KAAMna,GACb5H,EAAOqf,KAAK/X,EAAOya,CAAE,EACrB7Y,EAAS,GAAGtB,CAAI,CACtB,CAEI,OADAma,EAAGpb,GAAKuC,EACD3L,KAAK+hB,IAAIhY,EAAOya,CAAE,CAC7B,CAEE1C,KAAK/X,EAAO4B,GACV,GAAI5B,EACF,GAAI4B,GACF,GAAIpK,EAAAA,QAAE6N,QAAQrF,CAAK,EACjB,IAAK,IAAM0a,KAAM1a,EAAO/J,KAAK8hB,KAAK2C,EAAI9Y,CAAQ,OACzC,GAAI3L,KAAKskB,QAAQva,GAAQ,CAC9B,IAAM0R,EAAYzb,KAAKskB,QAAQva,GAC/B,IAAKnH,IAAIoC,EAAI,EAAGA,EAAIyW,EAAUhY,OAAQuB,CAAC,GAAI,CACzC,IAAMwf,EAAK/I,EAAUzW,GACrB,GAAIwf,IAAO7Y,GAAY6Y,EAAGpb,KAAOuC,EAAU,CACzC8P,EAAUjY,OAAOwB,EAAG,CAAC,EACrB,KACd,CACA,CACA,CAAA,MAEQ,OAAOhF,KAAKskB,QAAQva,QAGtB,IAAK,IAAMjK,KAAOyB,EAAAA,QAAE6D,KAAKpF,KAAKskB,OAAO,EAAG,OAAOtkB,KAAKskB,QAAQxkB,GAE9D,OAAOE,IACX,CAEE0kB,MAAM3a,KAAUM,GAWd,OAVI9I,EAAAA,QAAEP,IAAIhB,KAAM,SAAS,GAEvBuB,EAAAA,QAAEoJ,QAAQpJ,EAAAA,QAAE0B,MAAMjD,KAAKskB,QAAQva,EAAM,EAAG4B,IAClCA,EAAS4Y,OAAS5Y,EAAS4Y,MAAMxa,KACnC4B,EAAAA,EAAS4Y,MAAMxa,GACf/J,KAAK8hB,KAAK/X,EAAO4B,CAAQ,GAE3BA,EAAS,GAAGtB,CAAI,CACxB,CAAO,EAEIrK,IACX,CAEEskB,cAIE,OAHA7jB,OAAO8R,eAAevS,KAAM,UAAW,CACrCD,MAAO,GAAI4kB,SAAU,CAAA,EAAOrO,WAAY,CAAA,EAAOD,aAAc,CAAA,CACnE,CAAK,EACMrW,KAAKskB,OAChB,CACA,CAEAlS,EAAc6O,EAAW8B,CAAK,EAE9BxhB,EAAAA,QAAEoJ,QAAQoY,EAAMxY,UAAW,CAAC8H,EAAM1J,KAChClI,OAAO8R,eACLwQ,EAAMxY,UAAW5B,EAAM,CAAC5I,MAAOsS,EAAMiE,WAAY,CAAA,EAAOD,aAAc,CAAA,EAAOsO,SAAU,CAAA,CAAK,CAAC,CACjG,CAAC,QAGKC,EACJ/kB,YAAY6I,GACV1I,KAAK0I,MAAQA,CACjB,CACA,OAGMmc,GACJhlB,YAAYE,GACVC,KAAKD,MAAQA,CACjB,CACA,OAGqB+kB,GACnBjlB,YAAYklB,EAAKC,GACfhlB,KAAKmV,KAAO4P,EACZ/kB,KAAKilB,MAAQ,CAACC,MAAOnC,CAAK,EAC1B/iB,KAAKmlB,OAASH,EACdvkB,OAAO+D,OAAOxE,IAAI,CACtB,CAEEmH,KAAKie,EAASC,GACR9jB,EAAAA,QAAE+jB,cAAcF,CAAO,IACzB7jB,EAAAA,QAAEoJ,QAAQya,EAAS,CAACF,EAAOrhB,KACrBqhB,EAAMK,cACVL,EAAMM,aAAeN,EAAMM,cAAgB,GAC3CN,EAAMM,aAAa9hB,KAAKG,CAAI,EACpC,CAAO,EACDuhB,EAAU7jB,EAAAA,QAAEiQ,OAAO4T,CAAO,EAC1B7jB,EAAAA,QAAEoJ,QAAQya,EAASF,IACb,CAACA,EAAMK,aAAeL,EAAMM,eAC9BN,EAAMK,YAAcL,EAAMM,aAC1B,OAAON,EAAMM,aAEvB,CAAO,GAEHJ,EAAU7jB,EAAAA,QAAEkkB,KAAKL,CAAO,EACxB7jB,EAAAA,QAAEoJ,QAAQya,EAASF,GAASllB,KAAK0lB,YAAYR,EAAOG,CAAc,CAAC,EACnErlB,KAAK2lB,cAAc3lB,KAAKilB,KAAK,CACjC,CAEEzP,WAEAoQ,UAAU/hB,EAAMgiB,EAAU5X,GACxB,IAEW9K,EADXP,IAAIkjB,EACJ,IAAW3iB,KAFMS,EAAUC,EAAM,CAAA,CAAI,EAEL,CAC9BjB,IAAImM,EAAQ5L,EACV2iB,EAAK7W,WAAa6W,EAAK7W,SAAS9L,IAAY,CAAC0iB,GAAYC,EAAK7W,SAAS8W,GAAK/lB,KAAKilB,MACnF,GAAI,CAAClW,EAAO,CACV,GAAI,CAAC8W,EAAU,OACfC,EAAK7W,SAAW6W,EAAK7W,UAAY,GACjCF,EAAQ+W,EAAK7W,SAAS9L,GAAW,CAAC+hB,MAAOnC,CAAK,CACtD,CAEM,GADA+C,EAAO/W,EACHd,GAAaA,EAAU6X,CAAI,EAAG,KACxC,CACI,OAAOA,CACX,CAEEE,WAAW/X,EAAW6X,GAEpB,GAAI7X,EADC6X,EAAAA,GAAa9lB,KAAKilB,KACL,EAAG,OAAOa,EAC5B,IAAK,IAAM9N,KAAYzW,EAAAA,QAAE6D,KAAK0gB,EAAK7W,QAAQ,EAAG,CACtCpM,EAAS7C,KAAKgmB,WAAW/X,EAAW6X,EAAK7W,SAAS+I,EAAS,EACjE,GAAInV,EAAQ,OAAOA,CACzB,CACA,CAEE8iB,cAAcG,GACZvkB,EAAAA,QAAEoJ,QAAQmb,EAAK7W,SAAUF,IACvB/O,KAAK2lB,cAAc5W,CAAK,GACpBA,EAAMkX,OAASlX,EAAMmX,oBAAkBJ,EAAKI,iBAAmB,CAAA,EACzE,CAAK,CACL,CAEEC,cAAcjB,GACZtiB,IAAIwjB,EACAC,EAAQnB,EAAM3a,UAClB,KAAO8b,GAASA,EAAMxmB,cAAgBY,QAAQ,CAC5C,IAAK,IAAMkI,KAAQlI,OAAO6R,oBAAoB+T,CAAK,EAAG,CACpD,IAAM3Q,EAAajV,OAAO+R,yBAAyB6T,EAAO1d,CAAI,EAC9D,GAAuB,MAAnBA,EAAKpF,OAAO,CAAC,EAAW,CAC1B,GAAIhC,EAAAA,QAAEqO,QAAQ8F,EAAYjV,OAAO+R,yBAAyBuQ,EAAMxY,UAAW5B,CAAI,CAAC,EAC9E,SAEF,MAAM,IAAIjE,wDAAwDwgB,EAAMvc,QAAQA,CAAM,CAChG,CACQ,GAAI+X,EAA8B1f,IAAI2H,CAAI,GAAKpH,EAAAA,QAAE2I,WAAWmc,EAAM1d,EAAK,EACrE,MAAM,IAAIjE,mCAAmCiE,qBAAwB,EAEnE+M,CAAAA,EAAWxU,KAASklB,GAAsBA,EAAmBzd,MAC9Dyd,EAAAA,GAA4C,IAAKzd,GAAQ,CACxDA,KAAAA,EAAM2d,SAAaD,EAAMxmB,YAAY8I,KAArB,IAA6BA,EAAQzH,IAAKwU,EAAWxU,IACrEE,IAAKsU,EAAWtU,GAC5B,EAEA,CACMilB,EAAQ5lB,OAAO8lB,eAAeF,CAAK,CACzC,CACI,IAAK,IAAM1d,KAAQlI,OAAO6R,oBAAoByQ,EAAMxY,SAAS,EAC9C,gBAAT5B,GAA0BlI,OAAOuC,OAAOkiB,EAAM3a,UAAW5B,CAAI,GACjElI,OAAO8R,eACL2S,EAAM3a,UAAW5B,EAAMlI,OAAO+R,yBAAyBuQ,EAAMxY,UAAW5B,CAAI,CAAC,EAEjF,OAAOyd,CACX,CAEEV,YAAYR,EAAOG,GACjB,IAAMe,EAAqBpmB,KAAKmmB,cAAcjB,CAAK,EAC7CsB,EAAe,GACjBC,EAASvB,EAAMK,YACnB,GAAI,CAACkB,EAAQ,MAAM,IAAI/hB,eAAewgB,EAAMvc,0CAA0C,EACjFpH,EAAAA,QAAE6N,QAAQqX,CAAM,IAAGA,EAAS,CAACA,IAClCllB,EAAAA,QAAEoJ,QAAQ8b,EAAQC,IAEhB,GADInlB,EAAAA,QAAE+B,SAASojB,CAAK,IAAGA,EAAQ,CAAC7iB,KAAM6iB,CAAK,GACvC,CAACrB,GAAiC,MAAfqB,EAAM7iB,KAC3B,MAAM,IAAIa,MAAM,qDAAqD,EAEvE,IACWiiB,EADLzhB,EAAUD,EAAgByhB,EAAM7iB,IAAI,EAC1C,IAAW8iB,KAAYzhB,EAAQf,UAAW,CACxC,GAAiB,MAAbwiB,GAA2C,MAAvBA,EAASpjB,OAAO,CAAC,EACvC,MAAM,IAAImB,MAAM,0BAA0BiiB,CAAU,EAEtD,GAA2B,MAAvBA,EAASpjB,OAAO,CAAC,IACnBhC,EAAAA,QAAEP,IAAI+hB,EAAMxY,UAAWoc,CAAQ,GAAKlG,EAA8BkG,IAElE,MAAM,IAAIjiB,MAAM,6DAA6DiiB,CAAU,EAEzFH,EAAa9iB,KAAKijB,CAAQ,CAClC,CACM,IAAM7jB,EAAa4jB,EAAM7iB,KAAKU,MAAM,YAAY,EAAE,GAClD,GAA6B,MAAzBzB,EAAWS,OAAO,CAAC,GACrB,GAAImjB,EAAME,YACR,MAAM,IAAIliB,eACCwgB,EAAMvc,4BAA4B7F,2BAAoC,CAC3F,MACkBvB,EAAAA,QAAEP,IAAI0lB,EAAO,aAAa,IACpCA,EAAME,YAAc,IAEtB,IAAMC,EAAc7mB,KAAK4lB,UAAUc,EAAM7iB,KAAK/B,QAAQ,WAAY,GAAG,EAAG,CAAA,CAAI,EAC5E,GAAI+kB,EAAY3hB,UACd2hB,EAAY/jB,aAAeA,GACU,MAArC+jB,EAAY/jB,WAAWS,OAAO,CAAC,GAAsC,MAAzBT,EAAWS,OAAO,CAAC,GAE/D,MAAM,IAAImB,qCACuBgiB,EAAM7iB,SAASgjB,EAAY3B,MAAMvc,SAASuc,EAAMvc,IAAM,EAEzFpH,EAAAA,QAAEqP,OACAiW,EAAa,CAAC3B,MAAAA,EAAOhgB,QAAAA,EAASkhB,mBAAAA,EAAoBtjB,WAAAA,CAAU,EAC5DvB,EAAAA,QAAEulB,KAAKJ,EAAO,cAAe,QAAS,aAAc,QAAQ,CAAC,CACrE,CAAK,EACDnlB,EAAAA,QAAEilB,CAAY,EAAEf,KAAI,EAAG9a,QAAQgc,IAC7BlmB,OAAO8R,eAAe2S,EAAM3a,UAAWoc,EAAU,CAACzlB,MAChD,OAAO6f,EACLA,EAAyB4F,IAAa5F,EAAyB4F,GAAU5mB,MACzE6F,KAAAA,CACV,CAAO,CAAC,CACR,CAAK,CACL,CAOEmhB,aAAaljB,EAAMmjB,GACjB,IAAMN,EAAQ1mB,KAAK4lB,UAAU/hB,CAAI,GAAK,CAACqhB,MAAOnC,CAAK,EACnD,IACE,GAAI2D,EAAMxhB,QAAS,CACjB,IACWyhB,EADLpiB,EAAQmiB,EAAMxhB,QAAQX,MAAMV,CAAI,EACtC,IAAW8iB,KAAYpiB,EACrByiB,EAAWL,GAAY,CAAC5mB,MAAOwE,EAAMoiB,EAAS,CAExD,CAEM5F,EAA2BiG,EAC3B,IAAMvkB,EAAS,IAAIikB,EAAMxB,MAazB,OAZAnE,EAA2B,KAEvB2F,EAAMO,aACRD,EAAWvH,MAAQ,CAAC1f,MAAOU,OAAOC,OAAO,IAAI,EAAG2V,aAAc,CAAA,EAAMC,WAAY,CAAA,CAAI,GAElFoQ,EAAMQ,SAAQF,EAAW3D,QAAU,CAACtjB,MAAO,CAAA,CAAI,GAC/C2mB,EAAMN,oBACR7kB,EAAAA,QAAEoJ,QAAQ+b,EAAMN,mBAAoB/T,IAClC2U,EAAW3U,EAAK1J,MAAQ3I,KAAKmnB,iCAAiC1kB,EAAQ4P,CAAI,CACpF,CAAS,EAGI5P,CAIb,CAHM,MAAOoH,GAEP,MADAA,EAAEhB,MAAQtH,EAAAA,QAAEqP,OAAO,CAAC8V,MAAAA,EAAOM,WAAAA,EAAY7S,UAAWuS,EAAMxB,OAASwB,EAAMxB,MAAMvc,IAAI,EAAGkB,EAAEhB,KAAK,EACrFgB,CACZ,CACA,CAEEsd,iCAAiC1kB,EAAQ4P,GACvC,IAAM+U,EAAgB/T,EAAMC,IAAIjB,EAAKiU,QAAQ,EAEzCvmB,EAAOsnB,EACPC,EAAe,CAAA,EAEbC,EAAa,KACjB3kB,IAAI4kB,EAAa,CAAA,EACjB,IAAMC,EAuMZ,SAAsBpV,EAAM+U,GAE1B,GAAIpnB,CAAAA,KAAK2hB,WAAT,CAGA3hB,KAAKoiB,YAAW,EAEhB,IAAMsF,EAAoB1G,EAEpB3M,GADN2M,EAAwB,CAAA,EACN1M,YAAYlU,IAAG,GACjCwC,IAAI7C,EACJ,IACE,IACEA,EAAQsS,EAAKnR,IAAIiJ,KAAKnK,IAAI,CAMhC,CALM,MAAO6J,GACP9J,EAAQ,IAAI6kB,EAAa/a,CAAC,CAChC,CAAK,QACCud,EAAcxU,aAAe0B,YAAYlU,IAAG,EAAKiU,EACjD+S,EAAc1U,eAAiB,CACrC,CAEI,OAD2B3S,EAAvBihB,EAA+B,IAAI6D,GAAc9kB,CAAK,EACnDA,CAGX,CAFG,QACCihB,EAAwB0G,CAC5B,CAtBuB,CAwBvB,EAjOmC/gB,KAAKlE,EAAQ4P,EAAM+U,CAAa,EAC7DK,EAAQ5lB,SAAWN,EAAAA,QAAEgU,SAAS,WAAWlD,EAAKiU,QAAU,EACxD1jB,IAAI+kB,EAAU,KAAOH,EAAa,CAAA,CAAK,EACvCG,EAAU3nB,KAAKmV,KAAK2B,OAAO2Q,EAASjT,IAClC,GAAI/R,EAAOkf,WACTgG,EAAO,OAOT,GAJIN,IACEA,EAAelP,QAAQkP,EAAelP,OAAM,EAChDkP,EAAiBzhB,KAAAA,GAEfrE,EAAAA,QAAEmB,SAAS8R,CAAQ,GAAKjT,EAAAA,QAAE2I,WAAWsK,EAAS1M,IAAI,EAAG,CACvD,IAAM0B,EAAUgL,EAAS1M,KAAK8f,IACxBpe,IAAY6d,GAAgBlb,EAAOyb,CAAU,CAC7D,EAAalf,IACD,GAAIc,IAAY6d,GAAkBlb,EAAO,IAAIyY,EAAalc,CAAK,CAAC,GAC5D,CAACA,EAAMmf,uBAAwB,MAAMnf,CACrD,CAAW,EACD2e,EAAiB7d,CAC3B,MAAe,GAAI2C,EAAOqI,CAAQ,GACpBA,aAAoBoQ,GAAgB,CAACpQ,EAAS9L,MAAMmf,uBACtD,MAAMrT,EAAS9L,KAG3B,EAAS,CAACqO,UAAW,CAAA,CAAI,CAAC,EAId+Q,EAAUvmB,EAAAA,QAAEwmB,KAAK/nB,KAAKmV,KAAK6S,WAAahoB,KAAKmV,KAAKN,OAAOoT,OAAO,EAGtE,SAAS9b,EAAOqI,GACd,IAAMH,EAAYC,YAAYlU,IAAG,EAMjC,OALIoU,aAAoBqQ,KACtBrQ,EAAWA,EAASzU,MACpB4nB,EAAO,EACPllB,EAAOqf,KAAK,iBAAkB6F,CAAO,GAEnCnT,IAAaqM,IAAuB/O,CAAAA,EAAa/R,EAAOyU,CAAQ,IAEpE8S,EAAe,CAAA,EACf7kB,EAAO4P,EAAK1J,MAAQ6L,EACpB8S,EAAe,CAAA,EAsMvB,SAAS9iB,EAAO/B,GACd,GAAIlB,EAAAA,QAAEyN,MAAMvM,CAAM,GAAK,CAAClB,EAAAA,QAAEmB,SAASD,CAAM,GAAKhC,OAAOynB,SAASzlB,CAAM,GAAKA,EAAO0P,OAC9E,OAAO1P,EAETA,EAAShC,OAAO+D,OAAO/B,CAAM,EAC7B,GAAIlB,EAAAA,QAAE6N,QAAQ3M,CAAM,EAAG,OAAOlB,EAAAA,QAAEyC,IAAIvB,EAAQ1C,GAASyE,EAAOzE,CAAK,CAAC,EAClE,OAAOwB,EAAAA,QAAE+T,UAAU7S,EAAQ1C,GAASyE,EAAOzE,CAAK,CAAC,CACnD,EArMeyU,CAAQ,EACf4S,EAAczU,YAAc,EAC5ByU,EAAcvU,YAAcyB,YAAYlU,IAAG,EAAKiU,EACzC,EACf,CAzBMyT,EAAQve,GAAK,CAACue,EAAQve,GA2BlBie,EACFG,EAAO,EAEPllB,EAAOsf,IAAI,iBAAkB4F,CAAO,EAGtCllB,EAAOqf,KAAK,eAAgByF,CAAU,CAC5C,EAGI,OAFA9kB,EAAOsf,IAAI,eAAgBwF,CAAU,EAE9B,CACLjR,WAAY,CAAA,EAAMD,aAAc,CAAA,EAChCnV,MACE,GAAI,CAAComB,GAAgBvnB,aAAiB6kB,EAAc,MAAM7kB,EAAM2I,MAChE,OAAO3I,CACf,EACMqB,IAAIoT,GACF,GAAI8S,EACFvnB,EAAQyU,MACH,CAAA,GAAInC,CAAAA,EAAKjR,IAGd,MAAM,IAAIsD,MAAM,uCAAuC2N,EAAK1J,IAAM,EAFlE0J,EAAKjR,IAAI+I,KAAKnK,KAAMwU,CAAQ,CAGtC,CACA,CACA,CACA,CAEE2T,cAAc1lB,GACZhC,OAAO8R,eACL9P,EAAQ,aAAc,CAAC1C,MAAO,CAAA,EAAMuW,WAAY,CAAA,EAAOD,aAAc,CAAA,CAAK,CAAC,CACjF,CAEE+R,kBAAkB3lB,EAAQ4lB,GACpB9mB,EAAAA,QAAE2I,WAAWzH,EAAO4lB,EAAK,GAAG5lB,EAAO4lB,GAAK,EAC5C5lB,EAAOiiB,MAAM,QAAQ2D,CAAM,CAC/B,CAEEC,cAAczkB,GACN6iB,EAAQ1mB,KAAK4lB,UAAU/hB,CAAI,EACjC,OAAO6iB,GAASA,EAAME,WAC1B,CAEE2B,QAAQ1kB,EAAM9D,GACN2mB,EAAQ1mB,KAAK4lB,UAAU/hB,EAAM,CAAA,EAAO6iB,GAASA,EAAMT,KAAK,EAC9D,GAAIS,GAASA,EAAMT,MAAO,MAAO,CAAA,EACjC,GAAIjmB,KAAKwoB,oBAAoB9B,EAAO3mB,CAAK,EACvC,MAAM,IAAI2E,MAAM,gDAAgD,EAElE,MAAO,CAAA,CACX,CAEE8jB,oBAAoB9B,EAAO3mB,GACzB,GAAK2mB,EAAL,CACA,GAAIA,EAAMT,MAAO,MAAO,CAAA,EACxB,GAAKS,EAAMR,kBAAqB3kB,EAAAA,QAAEmB,SAAS3C,CAAK,EAChD,IAAK,IAAMD,KAAOC,EAGhB,GADEC,KAAKwoB,oBAAoB9B,EAAMzX,SAASrN,EAAU9B,CAAG,IAAM4mB,EAAMzX,SAAS8W,EAAGhmB,EAAMD,EAAI,EAC9E,MAAO,CAAA,CANI,CAQxB,MAAO,CAAA,CACX,CAEE2oB,wBAAwB5kB,EAAM6kB,GACtBhC,EAAQ1mB,KAAK4lB,UAAU/hB,CAAI,EACjCtC,EAAAA,QAAEoJ,QAAQ+b,GAASA,EAAMzX,SAAUF,IAC7BA,EAAM6X,aAAa8B,EAAS3Z,CAAK,CAC3C,CAAK,CACL,CAEE4Z,eAAelmB,EAAQoB,EAAM+kB,GACdA,IACJA,EAAiB,IAAIjI,KAD9B,IAEMkI,EAAuB,IAAIC,IACjC,IAAMpC,EAAQ1mB,KAAKgmB,WAAW+C,GAAaA,EAAU7D,QAAUziB,EAAO5C,WAAW,EACjF,IA0BYC,EAAKC,EAAO2V,EAAYsT,EA0BxBlpB,EAAKC,EAAOipB,EApDlBC,EAAmB1nB,EAAAA,QAAEkB,CAAM,EAC9BymB,KAAKzoB,OAAO6R,mBAAmB,EAC/BlK,OAAOtI,GACN2gB,EAA8B3gB,IAAQW,OAAOuC,OAAO+f,EAAMxY,UAAWzK,CAAG,GACxE,OAAO2E,KAAK3E,CAAG,CACvB,EACOsI,OAAOtI,GAAO4mB,GAASA,EAAMxhB,SAAW3D,EAAAA,QAAE2P,SAASwV,EAAMxhB,QAAQf,UAAWrE,CAAG,CAAC,EAChFkE,IAAIlE,IACH8C,IAAI7C,EACJ,IAGE,IAFAA,EAAQ0C,EAAO3C,cAEM8E,OAAQ,MAKvC,CAJU,MAGA,MACV,CACQ,IAAM8Q,EAAajV,OAAO+R,yBAAyB/P,EAAQ3C,CAAG,EACxDkpB,EACJ,CAACtT,EAAWY,YAAcZ,EAAWtU,KAAO,CAACX,OAAOuC,OAAOP,EAAQ,KAAO3C,CAAG,EAC/E,MAAO,CAACA,IAAAA,EAAKC,MAAAA,EAAO2V,WAAAA,EAAYsT,SAAAA,CAAQ,CAChD,CAAO,EACAG,QAAO,EACPppB,MAAK,EAER,IAAW,CAACD,IAAAA,EAAKC,MAAAA,EAAO2V,WAAAA,EAAYsT,SAAAA,CAAQ,IAAKC,EAAkB,CACjE,GAAM1nB,CAAAA,EAAAA,QAAE6N,QAAQ3M,CAAM,GAAM,CAAA,QAAQgC,KAAK3E,CAAG,GAAa,WAARA,EAAoB,CACnE,GAAI,UAAW4V,GAAc,CAACA,EAAWxU,IACvC,MAAM,IAAIwD,kBACIb,6DAAgE/D,CAAK,EAErF,GAAI2C,EAAO0P,QAAUuD,EAAWY,WAC9B,IAEE,MADA7T,EAAO3C,GAAOC,EACR,IAAI2E,6BACeb,8CAAiD/D,CAAK,CAG3F,CAFY,MAAO+J,GACP,GAAoB,uBAAhBA,EAAEuf,UAAoC,MAAMvf,CAC5D,CAEA,CACUtI,EAAAA,QAAEmB,SAAS3C,CAAK,IACb6oB,EAAe5nB,IAAIjB,CAAK,GAAMU,OAAO4oB,SAAStpB,CAAK,GAClDwB,EAAAA,QAAE2I,WAAWnK,CAAK,GAAKwB,EAAAA,QAAE+nB,UAAUvpB,CAAK,GAAKA,aAAiBoI,UAClEygB,EAAe9V,IAAI/S,CAAK,EACxBC,KAAK2oB,eAAe5oB,EAAOmD,EAASW,EAAMjC,EAAU9B,CAAG,CAAC,EAAG8oB,CAAc,GAEtEI,GAAajpB,EAAMoS,QAAQ0W,EAAqBznB,IAAIrB,EAAOD,CAAG,EAE3E,CAEI,IAAW,CAACA,IAAAA,EAAKC,MAAAA,EAAOipB,SAAAA,CAAQ,IAAKC,EACnC,GAAID,GAAYznB,EAAAA,QAAEmB,SAAS3C,CAAK,GAAK,CAACA,EAAMoS,OAAQ,CAClD,IAAMoX,EAAWV,EAAqB3nB,IAAInB,CAAK,EAC/C,GAAIwpB,EACF,MAAM,IAAI7kB,6BACeb,oBAAuB/D,YACvCypB,yBAAgC,CAEnD,CAEA,CACA,OCnoBMC,GACJ3pB,YAAY4pB,EAASnY,GACnBtR,KAAK0pB,SAAWD,EAChBzpB,KAAK2pB,OAASrY,EACdtR,KAAK4pB,WAAa,GAClB5pB,KAAK6pB,MAAQ,GACb7pB,KAAK0pB,SAASI,KAAKzJ,SAAWC,UAAUhP,EAAMzN,IAAI,EAClD7D,KAAK8pB,KAAO9pB,KAAK0pB,SAASI,KAAKjoB,SAAQ,EACvC7B,KAAK+pB,UAAYnmB,EAAU0N,EAAMzN,KAAM,CAAA,CAAI,EAC3C7D,KAAKgqB,WAAa,CAAA,EAClBhqB,KAAKwQ,MAAQ,CAAA,CACjB,CAEEyZ,OAAOlR,EAAWmR,GAChBlqB,KAAKmqB,QAAO,EACZnqB,KAAK4pB,WAAWlmB,KAAK,CAACqV,UAAAA,EAAWmR,aAAAA,CAAY,CAAC,EAC1ClqB,KAAKwQ,QACPxQ,KAAK0pB,SAASjL,YAAYvB,UAAUnE,CAAS,EACzCmR,IAAcA,EAAalqB,KAAK6pB,KAAK,CAE/C,CAEEO,OAAOrR,GACCsR,EAAI9oB,EAAAA,QAAE+oB,UAAUtqB,KAAK4pB,WAAY,CAAC7Q,UAAAA,CAAS,CAAC,EAElD,OADS,GAALsR,GAAQrqB,KAAK4pB,WAAWpmB,OAAO6mB,EAAG,CAAC,EAChCrqB,KAAK4pB,WAAWnmB,MAC3B,CAEE0mB,UACMnqB,KAAKgqB,aACThqB,KAAK0pB,SAASpO,QAAQhP,GACpBtM,KAAK2pB,OAAO9nB,SAAQ,EAAI7B,KAAK8pB,KAAM9pB,KAAK2pB,OAAOjZ,YAAa,QAC5D1Q,KAAKuqB,gBAAiBvqB,KAAKwqB,aAAcxqB,KAAM,CAACyqB,KAAM,CAAA,CAAI,CAAC,EAC7DzqB,KAAKgqB,WAAa,CAAA,EACtB,CAEExU,UACExV,KAAK0pB,SAASpO,QAAQrO,IACpBjN,KAAK2pB,OAAO9nB,SAAQ,EAAI7B,KAAK8pB,KAAM9pB,KAAK2pB,OAAOjZ,YAAa,QAAS1Q,KAAKuqB,gBAC1EvqB,IAAI,EACNA,KAAKgqB,WAAa,CAAA,EAClBhqB,KAAKwQ,MAAQ,CAAA,EACb,IAAK,IAAM1Q,KAAOE,KAAK6pB,MACrB7pB,KAAK0pB,SAASgB,kBAAkB1qB,KAAK+pB,UAAU/f,OAAOlK,CAAG,CAAC,CAEhE,CAEEyqB,gBAAgB/J,GACdxgB,KAAK0pB,SAASiB,uBAAuB,KAGnC,GAAK3qB,KAAK4pB,WAAWnmB,QAAWzD,KAAKgqB,WAArC,CACA,IAAMY,EAAc5qB,KAAK6qB,4BAA4BrK,CAAI,EACzD,GAAI,CAACxgB,KAAKwQ,MAAO,CACfxQ,KAAKwQ,MAAQ,CAAA,EACb,IAAK,IAAM/E,KAAYzL,KAAK4pB,WAC1B5pB,KAAK0pB,SAASjL,YAAYvB,UAAUzR,EAASsN,SAAS,CAEhE,CACM,GAAI6R,EACF,IAAK,IAAMnf,KAAYzL,KAAK4pB,WACtBne,EAASye,cAAcze,EAASye,aAAaU,CAAW,CAVf,CAavD,CAAK,CACL,CAEEC,4BAA4BrK,GAC1B5d,IAAIgoB,EACJ,GAAIpK,EAAK3c,OAAS7D,KAAK2pB,OAAO9lB,KAAM,CAGlC,IAFA+mB,EAAcrpB,EAAAA,QAAE6D,KAAKob,EAAKzgB,KAAK,GACnB+qB,KAAI,EACZvpB,EAAAA,QAAEqO,QAAQ5P,KAAK6pB,MAAOe,CAAW,EACnCA,EAAc,SACT,CACL,IAAK,IAAM9qB,KAAOyB,EAAAA,QAAEoa,WAAWiP,EAAa5qB,KAAK6pB,KAAK,EACpD7pB,KAAK0pB,SAASqB,gBAAgB/qB,KAAK+pB,UAAU/f,OAAOlK,CAAG,CAAC,EAE1D,IAAK,IAAMA,KAAOyB,EAAAA,QAAEoa,WAAW3b,KAAK6pB,MAAOe,CAAW,EAGpD5qB,KAAK0pB,SAASgB,kBAAkB1qB,KAAK+pB,UAAU/f,OAAOlK,CAAG,CAAC,EAE5DE,KAAK6pB,MAAQe,CACrB,CAGM,GAAIpK,EAAKjb,OAAQ,CACf,IAEWzF,EAFLkrB,EAAYxK,EAAKzgB,MACjBkrB,EAAWzK,EAAK3c,KACtB,IAAW/D,KAAOE,KAAK6pB,MACrBrJ,EAAK/a,MAAQwlB,EAAW,IAAMnrB,EAC9B0gB,EAAK1a,KAAOF,KAAAA,EACZ4a,EAAK9a,OAASslB,EAAUlrB,GACxBE,KAAK0pB,SAASwB,eAAe1K,CAAI,EAGnCA,EAAK/a,MAAQwlB,EACbzK,EAAK1a,KAAOF,KAAAA,EACZ4a,EAAK9a,OAASslB,CACtB,CACA,KAAW,CAAA,IACCG,EADG3K,EAAK3c,KAAK/B,QAAQ,UAAW,EAAE,IAAM9B,KAAK2pB,OAAO9lB,OACpDsnB,EAAS5pB,EAAAA,QAAE2P,SAASlR,KAAK6pB,MAAOrJ,EAAK1gB,GAAG,EAC1C0gB,EAAKzgB,MACForB,IACHnrB,KAAK0pB,SAASqB,gBAAgB/qB,KAAK+pB,UAAU/f,OAAOwW,EAAK1gB,GAAG,CAAC,EAC7DE,KAAK6pB,MAAMnmB,KAAK8c,EAAK1gB,GAAG,EACxBE,KAAK6pB,MAAMiB,KAAI,EACfF,EAAc5qB,KAAK6pB,OAEZsB,IACTnrB,KAAK0pB,SAASgB,kBAAkB1qB,KAAK+pB,UAAU/f,OAAOwW,EAAK1gB,GAAG,CAAC,EAC/DyB,EAAAA,QAAEgb,KAAKvc,KAAK6pB,MAAOrJ,EAAK1gB,GAAG,EAC3BE,KAAK6pB,MAAMiB,KAAI,EACfF,EAAc5qB,KAAK6pB,OAIrB7pB,KAAK0pB,SAASwB,eAAe1K,CAAI,EACvC,CACI,OAAOoK,CACX,CAEEJ,aAAa9hB,GACX,GAAK1I,KAAK4pB,WAAWnmB,QAAWzD,KAAKgqB,WAArC,CACAhqB,KAAKgqB,WAAa,CAAA,EAClBhqB,KAAKwQ,MAAQ,CAAA,EACb,IAAK,IAAM1Q,KAAOE,KAAK6pB,MAAO7pB,KAAK0pB,SAASgB,kBAAkB1qB,KAAK+pB,UAAU/f,OAAOlK,CAAG,CAAC,EACxFE,KAAK6pB,MAAQ,GACb1hB,QAAQ8U,IAAI1b,EAAAA,QAAEyC,IAAIhE,KAAK4pB,WAAYne,IACjCzL,KAAK0pB,SAASjL,YAAYtB,WAAW1R,EAASsN,SAAS,EAChD/Y,KAAK0pB,SAASjL,YAAYrB,MAAM3R,EAASsN,UAAWrQ,CAAK,EAAEsE,MAAMnD,IACtE4B,EAASsN,UAAU9C,YAAYpM,CAAC,EACzB,CAAA,EACR,EACF,CAAC,EAAE/B,KAAKuV,IACP,GAAI9b,EAAAA,QAAEuP,KAAKuM,CAAO,EACZrd,KAAK4pB,WAAWnmB,QAAQzD,KAAKmqB,QAAO,OAExC,IAAK,IAAM1e,KAAYzL,KAAK4pB,WAAYne,EAASsN,UAAU9C,YAAYvN,CAAK,CAEpF,CAAK,CAjBgD,CAkBrD,CACA,OAGM0iB,GACJvrB,YAAY4pB,EAAS5lB,EAAMgL,GACzB7O,KAAK0pB,SAAWD,EAChBzpB,KAAK6D,KAAOA,EACZ7D,KAAK6O,OAASA,EACd7O,KAAK0pB,SAASI,KAAKzJ,SAAWC,UAAUzc,CAAI,EAC5C7D,KAAKsL,IAAMtL,KAAK0pB,SAASI,KAAKjoB,SAAQ,EACtC7B,KAAKqrB,WAAa,GAClBrrB,KAAKsrB,WAAa,EAClBtrB,KAAKurB,UAAY,CAAA,EACjBvrB,KAAKwQ,MAAQ,CAAA,EACbxQ,KAAKiP,SAAW,EACpB,CAEEuc,aACE,OAAOxrB,KAAKyrB,OAASzrB,KAAKsrB,UAC9B,CAEEG,YACE,OAAOzrB,KAAKqrB,WAAW5nB,MAC3B,CAEEioB,OAAOC,GACD,CAACA,GAAQ3rB,KAAKyrB,MACZzrB,KAAKurB,YACThqB,EAAAA,QAAEoJ,QAAQ3K,KAAKqrB,WAAYO,IAAO5rB,KAAK0pB,SAASjL,YAAYtB,WAAWyO,CAAE,CAAE,CAAC,EAC5E5rB,KAAK0pB,SAASpO,QAAQhP,GACpBtM,KAAKsL,IAAKtL,KAAKsL,IAAK,KAAM,QAAStL,KAAKuqB,gBAAiBvqB,KAAKwqB,aAAcxqB,KAC5E,CAACyqB,KAAM,CAAA,CAAI,CAAC,EACdzqB,KAAKurB,UAAY,CAAA,GAEjBhqB,EAAAA,QAAEoJ,QAAQ3K,KAAKiP,SAAUF,IAAUA,EAAM2c,OAAM,CAAG,CAAC,CAEzD,CAEEG,SAASF,GACH,CAACA,GAAQ3rB,KAAKurB,WAChBvrB,KAAK0pB,SAASpO,QAAQrO,IAAIjN,KAAKsL,IAAKtL,KAAKsL,IAAK,KAAM,QAAStL,KAAKuqB,gBAAiBvqB,IAAI,EACvFA,KAAKurB,UAAY,CAAA,EACjBvrB,KAAK8rB,mBAAmBhG,IACtB,GAAIA,EAAKyF,UAAW,MAAO,CAAA,EACvBzF,EAAKtV,QACPsV,EAAKtV,MAAQ,CAAA,EAEvB,CAAO,GAEDjP,EAAAA,QAAEoJ,QAAQ3K,KAAKiP,SAAUF,IAAUA,EAAM8c,SAAQ,CAAG,CAAC,CAE3D,CAEEtB,gBAAgB/J,GACdxgB,KAAK0pB,SAASiB,uBAAuB,KAC9B3qB,KAAKurB,WAAcvrB,KAAK0pB,SAASqC,eAAevL,EAAK3c,IAAI,IAC9D7D,KAAK0pB,SAASwB,eAAe1K,CAAI,EAC5BxgB,KAAKwQ,OAASgQ,EAAK3c,OAAS7D,KAAK6D,OACpC7D,KAAKwQ,MAAQ,CAAA,EACbxQ,KAAK6rB,SAAS,CAAA,CAAI,EAClB7rB,KAAK8rB,mBAAmBhG,IACtB,IAAK,IAAM8F,KAAM9F,EAAKuF,WAAYrrB,KAAK0pB,SAASjL,YAAYvB,UAAU0O,CAAE,CAClF,CAAS,GAET,CAAK,CACL,CAEEpB,aAAa9hB,GACX,GAAK1I,KAAKyrB,OAAUzrB,KAAKurB,UAezB,OAdAvrB,KAAKurB,UAAY,CAAA,EACjBvrB,KAAK8rB,mBAAmBhG,IACtB,GAAIA,EAAKyF,UAAW,MAAO,CAAA,EACvBzF,EAAKtV,QACPsV,EAAKtV,MAAQ,CAAA,GAEf,IAAK,IAAMob,KAAM9F,EAAKuF,WAAYrrB,KAAK0pB,SAASjL,YAAYtB,WAAWyO,CAAE,CAC/E,CAAK,EAMD5rB,KAAK0pB,SAASsC,WAAWhsB,KAAK6D,IAAI,EAC3BsE,QAAQ8U,IAAI1b,EAAAA,QAAEyC,IAAIhE,KAAKqrB,WAAYO,GACjC5rB,KAAK0pB,SAASjL,YAAYrB,MAAMwO,EAAIljB,CAAK,EAAEsE,MAAMnD,IACtD+hB,EAAG3V,YAAYpM,CAAC,EACT,CAAA,EACR,CACF,CAAC,EAAE/B,KAAKuV,IACP,GAAI9b,EAAAA,QAAEuP,KAAKuM,CAAO,EACZrd,KAAKyrB,OAAOzrB,KAAK0rB,OAAM,OAE3B,IAAK,IAAME,KAAM5rB,KAAKqrB,WAAYO,EAAG3V,YAAYvN,CAAK,CAG9D,CAAK,CACL,CAEEojB,mBAAmBpD,GACM,CAAA,IAAnBA,EAAS1oB,IAAI,GACjBuB,EAAAA,QAAEoJ,QAAQ3K,KAAKiP,SAAUF,GAASA,EAAM+c,mBAAmBpD,CAAQ,CAAC,CACxE,CAEEuD,8BAA8BC,GAM5B,OALKA,EAAAA,GAAe,IACdlsB,KAAK6D,MAAQ7D,KAAKwrB,OACnBxrB,KAAKwrB,QACRjqB,EAAAA,QAAEoJ,QAAQ3K,KAAKiP,SAAUF,IAAUA,EAAMkd,8BAA8BC,CAAK,CAAE,CAAC,EAE1EA,CACX,CACA,OAGqBC,GACnBtsB,YAAYmL,EAASqQ,EAAQkD,EAAY6N,EAAeC,GACtDrsB,KAAK8pB,KAAO,IAAI1J,IAAIpV,CAAO,EAC3BhL,KAAKsb,QAAUD,EACfrb,KAAKye,YAAcF,EACnBve,KAAKkrB,eAAiBkB,EACtBpsB,KAAKssB,0BAA4B,GACjCtsB,KAAKusB,WAAa,CAACC,wBAAyBxsB,KAAKysB,wBAAwB,EACzEzsB,KAAKgsB,WAAaK,EAClBrsB,KAAKmV,KAAO,IAAIC,EAAAA,QAAI,CAACnL,KAAM,CAACuV,KAAM5Z,KAAAA,EAAW8mB,cAAe,EAAE,CAAC,CAAC,EAGhE1sB,KAAKmV,KAAKwX,aAAe3sB,KAAKmV,KAC9BnV,KAAK4sB,WAAansB,OAAOC,OAAO,IAAI,EACpCD,OAAO+D,OAAOxE,IAAI,EAElBA,KAAKmV,KAAKsK,MAAMD,KAAO,IAAI4L,GAAKprB,KAAM,GAAG,EACzCA,KAAK4sB,WAAW,KAAO5sB,KAAK6sB,KAChC,CAEEA,YACE,OAAO7sB,KAAKmV,KAAKsK,MAAMD,IAC3B,CAEEsN,qBACE,OAAO9sB,KAAKmV,KAAKsK,MAAMiN,aAC3B,CAEElX,UACEjU,EAAAA,QAAEoJ,QAAQ3K,KAAK8sB,eAAgBC,IAAiBA,EAAavX,QAAO,CAAG,CAAC,EACxExV,KAAK6sB,MAAMhB,SAAQ,EACnB7rB,KAAKmV,KAAKe,SAAQ,CACtB,CAEE8W,OAAOnpB,EAAMkV,GACX,OAAO/Y,KAAK+qB,gBAAgBnnB,EAAUC,EAAM,CAAA,CAAI,EAAGkV,CAAS,CAChE,CAEEgS,gBAAgB3nB,EAAU2V,GACxBnW,IAAIkjB,EACAmH,EAAa,CAAClU,EACdvI,EAAQ,CAAA,EACZ,IAAK,IAAMrN,KAAWC,EAAU,CAC9BR,IAAImM,EAAQ5L,EAAU2iB,EAAK7W,UAAY6W,EAAK7W,SAAS9L,GAAWnD,KAAK6sB,MAChE9d,IACHA,EAAQ,IAAIqc,GAAKprB,QAAuB,MAAd8lB,EAAKjiB,KAAe,GAAKiiB,EAAKjiB,QAAQV,EAAW2iB,CAAI,EAC/E1Q,EAAAA,QAAIhU,IAAI0kB,EAAK7W,SAAU9L,EAAS4L,CAAK,EACrC/O,KAAK4sB,WAAW7d,EAAMlL,MAAQkL,GAEhCke,EAAaA,GAAcle,EAAMwc,UACjC/a,EAAQA,GAASzB,EAAMyB,MACvBsV,EAAO/W,CACb,CACQgK,EACF+M,EAAKuF,WAAW3nB,KAAKqV,CAAS,EAE9B+M,EAAKwF,UAAU,GAEb2B,EACElU,GAAavI,GAAOxQ,KAAKye,YAAYvB,UAAUnE,CAAS,EAE5D+M,EAAK4F,OAAM,CAEjB,CAEEwB,SAASrpB,EAAMkV,GACb,OAAO/Y,KAAK0qB,kBAAkB9mB,EAAUC,EAAM,CAAA,CAAI,EAAGkV,CAAS,CAClE,CAEE2R,kBAAkBtnB,EAAU2V,GAC1B,IAEW5V,EAFLgqB,EAAY,GAClBvqB,IAAIkjB,EACJ,IAAW3iB,KAAWC,EAAU,CAE9B,GAAI,EADJ0iB,EAAO3iB,EAAU2iB,EAAK7W,UAAY6W,EAAK7W,SAAS9L,GAAWnD,KAAK6sB,OACrD,MACXM,EAAUzpB,KAAKoiB,CAAI,CACzB,CACI,GAAI,CAACA,GAAQ,EAAE/M,EAAY+M,EAAK2F,MAAQ3F,EAAKwF,YAC3C,MAAM,IAAI5mB,MAAM,sBAAqBtB,EAASO,KAAK,GAAG,GAAK,IAAK,EAgBlE,GAdIoV,EACFxX,EAAAA,QAAEgb,KAAKuJ,EAAKuF,WAAYtS,CAAS,EAEjC+M,EAAKwF,UAAU,GAEbvS,GAAa,CAAC+M,EAAK2F,QAMrB3F,EAAK4F,OAAM,EACP5F,EAAKyF,YAAWzF,EAAK+F,SAAQ,EAE/B,CAAC/F,EAAK0F,OAAQ,CAChB,IAAK5oB,IAAIoC,EAAImoB,EAAU1pB,OAAS,EAAO,EAAJuB,KACjC8gB,EAAOqH,EAAUnoB,MACJhF,KAAK6sB,OAAS/G,CAAAA,EAAK0F,QAAWjqB,EAAAA,QAAEgiB,QAAQuC,EAAK7W,QAAQ,GAF1BjK,CAAC,GAGzCoQ,EAAAA,QAAI9T,OAAO6rB,EAAUnoB,EAAI,GAAGiK,SAAU7L,EAAS4B,EAAE,EACjD8gB,EAAKtV,MAAQ5K,KAAAA,EACb,OAAO5F,KAAK4sB,WAAW9G,EAAKjiB,MAExBA,EAAOT,EAASO,KAAK,GAAG,GAAK,IACnC3D,KAAKgsB,WAAWnoB,EAAM7D,KAAKotB,2BAA2BvpB,CAAI,CAAC,CACjE,CACA,CAEEwpB,UAAU/b,EAAOyH,EAAWmR,GAC1BtnB,IAAImqB,EAAe/sB,KAAK8sB,eAAexb,EAAMzP,SAAQ,GAChDkrB,IACHA,EAAe,IAAIvD,GAAaxpB,KAAMsR,CAAK,EAC3C8D,EAAAA,QAAIhU,IAAIpB,KAAK8sB,eAAgBxb,EAAMzP,SAAQ,EAAIkrB,CAAY,GAE7DA,EAAa9C,OAAOlR,EAAWmR,CAAY,CAC/C,CAEEoD,YAAYhc,EAAOyH,GACjB,IAAMgU,EAAe/sB,KAAK8sB,eAAexb,EAAMzP,SAAQ,GACnDkrB,GAAgB,CAACA,EAAa3C,OAAOrR,CAAS,IAChDgU,EAAavX,QAAO,EACpBJ,EAAAA,QAAI9T,OAAOtB,KAAK8sB,eAAgBxb,EAAMzP,SAAQ,CAAE,EAEtD,CAGEkqB,eAAeloB,GACb,IAEWV,EADXP,IAAIkjB,EACJ,IAAW3iB,KAFMS,EAAUC,EAAM,CAAA,CAAI,EAEL,CAE9B,GAAI,EADJiiB,EAAO3iB,EAAU2iB,EAAK7W,UAAY6W,EAAK7W,SAAS9L,GAAWnD,KAAK6sB,OACrD,MAAO,CAAA,EAClB,GAAI/G,EAAK0F,OAAQ,MAAO,CAAA,CAC9B,CACI,MAAO,CAAA,CACX,CAEE4B,2BAA2BvpB,GACzBjB,IAAIkjB,EACJ,IAAK,IAAM3iB,KAAWS,EAAUC,EAAM,CAAA,CAAI,EAAG,CAE3C,IADAiiB,EAAO3iB,EAAU2iB,EAAK7W,UAAY6W,EAAK7W,SAAS9L,GAAWnD,KAAK6sB,QACpD/G,EAAK0F,OAAQ,MAAO,EAAE3nB,GAAOiiB,EAAK0F,MAAM,EACpD,GAAI,CAAC1F,EAAM,KACjB,CACI,OAAOA,GAAQA,EAAKmG,8BAA6B,CACrD,CAEEsB,eAAe1pB,GACbjB,IAAIkjB,EAAM0H,EACV,SAASC,EAAoBlpB,GAE3B,OADAipB,EAAejpB,EAAMhC,MAAM,CAAC,EACrB,EACb,CACI,KAAO,EAAEujB,EAAO9lB,KAAK4sB,WAAW/oB,KAC9BA,EAAOA,EAAK/B,QAAQ,WAAY2rB,CAAmB,GAAK,IAG1D,IADID,GAAmB1H,EAAK7W,SACrB6W,GAAM,CACX,GAAIA,EAAKtV,MAAO,MAAO,CAAA,EACvBsV,EAAOA,EAAKjX,MAClB,CACI,MAAO,CAAA,CACX,CAEE4B,aAAaa,GACLyb,EAAe/sB,KAAK8sB,eAAexb,EAAMzP,SAAQ,GACvD,OAAOkrB,GAAgBA,EAAavc,KACxC,CAEEma,uBAAuBhf,GACrB3L,KAAKssB,0BAA0B5oB,KAAKiI,CAAQ,EAC5C3L,KAAKusB,WAAWC,wBAAwBriB,KAAKnK,IAAI,CACrD,CAEEysB,2BACE,IAAK,IAAM9gB,KAAY3L,KAAKssB,0BAA2B3gB,EAAQ,EAE/D3L,KAAKssB,0BAA0B9oB,OAAO,EAAGkqB,EAAAA,CAAQ,CACrD,CAEEC,kBAAkB3U,GAEdhZ,KAAKusB,WAAWC,wBADdxT,EAEAzX,EAAAA,QAAEqsB,SAASrsB,EAAAA,QAAEssB,SAAS7tB,KAAKysB,yBAA0BzT,CAAK,CAAC,EAEnBhZ,KAAKysB,wBAErD,CACA,OCtbMqB,GACJjuB,YAAYkuB,GACV/tB,KAAKguB,KAAOD,EACZ/tB,KAAKiuB,SAAWroB,KAAAA,EAChB5F,KAAKkuB,QAAUtoB,KAAAA,CACnB,CAEEuoB,mBAAoB,OAAOnuB,KAAKguB,KAAKjuB,KAAM,CAC3CquB,cAAe,OAAOpuB,KAAKiuB,QAAS,CACpCzc,aAAc,OAAOxR,KAAKkuB,OAAQ,CAElCG,YAAYtuB,GACV,GAAIC,KAAKiuB,SAAU,MAAM,IAAIvpB,MAAM,qCAAuC1E,KAAKiuB,QAAQ,EACvFjuB,KAAKiuB,SAAWluB,CACpB,CAEEuuB,QACEtuB,KAAKquB,YAAY,OAAO,CAC5B,CAEElW,SACEnY,KAAKquB,YAAY,QAAQ,CAC7B,CAEEjtB,IAAIrB,GACF,GAAc6F,KAAAA,IAAV7F,EAAqB,MAAM,IAAI2E,MAAM,6BAA6B,EACtE1E,KAAKquB,YAAY,KAAK,EACtBruB,KAAKkuB,QAAU,CAACK,GAAIxuB,CAAK,CAC7B,CAEEoM,OAAOqF,GACL,GAAe5L,KAAAA,IAAX4L,EAAsB,MAAM,IAAI9M,MAAM,6BAA6B,EACvE,GAAInD,EAAAA,QAAEgiB,QAAQ/R,CAAM,EAAG,OAAOxR,KAAKmY,OAAM,EACzCnY,KAAKquB,YAAY,QAAQ,EACzBruB,KAAKkuB,QAAU1c,CACnB,CACA,OAGqBgd,GACnB3uB,YAAY8P,EAAO3E,EAASqQ,EAAQkD,GAClCve,KAAKyuB,OAAS9e,EACd3P,KAAK8pB,KAAO,IAAI1J,IAAIpV,CAAO,EAC3BhL,KAAKsb,QAAUD,EACfrb,KAAKye,YAAcF,EACnBve,KAAK0uB,6BAA+B,CAAA,EACpC1uB,KAAK6F,aAAe,EACpB7F,KAAK2uB,aAAe,GACpB3uB,KAAK4uB,qBAAuB,KAC5B5uB,KAAK6uB,aAAe,CAAA,EACpB7uB,KAAKmV,KAAO,IAAIC,EAAAA,QAAI,CAACnL,KAAM,CAACyU,MAAO9Y,KAAAA,CAAS,CAAC,CAAC,EAC9C5F,KAAK8uB,SAAW,IAAIhK,GAAQ9kB,KAAKmV,KAAoC,QAA9BxF,EAAM9P,YAAYkvB,OAAiB,EAC1E/uB,KAAK0pB,SAAW,IAAIyC,GAClBnhB,EAASqQ,EAAQkD,EAAYve,KAAKgvB,mBAAmBroB,KAAK3G,IAAI,EAAGA,KAAKqB,OAAOsF,KAAK3G,IAAI,CAAC,EACzFS,OAAOuG,KAAKhH,IAAI,CAIpB,CAEEwf,WAME,OALKxf,KAAKmV,KAAKsK,MAAMf,QACnB1e,KAAKmV,KAAKsK,MAAMf,MAAQ1e,KAAKivB,cAAc,GAAG,EAC9CjvB,KAAKkvB,WAAWlvB,KAAKmV,KAAKsK,MAAMf,KAAK,EACrC1e,KAAKmvB,sBAAsBnvB,KAAKmV,KAAKsK,MAAMf,KAAK,GAE3C1e,KAAKmV,KAAKsK,MAAMf,KAC3B,CAEE/O,YACE,OAAO3P,KAAKyuB,MAChB,CAEEtnB,KAAKie,GACH,GAAIplB,KAAK6uB,aACP,MAAM,IAAInqB,MAAM,yDAAyD,EAE3E1E,KAAK6uB,aAAe,CAAA,EACpB7uB,KAAK8uB,SAAS3nB,KAAKie,EAAS,CAACplB,KAAKmV,KAAKsK,MAAMf,KAAK,EAClD,IAEWjc,EAFL2sB,EAAiB,GACvBpvB,KAAKqvB,mBAAmBrvB,KAAKwf,KAAM,IAAK5Z,KAAAA,EAAWwpB,CAAc,EACjE,IAAW3sB,KAAU2sB,EAAgBpvB,KAAKmvB,sBAAsB1sB,CAAM,CAC1E,CAEE+S,UACExV,KAAK0pB,SAASlU,QAAO,EACjBxV,KAAK8uB,UAAU9uB,KAAK8uB,SAAStZ,QAAO,EACxCxV,KAAKmV,KAAKe,SAAQ,CACtB,CAEEkB,iBAAiB2W,EAAKjgB,GACpB9N,KAAKsvB,aAAavB,CAAG,EACrB,IAAMhV,EAAY/Y,KAAKye,YAAY7B,gBAAgB,OAAQ9O,EAAQigB,CAAG,EAQtE,OAPAhV,EAAU9C,YAAcjW,KAAKuvB,qBAAqB5oB,KAAK3G,KAAM+tB,EAAKhV,EAAWnT,KAAAA,CAAS,EACtF5F,KAAKye,YAAY5B,MAAM9D,CAAS,EAAEjR,KAAK,KACjCiR,EAAU0B,SAAW,CAAC1B,EAAUyW,gBAClCxvB,KAAK0pB,SAASsD,OAAOe,EAAIlqB,KAAMkV,CAAS,EACxCA,EAAU0W,SAAW,CAAA,EAE7B,CAAK,EAAEziB,MAAMzL,EAAAA,QAAEgF,IAAI,EACRwS,EAAU9C,WACrB,CAEEsZ,qBAAqBxB,EAAKhV,EAAW4O,EAASjf,GACxCqQ,EAAUyW,gBACdzW,EAAUyW,cAAgB,CAAA,EACtB7H,GAASA,EAAO,EAChB5O,EAAU0W,WACZzvB,KAAK0pB,SAASwD,SAASa,EAAIlqB,KAAMkV,CAAS,EAC1CA,EAAU0W,SAAW,CAAA,GAEvBzvB,KAAKye,YAAYzB,IAAIjE,EAAWrQ,CAAK,EAAEsE,MAAMzL,EAAAA,QAAEgF,IAAI,EACvD,CAEE6K,iBAAiB2c,GAEf,OADA/tB,KAAKsvB,aAAavB,CAAG,EACd/tB,KAAK0pB,SAAS6D,eAAeQ,EAAIlqB,IAAI,CAChD,CAEE0T,aAAajG,EAAO4Y,EAAcpc,GAChC9N,KAAKsvB,aAAahe,CAAK,EACvB,IAAMyH,EAAY/Y,KAAKye,YAAY7B,gBAAgB,OAAQ9O,EAAQwD,CAAK,EAQxE,OAPAyH,EAAU9C,YAAcjW,KAAK0vB,iBAAiB/oB,KAAK3G,KAAMsR,EAAOyH,CAAS,EACzE/Y,KAAKye,YAAY5B,MAAM9D,CAAS,EAAEjR,KAAK,KACjCiR,EAAU0B,SAAW,CAAC1B,EAAUyW,gBAClCxvB,KAAK0pB,SAAS2D,UAAU/b,EAAOyH,EAAWmR,CAAY,EACtDnR,EAAU0W,SAAW,CAAA,EAE7B,CAAK,EAAEziB,MAAMzL,EAAAA,QAAEgF,IAAI,EACRwS,EAAU9C,WACrB,CAEEyZ,iBAAiBpe,EAAOyH,EAAWrQ,GAC7BqQ,EAAUyW,gBACdzW,EAAUyW,cAAgB,CAAA,EACtBzW,EAAU0W,WACZzvB,KAAK0pB,SAAS4D,YAAYhc,EAAOyH,CAAS,EAC1CA,EAAU0W,SAAW,CAAA,GAEvBzvB,KAAKye,YAAYzB,IAAIjE,EAAWrQ,CAAK,EAAEsE,MAAMzL,EAAAA,QAAEgF,IAAI,EACvD,CAEEkK,aAAaa,GACX,OAAOtR,KAAK0pB,SAASjZ,aAAaa,CAAK,CAC3C,CAEEge,aAAaziB,GACX,GAAI,CAACA,EAAOiD,UAAU9P,KAAKyuB,MAAM,EAC/B,MAAM,IAAI/pB,MAAM,6CAA6C,CAEnE,CAEEirB,0BAA0B3W,GACxBhZ,KAAK0pB,SAASiE,kBAAkB3U,CAAK,CACzC,CAEE7M,OAAO4hB,EAAKjgB,EAAQ0D,GAClBA,EAASjQ,EAAAA,QAAE+T,UAAU9D,EAAQzR,GAASyC,EAAWzC,CAAK,CAAC,EACvD,IAAM6vB,EAAYruB,EAAAA,QAAE4D,KAAKqM,CAAM,EAC/B,GAAI,CAACoe,EAAW,OAAOznB,QAAQe,QAAO,EAItC,GAHe,WAAX4E,GAAkC,aAAXA,GACzB+hB,GAA2C9B,EAAIlqB,KAAM2N,CAAM,EAEzDxR,KAAK8vB,iBAAiBte,EAAmB,aAAX1D,CAAqB,EAAG,OAAO3F,QAAQe,QAAO,EAC1E6mB,GAghB8Bve,IACtC5O,IAAIotB,EAgBJ,OAfAzuB,EAAAA,QAAEoJ,QAAQ6G,EAAQ,CAACzR,EAAO8D,KACxB,IAAMT,EAAoB,MAATS,EAAe,CAAC,IAAMD,EAAUC,EAAM,CAAA,CAAI,EAC3D,GAAImsB,EAAgB,CAClBptB,IAAIqtB,EAAqB,EAEzB,IADA,IAAMC,EAAWpvB,KAAKqvB,IAAIH,EAAevsB,OAAQL,EAASK,MAAM,EACzDwsB,EAAqBC,GACrBF,EAAeC,KAAwB7sB,EAAS6sB,IACrDA,CAAkB,GAGpB,GAAI,EADJD,EAAiBA,EAAeztB,MAAM,EAAG0tB,CAAkB,GACvCxsB,OAAQ,MAAO,CAAA,CACzC,MACMusB,EAAiB5sB,CAEvB,CAAG,EACgC,IAA1B4sB,EAAevsB,OAAe,IAAMusB,EAAersB,KAAK,GAAG,CACpE,GAliB+C6N,CAAM,EACjD4e,GAAgBL,EAAYve,CAAM,EAC9Bue,IAAehC,EAAIlqB,OAAMkqB,EAAM,IAAIjf,EAAUif,EAAItf,MAAOshB,EAAYhC,EAAIrf,YAAY,GACxF1O,KAAK8pB,KAAKzJ,SAAWC,UAAUyP,CAAU,EACzC,IAAMzkB,EAAMtL,KAAK8pB,KAAKjoB,SAAQ,EACxB2D,EAAcxF,KAAK6F,aACnBzE,EAAoB,IAAdwuB,EACN9V,EAAU1Y,EAAMoQ,EAAO,IAAMA,EACnC,OAAOxR,KAAKye,YAAY/B,QAAQ,QAAStb,EAAM,MAAQ,SAAU2sB,EAAKjU,EAAS,IAC7D9Z,KAAKsb,QAAQla,EAAM,MAAQ,UAAUkK,EAAKwO,EAAStU,CAAW,EAC/DwH,MAAMnD,GACdA,EAAEwmB,iBACAjY,EAAepY,KAAKswB,QAAQvC,EAAKvc,CAAM,EAAG,IAAMrJ,QAAQC,OAAOyB,CAAC,CAAC,EADxC1B,QAAQC,OAAOyB,CAAC,CAEjD,CACF,CACL,CAEE6H,OAAOqc,EAAKpc,GACV/O,IAAI+X,EAAQ,EAAG4V,EAAiB,EAC1BC,EAAgB,GAGhBC,GAFN9e,EAAiBsG,EAAoBtG,CAAc,EAExB+e,IACzB,GAAe,IAAX/V,CAAK,GAAU,CACjB,IAAMjS,EAAQ,IAAIhE,MAAM,gDAAgD,EACxE,IACEnD,EAAAA,QAAEqP,OAAOlI,EAAO,CAAC8nB,cAAAA,EAAeD,eAAAA,CAAc,CAAC,CAGzD,CAFU,OAGF,OAAOpoB,QAAQC,OAAOM,CAAK,CACnC,CACMgoB,EAAUA,GAAW,UACrBF,EAAcE,IAAYF,EAAcE,IAAY,GAAK,EACzD,IAAMC,EAAM,IAAI7C,GAAYC,CAAG,EAC3BtgB,EAGJ,OAAO2H,EAAAA,QAAIyO,SAAQ,EAAG/b,KAAK,KACzB,IAAM8oB,EAAcC,EAAeF,EAAIxC,YAAY,EAGnD,OAFI5sB,EAAAA,QAAEqO,QAAQghB,EAAanjB,CAAQ,IAAG8iB,GAAkB,GACxD9iB,EAAWmjB,EACJjf,EAAegf,CAAG,CACjC,CAAO,EAAE7oB,KAAK,KACN,GAAI,CAACvG,EAAAA,QAAEqO,QAAQnC,EAAUojB,EAAeF,EAAIxC,YAAY,CAAC,EACvD,OAAOsC,EAAmB,SAAS,EAErC,GAAoB,UAAhBE,EAAIvC,QAAqB,OAAOuC,EACpC,IAAMnf,EAASjQ,EAAAA,QAAE+T,UAAUqb,EAAInf,OAAQzR,GAASyC,EAAWzC,CAAK,CAAC,EACjE,OAAQ4wB,EAAIvC,SACV,IAAK,SACH,MACF,IAAK,MACH,GAAIpuB,KAAK8vB,iBAAiB,EAAE/B,EAAIlqB,MAAO2N,EAAO,GAAG,CAAC,EAAG,OAAOrJ,QAAQe,QAAO,EAC3E,MACF,IAAK,SAEH,GADA2mB,GAA2C9B,EAAIlqB,KAAM2N,CAAM,EACvDxR,KAAK8vB,iBAAiBte,CAAM,EAAG,OAAOrJ,QAAQe,QAAO,EACzDknB,GAAgBrC,EAAIlqB,KAAM2N,CAAM,EAChC,MACF,QACE,MAAM,IAAI9M,MAAM,iCAAmCisB,EAAIvC,SAAW,OAAO,CACrF,CAEQ,OADApuB,KAAK8pB,KAAKzJ,SAAWC,UAAUyN,EAAIlqB,IAAI,EAChC7D,KAAKsb,QAAQ9N,YAClBxN,KAAK8pB,KAAKjoB,SAAQ,EAAI4L,EAAU+D,EAAQxR,KAAK6F,YACvD,EAAUiC,KAAKjF,IACLtB,EAAAA,QAAEoJ,QAAQ9H,EAAO8K,UAAWtB,GAAYrM,KAAKgvB,mBAAmB3iB,CAAQ,CAAC,EAClExJ,EAAOiuB,UAAYH,EAAMF,EAAmB,OAAO,GACzD5mB,GACGA,CAAAA,EAAEwmB,kBAAqC,QAAhBM,EAAIvC,SAAqC,WAAhBuC,EAAIvC,QAGjDjmB,QAAQC,OAAOyB,CAAC,EAFduO,EAAepY,KAAKswB,QAAQvC,EAAKvc,CAAM,EAAG,IAAMrJ,QAAQC,OAAOyB,CAAC,CAAC,CAG3E,CACT,CAAO,CACP,GAEI,OAAO7J,KAAKyuB,OAAO/e,KAAKqe,EAAK,IACpB/tB,KAAKye,YAAY/B,QAAQ,QAAS,SAAUqR,EAAKnoB,KAAAA,EAAW6qB,CAAkB,CACtF,CACL,CAEEH,QAAQvC,EAAKvc,GAKX,IAAMuf,EAAWhD,EAAIlqB,KACfqoB,EAAQ3qB,EAAAA,QAAEiQ,CAAM,EAAEpM,KAAI,EAAG4rB,QAAQlxB,IACrC8C,IAAIiB,EAAOktB,EAEX,OADIjxB,IAAK+D,EAAOX,EAASW,EAAM/D,CAAG,GAC3ByB,EAAAA,QAAE6D,KAAKpF,KAAK0pB,SAAS0D,2BAA2BvpB,CAAI,CAAC,CAClE,CAAK,EAAE9D,MAAK,EACR,OAAOoI,QAAQ8U,IAAI1b,EAAAA,QAAEyC,IAAIkoB,EAAOroB,IAC9B7D,KAAK8pB,KAAKzJ,SAAWC,UAAUzc,CAAI,EAC5B7D,KAAKsb,QAAQlP,KAAKpM,KAAK8pB,KAAKjoB,SAAQ,CAAE,EAAEiG,KAAK0Y,IAClDxgB,KAAKgvB,mBAAmBxO,CAAI,CACpC,CAAO,EACF,CAAC,CACN,CAEEsP,iBAAiBte,EAAQC,GAGvBzR,KAAK6F,YAAY,GACjB7F,KAAK4uB,qBAAuB5uB,KAAKyuB,OAAOruB,IACxC,IAAMgvB,EAAiB,GACnB6B,EAAW,EACf1vB,EAAAA,QAAEoJ,QAAQ6G,EAAQ,CAACzR,EAAO8D,KACxB,IAAMoiB,EAAQjmB,KAAK8uB,SAASvG,QAAQ1kB,EAAM9D,CAAK,EAEzCmxB,GADFjL,GAAOgL,CAAQ,GAEjBhL,EAAQ,EAAEpiB,GAAO,CAAA,CAAI,EAAI7D,KAAK0pB,SAAS0D,2BAA2BvpB,CAAI,GACxE,GAAItC,CAAAA,EAAAA,QAAEgiB,QAAQ2N,CAAsB,EAApC,CACA,IACWC,EADLC,GAAmB,MAATvtB,EAAe,EAAIA,EAAKJ,QAAU,EAClD,IAAW0tB,KAAkBD,EAAwB,CACnD,IAAM5hB,EAAU6hB,EAAe5uB,MAAM6uB,CAAM,EAC3CxuB,IAAIyuB,EAAWtxB,EACf,GAAIuP,GAAAA,MAAWvP,EACb,IAAK,IAAMoD,KAAWS,EAAU0L,CAAO,EAErC,GAAiB1J,KAAAA,KADjByrB,EAAWA,EAAS5R,MAAMtc,IACE,MAG5B5B,EAAAA,QAAEyN,MAAMqiB,CAAQ,EAClBrxB,KAAKqB,OAAO8vB,CAAc,GAEpBrxB,EAAMyB,EAAAA,QAAEwmB,KAAKnkB,EAAUutB,CAAc,CAAC,EAC5CnxB,KAAKsxB,YACHH,EAAgBrxB,EAAKuxB,EACrBrxB,KAAKuxB,mBAAmBJ,EAAgB,CAAA,EAAO/B,CAAc,EAAG,CAAA,EAAO3d,EAAUwU,EACjFmJ,CACZ,GAEa3d,GAAawU,IAAOjmB,KAAK2uB,aAAawC,GAAkBnxB,KAAK6F,aAC1E,CAtB6C,CAuB7C,CAAK,EACD,IAAK,IAAMpD,KAAU2sB,EAAgBpvB,KAAKmvB,sBAAsB1sB,CAAM,EACtE,GAAIwuB,GAAYA,EAAW1vB,EAAAA,QAAE4D,KAAKqM,CAAM,EACtC,MAAM,IAAI9M,MAAM,gDAAgD,EAElE,OAAO+M,GAAY,CAAC,CAACwf,CACzB,CAQEhC,cAAcprB,EAAMgL,GACb7O,KAAK6uB,cAAyB,MAAThrB,GAAc7D,KAAKmH,KAAI,EAC3C6f,EAAa,CAEjBhE,QAAS,CAACjjB,MAAO8O,EAAQwH,aAAc,CAAA,EAAMC,WAAY,CAAA,CAAI,EAC7D2M,MAAO,CAACljB,MAAO8D,CAAI,CACzB,EACiB,MAATA,IAAcmjB,EAAW7U,OAAS,CAACpS,MAAOC,KAAKyuB,MAAM,GAEnDhsB,EAASzC,KAAK8uB,SAAS/H,aAAaljB,EAAMmjB,CAAU,EAG1D,OAFAhnB,KAAK8uB,SAAS1G,kBAAkB3lB,EAAQ,cAAc,EACtDzC,KAAKwxB,wBAAwB/uB,EAAQukB,CAAU,EACxCvkB,CACX,CAEE+uB,wBAAwB/uB,EAAQukB,GAC9B,IAAMyK,EAAWhvB,EAAO+T,OAExB,GADA/V,OAAO8V,iBAAiB9T,EAAQukB,CAAU,EACrCyK,EAAL,CAEA7uB,IAAI8uB,EAA0B,CAAA,EAC9B,IAAK,IAAM5xB,KAAOyB,EAAAA,QAAE6D,KAAK4hB,CAAU,EAAG,CACpC,IAAMtR,EAAajV,OAAO+R,yBAAyB/P,EAAQ3C,CAAG,EACzD4V,EAAWW,cAAiBX,EAAWY,aAC5ClB,EAAAA,QAAIuc,KAAKC,eAAenvB,EAAQ3C,CAAG,EACnC4xB,EAA0B,CAAA,EAChC,CACQA,GAAyBD,EAAShb,IAAIC,OAAM,CATjC,CAUnB,CAIEwY,WAAWzsB,GACT,IAAK,IAAMkG,KAAQlI,OAAO6R,oBAAoB7P,CAAM,EAAG,CACrD,IAAMiT,EAAajV,OAAO+R,yBAAyB/P,EAAQkG,CAAI,EAC3D+M,EAAWW,cAAgBX,EAAWY,aACxCZ,EAAWY,WAAa,CAAA,EACpB/U,EAAAA,QAAE0P,WAAWtI,EAAM,GAAG,IAAG+M,EAAWW,aAAe,CAAA,GACvD5V,OAAO8R,eAAe9P,EAAQkG,EAAM+M,CAAU,EAEtD,CACA,CAIEyZ,sBAAsB1sB,GACpBzC,KAAK8uB,SAAS1G,kBAAkB3lB,EAAQ,SAAS,CACrD,CAEEovB,eAAepvB,GACb,GAAMA,GAAUA,EAAO0P,QAAW1P,CAAAA,EAAOkf,WAAzC,CACA3hB,KAAK8uB,SAAS1G,kBAAkB3lB,EAAQ,eAAe,EACvDzC,KAAK8uB,SAAS3G,cAAc1lB,CAAM,EAMlC,IAAK,IAAM3C,KAAOW,OAAO6R,oBAAoB7P,EAAOgd,KAAK,EAAG,CACpD1Q,EAAQtM,EAAOgd,MAAM3f,GACvBiP,GAASA,EAAMiU,UAAYvgB,GAAQzC,KAAK6xB,eAAe9iB,CAAK,CACtE,CACI/O,KAAK8uB,SAAS1G,kBAAkB3lB,EAAQ,WAAW,CAZE,CAazD,CAEEusB,mBAAmBxO,GAIjB,GAHAjf,EAAAA,QAAEoJ,QAAQ3K,KAAK2uB,aAAc,CAACnpB,EAAa3B,KACrC2c,EAAKhb,aAAeA,GAAa,OAAOxF,KAAK2uB,aAAa9qB,EACpE,CAAK,EACG2c,EAAKjb,OAAQ,CACf,IAMW9C,EANL2sB,EAAiB,GACjBvgB,EAAS7O,KAAKuxB,mBAAmB/Q,EAAK3c,KAAM,CAAA,EAAMurB,CAAc,EAClEvgB,GACF7O,KAAKsxB,YACH9Q,EAAK3c,KAAM2c,EAAK1gB,IAAK0gB,EAAKzgB,MAAO8O,EAAQ,CAAA,EAAM,CAAA,EAAO,CAAA,EAAOugB,CAAc,EAE/E,IAAW3sB,KAAU2sB,EAAgBpvB,KAAKmvB,sBAAsB1sB,CAAM,CAC5E,MACMzC,KAAKqB,OAAOmf,EAAK3c,KAAM,KAAM,CAAA,CAAI,CAEvC,CAEE0tB,mBAAmB1tB,EAAMiuB,EAAa1C,GACpCxsB,IAAIH,EACJ,IAAMW,EAAW7B,EAAAA,QAAEwwB,UAAUnuB,EAAUC,EAAM,CAAA,CAAI,CAAC,EAClDjB,IAAIovB,EAAe,IACnB,IAAKpvB,IAAIoC,EAAI,EAAGA,EAAI5B,EAASK,OAAQuB,CAAC,GAAI,CACxC,IAAM7B,EAAUC,EAAS4B,GACnBlF,EAAMoC,EAAYiB,CAAO,EAC/BP,IAAImM,EAAQ5L,EAAUV,EAAOgd,MAAM3f,GAAOE,KAAKwf,KAE/C,GADIrc,IAAS6uB,IAAkC,MAAjBA,EAAuB,GAAK,KAAO7uB,GAC7D4L,GACF,GAAI+iB,GAAe9xB,KAAK2uB,aAAaqD,GAAe,MAAA,MAIpD,GAAI,EAFJjjB,EAAQ/O,KAAKsxB,YACXU,EAAclyB,EAAK,GAAI2C,EAAQqvB,EAAa,CAAA,EAAO,CAAA,EAAO1C,CAAc,GAC9D,OAEd3sB,EAASsM,CACf,CACI,OAAOtM,CACX,CAEE6uB,YAAYztB,EAAM/D,EAAKC,EAAO8O,EAAQijB,EAAargB,EAAUwU,EAAOmJ,GAClE,GAAI0C,GAAevwB,EAAAA,QAAEyN,MAAMjP,CAAK,EAC9B,MAAM,IAAI2E,4CAA4Cb,MAAS9D,CAAO,EAExE,GAAI+xB,CAAAA,GAAe9xB,CAAAA,KAAK2uB,aAAa9qB,GAAQ,KAA7C,CACItC,EAAAA,QAAEqO,QAAQ7P,EAAO6R,CAAgB,IAAG7R,EAAQC,KAAK4uB,sBACrDhsB,IAAIH,EAASoM,EAAO4Q,MAAM3f,GAC1B,GAAKyB,EAAAA,QAAE6N,QAAQrP,CAAK,IAAOkmB,EAAQ1kB,EAAAA,QAAE+jB,cAAcvlB,CAAK,EAAIwB,EAAAA,QAAEmB,SAAS3C,CAAK,GAA5E,CASA6C,IAAIqvB,EAAgB,CAAA,EAuCpB,OAtCK1wB,EAAAA,QAAEmB,SAASD,CAAM,IAIpBzC,KAAKkyB,qBAAqBrjB,EAAQ/O,EAAK,IAAI,EAC3C2C,EAASzC,KAAKivB,cAAcprB,EAAMgL,CAAM,EACxC7O,KAAKkyB,qBAAqBrjB,EAAQ/O,EAAK2C,EAAQA,EAAO4gB,OAAO,EAC7DrjB,KAAKkvB,WAAWzsB,CAAM,EACtB2sB,EAAe1rB,KAAKjB,CAAM,EAC1BwvB,EAAgB,CAAA,GAEdxgB,EACFhR,OAAO8R,eAAe9P,EAAQ,cAAe,CAACvB,IAAKK,EAAAA,QAAEgU,SAAS,CAAA,CAAI,EAAGc,aAAc,CAAA,CAAI,CAAC,EAC/E5T,EAAOkhB,aAChB,OAAOlhB,EAAOkhB,YAOZsO,GAAejyB,KAAKqvB,mBAAmB5sB,EAAQoB,EAAM,CAAA,EAAMurB,CAAc,EAC7E7tB,EAAAA,QAAEoJ,QAAQ5K,EAAO,CAACoB,EAAMgxB,KACtBnyB,KAAKsxB,YACHpuB,EAASW,EAAMsuB,CAAe,EAAGjwB,EAAYiwB,CAAe,EAAGhxB,EAAMsB,EAAQqvB,EAC7ErgB,EAAUwU,EAAOmJ,CACzB,CACA,CAAK,EACG6C,EACFjyB,KAAKqvB,mBAAmB5sB,EAAQoB,EAAM,CAAA,EAAOurB,CAAc,EAE3D7tB,EAAAA,QAAEoJ,QAAQlI,EAAOgd,MAAO,CAACte,EAAM6W,KACvBma,EAAkBvwB,EAAUoW,CAAQ,EACrCvX,OAAOuC,OAAOjD,EAAOoyB,CAAe,GACvCnyB,KAAKqB,OAAO6B,EAASW,EAAMsuB,CAAe,EAAG,KAAML,CAAW,CAExE,CAAO,EAEIrvB,CAxCX,CAPMzC,KAAK6xB,eAAepvB,CAAM,EACtB,CAACwjB,GAAS1kB,EAAAA,QAAEyN,MAAMjP,CAAK,EACzBC,KAAKoyB,wBAAwBvjB,EAAQ/O,CAAG,EAExCE,KAAKkyB,qBAAqBrjB,EAAQ/O,EAAKC,CAAK,CARG,CAoDvD,CAEEsvB,mBAAmB5sB,EAAQoB,EAAMqjB,EAAQkI,GACvCpvB,KAAK8uB,SAASrG,wBAAwB5kB,EAAM6iB,IAC1C,IACM5mB,EADS8F,KAAAA,IAAXshB,GAAwBA,IAAW,CAAC,CAACR,EAAMQ,SACzCpnB,EAAMoC,EAAYwkB,EAAM5jB,UAAU,EACnCrC,OAAOuC,OAAOP,EAAOgd,MAAO3f,CAAG,IAClCE,KAAKsxB,YACHpuB,EAASW,EAAM6iB,EAAM5jB,UAAU,EAAGhD,EAAK4mB,EAAME,YAAankB,EAAQ,CAAA,EAAO,CAAA,EAAO,CAAA,EAChF2sB,CAAc,CAExB,CAAK,CACL,CAEE/tB,OAAOwC,EAAMwuB,EAAuBP,GAClCO,EAAwBA,GAAyB,GACjD,IAAM5vB,EAASzC,KAAKqR,UAAUxN,CAAI,EACnB+B,KAAAA,IAAXnD,GACAqvB,GAAe9xB,KAAKsyB,sBAAsBzuB,EAAMwuB,CAAqB,GACnE9wB,EAAAA,QAAEgiB,QAAQ8O,CAAqB,GAAKryB,KAAKuyB,gBAAgB1uB,EAAMpB,CAAM,GACvElB,CAAAA,EAAAA,QAAEmB,SAASD,CAAM,GAGnBzC,KAAKwyB,kBAAkB/vB,EAAQ4vB,CAAqB,CAE1D,CAEEC,sBAAsBzuB,EAAMwuB,GAC1B,IAAK,IAAMI,KAAkBzyB,KAAK2uB,aAChC,GAAKluB,OAAOuC,OAAOhD,KAAK2uB,aAAc8D,CAAc,EAApD,CACA,GAAI5uB,IAAS4uB,GAAqC,MAAnBA,GAC3BlxB,EAAAA,QAAE0P,WAAWpN,EAAM4uB,EAAiB,GAAG,EAAG,MAAO,CAAA,EACrD,GAAa,MAAT5uB,GAAgBtC,EAAAA,QAAE0P,WAAWwhB,EAAgB5uB,EAAO,GAAG,EAAG,CAC5D,IAAMT,EAAWQ,EAAU6uB,EAAgB,CAAA,CAAI,EAC/C,IAAK7vB,IAAIoC,EAAI5B,EAASK,OAAY,EAAJuB,EAAOA,CAAC,GAAI,CACxC,IAAMsK,EAAUlM,EAASb,MAAM,EAAGyC,CAAC,EAAErB,KAAK,GAAG,EACvC6nB,EAASxmB,IAAM5B,EAASK,OAC9B,GAAI4uB,EAAsB/iB,IAAY+iB,EAAsB/iB,KAAakc,EAAQ,MAEjF,GADA6G,EAAsB/iB,GAAWkc,EAC7Blc,IAAYzL,EAAM,KAChC,CACA,CAZ6D,CAc7D,CAEE0uB,gBAAgBG,EAAYC,GAG1B/vB,IAAIgwB,EAAU,CAAA,EACVnwB,EAASkwB,EAKTE,EAKJ,IAJA,IAAMC,EAAmBJ,EAAW5wB,QAAQ,WAAYyC,IACtDsuB,EAAY3wB,EAAYqC,EAAMhC,MAAM,CAAC,CAAC,EAC/B,GACR,EACiBqD,KAAAA,IAAXnD,GAAwBA,IAAWzC,KAAKwf,MAAM,CACnD,IAGQuT,EAHFlkB,EACJpM,GAAUA,EAAOugB,SAAWvgB,IAAWkwB,GAAgB3yB,KAAKqR,UAAUyhB,CAAgB,EACnF9yB,KAAK8uB,SAASxG,cAAc7lB,GAAUA,EAAOwgB,OAASyP,CAAU,IAC7DK,EAAeH,EAAU,KAAO,CAACD,GAClC3yB,KAAKgzB,mBAAmBvwB,EAAQswB,CAAY,KAC/CH,EAAU,CAAA,EACV5yB,KAAKoyB,wBACHvjB,EAAQpM,GAAUA,EAAO0gB,MAAQ1gB,IAAWkwB,GAAgBE,CAAS,GAG3EpwB,EAASoM,CACf,CACI,OAAO+jB,CACX,CAEEI,mBAAmBvwB,EAAQswB,GACzB,MAAA,EAAIxxB,EAAAA,QAAEyN,MAAMvM,CAAM,GACdswB,GAAgBxxB,EAAAA,QAAE2P,SAAS6hB,EAActwB,CAAM,KAC9ClB,CAAAA,EAAAA,QAAEmB,SAASD,CAAM,GAAMA,CAAAA,EAAO0P,QAC5B5Q,EAAAA,QAAEuP,KAAKrO,EAAOgd,MAAO1f,GAASC,KAAKgzB,mBAAmBjzB,EAAOgzB,CAAY,CAAC,EACrF,CAEEP,kBAAkB/vB,EAAQ4vB,GACxB,GAAIA,EAAsB5vB,EAAOwgB,OAAQ,MAAO,CAAA,EAC5CxgB,EAAOkhB,aAAa,OAAOlhB,EAAOkhB,YACtC/gB,IAAIqwB,EAAyB,CAAA,EAiB7B,OAhBA1xB,EAAAA,QAAEoJ,QAAQlI,EAAOgd,MAAO,CAAC1f,EAAOD,KAC9B8C,IAAIswB,EAAe,CAAA,EACfC,EACJ,IAIQvM,EAJJyL,EAAsBnvB,EAAST,EAAOwgB,MAAOrhB,EAAU9B,CAAG,CAAC,IAC7DozB,EAAe,CAAA,EACfC,EAAc,CAAA,GACL,CAAC5xB,EAAAA,QAAEyN,MAAMjP,CAAK,GAAKA,EAAMoS,UAC5ByU,EAAc5mB,KAAK8uB,SAASxG,cAAcvoB,EAAMkjB,KAAK,IACxC1hB,EAAAA,QAAEP,IAAIqxB,EAAuBtyB,EAAMkjB,KAAK,KACzDkQ,EAAcnzB,KAAKwyB,kBAAkBzyB,EAAOsyB,CAAqB,EACjEa,EAAe,CAACtM,GAAe,CAACuM,GAGhCD,GAAclzB,KAAKoyB,wBAAwB3vB,EAAQ3C,CAAG,EAC1DmzB,EAAyBA,GAA0BE,CACzD,CAAK,EACMF,CACX,CAEE5hB,UAAUxN,GACR,IAEWV,EADXP,IAAIH,EACJ,IAAWU,KAFMS,EAAUC,CAAI,EAI7B,GAAe+B,KAAAA,KADfnD,EAASU,EAAUV,EAAOgd,MAAMtc,GAAWnD,KAAKwf,MACtB,OAE5B,OAAO/c,CACX,CAEE2wB,+BAA+B3wB,EAAQwH,EAAMnK,GAC3C,IAAM4V,EAAajV,OAAO+R,yBAAyBvI,EAAMnK,CAAG,EAC5D,GAAI4V,EAAY,CACd,GAAI,CAACA,EAAWY,WAAY,CAC1B,IAAMvH,EAAQ9E,EAAKnK,GACnB,GAAI,CAACiP,GAASA,EAAMiU,UAAYvgB,EAC9B,MAAM,IAAIiC,MACR,wEACGjC,EAAOwgB,MAAV,KAAoBnjB,CAAK,CAErC,CACM,GAAI,CAAC4V,EAAWxU,KAAO,CAACwU,EAAWtU,IACjC,MAAM,IAAIsD,6BAA6BjC,EAAOwgB,UAAUnjB,CAAK,CAErE,MAAW,GAAIA,KAAOmK,EAChB,MAAM,IAAIvF,iEACmDjC,EAAOwgB,UAAUnjB,CAAK,EAErF,OAAO4V,CACX,CAEEwc,qBAAqBzvB,EAAQ3C,EAAKC,EAAOmnB,GACvC,IAAMjd,EAAOxJ,OAAOuC,OAAOP,EAAQ,OAAO,EAAIA,EAAOgd,MAAQhd,EACzDiT,EAAa1V,KAAKozB,+BAA+B3wB,EAAQwH,EAAMnK,CAAG,EAClE4V,GACEwR,GAIFzmB,OAAO8R,eAAetI,EAAMnK,EAAK,CAC/BoB,IAAKwU,EAAWxU,IAAKE,IAAKsU,EAAWtU,IAAKiV,aAAc,CAAA,EAAMC,WAAY,CAAA,CACpF,CAAS,EAECrM,EAAKnK,KAASC,IAClBC,KAAK0uB,6BAA+B,CAAA,EACpCzkB,EAAKnK,GAAOC,EACZC,KAAK0uB,6BAA+B,CAAA,KAEpCtZ,EAAAA,QAAIhU,IAAI6I,EAAMnK,EAAKC,CAAK,EACxB2V,EAAajV,OAAO+R,yBAAyBvI,EAAMnK,CAAG,EACtDW,OAAO8R,eAAetI,EAAMnK,EAAK,CAC/BoB,IAAKwU,EAAWxU,IAAKE,IAAKpB,KAAKqzB,2BAA2B1sB,KAAK3G,KAAM0V,EAAY5V,CAAG,EACpFuW,aAAc,CAAA,EAAMC,WAAY,CAAC4Q,CACzC,CAAO,EAEP,CAEEmM,2BAA2B3d,EAAY5V,EAAK0U,GAC1C,GAAI,CAACxU,KAAK0uB,6BAGR,MAFM7kB,EAAI,IAAInF,MAAM,6CAA6C5E,CAAK,GACpEspB,UAAY,qBACRvf,EAER6L,EAAWtU,IAAI+I,KAAKnK,KAAMwU,CAAQ,CACtC,CAEE4d,wBAAwB3vB,EAAQ3C,GAC9B,IAAMmK,EAAOxJ,OAAOuC,OAAOP,EAAQ,OAAO,EAAIA,EAAOgd,MAAQhd,EAE7DzC,KAAKozB,+BAA+B3wB,EAAQwH,EAAMnK,CAAG,EACrDE,KAAK6xB,eAAe5nB,EAAKnK,EAAI,EAC7BsV,EAAAA,QAAI9T,OAAO2I,EAAMnK,CAAG,CACxB,CAEE6oB,eAAelmB,EAAQoB,GACrB7D,KAAK8uB,SAASnG,eAAelmB,EAAQoB,CAAI,CAC7C,CACA,CAGO,SAASgsB,GAA2C5E,EAAUzZ,GAGnEjQ,EAAAA,QAAEoJ,QAAQpJ,EAAAA,QAAE6D,KAAKoM,CAAM,EAAG3N,IACxB,GAAuB,MAAnBA,EAAKN,OAAO,CAAC,GACf,GAAI,EAAEM,IAASonB,GAAyB,MAAbA,GACrB1pB,EAAAA,QAAE0P,WAAWpN,EAAMonB,EAAW,GAAG,GAAKpnB,EAAKJ,OAASwnB,EAASxnB,OAAS,GAC1E,MAAM,IAAIiB,MAAM,kDAAkDb,CAAM,CAChF,KACW,CACL,GAAItC,EAAAA,QAAE2P,SAASrN,EAAM,GAAG,EACtB,MAAM,IAAIa,MAAM,mEAAmEb,CAAM,EAE3F,IAAMyvB,EAAepwB,EAAS+nB,EAAUrpB,EAAUiC,CAAI,CAAC,EACvD,GAAIpD,OAAOuC,OAAOwO,EAAQ8hB,CAAY,EACpC,MAAM,IAAI5uB,+BAA+Bb,SAAYyvB,CAAc,EAErE9hB,EAAO8hB,GAAgB9hB,EAAO3N,GAC9B,OAAO2N,EAAO3N,EACpB,CACA,CAAG,EAED,IAAM0vB,EAAWhyB,EAAAA,QAAEiQ,CAAM,EAAEpM,KAAI,EAAGpB,IAAIH,GAAQX,EAASW,EAAM,EAAE,CAAC,EAAEpC,OAAO,QAAQ,EAAE1B,MAAK,EACxFwB,EAAAA,QAAEoJ,QAAQ6G,EAAQ,CAACzR,EAAO8D,KACxB,IAAK,IAAM2vB,KAAaD,EAAU,CAChC,GAAIC,EAAU/vB,OAASI,EAAKJ,OAAQ,MACpC,GAAII,IAAS2vB,GAAajyB,EAAAA,QAAE0P,WAAWpN,EAAM2vB,CAAS,EACpD,MAAM,IAAI9uB,+BAA+B8uB,SAAiB3vB,CAAM,CAExE,CACA,CAAG,CACH,CAsBO,SAASusB,GAAgBnF,EAAUzZ,GACxC,IAAM4f,EAAsB,MAAbnG,EAAmB,EAAIA,EAASxnB,OAAS,EACxDlC,EAAAA,QAAEoJ,QAAQpJ,EAAAA,QAAE6D,KAAKoM,CAAM,EAAG3N,IACxB2N,EAAO3N,EAAKtB,MAAM6uB,CAAM,GAAK5f,EAAO3N,GACpC,OAAO2N,EAAO3N,EAClB,CAAG,CACH,CAEO,SAASgtB,EAAepuB,GAC7B,GAAI,CAAClB,EAAAA,QAAEmB,SAASD,CAAM,EAAG,OAAOA,EAChC,IAEW3C,EAFL+C,EAAS,GACToH,EAAOxH,EAAOgd,MACpB,IAAW3f,KAAOmK,EACZxJ,OAAOuC,OAAOiH,EAAMnK,CAAG,IAAG+C,EAAOjB,EAAU9B,CAAG,GAAK+wB,EAAe5mB,EAAKnK,EAAI,GAEjF,OAAO+C,CACT,CCntBAD,IAAIyY,EAAQoY,EACNC,GAAkB,SAKHC,EAQnB9zB,YAAYmL,GAEV,GAAI,CAACqQ,EACH,MAAM,IAAI3W,MAAM,mEAAmE,EAErF1E,KAAKwe,SAAWxT,EAAQlJ,QAAQ,MAAO,EAAE,EACzC9B,KAAK4zB,cAAgB,IAAIhW,EACzB5d,KAAKye,YAAc,IAAIrD,EAAWC,CAAM,EACxCrb,KAAKmV,KAAO,IAAIC,EAAAA,QAEhBiG,EAAOtQ,YAAY/K,KAAKwe,QAAQ,EAChCxe,KAAKyO,MAAQ,IAAI+f,GAAKxuB,KAAMA,KAAKwe,SAAUnD,EAAQrb,KAAKye,WAAW,EACnEze,KAAK6zB,UAAY,IAAIvV,EAASte,KAAKwe,SAAUxe,KAAKyO,MAAO4M,EAAQrb,KAAKye,WAAW,EAEjFhe,OAAO+D,OAAOxE,IAAI,CACtB,CAEEmhB,WAAY,OAAOnhB,KAAK6zB,UAAUrU,IAAK,CACvC6B,YAAa,OAAOrhB,KAAKyO,MAAM+Q,IAAK,CAYpCkH,MAAMtB,GACJplB,KAAKyO,MAAMtH,KAAKie,CAAO,CAC3B,CAEE5P,UACExV,KAAKmV,KAAKe,SAAQ,EAClBlW,KAAKyO,MAAM+G,QAAO,EAClBxV,KAAK6zB,UAAUre,QAAO,CAC1B,CAEEpV,UAAW,OAAOD,KAAKC,IAAG,EAAKJ,KAAKmhB,KAAKvC,UAAW,CACpD4C,SAAU,OAAOxhB,KAAK4zB,cAAc7V,kBAAkB/d,KAAKI,GAAG,CAAE,CAEhEsf,aAAaC,GACX,OAAO3f,KAAK6zB,UAAUnU,aAAaC,CAAK,CAC5C,CAEEC,iBACE,OAAO5f,KAAK6zB,UAAUjU,eAAc,CACxC,CAEErE,UAAUmG,EAAYjG,GACpB,OAAOzb,KAAKye,YAAYlD,UAAUmG,EAAYjG,CAAS,CAC3D,CAGEyG,QAAQxN,EAAOC,GAMb,OALKA,IACHA,EAAcD,EACdA,EAAQ9O,KAAAA,IAEN+O,aAAuBrG,GAAU/M,EAAAA,QAAE2I,WAAWyK,CAAW,KAAGA,EAAc,CAACpT,EAAGoT,CAAW,GACtF,IAAIF,EAAUC,EAAOC,EAAa3U,KAAKyO,MAAO,SAAS,CAClE,CAGEiB,KAAKmK,EAAQlO,GACXA,EAAWsM,EAAoBtM,GAAYpK,EAAAA,QAAEuyB,QAAQ,EACrDlxB,IAAImxB,EAAS5b,EAwCb,OAAOD,EAvCS/P,QAAQe,QAAO,EAAGpB,KAAK,IAAM,IAAIK,QAAQ,CAACe,EAASd,KACjE,IAAMsM,EAAQ,GACVsf,EAEA/R,EAAY,IAAIxN,EAAUC,EAAO,CAAC7R,OAAQgX,CAAM,EAAG7Z,KAAKyO,MAAO,MAAM,EAErEmT,EAAc5hB,KAAKub,UAAU,OAAQ,CAACU,UAAW2P,IAM/CrnB,CALJ,SAASA,EAAMmR,GACb,GAAKA,EACL,OAAIA,aAAsBpH,EAAesd,EAAG/R,OAAOjK,QAAQ8F,CAAU,EAC9DnU,EAAAA,QAAEuP,KAAK4E,EAAY3V,GAASwE,EAAMxE,CAAK,CAAC,CACzD,EACkBkiB,EAAUlM,EAAE,IACpB3N,EAAOwjB,EAAGljB,KAAK,EACfqrB,EAAO,EAEjB,CAAO,CAAC,EAEEpc,EAAY3X,KAAK4X,QAAQ,IAAMqK,EAAUzR,MAAOA,IAC7CA,IACLmH,EAAS,EACTA,EAAY,KACZqc,EAAkB5b,EAChBzM,EAAS+I,EAAM7R,MAAM,EAAG,KAAOmxB,EAAkB,KAAMD,EAAO,CAAG,CAC3E,EAAUjsB,KAAKjF,IAAWqG,EAAQrG,CAAM,CAAE,EAAG6F,IAAUN,EAAOM,CAAK,CAAE,CAAC,EACtE,CAAO,EAEDqrB,EAAU,KACJpc,IAAYA,EAAS,EAAIA,EAAY,MACrCiK,IAAcA,EAAW,EAAIA,EAAc,MAC3CK,IAAYA,EAAUzM,QAAO,EAAIyM,EAAY,MAC7C+R,GAAmBA,EAAgB7b,QAAQ6b,EAAgB7b,OAAM,CAC7E,EAEMA,EAAS,KACP/P,EAAO,IAAI1D,MAAM,UAAU,CAAC,EAC5BqvB,EAAO,CACf,CACA,CAAK,CAAC,EAC4B5b,CAAM,CACxC,CAEEP,QAAQ4K,EAAWC,EAAY7V,GAC7B,IAAMqnB,EAAqB1yB,EAAAA,QAAEmB,SAASkK,GAAWA,EAAQsnB,OAAO,EAC5DC,EAAe,EACfC,EACAH,IACFG,EAAgBxnB,EAAQynB,KAAO9yB,EAAAA,QAAE+yB,UAAU1nB,EAAQsnB,OAAO,EAAI3yB,EAAAA,QAAE0B,MAAM2J,EAAQsnB,OAAO,GAKvFtxB,IAAI+kB,EAyBJ,OAvBAA,EAAU3nB,KAAKmV,KAAK2B,OAAO0L,EAAW,CAAChO,EAAU/G,KAC/C,GAAIb,GAAWA,EAAQsnB,QAAS,CAC9B,IAAMK,EAAgBN,EACnBrnB,EAAQynB,KACP9yB,EAAAA,QAAEizB,aAAa,GAAIhgB,EAAU5H,EAAQsnB,OAAO,EAC5C3yB,EAAAA,QAAEkzB,SAAS,GAAIjgB,EAAU5H,EAAQsnB,OAAO,EACzCtnB,EAAQynB,KAAO9yB,EAAAA,QAAE+yB,UAAU9f,CAAQ,EAAIjT,EAAAA,QAAE0B,MAAMuR,CAAQ,EAC1D,GAAIjT,EAAAA,QAAEqO,QAAQ2kB,EAAeH,CAAa,EAAG,OAC7CA,EAAgBG,CACxB,CACMJ,CAAY,GACRxM,GAAW/a,GAAWA,EAAQmK,UAChC0L,EAAWjO,EAAU/G,CAAQ,EAG7BtF,QAAQe,QAAO,EAAGpB,KAAK,KACrB,IAAM6a,EAAK/V,GAAWA,EAAQ+V,GACX,EAAfwR,GAAqBxR,GAAMA,EAAGhB,YAClCc,EAAWjO,EAAU/G,CAAQ,CACvC,CAAS,CAET,EAAO,CAACsJ,UAAW,CAAA,EAAMsd,KAAMznB,GAAWA,EAAQynB,IAAI,CAAC,CAGvD,CAEEvR,KAAKD,EAAYjW,GACfhK,IAAImxB,EAASW,EA0Bb,OADUxc,EAAcE,EAxBV,IAAIjQ,QAAQ,CAACe,EAASd,KAClCxF,IAAI+U,EAAY3X,KAAK4X,QAAQiL,EAAY9iB,IAClCA,GAELqV,EAAAA,QAAIyO,SAAS,MACX9jB,EAAQ8iB,EAAU,KAElB3Z,EAAQnJ,CAAK,EACbg0B,EAAO,EACjB,CAAS,CACT,CAAO,EACGxyB,EAAAA,QAAEP,IAAI4L,EAAS,SAAS,IAC1B8nB,EAAgBjb,WAAW,KACzBib,EAAgB,KAChBtsB,EAAO,IAAI1D,MAAMkI,EAAQ+nB,gBAAkB,SAAS,CAAC,EACrDZ,EAAO,CACjB,EAAWnnB,EAAQgoB,OAAO,GAEpBb,EAAU,KACJpc,IAAYA,EAAS,EAAIA,EAAY,MACrC+c,IAAgBhb,aAAagb,CAAa,EAAGA,EAAgB,MACjEtsB,EAAO,IAAI1D,MAAM,UAAU,CAAC,CACpC,CACA,CAAK,EAC+CqvB,CAAO,EAAGA,CAAO,CAErE,CAEElQ,WACEjhB,IAAImxB,EAQJ,OADU7b,EANI,IAAI/P,QAAQ,CAACe,EAASd,KAClCgN,EAAAA,QAAIyO,SAAS3a,CAAO,EACpB6qB,EAAU,KACR3rB,EAAO,IAAI1D,MAAM,UAAU,CAAC,CACpC,CACA,CAAK,EACgCqvB,CAAO,CAE5C,CAEEpE,0BAA0B3W,GACxBhZ,KAAKyO,MAAMkhB,0BAA0B3W,CAAK,CAC9C,CAEE6b,iCACE70B,KAAKyO,MAAMka,eAAe3oB,KAAKyO,MAAM+Q,KAAM,GAAG,CAClD,CAEEsV,mCACE,OAAOzhB,CACX,CAEE0hB,2BAA2B/uB,EAAWqB,GACpC,GAAIgU,EAAQ,MAAM,IAAI3W,MAAM,0BAA0B,EACtD,GAAInD,EAAAA,QAAE+B,SAAS0C,CAAS,EAAG,CACzB,IAAMgvB,EAASxtB,OAAOytB,cAAgBztB,OAAOwtB,OAC7C,GAAI,CAACA,EAAQ,MAAM,IAAItwB,MAAM,wCAAwC,EACrE,GAAI,CAAC4D,UAAUC,MAAO,MAAM,IAAI7D,MAAM,kCAAkC,EACxEsB,EAAY,IAAIgvB,EAAOhvB,CAAS,EAC1BqY,EAAS7W,OAAOmW,OAAOD,gBAAgB,IAAIwX,YAAY,CAAC,CAAC,EAAE,GACjElvB,EAAUoB,8BAAgCjH,KAAKC,IAAG,KAAMie,EACxD8W,MAAM,IAAIhtB,QAAQ,CAACe,EAASd,KAC1BE,UAAUC,MAAMC,QAAQxC,EAAUoB,SAAU,KAC1C8B,EAAO,EAEA,IAAIf,QAAQ,MAAqD,EACzE,EAAE6E,MAAM5E,CAAM,CACvB,CAAO,CACP,CACIiT,EAAS,IAAItV,EAAOC,CAAS,EACzBytB,GAASpY,EAAOlS,cAAcsqB,CAAO,EACzC,IAGW9qB,EAHL,CAACysB,qBAAAA,EAAsBC,mBAAAA,CAAkB,EAC7CF,MAAM9Z,EAAOlU,KAAKnB,EAAUoB,SAAUC,CAAM,EAC9C5G,OAAO8R,eAAeohB,EAAO,uBAAwB,CAAC5zB,MAAOs1B,CAAkB,CAAC,EAChF,IAAW1sB,KAAQysB,EAAsBzB,EAAM2B,UAAU3sB,CAAI,CACjE,CAEE4sB,oBAAqB,OAAO7B,EAAgB,CAE5C4B,iBAAiBE,GACf,IAEWryB,EAFLC,EAAWoyB,EAAazxB,MAAM,GAAG,EACvCnB,IAAI6yB,EAAM9B,EAAM4B,OAChB,IAAWpyB,KAAWC,EAASb,MAAM,EAAG,CAAC,CAAC,EACnC9B,OAAOi1B,eAAevrB,KAAKsrB,EAAKtyB,CAAO,IAAGsyB,EAAItyB,GAAW,IAC9DsyB,EAAMA,EAAItyB,GAEZsyB,EAAIryB,EAASA,EAASK,OAAS,IAAM4X,EAAOjR,oBAAoBorB,CAAY,CAChF,CAEEznB,0BAA2B,OAAOsN,EAAOtN,iBAAgB,CAAG,CAC5DhF,iBAAkB,OAAOsS,EAAOtS,QAAO,CAAG,CAC1C4sB,mCAAmCC,EAAyBC,EAAuBC,GACjF,OAAOza,EAAOsa,4BACZC,EAAyBC,EAAuBC,CAAU,CAChE,CAEEl0B,iBAAiB9B,GAAM,OAAO8B,EAAU9B,CAAG,CAAE,CAC7CoC,mBAAmBY,GAAa,OAAOZ,EAAYY,CAAU,CAAE,CAE/DqG,qBAAqBC,GACnBqqB,EAAUrqB,EACNiS,GAAQA,EAAOlS,cAAcC,CAAE,CACvC,CAGEwI,uBAAwB,OAAO+hB,EAAM/hB,gBAAiB,CACtDmd,cAAe,OAAO4E,EAAM5E,OAAQ,CACpCgH,2BAA4B,OAAOpC,EAAMoC,oBAAqB,CAChE,C,OAEAt1B,OAAO8V,iBAAiBod,EAAO,CAC7B/hB,iBAAkB,CAAC7R,MAAO6R,CAAgB,EAC1Cmd,QAAS,CAAChvB,MAlRI,KAkRU,EACxBi2B,MAAO,CAACj2B,MAAOU,MAAM,EAErBw1B,gBAAiB,CAACl2B,MAAO,CACvBm2B,QAAQC,EAAMC,GACZ,GAAIhhB,EAAAA,UAAQ+gB,EAAM,MAAM,IAAIzxB,MAAM,mCAAmC,EACrE,GAAI,CAAC0xB,EAAczmB,MACjB,MAAM,IAAIjL,MAAM,uEAAuE,EAEnF2xB,EAAqB,CACzBlkB,OAAQ,CAACpS,MAAOq2B,EAAczmB,KAAK,EACnCgS,WAAY,CAACzgB,MAAO,OAAOlB,KAAKs2B,mBAAqBt2B,KAAKu2B,YAAa,CAAC,EACxEnU,YAAa,CAACriB,QAAaC,KAAKwW,QAAQxW,KAAKwW,OAAOC,IAAI4N,OAAM,CAAG,CAAC,CAC1E,EACYmS,EAAkBj1B,EAAAA,QAAE80B,CAAkB,EAAEjxB,KAAI,EAC/CqxB,MAAMl1B,EAAAA,QAAE6D,KAAK6b,EAAU1W,SAAS,CAAC,EAAEmsB,aAAan1B,EAAAA,QAAE6D,KAAKgQ,EAAAA,QAAI7K,SAAS,CAAC,EAAExK,MAAK,EAC/E,GAAIy2B,EAAgB/yB,OAClB,MAAM,IAAIiB,MACR,4DAA8D8xB,EAAgB7yB,KAAK,IAAI,CAAC,EAE5FlD,OAAO8V,iBAAiBnB,EAAAA,QAAI7K,UAAW8rB,CAAkB,EACzDjkB,EAAc6O,EAAW7L,EAAAA,OAAG,CAClC,CACA,CAAG,CACH,CAAC,EAEqB,aAAlB,OAAO5N,QAA0BA,OAAOmvB,SAC1CnvB,OAAOmvB,QAAQC,OAAO,YAAa,EAAE,EAAErhB,SAAS,QAASoe,CAAK,E"} \ No newline at end of file diff --git a/package.json b/package.json index 10740c5..ee7aa6d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "firetruss", - "version": "7.9.0", + "version": "8.0.0", "description": "Advanced data sync layer for Firebase and Vue.js", "scripts": { "update": "yarn up -R '*' && yarn dedupe --strategy highest", @@ -16,8 +16,7 @@ "firebase", "vuejs", "model", - "worker", - "angular" + "worker" ], "author": "Piotr Kaminski", "license": "MIT", diff --git a/src/Connector.js b/src/Connector.js index ecc9b86..aa7576c 100644 --- a/src/Connector.js +++ b/src/Connector.js @@ -1,5 +1,4 @@ import {Handle, Query, Reference} from './Reference.js'; -import angular from './angularCompatibility.js'; import stats from './utils/stats.js'; import {isTrussEqual} from './utils/utils.js'; @@ -17,7 +16,6 @@ export default class Connector { this._subConnectors = {}; this._disconnects = {}; - this._angularUnwatches = undefined; this._data = {}; this._vue = new Vue({data: { descriptors: {}, @@ -37,10 +35,6 @@ export default class Connector { this._connect(key, descriptor); } }); - - if (angular.active && scope && scope.$on && scope.$id) { - scope.$on('$destroy', () => {this.destroy();}); - } } get ready() { @@ -62,7 +56,6 @@ export default class Connector { destroy() { this._unlinkScopeProperties(); - _.forEach(this._angularUnwatches, unwatch => {unwatch();}); _.forEach(this._connections, (descriptor, key) => {this._disconnect(key);}); this._vue.$destroy(); } @@ -98,14 +91,7 @@ export default class Connector { const connectionStats = stats.for(`connection.at.${key}`); const getter = this._computeConnection.bind(this, fn, connectionStats); const update = this._updateComputedConnection.bind(this, key, fn, connectionStats); - const angularWatch = angular.active && !fn.angularWatchSuppressed; - // Use this._vue.$watch instead of truss.observe here so that we can disable the immediate - // callback if we'll get one from Angular anyway. - this._vue.$watch(getter, update, {immediate: !angularWatch}); - if (angularWatch) { - if (!this._angularUnwatches) this._angularUnwatches = []; - this._angularUnwatches.push(angular.watch(getter, update, true)); - } + this._vue.$watch(getter, update, {immediate: true}); } _computeConnection(fn, connectionStats) { @@ -135,7 +121,6 @@ export default class Connector { this._subConnectors[key]._updateConnections(newDescriptor); } Vue.set(this._vue.descriptors, key, newDescriptor); - angular.digest(); } _updateConnections(connections) { @@ -150,7 +135,6 @@ export default class Connector { _connect(key, descriptor) { Vue.set(this._vue.descriptors, key, descriptor); - angular.digest(); if (!descriptor) return; Vue.set(this._vue.values, key, undefined); if (descriptor instanceof Reference) { @@ -175,7 +159,6 @@ export default class Connector { unobserve(); delete this._disconnects[key]; Vue.set(this._vue.values, key, subScope); - angular.digest(); } ); } @@ -191,34 +174,29 @@ export default class Connector { if (this._disconnects[key]) this._disconnects[key](); delete this._disconnects[key]; Vue.delete(this._vue.descriptors, key); - angular.digest(); } _updateRefValue(key, value) { if (this._vue.values[key] !== value) { Vue.set(this._vue.values, key, value); - angular.digest(); } } _updateQueryValue(key, childKeys) { if (!this._vue.values[key]) { Vue.set(this._vue.values, key, {}); - angular.digest(); } const subScope = this._vue.values[key]; for (const childKey in subScope) { if (!Object.hasOwn(subScope, childKey)) continue; if (!_.includes(childKeys, childKey)) { Vue.delete(subScope, childKey); - angular.digest(); } } const object = this._tree.getObject(this._vue.descriptors[key].path); for (const childKey of childKeys) { if (Object.hasOwn(subScope, childKey)) continue; Vue.set(subScope, childKey, object[childKey]); - angular.digest(); } } @@ -229,4 +207,3 @@ function flattenRefs(refs) { if (refs instanceof Handle) return refs.toString(); return _.mapValues(refs, flattenRefs); } - diff --git a/src/Coupler.js b/src/Coupler.js index 780210e..0955eb0 100644 --- a/src/Coupler.js +++ b/src/Coupler.js @@ -1,6 +1,5 @@ import _ from 'lodash'; import Vue from 'vue'; -import angular from './angularCompatibility.js'; import {splitPath} from './utils/paths.js'; @@ -46,7 +45,6 @@ class QueryHandler { this); this._listening = false; this.ready = false; - angular.digest(); for (const key of this._keys) { this._coupler._decoupleSegments(this._segments.concat(key)); } @@ -60,7 +58,6 @@ class QueryHandler { const updatedKeys = this._updateKeysAndApplySnapshot(snap); if (!this.ready) { this.ready = true; - angular.digest(); for (const listener of this._listeners) { this._coupler._dispatcher.markReady(listener.operation); } @@ -135,7 +132,6 @@ class QueryHandler { this.ready = false; for (const key of this._keys) this._coupler._decoupleSegments(this._segments.concat(key)); this._keys = []; - angular.digest(); Promise.all(_.map(this._listeners, listener => { this._coupler._dispatcher.clearReady(listener.operation); return this._coupler._dispatcher.retry(listener.operation, error).catch(e => { @@ -196,7 +192,6 @@ class Node { if (node.listening) return false; if (node.ready) { node.ready = false; - angular.digest(); } }); } else { @@ -210,7 +205,6 @@ class Node { this._coupler._applySnapshot(snap); if (!this.ready && snap.path === this.path) { this.ready = true; - angular.digest(); this.unlisten(true); this._forAllDescendants(node => { for (const op of node.operations) this._coupler._dispatcher.markReady(op); @@ -226,7 +220,6 @@ class Node { if (node.listening) return false; if (node.ready) { node.ready = false; - angular.digest(); } for (const op of node.operations) this._coupler._dispatcher.clearReady(op); }); @@ -455,4 +448,3 @@ export default class Coupler { } } } - diff --git a/src/MetaTree.js b/src/MetaTree.js index 646318c..fc7e722 100644 --- a/src/MetaTree.js +++ b/src/MetaTree.js @@ -1,4 +1,3 @@ -import angular from './angularCompatibility.js'; import Vue from 'vue'; import Reference from './Reference.js'; @@ -16,7 +15,6 @@ export default class MetaTree { if (!Object.hasOwn(this, key)) { const update = () => { Vue.set(this, key, Date.now() + this.timeOffset); - angular.digest(); }; update(); setInterval(update, intervalMillis); @@ -84,7 +82,6 @@ export default class MetaTree { if (user) Object.freeze(user); this.root.user = user; this.root.userid = user && user.uid; - angular.digest(); return true; } ); @@ -101,7 +98,6 @@ export default class MetaTree { url.pathname = encodeURI(`/.info/${property}`); this._bridge.on(url.href, url.href, null, 'value', snap => { this.root[attribute] = snap.value; - angular.digest(); }); } } diff --git a/src/Modeler.js b/src/Modeler.js index b66d19d..2662c9a 100644 --- a/src/Modeler.js +++ b/src/Modeler.js @@ -1,5 +1,4 @@ import {Reference, Handle} from './Reference.js'; -import angular from './angularCompatibility.js'; import stats from './utils/stats.js'; import {makePathMatcher, joinPath, splitPath, escapeKey, unescapeKey} from './utils/paths.js'; import {isTrussEqual, copyPrototype} from './utils/utils.js'; @@ -426,8 +425,6 @@ export default class Modeler { const object = new mount.Class(); creatingObjectProperties = null; - if (angular.active) this._wrapProperties(object); - if (mount.keysUnsafe) { properties.$data = {value: Object.create(null), configurable: true, enumerable: true}; } @@ -445,24 +442,6 @@ export default class Modeler { } } - _wrapProperties(object) { - _.forEach(object, (value, key) => { - const valueKey = '$_' + key; - const descriptor = Object.getOwnPropertyDescriptor(object, key); - const valueDescriptor = descriptor.get && descriptor.set ? { - get: descriptor.get, set: descriptor.set, configurable: true - } : {value, writable: true}; - Object.defineProperties(object, { - [valueKey]: valueDescriptor, - [key]: { - get: () => object[valueKey], - set: arg => {object[valueKey] = arg; angular.digest();}, - enumerable: true, configurable: true - } - }); - }); - } - _buildComputedPropertyDescriptor(object, prop) { const propertyStats = stats.for(prop.fullName); @@ -486,15 +465,12 @@ export default class Modeler { if (_.isObject(newValue) && _.isFunction(newValue.then)) { const promise = newValue.then(finalValue => { if (promise === pendingPromise) update(finalValue); - // No need to angular.digest() here, since if we're running under Angular then we expect - // promises to be aliased to its $q service, which triggers digest itself. }, error => { if (promise === pendingPromise && update(new ErrorWrapper(error)) && !error.trussExpectedException) throw error; }); pendingPromise = promise; } else if (update(newValue)) { - angular.digest(); if (newValue instanceof ErrorWrapper && !newValue.error.trussExpectedException) { throw newValue.error; } @@ -710,7 +686,6 @@ function wrapConnections(object, connections) { return wrapConnections(object, connections.call(this)); /* eslint-enable no-invalid-this */ }; - fn.angularWatchSuppressed = true; return fn; } return _.mapValues(connections, descriptor => wrapConnections(object, descriptor)); diff --git a/src/Modeler.test.js b/src/Modeler.test.js index 64382df..260c08b 100644 --- a/src/Modeler.test.js +++ b/src/Modeler.test.js @@ -128,28 +128,6 @@ test('computing non-primitive values', async () => { tree.checkVueObject(tree.root, '/'); }); -test('wrapping observed properties preserves missing child dependencies', async () => { - const tree = context.tree; - const navigationContext = {}; - const navigation = {context: navigationContext}; - const vue = new Vue({data: {navigation}}); - - tree._modeler._wrapProperties(navigation); - assert.equal(Object.hasOwn(navigation, '$_context'), true); - - let review; - const unwatch = vue.$watch(() => navigation.context.review, value => { - review = value; - }, {immediate: true}); - assert.equal(review, undefined); - - Vue.set(navigationContext, 'review', {ready: true}); - await Vue.nextTick(); - assert.deepEqual(review, {ready: true}); - unwatch(); - vue.$destroy(); -}); - test('computed properties added after observation remain reactive', async () => { const tree = new Tree( context.truss, context.rootUrl, context.bridge, context.dispatcher); diff --git a/src/Tree.js b/src/Tree.js index 092d150..2a1f781 100644 --- a/src/Tree.js +++ b/src/Tree.js @@ -1,4 +1,3 @@ -import angular from './angularCompatibility.js'; import Coupler from './Coupler.js'; import Modeler from './Modeler.js'; import Reference from './Reference.js'; @@ -75,7 +74,6 @@ export default class Tree { this._vue.$data.$root = this._createObject('/'); this._fixObject(this._vue.$data.$root); this._completeCreateObject(this._vue.$data.$root); - angular.digest(); } return this._vue.$data.$root; } @@ -645,7 +643,6 @@ export default class Tree { configurable: true, enumerable: !hidden }); } - angular.digest(); } _overwriteFirebaseProperty(descriptor, key, newValue) { @@ -663,7 +660,6 @@ export default class Tree { this._getFirebasePropertyDescriptor(object, data, key); this._destroyObject(data[key]); Vue.delete(data, key); - angular.digest(); } checkVueObject(object, path) { diff --git a/src/Truss.js b/src/Truss.js index ed12eb3..d4861d9 100644 --- a/src/Truss.js +++ b/src/Truss.js @@ -1,6 +1,5 @@ import _ from 'lodash'; import Vue from 'vue'; -import angular from './angularCompatibility.js'; import Bridge from './Bridge.js'; import Connector from './Connector.js'; import Dispatcher from './Dispatcher.js'; @@ -121,7 +120,7 @@ export default class Truss { unobserve(); unobserve = null; callbackPromise = promiseFinally( - callback(scope.result), () => {angular.digest(); callbackPromise = null; cleanup();} + callback(scope.result), () => {callbackPromise = null; cleanup();} ).then(result => {resolve(result);}, error => {reject(error);}); }); @@ -165,19 +164,16 @@ export default class Truss { numCallbacks++; if (unwatch || options && options.immediate) { callbackFn(newValue, oldValue); - angular.digest(); } else { // Delay the immediate callback until we've had a chance to return the unwatch function. Promise.resolve().then(() => { const vm = options && options.vm; if (numCallbacks > 1 || (vm && vm.$destroyed)) return; callbackFn(newValue, oldValue); - // No need to digest since under Angular we'll be using $q as Promise. }); } }, {immediate: true, deep: options && options.deep}); - if (options && options.scope) options.scope.$on('$destroy', unwatch); return unwatch; } @@ -208,7 +204,6 @@ export default class Truss { }; }); promise = promiseCancel(promiseFinally(promise, cleanup), cleanup); - if (options && options.scope) options.scope.$on('$destroy', () => {promise.cancel();}); return promise; } @@ -280,10 +275,6 @@ export default class Truss { simulatedTokenGenerator, maxSimulationDuration, callFilter); } - static debounceAngularDigest(wait) { - angular.debounceDigest(wait); - } - static escapeKey(key) {return escapeKey(key);} static unescapeKey(escapedKey) {return unescapeKey(escapedKey);} @@ -326,4 +317,6 @@ Object.defineProperties(Truss, { }} }); -angular.defineModule(Truss); +if (typeof window !== 'undefined' && window.angular) { + window.angular.module('firetruss', []).constant('Truss', Truss); +} diff --git a/src/angularCompatibility.js b/src/angularCompatibility.js deleted file mode 100644 index a0610f2..0000000 --- a/src/angularCompatibility.js +++ /dev/null @@ -1,99 +0,0 @@ -import _ from 'lodash'; -import Vue from 'vue'; - - -let vue; -let lastDigestRequest = 0, digestInProgress = false; -const bareDigest = function() { - if (vue.digestRequest > lastDigestRequest) return; - vue.digestRequest = lastDigestRequest + 1; -}; - -const angularProxy = { - active: typeof window !== 'undefined' && window.angular -}; - -if (angularProxy.active) { - initAngular(); -} else { - _.forEach(['digest', 'watch', 'defineModule', 'debounceDigest'], method => { - angularProxy[method] = _.noop; - }); -} - -function initAngular() { - const module = window.angular.module('firetruss', []); - angularProxy.digest = bareDigest; - angularProxy.watch = function() {throw new Error('Angular watch proxy not yet initialized');}; - angularProxy.defineModule = function(Truss) { - module.constant('Truss', Truss); - }; - angularProxy.debounceDigest = function(wait) { - if (wait) { - const debouncedDigest = _.debounce(bareDigest, wait); - angularProxy.digest = function() { - if (vue.digestRequest > lastDigestRequest) return; - if (digestInProgress) bareDigest(); else debouncedDigest(); - }; - } else { - angularProxy.digest = bareDigest; - } - }; - - module.config(['$provide', function($provide) { - $provide.decorator('$rootScope', ['$delegate', '$exceptionHandler', - function($delegate, $exceptionHandler) { - const rootScope = $delegate; - angularProxy.watch = rootScope.$watch.bind(rootScope); - const proto = Object.getPrototypeOf(rootScope); - const angularDigest = proto.$digest; - proto.$digest = bareDigest; - proto.$digest.original = angularDigest; - vue = new Vue({data: {digestRequest: 0}}); - vue.$watch(() => vue.digestRequest, () => { - if (vue.digestRequest > lastDigestRequest) { - // Make sure we execute the digest outside the Vue task queue, because otherwise if the - // client replaced Promise with angular.$q all Truss.nextTick().then() functions will be - // executed inside the Angular digest and hence inside the Vue task queue. But - // Truss.nextTick() is used precisely to avoid that. Note that it's OK to use - // Vue.nextTick() here because even though it will schedule a flush via Promise.then() - // it only uses the native Promise, before it could've been monkey-patched by the app. - Vue.nextTick(() => { - if (vue.digestRequest <= lastDigestRequest) return; - digestInProgress = true; - rootScope.$digest.original.call(rootScope); - lastDigestRequest = vue.digestRequest = vue.digestRequest + 1; - }); - } else { - digestInProgress = false; - } - }); - const watcher = _.last(vue._watchers || vue._scope.effects); - watcher.id = Infinity; // make sure watcher is scheduled last - patchRenderWatcherGet(Object.getPrototypeOf(watcher)); - return rootScope; - } - ]); - }]); -} - -// This is a kludge that catches errors that get through render watchers and end up killing the -// entire Vue event loop (e.g., errors raised in transition callbacks). The state of the DOM may -// not be consistent after such an error is caught, but the global error handler should stop the -// world anyway. May be related to https://github.com/vuejs/vue/issues/7653. -function patchRenderWatcherGet(prototype) { - const originalGet = prototype.get; - prototype.get = function get() { - try { - return originalGet.call(this); - } catch (e) { - if (this.vm._watcher === this && Vue.config.errorHandler) { - Vue.config.errorHandler(e, this.vm, 'uncaught render error'); - } else { - throw e; - } - } - }; -} - -export default angularProxy; diff --git a/types/index.d.ts b/types/index.d.ts index 95344b1..f008487 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -17,7 +17,6 @@ declare class Truss { static debugPermissionDeniedErrors( simulatedTokenGenerator: any, maxSimulationDuration: number, callFilter: any ): Promise; - static debounceAngularDigest(wait: number): void; static escapeKey(key: string): string; static unescapeKey(escapedKey: string): string; static enableLogging(fn: boolean | ((msg: string) => void)): void; @@ -48,10 +47,10 @@ declare class Truss { ): Promise; observe(subject: () => T, callback: (newValue: T, oldValue: T | undefined) => void, options?: { - precise?: boolean, deep?: boolean, scope?: any + precise?: boolean, deep?: boolean }): () => void; - when(expression: () => any, options?: {timeout?: number, scope?: any}): Promise; + when(expression: () => any, options?: {timeout?: number}): Promise; } declare namespace Truss {