{"version":3,"file":"core.mjs","sources":["../../../dist-dev/tsc-out/packages/qwik/src/core/util/implicit_dollar.js","../../../dist-dev/tsc-out/packages/qwik/src/core/util/qdev.js","../../../dist-dev/tsc-out/packages/qwik/src/core/util/element.js","../../../dist-dev/tsc-out/packages/qwik/src/core/util/log.js","../../../dist-dev/tsc-out/packages/qwik/src/core/error/assert.js","../../../dist-dev/tsc-out/packages/qwik/src/core/error/error.js","../../../dist-dev/tsc-out/packages/qwik/src/core/platform/platform.js","../../../dist-dev/tsc-out/packages/qwik/src/core/util/types.js","../../../dist-dev/tsc-out/packages/qwik/src/core/util/promises.js","../../../dist-dev/tsc-out/packages/qwik/src/core/util/flyweight.js","../../../dist-dev/tsc-out/packages/qwik/src/core/util/dom.js","../../../dist-dev/tsc-out/packages/qwik/src/core/util/markers.js","../../../dist-dev/tsc-out/packages/qwik/src/core/state/constants.js","../../../dist-dev/tsc-out/packages/qwik/src/core/render/fast-calls.js","../../../dist-dev/tsc-out/packages/qwik/src/core/util/case.js","../../../dist-dev/tsc-out/packages/qwik/src/core/util/event.js","../../../dist-dev/tsc-out/packages/qwik/src/core/state/store.js","../../../dist-dev/tsc-out/packages/qwik/src/core/state/listeners.js","../../../dist-dev/tsc-out/packages/qwik/src/core/util/hash_code.js","../../../dist-dev/tsc-out/packages/qwik/src/core/style/qrl-styles.js","../../../dist-dev/tsc-out/packages/qwik/src/core/version.js","../../../dist-dev/tsc-out/packages/qwik/src/core/use/use-sequential-scope.js","../../../dist-dev/tsc-out/packages/qwik/src/core/use/use-context.js","../../../dist-dev/tsc-out/packages/qwik/src/core/render/error-handling.js","../../../dist-dev/tsc-out/packages/qwik/src/core/util/unitless_number.js","../../../dist-dev/tsc-out/packages/qwik/src/core/render/execute-component.js","../../../dist-dev/tsc-out/packages/qwik/src/core/render/ssr/render-ssr.js","../../../dist-dev/tsc-out/packages/qwik/src/core/qrl/inlined-fn.js","../../../dist-dev/tsc-out/packages/qwik/src/core/render/jsx/jsx-runtime.js","../../../dist-dev/tsc-out/packages/qwik/src/core/render/jsx/utils.public.js","../../../dist-dev/tsc-out/packages/qwik/src/core/render/dom/render-dom.js","../../../dist-dev/tsc-out/packages/qwik/src/core/container/resume.js","../../../dist-dev/tsc-out/packages/qwik/src/core/use/use-lexical-scope.public.js","../../../dist-dev/tsc-out/packages/qwik/src/core/render/dom/signals.js","../../../dist-dev/tsc-out/packages/qwik/src/core/render/dom/notify-render.js","../../../dist-dev/tsc-out/packages/qwik/src/core/use/use-on.js","../../../dist-dev/tsc-out/packages/qwik/src/core/use/use-signal.js","../../../dist-dev/tsc-out/packages/qwik/src/core/use/use-task.js","../../../dist-dev/tsc-out/packages/qwik/src/testing/html.js","../../../dist-dev/tsc-out/packages/qwik/src/core/state/context.js","../../../dist-dev/tsc-out/packages/qwik/src/core/use/use-locale.js","../../../dist-dev/tsc-out/packages/qwik/src/core/use/use-core.js","../../../dist-dev/tsc-out/packages/qwik/src/core/state/signal.js","../../../dist-dev/tsc-out/packages/qwik/src/core/container/container.js","../../../dist-dev/tsc-out/packages/qwik/src/core/render/dom/visitor.js","../../../dist-dev/tsc-out/packages/qwik/src/core/render/dom/operations.js","../../../dist-dev/tsc-out/packages/qwik/src/core/render/dom/virtual-element.js","../../../dist-dev/tsc-out/packages/qwik/src/core/container/pause.js","../../../dist-dev/tsc-out/packages/qwik/src/core/qrl/qrl.js","../../../dist-dev/tsc-out/packages/qwik/src/core/use/use-resource.js","../../../dist-dev/tsc-out/packages/qwik/src/core/render/jsx/slot.public.js","../../../dist-dev/tsc-out/packages/qwik/src/core/container/serializers.js","../../../dist-dev/tsc-out/packages/qwik/src/core/state/common.js","../../../dist-dev/tsc-out/packages/qwik/src/core/qrl/qrl-class.js","../../../dist-dev/tsc-out/packages/qwik/src/core/qrl/qrl.public.js","../../../dist-dev/tsc-out/packages/qwik/src/core/component/component.public.js","../../../dist-dev/tsc-out/packages/qwik/src/core/render/jsx/factory.js","../../../dist-dev/tsc-out/packages/qwik/src/core/render/dom/render.public.js","../../../dist-dev/tsc-out/packages/qwik/src/core/use/use-store.public.js","../../../dist-dev/tsc-out/packages/qwik/src/core/use/use-id.js","../../../dist-dev/tsc-out/packages/qwik/src/core/use/use-env-data.js","../../../dist-dev/tsc-out/packages/qwik/src/core/style/scoped-stylesheet.js","../../../dist-dev/tsc-out/packages/qwik/src/core/use/use-styles.js","../../../dist-dev/tsc-out/packages/qwik/src/core/use/use-error-boundary.js","../../../dist-dev/tsc-out/packages/qwik/src/core/components/prefetch.js"],"sourcesContent":["import { $ } from '../qrl/qrl.public';\n// <docs markdown=\"../readme.md#implicit$FirstArg\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#implicit$FirstArg instead)\n/**\n * Create a `____$(...)` convenience method from `___(...)`.\n *\n * It is very common for functions to take a lazy-loadable resource as a first argument. For this\n * reason, the Qwik Optimizer automatically extracts the first argument from any function which ends\n * in `$`.\n *\n * This means that `foo$(arg0)` and `foo($(arg0))` are equivalent with respect to Qwik Optimizer.\n * The former is just a shorthand for the latter.\n *\n * For example, these function calls are equivalent:\n *\n * - `component$(() => {...})` is same as `component($(() => {...}))`\n *\n * ```tsx\n * export function myApi(callback: QRL<() => void>): void {\n *   // ...\n * }\n *\n * export const myApi$ = implicit$FirstArg(myApi);\n * // type of myApi$: (callback: () => void): void\n *\n * // can be used as:\n * myApi$(() => console.log('callback'));\n *\n * // will be transpiled to:\n * // FILE: <current file>\n * myApi(qrl('./chunk-abc.js', 'callback'));\n *\n * // FILE: chunk-abc.js\n * export const callback = () => console.log('callback');\n * ```\n *\n * @param fn - A function that should have its first argument automatically `$`.\n * @public\n */\n// </docs>\nexport const implicit$FirstArg = (fn) => {\n    return function (first, ...rest) {\n        return fn.call(null, $(first), ...rest);\n    };\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wbGljaXRfZG9sbGFyLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3V0aWwvaW1wbGljaXRfZG9sbGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQVksTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxtREFBbUQ7QUFDbkQseUNBQXlDO0FBQ3pDLGdEQUFnRDtBQUNoRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ0c7QUFDSCxVQUFVO0FBQ1YsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FDL0IsRUFBMkMsRUFDTCxFQUFFO0lBQ3hDLE9BQU8sVUFBVSxLQUFZLEVBQUUsR0FBRyxJQUFVO1FBQzFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgJCwgdHlwZSBRUkwgfSBmcm9tICcuLi9xcmwvcXJsLnB1YmxpYyc7XG5cbi8vIDxkb2NzIG1hcmtkb3duPVwiLi4vcmVhZG1lLm1kI2ltcGxpY2l0JEZpcnN0QXJnXCI+XG4vLyAhIURPIE5PVCBFRElUIFRISVMgQ09NTUVOVCBESVJFQ1RMWSEhIVxuLy8gKGVkaXQgLi4vcmVhZG1lLm1kI2ltcGxpY2l0JEZpcnN0QXJnIGluc3RlYWQpXG4vKipcbiAqIENyZWF0ZSBhIGBfX19fJCguLi4pYCBjb252ZW5pZW5jZSBtZXRob2QgZnJvbSBgX19fKC4uLilgLlxuICpcbiAqIEl0IGlzIHZlcnkgY29tbW9uIGZvciBmdW5jdGlvbnMgdG8gdGFrZSBhIGxhenktbG9hZGFibGUgcmVzb3VyY2UgYXMgYSBmaXJzdCBhcmd1bWVudC4gRm9yIHRoaXNcbiAqIHJlYXNvbiwgdGhlIFF3aWsgT3B0aW1pemVyIGF1dG9tYXRpY2FsbHkgZXh0cmFjdHMgdGhlIGZpcnN0IGFyZ3VtZW50IGZyb20gYW55IGZ1bmN0aW9uIHdoaWNoIGVuZHNcbiAqIGluIGAkYC5cbiAqXG4gKiBUaGlzIG1lYW5zIHRoYXQgYGZvbyQoYXJnMClgIGFuZCBgZm9vKCQoYXJnMCkpYCBhcmUgZXF1aXZhbGVudCB3aXRoIHJlc3BlY3QgdG8gUXdpayBPcHRpbWl6ZXIuXG4gKiBUaGUgZm9ybWVyIGlzIGp1c3QgYSBzaG9ydGhhbmQgZm9yIHRoZSBsYXR0ZXIuXG4gKlxuICogRm9yIGV4YW1wbGUsIHRoZXNlIGZ1bmN0aW9uIGNhbGxzIGFyZSBlcXVpdmFsZW50OlxuICpcbiAqIC0gYGNvbXBvbmVudCQoKCkgPT4gey4uLn0pYCBpcyBzYW1lIGFzIGBjb21wb25lbnQoJCgoKSA9PiB7Li4ufSkpYFxuICpcbiAqIGBgYHRzeFxuICogZXhwb3J0IGZ1bmN0aW9uIG15QXBpKGNhbGxiYWNrOiBRUkw8KCkgPT4gdm9pZD4pOiB2b2lkIHtcbiAqICAgLy8gLi4uXG4gKiB9XG4gKlxuICogZXhwb3J0IGNvbnN0IG15QXBpJCA9IGltcGxpY2l0JEZpcnN0QXJnKG15QXBpKTtcbiAqIC8vIHR5cGUgb2YgbXlBcGkkOiAoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkXG4gKlxuICogLy8gY2FuIGJlIHVzZWQgYXM6XG4gKiBteUFwaSQoKCkgPT4gY29uc29sZS5sb2coJ2NhbGxiYWNrJykpO1xuICpcbiAqIC8vIHdpbGwgYmUgdHJhbnNwaWxlZCB0bzpcbiAqIC8vIEZJTEU6IDxjdXJyZW50IGZpbGU+XG4gKiBteUFwaShxcmwoJy4vY2h1bmstYWJjLmpzJywgJ2NhbGxiYWNrJykpO1xuICpcbiAqIC8vIEZJTEU6IGNodW5rLWFiYy5qc1xuICogZXhwb3J0IGNvbnN0IGNhbGxiYWNrID0gKCkgPT4gY29uc29sZS5sb2coJ2NhbGxiYWNrJyk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZm4gLSBBIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGhhdmUgaXRzIGZpcnN0IGFyZ3VtZW50IGF1dG9tYXRpY2FsbHkgYCRgLlxuICogQHB1YmxpY1xuICovXG4vLyA8L2RvY3M+XG5leHBvcnQgY29uc3QgaW1wbGljaXQkRmlyc3RBcmcgPSA8RklSU1QsIFJFU1QgZXh0ZW5kcyBhbnlbXSwgUkVUPihcbiAgZm46IChxcmw6IFFSTDxGSVJTVD4sIC4uLnJlc3Q6IFJFU1QpID0+IFJFVFxuKTogKChxcmw6IEZJUlNULCAuLi5yZXN0OiBSRVNUKSA9PiBSRVQpID0+IHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChmaXJzdDogRklSU1QsIC4uLnJlc3Q6IFJFU1QpOiBSRVQge1xuICAgIHJldHVybiBmbi5jYWxsKG51bGwsICQoZmlyc3QpLCAuLi5yZXN0KTtcbiAgfTtcbn07XG4iXX0=","export const qDev = globalThis.qDev !== false;\nexport const qInspector = globalThis.qInspector === true;\nexport const qSerialize = globalThis.qSerialize !== false;\nexport const qDynamicPlatform = globalThis.qDynamicPlatform !== false;\nexport const qTest = globalThis.qTest === true;\nexport const qRuntimeQrl = globalThis.qRuntimeQrl === true;\nexport const seal = (obj) => {\n    if (qDev) {\n        Object.seal(obj);\n    }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWRldi5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS91dGlsL3FkZXYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixLQUFLLEtBQUssQ0FBQztBQUN0RSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUM7QUFDL0MsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDO0FBRTNELE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQVEsRUFBRSxFQUFFO0lBQy9CLElBQUksSUFBSSxFQUFFLENBQUM7UUFDVCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgcURldiA9IGdsb2JhbFRoaXMucURldiAhPT0gZmFsc2U7XG5leHBvcnQgY29uc3QgcUluc3BlY3RvciA9IGdsb2JhbFRoaXMucUluc3BlY3RvciA9PT0gdHJ1ZTtcbmV4cG9ydCBjb25zdCBxU2VyaWFsaXplID0gZ2xvYmFsVGhpcy5xU2VyaWFsaXplICE9PSBmYWxzZTtcbmV4cG9ydCBjb25zdCBxRHluYW1pY1BsYXRmb3JtID0gZ2xvYmFsVGhpcy5xRHluYW1pY1BsYXRmb3JtICE9PSBmYWxzZTtcbmV4cG9ydCBjb25zdCBxVGVzdCA9IGdsb2JhbFRoaXMucVRlc3QgPT09IHRydWU7XG5leHBvcnQgY29uc3QgcVJ1bnRpbWVRcmwgPSBnbG9iYWxUaGlzLnFSdW50aW1lUXJsID09PSB0cnVlO1xuXG5leHBvcnQgY29uc3Qgc2VhbCA9IChvYmo6IGFueSkgPT4ge1xuICBpZiAocURldikge1xuICAgIE9iamVjdC5zZWFsKG9iaik7XG4gIH1cbn07XG5cbmRlY2xhcmUgY29uc3QgZ2xvYmFsVGhpczogYW55O1xuIl19","export const isNode = (value) => {\n    return value && typeof value.nodeType === 'number';\n};\nexport const isDocument = (value) => {\n    return value.nodeType === 9;\n};\nexport const isElement = (value) => {\n    return value.nodeType === 1;\n};\nexport const isQwikElement = (value) => {\n    const nodeType = value.nodeType;\n    return nodeType === 1 || nodeType === 111;\n};\nexport const isNodeElement = (value) => {\n    const nodeType = value.nodeType;\n    return nodeType === 1 || nodeType === 111 || nodeType === 3;\n};\nexport const isVirtualElement = (value) => {\n    return value.nodeType === 111;\n};\nexport const isVirtualElementOpenComment = (value) => {\n    return isComment(value) && value.data.startsWith('qv ');\n};\nexport const isText = (value) => {\n    return value.nodeType === 3;\n};\nexport const isComment = (value) => {\n    return value.nodeType === 8;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS91dGlsL2VsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBVSxFQUFpQixFQUFFO0lBQ2xELE9BQU8sS0FBSyxJQUFJLE9BQU8sS0FBSyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUM7QUFDckQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBVyxFQUFxQixFQUFFO0lBQzNELE9BQVEsS0FBYSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBYSxFQUFvQixFQUFFO0lBQzNELE9BQVEsS0FBYSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBYSxFQUF3QixFQUFFO0lBQ25FLE1BQU0sUUFBUSxHQUFJLEtBQWEsQ0FBQyxRQUFRLENBQUM7SUFDekMsT0FBTyxRQUFRLEtBQUssQ0FBQyxJQUFJLFFBQVEsS0FBSyxHQUFHLENBQUM7QUFDNUMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBYSxFQUF3QixFQUFFO0lBQ25FLE1BQU0sUUFBUSxHQUFJLEtBQWEsQ0FBQyxRQUFRLENBQUM7SUFDekMsT0FBTyxRQUFRLEtBQUssQ0FBQyxJQUFJLFFBQVEsS0FBSyxHQUFHLElBQUksUUFBUSxLQUFLLENBQUMsQ0FBQztBQUM5RCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWEsRUFBMkIsRUFBRTtJQUN6RSxPQUFRLEtBQWEsQ0FBQyxRQUFRLEtBQUssR0FBRyxDQUFDO0FBQ3pDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsS0FBNEIsRUFBb0IsRUFBRTtJQUM1RixPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUF5QixFQUFpQixFQUFFO0lBQ2pFLE9BQVEsS0FBYSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBeUIsRUFBb0IsRUFBRTtJQUN2RSxPQUFRLEtBQWEsQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUXdpa0VsZW1lbnQsIFZpcnR1YWxFbGVtZW50IH0gZnJvbSAnLi4vcmVuZGVyL2RvbS92aXJ0dWFsLWVsZW1lbnQnO1xuXG5leHBvcnQgY29uc3QgaXNOb2RlID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBOb2RlID0+IHtcbiAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZS5ub2RlVHlwZSA9PT0gJ251bWJlcic7XG59O1xuXG5leHBvcnQgY29uc3QgaXNEb2N1bWVudCA9ICh2YWx1ZTogTm9kZSk6IHZhbHVlIGlzIERvY3VtZW50ID0+IHtcbiAgcmV0dXJuICh2YWx1ZSBhcyBhbnkpLm5vZGVUeXBlID09PSA5O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRWxlbWVudCA9ICh2YWx1ZTogb2JqZWN0KTogdmFsdWUgaXMgRWxlbWVudCA9PiB7XG4gIHJldHVybiAodmFsdWUgYXMgYW55KS5ub2RlVHlwZSA9PT0gMTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1F3aWtFbGVtZW50ID0gKHZhbHVlOiBvYmplY3QpOiB2YWx1ZSBpcyBRd2lrRWxlbWVudCA9PiB7XG4gIGNvbnN0IG5vZGVUeXBlID0gKHZhbHVlIGFzIGFueSkubm9kZVR5cGU7XG4gIHJldHVybiBub2RlVHlwZSA9PT0gMSB8fCBub2RlVHlwZSA9PT0gMTExO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzTm9kZUVsZW1lbnQgPSAodmFsdWU6IG9iamVjdCk6IHZhbHVlIGlzIFF3aWtFbGVtZW50ID0+IHtcbiAgY29uc3Qgbm9kZVR5cGUgPSAodmFsdWUgYXMgYW55KS5ub2RlVHlwZTtcbiAgcmV0dXJuIG5vZGVUeXBlID09PSAxIHx8IG5vZGVUeXBlID09PSAxMTEgfHwgbm9kZVR5cGUgPT09IDM7XG59O1xuXG5leHBvcnQgY29uc3QgaXNWaXJ0dWFsRWxlbWVudCA9ICh2YWx1ZTogb2JqZWN0KTogdmFsdWUgaXMgVmlydHVhbEVsZW1lbnQgPT4ge1xuICByZXR1cm4gKHZhbHVlIGFzIGFueSkubm9kZVR5cGUgPT09IDExMTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1ZpcnR1YWxFbGVtZW50T3BlbkNvbW1lbnQgPSAodmFsdWU6IE5vZGUgfCBWaXJ0dWFsRWxlbWVudCk6IHZhbHVlIGlzIENvbW1lbnQgPT4ge1xuICByZXR1cm4gaXNDb21tZW50KHZhbHVlKSAmJiB2YWx1ZS5kYXRhLnN0YXJ0c1dpdGgoJ3F2ICcpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVGV4dCA9ICh2YWx1ZTogTm9kZSB8IFF3aWtFbGVtZW50KTogdmFsdWUgaXMgVGV4dCA9PiB7XG4gIHJldHVybiAodmFsdWUgYXMgYW55KS5ub2RlVHlwZSA9PT0gMztcbn07XG5cbmV4cG9ydCBjb25zdCBpc0NvbW1lbnQgPSAodmFsdWU6IE5vZGUgfCBRd2lrRWxlbWVudCk6IHZhbHVlIGlzIENvbW1lbnQgPT4ge1xuICByZXR1cm4gKHZhbHVlIGFzIGFueSkubm9kZVR5cGUgPT09IDg7XG59O1xuIl19","import { isElement, isNode } from './element';\nimport { qDev, qTest } from './qdev';\nconst STYLE = qDev\n    ? `background: #564CE0; color: white; padding: 2px 3px; border-radius: 2px; font-size: 0.8em;`\n    : '';\nexport const logError = (message, ...optionalParams) => {\n    return createAndLogError(false, message, ...optionalParams);\n};\nexport const throwErrorAndStop = (message, ...optionalParams) => {\n    const error = createAndLogError(false, message, ...optionalParams);\n    // eslint-disable-next-line no-debugger\n    debugger;\n    throw error;\n};\nexport const logErrorAndStop = (message, ...optionalParams) => {\n    const err = createAndLogError(qDev, message, ...optionalParams);\n    // eslint-disable-next-line no-debugger\n    debugger;\n    return err;\n};\nconst _printed = /*#__PURE__*/ new Set();\nexport const logOnceWarn = (message, ...optionalParams) => {\n    if (qDev) {\n        const key = 'warn' + String(message);\n        if (!_printed.has(key)) {\n            _printed.add(key);\n            logWarn(message, ...optionalParams);\n        }\n    }\n};\nexport const logWarn = (message, ...optionalParams) => {\n    if (qDev) {\n        console.warn('%cQWIK WARN', STYLE, message, ...printParams(optionalParams));\n    }\n};\nexport const logDebug = (message, ...optionalParams) => {\n    if (qDev) {\n        // eslint-disable-next-line no-console\n        console.debug('%cQWIK', STYLE, message, ...printParams(optionalParams));\n    }\n};\nexport const tryGetContext = (element) => {\n    return element['_qc_'];\n};\nconst printParams = (optionalParams) => {\n    if (qDev) {\n        return optionalParams.map((p) => {\n            if (isNode(p) && isElement(p)) {\n                return printElement(p);\n            }\n            return p;\n        });\n    }\n    return optionalParams;\n};\nconst printElement = (el) => {\n    const ctx = tryGetContext(el);\n    const isServer = /*#__PURE__*/ (() => typeof process !== 'undefined' && !!process.versions && !!process.versions.node)();\n    return {\n        tagName: el.tagName,\n        renderQRL: ctx?.$componentQrl$?.getSymbol(),\n        element: isServer ? undefined : el,\n        ctx: isServer ? undefined : ctx,\n    };\n};\nconst createAndLogError = (asyncThrow, message, ...optionalParams) => {\n    const err = message instanceof Error ? message : new Error(message);\n    // display the error message first, then the optional params, and finally the stack trace\n    // the stack needs to be displayed last because the given params will be lost among large stack traces so it will\n    // provide a bad developer experience\n    console.error('%cQWIK ERROR', STYLE, err.message, ...printParams(optionalParams), err.stack);\n    asyncThrow &&\n        !qTest &&\n        setTimeout(() => {\n            // throwing error asynchronously to avoid breaking the current call stack.\n            // We throw so that the error is delivered to the global error handler for\n            // reporting it to a third-party tools such as Qwik Insights, Sentry or New Relic.\n            throw err;\n        }, 0);\n    return err;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3V0aWwvbG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXJDLE1BQU0sS0FBSyxHQUFHLElBQUk7SUFDaEIsQ0FBQyxDQUFDLDRGQUE0RjtJQUM5RixDQUFDLENBQUMsRUFBRSxDQUFDO0FBRVAsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBYSxFQUFFLEdBQUcsY0FBcUIsRUFBRSxFQUFFO0lBQ2xFLE9BQU8saUJBQWlCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsT0FBYSxFQUFFLEdBQUcsY0FBcUIsRUFBUyxFQUFFO0lBQ2xGLE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQztJQUNuRSx1Q0FBdUM7SUFDdkMsUUFBUSxDQUFDO0lBQ1QsTUFBTSxLQUFLLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUFhLEVBQUUsR0FBRyxjQUFxQixFQUFFLEVBQUU7SUFDekUsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDO0lBQ2hFLHVDQUF1QztJQUN2QyxRQUFRLENBQUM7SUFDVCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxJQUFJLEdBQUcsRUFBVSxDQUFDO0FB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QUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFcEUseUZBQXlGO0lBQ3pGLGlIQUFpSDtJQUNqSCxxQ0FBcUM7SUFDckMsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTdGLFVBQVU7UUFDUixDQUFDLEtBQUs7UUFDTixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsMEVBQTBFO1lBQzFFLDBFQUEwRTtZQUMxRSxrRkFBa0Y7WUFDbEYsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUXdpa0VsZW1lbnQgfSBmcm9tICcuLi9yZW5kZXIvZG9tL3ZpcnR1YWwtZWxlbWVudCc7XG5pbXBvcnQgdHlwZSB7IFFDb250ZXh0IH0gZnJvbSAnLi4vc3RhdGUvY29udGV4dCc7XG5pbXBvcnQgeyBpc0VsZW1lbnQsIGlzTm9kZSB9IGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgeyBxRGV2LCBxVGVzdCB9IGZyb20gJy4vcWRldic7XG5cbmNvbnN0IFNUWUxFID0gcURldlxuICA/IGBiYWNrZ3JvdW5kOiAjNTY0Q0UwOyBjb2xvcjogd2hpdGU7IHBhZGRpbmc6IDJweCAzcHg7IGJvcmRlci1yYWRpdXM6IDJweDsgZm9udC1zaXplOiAwLjhlbTtgXG4gIDogJyc7XG5cbmV4cG9ydCBjb25zdCBsb2dFcnJvciA9IChtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pID0+IHtcbiAgcmV0dXJuIGNyZWF0ZUFuZExvZ0Vycm9yKGZhbHNlLCBtZXNzYWdlLCAuLi5vcHRpb25hbFBhcmFtcyk7XG59O1xuXG5leHBvcnQgY29uc3QgdGhyb3dFcnJvckFuZFN0b3AgPSAobWVzc2FnZT86IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKTogbmV2ZXIgPT4ge1xuICBjb25zdCBlcnJvciA9IGNyZWF0ZUFuZExvZ0Vycm9yKGZhbHNlLCBtZXNzYWdlLCAuLi5vcHRpb25hbFBhcmFtcyk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1kZWJ1Z2dlclxuICBkZWJ1Z2dlcjtcbiAgdGhyb3cgZXJyb3I7XG59O1xuXG5leHBvcnQgY29uc3QgbG9nRXJyb3JBbmRTdG9wID0gKG1lc3NhZ2U/OiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkgPT4ge1xuICBjb25zdCBlcnIgPSBjcmVhdGVBbmRMb2dFcnJvcihxRGV2LCBtZXNzYWdlLCAuLi5vcHRpb25hbFBhcmFtcyk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1kZWJ1Z2dlclxuICBkZWJ1Z2dlcjtcbiAgcmV0dXJuIGVycjtcbn07XG5cbmNvbnN0IF9wcmludGVkID0gLyojX19QVVJFX18qLyBuZXcgU2V0PHN0cmluZz4oKTtcblxuZXhwb3J0IGNvbnN0IGxvZ09uY2VXYXJuID0gKG1lc3NhZ2U/OiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkgPT4ge1xuICBpZiAocURldikge1xuICAgIGNvbnN0IGtleSA9ICd3YXJuJyArIFN0cmluZyhtZXNzYWdlKTtcbiAgICBpZiAoIV9wcmludGVkLmhhcyhrZXkpKSB7XG4gICAgICBfcHJpbnRlZC5hZGQoa2V5KTtcbiAgICAgIGxvZ1dhcm4obWVzc2FnZSwgLi4ub3B0aW9uYWxQYXJhbXMpO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGxvZ1dhcm4gPSAobWVzc2FnZT86IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKSA9PiB7XG4gIGlmIChxRGV2KSB7XG4gICAgY29uc29sZS53YXJuKCclY1FXSUsgV0FSTicsIFNUWUxFLCBtZXNzYWdlLCAuLi5wcmludFBhcmFtcyhvcHRpb25hbFBhcmFtcykpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgbG9nRGVidWcgPSAobWVzc2FnZT86IHN0cmluZywgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKSA9PiB7XG4gIGlmIChxRGV2KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmRlYnVnKCclY1FXSUsnLCBTVFlMRSwgbWVzc2FnZSwgLi4ucHJpbnRQYXJhbXMob3B0aW9uYWxQYXJhbXMpKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRyeUdldENvbnRleHQgPSAoZWxlbWVudDogUXdpa0VsZW1lbnQpOiBRQ29udGV4dCB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiAoZWxlbWVudCBhcyBhbnkpWydfcWNfJ107XG59O1xuXG5jb25zdCBwcmludFBhcmFtcyA9IChvcHRpb25hbFBhcmFtczogYW55W10pID0+IHtcbiAgaWYgKHFEZXYpIHtcbiAgICByZXR1cm4gb3B0aW9uYWxQYXJhbXMubWFwKChwKSA9PiB7XG4gICAgICBpZiAoaXNOb2RlKHApICYmIGlzRWxlbWVudChwKSkge1xuICAgICAgICByZXR1cm4gcHJpbnRFbGVtZW50KHApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHA7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG9wdGlvbmFsUGFyYW1zO1xufTtcblxuY29uc3QgcHJpbnRFbGVtZW50ID0gKGVsOiBFbGVtZW50KSA9PiB7XG4gIGNvbnN0IGN0eCA9IHRyeUdldENvbnRleHQoZWwpO1xuICBjb25zdCBpc1NlcnZlcjogYm9vbGVhbiA9IC8qI19fUFVSRV9fKi8gKCgpID0+XG4gICAgdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmICEhcHJvY2Vzcy52ZXJzaW9ucyAmJiAhIXByb2Nlc3MudmVyc2lvbnMubm9kZSkoKTtcblxuICByZXR1cm4ge1xuICAgIHRhZ05hbWU6IGVsLnRhZ05hbWUsXG4gICAgcmVuZGVyUVJMOiBjdHg/LiRjb21wb25lbnRRcmwkPy5nZXRTeW1ib2woKSxcbiAgICBlbGVtZW50OiBpc1NlcnZlciA/IHVuZGVmaW5lZCA6IGVsLFxuICAgIGN0eDogaXNTZXJ2ZXIgPyB1bmRlZmluZWQgOiBjdHgsXG4gIH07XG59O1xuXG5jb25zdCBjcmVhdGVBbmRMb2dFcnJvciA9IChhc3luY1Rocm93OiBib29sZWFuLCBtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pID0+IHtcbiAgY29uc3QgZXJyID0gbWVzc2FnZSBpbnN0YW5jZW9mIEVycm9yID8gbWVzc2FnZSA6IG5ldyBFcnJvcihtZXNzYWdlKTtcblxuICAvLyBkaXNwbGF5IHRoZSBlcnJvciBtZXNzYWdlIGZpcnN0LCB0aGVuIHRoZSBvcHRpb25hbCBwYXJhbXMsIGFuZCBmaW5hbGx5IHRoZSBzdGFjayB0cmFjZVxuICAvLyB0aGUgc3RhY2sgbmVlZHMgdG8gYmUgZGlzcGxheWVkIGxhc3QgYmVjYXVzZSB0aGUgZ2l2ZW4gcGFyYW1zIHdpbGwgYmUgbG9zdCBhbW9uZyBsYXJnZSBzdGFjayB0cmFjZXMgc28gaXQgd2lsbFxuICAvLyBwcm92aWRlIGEgYmFkIGRldmVsb3BlciBleHBlcmllbmNlXG4gIGNvbnNvbGUuZXJyb3IoJyVjUVdJSyBFUlJPUicsIFNUWUxFLCBlcnIubWVzc2FnZSwgLi4ucHJpbnRQYXJhbXMob3B0aW9uYWxQYXJhbXMpLCBlcnIuc3RhY2spO1xuXG4gIGFzeW5jVGhyb3cgJiZcbiAgICAhcVRlc3QgJiZcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIHRocm93aW5nIGVycm9yIGFzeW5jaHJvbm91c2x5IHRvIGF2b2lkIGJyZWFraW5nIHRoZSBjdXJyZW50IGNhbGwgc3RhY2suXG4gICAgICAvLyBXZSB0aHJvdyBzbyB0aGF0IHRoZSBlcnJvciBpcyBkZWxpdmVyZWQgdG8gdGhlIGdsb2JhbCBlcnJvciBoYW5kbGVyIGZvclxuICAgICAgLy8gcmVwb3J0aW5nIGl0IHRvIGEgdGhpcmQtcGFydHkgdG9vbHMgc3VjaCBhcyBRd2lrIEluc2lnaHRzLCBTZW50cnkgb3IgTmV3IFJlbGljLlxuICAgICAgdGhyb3cgZXJyO1xuICAgIH0sIDApO1xuICByZXR1cm4gZXJyO1xufTtcbiJdfQ==","import { isElement, isQwikElement } from '../util/element';\nimport { throwErrorAndStop } from '../util/log';\nimport { qDev } from '../util/qdev';\nconst ASSERT_DISCLAIMER = 'Internal assert, this is likely caused by a bug in Qwik: ';\nexport function assertDefined(value, text, ...parts) {\n    if (qDev) {\n        if (value != null) {\n            return;\n        }\n        throwErrorAndStop(ASSERT_DISCLAIMER + text, ...parts);\n    }\n}\nexport function assertEqual(value1, value2, text, ...parts) {\n    if (qDev) {\n        if (value1 === value2) {\n            return;\n        }\n        throwErrorAndStop(ASSERT_DISCLAIMER + text, ...parts);\n    }\n}\nexport function assertFail(text, ...parts) {\n    if (qDev) {\n        throwErrorAndStop(ASSERT_DISCLAIMER + text, ...parts);\n    }\n}\nexport function assertTrue(value1, text, ...parts) {\n    if (qDev) {\n        if (value1 === true) {\n            return;\n        }\n        throwErrorAndStop(ASSERT_DISCLAIMER + text, ...parts);\n    }\n}\nexport function assertNumber(value1, text, ...parts) {\n    if (qDev) {\n        if (typeof value1 === 'number') {\n            return;\n        }\n        throwErrorAndStop(ASSERT_DISCLAIMER + text, ...parts);\n    }\n}\nexport function assertString(value1, text, ...parts) {\n    if (qDev) {\n        if (typeof value1 === 'string') {\n            return;\n        }\n        throwErrorAndStop(ASSERT_DISCLAIMER + text, ...parts);\n    }\n}\nexport function assertQwikElement(el) {\n    if (qDev) {\n        if (!isQwikElement(el)) {\n            console.error('Not a Qwik Element, got', el);\n            throwErrorAndStop(ASSERT_DISCLAIMER + 'Not a Qwik Element');\n        }\n    }\n}\nexport function assertElement(el) {\n    if (qDev) {\n        if (!isElement(el)) {\n            console.error('Not a Element, got', el);\n            throwErrorAndStop(ASSERT_DISCLAIMER + 'Not an Element');\n        }\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL2Vycm9yL2Fzc2VydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXBDLE1BQU0saUJBQWlCLEdBQUcsMkRBQTJELENBQUM7QUFFdEYsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsS0FBUSxFQUNSLElBQVksRUFDWixHQUFHLEtBQVk7SUFFZixJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1QsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNULENBQUM7UUFDRCxpQkFBaUIsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQ3pCLE1BQVcsRUFDWCxNQUFXLEVBQ1gsSUFBWSxFQUNaLEdBQUcsS0FBWTtJQUVmLElBQUksSUFBSSxFQUFFLENBQUM7UUFDVCxJQUFJLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUNELGlCQUFpQixDQUFDLGlCQUFpQixHQUFHLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ3hELENBQUM7QUFDSCxDQUFDO0FBR0QsTUFBTSxVQUFVLFVBQVUsQ0FBQyxJQUFZLEVBQUUsR0FBRyxLQUFZO0lBQ3RELElBQUksSUFBSSxFQUFFLENBQUM7UUFDVCxpQkFBaUIsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBVyxFQUFFLElBQVksRUFBRSxHQUFHLEtBQVk7SUFDbkUsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNULElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDVCxDQUFDO1FBQ0QsaUJBQWlCLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLE1BQVcsRUFBRSxJQUFZLEVBQUUsR0FBRyxLQUFZO0lBQ3JFLElBQUksSUFBSSxFQUFFLENBQUM7UUFDVCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQy9CLE9BQU87UUFDVCxDQUFDO1FBQ0QsaUJBQWlCLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLE1BQVcsRUFBRSxJQUFZLEVBQUUsR0FBRyxLQUFZO0lBQ3JFLElBQUksSUFBSSxFQUFFLENBQUM7UUFDVCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQy9CLE9BQU87UUFDVCxDQUFDO1FBQ0QsaUJBQWlCLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsRUFBTztJQUN2QyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0MsaUJBQWlCLENBQUMsaUJBQWlCLEdBQUcsb0JBQW9CLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEVBQXlCO0lBQ3JELElBQUksSUFBSSxFQUFFLENBQUM7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN4QyxpQkFBaUIsQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUXdpa0VsZW1lbnQsIFZpcnR1YWxFbGVtZW50IH0gZnJvbSAnLi4vcmVuZGVyL2RvbS92aXJ0dWFsLWVsZW1lbnQnO1xuaW1wb3J0IHsgaXNFbGVtZW50LCBpc1F3aWtFbGVtZW50IH0gZnJvbSAnLi4vdXRpbC9lbGVtZW50JztcbmltcG9ydCB7IHRocm93RXJyb3JBbmRTdG9wIH0gZnJvbSAnLi4vdXRpbC9sb2cnO1xuaW1wb3J0IHsgcURldiB9IGZyb20gJy4uL3V0aWwvcWRldic7XG5cbmNvbnN0IEFTU0VSVF9ESVNDTEFJTUVSID0gJ0ludGVybmFsIGFzc2VydCwgdGhpcyBpcyBsaWtlbHkgY2F1c2VkIGJ5IGEgYnVnIGluIFF3aWs6ICc7XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnREZWZpbmVkPFQ+KFxuICB2YWx1ZTogVCxcbiAgdGV4dDogc3RyaW5nLFxuICAuLi5wYXJ0czogYW55W11cbik6IGFzc2VydHMgdmFsdWUgaXMgTm9uTnVsbGFibGU8VD4ge1xuICBpZiAocURldikge1xuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93RXJyb3JBbmRTdG9wKEFTU0VSVF9ESVNDTEFJTUVSICsgdGV4dCwgLi4ucGFydHMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRFcXVhbChcbiAgdmFsdWUxOiBhbnksXG4gIHZhbHVlMjogYW55LFxuICB0ZXh0OiBzdHJpbmcsXG4gIC4uLnBhcnRzOiBhbnlbXVxuKTogYXNzZXJ0cyB2YWx1ZTEgaXMgdHlwZW9mIHZhbHVlMiB7XG4gIGlmIChxRGV2KSB7XG4gICAgaWYgKHZhbHVlMSA9PT0gdmFsdWUyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93RXJyb3JBbmRTdG9wKEFTU0VSVF9ESVNDTEFJTUVSICsgdGV4dCwgLi4ucGFydHMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRGYWlsKHRleHQ6IHN0cmluZywgLi4ucGFydHM6IGFueVtdKTogbmV2ZXI7XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RmFpbCh0ZXh0OiBzdHJpbmcsIC4uLnBhcnRzOiBhbnlbXSkge1xuICBpZiAocURldikge1xuICAgIHRocm93RXJyb3JBbmRTdG9wKEFTU0VSVF9ESVNDTEFJTUVSICsgdGV4dCwgLi4ucGFydHMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRUcnVlKHZhbHVlMTogYW55LCB0ZXh0OiBzdHJpbmcsIC4uLnBhcnRzOiBhbnlbXSk6IGFzc2VydHMgdmFsdWUxIGlzIHRydWUge1xuICBpZiAocURldikge1xuICAgIGlmICh2YWx1ZTEgPT09IHRydWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3dFcnJvckFuZFN0b3AoQVNTRVJUX0RJU0NMQUlNRVIgKyB0ZXh0LCAuLi5wYXJ0cyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE51bWJlcih2YWx1ZTE6IGFueSwgdGV4dDogc3RyaW5nLCAuLi5wYXJ0czogYW55W10pOiBhc3NlcnRzIHZhbHVlMSBpcyBudW1iZXIge1xuICBpZiAocURldikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUxID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aHJvd0Vycm9yQW5kU3RvcChBU1NFUlRfRElTQ0xBSU1FUiArIHRleHQsIC4uLnBhcnRzKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0U3RyaW5nKHZhbHVlMTogYW55LCB0ZXh0OiBzdHJpbmcsIC4uLnBhcnRzOiBhbnlbXSk6IGFzc2VydHMgdmFsdWUxIGlzIHN0cmluZyB7XG4gIGlmIChxRGV2KSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZTEgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93RXJyb3JBbmRTdG9wKEFTU0VSVF9ESVNDTEFJTUVSICsgdGV4dCwgLi4ucGFydHMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRRd2lrRWxlbWVudChlbDogYW55KTogYXNzZXJ0cyBlbCBpcyBRd2lrRWxlbWVudCB7XG4gIGlmIChxRGV2KSB7XG4gICAgaWYgKCFpc1F3aWtFbGVtZW50KGVsKSkge1xuICAgICAgY29uc29sZS5lcnJvcignTm90IGEgUXdpayBFbGVtZW50LCBnb3QnLCBlbCk7XG4gICAgICB0aHJvd0Vycm9yQW5kU3RvcChBU1NFUlRfRElTQ0xBSU1FUiArICdOb3QgYSBRd2lrIEVsZW1lbnQnKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEVsZW1lbnQoZWw6IE5vZGUgfCBWaXJ0dWFsRWxlbWVudCk6IGFzc2VydHMgZWwgaXMgRWxlbWVudCB7XG4gIGlmIChxRGV2KSB7XG4gICAgaWYgKCFpc0VsZW1lbnQoZWwpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdOb3QgYSBFbGVtZW50LCBnb3QnLCBlbCk7XG4gICAgICB0aHJvd0Vycm9yQW5kU3RvcChBU1NFUlRfRElTQ0xBSU1FUiArICdOb3QgYW4gRWxlbWVudCcpO1xuICAgIH1cbiAgfVxufVxuIl19","import { logErrorAndStop } from '../util/log';\nimport { qDev } from '../util/qdev';\nexport const codeToText = (code, ...parts) => {\n    if (qDev) {\n        // Keep one error, one line to make it easier to search for the error message.\n        const MAP = [\n            'Error while serializing class or style attributes', // 0\n            'Can not serialize a HTML Node that is not an Element', // 1\n            'Runtime but no instance found on element.', // 2\n            'Only primitive and object literals can be serialized', // 3\n            'Crash while rendering', // 4\n            'You can render over a existing q:container. Skipping render().', // 5\n            'Set property {{0}}', // 6\n            \"Only function's and 'string's are supported.\", // 7\n            \"Only objects can be wrapped in 'QObject'\", // 8\n            `Only objects literals can be wrapped in 'QObject'`, // 9\n            'QRL is not a function', // 10\n            'Dynamic import not found', // 11\n            'Unknown type argument', // 12\n            `Actual value for useContext({{0}}) can not be found, make sure some ancestor component has set a value using useContextProvider(). In the browser make sure that the context was used during SSR so its state was serialized.`, // 13\n            \"Invoking 'use*()' method outside of invocation context.\", // 14\n            'Cant access renderCtx for existing context', // 15\n            'Cant access document for existing context', // 16\n            'props are immutable', // 17\n            '<div> component can only be used at the root of a Qwik component$()', // 18\n            'Props are immutable by default.', // 19\n            `Calling a 'use*()' method outside 'component$(() => { HERE })' is not allowed. 'use*()' methods provide hooks to the 'component$' state and lifecycle, ie 'use' hooks can only be called synchronously within the 'component$' function or another 'use' method.\\nSee https://qwik.dev/docs/core/tasks/#use-method-rules`, // 20\n            'Container is already paused. Skipping', // 21\n            '', // 22 -- unused\n            'When rendering directly on top of Document, the root node must be a <html>', // 23\n            'A <html> node must have 2 children. The first one <head> and the second one a <body>', // 24\n            'Invalid JSXNode type \"{{0}}\". It must be either a function or a string. Found:', // 25\n            'Tracking value changes can only be done to useStore() objects and component props', // 26\n            'Missing Object ID for captured object', // 27\n            'The provided Context reference \"{{0}}\" is not a valid context created by createContextId()', // 28\n            '<html> is the root container, it can not be rendered inside a component', // 29\n            'QRLs can not be resolved because it does not have an attached container. This means that the QRL does not know where it belongs inside the DOM, so it cant dynamically import() from a relative path.', // 30\n            'QRLs can not be dynamically resolved, because it does not have a chunk path', // 31\n            'The JSX ref attribute must be a Signal', // 32\n        ];\n        let text = MAP[code] ?? '';\n        if (parts.length) {\n            text = text.replaceAll(/{{(\\d+)}}/g, (_, index) => {\n                let v = parts[index];\n                if (v && typeof v === 'object' && v.constructor === Object) {\n                    v = JSON.stringify(v).slice(0, 50);\n                }\n                return v;\n            });\n        }\n        return `Code(${code}): ${text}`;\n    }\n    else {\n        // cute little hack to give roughly the correct line number. Update the line number if it shifts.\n        return `Code(${code}) https://github.com/QwikDev/qwik/blob/main/packages/qwik/src/core/error/error.ts#L${8 + code}`;\n    }\n};\nexport const QError_stringifyClassOrStyle = 0;\nexport const QError_cannotSerializeNode = 1;\nexport const QError_runtimeQrlNoElement = 2;\nexport const QError_verifySerializable = 3;\nexport const QError_errorWhileRendering = 4;\nexport const QError_cannotRenderOverExistingContainer = 5;\nexport const QError_setProperty = 6;\nexport const QError_qrlOrError = 7;\nexport const QError_onlyObjectWrapped = 8;\nexport const QError_onlyLiteralWrapped = 9;\nexport const QError_qrlIsNotFunction = 10;\nexport const QError_dynamicImportFailed = 11;\nexport const QError_unknownTypeArgument = 12;\nexport const QError_notFoundContext = 13;\nexport const QError_useMethodOutsideContext = 14;\nexport const QError_missingRenderCtx = 15;\nexport const QError_missingDoc = 16;\nexport const QError_immutableProps = 17;\nexport const QError_hostCanOnlyBeAtRoot = 18;\nexport const QError_immutableJsxProps = 19;\nexport const QError_useInvokeContext = 20;\nexport const QError_containerAlreadyPaused = 21;\nexport const QError_unused_please_reuse = 22;\nexport const QError_rootNodeMustBeHTML = 23;\nexport const QError_strictHTMLChildren = 24;\nexport const QError_invalidJsxNodeType = 25;\nexport const QError_trackUseStore = 26;\nexport const QError_missingObjectId = 27;\nexport const QError_invalidContext = 28;\nexport const QError_canNotRenderHTML = 29;\nexport const QError_qrlMissingContainer = 30;\nexport const QError_qrlMissingChunk = 31;\nexport const QError_invalidRefValue = 32;\nexport const qError = (code, ...parts) => {\n    const text = codeToText(code, ...parts);\n    return logErrorAndStop(text, ...parts);\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvZXJyb3IvZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXBDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVksRUFBRSxHQUFHLEtBQVksRUFBVSxFQUFFO0lBQ2xFLElBQUksSUFBSSxFQUFFLENBQUM7UUFDVCw4RUFBOEU7UUFDOUUsTUFBTSxHQUFHLEdBQUc7WUFDVixtREFBbUQsRUFBRSxJQUFJO1lBQ3pELHNEQUFzRCxFQUFFLElBQUk7WUFDNUQsMkNBQTJDLEVBQUUsSUFBSTtZQUNqRCxzREFBc0QsRUFBRSxJQUFJO1lBQzVELHVCQUF1QixFQUFFLElBQUk7WUFDN0IsZ0VBQWdFLEVBQUUsSUFBSTtZQUN0RSxvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLDhDQUE4QyxFQUFFLElBQUk7WUFDcEQsMENBQTBDLEVBQUUsSUFBSTtZQUNoRCxtREFBbUQsRUFBRSxJQUFJO1lBQ3pELHVCQUF1QixFQUFFLEtBQUs7WUFDOUIsMEJBQTBCLEVBQUUsS0FBSztZQUNqQyx1QkFBdUIsRUFBRSxLQUFLO1lBQzlCLCtOQUErTixFQUFFLEtBQUs7WUFDdE8seURBQXlELEVBQUUsS0FBSztZQUNoRSw0Q0FBNEMsRUFBRSxLQUFLO1lBQ25ELDJDQUEyQyxFQUFFLEtBQUs7WUFDbEQscUJBQXFCLEVBQUUsS0FBSztZQUM1QixxRUFBcUUsRUFBRSxLQUFLO1lBQzVFLGlDQUFpQyxFQUFFLEtBQUs7WUFDeEMsMFRBQTBULEVBQUUsS0FBSztZQUNqVSx1Q0FBdUMsRUFBRSxLQUFLO1lBQzlDLEVBQUUsRUFBRSxlQUFlO1lBQ25CLDRFQUE0RSxFQUFFLEtBQUs7WUFDbkYsc0ZBQXNGLEVBQUUsS0FB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QUFNLHlCQUF5QixHQUFHLEVBQUUsQ0FBQztBQUM1QyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxFQUFFLENBQUM7QUFDNUMsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsRUFBRSxDQUFDO0FBQzVDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFDekMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsRUFBRSxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxFQUFFLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFZLEVBQUUsR0FBRyxLQUFZLEVBQVMsRUFBRTtJQUM3RCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDeEMsT0FBTyxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbG9nRXJyb3JBbmRTdG9wIH0gZnJvbSAnLi4vdXRpbC9sb2cnO1xuaW1wb3J0IHsgcURldiB9IGZyb20gJy4uL3V0aWwvcWRldic7XG5cbmV4cG9ydCBjb25zdCBjb2RlVG9UZXh0ID0gKGNvZGU6IG51bWJlciwgLi4ucGFydHM6IGFueVtdKTogc3RyaW5nID0+IHtcbiAgaWYgKHFEZXYpIHtcbiAgICAvLyBLZWVwIG9uZSBlcnJvciwgb25lIGxpbmUgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc2VhcmNoIGZvciB0aGUgZXJyb3IgbWVzc2FnZS5cbiAgICBjb25zdCBNQVAgPSBbXG4gICAgICAnRXJyb3Igd2hpbGUgc2VyaWFsaXppbmcgY2xhc3Mgb3Igc3R5bGUgYXR0cmlidXRlcycsIC8vIDBcbiAgICAgICdDYW4gbm90IHNlcmlhbGl6ZSBhIEhUTUwgTm9kZSB0aGF0IGlzIG5vdCBhbiBFbGVtZW50JywgLy8gMVxuICAgICAgJ1J1bnRpbWUgYnV0IG5vIGluc3RhbmNlIGZvdW5kIG9uIGVsZW1lbnQuJywgLy8gMlxuICAgICAgJ09ubHkgcHJpbWl0aXZlIGFuZCBvYmplY3QgbGl0ZXJhbHMgY2FuIGJlIHNlcmlhbGl6ZWQnLCAvLyAzXG4gICAgICAnQ3Jhc2ggd2hpbGUgcmVuZGVyaW5nJywgLy8gNFxuICAgICAgJ1lvdSBjYW4gcmVuZGVyIG92ZXIgYSBleGlzdGluZyBxOmNvbnRhaW5lci4gU2tpcHBpbmcgcmVuZGVyKCkuJywgLy8gNVxuICAgICAgJ1NldCBwcm9wZXJ0eSB7ezB9fScsIC8vIDZcbiAgICAgIFwiT25seSBmdW5jdGlvbidzIGFuZCAnc3RyaW5nJ3MgYXJlIHN1cHBvcnRlZC5cIiwgLy8gN1xuICAgICAgXCJPbmx5IG9iamVjdHMgY2FuIGJlIHdyYXBwZWQgaW4gJ1FPYmplY3QnXCIsIC8vIDhcbiAgICAgIGBPbmx5IG9iamVjdHMgbGl0ZXJhbHMgY2FuIGJlIHdyYXBwZWQgaW4gJ1FPYmplY3QnYCwgLy8gOVxuICAgICAgJ1FSTCBpcyBub3QgYSBmdW5jdGlvbicsIC8vIDEwXG4gICAgICAnRHluYW1pYyBpbXBvcnQgbm90IGZvdW5kJywgLy8gMTFcbiAgICAgICdVbmtub3duIHR5cGUgYXJndW1lbnQnLCAvLyAxMlxuICAgICAgYEFjdHVhbCB2YWx1ZSBmb3IgdXNlQ29udGV4dCh7ezB9fSkgY2FuIG5vdCBiZSBmb3VuZCwgbWFrZSBzdXJlIHNvbWUgYW5jZXN0b3IgY29tcG9uZW50IGhhcyBzZXQgYSB2YWx1ZSB1c2luZyB1c2VDb250ZXh0UHJvdmlkZXIoKS4gSW4gdGhlIGJyb3dzZXIgbWFrZSBzdXJlIHRoYXQgdGhlIGNvbnRleHQgd2FzIHVzZWQgZHVyaW5nIFNTUiBzbyBpdHMgc3RhdGUgd2FzIHNlcmlhbGl6ZWQuYCwgLy8gMTNcbiAgICAgIFwiSW52b2tpbmcgJ3VzZSooKScgbWV0aG9kIG91dHNpZGUgb2YgaW52b2NhdGlvbiBjb250ZXh0LlwiLCAvLyAxNFxuICAgICAgJ0NhbnQgYWNjZXNzIHJlbmRlckN0eCBmb3IgZXhpc3RpbmcgY29udGV4dCcsIC8vIDE1XG4gICAgICAnQ2FudCBhY2Nlc3MgZG9jdW1lbnQgZm9yIGV4aXN0aW5nIGNvbnRleHQnLCAvLyAxNlxuICAgICAgJ3Byb3BzIGFyZSBpbW11dGFibGUnLCAvLyAxN1xuICAgICAgJzxkaXY+IGNvbXBvbmVudCBjYW4gb25seSBiZSB1c2VkIGF0IHRoZSByb290IG9mIGEgUXdpayBjb21wb25lbnQkKCknLCAvLyAxOFxuICAgICAgJ1Byb3BzIGFyZSBpbW11dGFibGUgYnkgZGVmYXVsdC4nLCAvLyAxOVxuICAgICAgYENhbGxpbmcgYSAndXNlKigpJyBtZXRob2Qgb3V0c2lkZSAnY29tcG9uZW50JCgoKSA9PiB7IEhFUkUgfSknIGlzIG5vdCBhbGxvd2VkLiAndXNlKigpJyBtZXRob2RzIHByb3ZpZGUgaG9va3MgdG8gdGhlICdjb21wb25lbnQkJyBzdGF0ZSBhbmQgbGlmZWN5Y2xlLCBpZSAndXNlJyBob29rcyBjYW4gb25seSBiZSBjYWxsZWQgc3luY2hyb25vdXNseSB3aXRoaW4gdGhlICdjb21wb25lbnQkJyBmdW5jdGlvbiBvciBhbm90aGVyICd1c2UnIG1ldGhvZC5cXG5TZWUgaHR0cHM6Ly9xd2lrLmRldi9kb2NzL2NvcmUvdGFza3MvI3VzZS1tZXRob2QtcnVsZXNgLCAvLyAyMFxuICAgICAgJ0NvbnRhaW5lciBpcyBhbHJlYWR5IHBhdXNlZC4gU2tpcHBpbmcnLCAvLyAyMVxuICAgICAgJycsIC8vIDIyIC0tIHVudXNlZFxuICAgICAgJ1doZW4gcmVuZGVyaW5nIGRpcmVjdGx5IG9uIHRvcCBvZiBEb2N1bWVudCwgdGhlIHJvb3Qgbm9kZSBtdXN0IGJlIGEgPGh0bWw+JywgLy8gMjNcbiAgICAgICdBIDxodG1sPiBub2RlIG11c3QgaGF2ZSAyIGNoaWxkcmVuLiBUaGUgZmlyc3Qgb25lIDxoZWFkPiBhbmQgdGhlIHNlY29uZCBvbmUgYSA8Ym9keT4nLCAvLyAyNFxuICAgICAgJ0ludmFsaWQgSlNYTm9kZSB0eXBlIFwie3swfX1cIi4gSXQgbXVzdCBiZSBlaXRoZXIgYSBmdW5jdGlvbiBvciBhIHN0cmluZy4gRm91bmQ6JywgLy8gMjVcbiAgICAgICdUcmFja2luZyB2YWx1ZSBjaGFuZ2VzIGNhbiBvbmx5IGJlIGRvbmUgdG8gdXNlU3RvcmUoKSBvYmplY3RzIGFuZCBjb21wb25lbnQgcHJvcHMnLCAvLyAyNlxuICAgICAgJ01pc3NpbmcgT2JqZWN0IElEIGZvciBjYXB0dXJlZCBvYmplY3QnLCAvLyAyN1xuICAgICAgJ1RoZSBwcm92aWRlZCBDb250ZXh0IHJlZmVyZW5jZSBcInt7MH19XCIgaXMgbm90IGEgdmFsaWQgY29udGV4dCBjcmVhdGVkIGJ5IGNyZWF0ZUNvbnRleHRJZCgpJywgLy8gMjhcbiAgICAgICc8aHRtbD4gaXMgdGhlIHJvb3QgY29udGFpbmVyLCBpdCBjYW4gbm90IGJlIHJlbmRlcmVkIGluc2lkZSBhIGNvbXBvbmVudCcsIC8vIDI5XG4gICAgICAnUVJMcyBjYW4gbm90IGJlIHJlc29sdmVkIGJlY2F1c2UgaXQgZG9lcyBub3QgaGF2ZSBhbiBhdHRhY2hlZCBjb250YWluZXIuIFRoaXMgbWVhbnMgdGhhdCB0aGUgUVJMIGRvZXMgbm90IGtub3cgd2hlcmUgaXQgYmVsb25ncyBpbnNpZGUgdGhlIERPTSwgc28gaXQgY2FudCBkeW5hbWljYWxseSBpbXBvcnQoKSBmcm9tIGEgcmVsYXRpdmUgcGF0aC4nLCAvLyAzMFxuICAgICAgJ1FSTHMgY2FuIG5vdCBiZSBkeW5hbWljYWxseSByZXNvbHZlZCwgYmVjYXVzZSBpdCBkb2VzIG5vdCBoYXZlIGEgY2h1bmsgcGF0aCcsIC8vIDMxXG4gICAgICAnVGhlIEpTWCByZWYgYXR0cmlidXRlIG11c3QgYmUgYSBTaWduYWwnLCAvLyAzMlxuICAgIF07XG4gICAgbGV0IHRleHQgPSBNQVBbY29kZV0gPz8gJyc7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCkge1xuICAgICAgdGV4dCA9IHRleHQucmVwbGFjZUFsbCgve3soXFxkKyl9fS9nLCAoXywgaW5kZXgpID0+IHtcbiAgICAgICAgbGV0IHYgPSBwYXJ0c1tpbmRleF07XG4gICAgICAgIGlmICh2ICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiB2LmNvbnN0cnVjdG9yID09PSBPYmplY3QpIHtcbiAgICAgICAgICB2ID0gSlNPTi5zdHJpbmdpZnkodikuc2xpY2UoMCwgNTApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBgQ29kZSgke2NvZGV9KTogJHt0ZXh0fWA7XG4gIH0gZWxzZSB7XG4gICAgLy8gY3V0ZSBsaXR0bGUgaGFjayB0byBnaXZlIHJvdWdobHkgdGhlIGNvcnJlY3QgbGluZSBudW1iZXIuIFVwZGF0ZSB0aGUgbGluZSBudW1iZXIgaWYgaXQgc2hpZnRzLlxuICAgIHJldHVybiBgQ29kZSgke2NvZGV9KSBodHRwczovL2dpdGh1Yi5jb20vUXdpa0Rldi9xd2lrL2Jsb2IvbWFpbi9wYWNrYWdlcy9xd2lrL3NyYy9jb3JlL2Vycm9yL2Vycm9yLnRzI0wkezggKyBjb2RlfWA7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBRRXJyb3Jfc3RyaW5naWZ5Q2xhc3NPclN0eWxlID0gMDtcbmV4cG9ydCBjb25zdCBRRXJyb3JfY2Fubm90U2VyaWFsaXplTm9kZSA9IDE7XG5leHBvcnQgY29uc3QgUUVycm9yX3J1bnRpbWVRcmxOb0VsZW1lbnQgPSAyO1xuZXhwb3J0IGNvbnN0IFFFcnJvcl92ZXJpZnlTZXJpYWxpemFibGUgPSAzO1xuZXhwb3J0IGNvbnN0IFFFcnJvcl9lcnJvcldoaWxlUmVuZGVyaW5nID0gNDtcbmV4cG9ydCBjb25zdCBRRXJyb3JfY2Fubm90UmVuZGVyT3ZlckV4aXN0aW5nQ29udGFpbmVyID0gNTtcbmV4cG9ydCBjb25zdCBRRXJyb3Jfc2V0UHJvcGVydHkgPSA2O1xuZXhwb3J0IGNvbnN0IFFFcnJvcl9xcmxPckVycm9yID0gNztcbmV4cG9ydCBjb25zdCBRRXJyb3Jfb25seU9iamVjdFdyYXBwZWQgPSA4O1xuZXhwb3J0IGNvbnN0IFFFcnJvcl9vbmx5TGl0ZXJhbFdyYXBwZWQgPSA5O1xuZXhwb3J0IGNvbnN0IFFFcnJvcl9xcmxJc05vdEZ1bmN0aW9uID0gMTA7XG5leHBvcnQgY29uc3QgUUVycm9yX2R5bmFtaWNJbXBvcnRGYWlsZWQgPSAxMTtcbmV4cG9ydCBjb25zdCBRRXJyb3JfdW5rbm93blR5cGVBcmd1bWVudCA9IDEyO1xuZXhwb3J0IGNvbnN0IFFFcnJvcl9ub3RGb3VuZENvbnRleHQgPSAxMztcbmV4cG9ydCBjb25zdCBRRXJyb3JfdXNlTWV0aG9kT3V0c2lkZUNvbnRleHQgPSAxNDtcbmV4cG9ydCBjb25zdCBRRXJyb3JfbWlzc2luZ1JlbmRlckN0eCA9IDE1O1xuZXhwb3J0IGNvbnN0IFFFcnJvcl9taXNzaW5nRG9jID0gMTY7XG5leHBvcnQgY29uc3QgUUVycm9yX2ltbXV0YWJsZVByb3BzID0gMTc7XG5leHBvcnQgY29uc3QgUUVycm9yX2hvc3RDYW5Pbmx5QmVBdFJvb3QgPSAxODtcbmV4cG9ydCBjb25zdCBRRXJyb3JfaW1tdXRhYmxlSnN4UHJvcHMgPSAxOTtcbmV4cG9ydCBjb25zdCBRRXJyb3JfdXNlSW52b2tlQ29udGV4dCA9IDIwO1xuZXhwb3J0IGNvbnN0IFFFcnJvcl9jb250YWluZXJBbHJlYWR5UGF1c2VkID0gMjE7XG5leHBvcnQgY29uc3QgUUVycm9yX3VudXNlZF9wbGVhc2VfcmV1c2UgPSAyMjtcbmV4cG9ydCBjb25zdCBRRXJyb3Jfcm9vdE5vZGVNdXN0QmVIVE1MID0gMjM7XG5leHBvcnQgY29uc3QgUUVycm9yX3N0cmljdEhUTUxDaGlsZHJlbiA9IDI0O1xuZXhwb3J0IGNvbnN0IFFFcnJvcl9pbnZhbGlkSnN4Tm9kZVR5cGUgPSAyNTtcbmV4cG9ydCBjb25zdCBRRXJyb3JfdHJhY2tVc2VTdG9yZSA9IDI2O1xuZXhwb3J0IGNvbnN0IFFFcnJvcl9taXNzaW5nT2JqZWN0SWQgPSAyNztcbmV4cG9ydCBjb25zdCBRRXJyb3JfaW52YWxpZENvbnRleHQgPSAyODtcbmV4cG9ydCBjb25zdCBRRXJyb3JfY2FuTm90UmVuZGVySFRNTCA9IDI5O1xuZXhwb3J0IGNvbnN0IFFFcnJvcl9xcmxNaXNzaW5nQ29udGFpbmVyID0gMzA7XG5leHBvcnQgY29uc3QgUUVycm9yX3FybE1pc3NpbmdDaHVuayA9IDMxO1xuZXhwb3J0IGNvbnN0IFFFcnJvcl9pbnZhbGlkUmVmVmFsdWUgPSAzMjtcbmV4cG9ydCBjb25zdCBxRXJyb3IgPSAoY29kZTogbnVtYmVyLCAuLi5wYXJ0czogYW55W10pOiBFcnJvciA9PiB7XG4gIGNvbnN0IHRleHQgPSBjb2RlVG9UZXh0KGNvZGUsIC4uLnBhcnRzKTtcbiAgcmV0dXJuIGxvZ0Vycm9yQW5kU3RvcCh0ZXh0LCAuLi5wYXJ0cyk7XG59O1xuIl19","// keep this import from qwik/build so the cjs build works\nimport { isServer } from '@builder.io/qwik/build';\nimport { qError, QError_dynamicImportFailed, QError_qrlMissingChunk, QError_qrlMissingContainer, } from '../error/error';\nimport { getSymbolHash } from '../qrl/qrl-class';\nimport { qDynamicPlatform } from '../util/qdev';\nexport const createPlatform = () => {\n    return {\n        isServer,\n        importSymbol(containerEl, url, symbolName) {\n            if (isServer) {\n                const hash = getSymbolHash(symbolName);\n                const regSym = globalThis.__qwik_reg_symbols?.get(hash);\n                if (regSym) {\n                    return regSym;\n                }\n                // we never lazy import on the server\n                throw qError(QError_dynamicImportFailed, symbolName);\n            }\n            if (!url) {\n                throw qError(QError_qrlMissingChunk, symbolName);\n            }\n            if (!containerEl) {\n                throw qError(QError_qrlMissingContainer, url, symbolName);\n            }\n            const urlDoc = toUrl(containerEl.ownerDocument, containerEl, url).toString();\n            const urlCopy = new URL(urlDoc);\n            urlCopy.hash = '';\n            const importURL = urlCopy.href;\n            return import(/* @vite-ignore */ importURL).then((mod) => {\n                return mod[symbolName];\n            });\n        },\n        raf: (fn) => {\n            return new Promise((resolve) => {\n                requestAnimationFrame(() => {\n                    resolve(fn());\n                });\n            });\n        },\n        nextTick: (fn) => {\n            return new Promise((resolve) => {\n                setTimeout(() => {\n                    resolve(fn());\n                });\n            });\n        },\n        chunkForSymbol(symbolName, chunk) {\n            return [symbolName, chunk ?? '_'];\n        },\n    };\n};\n/**\n * Convert relative base URI and relative URL into a fully qualified URL.\n *\n * @param base -`QRL`s are relative, and therefore they need a base for resolution.\n *\n *   - `Element` use `base.ownerDocument.baseURI`\n *   - `Document` use `base.baseURI`\n *   - `string` use `base` as is\n *   - `QConfig` use `base.baseURI`\n *\n * @param url - Relative URL\n * @returns Fully qualified URL.\n */\nexport const toUrl = (doc, containerEl, url) => {\n    const baseURI = doc.baseURI;\n    const base = new URL(containerEl.getAttribute('q:base') ?? baseURI, baseURI);\n    return new URL(url, base);\n};\nlet _platform = /*#__PURE__ */ createPlatform();\n// <docs markdown=\"./readme.md#setPlatform\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ./readme.md#setPlatform instead)\n/**\n * Sets the `CorePlatform`.\n *\n * This is useful to override the platform in tests to change the behavior of,\n * `requestAnimationFrame`, and import resolution.\n *\n * @param doc - The document of the application for which the platform is needed.\n * @param platform - The platform to use.\n * @public\n */\n// </docs>\nexport const setPlatform = (plt) => (_platform = plt);\n// <docs markdown=\"./readme.md#getPlatform\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ./readme.md#getPlatform instead)\n/**\n * Retrieve the `CorePlatform`.\n *\n * The `CorePlatform` is also responsible for retrieving the Manifest, that contains mappings from\n * symbols to javascript import chunks. For this reason, `CorePlatform` can't be global, but is\n * specific to the application currently running. On server it is possible that many different\n * applications are running in a single server instance, and for this reason the `CorePlatform` is\n * associated with the application document.\n *\n * @param docOrNode - The document (or node) of the application for which the platform is needed.\n * @public\n */\n// </docs>\nexport const getPlatform = () => {\n    return _platform;\n};\nexport const isServerPlatform = () => {\n    if (qDynamicPlatform) {\n        return _platform.isServer;\n    }\n    return false;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvcGxhdGZvcm0vcGxhdGZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMERBQTBEO0FBQzFELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsTUFBTSxFQUNOLDBCQUEwQixFQUMxQixzQkFBc0IsRUFDdEIsMEJBQTBCLEdBQzNCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUdoRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsR0FBaUIsRUFBRTtJQUMvQyxPQUFPO1FBQ0wsUUFBUTtRQUNSLFlBQVksQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLFVBQVU7WUFDdkMsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3ZDLE1BQU0sTUFBTSxHQUFJLFVBQWtCLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLE9BQU8sTUFBTSxDQUFDO2dCQUNoQixDQUFDO2dCQUNELHFDQUFxQztnQkFDckMsTUFBTSxNQUFNLENBQUMsMEJBQTBCLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDdkQsQ0FBQztZQUNELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDVCxNQUFNLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNqQixNQUFNLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDNUQsQ0FBQztZQUNELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM3RSxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoQyxPQUFPLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNsQixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQy9CLE9BQU8sTUFBTSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUN2RCxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUNWLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDN0IscUJBQXFCLENBQUMsR0FBRyxFQUFFO29CQUN6QixPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUNmLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDN0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxjQUFjLENBQUMsVUFBVSxFQUFFLEtBQUs7WUFDOUIsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLElBQUksR0FBRyxDQUFDLENBQUM7UUFDcEMsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFhLEVBQUUsV0FBd0IsRUFBRSxHQUFpQixFQUFPLEVBQUU7SUFDdkYsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUM1QixNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RSxPQUFPLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRixJQUFJLFNBQVMsR0FBRyxjQUFjLENBQUMsY0FBYyxFQUFFLENBQUM7QUFFaEQsNENBQTRDO0FBQzVDLHlDQUF5QztBQUN6Qyx5Q0FBeUM7QUFDekM7Ozs7Ozs7OztHQVNHO0FBQ0gsVUFBVTtBQUNWLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBRXBFLDRDQUE0QztBQUM1Qyx5Q0FBeUM7QUFDekMseUNBQXlDO0FBQ3pDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsVUFBVTtBQUNWLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxHQUFpQixFQUFFO0lBQzVDLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsRUFBRTtJQUNuQyxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDckIsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGtlZXAgdGhpcyBpbXBvcnQgZnJvbSBxd2lrL2J1aWxkIHNvIHRoZSBjanMgYnVpbGQgd29ya3NcbmltcG9ydCB7IGlzU2VydmVyIH0gZnJvbSAnQGJ1aWxkZXIuaW8vcXdpay9idWlsZCc7XG5pbXBvcnQge1xuICBxRXJyb3IsXG4gIFFFcnJvcl9keW5hbWljSW1wb3J0RmFpbGVkLFxuICBRRXJyb3JfcXJsTWlzc2luZ0NodW5rLFxuICBRRXJyb3JfcXJsTWlzc2luZ0NvbnRhaW5lcixcbn0gZnJvbSAnLi4vZXJyb3IvZXJyb3InO1xuaW1wb3J0IHsgZ2V0U3ltYm9sSGFzaCB9IGZyb20gJy4uL3FybC9xcmwtY2xhc3MnO1xuaW1wb3J0IHR5cGUgeyBRd2lrRWxlbWVudCB9IGZyb20gJy4uL3JlbmRlci9kb20vdmlydHVhbC1lbGVtZW50JztcbmltcG9ydCB7IHFEeW5hbWljUGxhdGZvcm0gfSBmcm9tICcuLi91dGlsL3FkZXYnO1xuaW1wb3J0IHR5cGUgeyBDb3JlUGxhdGZvcm0gfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBsYXRmb3JtID0gKCk6IENvcmVQbGF0Zm9ybSA9PiB7XG4gIHJldHVybiB7XG4gICAgaXNTZXJ2ZXIsXG4gICAgaW1wb3J0U3ltYm9sKGNvbnRhaW5lckVsLCB1cmwsIHN5bWJvbE5hbWUpIHtcbiAgICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgICBjb25zdCBoYXNoID0gZ2V0U3ltYm9sSGFzaChzeW1ib2xOYW1lKTtcbiAgICAgICAgY29uc3QgcmVnU3ltID0gKGdsb2JhbFRoaXMgYXMgYW55KS5fX3F3aWtfcmVnX3N5bWJvbHM/LmdldChoYXNoKTtcbiAgICAgICAgaWYgKHJlZ1N5bSkge1xuICAgICAgICAgIHJldHVybiByZWdTeW07XG4gICAgICAgIH1cbiAgICAgICAgLy8gd2UgbmV2ZXIgbGF6eSBpbXBvcnQgb24gdGhlIHNlcnZlclxuICAgICAgICB0aHJvdyBxRXJyb3IoUUVycm9yX2R5bmFtaWNJbXBvcnRGYWlsZWQsIHN5bWJvbE5hbWUpO1xuICAgICAgfVxuICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgdGhyb3cgcUVycm9yKFFFcnJvcl9xcmxNaXNzaW5nQ2h1bmssIHN5bWJvbE5hbWUpO1xuICAgICAgfVxuICAgICAgaWYgKCFjb250YWluZXJFbCkge1xuICAgICAgICB0aHJvdyBxRXJyb3IoUUVycm9yX3FybE1pc3NpbmdDb250YWluZXIsIHVybCwgc3ltYm9sTmFtZSk7XG4gICAgICB9XG4gICAgICBjb25zdCB1cmxEb2MgPSB0b1VybChjb250YWluZXJFbC5vd25lckRvY3VtZW50LCBjb250YWluZXJFbCwgdXJsKS50b1N0cmluZygpO1xuICAgICAgY29uc3QgdXJsQ29weSA9IG5ldyBVUkwodXJsRG9jKTtcbiAgICAgIHVybENvcHkuaGFzaCA9ICcnO1xuICAgICAgY29uc3QgaW1wb3J0VVJMID0gdXJsQ29weS5ocmVmO1xuICAgICAgcmV0dXJuIGltcG9ydCgvKiBAdml0ZS1pZ25vcmUgKi8gaW1wb3J0VVJMKS50aGVuKChtb2QpID0+IHtcbiAgICAgICAgcmV0dXJuIG1vZFtzeW1ib2xOYW1lXTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcmFmOiAoZm4pID0+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUoZm4oKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBuZXh0VGljazogKGZuKSA9PiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShmbigpKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGNodW5rRm9yU3ltYm9sKHN5bWJvbE5hbWUsIGNodW5rKSB7XG4gICAgICByZXR1cm4gW3N5bWJvbE5hbWUsIGNodW5rID8/ICdfJ107XG4gICAgfSxcbiAgfTtcbn07XG5cbi8qKlxuICogQ29udmVydCByZWxhdGl2ZSBiYXNlIFVSSSBhbmQgcmVsYXRpdmUgVVJMIGludG8gYSBmdWxseSBxdWFsaWZpZWQgVVJMLlxuICpcbiAqIEBwYXJhbSBiYXNlIC1gUVJMYHMgYXJlIHJlbGF0aXZlLCBhbmQgdGhlcmVmb3JlIHRoZXkgbmVlZCBhIGJhc2UgZm9yIHJlc29sdXRpb24uXG4gKlxuICogICAtIGBFbGVtZW50YCB1c2UgYGJhc2Uub3duZXJEb2N1bWVudC5iYXNlVVJJYFxuICogICAtIGBEb2N1bWVudGAgdXNlIGBiYXNlLmJhc2VVUklgXG4gKiAgIC0gYHN0cmluZ2AgdXNlIGBiYXNlYCBhcyBpc1xuICogICAtIGBRQ29uZmlnYCB1c2UgYGJhc2UuYmFzZVVSSWBcbiAqXG4gKiBAcGFyYW0gdXJsIC0gUmVsYXRpdmUgVVJMXG4gKiBAcmV0dXJucyBGdWxseSBxdWFsaWZpZWQgVVJMLlxuICovXG5leHBvcnQgY29uc3QgdG9VcmwgPSAoZG9jOiBEb2N1bWVudCwgY29udGFpbmVyRWw6IFF3aWtFbGVtZW50LCB1cmw6IHN0cmluZyB8IFVSTCk6IFVSTCA9PiB7XG4gIGNvbnN0IGJhc2VVUkkgPSBkb2MuYmFzZVVSSTtcbiAgY29uc3QgYmFzZSA9IG5ldyBVUkwoY29udGFpbmVyRWwuZ2V0QXR0cmlidXRlKCdxOmJhc2UnKSA/PyBiYXNlVVJJLCBiYXNlVVJJKTtcbiAgcmV0dXJuIG5ldyBVUkwodXJsLCBiYXNlKTtcbn07XG5cbmxldCBfcGxhdGZvcm0gPSAvKiNfX1BVUkVfXyAqLyBjcmVhdGVQbGF0Zm9ybSgpO1xuXG4vLyA8ZG9jcyBtYXJrZG93bj1cIi4vcmVhZG1lLm1kI3NldFBsYXRmb3JtXCI+XG4vLyAhIURPIE5PVCBFRElUIFRISVMgQ09NTUVOVCBESVJFQ1RMWSEhIVxuLy8gKGVkaXQgLi9yZWFkbWUubWQjc2V0UGxhdGZvcm0gaW5zdGVhZClcbi8qKlxuICogU2V0cyB0aGUgYENvcmVQbGF0Zm9ybWAuXG4gKlxuICogVGhpcyBpcyB1c2VmdWwgdG8gb3ZlcnJpZGUgdGhlIHBsYXRmb3JtIGluIHRlc3RzIHRvIGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YsXG4gKiBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYCwgYW5kIGltcG9ydCByZXNvbHV0aW9uLlxuICpcbiAqIEBwYXJhbSBkb2MgLSBUaGUgZG9jdW1lbnQgb2YgdGhlIGFwcGxpY2F0aW9uIGZvciB3aGljaCB0aGUgcGxhdGZvcm0gaXMgbmVlZGVkLlxuICogQHBhcmFtIHBsYXRmb3JtIC0gVGhlIHBsYXRmb3JtIHRvIHVzZS5cbiAqIEBwdWJsaWNcbiAqL1xuLy8gPC9kb2NzPlxuZXhwb3J0IGNvbnN0IHNldFBsYXRmb3JtID0gKHBsdDogQ29yZVBsYXRmb3JtKSA9PiAoX3BsYXRmb3JtID0gcGx0KTtcblxuLy8gPGRvY3MgbWFya2Rvd249XCIuL3JlYWRtZS5tZCNnZXRQbGF0Zm9ybVwiPlxuLy8gISFETyBOT1QgRURJVCBUSElTIENPTU1FTlQgRElSRUNUTFkhISFcbi8vIChlZGl0IC4vcmVhZG1lLm1kI2dldFBsYXRmb3JtIGluc3RlYWQpXG4vKipcbiAqIFJldHJpZXZlIHRoZSBgQ29yZVBsYXRmb3JtYC5cbiAqXG4gKiBUaGUgYENvcmVQbGF0Zm9ybWAgaXMgYWxzbyByZXNwb25zaWJsZSBmb3IgcmV0cmlldmluZyB0aGUgTWFuaWZlc3QsIHRoYXQgY29udGFpbnMgbWFwcGluZ3MgZnJvbVxuICogc3ltYm9scyB0byBqYXZhc2NyaXB0IGltcG9ydCBjaHVua3MuIEZvciB0aGlzIHJlYXNvbiwgYENvcmVQbGF0Zm9ybWAgY2FuJ3QgYmUgZ2xvYmFsLCBidXQgaXNcbiAqIHNwZWNpZmljIHRvIHRoZSBhcHBsaWNhdGlvbiBjdXJyZW50bHkgcnVubmluZy4gT24gc2VydmVyIGl0IGlzIHBvc3NpYmxlIHRoYXQgbWFueSBkaWZmZXJlbnRcbiAqIGFwcGxpY2F0aW9ucyBhcmUgcnVubmluZyBpbiBhIHNpbmdsZSBzZXJ2ZXIgaW5zdGFuY2UsIGFuZCBmb3IgdGhpcyByZWFzb24gdGhlIGBDb3JlUGxhdGZvcm1gIGlzXG4gKiBhc3NvY2lhdGVkIHdpdGggdGhlIGFwcGxpY2F0aW9uIGRvY3VtZW50LlxuICpcbiAqIEBwYXJhbSBkb2NPck5vZGUgLSBUaGUgZG9jdW1lbnQgKG9yIG5vZGUpIG9mIHRoZSBhcHBsaWNhdGlvbiBmb3Igd2hpY2ggdGhlIHBsYXRmb3JtIGlzIG5lZWRlZC5cbiAqIEBwdWJsaWNcbiAqL1xuLy8gPC9kb2NzPlxuZXhwb3J0IGNvbnN0IGdldFBsYXRmb3JtID0gKCk6IENvcmVQbGF0Zm9ybSA9PiB7XG4gIHJldHVybiBfcGxhdGZvcm07XG59O1xuXG5leHBvcnQgY29uc3QgaXNTZXJ2ZXJQbGF0Zm9ybSA9ICgpID0+IHtcbiAgaWYgKHFEeW5hbWljUGxhdGZvcm0pIHtcbiAgICByZXR1cm4gX3BsYXRmb3JtLmlzU2VydmVyO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG4iXX0=","/** @private */\nexport const isHtmlElement = (node) => {\n    return node ? node.nodeType === 1 : false;\n};\nexport const isSerializableObject = (v) => {\n    const proto = Object.getPrototypeOf(v);\n    return proto === Object.prototype || proto === null;\n};\nexport const isObject = (v) => {\n    return !!v && typeof v === 'object';\n};\nexport const isArray = (v) => {\n    return Array.isArray(v);\n};\nexport const isString = (v) => {\n    return typeof v === 'string';\n};\nexport const isFunction = (v) => {\n    return typeof v === 'function';\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvdXRpbC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlO0FBQ2YsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBYSxFQUFtQixFQUFFO0lBQzlELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBRSxJQUFhLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3RELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBVSxFQUFnQyxFQUFFO0lBQy9FLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsT0FBTyxLQUFLLEtBQUssTUFBTSxDQUFDLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDO0FBQ3RELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQVUsRUFBZSxFQUFFO0lBQ2xELE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUM7QUFDdEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBVSxFQUFrQixFQUFFO0lBQ3BELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFVLEVBQWUsRUFBRTtJQUNsRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBa0MsQ0FBVSxFQUFVLEVBQUU7SUFDaEYsT0FBTyxPQUFPLENBQUMsS0FBSyxVQUFVLENBQUM7QUFDakMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBwcml2YXRlICovXG5leHBvcnQgY29uc3QgaXNIdG1sRWxlbWVudCA9IChub2RlOiB1bmtub3duKTogbm9kZSBpcyBFbGVtZW50ID0+IHtcbiAgcmV0dXJuIG5vZGUgPyAobm9kZSBhcyBOb2RlKS5ub2RlVHlwZSA9PT0gMSA6IGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2VyaWFsaXphYmxlT2JqZWN0ID0gKHY6IHVua25vd24pOiB2IGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yodik7XG4gIHJldHVybiBwcm90byA9PT0gT2JqZWN0LnByb3RvdHlwZSB8fCBwcm90byA9PT0gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc09iamVjdCA9ICh2OiB1bmtub3duKTogdiBpcyBvYmplY3QgPT4ge1xuICByZXR1cm4gISF2ICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0Jztcbn07XG5cbmV4cG9ydCBjb25zdCBpc0FycmF5ID0gKHY6IHVua25vd24pOiB2IGlzIHVua25vd25bXSA9PiB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHYpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU3RyaW5nID0gKHY6IHVua25vd24pOiB2IGlzIHN0cmluZyA9PiB7XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gJ3N0cmluZyc7XG59O1xuXG5leHBvcnQgY29uc3QgaXNGdW5jdGlvbiA9IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueSkgPT4gYW55Pih2OiB1bmtub3duKTogdiBpcyBUID0+IHtcbiAgcmV0dXJuIHR5cGVvZiB2ID09PSAnZnVuY3Rpb24nO1xufTtcblxuLyoqXG4gKiBUeXBlIHJlcHJlc2VudGluZyBhIHZhbHVlIHdoaWNoIGlzIGVpdGhlciByZXNvbHZlIG9yIGEgcHJvbWlzZS5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIFZhbHVlT3JQcm9taXNlPFQ+ID0gVCB8IFByb21pc2U8VD47XG4iXX0=","export const isPromise = (value) => {\n    // not using \"value instanceof Promise\" to have zone.js support\n    return value && typeof value.then === 'function';\n};\nexport const safeCall = (call, thenFn, rejectFn) => {\n    try {\n        const promise = call();\n        if (isPromise(promise)) {\n            return promise.then(thenFn, rejectFn);\n        }\n        else {\n            return thenFn(promise);\n        }\n    }\n    catch (e) {\n        return rejectFn(e);\n    }\n};\nexport const maybeThen = (promise, thenFn) => {\n    return isPromise(promise) ? promise.then(thenFn) : thenFn(promise);\n};\nexport const promiseAll = (promises) => {\n    const hasPromise = promises.some(isPromise);\n    if (hasPromise) {\n        return Promise.all(promises);\n    }\n    return promises;\n};\nexport const promiseAllLazy = (promises) => {\n    if (promises.length > 0) {\n        return Promise.all(promises);\n    }\n    return promises;\n};\nexport const isNotNullable = (v) => {\n    return v != null;\n};\nexport const delay = (timeout) => {\n    return new Promise((resolve) => {\n        setTimeout(resolve, timeout);\n    });\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWlzZXMuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvdXRpbC9wcm9taXNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFVLEVBQXlCLEVBQUU7SUFDN0QsK0RBQStEO0lBQy9ELE9BQU8sS0FBSyxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUM7QUFDbkQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQ3RCLElBQTZCLEVBQzdCLE1BQXNELEVBQ3RELFFBQW9ELEVBQzdCLEVBQUU7SUFDekIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN2QixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxNQUFNLENBQUMsT0FBYyxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckIsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUN2QixPQUEwQixFQUMxQixNQUE4QyxFQUMzQixFQUFFO0lBQ3JCLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBYyxDQUFDLENBQUM7QUFDbkYsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQ3hCLFFBQVcsRUFDa0QsRUFBRTtJQUMvRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNELE9BQU8sUUFBZSxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUM1QixRQUFXLEVBQ1csRUFBRTtJQUN4QixJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDeEIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBUSxDQUFDO0lBQ3RDLENBQUM7SUFDRCxPQUFPLFFBQWUsQ0FBQztBQUN6QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBSSxDQUFJLEVBQXVCLEVBQUU7SUFDNUQsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO0lBQ3ZDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUM3QixVQUFVLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBWYWx1ZU9yUHJvbWlzZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBQcm9taXNlVHJlZTxUPiA9IFQgfCBQcm9taXNlPFQ+IHwgUHJvbWlzZTxUW10+IHwgQXJyYXk8UHJvbWlzZVRyZWU8VD4+O1xuXG5leHBvcnQgY29uc3QgaXNQcm9taXNlID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBQcm9taXNlPGFueT4gPT4ge1xuICAvLyBub3QgdXNpbmcgXCJ2YWx1ZSBpbnN0YW5jZW9mIFByb21pc2VcIiB0byBoYXZlIHpvbmUuanMgc3VwcG9ydFxuICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbic7XG59O1xuXG5leHBvcnQgY29uc3Qgc2FmZUNhbGwgPSA8VCwgQiwgQz4oXG4gIGNhbGw6ICgpID0+IFZhbHVlT3JQcm9taXNlPFQ+LFxuICB0aGVuRm46IHsgZihhcmc6IEF3YWl0ZWQ8VD4pOiBWYWx1ZU9yUHJvbWlzZTxCPiB9WydmJ10sXG4gIHJlamVjdEZuOiB7IGYocmVhc29uOiBhbnkpOiBWYWx1ZU9yUHJvbWlzZTxDPiB9WydmJ11cbik6IFZhbHVlT3JQcm9taXNlPEIgfCBDPiA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcHJvbWlzZSA9IGNhbGwoKTtcbiAgICBpZiAoaXNQcm9taXNlKHByb21pc2UpKSB7XG4gICAgICByZXR1cm4gcHJvbWlzZS50aGVuKHRoZW5GbiBhcyBhbnksIHJlamVjdEZuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoZW5Gbihwcm9taXNlIGFzIGFueSk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHJlamVjdEZuKGUpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgbWF5YmVUaGVuID0gPFQsIEI+KFxuICBwcm9taXNlOiBWYWx1ZU9yUHJvbWlzZTxUPixcbiAgdGhlbkZuOiAoYXJnOiBBd2FpdGVkPFQ+KSA9PiBWYWx1ZU9yUHJvbWlzZTxCPlxuKTogVmFsdWVPclByb21pc2U8Qj4gPT4ge1xuICByZXR1cm4gaXNQcm9taXNlKHByb21pc2UpID8gcHJvbWlzZS50aGVuKHRoZW5GbiBhcyBhbnkpIDogdGhlbkZuKHByb21pc2UgYXMgYW55KTtcbn07XG5cbmV4cG9ydCBjb25zdCBwcm9taXNlQWxsID0gPFQgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gfCBbXT4oXG4gIHByb21pc2VzOiBUXG4pOiBWYWx1ZU9yUHJvbWlzZTx7IC1yZWFkb25seSBbUCBpbiBrZXlvZiBUXTogQXdhaXRlZDxUW1BdPiB9PiA9PiB7XG4gIGNvbnN0IGhhc1Byb21pc2UgPSBwcm9taXNlcy5zb21lKGlzUHJvbWlzZSk7XG4gIGlmIChoYXNQcm9taXNlKSB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgfVxuICByZXR1cm4gcHJvbWlzZXMgYXMgYW55O1xufTtcblxuZXhwb3J0IGNvbnN0IHByb21pc2VBbGxMYXp5ID0gPFQgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gfCBbXT4oXG4gIHByb21pc2VzOiBUXG4pOiBWYWx1ZU9yUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGlmIChwcm9taXNlcy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKSBhcyBhbnk7XG4gIH1cbiAgcmV0dXJuIHByb21pc2VzIGFzIGFueTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc05vdE51bGxhYmxlID0gPFQ+KHY6IFQpOiB2IGlzIE5vbk51bGxhYmxlPFQ+ID0+IHtcbiAgcmV0dXJuIHYgIT0gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxheSA9ICh0aW1lb3V0OiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgc2V0VGltZW91dChyZXNvbHZlLCB0aW1lb3V0KTtcbiAgfSk7XG59O1xuIl19","// import { qDev } from './qdev';\nimport { qDev } from './qdev';\nexport const EMPTY_ARRAY = [];\nexport const EMPTY_OBJ = {};\nif (qDev) {\n    Object.freeze(EMPTY_ARRAY);\n    Object.freeze(EMPTY_OBJ);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx5d2VpZ2h0LmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3V0aWwvZmx5d2VpZ2h0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlDQUFpQztBQUVqQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxFQUFXLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEVBQXlCLENBQUM7QUFFbkQsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNULE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IHsgcURldiB9IGZyb20gJy4vcWRldic7XG5cbmltcG9ydCB7IHFEZXYgfSBmcm9tICcuL3FkZXYnO1xuXG5leHBvcnQgY29uc3QgRU1QVFlfQVJSQVkgPSBbXSBhcyBhbnlbXTtcbmV4cG9ydCBjb25zdCBFTVBUWV9PQkogPSB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG5pZiAocURldikge1xuICBPYmplY3QuZnJlZXplKEVNUFRZX0FSUkFZKTtcbiAgT2JqZWN0LmZyZWV6ZShFTVBUWV9PQkopO1xufVxuIl19","import { assertDefined } from '../error/assert';\nimport { qDynamicPlatform } from './qdev';\nexport const getDocument = (node) => {\n    if (!qDynamicPlatform) {\n        return document;\n    }\n    if (typeof document !== 'undefined') {\n        return document;\n    }\n    if (node.nodeType === 9) {\n        return node;\n    }\n    const doc = node.ownerDocument;\n    assertDefined(doc, 'doc must be defined');\n    return doc;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3V0aWwvZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFMUMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBNEIsRUFBWSxFQUFFO0lBQ3BFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUF1QixDQUFDO0lBQ2pDLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQy9CLGFBQWEsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUMsQ0FBQztJQUMxQyxPQUFPLEdBQUksQ0FBQztBQUNkLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydERlZmluZWQgfSBmcm9tICcuLi9lcnJvci9hc3NlcnQnO1xuaW1wb3J0IHR5cGUgeyBRd2lrRWxlbWVudCB9IGZyb20gJy4uL3JlbmRlci9kb20vdmlydHVhbC1lbGVtZW50JztcbmltcG9ydCB7IHFEeW5hbWljUGxhdGZvcm0gfSBmcm9tICcuL3FkZXYnO1xuXG5leHBvcnQgY29uc3QgZ2V0RG9jdW1lbnQgPSAobm9kZTogUXdpa0VsZW1lbnQgfCBEb2N1bWVudCk6IERvY3VtZW50ID0+IHtcbiAgaWYgKCFxRHluYW1pY1BsYXRmb3JtKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50O1xuICB9XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50O1xuICB9XG4gIGlmIChub2RlLm5vZGVUeXBlID09PSA5KSB7XG4gICAgcmV0dXJuIG5vZGUgYXMgYW55IGFzIERvY3VtZW50O1xuICB9XG4gIGNvbnN0IGRvYyA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgYXNzZXJ0RGVmaW5lZChkb2MsICdkb2MgbXVzdCBiZSBkZWZpbmVkJyk7XG4gIHJldHVybiBkb2MhO1xufTtcbiJdfQ==","/** State factory of the component. */\nexport const OnRenderProp = 'q:renderFn';\n/** Component style host prefix */\nexport const ComponentStylesPrefixHost = '💎';\n/** Component style content prefix */\nexport const ComponentStylesPrefixContent = '⭐️';\n/** Prefix used to identify on listeners. */\nexport const EventPrefix = 'on:';\n/** Attribute used to mark that an event listener is attached. */\nexport const EventAny = 'on:.';\n/** `<some-element q:slot=\"...\">` */\nexport const QSlot = 'q:slot';\nexport const QSlotRef = 'q:sref';\nexport const QSlotS = 'q:s';\nexport const QStyle = 'q:style';\nexport const QScopedStyle = 'q:sstyle';\nexport const QCtxAttr = 'q:ctx';\nexport const QManifestHash = 'q:manifest-hash';\nexport const QInstance = 'q:instance';\nexport const QFuncsPrefix = 'qFuncs_';\nexport const getQFuncs = (document, hash) => {\n    return document[QFuncsPrefix + hash] || [];\n};\nexport const QLocaleAttr = 'q:locale';\nexport const QContainerAttr = 'q:container';\nexport const QBaseAttr = 'q:base';\nexport const QContainerSelector = '[q\\\\:container]';\nexport const ResourceEvent = 'qResource';\nexport const ComputedEvent = 'qComputed';\nexport const RenderEvent = 'qRender';\nexport const TaskEvent = 'qTask';\n/** `<q:slot name=\"...\">` */\nexport const QSlotInertName = '\\u0000';\nexport const ELEMENT_ID = 'q:id';\nexport const ELEMENT_ID_SELECTOR = '[q\\\\:id]';\nexport const ELEMENT_ID_PREFIX = '#';\nexport const INLINE_FN_PREFIX = '@';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Vycy5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS91dGlsL21hcmtlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0NBQXNDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUM7QUFFekMsa0NBQWtDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksQ0FBQztBQUU5QyxxQ0FBcUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxDQUFDO0FBRWpELDRDQUE0QztBQUM1QyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBRWpDLGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDO0FBQy9CLG9DQUFvQztBQUNwQyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDO0FBQzlCLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUM7QUFDakMsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQztBQUM1QixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDO0FBQ2hDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQztBQUNoQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsaUJBQWlCLENBQUM7QUFDL0MsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQztBQUN0QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDO0FBRXRDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLFFBQWtCLEVBQUUsSUFBWSxFQUFjLEVBQUU7SUFDeEUsT0FBUSxRQUFnQixDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDdEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQztBQUN0QyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDO0FBQzVDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUM7QUFDbEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsaUJBQWlCLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQztBQUVqQyw0QkFBNEI7QUFDNUIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQztBQUV2QyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDO0FBQ2pDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQztBQUM5QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFN0YXRlIGZhY3Rvcnkgb2YgdGhlIGNvbXBvbmVudC4gKi9cbmV4cG9ydCBjb25zdCBPblJlbmRlclByb3AgPSAncTpyZW5kZXJGbic7XG5cbi8qKiBDb21wb25lbnQgc3R5bGUgaG9zdCBwcmVmaXggKi9cbmV4cG9ydCBjb25zdCBDb21wb25lbnRTdHlsZXNQcmVmaXhIb3N0ID0gJ/Cfko4nO1xuXG4vKiogQ29tcG9uZW50IHN0eWxlIGNvbnRlbnQgcHJlZml4ICovXG5leHBvcnQgY29uc3QgQ29tcG9uZW50U3R5bGVzUHJlZml4Q29udGVudCA9ICfirZDvuI8nO1xuXG4vKiogUHJlZml4IHVzZWQgdG8gaWRlbnRpZnkgb24gbGlzdGVuZXJzLiAqL1xuZXhwb3J0IGNvbnN0IEV2ZW50UHJlZml4ID0gJ29uOic7XG5cbi8qKiBBdHRyaWJ1dGUgdXNlZCB0byBtYXJrIHRoYXQgYW4gZXZlbnQgbGlzdGVuZXIgaXMgYXR0YWNoZWQuICovXG5leHBvcnQgY29uc3QgRXZlbnRBbnkgPSAnb246Lic7XG4vKiogYDxzb21lLWVsZW1lbnQgcTpzbG90PVwiLi4uXCI+YCAqL1xuZXhwb3J0IGNvbnN0IFFTbG90ID0gJ3E6c2xvdCc7XG5leHBvcnQgY29uc3QgUVNsb3RSZWYgPSAncTpzcmVmJztcbmV4cG9ydCBjb25zdCBRU2xvdFMgPSAncTpzJztcbmV4cG9ydCBjb25zdCBRU3R5bGUgPSAncTpzdHlsZSc7XG5leHBvcnQgY29uc3QgUVNjb3BlZFN0eWxlID0gJ3E6c3N0eWxlJztcbmV4cG9ydCBjb25zdCBRQ3R4QXR0ciA9ICdxOmN0eCc7XG5leHBvcnQgY29uc3QgUU1hbmlmZXN0SGFzaCA9ICdxOm1hbmlmZXN0LWhhc2gnO1xuZXhwb3J0IGNvbnN0IFFJbnN0YW5jZSA9ICdxOmluc3RhbmNlJztcbmV4cG9ydCBjb25zdCBRRnVuY3NQcmVmaXggPSAncUZ1bmNzXyc7XG5cbmV4cG9ydCBjb25zdCBnZXRRRnVuY3MgPSAoZG9jdW1lbnQ6IERvY3VtZW50LCBoYXNoOiBzdHJpbmcpOiBGdW5jdGlvbltdID0+IHtcbiAgcmV0dXJuIChkb2N1bWVudCBhcyBhbnkpW1FGdW5jc1ByZWZpeCArIGhhc2hdIHx8IFtdO1xufTtcblxuZXhwb3J0IGNvbnN0IFFMb2NhbGVBdHRyID0gJ3E6bG9jYWxlJztcbmV4cG9ydCBjb25zdCBRQ29udGFpbmVyQXR0ciA9ICdxOmNvbnRhaW5lcic7XG5leHBvcnQgY29uc3QgUUJhc2VBdHRyID0gJ3E6YmFzZSc7XG5leHBvcnQgY29uc3QgUUNvbnRhaW5lclNlbGVjdG9yID0gJ1txXFxcXDpjb250YWluZXJdJztcblxuZXhwb3J0IGNvbnN0IFJlc291cmNlRXZlbnQgPSAncVJlc291cmNlJztcbmV4cG9ydCBjb25zdCBDb21wdXRlZEV2ZW50ID0gJ3FDb21wdXRlZCc7XG5leHBvcnQgY29uc3QgUmVuZGVyRXZlbnQgPSAncVJlbmRlcic7XG5leHBvcnQgY29uc3QgVGFza0V2ZW50ID0gJ3FUYXNrJztcblxuLyoqIGA8cTpzbG90IG5hbWU9XCIuLi5cIj5gICovXG5leHBvcnQgY29uc3QgUVNsb3RJbmVydE5hbWUgPSAnXFx1MDAwMCc7XG5cbmV4cG9ydCBjb25zdCBFTEVNRU5UX0lEID0gJ3E6aWQnO1xuZXhwb3J0IGNvbnN0IEVMRU1FTlRfSURfU0VMRUNUT1IgPSAnW3FcXFxcOmlkXSc7XG5leHBvcnQgY29uc3QgRUxFTUVOVF9JRF9QUkVGSVggPSAnIyc7XG5leHBvcnQgY29uc3QgSU5MSU5FX0ZOX1BSRUZJWCA9ICdAJztcbiJdfQ==","export const QObjectRecursive = 1 << 0;\nexport const QObjectImmutable = 1 << 1;\nexport const QOjectTargetSymbol = Symbol('proxy target');\nexport const QObjectFlagsSymbol = Symbol('proxy flags');\nexport const QObjectManagerSymbol = Symbol('proxy manager');\n/** @internal */\nexport const _IMMUTABLE = Symbol('IMMUTABLE');\nexport const _IMMUTABLE_PREFIX = '$$';\n/**\n * @internal\n * Key for the virtual element stored on qv comments\n */\nexport const VIRTUAL_SYMBOL = '__virtual';\n/**\n * @internal\n * Key for the `QContext` object stored on QwikElements\n */\nexport const Q_CTX = '_qc_';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3N0YXRlL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3pELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUN4RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFNUQsZ0JBQWdCO0FBQ2hCLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFOUMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDO0FBRXRDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFDMUM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBRT2JqZWN0UmVjdXJzaXZlID0gMSA8PCAwO1xuZXhwb3J0IGNvbnN0IFFPYmplY3RJbW11dGFibGUgPSAxIDw8IDE7XG5cbmV4cG9ydCBjb25zdCBRT2plY3RUYXJnZXRTeW1ib2wgPSBTeW1ib2woJ3Byb3h5IHRhcmdldCcpO1xuZXhwb3J0IGNvbnN0IFFPYmplY3RGbGFnc1N5bWJvbCA9IFN5bWJvbCgncHJveHkgZmxhZ3MnKTtcbmV4cG9ydCBjb25zdCBRT2JqZWN0TWFuYWdlclN5bWJvbCA9IFN5bWJvbCgncHJveHkgbWFuYWdlcicpO1xuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgY29uc3QgX0lNTVVUQUJMRSA9IFN5bWJvbCgnSU1NVVRBQkxFJyk7XG5cbmV4cG9ydCBjb25zdCBfSU1NVVRBQkxFX1BSRUZJWCA9ICckJCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBLZXkgZm9yIHRoZSB2aXJ0dWFsIGVsZW1lbnQgc3RvcmVkIG9uIHF2IGNvbW1lbnRzXG4gKi9cbmV4cG9ydCBjb25zdCBWSVJUVUFMX1NZTUJPTCA9ICdfX3ZpcnR1YWwnO1xuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEtleSBmb3IgdGhlIGBRQ29udGV4dGAgb2JqZWN0IHN0b3JlZCBvbiBRd2lrRWxlbWVudHNcbiAqL1xuZXhwb3J0IGNvbnN0IFFfQ1RYID0gJ19xY18nO1xuIl19","export const directSetAttribute = (el, prop, value) => {\n    return el.setAttribute(prop, value);\n};\nexport const directGetAttribute = (el, prop) => {\n    return el.getAttribute(prop);\n};\nexport const directRemoveAttribute = (el, prop) => {\n    return el.removeAttribute(prop);\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFzdC1jYWxscy5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS9yZW5kZXIvZmFzdC1jYWxscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEVBQWUsRUFBRSxJQUFZLEVBQUUsS0FBYSxFQUFFLEVBQUU7SUFDakYsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEVBQWUsRUFBRSxJQUFZLEVBQUUsRUFBRTtJQUNsRSxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxFQUFlLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDckUsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUXdpa0VsZW1lbnQgfSBmcm9tICcuL2RvbS92aXJ0dWFsLWVsZW1lbnQnO1xuXG5leHBvcnQgY29uc3QgZGlyZWN0U2V0QXR0cmlidXRlID0gKGVsOiBRd2lrRWxlbWVudCwgcHJvcDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBlbC5zZXRBdHRyaWJ1dGUocHJvcCwgdmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRpcmVjdEdldEF0dHJpYnV0ZSA9IChlbDogUXdpa0VsZW1lbnQsIHByb3A6IHN0cmluZykgPT4ge1xuICByZXR1cm4gZWwuZ2V0QXR0cmlidXRlKHByb3ApO1xufTtcblxuZXhwb3J0IGNvbnN0IGRpcmVjdFJlbW92ZUF0dHJpYnV0ZSA9IChlbDogUXdpa0VsZW1lbnQsIHByb3A6IHN0cmluZykgPT4ge1xuICByZXR1cm4gZWwucmVtb3ZlQXR0cmlidXRlKHByb3ApO1xufTtcbiJdfQ==","export const fromCamelToKebabCase = (text) => {\n    return text.replace(/([A-Z])/g, '-$1').toLowerCase();\n};\nexport const fromKebabToCamelCase = (text) => {\n    return text.replace(/-./g, (x) => x[1].toUpperCase());\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS91dGlsL2Nhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRTtJQUMzRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3ZELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsSUFBWSxFQUFVLEVBQUU7SUFDM0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGZyb21DYW1lbFRvS2ViYWJDYXNlID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiB0ZXh0LnJlcGxhY2UoLyhbQS1aXSkvZywgJy0kMScpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG5leHBvcnQgY29uc3QgZnJvbUtlYmFiVG9DYW1lbENhc2UgPSAodGV4dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIHRleHQucmVwbGFjZSgvLS4vZywgKHgpID0+IHhbMV0udG9VcHBlckNhc2UoKSk7XG59O1xuIl19","// keep this import from qwik/build so the cjs build works\nimport { isBrowser } from '@builder.io/qwik/build';\nimport { qTest } from './qdev';\nexport const emitEvent = (el, eventName, detail, bubbles) => {\n    if (!qTest && (isBrowser || typeof CustomEvent === 'function')) {\n        if (el) {\n            el.dispatchEvent(new CustomEvent(eventName, {\n                detail,\n                bubbles: bubbles,\n                composed: bubbles,\n            }));\n        }\n    }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvdXRpbC9ldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwREFBMEQ7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFL0IsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQ3ZCLEVBQXVCLEVBQ3ZCLFNBQWlCLEVBQ2pCLE1BQVcsRUFDWCxPQUFnQixFQUNoQixFQUFFO0lBQ0YsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsSUFBSSxPQUFPLFdBQVcsS0FBSyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQy9ELElBQUksRUFBRSxFQUFFLENBQUM7WUFDUCxFQUFFLENBQUMsYUFBYSxDQUNkLElBQUksV0FBVyxDQUFDLFNBQVMsRUFBRTtnQkFDekIsTUFBTTtnQkFDTixPQUFPLEVBQUUsT0FBTztnQkFDaEIsUUFBUSxFQUFFLE9BQU87YUFDbEIsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGtlZXAgdGhpcyBpbXBvcnQgZnJvbSBxd2lrL2J1aWxkIHNvIHRoZSBjanMgYnVpbGQgd29ya3NcbmltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gJ0BidWlsZGVyLmlvL3F3aWsvYnVpbGQnO1xuaW1wb3J0IHsgcVRlc3QgfSBmcm9tICcuL3FkZXYnO1xuXG5leHBvcnQgY29uc3QgZW1pdEV2ZW50ID0gKFxuICBlbDogRWxlbWVudCB8IHVuZGVmaW5lZCxcbiAgZXZlbnROYW1lOiBzdHJpbmcsXG4gIGRldGFpbDogYW55LFxuICBidWJibGVzOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFxVGVzdCAmJiAoaXNCcm93c2VyIHx8IHR5cGVvZiBDdXN0b21FdmVudCA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICBpZiAoZWwpIHtcbiAgICAgIGVsLmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudChldmVudE5hbWUsIHtcbiAgICAgICAgICBkZXRhaWwsXG4gICAgICAgICAgYnViYmxlczogYnViYmxlcyxcbiAgICAgICAgICBjb21wb3NlZDogYnViYmxlcyxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG59O1xuIl19","import { assertEqual, assertNumber, assertTrue } from '../error/assert';\nimport { qError, QError_immutableProps } from '../error/error';\nimport { tryGetInvokeContext } from '../use/use-core';\nimport { qDev, qSerialize } from '../util/qdev';\nimport { ComputedEvent, RenderEvent, ResourceEvent } from '../util/markers';\nimport { isArray, isObject, isSerializableObject } from '../util/types';\nimport { fastSkipSerialize, LocalSubscriptionManager, unwrapProxy, verifySerializable, } from './common';\nimport { isSignal } from './signal';\nimport { QObjectFlagsSymbol, QObjectImmutable, QObjectManagerSymbol, QObjectRecursive, QOjectTargetSymbol, _IMMUTABLE, _IMMUTABLE_PREFIX, } from './constants';\nimport { logError, logWarn } from '../util/log';\n/** Creates a proxy that notifies of any writes. */\nexport const getOrCreateProxy = (target, containerState, flags = 0) => {\n    const proxy = containerState.$proxyMap$.get(target);\n    if (proxy) {\n        return proxy;\n    }\n    if (flags !== 0) {\n        setObjectFlags(target, flags);\n    }\n    return createProxy(target, containerState, undefined);\n};\nexport const createProxy = (target, containerState, subs) => {\n    assertEqual(unwrapProxy(target), target, 'Unexpected proxy at this location', target);\n    assertTrue(!containerState.$proxyMap$.has(target), 'Proxy was already created', target);\n    assertTrue(isObject(target), 'Target must be an object');\n    assertTrue(isSerializableObject(target) || isArray(target), 'Target must be a serializable object');\n    const manager = containerState.$subsManager$.$createManager$(subs);\n    const proxy = new Proxy(target, new ReadWriteProxyHandler(containerState, manager));\n    containerState.$proxyMap$.set(target, proxy);\n    return proxy;\n};\nexport const createPropsState = () => {\n    const props = {};\n    setObjectFlags(props, QObjectImmutable);\n    return props;\n};\nexport const setObjectFlags = (obj, flags) => {\n    Object.defineProperty(obj, QObjectFlagsSymbol, { value: flags, enumerable: false });\n};\n/** @internal */\nexport const _restProps = (props, omit) => {\n    const rest = {};\n    for (const key in props) {\n        if (!omit.includes(key)) {\n            rest[key] = props[key];\n        }\n    }\n    return rest;\n};\nexport class ReadWriteProxyHandler {\n    $containerState$;\n    $manager$;\n    constructor($containerState$, $manager$) {\n        this.$containerState$ = $containerState$;\n        this.$manager$ = $manager$;\n    }\n    deleteProperty(target, prop) {\n        if (target[QObjectFlagsSymbol] & QObjectImmutable) {\n            throw qError(QError_immutableProps);\n        }\n        if (typeof prop != 'string' || !delete target[prop]) {\n            return false;\n        }\n        this.$manager$.$notifySubs$(isArray(target) ? undefined : prop);\n        return true;\n    }\n    get(target, prop) {\n        if (typeof prop === 'symbol') {\n            if (prop === QOjectTargetSymbol) {\n                return target;\n            }\n            if (prop === QObjectManagerSymbol) {\n                return this.$manager$;\n            }\n            return target[prop];\n        }\n        const flags = target[QObjectFlagsSymbol] ?? 0;\n        assertNumber(flags, 'flags must be an number');\n        const invokeCtx = tryGetInvokeContext();\n        const recursive = (flags & QObjectRecursive) !== 0;\n        const immutable = (flags & QObjectImmutable) !== 0;\n        const hiddenSignal = target[_IMMUTABLE_PREFIX + prop];\n        let subscriber;\n        let value;\n        if (invokeCtx) {\n            subscriber = invokeCtx.$subscriber$;\n        }\n        if (immutable && (!(prop in target) || immutableValue(target[_IMMUTABLE]?.[prop]))) {\n            subscriber = null;\n        }\n        if (hiddenSignal) {\n            assertTrue(isSignal(hiddenSignal), '$$ prop must be a signal');\n            value = hiddenSignal.value;\n            subscriber = null;\n        }\n        else {\n            value = target[prop];\n        }\n        if (subscriber) {\n            const isA = isArray(target);\n            this.$manager$.$addSub$(subscriber, isA ? undefined : prop);\n        }\n        return recursive ? wrap(value, this.$containerState$) : value;\n    }\n    set(target, prop, newValue) {\n        if (typeof prop === 'symbol') {\n            target[prop] = newValue;\n            return true;\n        }\n        const flags = target[QObjectFlagsSymbol] ?? 0;\n        assertNumber(flags, 'flags must be an number');\n        const immutable = (flags & QObjectImmutable) !== 0;\n        if (immutable) {\n            throw qError(QError_immutableProps);\n        }\n        const recursive = (flags & QObjectRecursive) !== 0;\n        const unwrappedNewValue = recursive ? unwrapProxy(newValue) : newValue;\n        if (qDev) {\n            if (qSerialize) {\n                verifySerializable(unwrappedNewValue);\n            }\n            const invokeCtx = tryGetInvokeContext();\n            if (invokeCtx) {\n                if (invokeCtx.$event$ === RenderEvent) {\n                    logError('State mutation inside render function. Move mutation to useTask$() or useVisibleTask$()', prop);\n                }\n                else if (invokeCtx.$event$ === ComputedEvent) {\n                    logWarn('State mutation inside useComputed$() is an antipattern. Use useTask$() instead', invokeCtx.$hostElement$);\n                }\n                else if (invokeCtx.$event$ === ResourceEvent) {\n                    logWarn('State mutation inside useResource$() is an antipattern. Use useTask$() instead', invokeCtx.$hostElement$);\n                }\n            }\n        }\n        const isA = isArray(target);\n        if (isA) {\n            target[prop] = unwrappedNewValue;\n            this.$manager$.$notifySubs$();\n            return true;\n        }\n        const oldValue = target[prop];\n        target[prop] = unwrappedNewValue;\n        if (oldValue !== unwrappedNewValue) {\n            this.$manager$.$notifySubs$(prop);\n        }\n        return true;\n    }\n    has(target, prop) {\n        if (prop === QOjectTargetSymbol) {\n            return true;\n        }\n        const invokeCtx = tryGetInvokeContext();\n        if (typeof prop === 'string' && invokeCtx) {\n            const subscriber = invokeCtx.$subscriber$;\n            if (subscriber) {\n                const isA = isArray(target);\n                this.$manager$.$addSub$(subscriber, isA ? undefined : prop);\n            }\n        }\n        const hasOwnProperty = Object.prototype.hasOwnProperty;\n        if (hasOwnProperty.call(target, prop)) {\n            return true;\n        }\n        if (typeof prop === 'string' && hasOwnProperty.call(target, _IMMUTABLE_PREFIX + prop)) {\n            return true;\n        }\n        return false;\n    }\n    ownKeys(target) {\n        const flags = target[QObjectFlagsSymbol] ?? 0;\n        assertNumber(flags, 'flags must be an number');\n        const immutable = (flags & QObjectImmutable) !== 0;\n        if (!immutable) {\n            let subscriber = null;\n            const invokeCtx = tryGetInvokeContext();\n            if (invokeCtx) {\n                subscriber = invokeCtx.$subscriber$;\n            }\n            if (subscriber) {\n                this.$manager$.$addSub$(subscriber);\n            }\n        }\n        if (isArray(target)) {\n            return Reflect.ownKeys(target);\n        }\n        return Reflect.ownKeys(target).map((a) => {\n            return typeof a === 'string' && a.startsWith(_IMMUTABLE_PREFIX)\n                ? a.slice(_IMMUTABLE_PREFIX.length)\n                : a;\n        });\n    }\n    getOwnPropertyDescriptor(target, prop) {\n        const descriptor = Reflect.getOwnPropertyDescriptor(target, prop);\n        if (isArray(target) || typeof prop === 'symbol') {\n            return descriptor;\n        }\n        if (descriptor && !descriptor.configurable) {\n            return descriptor;\n        }\n        return {\n            enumerable: true,\n            configurable: true,\n        };\n    }\n}\nconst immutableValue = (value) => {\n    return value === _IMMUTABLE || isSignal(value);\n};\nconst wrap = (value, containerState) => {\n    if (isObject(value)) {\n        if (Object.isFrozen(value)) {\n            return value;\n        }\n        const nakedValue = unwrapProxy(value);\n        if (nakedValue !== value) {\n            // already a proxy return;\n            return value;\n        }\n        if (fastSkipSerialize(nakedValue)) {\n            return value;\n        }\n        if (isSerializableObject(nakedValue) || isArray(nakedValue)) {\n            const proxy = containerState.$proxyMap$.get(nakedValue);\n            return proxy ? proxy : getOrCreateProxy(nakedValue, containerState, QObjectRecursive);\n        }\n    }\n    return value;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvc3RhdGUvc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsd0JBQXdCLEVBR3hCLFdBQVcsRUFDWCxrQkFBa0IsR0FDbkIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsaUJBQWlCLEdBQ2xCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSWhELG1EQUFtRDtBQUNuRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUM5QixNQUFTLEVBQ1QsY0FBOEIsRUFDOUIsS0FBSyxHQUFHLENBQUMsRUFDTixFQUFFO0lBQ0wsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENB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VSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzVELE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQWlCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDL0YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydEVxdWFsLCBhc3NlcnROdW1iZXIsIGFzc2VydFRydWUgfSBmcm9tICcuLi9lcnJvci9hc3NlcnQnO1xuaW1wb3J0IHsgcUVycm9yLCBRRXJyb3JfaW1tdXRhYmxlUHJvcHMgfSBmcm9tICcuLi9lcnJvci9lcnJvcic7XG5pbXBvcnQgeyB0cnlHZXRJbnZva2VDb250ZXh0IH0gZnJvbSAnLi4vdXNlL3VzZS1jb3JlJztcbmltcG9ydCB7IHFEZXYsIHFTZXJpYWxpemUgfSBmcm9tICcuLi91dGlsL3FkZXYnO1xuaW1wb3J0IHsgQ29tcHV0ZWRFdmVudCwgUmVuZGVyRXZlbnQsIFJlc291cmNlRXZlbnQgfSBmcm9tICcuLi91dGlsL21hcmtlcnMnO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNPYmplY3QsIGlzU2VyaWFsaXphYmxlT2JqZWN0IH0gZnJvbSAnLi4vdXRpbC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IENvbnRhaW5lclN0YXRlIH0gZnJvbSAnLi4vY29udGFpbmVyL2NvbnRhaW5lcic7XG5pbXBvcnQge1xuICBmYXN0U2tpcFNlcmlhbGl6ZSxcbiAgTG9jYWxTdWJzY3JpcHRpb25NYW5hZ2VyLFxuICB0eXBlIFN1YnNjcmliZXIsXG4gIHR5cGUgU3Vic2NyaXB0aW9ucyxcbiAgdW53cmFwUHJveHksXG4gIHZlcmlmeVNlcmlhbGl6YWJsZSxcbn0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgaXNTaWduYWwgfSBmcm9tICcuL3NpZ25hbCc7XG5pbXBvcnQge1xuICBRT2JqZWN0RmxhZ3NTeW1ib2wsXG4gIFFPYmplY3RJbW11dGFibGUsXG4gIFFPYmplY3RNYW5hZ2VyU3ltYm9sLFxuICBRT2JqZWN0UmVjdXJzaXZlLFxuICBRT2plY3RUYXJnZXRTeW1ib2wsXG4gIF9JTU1VVEFCTEUsXG4gIF9JTU1VVEFCTEVfUFJFRklYLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBsb2dFcnJvciwgbG9nV2FybiB9IGZyb20gJy4uL3V0aWwvbG9nJztcblxuZXhwb3J0IHR5cGUgUU9iamVjdDxUIGV4dGVuZHMge30+ID0gVCAmIHsgX19icmFuZF9fOiAnUU9iamVjdCcgfTtcblxuLyoqIENyZWF0ZXMgYSBwcm94eSB0aGF0IG5vdGlmaWVzIG9mIGFueSB3cml0ZXMuICovXG5leHBvcnQgY29uc3QgZ2V0T3JDcmVhdGVQcm94eSA9IDxUIGV4dGVuZHMgb2JqZWN0PihcbiAgdGFyZ2V0OiBULFxuICBjb250YWluZXJTdGF0ZTogQ29udGFpbmVyU3RhdGUsXG4gIGZsYWdzID0gMFxuKTogVCA9PiB7XG4gIGNvbnN0IHByb3h5ID0gY29udGFpbmVyU3RhdGUuJHByb3h5TWFwJC5nZXQodGFyZ2V0KTtcbiAgaWYgKHByb3h5KSB7XG4gICAgcmV0dXJuIHByb3h5O1xuICB9XG4gIGlmIChmbGFncyAhPT0gMCkge1xuICAgIHNldE9iamVjdEZsYWdzKHRhcmdldCwgZmxhZ3MpO1xuICB9XG4gIHJldHVybiBjcmVhdGVQcm94eSh0YXJnZXQsIGNvbnRhaW5lclN0YXRlLCB1bmRlZmluZWQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVByb3h5ID0gPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICB0YXJnZXQ6IFQsXG4gIGNvbnRhaW5lclN0YXRlOiBDb250YWluZXJTdGF0ZSxcbiAgc3Vicz86IFN1YnNjcmlwdGlvbnNbXVxuKTogVCA9PiB7XG4gIGFzc2VydEVxdWFsKHVud3JhcFByb3h5KHRhcmdldCksIHRhcmdldCwgJ1VuZXhwZWN0ZWQgcHJveHkgYXQgdGhpcyBsb2NhdGlvbicsIHRhcmdldCk7XG4gIGFzc2VydFRydWUoIWNvbnRhaW5lclN0YXRlLiRwcm94eU1hcCQuaGFzKHRhcmdldCksICdQcm94eSB3YXMgYWxyZWFkeSBjcmVhdGVkJywgdGFyZ2V0KTtcbiAgYXNzZXJ0VHJ1ZShpc09iamVjdCh0YXJnZXQpLCAnVGFyZ2V0IG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIGFzc2VydFRydWUoXG4gICAgaXNTZXJpYWxpemFibGVPYmplY3QodGFyZ2V0KSB8fCBpc0FycmF5KHRhcmdldCksXG4gICAgJ1RhcmdldCBtdXN0IGJlIGEgc2VyaWFsaXphYmxlIG9iamVjdCdcbiAgKTtcblxuICBjb25zdCBtYW5hZ2VyID0gY29udGFpbmVyU3RhdGUuJHN1YnNNYW5hZ2VyJC4kY3JlYXRlTWFuYWdlciQoc3Vicyk7XG4gIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgbmV3IFJlYWRXcml0ZVByb3h5SGFuZGxlcihjb250YWluZXJTdGF0ZSwgbWFuYWdlcikpIGFzIGFueSBhcyBUO1xuICBjb250YWluZXJTdGF0ZS4kcHJveHlNYXAkLnNldCh0YXJnZXQsIHByb3h5KTtcbiAgcmV0dXJuIHByb3h5O1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVByb3BzU3RhdGUgPSAoKTogUmVjb3JkPHN0cmluZywgYW55PiA9PiB7XG4gIGNvbnN0IHByb3BzID0ge307XG4gIHNldE9iamVjdEZsYWdzKHByb3BzLCBRT2JqZWN0SW1tdXRhYmxlKTtcbiAgcmV0dXJuIHByb3BzO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldE9iamVjdEZsYWdzID0gKG9iajogb2JqZWN0LCBmbGFnczogbnVtYmVyKSA9PiB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIFFPYmplY3RGbGFnc1N5bWJvbCwgeyB2YWx1ZTogZmxhZ3MsIGVudW1lcmFibGU6IGZhbHNlIH0pO1xufTtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0VHlwZSA9IFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIGFueT47XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjb25zdCBfcmVzdFByb3BzID0gKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBvbWl0OiBzdHJpbmdbXSkgPT4ge1xuICBjb25zdCByZXN0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGZvciAoY29uc3Qga2V5IGluIHByb3BzKSB7XG4gICAgaWYgKCFvbWl0LmluY2x1ZGVzKGtleSkpIHtcbiAgICAgIHJlc3Rba2V5XSA9IHByb3BzW2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN0O1xufTtcblxuZXhwb3J0IGNsYXNzIFJlYWRXcml0ZVByb3h5SGFuZGxlciBpbXBsZW1lbnRzIFByb3h5SGFuZGxlcjxUYXJnZXRUeXBlPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgJGNvbnRhaW5lclN0YXRlJDogQ29udGFpbmVyU3RhdGUsXG4gICAgcHJpdmF0ZSAkbWFuYWdlciQ6IExvY2FsU3Vic2NyaXB0aW9uTWFuYWdlclxuICApIHt9XG5cbiAgZGVsZXRlUHJvcGVydHkodGFyZ2V0OiBUYXJnZXRUeXBlLCBwcm9wOiBzdHJpbmcgfCBzeW1ib2wpOiBib29sZWFuIHtcbiAgICBpZiAodGFyZ2V0W1FPYmplY3RGbGFnc1N5bWJvbF0gJiBRT2JqZWN0SW1tdXRhYmxlKSB7XG4gICAgICB0aHJvdyBxRXJyb3IoUUVycm9yX2ltbXV0YWJsZVByb3BzKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBwcm9wICE9ICdzdHJpbmcnIHx8ICFkZWxldGUgdGFyZ2V0W3Byb3BdKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuJG1hbmFnZXIkLiRub3RpZnlTdWJzJChpc0FycmF5KHRhcmdldCkgPyB1bmRlZmluZWQgOiBwcm9wKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldCh0YXJnZXQ6IFRhcmdldFR5cGUsIHByb3A6IHN0cmluZyB8IHN5bWJvbCk6IGFueSB7XG4gICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3ltYm9sJykge1xuICAgICAgaWYgKHByb3AgPT09IFFPamVjdFRhcmdldFN5bWJvbCkge1xuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgfVxuICAgICAgaWYgKHByb3AgPT09IFFPYmplY3RNYW5hZ2VyU3ltYm9sKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRtYW5hZ2VyJDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRbcHJvcF07XG4gICAgfVxuICAgIGNvbnN0IGZsYWdzID0gdGFyZ2V0W1FPYmplY3RGbGFnc1N5bWJvbF0gPz8gMDtcbiAgICBhc3NlcnROdW1iZXIoZmxhZ3MsICdmbGFncyBtdXN0IGJlIGFuIG51bWJlcicpO1xuICAgIGNvbnN0IGludm9rZUN0eCA9IHRyeUdldEludm9rZUNvbnRleHQoKTtcbiAgICBjb25zdCByZWN1cnNpdmUgPSAoZmxhZ3MgJiBRT2JqZWN0UmVjdXJzaXZlKSAhPT0gMDtcbiAgICBjb25zdCBpbW11dGFibGUgPSAoZmxhZ3MgJiBRT2JqZWN0SW1tdXRhYmxlKSAhPT0gMDtcbiAgICBjb25zdCBoaWRkZW5TaWduYWwgPSB0YXJnZXRbX0lNTVVUQUJMRV9QUkVGSVggKyBwcm9wXTtcbiAgICBsZXQgc3Vic2NyaWJlcjogU3Vic2NyaWJlciB8IHVuZGVmaW5lZCB8IG51bGw7XG4gICAgbGV0IHZhbHVlO1xuICAgIGlmIChpbnZva2VDdHgpIHtcbiAgICAgIHN1YnNjcmliZXIgPSBpbnZva2VDdHguJHN1YnNjcmliZXIkO1xuICAgIH1cbiAgICBpZiAoaW1tdXRhYmxlICYmICghKHByb3AgaW4gdGFyZ2V0KSB8fCBpbW11dGFibGVWYWx1ZSh0YXJnZXRbX0lNTVVUQUJMRV0/Lltwcm9wXSkpKSB7XG4gICAgICBzdWJzY3JpYmVyID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGhpZGRlblNpZ25hbCkge1xuICAgICAgYXNzZXJ0VHJ1ZShpc1NpZ25hbChoaWRkZW5TaWduYWwpLCAnJCQgcHJvcCBtdXN0IGJlIGEgc2lnbmFsJyk7XG4gICAgICB2YWx1ZSA9IGhpZGRlblNpZ25hbC52YWx1ZTtcbiAgICAgIHN1YnNjcmliZXIgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHRhcmdldFtwcm9wXTtcbiAgICB9XG4gICAgaWYgKHN1YnNjcmliZXIpIHtcbiAgICAgIGNvbnN0IGlzQSA9IGlzQXJyYXkodGFyZ2V0KTtcbiAgICAgIHRoaXMuJG1hbmFnZXIkLiRhZGRTdWIkKHN1YnNjcmliZXIsIGlzQSA/IHVuZGVmaW5lZCA6IHByb3ApO1xuICAgIH1cbiAgICByZXR1cm4gcmVjdXJzaXZlID8gd3JhcCh2YWx1ZSwgdGhpcy4kY29udGFpbmVyU3RhdGUkKSA6IHZhbHVlO1xuICB9XG5cbiAgc2V0KHRhcmdldDogVGFyZ2V0VHlwZSwgcHJvcDogc3RyaW5nIHwgc3ltYm9sLCBuZXdWYWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3ltYm9sJykge1xuICAgICAgdGFyZ2V0W3Byb3BdID0gbmV3VmFsdWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgZmxhZ3MgPSB0YXJnZXRbUU9iamVjdEZsYWdzU3ltYm9sXSA/PyAwO1xuICAgIGFzc2VydE51bWJlcihmbGFncywgJ2ZsYWdzIG11c3QgYmUgYW4gbnVtYmVyJyk7XG4gICAgY29uc3QgaW1tdXRhYmxlID0gKGZsYWdzICYgUU9iamVjdEltbXV0YWJsZSkgIT09IDA7XG4gICAgaWYgKGltbXV0YWJsZSkge1xuICAgICAgdGhyb3cgcUVycm9yKFFFcnJvcl9pbW11dGFibGVQcm9wcyk7XG4gICAgfVxuICAgIGNvbnN0IHJlY3Vyc2l2ZSA9IChmbGFncyAmIFFPYmplY3RSZWN1cnNpdmUpICE9PSAwO1xuICAgIGNvbnN0IHVud3JhcHBlZE5ld1ZhbHVlID0gcmVjdXJzaXZlID8gdW53cmFwUHJveHkobmV3VmFsdWUpIDogbmV3VmFsdWU7XG4gICAgaWYgKHFEZXYpIHtcbiAgICAgIGlmIChxU2VyaWFsaXplKSB7XG4gICAgICAgIHZlcmlmeVNlcmlhbGl6YWJsZSh1bndyYXBwZWROZXdWYWx1ZSk7XG4gICAgICB9XG4gICAgICBjb25zdCBpbnZva2VDdHggPSB0cnlHZXRJbnZva2VDb250ZXh0KCk7XG4gICAgICBpZiAoaW52b2tlQ3R4KSB7XG4gICAgICAgIGlmIChpbnZva2VDdHguJGV2ZW50JCA9PT0gUmVuZGVyRXZlbnQpIHtcbiAgICAgICAgICBsb2dFcnJvcihcbiAgICAgICAgICAgICdTdGF0ZSBtdXRhdGlvbiBpbnNpZGUgcmVuZGVyIGZ1bmN0aW9uLiBNb3ZlIG11dGF0aW9uIHRvIHVzZVRhc2skKCkgb3IgdXNlVmlzaWJsZVRhc2skKCknLFxuICAgICAgICAgICAgcHJvcFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW52b2tlQ3R4LiRldmVudCQgPT09IENvbXB1dGVkRXZlbnQpIHtcbiAgICAgICAgICBsb2dXYXJuKFxuICAgICAgICAgICAgJ1N0YXRlIG11dGF0aW9uIGluc2lkZSB1c2VDb21wdXRlZCQoKSBpcyBhbiBhbnRpcGF0dGVybi4gVXNlIHVzZVRhc2skKCkgaW5zdGVhZCcsXG4gICAgICAgICAgICBpbnZva2VDdHguJGhvc3RFbGVtZW50JFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW52b2tlQ3R4LiRldmVudCQgPT09IFJlc291cmNlRXZlbnQpIHtcbiAgICAgICAgICBsb2dXYXJuKFxuICAgICAgICAgICAgJ1N0YXRlIG11dGF0aW9uIGluc2lkZSB1c2VSZXNvdXJjZSQoKSBpcyBhbiBhbnRpcGF0dGVybi4gVXNlIHVzZVRhc2skKCkgaW5zdGVhZCcsXG4gICAgICAgICAgICBpbnZva2VDdHguJGhvc3RFbGVtZW50JFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgaXNBID0gaXNBcnJheSh0YXJnZXQpO1xuICAgIGlmIChpc0EpIHtcbiAgICAgIHRhcmdldFtwcm9wIGFzIGFueV0gPSB1bndyYXBwZWROZXdWYWx1ZTtcbiAgICAgIHRoaXMuJG1hbmFnZXIkLiRub3RpZnlTdWJzJCgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0YXJnZXRbcHJvcF07XG4gICAgdGFyZ2V0W3Byb3BdID0gdW53cmFwcGVkTmV3VmFsdWU7XG4gICAgaWYgKG9sZFZhbHVlICE9PSB1bndyYXBwZWROZXdWYWx1ZSkge1xuICAgICAgdGhpcy4kbWFuYWdlciQuJG5vdGlmeVN1YnMkKHByb3ApO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGhhcyh0YXJnZXQ6IFRhcmdldFR5cGUsIHByb3A6IHN0cmluZyB8IHN5bWJvbCk6IGJvb2xlYW4ge1xuICAgIGlmIChwcm9wID09PSBRT2plY3RUYXJnZXRTeW1ib2wpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBpbnZva2VDdHggPSB0cnlHZXRJbnZva2VDb250ZXh0KCk7XG4gICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJyAmJiBpbnZva2VDdHgpIHtcbiAgICAgIGNvbnN0IHN1YnNjcmliZXIgPSBpbnZva2VDdHguJHN1YnNjcmliZXIkO1xuICAgICAgaWYgKHN1YnNjcmliZXIpIHtcbiAgICAgICAgY29uc3QgaXNBID0gaXNBcnJheSh0YXJnZXQpO1xuICAgICAgICB0aGlzLiRtYW5hZ2VyJC4kYWRkU3ViJChzdWJzY3JpYmVyLCBpc0EgPyB1bmRlZmluZWQgOiBwcm9wKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHRhcmdldCwgcHJvcCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnICYmIGhhc093blByb3BlcnR5LmNhbGwodGFyZ2V0LCBfSU1NVVRBQkxFX1BSRUZJWCArIHByb3ApKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb3duS2V5cyh0YXJnZXQ6IFRhcmdldFR5cGUpOiBBcnJheUxpa2U8c3RyaW5nIHwgc3ltYm9sPiB7XG4gICAgY29uc3QgZmxhZ3MgPSB0YXJnZXRbUU9iamVjdEZsYWdzU3ltYm9sXSA/PyAwO1xuICAgIGFzc2VydE51bWJlcihmbGFncywgJ2ZsYWdzIG11c3QgYmUgYW4gbnVtYmVyJyk7XG4gICAgY29uc3QgaW1tdXRhYmxlID0gKGZsYWdzICYgUU9iamVjdEltbXV0YWJsZSkgIT09IDA7XG4gICAgaWYgKCFpbW11dGFibGUpIHtcbiAgICAgIGxldCBzdWJzY3JpYmVyOiBTdWJzY3JpYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG4gICAgICBjb25zdCBpbnZva2VDdHggPSB0cnlHZXRJbnZva2VDb250ZXh0KCk7XG4gICAgICBpZiAoaW52b2tlQ3R4KSB7XG4gICAgICAgIHN1YnNjcmliZXIgPSBpbnZva2VDdHguJHN1YnNjcmliZXIkO1xuICAgICAgfVxuICAgICAgaWYgKHN1YnNjcmliZXIpIHtcbiAgICAgICAgdGhpcy4kbWFuYWdlciQuJGFkZFN1YiQoc3Vic2NyaWJlcik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc0FycmF5KHRhcmdldCkpIHtcbiAgICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KTtcbiAgICB9XG4gICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh0YXJnZXQpLm1hcCgoYSkgPT4ge1xuICAgICAgcmV0dXJuIHR5cGVvZiBhID09PSAnc3RyaW5nJyAmJiBhLnN0YXJ0c1dpdGgoX0lNTVVUQUJMRV9QUkVGSVgpXG4gICAgICAgID8gYS5zbGljZShfSU1NVVRBQkxFX1BSRUZJWC5sZW5ndGgpXG4gICAgICAgIDogYTtcbiAgICB9KTtcbiAgfVxuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXG4gICAgdGFyZ2V0OiBUYXJnZXRUeXBlLFxuICAgIHByb3A6IHN0cmluZyB8IHN5bWJvbFxuICApOiBQcm9wZXJ0eURlc2NyaXB0b3IgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIHByb3ApO1xuXG4gICAgaWYgKGlzQXJyYXkodGFyZ2V0KSB8fCB0eXBlb2YgcHJvcCA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIGlmIChkZXNjcmlwdG9yICYmICFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSkge1xuICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgfTtcbiAgfVxufVxuXG5jb25zdCBpbW11dGFibGVWYWx1ZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gIHJldHVybiB2YWx1ZSA9PT0gX0lNTVVUQUJMRSB8fCBpc1NpZ25hbCh2YWx1ZSk7XG59O1xuXG5jb25zdCB3cmFwID0gPFQ+KHZhbHVlOiBULCBjb250YWluZXJTdGF0ZTogQ29udGFpbmVyU3RhdGUpOiBUID0+IHtcbiAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIGlmIChPYmplY3QuaXNGcm96ZW4odmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IG5ha2VkVmFsdWUgPSB1bndyYXBQcm94eSh2YWx1ZSk7XG4gICAgaWYgKG5ha2VkVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAvLyBhbHJlYWR5IGEgcHJveHkgcmV0dXJuO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoZmFzdFNraXBTZXJpYWxpemUobmFrZWRWYWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKGlzU2VyaWFsaXphYmxlT2JqZWN0KG5ha2VkVmFsdWUpIHx8IGlzQXJyYXkobmFrZWRWYWx1ZSkpIHtcbiAgICAgIGNvbnN0IHByb3h5ID0gY29udGFpbmVyU3RhdGUuJHByb3h5TWFwJC5nZXQobmFrZWRWYWx1ZSk7XG4gICAgICByZXR1cm4gcHJveHkgPyBwcm94eSA6IGdldE9yQ3JlYXRlUHJveHkobmFrZWRWYWx1ZSBhcyBhbnksIGNvbnRhaW5lclN0YXRlLCBRT2JqZWN0UmVjdXJzaXZlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufTtcbiJdfQ==","import { inflateQrl, parseQRL } from '../qrl/qrl';\nimport { assertQrl, isQrl } from '../qrl/qrl-class';\nimport { $ } from '../qrl/qrl.public';\nimport { isArray } from '../util/types';\nimport { assertTrue } from '../error/assert';\nimport { EMPTY_ARRAY } from '../util/flyweight';\nimport { qRuntimeQrl, qSerialize } from '../util/qdev';\nimport { fromCamelToKebabCase } from '../util/case';\nconst ON_PROP_REGEX = /^(on|window:|document:)/;\nexport const PREVENT_DEFAULT = 'preventdefault:';\nexport const isOnProp = (prop) => {\n    return prop.endsWith('$') && ON_PROP_REGEX.test(prop);\n};\nexport const groupListeners = (listeners) => {\n    if (listeners.length === 0) {\n        return EMPTY_ARRAY;\n    }\n    if (listeners.length === 1) {\n        const listener = listeners[0];\n        return [[listener[0], [listener[1]]]];\n    }\n    const keys = [];\n    for (let i = 0; i < listeners.length; i++) {\n        const eventName = listeners[i][0];\n        if (!keys.includes(eventName)) {\n            keys.push(eventName);\n        }\n    }\n    return keys.map((eventName) => {\n        return [eventName, listeners.filter((l) => l[0] === eventName).map((a) => a[1])];\n    });\n};\nexport const setEvent = (existingListeners, prop, input, containerEl) => {\n    assertTrue(prop.endsWith('$'), 'render: event property does not end with $', prop);\n    prop = normalizeOnProp(prop.slice(0, -1));\n    if (input) {\n        if (isArray(input)) {\n            const processed = input\n                .flat(Infinity)\n                .filter((q) => q != null)\n                .map((q) => [prop, ensureQrl(q, containerEl)]);\n            existingListeners.push(...processed);\n        }\n        else {\n            existingListeners.push([prop, ensureQrl(input, containerEl)]);\n        }\n    }\n    return prop;\n};\nconst PREFIXES = ['on', 'window:on', 'document:on'];\nconst SCOPED = ['on', 'on-window', 'on-document'];\nexport const normalizeOnProp = (prop) => {\n    let scope = 'on';\n    for (let i = 0; i < PREFIXES.length; i++) {\n        const prefix = PREFIXES[i];\n        if (prop.startsWith(prefix)) {\n            scope = SCOPED[i];\n            prop = prop.slice(prefix.length);\n            break;\n        }\n    }\n    if (prop.startsWith('-')) {\n        prop = fromCamelToKebabCase(prop.slice(1));\n    }\n    else {\n        prop = prop.toLowerCase();\n    }\n    return scope + ':' + prop;\n};\nconst ensureQrl = (value, containerEl) => {\n    if (qSerialize && !qRuntimeQrl) {\n        assertQrl(value);\n        value.$setContainer$(containerEl);\n        return value;\n    }\n    const qrl = isQrl(value) ? value : $(value);\n    qrl.$setContainer$(containerEl);\n    return qrl;\n};\nexport const getDomListeners = (elCtx, containerEl) => {\n    const attributes = elCtx.$element$.attributes;\n    const listeners = [];\n    for (let i = 0; i < attributes.length; i++) {\n        const { name, value } = attributes.item(i);\n        if (name.startsWith('on:') ||\n            name.startsWith('on-window:') ||\n            name.startsWith('on-document:')) {\n            const urls = value.split('\\n');\n            for (const url of urls) {\n                const qrl = parseQRL(url, containerEl);\n                if (qrl.$capture$) {\n                    inflateQrl(qrl, elCtx);\n                }\n                listeners.push([name, qrl]);\n            }\n        }\n    }\n    return listeners;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGVuZXJzLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3N0YXRlL2xpc3RlbmVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0IsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUlwRCxNQUFNLGFBQWEsR0FBRyx5QkFBeUIsQ0FBQztBQVFoRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsaUJBQWlCLENBQUM7QUFFakQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBWSxFQUFXLEVBQUU7SUFDaEQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsU0FBcUIsRUFBdUMsRUFBRTtJQUMzRixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDM0IsT0FBTyxXQUFrQixDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7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QUMzRCxNQUFNLFNBQVMsR0FBZSxFQUFFLENBQUM7SUFDakMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMzQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFFLENBQUM7UUFDNUMsSUFDRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztZQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxFQUMvQixDQUFDO1lBQ0QsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN2QixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBZ0IsQ0FBQztnQkFDdEQsSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2xCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7Z0JBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluZmxhdGVRcmwsIHBhcnNlUVJMIH0gZnJvbSAnLi4vcXJsL3FybCc7XG5pbXBvcnQgeyBhc3NlcnRRcmwsIGlzUXJsLCB0eXBlIFFSTEludGVybmFsIH0gZnJvbSAnLi4vcXJsL3FybC1jbGFzcyc7XG5pbXBvcnQgeyAkIH0gZnJvbSAnLi4vcXJsL3FybC5wdWJsaWMnO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJy4uL3V0aWwvdHlwZXMnO1xuaW1wb3J0IHsgYXNzZXJ0VHJ1ZSB9IGZyb20gJy4uL2Vycm9yL2Fzc2VydCc7XG5pbXBvcnQgeyBFTVBUWV9BUlJBWSB9IGZyb20gJy4uL3V0aWwvZmx5d2VpZ2h0JztcbmltcG9ydCB7IHFSdW50aW1lUXJsLCBxU2VyaWFsaXplIH0gZnJvbSAnLi4vdXRpbC9xZGV2JztcbmltcG9ydCB7IGZyb21DYW1lbFRvS2ViYWJDYXNlIH0gZnJvbSAnLi4vdXRpbC9jYXNlJztcbmltcG9ydCB0eXBlIHsgUUNvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHR5cGUgeyBQb3NzaWJsZUV2ZW50cyB9IGZyb20gJy4uL3VzZS91c2UtY29yZSc7XG5cbmNvbnN0IE9OX1BST1BfUkVHRVggPSAvXihvbnx3aW5kb3c6fGRvY3VtZW50OikvO1xuXG4vKiogQSBRUkwgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBvY2N1cnMgKi9cbmV4cG9ydCB0eXBlIExpc3RlbmVyID0gW1xuICBldmVudE5hbWU6IHN0cmluZyxcbiAgcXJsOiBRUkxJbnRlcm5hbDwoZXZlbnQ6IFBvc3NpYmxlRXZlbnRzLCBlbGVtPzogRWxlbWVudCkgPT4gYW55Pixcbl07XG5cbmV4cG9ydCBjb25zdCBQUkVWRU5UX0RFRkFVTFQgPSAncHJldmVudGRlZmF1bHQ6JztcblxuZXhwb3J0IGNvbnN0IGlzT25Qcm9wID0gKHByb3A6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gcHJvcC5lbmRzV2l0aCgnJCcpICYmIE9OX1BST1BfUkVHRVgudGVzdChwcm9wKTtcbn07XG5cbmV4cG9ydCBjb25zdCBncm91cExpc3RlbmVycyA9IChsaXN0ZW5lcnM6IExpc3RlbmVyW10pOiBSZWFkb25seTxbc3RyaW5nLCBMaXN0ZW5lclsxXVtdXVtdPiA9PiB7XG4gIGlmIChsaXN0ZW5lcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEVNUFRZX0FSUkFZIGFzIGFueTtcbiAgfVxuICBpZiAobGlzdGVuZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IGxpc3RlbmVyID0gbGlzdGVuZXJzWzBdO1xuICAgIHJldHVybiBbW2xpc3RlbmVyWzBdLCBbbGlzdGVuZXJbMV1dXV07XG4gIH1cblxuICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGV2ZW50TmFtZSA9IGxpc3RlbmVyc1tpXVswXTtcbiAgICBpZiAoIWtleXMuaW5jbHVkZXMoZXZlbnROYW1lKSkge1xuICAgICAga2V5cy5wdXNoKGV2ZW50TmFtZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBrZXlzLm1hcCgoZXZlbnROYW1lKSA9PiB7XG4gICAgcmV0dXJuIFtldmVudE5hbWUsIGxpc3RlbmVycy5maWx0ZXIoKGwpID0+IGxbMF0gPT09IGV2ZW50TmFtZSkubWFwKChhKSA9PiBhWzFdKV07XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldEV2ZW50ID0gKFxuICBleGlzdGluZ0xpc3RlbmVyczogTGlzdGVuZXJbXSxcbiAgcHJvcDogc3RyaW5nLFxuICBpbnB1dDogYW55LFxuICBjb250YWluZXJFbDogRWxlbWVudCB8IHVuZGVmaW5lZFxuKSA9PiB7XG4gIGFzc2VydFRydWUocHJvcC5lbmRzV2l0aCgnJCcpLCAncmVuZGVyOiBldmVudCBwcm9wZXJ0eSBkb2VzIG5vdCBlbmQgd2l0aCAkJywgcHJvcCk7XG4gIHByb3AgPSBub3JtYWxpemVPblByb3AocHJvcC5zbGljZSgwLCAtMSkpO1xuICBpZiAoaW5wdXQpIHtcbiAgICBpZiAoaXNBcnJheShpbnB1dCkpIHtcbiAgICAgIGNvbnN0IHByb2Nlc3NlZCA9IGlucHV0XG4gICAgICAgIC5mbGF0KEluZmluaXR5KVxuICAgICAgICAuZmlsdGVyKChxKSA9PiBxICE9IG51bGwpXG4gICAgICAgIC5tYXAoKHEpID0+IFtwcm9wLCBlbnN1cmVRcmwocSwgY29udGFpbmVyRWwpXSBhcyBMaXN0ZW5lcik7XG4gICAgICBleGlzdGluZ0xpc3RlbmVycy5wdXNoKC4uLnByb2Nlc3NlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4aXN0aW5nTGlzdGVuZXJzLnB1c2goW3Byb3AsIGVuc3VyZVFybChpbnB1dCwgY29udGFpbmVyRWwpXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBwcm9wO1xufTtcblxuY29uc3QgUFJFRklYRVMgPSBbJ29uJywgJ3dpbmRvdzpvbicsICdkb2N1bWVudDpvbiddO1xuY29uc3QgU0NPUEVEID0gWydvbicsICdvbi13aW5kb3cnLCAnb24tZG9jdW1lbnQnXTtcblxuZXhwb3J0IGNvbnN0IG5vcm1hbGl6ZU9uUHJvcCA9IChwcm9wOiBzdHJpbmcpID0+IHtcbiAgbGV0IHNjb3BlID0gJ29uJztcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBQUkVGSVhFUy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHByZWZpeCA9IFBSRUZJWEVTW2ldO1xuICAgIGlmIChwcm9wLnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgc2NvcGUgPSBTQ09QRURbaV07XG4gICAgICBwcm9wID0gcHJvcC5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAocHJvcC5zdGFydHNXaXRoKCctJykpIHtcbiAgICBwcm9wID0gZnJvbUNhbWVsVG9LZWJhYkNhc2UocHJvcC5zbGljZSgxKSk7XG4gIH0gZWxzZSB7XG4gICAgcHJvcCA9IHByb3AudG9Mb3dlckNhc2UoKTtcbiAgfVxuICByZXR1cm4gc2NvcGUgKyAnOicgKyBwcm9wO1xufTtcblxuY29uc3QgZW5zdXJlUXJsID0gPFQgPSB1bmtub3duPih2YWx1ZTogYW55LCBjb250YWluZXJFbDogRWxlbWVudCB8IHVuZGVmaW5lZCkgPT4ge1xuICBpZiAocVNlcmlhbGl6ZSAmJiAhcVJ1bnRpbWVRcmwpIHtcbiAgICBhc3NlcnRRcmw8VD4odmFsdWUpO1xuICAgIHZhbHVlLiRzZXRDb250YWluZXIkKGNvbnRhaW5lckVsKTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgY29uc3QgcXJsID0gaXNRcmw8VD4odmFsdWUpID8gdmFsdWUgOiAoJCh2YWx1ZSkgYXMgUVJMSW50ZXJuYWw8VD4pO1xuICBxcmwuJHNldENvbnRhaW5lciQoY29udGFpbmVyRWwpO1xuICByZXR1cm4gcXJsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERvbUxpc3RlbmVycyA9IChlbEN0eDogUUNvbnRleHQsIGNvbnRhaW5lckVsOiBFbGVtZW50KTogTGlzdGVuZXJbXSA9PiB7XG4gIGNvbnN0IGF0dHJpYnV0ZXMgPSAoZWxDdHguJGVsZW1lbnQkIGFzIEVsZW1lbnQpLmF0dHJpYnV0ZXM7XG4gIGNvbnN0IGxpc3RlbmVyczogTGlzdGVuZXJbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB7IG5hbWUsIHZhbHVlIH0gPSBhdHRyaWJ1dGVzLml0ZW0oaSkhO1xuICAgIGlmIChcbiAgICAgIG5hbWUuc3RhcnRzV2l0aCgnb246JykgfHxcbiAgICAgIG5hbWUuc3RhcnRzV2l0aCgnb24td2luZG93OicpIHx8XG4gICAgICBuYW1lLnN0YXJ0c1dpdGgoJ29uLWRvY3VtZW50OicpXG4gICAgKSB7XG4gICAgICBjb25zdCB1cmxzID0gdmFsdWUuc3BsaXQoJ1xcbicpO1xuICAgICAgZm9yIChjb25zdCB1cmwgb2YgdXJscykge1xuICAgICAgICBjb25zdCBxcmwgPSBwYXJzZVFSTCh1cmwsIGNvbnRhaW5lckVsKSBhcyBMaXN0ZW5lclsxXTtcbiAgICAgICAgaWYgKHFybC4kY2FwdHVyZSQpIHtcbiAgICAgICAgICBpbmZsYXRlUXJsKHFybCwgZWxDdHgpO1xuICAgICAgICB9XG4gICAgICAgIGxpc3RlbmVycy5wdXNoKFtuYW1lLCBxcmxdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpc3RlbmVycztcbn07XG4iXX0=","export const hashCode = (text, hash = 0) => {\n    for (let i = 0; i < text.length; i++) {\n        const chr = text.charCodeAt(i);\n        hash = (hash << 5) - hash + chr;\n        hash |= 0; // Convert to 32bit integer\n    }\n    return Number(Math.abs(hash)).toString(36);\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaF9jb2RlLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3V0aWwvaGFzaF9jb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQVksRUFBRSxPQUFlLENBQUMsRUFBRSxFQUFFO0lBQ3pELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNoQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsMkJBQTJCO0lBQ3hDLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBoYXNoQ29kZSA9ICh0ZXh0OiBzdHJpbmcsIGhhc2g6IG51bWJlciA9IDApID0+IHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hyID0gdGV4dC5jaGFyQ29kZUF0KGkpO1xuICAgIGhhc2ggPSAoaGFzaCA8PCA1KSAtIGhhc2ggKyBjaHI7XG4gICAgaGFzaCB8PSAwOyAvLyBDb252ZXJ0IHRvIDMyYml0IGludGVnZXJcbiAgfVxuICByZXR1cm4gTnVtYmVyKE1hdGguYWJzKGhhc2gpKS50b1N0cmluZygzNik7XG59O1xuIl19","import { ComponentStylesPrefixContent } from '../util/markers';\nimport { hashCode } from '../util/hash_code';\nimport { assertQrl } from '../qrl/qrl-class';\nexport const styleKey = (qStyles, index) => {\n    assertQrl(qStyles);\n    return `${hashCode(qStyles.$hash$)}-${index}`;\n};\nexport const styleHost = (styleId) => {\n    return styleId;\n};\nexport const styleContent = (styleId) => {\n    return ComponentStylesPrefixContent + styleId;\n};\nexport const serializeSStyle = (scopeIds) => {\n    const value = scopeIds.join('|');\n    if (value.length > 0) {\n        return value;\n    }\n    return undefined;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXJsLXN0eWxlcy5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS9zdHlsZS9xcmwtc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFN0MsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBb0IsRUFBRSxLQUFhLEVBQVUsRUFBRTtJQUN0RSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkIsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7QUFDaEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBZSxFQUFVLEVBQUU7SUFDbkQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBZSxFQUFVLEVBQUU7SUFDdEQsT0FBTyw0QkFBNEIsR0FBRyxPQUFPLENBQUM7QUFDaEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsUUFBa0IsRUFBRSxFQUFFO0lBQ3BELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFN0eWxlc1ByZWZpeENvbnRlbnQgfSBmcm9tICcuLi91dGlsL21hcmtlcnMnO1xuaW1wb3J0IHsgaGFzaENvZGUgfSBmcm9tICcuLi91dGlsL2hhc2hfY29kZSc7XG5pbXBvcnQgdHlwZSB7IFFSTCB9IGZyb20gJy4uL3FybC9xcmwucHVibGljJztcbmltcG9ydCB7IGFzc2VydFFybCB9IGZyb20gJy4uL3FybC9xcmwtY2xhc3MnO1xuXG5leHBvcnQgY29uc3Qgc3R5bGVLZXkgPSAocVN0eWxlczogUVJMPHN0cmluZz4sIGluZGV4OiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICBhc3NlcnRRcmwocVN0eWxlcyk7XG4gIHJldHVybiBgJHtoYXNoQ29kZShxU3R5bGVzLiRoYXNoJCl9LSR7aW5kZXh9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBzdHlsZUhvc3QgPSAoc3R5bGVJZDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIHN0eWxlSWQ7XG59O1xuXG5leHBvcnQgY29uc3Qgc3R5bGVDb250ZW50ID0gKHN0eWxlSWQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBDb21wb25lbnRTdHlsZXNQcmVmaXhDb250ZW50ICsgc3R5bGVJZDtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXJpYWxpemVTU3R5bGUgPSAoc2NvcGVJZHM6IHN0cmluZ1tdKSA9PiB7XG4gIGNvbnN0IHZhbHVlID0gc2NvcGVJZHMuam9pbignfCcpO1xuICBpZiAodmFsdWUubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiJdfQ==","/**\n * QWIK_VERSION\n *\n * @public\n */\nexport const version = globalThis.QWIK_VERSION;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUksVUFBa0IsQ0FBQyxZQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBRV0lLX1ZFUlNJT05cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB2ZXJzaW9uID0gKGdsb2JhbFRoaXMgYXMgYW55KS5RV0lLX1ZFUlNJT04gYXMgc3RyaW5nO1xuIl19","import { verifySerializable } from '../state/common';\nimport { getContext } from '../state/context';\nimport { qDev, qSerialize } from '../util/qdev';\nimport { useInvokeContext } from './use-core';\n/**\n * @internal\n * The storage provider for hooks. Each invocation increases index i. Data is stored in an array.\n */\nexport const useSequentialScope = () => {\n    const iCtx = useInvokeContext();\n    const hostElement = iCtx.$hostElement$;\n    const elCtx = getContext(hostElement, iCtx.$renderCtx$.$static$.$containerState$);\n    const seq = (elCtx.$seq$ ||= []);\n    const i = iCtx.$i$++;\n    const set = (value) => {\n        if (qDev && qSerialize) {\n            verifySerializable(value);\n        }\n        return (seq[i] = value);\n    };\n    return {\n        val: seq[i],\n        set,\n        i,\n        iCtx,\n        elCtx,\n    };\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXNlcXVlbnRpYWwtc2NvcGUuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvdXNlL3VzZS1zZXF1ZW50aWFsLXNjb3BlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUE0QixnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQWF4RTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxHQUEwQixFQUFFO0lBQzVELE1BQU0sSUFBSSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUN2QyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbEYsTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUVyQixNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQVEsRUFBRSxFQUFFO1FBQ3ZCLElBQUksSUFBSSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ3ZCLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUMsQ0FBQztJQUVGLE9BQU87UUFDTCxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNYLEdBQUc7UUFDSCxDQUFDO1FBQ0QsSUFBSTtRQUNKLEtBQUs7S0FDTixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmVyaWZ5U2VyaWFsaXphYmxlIH0gZnJvbSAnLi4vc3RhdGUvY29tbW9uJztcbmltcG9ydCB7IGdldENvbnRleHQsIHR5cGUgUUNvbnRleHQgfSBmcm9tICcuLi9zdGF0ZS9jb250ZXh0JztcbmltcG9ydCB7IHFEZXYsIHFTZXJpYWxpemUgfSBmcm9tICcuLi91dGlsL3FkZXYnO1xuaW1wb3J0IHsgdHlwZSBSZW5kZXJJbnZva2VDb250ZXh0LCB1c2VJbnZva2VDb250ZXh0IH0gZnJvbSAnLi91c2UtY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VxdWVudGlhbFNjb3BlPFQ+IHtcbiAgLyoqIFRoZSBjdXJyZW50bHkgc3RvcmVkIGRhdGEgZm9yIHRoZSBob29rIHRoYXQgY2FsbHMgdGhpcyAqL1xuICByZWFkb25seSB2YWw6IFQgfCB1bmRlZmluZWQ7XG4gIC8qKiBTdG9yZSBuZXcgZGF0YSBmb3IgdGhlIGhvb2sgdGhhdCBjYWxscyB0aGlzICovXG4gIHJlYWRvbmx5IHNldDogKHY6IFQpID0+IFQ7XG4gIC8qKiBJbmRleCBvZiB0aGUgaG9vayAqL1xuICByZWFkb25seSBpOiBudW1iZXI7XG4gIHJlYWRvbmx5IGlDdHg6IFJlbmRlckludm9rZUNvbnRleHQ7XG4gIHJlYWRvbmx5IGVsQ3R4OiBRQ29udGV4dDtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIFRoZSBzdG9yYWdlIHByb3ZpZGVyIGZvciBob29rcy4gRWFjaCBpbnZvY2F0aW9uIGluY3JlYXNlcyBpbmRleCBpLiBEYXRhIGlzIHN0b3JlZCBpbiBhbiBhcnJheS5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZVNlcXVlbnRpYWxTY29wZSA9IDxUPigpOiBTZXF1ZW50aWFsU2NvcGU8VD4gPT4ge1xuICBjb25zdCBpQ3R4ID0gdXNlSW52b2tlQ29udGV4dCgpO1xuICBjb25zdCBob3N0RWxlbWVudCA9IGlDdHguJGhvc3RFbGVtZW50JDtcbiAgY29uc3QgZWxDdHggPSBnZXRDb250ZXh0KGhvc3RFbGVtZW50LCBpQ3R4LiRyZW5kZXJDdHgkLiRzdGF0aWMkLiRjb250YWluZXJTdGF0ZSQpO1xuICBjb25zdCBzZXEgPSAoZWxDdHguJHNlcSQgfHw9IFtdKTtcbiAgY29uc3QgaSA9IGlDdHguJGkkKys7XG5cbiAgY29uc3Qgc2V0ID0gKHZhbHVlOiBUKSA9PiB7XG4gICAgaWYgKHFEZXYgJiYgcVNlcmlhbGl6ZSkge1xuICAgICAgdmVyaWZ5U2VyaWFsaXphYmxlKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIChzZXFbaV0gPSB2YWx1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICB2YWw6IHNlcVtpXSxcbiAgICBzZXQsXG4gICAgaSxcbiAgICBpQ3R4LFxuICAgIGVsQ3R4LFxuICB9O1xufTtcbiJdfQ==","import { fromCamelToKebabCase } from '../util/case';\nimport { qError, QError_invalidContext, QError_notFoundContext } from '../error/error';\nimport { qDev, qSerialize } from '../util/qdev';\nimport { isObject } from '../util/types';\nimport { useSequentialScope } from './use-sequential-scope';\nimport { assertTrue } from '../error/assert';\nimport { verifySerializable } from '../state/common';\nimport { getContext } from '../state/context';\nimport { invoke } from './use-core';\nimport { getVirtualElement, } from '../render/dom/virtual-element';\nimport { isComment } from '../util/element';\nimport { Q_CTX, VIRTUAL_SYMBOL } from '../state/constants';\n// <docs markdown=\"../readme.md#createContextId\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#createContextId instead)\n/**\n * Create a context ID to be used in your application. The name should be written with no spaces.\n *\n * Context is a way to pass stores to the child components without prop-drilling.\n *\n * Use `createContextId()` to create a `ContextId`. A `ContextId` is just a serializable identifier\n * for the context. It is not the context value itself. See `useContextProvider()` and\n * `useContext()` for the values. Qwik needs a serializable ID for the context so that the it can\n * track context providers and consumers in a way that survives resumability.\n *\n * ### Example\n *\n * ```tsx\n * // Declare the Context type.\n * interface TodosStore {\n *   items: string[];\n * }\n * // Create a Context ID (no data is saved here.)\n * // You will use this ID to both create and retrieve the Context.\n * export const TodosContext = createContextId<TodosStore>('Todos');\n *\n * // Example of providing context to child components.\n * export const App = component$(() => {\n *   useContextProvider(\n *     TodosContext,\n *     useStore<TodosStore>({\n *       items: ['Learn Qwik', 'Build Qwik app', 'Profit'],\n *     })\n *   );\n *\n *   return <Items />;\n * });\n *\n * // Example of retrieving the context provided by a parent component.\n * export const Items = component$(() => {\n *   const todos = useContext(TodosContext);\n *   return (\n *     <ul>\n *       {todos.items.map((item) => (\n *         <li>{item}</li>\n *       ))}\n *     </ul>\n *   );\n * });\n *\n * ```\n *\n * @param name - The name of the context.\n * @public\n */\n// </docs>\nexport const createContextId = (name) => {\n    assertTrue(/^[\\w/.-]+$/.test(name), 'Context name must only contain A-Z,a-z,0-9, _', name);\n    return /*#__PURE__*/ Object.freeze({\n        id: fromCamelToKebabCase(name),\n    });\n};\n// <docs markdown=\"../readme.md#useContextProvider\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useContextProvider instead)\n/**\n * Assign a value to a Context.\n *\n * Use `useContextProvider()` to assign a value to a context. The assignment happens in the\n * component's function. Once assigned, use `useContext()` in any child component to retrieve the\n * value.\n *\n * Context is a way to pass stores to the child components without prop-drilling. Note that scalar\n * values are allowed, but for reactivity you need signals or stores.\n *\n * ### Example\n *\n * ```tsx\n * // Declare the Context type.\n * interface TodosStore {\n *   items: string[];\n * }\n * // Create a Context ID (no data is saved here.)\n * // You will use this ID to both create and retrieve the Context.\n * export const TodosContext = createContextId<TodosStore>('Todos');\n *\n * // Example of providing context to child components.\n * export const App = component$(() => {\n *   useContextProvider(\n *     TodosContext,\n *     useStore<TodosStore>({\n *       items: ['Learn Qwik', 'Build Qwik app', 'Profit'],\n *     })\n *   );\n *\n *   return <Items />;\n * });\n *\n * // Example of retrieving the context provided by a parent component.\n * export const Items = component$(() => {\n *   const todos = useContext(TodosContext);\n *   return (\n *     <ul>\n *       {todos.items.map((item) => (\n *         <li>{item}</li>\n *       ))}\n *     </ul>\n *   );\n * });\n *\n * ```\n *\n * @param context - The context to assign a value to.\n * @param value - The value to assign to the context.\n * @public\n */\n// </docs>\nexport const useContextProvider = (context, newValue) => {\n    const { val, set, elCtx } = useSequentialScope();\n    if (val !== undefined) {\n        return;\n    }\n    if (qDev) {\n        validateContext(context);\n    }\n    const contexts = (elCtx.$contexts$ ||= new Map());\n    if (qDev && qSerialize) {\n        verifySerializable(newValue);\n    }\n    contexts.set(context.id, newValue);\n    set(true);\n};\n// <docs markdown=\"../readme.md#useContext\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useContext instead)\n/**\n * Retrieve Context value.\n *\n * Use `useContext()` to retrieve the value of context in a component. To retrieve a value a parent\n * component needs to invoke `useContextProvider()` to assign a value.\n *\n * ### Example\n *\n * ```tsx\n * // Declare the Context type.\n * interface TodosStore {\n *   items: string[];\n * }\n * // Create a Context ID (no data is saved here.)\n * // You will use this ID to both create and retrieve the Context.\n * export const TodosContext = createContextId<TodosStore>('Todos');\n *\n * // Example of providing context to child components.\n * export const App = component$(() => {\n *   useContextProvider(\n *     TodosContext,\n *     useStore<TodosStore>({\n *       items: ['Learn Qwik', 'Build Qwik app', 'Profit'],\n *     })\n *   );\n *\n *   return <Items />;\n * });\n *\n * // Example of retrieving the context provided by a parent component.\n * export const Items = component$(() => {\n *   const todos = useContext(TodosContext);\n *   return (\n *     <ul>\n *       {todos.items.map((item) => (\n *         <li>{item}</li>\n *       ))}\n *     </ul>\n *   );\n * });\n *\n * ```\n *\n * @param context - The context to retrieve a value from.\n * @public\n */\n// </docs>\nexport const useContext = (context, defaultValue) => {\n    const { val, set, iCtx, elCtx } = useSequentialScope();\n    if (val !== undefined) {\n        return val;\n    }\n    if (qDev) {\n        validateContext(context);\n    }\n    const value = resolveContext(context, elCtx, iCtx.$renderCtx$.$static$.$containerState$);\n    if (typeof defaultValue === 'function') {\n        return set(invoke(undefined, defaultValue, value));\n    }\n    if (value !== undefined) {\n        return set(value);\n    }\n    if (defaultValue !== undefined) {\n        return set(defaultValue);\n    }\n    throw qError(QError_notFoundContext, context.id);\n};\n/** Find a wrapping Virtual component in the DOM */\nconst findParentCtx = (el, containerState) => {\n    let node = el;\n    let stack = 1;\n    while (node && !node.hasAttribute?.('q:container')) {\n        // Walk the siblings backwards, each comment might be the Virtual wrapper component\n        while ((node = node.previousSibling)) {\n            if (isComment(node)) {\n                const virtual = node[VIRTUAL_SYMBOL];\n                if (virtual) {\n                    const qtx = virtual[Q_CTX];\n                    if (node === virtual.open) {\n                        // We started inside this node so this is our parent\n                        return qtx ?? getContext(virtual, containerState);\n                    }\n                    // This is a sibling, check if it knows our parent\n                    if (qtx?.$parentCtx$) {\n                        return qtx.$parentCtx$;\n                    }\n                    // Skip over this entire virtual sibling\n                    node = virtual;\n                    continue;\n                }\n                if (node.data === '/qv') {\n                    stack++;\n                }\n                else if (node.data.startsWith('qv ')) {\n                    stack--;\n                    if (stack === 0) {\n                        return getContext(getVirtualElement(node), containerState);\n                    }\n                }\n            }\n        }\n        // No more siblings, walk up the DOM tree. The parent will never be a Virtual component.\n        node = el.parentElement;\n        el = node;\n    }\n    return null;\n};\nconst getParentProvider = (ctx, containerState) => {\n    // `null` means there's no parent, `undefined` means we don't know yet.\n    if (ctx.$parentCtx$ === undefined) {\n        // Not fully resumed container, find context from DOM\n        // We cannot recover $realParentCtx$ from this but that's fine because we don't need to pause on the client\n        ctx.$parentCtx$ = findParentCtx(ctx.$element$, containerState);\n    }\n    /**\n     * Note, the parentCtx is used during pause to to get the immediate parent, so we can't shortcut\n     * the search for $contexts$ here. If that turns out to be needed, it needs to be cached in a\n     * separate property.\n     */\n    return ctx.$parentCtx$;\n};\nexport const resolveContext = (context, hostCtx, containerState) => {\n    const contextID = context.id;\n    if (!hostCtx) {\n        return;\n    }\n    let ctx = hostCtx;\n    while (ctx) {\n        const found = ctx.$contexts$?.get(contextID);\n        if (found) {\n            return found;\n        }\n        ctx = getParentProvider(ctx, containerState);\n    }\n};\nexport const validateContext = (context) => {\n    if (!isObject(context) || typeof context.id !== 'string' || context.id.length === 0) {\n        throw qError(QError_invalidContext, context);\n    }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvdXNlL3VzZS1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBaUIsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFHTCxpQkFBaUIsR0FDbEIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQThEM0QsaURBQWlEO0FBQ2pELHlDQUF5QztBQUN6Qyw4Q0FBOEM7QUFDOUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpREc7QUFDSCxVQUFVO0FBQ1YsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQWtCLElBQVksRUFBb0IsRUFBRTtJQUNqRixVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENB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Q0FBQyxFQUFFLENBQUM7UUFDcEYsTUFBTSxNQUFNLENBQUMscUJBQXFCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21DYW1lbFRvS2ViYWJDYXNlIH0gZnJvbSAnLi4vdXRpbC9jYXNlJztcbmltcG9ydCB7IHFFcnJvciwgUUVycm9yX2ludmFsaWRDb250ZXh0LCBRRXJyb3Jfbm90Rm91bmRDb250ZXh0IH0gZnJvbSAnLi4vZXJyb3IvZXJyb3InO1xuaW1wb3J0IHsgcURldiwgcVNlcmlhbGl6ZSB9IGZyb20gJy4uL3V0aWwvcWRldic7XG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJy4uL3V0aWwvdHlwZXMnO1xuaW1wb3J0IHsgdXNlU2VxdWVudGlhbFNjb3BlIH0gZnJvbSAnLi91c2Utc2VxdWVudGlhbC1zY29wZSc7XG5pbXBvcnQgeyBhc3NlcnRUcnVlIH0gZnJvbSAnLi4vZXJyb3IvYXNzZXJ0JztcbmltcG9ydCB7IHZlcmlmeVNlcmlhbGl6YWJsZSB9IGZyb20gJy4uL3N0YXRlL2NvbW1vbic7XG5pbXBvcnQgeyBnZXRDb250ZXh0LCB0eXBlIFFDb250ZXh0IH0gZnJvbSAnLi4vc3RhdGUvY29udGV4dCc7XG5pbXBvcnQgdHlwZSB7IENvbnRhaW5lclN0YXRlIH0gZnJvbSAnLi4vY29udGFpbmVyL2NvbnRhaW5lcic7XG5pbXBvcnQgeyBpbnZva2UgfSBmcm9tICcuL3VzZS1jb3JlJztcbmltcG9ydCB7XG4gIHR5cGUgUXdpa0VsZW1lbnQsXG4gIHR5cGUgVmlydHVhbEVsZW1lbnQsXG4gIGdldFZpcnR1YWxFbGVtZW50LFxufSBmcm9tICcuLi9yZW5kZXIvZG9tL3ZpcnR1YWwtZWxlbWVudCc7XG5pbXBvcnQgeyBpc0NvbW1lbnQgfSBmcm9tICcuLi91dGlsL2VsZW1lbnQnO1xuaW1wb3J0IHsgUV9DVFgsIFZJUlRVQUxfU1lNQk9MIH0gZnJvbSAnLi4vc3RhdGUvY29uc3RhbnRzJztcblxuLy8gPGRvY3MgbWFya2Rvd249XCIuLi9yZWFkbWUubWQjQ29udGV4dElkXCI+XG4vLyAhIURPIE5PVCBFRElUIFRISVMgQ09NTUVOVCBESVJFQ1RMWSEhIVxuLy8gKGVkaXQgLi4vcmVhZG1lLm1kI0NvbnRleHRJZCBpbnN0ZWFkKVxuLyoqXG4gKiBDb250ZXh0SWQgaXMgYSB0eXBlc2FmZSBJRCBmb3IgeW91ciBjb250ZXh0LlxuICpcbiAqIENvbnRleHQgaXMgYSB3YXkgdG8gcGFzcyBzdG9yZXMgdG8gdGhlIGNoaWxkIGNvbXBvbmVudHMgd2l0aG91dCBwcm9wLWRyaWxsaW5nLlxuICpcbiAqIFVzZSBgY3JlYXRlQ29udGV4dElkKClgIHRvIGNyZWF0ZSBhIGBDb250ZXh0SWRgLiBBIGBDb250ZXh0SWRgIGlzIGp1c3QgYSBzZXJpYWxpemFibGUgaWRlbnRpZmllclxuICogZm9yIHRoZSBjb250ZXh0LiBJdCBpcyBub3QgdGhlIGNvbnRleHQgdmFsdWUgaXRzZWxmLiBTZWUgYHVzZUNvbnRleHRQcm92aWRlcigpYCBhbmRcbiAqIGB1c2VDb250ZXh0KClgIGZvciB0aGUgdmFsdWVzLiBRd2lrIG5lZWRzIGEgc2VyaWFsaXphYmxlIElEIGZvciB0aGUgY29udGV4dCBzbyB0aGF0IHRoZSBpdCBjYW5cbiAqIHRyYWNrIGNvbnRleHQgcHJvdmlkZXJzIGFuZCBjb25zdW1lcnMgaW4gYSB3YXkgdGhhdCBzdXJ2aXZlcyByZXN1bWFiaWxpdHkuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGB0c3hcbiAqIC8vIERlY2xhcmUgdGhlIENvbnRleHQgdHlwZS5cbiAqIGludGVyZmFjZSBUb2Rvc1N0b3JlIHtcbiAqICAgaXRlbXM6IHN0cmluZ1tdO1xuICogfVxuICogLy8gQ3JlYXRlIGEgQ29udGV4dCBJRCAobm8gZGF0YSBpcyBzYXZlZCBoZXJlLilcbiAqIC8vIFlvdSB3aWxsIHVzZSB0aGlzIElEIHRvIGJvdGggY3JlYXRlIGFuZCByZXRyaWV2ZSB0aGUgQ29udGV4dC5cbiAqIGV4cG9ydCBjb25zdCBUb2Rvc0NvbnRleHQgPSBjcmVhdGVDb250ZXh0SWQ8VG9kb3NTdG9yZT4oJ1RvZG9zJyk7XG4gKlxuICogLy8gRXhhbXBsZSBvZiBwcm92aWRpbmcgY29udGV4dCB0byBjaGlsZCBjb21wb25lbnRzLlxuICogZXhwb3J0IGNvbnN0IEFwcCA9IGNvbXBvbmVudCQoKCkgPT4ge1xuICogICB1c2VDb250ZXh0UHJvdmlkZXIoXG4gKiAgICAgVG9kb3NDb250ZXh0LFxuICogICAgIHVzZVN0b3JlPFRvZG9zU3RvcmU+KHtcbiAqICAgICAgIGl0ZW1zOiBbJ0xlYXJuIFF3aWsnLCAnQnVpbGQgUXdpayBhcHAnLCAnUHJvZml0J10sXG4gKiAgICAgfSlcbiAqICAgKTtcbiAqXG4gKiAgIHJldHVybiA8SXRlbXMgLz47XG4gKiB9KTtcbiAqXG4gKiAvLyBFeGFtcGxlIG9mIHJldHJpZXZpbmcgdGhlIGNvbnRleHQgcHJvdmlkZWQgYnkgYSBwYXJlbnQgY29tcG9uZW50LlxuICogZXhwb3J0IGNvbnN0IEl0ZW1zID0gY29tcG9uZW50JCgoKSA9PiB7XG4gKiAgIGNvbnN0IHRvZG9zID0gdXNlQ29udGV4dChUb2Rvc0NvbnRleHQpO1xuICogICByZXR1cm4gKFxuICogICAgIDx1bD5cbiAqICAgICAgIHt0b2Rvcy5pdGVtcy5tYXAoKGl0ZW0pID0+IChcbiAqICAgICAgICAgPGxpPntpdGVtfTwvbGk+XG4gKiAgICAgICApKX1cbiAqICAgICA8L3VsPlxuICogICApO1xuICogfSk7XG4gKlxuICogYGBgXG4gKlxuICogQHB1YmxpY1xuICovXG4vLyA8L2RvY3M+XG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRJZDxTVEFURT4ge1xuICAvKiogRGVzaWduLXRpbWUgcHJvcGVydHkgdG8gc3RvcmUgdHlwZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGNvbnRleHQuICovXG4gIHJlYWRvbmx5IF9fYnJhbmRfY29udGV4dF90eXBlX186IFNUQVRFO1xuICAvKiogQSB1bmlxdWUgSUQgZm9yIHRoZSBjb250ZXh0LiAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xufVxuXG4vLyA8ZG9jcyBtYXJrZG93bj1cIi4uL3JlYWRtZS5tZCNjcmVhdGVDb250ZXh0SWRcIj5cbi8vICEhRE8gTk9UIEVESVQgVEhJUyBDT01NRU5UIERJUkVDVExZISEhXG4vLyAoZWRpdCAuLi9yZWFkbWUubWQjY3JlYXRlQ29udGV4dElkIGluc3RlYWQpXG4vKipcbiAqIENyZWF0ZSBhIGNvbnRleHQgSUQgdG8gYmUgdXNlZCBpbiB5b3VyIGFwcGxpY2F0aW9uLiBUaGUgbmFtZSBzaG91bGQgYmUgd3JpdHRlbiB3aXRoIG5vIHNwYWNlcy5cbiAqXG4gKiBDb250ZXh0IGlzIGEgd2F5IHRvIHBhc3Mgc3RvcmVzIHRvIHRoZSBjaGlsZCBjb21wb25lbnRzIHdpdGhvdXQgcHJvcC1kcmlsbGluZy5cbiAqXG4gKiBVc2UgYGNyZWF0ZUNvbnRleHRJZCgpYCB0byBjcmVhdGUgYSBgQ29udGV4dElkYC4gQSBgQ29udGV4dElkYCBpcyBqdXN0IGEgc2VyaWFsaXphYmxlIGlkZW50aWZpZXJcbiAqIGZvciB0aGUgY29udGV4dC4gSXQgaXMgbm90IHRoZSBjb250ZXh0IHZhbHVlIGl0c2VsZi4gU2VlIGB1c2VDb250ZXh0UHJvdmlkZXIoKWAgYW5kXG4gKiBgdXNlQ29udGV4dCgpYCBmb3IgdGhlIHZhbHVlcy4gUXdpayBuZWVkcyBhIHNlcmlhbGl6YWJsZSBJRCBmb3IgdGhlIGNvbnRleHQgc28gdGhhdCB0aGUgaXQgY2FuXG4gKiB0cmFjayBjb250ZXh0IHByb3ZpZGVycyBhbmQgY29uc3VtZXJzIGluIGEgd2F5IHRoYXQgc3Vydml2ZXMgcmVzdW1hYmlsaXR5LlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgdHN4XG4gKiAvLyBEZWNsYXJlIHRoZSBDb250ZXh0IHR5cGUuXG4gKiBpbnRlcmZhY2UgVG9kb3NTdG9yZSB7XG4gKiAgIGl0ZW1zOiBzdHJpbmdbXTtcbiAqIH1cbiAqIC8vIENyZWF0ZSBhIENvbnRleHQgSUQgKG5vIGRhdGEgaXMgc2F2ZWQgaGVyZS4pXG4gKiAvLyBZb3Ugd2lsbCB1c2UgdGhpcyBJRCB0byBib3RoIGNyZWF0ZSBhbmQgcmV0cmlldmUgdGhlIENvbnRleHQuXG4gKiBleHBvcnQgY29uc3QgVG9kb3NDb250ZXh0ID0gY3JlYXRlQ29udGV4dElkPFRvZG9zU3RvcmU+KCdUb2RvcycpO1xuICpcbiAqIC8vIEV4YW1wbGUgb2YgcHJvdmlkaW5nIGNvbnRleHQgdG8gY2hpbGQgY29tcG9uZW50cy5cbiAqIGV4cG9ydCBjb25zdCBBcHAgPSBjb21wb25lbnQkKCgpID0+IHtcbiAqICAgdXNlQ29udGV4dFByb3ZpZGVyKFxuICogICAgIFRvZG9zQ29udGV4dCxcbiAqICAgICB1c2VTdG9yZTxUb2Rvc1N0b3JlPih7XG4gKiAgICAgICBpdGVtczogWydMZWFybiBRd2lrJywgJ0J1aWxkIFF3aWsgYXBwJywgJ1Byb2ZpdCddLFxuICogICAgIH0pXG4gKiAgICk7XG4gKlxuICogICByZXR1cm4gPEl0ZW1zIC8+O1xuICogfSk7XG4gKlxuICogLy8gRXhhbXBsZSBvZiByZXRyaWV2aW5nIHRoZSBjb250ZXh0IHByb3ZpZGVkIGJ5IGEgcGFyZW50IGNvbXBvbmVudC5cbiAqIGV4cG9ydCBjb25zdCBJdGVtcyA9IGNvbXBvbmVudCQoKCkgPT4ge1xuICogICBjb25zdCB0b2RvcyA9IHVzZUNvbnRleHQoVG9kb3NDb250ZXh0KTtcbiAqICAgcmV0dXJuIChcbiAqICAgICA8dWw+XG4gKiAgICAgICB7dG9kb3MuaXRlbXMubWFwKChpdGVtKSA9PiAoXG4gKiAgICAgICAgIDxsaT57aXRlbX08L2xpPlxuICogICAgICAgKSl9XG4gKiAgICAgPC91bD5cbiAqICAgKTtcbiAqIH0pO1xuICpcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGNvbnRleHQuXG4gKiBAcHVibGljXG4gKi9cbi8vIDwvZG9jcz5cbmV4cG9ydCBjb25zdCBjcmVhdGVDb250ZXh0SWQgPSA8U1RBVEUgPSB1bmtub3duPihuYW1lOiBzdHJpbmcpOiBDb250ZXh0SWQ8U1RBVEU+ID0+IHtcbiAgYXNzZXJ0VHJ1ZSgvXltcXHcvLi1dKyQvLnRlc3QobmFtZSksICdDb250ZXh0IG5hbWUgbXVzdCBvbmx5IGNvbnRhaW4gQS1aLGEteiwwLTksIF8nLCBuYW1lKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi8gT2JqZWN0LmZyZWV6ZSh7XG4gICAgaWQ6IGZyb21DYW1lbFRvS2ViYWJDYXNlKG5hbWUpLFxuICB9IGFzIGFueSk7XG59O1xuXG4vLyA8ZG9jcyBtYXJrZG93bj1cIi4uL3JlYWRtZS5tZCN1c2VDb250ZXh0UHJvdmlkZXJcIj5cbi8vICEhRE8gTk9UIEVESVQgVEhJUyBDT01NRU5UIERJUkVDVExZISEhXG4vLyAoZWRpdCAuLi9yZWFkbWUubWQjdXNlQ29udGV4dFByb3ZpZGVyIGluc3RlYWQpXG4vKipcbiAqIEFzc2lnbiBhIHZhbHVlIHRvIGEgQ29udGV4dC5cbiAqXG4gKiBVc2UgYHVzZUNvbnRleHRQcm92aWRlcigpYCB0byBhc3NpZ24gYSB2YWx1ZSB0byBhIGNvbnRleHQuIFRoZSBhc3NpZ25tZW50IGhhcHBlbnMgaW4gdGhlXG4gKiBjb21wb25lbnQncyBmdW5jdGlvbi4gT25jZSBhc3NpZ25lZCwgdXNlIGB1c2VDb250ZXh0KClgIGluIGFueSBjaGlsZCBjb21wb25lbnQgdG8gcmV0cmlldmUgdGhlXG4gKiB2YWx1ZS5cbiAqXG4gKiBDb250ZXh0IGlzIGEgd2F5IHRvIHBhc3Mgc3RvcmVzIHRvIHRoZSBjaGlsZCBjb21wb25lbnRzIHdpdGhvdXQgcHJvcC1kcmlsbGluZy4gTm90ZSB0aGF0IHNjYWxhclxuICogdmFsdWVzIGFyZSBhbGxvd2VkLCBidXQgZm9yIHJlYWN0aXZpdHkgeW91IG5lZWQgc2lnbmFscyBvciBzdG9yZXMuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGB0c3hcbiAqIC8vIERlY2xhcmUgdGhlIENvbnRleHQgdHlwZS5cbiAqIGludGVyZmFjZSBUb2Rvc1N0b3JlIHtcbiAqICAgaXRlbXM6IHN0cmluZ1tdO1xuICogfVxuICogLy8gQ3JlYXRlIGEgQ29udGV4dCBJRCAobm8gZGF0YSBpcyBzYXZlZCBoZXJlLilcbiAqIC8vIFlvdSB3aWxsIHVzZSB0aGlzIElEIHRvIGJvdGggY3JlYXRlIGFuZCByZXRyaWV2ZSB0aGUgQ29udGV4dC5cbiAqIGV4cG9ydCBjb25zdCBUb2Rvc0NvbnRleHQgPSBjcmVhdGVDb250ZXh0SWQ8VG9kb3NTdG9yZT4oJ1RvZG9zJyk7XG4gKlxuICogLy8gRXhhbXBsZSBvZiBwcm92aWRpbmcgY29udGV4dCB0byBjaGlsZCBjb21wb25lbnRzLlxuICogZXhwb3J0IGNvbnN0IEFwcCA9IGNvbXBvbmVudCQoKCkgPT4ge1xuICogICB1c2VDb250ZXh0UHJvdmlkZXIoXG4gKiAgICAgVG9kb3NDb250ZXh0LFxuICogICAgIHVzZVN0b3JlPFRvZG9zU3RvcmU+KHtcbiAqICAgICAgIGl0ZW1zOiBbJ0xlYXJuIFF3aWsnLCAnQnVpbGQgUXdpayBhcHAnLCAnUHJvZml0J10sXG4gKiAgICAgfSlcbiAqICAgKTtcbiAqXG4gKiAgIHJldHVybiA8SXRlbXMgLz47XG4gKiB9KTtcbiAqXG4gKiAvLyBFeGFtcGxlIG9mIHJldHJpZXZpbmcgdGhlIGNvbnRleHQgcHJvdmlkZWQgYnkgYSBwYXJlbnQgY29tcG9uZW50LlxuICogZXhwb3J0IGNvbnN0IEl0ZW1zID0gY29tcG9uZW50JCgoKSA9PiB7XG4gKiAgIGNvbnN0IHRvZG9zID0gdXNlQ29udGV4dChUb2Rvc0NvbnRleHQpO1xuICogICByZXR1cm4gKFxuICogICAgIDx1bD5cbiAqICAgICAgIHt0b2Rvcy5pdGVtcy5tYXAoKGl0ZW0pID0+IChcbiAqICAgICAgICAgPGxpPntpdGVtfTwvbGk+XG4gKiAgICAgICApKX1cbiAqICAgICA8L3VsPlxuICogICApO1xuICogfSk7XG4gKlxuICogYGBgXG4gKlxuICogQHBhcmFtIGNvbnRleHQgLSBUaGUgY29udGV4dCB0byBhc3NpZ24gYSB2YWx1ZSB0by5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBhc3NpZ24gdG8gdGhlIGNvbnRleHQuXG4gKiBAcHVibGljXG4gKi9cbi8vIDwvZG9jcz5cbmV4cG9ydCBjb25zdCB1c2VDb250ZXh0UHJvdmlkZXIgPSA8U1RBVEU+KGNvbnRleHQ6IENvbnRleHRJZDxTVEFURT4sIG5ld1ZhbHVlOiBTVEFURSkgPT4ge1xuICBjb25zdCB7IHZhbCwgc2V0LCBlbEN0eCB9ID0gdXNlU2VxdWVudGlhbFNjb3BlPGJvb2xlYW4+KCk7XG4gIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAocURldikge1xuICAgIHZhbGlkYXRlQ29udGV4dChjb250ZXh0KTtcbiAgfVxuICBjb25zdCBjb250ZXh0cyA9IChlbEN0eC4kY29udGV4dHMkIHx8PSBuZXcgTWFwKCkpO1xuICBpZiAocURldiAmJiBxU2VyaWFsaXplKSB7XG4gICAgdmVyaWZ5U2VyaWFsaXphYmxlKG5ld1ZhbHVlKTtcbiAgfVxuICBjb250ZXh0cy5zZXQoY29udGV4dC5pZCwgbmV3VmFsdWUpO1xuICBzZXQodHJ1ZSk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUNvbnRleHQge1xuICA8U1RBVEUsIFQ+KGNvbnRleHQ6IENvbnRleHRJZDxTVEFURT4sIHRyYW5zZm9ybWVyOiAodmFsdWU6IFNUQVRFKSA9PiBUKTogVDtcbiAgPFNUQVRFLCBUPihjb250ZXh0OiBDb250ZXh0SWQ8U1RBVEU+LCBkZWZhdWx0VmFsdWU6IFQpOiBTVEFURSB8IFQ7XG4gIDxTVEFURT4oY29udGV4dDogQ29udGV4dElkPFNUQVRFPik6IFNUQVRFO1xufVxuXG4vLyA8ZG9jcyBtYXJrZG93bj1cIi4uL3JlYWRtZS5tZCN1c2VDb250ZXh0XCI+XG4vLyAhIURPIE5PVCBFRElUIFRISVMgQ09NTUVOVCBESVJFQ1RMWSEhIVxuLy8gKGVkaXQgLi4vcmVhZG1lLm1kI3VzZUNvbnRleHQgaW5zdGVhZClcbi8qKlxuICogUmV0cmlldmUgQ29udGV4dCB2YWx1ZS5cbiAqXG4gKiBVc2UgYHVzZUNvbnRleHQoKWAgdG8gcmV0cmlldmUgdGhlIHZhbHVlIG9mIGNvbnRleHQgaW4gYSBjb21wb25lbnQuIFRvIHJldHJpZXZlIGEgdmFsdWUgYSBwYXJlbnRcbiAqIGNvbXBvbmVudCBuZWVkcyB0byBpbnZva2UgYHVzZUNvbnRleHRQcm92aWRlcigpYCB0byBhc3NpZ24gYSB2YWx1ZS5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYHRzeFxuICogLy8gRGVjbGFyZSB0aGUgQ29udGV4dCB0eXBlLlxuICogaW50ZXJmYWNlIFRvZG9zU3RvcmUge1xuICogICBpdGVtczogc3RyaW5nW107XG4gKiB9XG4gKiAvLyBDcmVhdGUgYSBDb250ZXh0IElEIChubyBkYXRhIGlzIHNhdmVkIGhlcmUuKVxuICogLy8gWW91IHdpbGwgdXNlIHRoaXMgSUQgdG8gYm90aCBjcmVhdGUgYW5kIHJldHJpZXZlIHRoZSBDb250ZXh0LlxuICogZXhwb3J0IGNvbnN0IFRvZG9zQ29udGV4dCA9IGNyZWF0ZUNvbnRleHRJZDxUb2Rvc1N0b3JlPignVG9kb3MnKTtcbiAqXG4gKiAvLyBFeGFtcGxlIG9mIHByb3ZpZGluZyBjb250ZXh0IHRvIGNoaWxkIGNvbXBvbmVudHMuXG4gKiBleHBvcnQgY29uc3QgQXBwID0gY29tcG9uZW50JCgoKSA9PiB7XG4gKiAgIHVzZUNvbnRleHRQcm92aWRlcihcbiAqICAgICBUb2Rvc0NvbnRleHQsXG4gKiAgICAgdXNlU3RvcmU8VG9kb3NTdG9yZT4oe1xuICogICAgICAgaXRlbXM6IFsnTGVhcm4gUXdpaycsICdCdWlsZCBRd2lrIGFwcCcsICdQcm9maXQnXSxcbiAqICAgICB9KVxuICogICApO1xuICpcbiAqICAgcmV0dXJuIDxJdGVtcyAvPjtcbiAqIH0pO1xuICpcbiAqIC8vIEV4YW1wbGUgb2YgcmV0cmlldmluZyB0aGUgY29udGV4dCBwcm92aWRlZCBieSBhIHBhcmVudCBjb21wb25lbnQuXG4gKiBleHBvcnQgY29uc3QgSXRlbXMgPSBjb21wb25lbnQkKCgpID0+IHtcbiAqICAgY29uc3QgdG9kb3MgPSB1c2VDb250ZXh0KFRvZG9zQ29udGV4dCk7XG4gKiAgIHJldHVybiAoXG4gKiAgICAgPHVsPlxuICogICAgICAge3RvZG9zLml0ZW1zLm1hcCgoaXRlbSkgPT4gKFxuICogICAgICAgICA8bGk+e2l0ZW19PC9saT5cbiAqICAgICAgICkpfVxuICogICAgIDwvdWw+XG4gKiAgICk7XG4gKiB9KTtcbiAqXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gY29udGV4dCAtIFRoZSBjb250ZXh0IHRvIHJldHJpZXZlIGEgdmFsdWUgZnJvbS5cbiAqIEBwdWJsaWNcbiAqL1xuLy8gPC9kb2NzPlxuZXhwb3J0IGNvbnN0IHVzZUNvbnRleHQ6IFVzZUNvbnRleHQgPSA8U1RBVEU+KFxuICBjb250ZXh0OiBDb250ZXh0SWQ8U1RBVEU+LFxuICBkZWZhdWx0VmFsdWU/OiBTVEFURSB8ICgoY3VycmVudDogU1RBVEUgfCB1bmRlZmluZWQpID0+IFNUQVRFKVxuKSA9PiB7XG4gIGNvbnN0IHsgdmFsLCBzZXQsIGlDdHgsIGVsQ3R4IH0gPSB1c2VTZXF1ZW50aWFsU2NvcGU8U1RBVEU+KCk7XG4gIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cbiAgaWYgKHFEZXYpIHtcbiAgICB2YWxpZGF0ZUNvbnRleHQoY29udGV4dCk7XG4gIH1cblxuICBjb25zdCB2YWx1ZSA9IHJlc29sdmVDb250ZXh0KGNvbnRleHQsIGVsQ3R4LCBpQ3R4LiRyZW5kZXJDdHgkLiRzdGF0aWMkLiRjb250YWluZXJTdGF0ZSQpO1xuICBpZiAodHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBzZXQoaW52b2tlKHVuZGVmaW5lZCwgZGVmYXVsdFZhbHVlIGFzIGFueSwgdmFsdWUpKTtcbiAgfVxuICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBzZXQodmFsdWUpO1xuICB9XG4gIGlmIChkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBzZXQoZGVmYXVsdFZhbHVlKTtcbiAgfVxuICB0aHJvdyBxRXJyb3IoUUVycm9yX25vdEZvdW5kQ29udGV4dCwgY29udGV4dC5pZCk7XG59O1xuXG4vKiogRmluZCBhIHdyYXBwaW5nIFZpcnR1YWwgY29tcG9uZW50IGluIHRoZSBET00gKi9cbmNvbnN0IGZpbmRQYXJlbnRDdHggPSAoZWw6IFF3aWtFbGVtZW50IHwgbnVsbCwgY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlKSA9PiB7XG4gIGxldCBub2RlID0gZWw7XG4gIGxldCBzdGFjayA9IDE7XG4gIHdoaWxlIChub2RlICYmICFub2RlLmhhc0F0dHJpYnV0ZT8uKCdxOmNvbnRhaW5lcicpKSB7XG4gICAgLy8gV2FsayB0aGUgc2libGluZ3MgYmFja3dhcmRzLCBlYWNoIGNvbW1lbnQgbWlnaHQgYmUgdGhlIFZpcnR1YWwgd3JhcHBlciBjb21wb25lbnRcbiAgICB3aGlsZSAoKG5vZGUgPSBub2RlLnByZXZpb3VzU2libGluZyBhcyBRd2lrRWxlbWVudCB8IG51bGwpKSB7XG4gICAgICBpZiAoaXNDb21tZW50KG5vZGUpKSB7XG4gICAgICAgIGNvbnN0IHZpcnR1YWwgPSAobm9kZSBhcyBhbnkpW1ZJUlRVQUxfU1lNQk9MXSBhcyBWaXJ0dWFsRWxlbWVudDtcbiAgICAgICAgaWYgKHZpcnR1YWwpIHtcbiAgICAgICAgICBjb25zdCBxdHggPSAodmlydHVhbCBhcyBhbnkpW1FfQ1RYXSBhcyBRQ29udGV4dCB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBpZiAobm9kZSA9PT0gdmlydHVhbC5vcGVuKSB7XG4gICAgICAgICAgICAvLyBXZSBzdGFydGVkIGluc2lkZSB0aGlzIG5vZGUgc28gdGhpcyBpcyBvdXIgcGFyZW50XG4gICAgICAgICAgICByZXR1cm4gcXR4ID8/IGdldENvbnRleHQodmlydHVhbCwgY29udGFpbmVyU3RhdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBUaGlzIGlzIGEgc2libGluZywgY2hlY2sgaWYgaXQga25vd3Mgb3VyIHBhcmVudFxuICAgICAgICAgIGlmIChxdHg/LiRwYXJlbnRDdHgkKSB7XG4gICAgICAgICAgICByZXR1cm4gcXR4LiRwYXJlbnRDdHgkO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTa2lwIG92ZXIgdGhpcyBlbnRpcmUgdmlydHVhbCBzaWJsaW5nXG4gICAgICAgICAgbm9kZSA9IHZpcnR1YWw7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuZGF0YSA9PT0gJy9xdicpIHtcbiAgICAgICAgICBzdGFjaysrO1xuICAgICAgICB9IGVsc2UgaWYgKG5vZGUuZGF0YS5zdGFydHNXaXRoKCdxdiAnKSkge1xuICAgICAgICAgIHN0YWNrLS07XG4gICAgICAgICAgaWYgKHN0YWNrID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q29udGV4dChnZXRWaXJ0dWFsRWxlbWVudChub2RlKSEsIGNvbnRhaW5lclN0YXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gTm8gbW9yZSBzaWJsaW5ncywgd2FsayB1cCB0aGUgRE9NIHRyZWUuIFRoZSBwYXJlbnQgd2lsbCBuZXZlciBiZSBhIFZpcnR1YWwgY29tcG9uZW50LlxuICAgIG5vZGUgPSBlbCEucGFyZW50RWxlbWVudDtcbiAgICBlbCA9IG5vZGU7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBnZXRQYXJlbnRQcm92aWRlciA9IChjdHg6IFFDb250ZXh0LCBjb250YWluZXJTdGF0ZTogQ29udGFpbmVyU3RhdGUpOiBRQ29udGV4dCB8IG51bGwgPT4ge1xuICAvLyBgbnVsbGAgbWVhbnMgdGhlcmUncyBubyBwYXJlbnQsIGB1bmRlZmluZWRgIG1lYW5zIHdlIGRvbid0IGtub3cgeWV0LlxuICBpZiAoY3R4LiRwYXJlbnRDdHgkID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBOb3QgZnVsbHkgcmVzdW1lZCBjb250YWluZXIsIGZpbmQgY29udGV4dCBmcm9tIERPTVxuICAgIC8vIFdlIGNhbm5vdCByZWNvdmVyICRyZWFsUGFyZW50Q3R4JCBmcm9tIHRoaXMgYnV0IHRoYXQncyBmaW5lIGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCB0byBwYXVzZSBvbiB0aGUgY2xpZW50XG4gICAgY3R4LiRwYXJlbnRDdHgkID0gZmluZFBhcmVudEN0eChjdHguJGVsZW1lbnQkLCBjb250YWluZXJTdGF0ZSk7XG4gIH1cbiAgLyoqXG4gICAqIE5vdGUsIHRoZSBwYXJlbnRDdHggaXMgdXNlZCBkdXJpbmcgcGF1c2UgdG8gdG8gZ2V0IHRoZSBpbW1lZGlhdGUgcGFyZW50LCBzbyB3ZSBjYW4ndCBzaG9ydGN1dFxuICAgKiB0aGUgc2VhcmNoIGZvciAkY29udGV4dHMkIGhlcmUuIElmIHRoYXQgdHVybnMgb3V0IHRvIGJlIG5lZWRlZCwgaXQgbmVlZHMgdG8gYmUgY2FjaGVkIGluIGFcbiAgICogc2VwYXJhdGUgcHJvcGVydHkuXG4gICAqL1xuICByZXR1cm4gY3R4LiRwYXJlbnRDdHgkO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVDb250ZXh0ID0gPFNUQVRFPihcbiAgY29udGV4dDogQ29udGV4dElkPFNUQVRFPixcbiAgaG9zdEN0eDogUUNvbnRleHQsXG4gIGNvbnRhaW5lclN0YXRlOiBDb250YWluZXJTdGF0ZVxuKTogU1RBVEUgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBjb250ZXh0SUQgPSBjb250ZXh0LmlkO1xuICBpZiAoIWhvc3RDdHgpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IGN0eCA9IGhvc3RDdHg7XG4gIHdoaWxlIChjdHgpIHtcbiAgICBjb25zdCBmb3VuZCA9IGN0eC4kY29udGV4dHMkPy5nZXQoY29udGV4dElEKTtcbiAgICBpZiAoZm91bmQpIHtcbiAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9XG4gICAgY3R4ID0gZ2V0UGFyZW50UHJvdmlkZXIoY3R4LCBjb250YWluZXJTdGF0ZSkhO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVDb250ZXh0ID0gKGNvbnRleHQ6IENvbnRleHRJZDxhbnk+KSA9PiB7XG4gIGlmICghaXNPYmplY3QoY29udGV4dCkgfHwgdHlwZW9mIGNvbnRleHQuaWQgIT09ICdzdHJpbmcnIHx8IGNvbnRleHQuaWQubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgcUVycm9yKFFFcnJvcl9pbnZhbGlkQ29udGV4dCwgY29udGV4dCk7XG4gIH1cbn07XG4iXX0=","import { isServerPlatform } from '../platform/platform';\nimport { tryGetContext } from '../state/context';\nimport { createContextId, resolveContext } from '../use/use-context';\nimport { isVirtualElement } from '../util/element';\nimport { qDev } from '../util/qdev';\nexport const ERROR_CONTEXT = /*#__PURE__*/ createContextId('qk-error');\nexport const handleError = (err, hostElement, rCtx) => {\n    const elCtx = tryGetContext(hostElement);\n    if (qDev) {\n        // Clean vdom\n        if (!isServerPlatform() && typeof document !== 'undefined' && isVirtualElement(hostElement)) {\n            // (hostElement as any).$vdom$ = null;\n            elCtx.$vdom$ = null;\n            const errorDiv = document.createElement('errored-host');\n            if (err && err instanceof Error) {\n                errorDiv.props = { error: err };\n            }\n            errorDiv.setAttribute('q:key', '_error_');\n            errorDiv.append(...hostElement.childNodes);\n            hostElement.appendChild(errorDiv);\n        }\n        if (err && err instanceof Error) {\n            if (!('hostElement' in err)) {\n                err['hostElement'] = hostElement;\n            }\n        }\n        if (!isRecoverable(err)) {\n            throw err;\n        }\n    }\n    if (isServerPlatform()) {\n        throw err;\n    }\n    else {\n        const errorStore = resolveContext(ERROR_CONTEXT, elCtx, rCtx.$static$.$containerState$);\n        if (errorStore === undefined) {\n            throw err;\n        }\n        errorStore.error = err;\n    }\n};\nconst isRecoverable = (err) => {\n    if (err && err instanceof Error) {\n        if ('plugin' in err) {\n            return false;\n        }\n    }\n    return true;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxpbmcuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvcmVuZGVyL2Vycm9yLWhhbmRsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFTcEMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxlQUFlLENBQXFCLFVBQVUsQ0FBQyxDQUFDO0FBRTNGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQVEsRUFBRSxXQUF3QixFQUFFLElBQW1CLEVBQUUsRUFBRTtJQUNyRixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFFLENBQUM7SUFDMUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNULGFBQWE7UUFDYixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLElBQUksZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM1RixzQ0FBc0M7WUFDdEMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDcEIsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN4RCxJQUFJLEdBQUcsSUFBSSxHQUFHLFlBQVksS0FBSyxFQUFFLENBQUM7Z0JBQy9CLFFBQWdCLENBQUMsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQzNDLENBQUM7WUFDRCxRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMxQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzNDLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVELElBQUksR0FBRyxJQUFJLEdBQUcsWUFBWSxLQUFLLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsR0FBVyxDQUFDLGFBQWEsQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUM1QyxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QixNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7UUFDdkIsTUFBTSxHQUFHLENBQUM7SUFDWixDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4RixJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM3QixNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7UUFDRCxVQUFVLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUN6QixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFRLEVBQUUsRUFBRTtJQUNqQyxJQUFJLEdBQUcsSUFBSSxHQUFHLFlBQVksS0FBSyxFQUFFLENBQUM7UUFDaEMsSUFBSSxRQUFRLElBQUksR0FBRyxFQUFFLENBQUM7WUFDcEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTZXJ2ZXJQbGF0Zm9ybSB9IGZyb20gJy4uL3BsYXRmb3JtL3BsYXRmb3JtJztcbmltcG9ydCB7IHRyeUdldENvbnRleHQgfSBmcm9tICcuLi9zdGF0ZS9jb250ZXh0JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHRJZCwgcmVzb2x2ZUNvbnRleHQgfSBmcm9tICcuLi91c2UvdXNlLWNvbnRleHQnO1xuaW1wb3J0IHsgaXNWaXJ0dWFsRWxlbWVudCB9IGZyb20gJy4uL3V0aWwvZWxlbWVudCc7XG5pbXBvcnQgeyBxRGV2IH0gZnJvbSAnLi4vdXRpbC9xZGV2JztcbmltcG9ydCB0eXBlIHsgUXdpa0VsZW1lbnQgfSBmcm9tICcuL2RvbS92aXJ0dWFsLWVsZW1lbnQnO1xuaW1wb3J0IHR5cGUgeyBSZW5kZXJDb250ZXh0IH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKiBAcHVibGljICovXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yQm91bmRhcnlTdG9yZSB7XG4gIGVycm9yOiBhbnkgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjb25zdCBFUlJPUl9DT05URVhUID0gLyojX19QVVJFX18qLyBjcmVhdGVDb250ZXh0SWQ8RXJyb3JCb3VuZGFyeVN0b3JlPigncWstZXJyb3InKTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUVycm9yID0gKGVycjogYW55LCBob3N0RWxlbWVudDogUXdpa0VsZW1lbnQsIHJDdHg6IFJlbmRlckNvbnRleHQpID0+IHtcbiAgY29uc3QgZWxDdHggPSB0cnlHZXRDb250ZXh0KGhvc3RFbGVtZW50KSE7XG4gIGlmIChxRGV2KSB7XG4gICAgLy8gQ2xlYW4gdmRvbVxuICAgIGlmICghaXNTZXJ2ZXJQbGF0Zm9ybSgpICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNWaXJ0dWFsRWxlbWVudChob3N0RWxlbWVudCkpIHtcbiAgICAgIC8vIChob3N0RWxlbWVudCBhcyBhbnkpLiR2ZG9tJCA9IG51bGw7XG4gICAgICBlbEN0eC4kdmRvbSQgPSBudWxsO1xuICAgICAgY29uc3QgZXJyb3JEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdlcnJvcmVkLWhvc3QnKTtcbiAgICAgIGlmIChlcnIgJiYgZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgKGVycm9yRGl2IGFzIGFueSkucHJvcHMgPSB7IGVycm9yOiBlcnIgfTtcbiAgICAgIH1cbiAgICAgIGVycm9yRGl2LnNldEF0dHJpYnV0ZSgncTprZXknLCAnX2Vycm9yXycpO1xuICAgICAgZXJyb3JEaXYuYXBwZW5kKC4uLmhvc3RFbGVtZW50LmNoaWxkTm9kZXMpO1xuICAgICAgaG9zdEVsZW1lbnQuYXBwZW5kQ2hpbGQoZXJyb3JEaXYpO1xuICAgIH1cblxuICAgIGlmIChlcnIgJiYgZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGlmICghKCdob3N0RWxlbWVudCcgaW4gZXJyKSkge1xuICAgICAgICAoZXJyIGFzIGFueSlbJ2hvc3RFbGVtZW50J10gPSBob3N0RWxlbWVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFpc1JlY292ZXJhYmxlKGVycikpIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cbiAgaWYgKGlzU2VydmVyUGxhdGZvcm0oKSkge1xuICAgIHRocm93IGVycjtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBlcnJvclN0b3JlID0gcmVzb2x2ZUNvbnRleHQoRVJST1JfQ09OVEVYVCwgZWxDdHgsIHJDdHguJHN0YXRpYyQuJGNvbnRhaW5lclN0YXRlJCk7XG4gICAgaWYgKGVycm9yU3RvcmUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICBlcnJvclN0b3JlLmVycm9yID0gZXJyO1xuICB9XG59O1xuXG5jb25zdCBpc1JlY292ZXJhYmxlID0gKGVycjogYW55KSA9PiB7XG4gIGlmIChlcnIgJiYgZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICBpZiAoJ3BsdWdpbicgaW4gZXJyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufTtcbiJdfQ==","/** CSS properties which accept numbers but are not in units of \"px\". */\nconst unitlessNumbers = new Set([\n    'animationIterationCount',\n    'aspectRatio',\n    'borderImageOutset',\n    'borderImageSlice',\n    'borderImageWidth',\n    'boxFlex',\n    'boxFlexGroup',\n    'boxOrdinalGroup',\n    'columnCount',\n    'columns',\n    'flex',\n    'flexGrow',\n    'flexShrink',\n    'gridArea',\n    'gridRow',\n    'gridRowEnd',\n    'gridRowStart',\n    'gridColumn',\n    'gridColumnEnd',\n    'gridColumnStart',\n    'fontWeight',\n    'lineClamp',\n    'lineHeight',\n    'opacity',\n    'order',\n    'orphans',\n    'scale',\n    'tabSize',\n    'widows',\n    'zIndex',\n    'zoom',\n    'MozAnimationIterationCount', // Known Prefixed Properties\n    'MozBoxFlex', // TODO: Remove these since they shouldn't be used in modern code\n    'msFlex',\n    'msFlexPositive',\n    'WebkitAnimationIterationCount',\n    'WebkitBoxFlex',\n    'WebkitBoxOrdinalGroup',\n    'WebkitColumnCount',\n    'WebkitColumns',\n    'WebkitFlex',\n    'WebkitFlexGrow',\n    'WebkitFlexShrink',\n    'WebkitLineClamp',\n]);\nexport const isUnitlessNumber = (name) => {\n    return unitlessNumbers.has(name);\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdGxlc3NfbnVtYmVyLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3V0aWwvdW5pdGxlc3NfbnVtYmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdFQUF3RTtBQUN4RSxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUM5Qix5QkFBeUI7SUFDekIsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixrQkFBa0I7SUFDbEIsa0JBQWtCO0lBQ2xCLFNBQVM7SUFDVCxjQUFjO0lBQ2QsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixTQUFTO0lBQ1QsTUFBTTtJQUNOLFVBQVU7SUFDVixZQUFZO0lBQ1osVUFBVTtJQUNWLFNBQVM7SUFDVCxZQUFZO0lBQ1osY0FBYztJQUNkLFlBQVk7SUFDWixlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLFlBQVk7SUFDWixXQUFXO0lBQ1gsWUFBWTtJQUNaLFNBQVM7SUFDVCxPQUFPO0lBQ1AsU0FBUztJQUNULE9BQU87SUFDUCxTQUFTO0lBQ1QsUUFBUTtJQUNSLFFBQVE7SUFDUixNQUFNO0lBQ04sNEJBQTRCLEVBQUUsNEJBQTRCO0lBQzFELFlBQVksRUFBRSxpRUFBaUU7SUFDL0UsUUFBUTtJQUNSLGdCQUFnQjtJQUNoQiwrQkFBK0I7SUFDL0IsZUFBZTtJQUNmLHVCQUF1QjtJQUN2QixtQkFBbUI7SUFDbkIsZUFBZTtJQUNmLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xCLGlCQUFpQjtDQUNsQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQVksRUFBVyxFQUFFO0lBQ3hELE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQ1NTIHByb3BlcnRpZXMgd2hpY2ggYWNjZXB0IG51bWJlcnMgYnV0IGFyZSBub3QgaW4gdW5pdHMgb2YgXCJweFwiLiAqL1xuY29uc3QgdW5pdGxlc3NOdW1iZXJzID0gbmV3IFNldChbXG4gICdhbmltYXRpb25JdGVyYXRpb25Db3VudCcsXG4gICdhc3BlY3RSYXRpbycsXG4gICdib3JkZXJJbWFnZU91dHNldCcsXG4gICdib3JkZXJJbWFnZVNsaWNlJyxcbiAgJ2JvcmRlckltYWdlV2lkdGgnLFxuICAnYm94RmxleCcsXG4gICdib3hGbGV4R3JvdXAnLFxuICAnYm94T3JkaW5hbEdyb3VwJyxcbiAgJ2NvbHVtbkNvdW50JyxcbiAgJ2NvbHVtbnMnLFxuICAnZmxleCcsXG4gICdmbGV4R3JvdycsXG4gICdmbGV4U2hyaW5rJyxcbiAgJ2dyaWRBcmVhJyxcbiAgJ2dyaWRSb3cnLFxuICAnZ3JpZFJvd0VuZCcsXG4gICdncmlkUm93U3RhcnQnLFxuICAnZ3JpZENvbHVtbicsXG4gICdncmlkQ29sdW1uRW5kJyxcbiAgJ2dyaWRDb2x1bW5TdGFydCcsXG4gICdmb250V2VpZ2h0JyxcbiAgJ2xpbmVDbGFtcCcsXG4gICdsaW5lSGVpZ2h0JyxcbiAgJ29wYWNpdHknLFxuICAnb3JkZXInLFxuICAnb3JwaGFucycsXG4gICdzY2FsZScsXG4gICd0YWJTaXplJyxcbiAgJ3dpZG93cycsXG4gICd6SW5kZXgnLFxuICAnem9vbScsXG4gICdNb3pBbmltYXRpb25JdGVyYXRpb25Db3VudCcsIC8vIEtub3duIFByZWZpeGVkIFByb3BlcnRpZXNcbiAgJ01vekJveEZsZXgnLCAvLyBUT0RPOiBSZW1vdmUgdGhlc2Ugc2luY2UgdGhleSBzaG91bGRuJ3QgYmUgdXNlZCBpbiBtb2Rlcm4gY29kZVxuICAnbXNGbGV4JyxcbiAgJ21zRmxleFBvc2l0aXZlJyxcbiAgJ1dlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50JyxcbiAgJ1dlYmtpdEJveEZsZXgnLFxuICAnV2Via2l0Qm94T3JkaW5hbEdyb3VwJyxcbiAgJ1dlYmtpdENvbHVtbkNvdW50JyxcbiAgJ1dlYmtpdENvbHVtbnMnLFxuICAnV2Via2l0RmxleCcsXG4gICdXZWJraXRGbGV4R3JvdycsXG4gICdXZWJraXRGbGV4U2hyaW5rJyxcbiAgJ1dlYmtpdExpbmVDbGFtcCcsXG5dKTtcblxuZXhwb3J0IGNvbnN0IGlzVW5pdGxlc3NOdW1iZXIgPSAobmFtZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiB1bml0bGVzc051bWJlcnMuaGFzKG5hbWUpO1xufTtcbiJdfQ==","import { assertDefined } from '../error/assert';\nimport { RenderEvent } from '../util/markers';\nimport { maybeThen, promiseAllLazy, safeCall } from '../util/promises';\nimport { newInvokeContext } from '../use/use-core';\nimport { isArray, isFunction, isString } from '../util/types';\nimport { intToStr } from '../container/container';\nimport { fromCamelToKebabCase } from '../util/case';\nimport { qError, QError_stringifyClassOrStyle } from '../error/error';\nimport { seal } from '../util/qdev';\nimport { SkipRender } from './jsx/utils.public';\nimport { handleError } from './error-handling';\nimport { HOST_FLAG_DIRTY, HOST_FLAG_MOUNTED } from '../state/context';\nimport { isSignal, SignalUnassignedException } from '../state/signal';\nimport { isJSXNode } from './jsx/jsx-runtime';\nimport { isUnitlessNumber } from '../util/unitless_number';\nimport { isServerPlatform } from '../platform/platform';\nimport { executeSSRTasks } from './dom/notify-render';\nimport { logWarn } from '../util/log';\nexport const executeComponent = (rCtx, elCtx, attempt) => {\n    elCtx.$flags$ &= ~HOST_FLAG_DIRTY;\n    elCtx.$flags$ |= HOST_FLAG_MOUNTED;\n    elCtx.$slots$ = [];\n    elCtx.li.length = 0;\n    const hostElement = elCtx.$element$;\n    const componentQRL = elCtx.$componentQrl$;\n    const props = elCtx.$props$;\n    const iCtx = newInvokeContext(rCtx.$static$.$locale$, hostElement, undefined, RenderEvent);\n    const waitOn = (iCtx.$waitOn$ = []);\n    assertDefined(componentQRL, `render: host element to render must have a $renderQrl$:`, elCtx);\n    assertDefined(props, `render: host element to render must have defined props`, elCtx);\n    // Set component context\n    const newCtx = pushRenderContext(rCtx);\n    newCtx.$cmpCtx$ = elCtx;\n    newCtx.$slotCtx$ = undefined;\n    // Invoke render hook\n    iCtx.$subscriber$ = [0, hostElement];\n    iCtx.$renderCtx$ = rCtx;\n    // Resolve render function\n    componentQRL.$setContainer$(rCtx.$static$.$containerState$.$containerEl$);\n    const componentFn = componentQRL.getFn(iCtx);\n    return safeCall(() => componentFn(props), (jsxNode) => {\n        return maybeThen(isServerPlatform()\n            ? maybeThen(promiseAllLazy(waitOn), () => \n            // Run dirty tasks before SSR output is generated.\n            maybeThen(executeSSRTasks(rCtx.$static$.$containerState$, rCtx), () => promiseAllLazy(waitOn)))\n            : promiseAllLazy(waitOn), () => {\n            if (elCtx.$flags$ & HOST_FLAG_DIRTY) {\n                if (attempt && attempt > 100) {\n                    logWarn(`Infinite loop detected. Element: ${elCtx.$componentQrl$?.$symbol$}`);\n                }\n                else {\n                    return executeComponent(rCtx, elCtx, attempt ? attempt + 1 : 1);\n                }\n            }\n            return {\n                node: jsxNode,\n                rCtx: newCtx,\n            };\n        });\n    }, (err) => {\n        if (err === SignalUnassignedException) {\n            if (attempt && attempt > 100) {\n                logWarn(`Infinite loop detected. Element: ${elCtx.$componentQrl$?.$symbol$}`);\n            }\n            else {\n                return maybeThen(promiseAllLazy(waitOn), () => {\n                    return executeComponent(rCtx, elCtx, attempt ? attempt + 1 : 1);\n                });\n            }\n        }\n        handleError(err, hostElement, rCtx);\n        return {\n            node: SkipRender,\n            rCtx: newCtx,\n        };\n    });\n};\nexport const createRenderContext = (doc, containerState) => {\n    const ctx = {\n        $static$: {\n            $doc$: doc,\n            $locale$: containerState.$serverData$.locale,\n            $containerState$: containerState,\n            $hostElements$: new Set(),\n            $operations$: [],\n            $postOperations$: [],\n            $roots$: [],\n            $addSlots$: [],\n            $rmSlots$: [],\n            $visited$: [],\n        },\n        $cmpCtx$: null,\n        $slotCtx$: undefined,\n    };\n    seal(ctx);\n    seal(ctx.$static$);\n    return ctx;\n};\nexport const pushRenderContext = (ctx) => {\n    const newCtx = {\n        $static$: ctx.$static$,\n        $cmpCtx$: ctx.$cmpCtx$,\n        $slotCtx$: ctx.$slotCtx$,\n    };\n    return newCtx;\n};\nexport const serializeClassWithHost = (obj, hostCtx) => {\n    if (hostCtx?.$scopeIds$?.length) {\n        return hostCtx.$scopeIds$.join(' ') + ' ' + serializeClass(obj);\n    }\n    return serializeClass(obj);\n};\nexport const serializeClass = (obj) => {\n    if (!obj) {\n        return '';\n    }\n    if (isString(obj)) {\n        return obj.trim();\n    }\n    const classes = [];\n    if (isArray(obj)) {\n        for (const o of obj) {\n            const classList = serializeClass(o);\n            if (classList) {\n                classes.push(classList);\n            }\n        }\n    }\n    else {\n        for (const [key, value] of Object.entries(obj)) {\n            if (value) {\n                classes.push(key.trim());\n            }\n        }\n    }\n    return classes.join(' ');\n};\nexport const stringifyStyle = (obj) => {\n    if (obj == null) {\n        return '';\n    }\n    if (typeof obj == 'object') {\n        if (isArray(obj)) {\n            throw qError(QError_stringifyClassOrStyle, obj, 'style');\n        }\n        else {\n            const chunks = [];\n            for (const key in obj) {\n                if (Object.prototype.hasOwnProperty.call(obj, key)) {\n                    const value = obj[key];\n                    if (value != null && typeof value !== 'function') {\n                        if (key.startsWith('--')) {\n                            chunks.push(key + ':' + value);\n                        }\n                        else {\n                            chunks.push(fromCamelToKebabCase(key) + ':' + setValueForStyle(key, value));\n                        }\n                    }\n                }\n            }\n            return chunks.join(';');\n        }\n    }\n    return String(obj);\n};\nexport const setValueForStyle = (styleName, value) => {\n    if (typeof value === 'number' && value !== 0 && !isUnitlessNumber(styleName)) {\n        return value + 'px';\n    }\n    return value;\n};\nexport const getNextIndex = (ctx) => {\n    return intToStr(ctx.$static$.$containerState$.$elementIndex$++);\n};\nexport const setQId = (rCtx, elCtx) => {\n    const id = getNextIndex(rCtx);\n    elCtx.$id$ = id;\n};\nexport const jsxToString = (data) => {\n    if (isSignal(data)) {\n        return jsxToString(data.value);\n    }\n    return data == null || typeof data === 'boolean' ? '' : String(data);\n};\nexport function isAriaAttribute(prop) {\n    return prop.startsWith('aria-');\n}\nexport const shouldWrapFunctional = (res, node) => {\n    if (node.key) {\n        return !isJSXNode(res) || (!isFunction(res.type) && res.key != node.key);\n    }\n    return false;\n};\nexport const static_listeners = 1 << 0;\nexport const static_subtree = 1 << 1;\nexport const dangerouslySetInnerHTML = 'dangerouslySetInnerHTML';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvcmVuZGVyL2V4ZWN1dGUtY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUluRixPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7QUFDckYsT0FBTyxFQUFFLFFBQVEsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUs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QUFNLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0RGVmaW5lZCB9IGZyb20gJy4uL2Vycm9yL2Fzc2VydCc7XG5pbXBvcnQgeyBSZW5kZXJFdmVudCB9IGZyb20gJy4uL3V0aWwvbWFya2Vycyc7XG5pbXBvcnQgeyBtYXliZVRoZW4sIHByb21pc2VBbGxMYXp5LCBzYWZlQ2FsbCB9IGZyb20gJy4uL3V0aWwvcHJvbWlzZXMnO1xuaW1wb3J0IHsgbmV3SW52b2tlQ29udGV4dCB9IGZyb20gJy4uL3VzZS91c2UtY29yZSc7XG5pbXBvcnQgeyBpc0FycmF5LCBpc0Z1bmN0aW9uLCBpc1N0cmluZywgdHlwZSBWYWx1ZU9yUHJvbWlzZSB9IGZyb20gJy4uL3V0aWwvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBKU1hOb2RlLCBKU1hPdXRwdXQgfSBmcm9tICcuL2pzeC90eXBlcy9qc3gtbm9kZSc7XG5pbXBvcnQgdHlwZSB7IENsYXNzTGlzdCB9IGZyb20gJy4vanN4L3R5cGVzL2pzeC1xd2lrLWF0dHJpYnV0ZXMnO1xuaW1wb3J0IHR5cGUgeyBSZW5kZXJDb250ZXh0IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyB0eXBlIENvbnRhaW5lclN0YXRlLCBpbnRUb1N0ciB9IGZyb20gJy4uL2NvbnRhaW5lci9jb250YWluZXInO1xuaW1wb3J0IHsgZnJvbUNhbWVsVG9LZWJhYkNhc2UgfSBmcm9tICcuLi91dGlsL2Nhc2UnO1xuaW1wb3J0IHsgcUVycm9yLCBRRXJyb3Jfc3RyaW5naWZ5Q2xhc3NPclN0eWxlIH0gZnJvbSAnLi4vZXJyb3IvZXJyb3InO1xuaW1wb3J0IHsgc2VhbCB9IGZyb20gJy4uL3V0aWwvcWRldic7XG5pbXBvcnQgeyBTa2lwUmVuZGVyIH0gZnJvbSAnLi9qc3gvdXRpbHMucHVibGljJztcbmltcG9ydCB7IGhhbmRsZUVycm9yIH0gZnJvbSAnLi9lcnJvci1oYW5kbGluZyc7XG5pbXBvcnQgeyBIT1NUX0ZMQUdfRElSVFksIEhPU1RfRkxBR19NT1VOVEVELCB0eXBlIFFDb250ZXh0IH0gZnJvbSAnLi4vc3RhdGUvY29udGV4dCc7XG5pbXBvcnQgeyBpc1NpZ25hbCwgU2lnbmFsVW5hc3NpZ25lZEV4Y2VwdGlvbiB9IGZyb20gJy4uL3N0YXRlL3NpZ25hbCc7XG5pbXBvcnQgeyBpc0pTWE5vZGUgfSBmcm9tICcuL2pzeC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBpc1VuaXRsZXNzTnVtYmVyIH0gZnJvbSAnLi4vdXRpbC91bml0bGVzc19udW1iZXInO1xuaW1wb3J0IHsgaXNTZXJ2ZXJQbGF0Zm9ybSB9IGZyb20gJy4uL3BsYXRmb3JtL3BsYXRmb3JtJztcbmltcG9ydCB7IGV4ZWN1dGVTU1JUYXNrcyB9IGZyb20gJy4vZG9tL25vdGlmeS1yZW5kZXInO1xuaW1wb3J0IHsgbG9nV2FybiB9IGZyb20gJy4uL3V0aWwvbG9nJztcblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlQ29tcG9uZW50T3V0cHV0IHtcbiAgbm9kZTogSlNYT3V0cHV0O1xuICByQ3R4OiBSZW5kZXJDb250ZXh0O1xufVxuXG5leHBvcnQgY29uc3QgZXhlY3V0ZUNvbXBvbmVudCA9IChcbiAgckN0eDogUmVuZGVyQ29udGV4dCxcbiAgZWxDdHg6IFFDb250ZXh0LFxuICBhdHRlbXB0PzogbnVtYmVyXG4pOiBWYWx1ZU9yUHJvbWlzZTxFeGVjdXRlQ29tcG9uZW50T3V0cHV0PiA9PiB7XG4gIGVsQ3R4LiRmbGFncyQgJj0gfkhPU1RfRkxBR19ESVJUWTtcbiAgZWxDdHguJGZsYWdzJCB8PSBIT1NUX0ZMQUdfTU9VTlRFRDtcbiAgZWxDdHguJHNsb3RzJCA9IFtdO1xuICBlbEN0eC5saS5sZW5ndGggPSAwO1xuXG4gIGNvbnN0IGhvc3RFbGVtZW50ID0gZWxDdHguJGVsZW1lbnQkO1xuICBjb25zdCBjb21wb25lbnRRUkwgPSBlbEN0eC4kY29tcG9uZW50UXJsJDtcbiAgY29uc3QgcHJvcHMgPSBlbEN0eC4kcHJvcHMkO1xuICBjb25zdCBpQ3R4ID0gbmV3SW52b2tlQ29udGV4dChyQ3R4LiRzdGF0aWMkLiRsb2NhbGUkLCBob3N0RWxlbWVudCwgdW5kZWZpbmVkLCBSZW5kZXJFdmVudCk7XG4gIGNvbnN0IHdhaXRPbjogUHJvbWlzZTx1bmtub3duPltdID0gKGlDdHguJHdhaXRPbiQgPSBbXSk7XG4gIGFzc2VydERlZmluZWQoY29tcG9uZW50UVJMLCBgcmVuZGVyOiBob3N0IGVsZW1lbnQgdG8gcmVuZGVyIG11c3QgaGF2ZSBhICRyZW5kZXJRcmwkOmAsIGVsQ3R4KTtcbiAgYXNzZXJ0RGVmaW5lZChwcm9wcywgYHJlbmRlcjogaG9zdCBlbGVtZW50IHRvIHJlbmRlciBtdXN0IGhhdmUgZGVmaW5lZCBwcm9wc2AsIGVsQ3R4KTtcblxuICAvLyBTZXQgY29tcG9uZW50IGNvbnRleHRcbiAgY29uc3QgbmV3Q3R4ID0gcHVzaFJlbmRlckNvbnRleHQockN0eCk7XG4gIG5ld0N0eC4kY21wQ3R4JCA9IGVsQ3R4O1xuICBuZXdDdHguJHNsb3RDdHgkID0gdW5kZWZpbmVkO1xuXG4gIC8vIEludm9rZSByZW5kZXIgaG9va1xuICBpQ3R4LiRzdWJzY3JpYmVyJCA9IFswLCBob3N0RWxlbWVudF07XG4gIGlDdHguJHJlbmRlckN0eCQgPSByQ3R4O1xuXG4gIC8vIFJlc29sdmUgcmVuZGVyIGZ1bmN0aW9uXG4gIGNvbXBvbmVudFFSTC4kc2V0Q29udGFpbmVyJChyQ3R4LiRzdGF0aWMkLiRjb250YWluZXJTdGF0ZSQuJGNvbnRhaW5lckVsJCk7XG4gIGNvbnN0IGNvbXBvbmVudEZuID0gY29tcG9uZW50UVJMLmdldEZuKGlDdHgpO1xuXG4gIHJldHVybiBzYWZlQ2FsbChcbiAgICAoKSA9PiBjb21wb25lbnRGbihwcm9wcyksXG4gICAgKGpzeE5vZGUpID0+IHtcbiAgICAgIHJldHVybiBtYXliZVRoZW4oXG4gICAgICAgIGlzU2VydmVyUGxhdGZvcm0oKVxuICAgICAgICAgID8gbWF5YmVUaGVuKHByb21pc2VBbGxMYXp5KHdhaXRPbiksICgpID0+XG4gICAgICAgICAgICAgIC8vIFJ1biBkaXJ0eSB0YXNrcyBiZWZvcmUgU1NSIG91dHB1dCBpcyBnZW5lcmF0ZWQuXG4gICAgICAgICAgICAgIG1heWJlVGhlbihleGVjdXRlU1NSVGFza3MockN0eC4kc3RhdGljJC4kY29udGFpbmVyU3RhdGUkLCByQ3R4KSwgKCkgPT5cbiAgICAgICAgICAgICAgICBwcm9taXNlQWxsTGF6eSh3YWl0T24pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IHByb21pc2VBbGxMYXp5KHdhaXRPbiksXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBpZiAoZWxDdHguJGZsYWdzJCAmIEhPU1RfRkxBR19ESVJUWSkge1xuICAgICAgICAgICAgaWYgKGF0dGVtcHQgJiYgYXR0ZW1wdCA+IDEwMCkge1xuICAgICAgICAgICAgICBsb2dXYXJuKGBJbmZpbml0ZSBsb29wIGRldGVjdGVkLiBFbGVtZW50OiAke2VsQ3R4LiRjb21wb25lbnRRcmwkPy4kc3ltYm9sJH1gKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBleGVjdXRlQ29tcG9uZW50KHJDdHgsIGVsQ3R4LCBhdHRlbXB0ID8gYXR0ZW1wdCArIDEgOiAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5vZGU6IGpzeE5vZGUsXG4gICAgICAgICAgICByQ3R4OiBuZXdDdHgsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9LFxuICAgIChlcnIpID0+IHtcbiAgICAgIGlmIChlcnIgPT09IFNpZ25hbFVuYXNzaWduZWRFeGNlcHRpb24pIHtcbiAgICAgICAgaWYgKGF0dGVtcHQgJiYgYXR0ZW1wdCA+IDEwMCkge1xuICAgICAgICAgIGxvZ1dhcm4oYEluZmluaXRlIGxvb3AgZGV0ZWN0ZWQuIEVsZW1lbnQ6ICR7ZWxDdHguJGNvbXBvbmVudFFybCQ/LiRzeW1ib2wkfWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBtYXliZVRoZW4ocHJvbWlzZUFsbExhenkod2FpdE9uKSwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGV4ZWN1dGVDb21wb25lbnQockN0eCwgZWxDdHgsIGF0dGVtcHQgPyBhdHRlbXB0ICsgMSA6IDEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBoYW5kbGVFcnJvcihlcnIsIGhvc3RFbGVtZW50LCByQ3R4KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5vZGU6IFNraXBSZW5kZXIsXG4gICAgICAgIHJDdHg6IG5ld0N0eCxcbiAgICAgIH07XG4gICAgfVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVJlbmRlckNvbnRleHQgPSAoXG4gIGRvYzogRG9jdW1lbnQsXG4gIGNvbnRhaW5lclN0YXRlOiBDb250YWluZXJTdGF0ZVxuKTogUmVuZGVyQ29udGV4dCA9PiB7XG4gIGNvbnN0IGN0eDogUmVuZGVyQ29udGV4dCA9IHtcbiAgICAkc3RhdGljJDoge1xuICAgICAgJGRvYyQ6IGRvYyxcbiAgICAgICRsb2NhbGUkOiBjb250YWluZXJTdGF0ZS4kc2VydmVyRGF0YSQubG9jYWxlLFxuICAgICAgJGNvbnRhaW5lclN0YXRlJDogY29udGFpbmVyU3RhdGUsXG4gICAgICAkaG9zdEVsZW1lbnRzJDogbmV3IFNldCgpLFxuICAgICAgJG9wZXJhdGlvbnMkOiBbXSxcbiAgICAgICRwb3N0T3BlcmF0aW9ucyQ6IFtdLFxuICAgICAgJHJvb3RzJDogW10sXG4gICAgICAkYWRkU2xvdHMkOiBbXSxcbiAgICAgICRybVNsb3RzJDogW10sXG4gICAgICAkdmlzaXRlZCQ6IFtdLFxuICAgIH0sXG4gICAgJGNtcEN0eCQ6IG51bGwsXG4gICAgJHNsb3RDdHgkOiB1bmRlZmluZWQsXG4gIH07XG4gIHNlYWwoY3R4KTtcbiAgc2VhbChjdHguJHN0YXRpYyQpO1xuICByZXR1cm4gY3R4O1xufTtcblxuZXhwb3J0IGNvbnN0IHB1c2hSZW5kZXJDb250ZXh0ID0gKGN0eDogUmVuZGVyQ29udGV4dCk6IFJlbmRlckNvbnRleHQgPT4ge1xuICBjb25zdCBuZXdDdHg6IFJlbmRlckNvbnRleHQgPSB7XG4gICAgJHN0YXRpYyQ6IGN0eC4kc3RhdGljJCxcbiAgICAkY21wQ3R4JDogY3R4LiRjbXBDdHgkLFxuICAgICRzbG90Q3R4JDogY3R4LiRzbG90Q3R4JCxcbiAgfTtcbiAgcmV0dXJuIG5ld0N0eDtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXJpYWxpemVDbGFzc1dpdGhIb3N0ID0gKFxuICBvYmo6IENsYXNzTGlzdCxcbiAgaG9zdEN0eDogUUNvbnRleHQgfCB1bmRlZmluZWQgfCBudWxsXG4pOiBzdHJpbmcgPT4ge1xuICBpZiAoaG9zdEN0eD8uJHNjb3BlSWRzJD8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGhvc3RDdHguJHNjb3BlSWRzJC5qb2luKCcgJykgKyAnICcgKyBzZXJpYWxpemVDbGFzcyhvYmopO1xuICB9XG4gIHJldHVybiBzZXJpYWxpemVDbGFzcyhvYmopO1xufTtcblxuZXhwb3J0IGNvbnN0IHNlcmlhbGl6ZUNsYXNzID0gKG9iajogQ2xhc3NMaXN0KTogc3RyaW5nID0+IHtcbiAgaWYgKCFvYmopIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKGlzU3RyaW5nKG9iaikpIHtcbiAgICByZXR1cm4gb2JqLnRyaW0oKTtcbiAgfVxuXG4gIGNvbnN0IGNsYXNzZXM6IHN0cmluZ1tdID0gW107XG5cbiAgaWYgKGlzQXJyYXkob2JqKSkge1xuICAgIGZvciAoY29uc3QgbyBvZiBvYmopIHtcbiAgICAgIGNvbnN0IGNsYXNzTGlzdCA9IHNlcmlhbGl6ZUNsYXNzKG8pO1xuICAgICAgaWYgKGNsYXNzTGlzdCkge1xuICAgICAgICBjbGFzc2VzLnB1c2goY2xhc3NMaXN0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaChrZXkudHJpbSgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG59O1xuXG5leHBvcnQgY29uc3Qgc3RyaW5naWZ5U3R5bGUgPSAob2JqOiBhbnkpOiBzdHJpbmcgPT4ge1xuICBpZiAob2JqID09IG51bGwpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKHR5cGVvZiBvYmogPT0gJ29iamVjdCcpIHtcbiAgICBpZiAoaXNBcnJheShvYmopKSB7XG4gICAgICB0aHJvdyBxRXJyb3IoUUVycm9yX3N0cmluZ2lmeUNsYXNzT3JTdHlsZSwgb2JqLCAnc3R5bGUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2h1bmtzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBvYmpba2V5XTtcbiAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aCgnLS0nKSkge1xuICAgICAgICAgICAgICBjaHVua3MucHVzaChrZXkgKyAnOicgKyB2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjaHVua3MucHVzaChmcm9tQ2FtZWxUb0tlYmFiQ2FzZShrZXkpICsgJzonICsgc2V0VmFsdWVGb3JTdHlsZShrZXksIHZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gY2h1bmtzLmpvaW4oJzsnKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFN0cmluZyhvYmopO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFZhbHVlRm9yU3R5bGUgPSAoc3R5bGVOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgdmFsdWUgIT09IDAgJiYgIWlzVW5pdGxlc3NOdW1iZXIoc3R5bGVOYW1lKSkge1xuICAgIHJldHVybiB2YWx1ZSArICdweCc7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE5leHRJbmRleCA9IChjdHg6IFJlbmRlckNvbnRleHQpID0+IHtcbiAgcmV0dXJuIGludFRvU3RyKGN0eC4kc3RhdGljJC4kY29udGFpbmVyU3RhdGUkLiRlbGVtZW50SW5kZXgkKyspO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFFJZCA9IChyQ3R4OiBSZW5kZXJDb250ZXh0LCBlbEN0eDogUUNvbnRleHQpID0+IHtcbiAgY29uc3QgaWQgPSBnZXROZXh0SW5kZXgockN0eCk7XG4gIGVsQ3R4LiRpZCQgPSBpZDtcbn07XG5cbmV4cG9ydCBjb25zdCBqc3hUb1N0cmluZyA9IChkYXRhOiBhbnkpOiBzdHJpbmcgPT4ge1xuICBpZiAoaXNTaWduYWwoZGF0YSkpIHtcbiAgICByZXR1cm4ganN4VG9TdHJpbmcoZGF0YS52YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGRhdGEgPT0gbnVsbCB8fCB0eXBlb2YgZGF0YSA9PT0gJ2Jvb2xlYW4nID8gJycgOiBTdHJpbmcoZGF0YSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNBcmlhQXR0cmlidXRlKHByb3A6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gcHJvcC5zdGFydHNXaXRoKCdhcmlhLScpO1xufVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkV3JhcEZ1bmN0aW9uYWwgPSAocmVzOiB1bmtub3duLCBub2RlOiBKU1hOb2RlKSA9PiB7XG4gIGlmIChub2RlLmtleSkge1xuICAgIHJldHVybiAhaXNKU1hOb2RlKHJlcykgfHwgKCFpc0Z1bmN0aW9uKHJlcy50eXBlKSAmJiByZXMua2V5ICE9IG5vZGUua2V5KTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3Qgc3RhdGljX2xpc3RlbmVycyA9IDEgPDwgMDtcbmV4cG9ydCBjb25zdCBzdGF0aWNfc3VidHJlZSA9IDEgPDwgMTtcbmV4cG9ydCBjb25zdCBkYW5nZXJvdXNseVNldElubmVySFRNTCA9ICdkYW5nZXJvdXNseVNldElubmVySFRNTCc7XG4iXX0=","import { createContainerState, getEventName, setRef, } from '../../container/container';\nimport { assertDefined } from '../../error/assert';\nimport { QError_canNotRenderHTML, qError } from '../../error/error';\nimport { serializeQRLs } from '../../qrl/qrl';\nimport { Q_CTX, _IMMUTABLE, _IMMUTABLE_PREFIX } from '../../state/constants';\nimport { HOST_FLAG_DIRTY, HOST_FLAG_DYNAMIC, HOST_FLAG_NEED_ATTACH_LISTENER, createContext, } from '../../state/context';\nimport { PREVENT_DEFAULT, groupListeners, isOnProp, setEvent, } from '../../state/listeners';\nimport { isSignal } from '../../state/signal';\nimport { createPropsState, createProxy } from '../../state/store';\nimport { serializeSStyle } from '../../style/qrl-styles';\nimport { invoke, newInvokeContext, trackSignal } from '../../use/use-core';\nimport { EMPTY_OBJ } from '../../util/flyweight';\nimport { logError, logWarn } from '../../util/log';\nimport { ELEMENT_ID, OnRenderProp, QScopedStyle, QSlot, QSlotS, QStyle } from '../../util/markers';\nimport { isPromise, maybeThen } from '../../util/promises';\nimport { qDev, qInspector, seal } from '../../util/qdev';\nimport { isArray, isFunction, isString } from '../../util/types';\nimport { version } from '../../version';\nimport { createRenderContext, dangerouslySetInnerHTML, executeComponent, getNextIndex, isAriaAttribute, jsxToString, pushRenderContext, serializeClass, shouldWrapFunctional, static_subtree, stringifyStyle, } from '../execute-component';\nimport { Virtual, _jsxC, _jsxQ, createJSXError, isJSXNode } from '../jsx/jsx-runtime';\nimport { InternalSSRStream, SSRRaw } from '../jsx/utils.public';\nconst FLUSH_COMMENT = '<!--qkssr-f-->';\nconst IS_HEAD = 1 << 0;\nconst IS_HTML = 1 << 2;\nconst IS_TEXT = 1 << 3;\nconst IS_INVISIBLE = 1 << 4;\nconst IS_PHASING = 1 << 5;\nconst IS_ANCHOR = 1 << 6;\nconst IS_BUTTON = 1 << 7;\nconst IS_TABLE = 1 << 8;\nconst IS_PHRASING_CONTAINER = 1 << 9;\nconst IS_IMMUTABLE = 1 << 10;\nclass MockElement {\n    nodeType;\n    [Q_CTX] = null;\n    constructor(nodeType) {\n        this.nodeType = nodeType;\n        seal(this);\n    }\n}\nconst createDocument = () => {\n    return new MockElement(9);\n};\n/** @internal */\nexport const _renderSSR = async (node, opts) => {\n    const root = opts.containerTagName;\n    const containerEl = createMockQContext(1).$element$;\n    const containerState = createContainerState(containerEl, opts.base ?? '/');\n    containerState.$serverData$.locale = opts.serverData?.locale;\n    const doc = createDocument();\n    const rCtx = createRenderContext(doc, containerState);\n    const headNodes = opts.beforeContent ?? [];\n    if (qDev) {\n        if (root in phasingContent ||\n            root in emptyElements ||\n            root in tableContent ||\n            root in startPhasingContent ||\n            root in invisibleElements) {\n            throw new Error(`The \"containerTagName\" can not be \"${root}\". Please choose a different tag name like: \"div\", \"html\", \"custom-container\".`);\n        }\n    }\n    const ssrCtx = {\n        $static$: {\n            $contexts$: [],\n            $headNodes$: root === 'html' ? headNodes : [],\n            $locale$: opts.serverData?.locale,\n            $textNodes$: new Map(),\n        },\n        $projectedChildren$: undefined,\n        $projectedCtxs$: undefined,\n        $invocationContext$: undefined,\n    };\n    seal(ssrCtx);\n    const locale = opts.serverData?.locale;\n    const containerAttributes = opts.containerAttributes;\n    const qRender = containerAttributes['q:render'];\n    containerAttributes['q:container'] = 'paused';\n    containerAttributes['q:version'] = version ?? 'dev';\n    containerAttributes['q:render'] = (qRender ? qRender + '-' : '') + (qDev ? 'ssr-dev' : 'ssr');\n    containerAttributes['q:base'] = opts.base || '';\n    containerAttributes['q:locale'] = locale;\n    containerAttributes['q:manifest-hash'] = opts.manifestHash;\n    containerAttributes['q:instance'] = hash();\n    const children = root === 'html' ? [node] : [headNodes, node];\n    if (root !== 'html') {\n        containerAttributes.class =\n            'qc📦' + (containerAttributes.class ? ' ' + containerAttributes.class : '');\n    }\n    const serverData = (containerState.$serverData$ = {\n        ...containerState.$serverData$,\n        ...opts.serverData,\n    });\n    serverData.containerAttributes = {\n        ...serverData['containerAttributes'],\n        ...containerAttributes,\n    };\n    const invokeCtx = (ssrCtx.$invocationContext$ = newInvokeContext(locale));\n    invokeCtx.$renderCtx$ = rCtx;\n    ssrCtx.$invocationContext$;\n    const rootNode = _jsxQ(root, null, containerAttributes, children, HOST_FLAG_DIRTY | HOST_FLAG_NEED_ATTACH_LISTENER, null);\n    containerState.$hostsRendering$ = new Set();\n    await Promise.resolve().then(() => renderRoot(rootNode, rCtx, ssrCtx, opts.stream, containerState, opts));\n};\nconst hash = () => Math.random().toString(36).slice(2);\nconst renderRoot = async (node, rCtx, ssrCtx, stream, containerState, opts) => {\n    const beforeClose = opts.beforeClose;\n    await renderNode(node, rCtx, ssrCtx, stream, 0, beforeClose\n        ? (stream) => {\n            const result = beforeClose(ssrCtx.$static$.$contexts$, containerState, false, ssrCtx.$static$.$textNodes$);\n            return processData(result, rCtx, ssrCtx, stream, 0, undefined);\n        }\n        : undefined);\n    if (qDev) {\n        if (ssrCtx.$static$.$headNodes$.length > 0) {\n            logError('Missing <head>. Global styles could not be rendered. Please render a <head> element at the root of the app');\n        }\n    }\n    return rCtx;\n};\nconst renderGenerator = async (node, rCtx, ssrCtx, stream, flags) => {\n    stream.write(FLUSH_COMMENT);\n    const generator = node.props.children;\n    let value;\n    if (isFunction(generator)) {\n        const v = generator({\n            write(chunk) {\n                stream.write(chunk);\n                stream.write(FLUSH_COMMENT);\n            },\n        });\n        if (isPromise(v)) {\n            return v;\n        }\n        value = v;\n    }\n    else {\n        value = generator;\n    }\n    for await (const chunk of value) {\n        await processData(chunk, rCtx, ssrCtx, stream, flags, undefined);\n        stream.write(FLUSH_COMMENT);\n    }\n};\nconst renderNodeVirtual = (node, elCtx, extraNodes, rCtx, ssrCtx, stream, flags, beforeClose) => {\n    const props = node.props;\n    const renderQrl = props[OnRenderProp];\n    if (renderQrl) {\n        elCtx.$componentQrl$ = renderQrl;\n        return renderSSRComponent(rCtx, ssrCtx, stream, elCtx, node, flags, beforeClose);\n    }\n    let virtualComment = '<!--qv' + renderVirtualAttributes(props);\n    const isSlot = QSlotS in props;\n    const key = node.key != null ? escapeHtml(String(node.key)) : null;\n    if (isSlot) {\n        assertDefined(rCtx.$cmpCtx$?.$id$, 'hostId must be defined for a slot');\n        virtualComment += ' q:sref=' + rCtx.$cmpCtx$.$id$;\n    }\n    if (key != null) {\n        virtualComment += ' q:key=' + key;\n    }\n    virtualComment += '-->';\n    stream.write(virtualComment);\n    const html = node.props[dangerouslySetInnerHTML];\n    if (html) {\n        stream.write(html);\n        stream.write(CLOSE_VIRTUAL);\n        return;\n    }\n    if (extraNodes) {\n        for (const node of extraNodes) {\n            // We trust that the attributes are strings\n            renderNodeElementSync(node.type, node.props, stream);\n        }\n    }\n    const promise = walkChildren(node.children, rCtx, ssrCtx, stream, flags);\n    return maybeThen(promise, () => {\n        // Fast path\n        if (!isSlot && !beforeClose) {\n            stream.write(CLOSE_VIRTUAL);\n            return;\n        }\n        let promise;\n        if (isSlot) {\n            assertDefined(key, 'key must be defined for a slot');\n            const content = ssrCtx.$projectedChildren$?.[key];\n            if (content) {\n                const [rCtx, sCtx] = ssrCtx.$projectedCtxs$;\n                const newSlotRctx = pushRenderContext(rCtx);\n                newSlotRctx.$slotCtx$ = elCtx;\n                ssrCtx.$projectedChildren$[key] = undefined;\n                promise = processData(content, newSlotRctx, sCtx, stream, flags);\n            }\n        }\n        // Inject before close\n        if (beforeClose) {\n            promise = maybeThen(promise, () => beforeClose(stream));\n        }\n        return maybeThen(promise, () => {\n            stream.write(CLOSE_VIRTUAL);\n        });\n    });\n};\nconst CLOSE_VIRTUAL = `<!--/qv-->`;\nexport const renderAttributes = (attributes) => {\n    let text = '';\n    for (const prop in attributes) {\n        if (prop === dangerouslySetInnerHTML) {\n            continue;\n        }\n        const value = attributes[prop];\n        if (value != null) {\n            text += ' ' + (value === '' ? prop : prop + '=\"' + escapeValue(value) + '\"');\n        }\n    }\n    return text;\n};\nexport const renderVirtualAttributes = (attributes) => {\n    let text = '';\n    for (const prop in attributes) {\n        if (prop === 'children' || prop === dangerouslySetInnerHTML) {\n            continue;\n        }\n        const value = attributes[prop];\n        if (value != null) {\n            text += ' ' + (value === '' ? prop : prop + '=' + escapeValue(value) + '');\n        }\n    }\n    return text;\n};\nconst renderNodeElementSync = (tagName, attributes, stream) => {\n    stream.write('<' + tagName + renderAttributes(attributes) + '>');\n    const empty = !!emptyElements[tagName];\n    if (empty) {\n        return;\n    }\n    // Render innerHTML\n    const innerHTML = attributes[dangerouslySetInnerHTML];\n    if (innerHTML != null) {\n        stream.write(innerHTML);\n    }\n    stream.write(`</${tagName}>`);\n};\n/** Render a component$ */\nconst renderSSRComponent = (rCtx, ssrCtx, stream, elCtx, node, flags, beforeClose) => {\n    const props = node.props;\n    setComponentProps(rCtx, elCtx, props.props);\n    return maybeThen(executeComponent(rCtx, elCtx), (res) => {\n        const hostElement = elCtx.$element$;\n        const newRCtx = res.rCtx;\n        const iCtx = newInvokeContext(ssrCtx.$static$.$locale$, hostElement, undefined);\n        iCtx.$subscriber$ = [0, hostElement];\n        iCtx.$renderCtx$ = newRCtx;\n        const newSSrContext = {\n            $static$: ssrCtx.$static$,\n            $projectedChildren$: splitProjectedChildren(node.children, ssrCtx),\n            $projectedCtxs$: [rCtx, ssrCtx],\n            $invocationContext$: iCtx,\n        };\n        const extraNodes = [];\n        if (elCtx.$appendStyles$) {\n            const isHTML = !!(flags & IS_HTML);\n            const array = isHTML ? ssrCtx.$static$.$headNodes$ : extraNodes;\n            for (const style of elCtx.$appendStyles$) {\n                array.push(_jsxQ('style', {\n                    [QStyle]: style.styleId,\n                    [dangerouslySetInnerHTML]: style.content,\n                    hidden: '',\n                }, null, null, 0, null));\n            }\n        }\n        const newID = getNextIndex(rCtx);\n        const scopeId = elCtx.$scopeIds$ ? serializeSStyle(elCtx.$scopeIds$) : undefined;\n        const processedNode = _jsxC(node.type, {\n            [QScopedStyle]: scopeId,\n            [ELEMENT_ID]: newID,\n            children: res.node,\n        }, 0, node.key);\n        elCtx.$id$ = newID;\n        ssrCtx.$static$.$contexts$.push(elCtx);\n        return renderNodeVirtual(processedNode, elCtx, extraNodes, newRCtx, newSSrContext, stream, flags, (stream) => {\n            if (elCtx.$flags$ & HOST_FLAG_NEED_ATTACH_LISTENER) {\n                const placeholderCtx = createMockQContext(1);\n                const listeners = placeholderCtx.li;\n                listeners.push(...elCtx.li);\n                elCtx.$flags$ &= ~HOST_FLAG_NEED_ATTACH_LISTENER;\n                placeholderCtx.$id$ = getNextIndex(rCtx);\n                /**\n                 * This is a placeholder for qwik attributes when the component does not have a DOM\n                 * element. We keep it empty, so it can be a script tag without type.\n                 */\n                const attributes = {\n                    hidden: '',\n                    'q:id': placeholderCtx.$id$,\n                };\n                ssrCtx.$static$.$contexts$.push(placeholderCtx);\n                const groups = groupListeners(listeners);\n                for (const listener of groups) {\n                    const eventName = normalizeInvisibleEvents(listener[0]);\n                    attributes[eventName] = serializeQRLs(listener[1], rCtx.$static$.$containerState$, placeholderCtx);\n                    registerQwikEvent(eventName, rCtx.$static$.$containerState$);\n                }\n                renderNodeElementSync('script', attributes, stream);\n            }\n            const projectedChildren = newSSrContext.$projectedChildren$;\n            let missingSlotsDone;\n            if (projectedChildren) {\n                const nodes = Object.keys(projectedChildren).map((slotName) => {\n                    const escapedSlotName = slotName ? escapeHtml(slotName) : slotName;\n                    const content = projectedChildren[escapedSlotName];\n                    // projectedChildren[slotName] = undefined;\n                    if (content) {\n                        return _jsxQ('q:template', { [QSlot]: escapedSlotName || true, hidden: true, 'aria-hidden': 'true' }, null, content, 0, null);\n                    }\n                });\n                const [_rCtx, sCtx] = newSSrContext.$projectedCtxs$;\n                const newSlotRctx = pushRenderContext(_rCtx);\n                newSlotRctx.$slotCtx$ = elCtx;\n                missingSlotsDone = processData(nodes, newSlotRctx, sCtx, stream, 0, undefined);\n            }\n            return beforeClose\n                ? maybeThen(missingSlotsDone, () => beforeClose(stream))\n                : missingSlotsDone;\n        });\n    });\n};\nconst splitProjectedChildren = (children, ssrCtx) => {\n    const flatChildren = flatVirtualChildren(children, ssrCtx);\n    if (flatChildren === null) {\n        return undefined;\n    }\n    const slotMap = {};\n    for (const child of flatChildren) {\n        let slotName = '';\n        if (isJSXNode(child)) {\n            slotName = escapeHtml(child.props[QSlot] || '');\n        }\n        (slotMap[slotName] ||= []).push(child);\n    }\n    return slotMap;\n};\nconst createMockQContext = (nodeType) => {\n    const elm = new MockElement(nodeType);\n    return createContext(elm);\n};\nconst renderNode = (node, rCtx, ssrCtx, stream, flags, beforeClose) => {\n    const tagName = node.type;\n    const hostCtx = rCtx.$cmpCtx$;\n    if (typeof tagName === 'string') {\n        const key = node.key;\n        const props = node.props;\n        const immutable = node.immutableProps || EMPTY_OBJ;\n        const elCtx = createMockQContext(1);\n        const elm = elCtx.$element$;\n        const isHead = tagName === 'head';\n        let openingElement = '<' + tagName;\n        let useSignal = false;\n        let hasRef = false;\n        let classStr = '';\n        let htmlStr = null;\n        const handleProp = (rawProp, value, isImmutable) => {\n            if (rawProp === 'ref') {\n                if (value !== undefined) {\n                    setRef(value, elm);\n                    hasRef = true;\n                }\n                return;\n            }\n            if (isOnProp(rawProp)) {\n                setEvent(elCtx.li, rawProp, value, undefined);\n                return;\n            }\n            if (isSignal(value)) {\n                assertDefined(hostCtx, 'Signals can not be used outside the root');\n                if (isImmutable) {\n                    value = trackSignal(value, [1, elm, value, hostCtx.$element$, rawProp]);\n                }\n                else {\n                    value = trackSignal(value, [2, hostCtx.$element$, value, elm, rawProp]);\n                }\n                useSignal = true;\n            }\n            if (rawProp === dangerouslySetInnerHTML) {\n                htmlStr = value;\n                return;\n            }\n            if (rawProp.startsWith(PREVENT_DEFAULT)) {\n                registerQwikEvent(rawProp.slice(PREVENT_DEFAULT.length), rCtx.$static$.$containerState$);\n            }\n            let attrValue;\n            const prop = rawProp === 'htmlFor' ? 'for' : rawProp;\n            if (prop === 'class' || prop === 'className') {\n                classStr = serializeClass(value);\n            }\n            else if (prop === 'style') {\n                attrValue = stringifyStyle(value);\n            }\n            else if (isAriaAttribute(prop) || prop === 'draggable' || prop === 'spellcheck') {\n                attrValue = value != null ? String(value) : null;\n                value = attrValue;\n            }\n            else if (value === false || value == null) {\n                attrValue = null;\n            }\n            else {\n                attrValue = String(value);\n            }\n            if (attrValue != null) {\n                if (prop === 'value' && tagName === 'textarea') {\n                    htmlStr = escapeHtml(attrValue);\n                }\n                else if (isSSRUnsafeAttr(prop)) {\n                    if (qDev) {\n                        logError('Attribute value is unsafe for SSR');\n                    }\n                }\n                else {\n                    openingElement +=\n                        ' ' + (value === true ? prop : prop + '=\"' + escapeHtml(attrValue) + '\"');\n                }\n            }\n        };\n        for (const prop in props) {\n            let isImmutable = false;\n            let value;\n            if (prop in immutable) {\n                isImmutable = true;\n                value = immutable[prop];\n                if (value === _IMMUTABLE) {\n                    value = props[prop];\n                }\n            }\n            else {\n                value = props[prop];\n            }\n            handleProp(prop, value, isImmutable);\n        }\n        for (const prop in immutable) {\n            if (prop in props) {\n                continue;\n            }\n            const value = immutable[prop];\n            if (value !== _IMMUTABLE) {\n                handleProp(prop, value, true);\n            }\n        }\n        const listeners = elCtx.li;\n        if (hostCtx) {\n            if (qDev) {\n                if (tagName === 'html') {\n                    throw qError(QError_canNotRenderHTML);\n                }\n            }\n            if (hostCtx.$scopeIds$?.length) {\n                const extra = hostCtx.$scopeIds$.join(' ');\n                classStr = classStr ? `${extra} ${classStr}` : extra;\n            }\n            if (hostCtx.$flags$ & HOST_FLAG_NEED_ATTACH_LISTENER) {\n                listeners.push(...hostCtx.li);\n                hostCtx.$flags$ &= ~HOST_FLAG_NEED_ATTACH_LISTENER;\n            }\n        }\n        // Reset HOST flags\n        if (qDev) {\n            if (flags & IS_PHASING && !(flags & IS_PHRASING_CONTAINER)) {\n                if (!(tagName in phasingContent)) {\n                    throw createJSXError(`<${tagName}> can not be rendered because one of its ancestor is a <p> or a <pre>.\\n\nThis goes against the HTML spec: https://html.spec.whatwg.org/multipage/dom.html#phrasing-content-2`, node);\n                }\n            }\n            if (tagName === 'table') {\n                flags |= IS_TABLE;\n            }\n            else {\n                if (flags & IS_TABLE && !(tagName in tableContent)) {\n                    throw createJSXError(`The <table> element requires that its direct children to be '<tbody>', '<thead>', '<tfoot>' or '<caption>' instead, '<${tagName}>' was rendered.`, node);\n                }\n                flags &= ~IS_TABLE;\n            }\n            if (tagName === 'button') {\n                if (flags & IS_BUTTON) {\n                    throw createJSXError(`<${tagName}> can not be rendered because one of its ancestor is already a <button>.\\n\nThis goes against the HTML spec: https://html.spec.whatwg.org/multipage/dom.html#interactive-content`, node);\n                }\n                else {\n                    flags |= IS_BUTTON;\n                }\n            }\n            if (tagName === 'a') {\n                if (flags & IS_ANCHOR) {\n                    throw createJSXError(`<${tagName}> can not be rendered because one of its ancestor is already a <a>.\\n\nThis goes against the HTML spec: https://html.spec.whatwg.org/multipage/dom.html#interactive-content`, node);\n                }\n                else {\n                    flags |= IS_ANCHOR;\n                }\n            }\n            if (tagName === 'svg' || tagName === 'math') {\n                // These types of elements are considered phrasing content, but contain children that aren't phrasing content.\n                flags |= IS_PHRASING_CONTAINER;\n            }\n            if (flags & IS_HEAD) {\n                if (!(tagName in headContent)) {\n                    throw createJSXError(`<${tagName}> can not be rendered because it's not a valid children of the <head> element. https://html.spec.whatwg.org/multipage/dom.html#metadata-content`, node);\n                }\n            }\n            if (flags & IS_HTML) {\n                if (!(tagName in htmlContent)) {\n                    throw createJSXError(`<${tagName}> can not be rendered because it's not a valid direct children of the <html> element, only <head> and <body> are allowed.`, node);\n                }\n            }\n            else if (tagName in htmlContent) {\n                throw createJSXError(`<${tagName}> can not be rendered because its parent is not a <html> element. Make sure the 'containerTagName' is set to 'html' in entry.ssr.tsx`, node);\n            }\n            if (tagName in startPhasingContent) {\n                flags |= IS_PHASING;\n            }\n        }\n        if (isHead) {\n            flags |= IS_HEAD;\n        }\n        if (tagName in invisibleElements) {\n            flags |= IS_INVISIBLE;\n        }\n        if (tagName in textOnlyElements) {\n            flags |= IS_TEXT;\n        }\n        if (classStr) {\n            openingElement += ' class=\"' + escapeHtml(classStr) + '\"';\n        }\n        if (listeners.length > 0) {\n            const groups = groupListeners(listeners);\n            const isInvisible = (flags & IS_INVISIBLE) !== 0;\n            for (const listener of groups) {\n                const eventName = isInvisible ? normalizeInvisibleEvents(listener[0]) : listener[0];\n                openingElement +=\n                    ' ' +\n                        eventName +\n                        '=\"' +\n                        serializeQRLs(listener[1], rCtx.$static$.$containerState$, elCtx) +\n                        '\"';\n                registerQwikEvent(eventName, rCtx.$static$.$containerState$);\n            }\n        }\n        if (key != null) {\n            openingElement += ' q:key=\"' + escapeHtml(key) + '\"';\n        }\n        if (hasRef || useSignal || listeners.length > 0) {\n            if (hasRef || useSignal || listenersNeedId(listeners)) {\n                const newID = getNextIndex(rCtx);\n                openingElement += ' q:id=\"' + newID + '\"';\n                elCtx.$id$ = newID;\n            }\n            ssrCtx.$static$.$contexts$.push(elCtx);\n        }\n        if (flags & IS_HEAD) {\n            openingElement += ' q:head';\n        }\n        if (qDev && qInspector && node.dev && !(flags & IS_HEAD)) {\n            const sanitizedFileName = node?.dev?.fileName?.replace(/\\\\/g, '/');\n            if (sanitizedFileName && !/data-qwik-inspector/.test(openingElement)) {\n                openingElement += ` data-qwik-inspector=\"${escapeHtml(`${sanitizedFileName}:${node.dev.lineNumber}:${node.dev.columnNumber}`)}\"`;\n            }\n        }\n        openingElement += '>';\n        stream.write(openingElement);\n        if (tagName in emptyElements) {\n            return;\n        }\n        if (htmlStr != null) {\n            stream.write(String(htmlStr));\n            stream.write(`</${tagName}>`);\n            return;\n        }\n        if (tagName === 'html') {\n            flags |= IS_HTML;\n        }\n        else {\n            flags &= ~IS_HTML;\n        }\n        if (node.flags & static_subtree) {\n            flags |= IS_IMMUTABLE;\n        }\n        const promise = processData(node.children, rCtx, ssrCtx, stream, flags);\n        return maybeThen(promise, () => {\n            // If head inject base styles\n            if (isHead) {\n                for (const node of ssrCtx.$static$.$headNodes$) {\n                    renderNodeElementSync(node.type, node.props, stream);\n                }\n                ssrCtx.$static$.$headNodes$.length = 0;\n            }\n            // Fast path\n            if (!beforeClose) {\n                stream.write(`</${tagName}>`);\n                return;\n            }\n            // Inject before close\n            return maybeThen(beforeClose(stream), () => {\n                stream.write(`</${tagName}>`);\n            });\n        });\n    }\n    if (tagName === Virtual) {\n        const elCtx = createMockQContext(111);\n        if (rCtx.$slotCtx$) {\n            elCtx.$parentCtx$ = rCtx.$slotCtx$;\n            elCtx.$realParentCtx$ = rCtx.$cmpCtx$;\n        }\n        else {\n            elCtx.$parentCtx$ = rCtx.$cmpCtx$;\n        }\n        if (hostCtx && hostCtx.$flags$ & HOST_FLAG_DYNAMIC) {\n            addDynamicSlot(hostCtx, elCtx);\n        }\n        return renderNodeVirtual(node, elCtx, undefined, rCtx, ssrCtx, stream, flags, beforeClose);\n    }\n    if (tagName === SSRRaw) {\n        stream.write(node.props.data);\n        return;\n    }\n    if (tagName === InternalSSRStream) {\n        return renderGenerator(node, rCtx, ssrCtx, stream, flags);\n    }\n    // Inline component\n    const res = invoke(ssrCtx.$invocationContext$, tagName, node.props, node.key, node.flags, node.dev);\n    if (!shouldWrapFunctional(res, node)) {\n        return processData(res, rCtx, ssrCtx, stream, flags, beforeClose);\n    }\n    return renderNode(_jsxC(Virtual, { children: res }, 0, node.key), rCtx, ssrCtx, stream, flags, beforeClose);\n};\n/** Embed metadata while rendering the tree, to be used when resuming */\nconst processData = (node, rCtx, ssrCtx, stream, flags, beforeClose) => {\n    if (node == null || typeof node === 'boolean') {\n        return;\n    }\n    if (isString(node) || typeof node === 'number') {\n        stream.write(escapeHtml(String(node)));\n    }\n    else if (isJSXNode(node)) {\n        return renderNode(node, rCtx, ssrCtx, stream, flags, beforeClose);\n    }\n    else if (isArray(node)) {\n        return walkChildren(node, rCtx, ssrCtx, stream, flags);\n    }\n    else if (isSignal(node)) {\n        const insideText = flags & IS_TEXT;\n        const hostEl = rCtx.$cmpCtx$?.$element$;\n        let value;\n        if (hostEl) {\n            if (!insideText) {\n                const id = getNextIndex(rCtx);\n                const subs = flags & IS_IMMUTABLE\n                    ? [3, ('#' + id), node, ('#' + id)]\n                    : [4, hostEl, node, ('#' + id)];\n                value = trackSignal(node, subs);\n                if (isString(value)) {\n                    const str = jsxToString(value);\n                    ssrCtx.$static$.$textNodes$.set(str, id);\n                }\n                stream.write(`<!--t=${id}-->`);\n                processData(value, rCtx, ssrCtx, stream, flags, beforeClose);\n                stream.write(`<!---->`);\n                return;\n            }\n            else {\n                value = invoke(ssrCtx.$invocationContext$, () => node.value);\n            }\n        }\n        stream.write(escapeHtml(jsxToString(value)));\n        return;\n    }\n    else if (isPromise(node)) {\n        stream.write(FLUSH_COMMENT);\n        return node.then((node) => processData(node, rCtx, ssrCtx, stream, flags, beforeClose));\n    }\n    else {\n        logWarn('A unsupported value was passed to the JSX, skipping render. Value:', node);\n        return;\n    }\n};\nconst walkChildren = (children, rCtx, ssrContext, stream, flags) => {\n    if (children == null) {\n        return;\n    }\n    if (!isArray(children)) {\n        return processData(children, rCtx, ssrContext, stream, flags);\n    }\n    const len = children.length;\n    if (len === 1) {\n        return processData(children[0], rCtx, ssrContext, stream, flags);\n    }\n    if (len === 0) {\n        return;\n    }\n    let currentIndex = 0;\n    const buffers = [];\n    return children.reduce((prevPromise, child, index) => {\n        const buffer = [];\n        buffers.push(buffer);\n        const localStream = prevPromise\n            ? {\n                write(chunk) {\n                    if (currentIndex === index) {\n                        stream.write(chunk);\n                    }\n                    else {\n                        buffer.push(chunk);\n                    }\n                },\n            }\n            : stream;\n        const rendered = processData(child, rCtx, ssrContext, localStream, flags);\n        if (prevPromise || isPromise(rendered)) {\n            const next = () => {\n                currentIndex++;\n                if (buffers.length > currentIndex) {\n                    buffers[currentIndex].forEach((chunk) => stream.write(chunk));\n                }\n            };\n            if (isPromise(rendered)) {\n                if (prevPromise) {\n                    return Promise.all([rendered, prevPromise]).then(next);\n                }\n                else {\n                    return rendered.then(next);\n                }\n            }\n            return prevPromise.then(next);\n        }\n        else {\n            currentIndex++;\n            return undefined;\n        }\n    }, undefined);\n};\nconst flatVirtualChildren = (children, ssrCtx) => {\n    if (children == null) {\n        return null;\n    }\n    const result = _flatVirtualChildren(children, ssrCtx);\n    const nodes = isArray(result) ? result : [result];\n    if (nodes.length === 0) {\n        return null;\n    }\n    return nodes;\n};\nconst _flatVirtualChildren = (children, ssrCtx) => {\n    if (children == null) {\n        return null;\n    }\n    if (isArray(children)) {\n        return children.flatMap((c) => _flatVirtualChildren(c, ssrCtx));\n    }\n    else if (isJSXNode(children) &&\n        isFunction(children.type) &&\n        children.type !== SSRRaw &&\n        children.type !== InternalSSRStream &&\n        children.type !== Virtual) {\n        const res = invoke(ssrCtx.$invocationContext$, children.type, children.props, children.key, children.flags);\n        return flatVirtualChildren(res, ssrCtx);\n    }\n    return children;\n};\nconst setComponentProps = (rCtx, elCtx, expectProps) => {\n    const keys = Object.keys(expectProps);\n    const target = createPropsState();\n    elCtx.$props$ = createProxy(target, rCtx.$static$.$containerState$);\n    if (keys.length === 0) {\n        return;\n    }\n    const immutableMeta = (target[_IMMUTABLE] =\n        expectProps[_IMMUTABLE] ?? EMPTY_OBJ);\n    for (const prop of keys) {\n        if (prop === 'children' || prop === QSlot) {\n            continue;\n        }\n        if (isSignal(immutableMeta[prop])) {\n            target[_IMMUTABLE_PREFIX + prop] = immutableMeta[prop];\n        }\n        else {\n            target[prop] = expectProps[prop];\n        }\n    }\n};\nconst invisibleElements = {\n    head: true,\n    style: true,\n    script: true,\n    link: true,\n    meta: true,\n};\nconst textOnlyElements = {\n    title: true,\n    style: true,\n    script: true,\n    noframes: true,\n    textarea: true,\n};\nconst emptyElements = {\n    area: true,\n    base: true,\n    basefont: true,\n    bgsound: true,\n    br: true,\n    col: true,\n    embed: true,\n    frame: true,\n    hr: true,\n    img: true,\n    input: true,\n    keygen: true,\n    link: true,\n    meta: true,\n    param: true,\n    source: true,\n    track: true,\n    wbr: true,\n};\nconst startPhasingContent = {\n    p: true,\n    pre: true,\n};\nconst htmlContent = {\n    head: true,\n    body: true,\n};\nconst tableContent = {\n    tbody: true,\n    thead: true,\n    tfoot: true,\n    caption: true,\n    colgroup: true,\n};\nconst headContent = {\n    meta: true,\n    title: true,\n    link: true,\n    style: true,\n    script: true,\n    noscript: true,\n    template: true,\n    base: true,\n};\nconst phasingContent = {\n    a: true,\n    abbr: true,\n    area: true,\n    audio: true,\n    b: true,\n    bdi: true,\n    bdo: true,\n    br: true,\n    button: true,\n    canvas: true,\n    cite: true,\n    code: true,\n    command: true,\n    data: true,\n    datalist: true,\n    del: true,\n    dfn: true,\n    em: true,\n    embed: true,\n    i: true,\n    iframe: true,\n    img: true,\n    input: true,\n    ins: true,\n    itemprop: true,\n    kbd: true,\n    keygen: true,\n    label: true,\n    link: true,\n    map: true,\n    mark: true,\n    math: true,\n    meta: true,\n    meter: true,\n    noscript: true,\n    object: true,\n    option: true,\n    output: true,\n    picture: true,\n    progress: true,\n    q: true,\n    ruby: true,\n    s: true,\n    samp: true,\n    script: true,\n    select: true,\n    slot: true,\n    small: true,\n    span: true,\n    strong: true,\n    sub: true,\n    sup: true,\n    svg: true,\n    template: true,\n    textarea: true,\n    time: true,\n    u: true,\n    var: true,\n    video: true,\n    wbr: true,\n};\nconst ESCAPE_HTML = /[&<>'\"]/g;\nexport const registerQwikEvent = (prop, containerState) => {\n    containerState.$events$.add(getEventName(prop));\n};\nconst escapeValue = (value) => {\n    if (typeof value === 'string') {\n        return escapeHtml(value);\n    }\n    return value;\n};\nconst escapeHtml = (s) => {\n    return s.replace(ESCAPE_HTML, (c) => {\n        switch (c) {\n            case '&':\n                return '&amp;';\n            case '<':\n                return '&lt;';\n            case '>':\n                return '&gt;';\n            case '\"':\n                return '&quot;';\n            case \"'\":\n                return '&#39;';\n            default:\n                return '';\n        }\n    });\n};\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/; // eslint-disable-line no-control-regex\nexport const isSSRUnsafeAttr = (name) => {\n    return unsafeAttrCharRE.test(name);\n};\nconst listenersNeedId = (listeners) => {\n    return listeners.some((l) => l[1].$captureRef$ && l[1].$captureRef$.length > 0);\n};\nconst addDynamicSlot = (hostCtx, elCtx) => {\n    const dynamicSlots = (hostCtx.$dynamicSlots$ ||= []);\n    if (!dynamicSlots.includes(elCtx)) {\n        dynamicSlots.push(elCtx);\n    }\n};\nconst normalizeInvisibleEvents = (eventName) => {\n    return eventName === 'on:qvisible' ? 'on-document:qinit' : eventName;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLXNzci5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS9yZW5kZXIvc3NyL3JlbmRlci1zc3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osTUFBTSxHQUVQLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0UsT0FBTyxFQUNMLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsOEJBQThCLEVBQzlCLGFBQWEsR0FFZCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsY0FBYyxFQUNkLFFBQVEsRUFDUixRQUFRLEdBRVQsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBc0IsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZ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TyxDQUFDLGNBQWMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2xDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxTQUFpQixFQUFFLEVBQUU7SUFDckQsT0FBTyxTQUFTLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3ZFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNyZWF0ZUNvbnRhaW5lclN0YXRlLFxuICBnZXRFdmVudE5hbWUsXG4gIHNldFJlZixcbiAgdHlwZSBDb250YWluZXJTdGF0ZSxcbn0gZnJvbSAnLi4vLi4vY29udGFpbmVyL2NvbnRhaW5lcic7XG5pbXBvcnQgeyBhc3NlcnREZWZpbmVkIH0gZnJvbSAnLi4vLi4vZXJyb3IvYXNzZXJ0JztcbmltcG9ydCB7IFFFcnJvcl9jYW5Ob3RSZW5kZXJIVE1MLCBxRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci9lcnJvcic7XG5pbXBvcnQgeyBzZXJpYWxpemVRUkxzIH0gZnJvbSAnLi4vLi4vcXJsL3FybCc7XG5pbXBvcnQgeyBRX0NUWCwgX0lNTVVUQUJMRSwgX0lNTVVUQUJMRV9QUkVGSVggfSBmcm9tICcuLi8uLi9zdGF0ZS9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgSE9TVF9GTEFHX0RJUlRZLFxuICBIT1NUX0ZMQUdfRFlOQU1JQyxcbiAgSE9TVF9GTEFHX05FRURfQVRUQUNIX0xJU1RFTkVSLFxuICBjcmVhdGVDb250ZXh0LFxuICB0eXBlIFFDb250ZXh0LFxufSBmcm9tICcuLi8uLi9zdGF0ZS9jb250ZXh0JztcbmltcG9ydCB7XG4gIFBSRVZFTlRfREVGQVVMVCxcbiAgZ3JvdXBMaXN0ZW5lcnMsXG4gIGlzT25Qcm9wLFxuICBzZXRFdmVudCxcbiAgdHlwZSBMaXN0ZW5lcixcbn0gZnJvbSAnLi4vLi4vc3RhdGUvbGlzdGVuZXJzJztcbmltcG9ydCB7IGlzU2lnbmFsIH0gZnJvbSAnLi4vLi4vc3RhdGUvc2lnbmFsJztcbmltcG9ydCB7IGNyZWF0ZVByb3BzU3RhdGUsIGNyZWF0ZVByb3h5IH0gZnJvbSAnLi4vLi4vc3RhdGUvc3RvcmUnO1xuaW1wb3J0IHsgc2VyaWFsaXplU1N0eWxlIH0gZnJvbSAnLi4vLi4vc3R5bGUvcXJsLXN0eWxlcyc7XG5pbXBvcnQgeyBpbnZva2UsIG5ld0ludm9rZUNvbnRleHQsIHRyYWNrU2lnbmFsLCB0eXBlIEludm9rZUNvbnRleHQgfSBmcm9tICcuLi8uLi91c2UvdXNlLWNvcmUnO1xuaW1wb3J0IHsgRU1QVFlfT0JKIH0gZnJvbSAnLi4vLi4vdXRpbC9mbHl3ZWlnaHQnO1xuaW1wb3J0IHsgbG9nRXJyb3IsIGxvZ1dhcm4gfSBmcm9tICcuLi8uLi91dGlsL2xvZyc7XG5pbXBvcnQgeyBFTEVNRU5UX0lELCBPblJlbmRlclByb3AsIFFTY29wZWRTdHlsZSwgUVNsb3QsIFFTbG90UywgUVN0eWxlIH0gZnJvbSAnLi4vLi4vdXRpbC9tYXJrZXJzJztcbmltcG9ydCB7IGlzUHJvbWlzZSwgbWF5YmVUaGVuIH0gZnJvbSAnLi4vLi4vdXRpbC9wcm9taXNlcyc7XG5pbXBvcnQgeyBxRGV2LCBxSW5zcGVjdG9yLCBzZWFsIH0gZnJvbSAnLi4vLi4vdXRpbC9xZGV2JztcbmltcG9ydCB7IGlzQXJyYXksIGlzRnVuY3Rpb24sIGlzU3RyaW5nLCB0eXBlIFZhbHVlT3JQcm9taXNlIH0gZnJvbSAnLi4vLi4vdXRpbC90eXBlcyc7XG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vLi4vdmVyc2lvbic7XG5pbXBvcnQgdHlwZSB7IFF3aWtFbGVtZW50IH0gZnJvbSAnLi4vZG9tL3ZpcnR1YWwtZWxlbWVudCc7XG5pbXBvcnQge1xuICBjcmVhdGVSZW5kZXJDb250ZXh0LFxuICBkYW5nZXJvdXNseVNldElubmVySFRNTCxcbiAgZXhlY3V0ZUNvbXBvbmVudCxcbiAgZ2V0TmV4dEluZGV4LFxuICBpc0FyaWFBdHRyaWJ1dGUsXG4gIGpzeFRvU3RyaW5nLFxuICBwdXNoUmVuZGVyQ29udGV4dCxcbiAgc2VyaWFsaXplQ2xhc3MsXG4gIHNob3VsZFdyYXBGdW5jdGlvbmFsLFxuICBzdGF0aWNfc3VidHJlZSxcbiAgc3RyaW5naWZ5U3R5bGUsXG59IGZyb20gJy4uL2V4ZWN1dGUtY29tcG9uZW50JztcbmltcG9ydCB7IFZpcnR1YWwsIF9qc3hDLCBfanN4USwgY3JlYXRlSlNYRXJyb3IsIGlzSlNYTm9kZSB9IGZyb20gJy4uL2pzeC9qc3gtcnVudGltZSc7XG5pbXBvcnQgdHlwZSB7IEZ1bmN0aW9uQ29tcG9uZW50LCBKU1hOb2RlLCBKU1hOb2RlSW50ZXJuYWwsIEpTWE91dHB1dCB9IGZyb20gJy4uL2pzeC90eXBlcy9qc3gtbm9kZSc7XG5pbXBvcnQgdHlwZSB7IENsYXNzTGlzdCwgSlNYQ2hpbGRyZW4gfSBmcm9tICcuLi9qc3gvdHlwZXMvanN4LXF3aWstYXR0cmlidXRlcyc7XG5pbXBvcnQgeyBJbnRlcm5hbFNTUlN0cmVhbSwgU1NSUmF3IH0gZnJvbSAnLi4vanN4L3V0aWxzLnB1YmxpYyc7XG5pbXBvcnQgdHlwZSB7IFJlbmRlckNvbnRleHQgfSBmcm9tICcuLi90eXBlcyc7XG5cbmNvbnN0IEZMVVNIX0NPTU1FTlQgPSAnPCEtLXFrc3NyLWYtLT4nO1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IHR5cGUgU3RyZWFtV3JpdGVyID0ge1xuICB3cml0ZTogKGNodW5rOiBzdHJpbmcpID0+IHZvaWQ7XG59O1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJTU1JPcHRpb25zIHtcbiAgY29udGFpbmVyVGFnTmFtZTogc3RyaW5nO1xuICBjb250YWluZXJBdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBzdHJlYW06IFN0cmVhbVdyaXRlcjtcbiAgYmFzZT86IHN0cmluZztcbiAgc2VydmVyRGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGJlZm9yZUNvbnRlbnQ/OiBKU1hOb2RlPHN0cmluZz5bXTtcbiAgYmVmb3JlQ2xvc2U/OiAoXG4gICAgY29udGV4dHM6IFFDb250ZXh0W10sXG4gICAgY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlLFxuICAgIGNvbnRhaW5zRHluYW1pYzogYm9vbGVhbixcbiAgICB0ZXh0Tm9kZXM6IE1hcDxzdHJpbmcsIHN0cmluZz5cbiAgKSA9PiBQcm9taXNlPEpTWE5vZGU+O1xuICBtYW5pZmVzdEhhc2g6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTU1JDb250ZXh0IHtcbiAgJHByb2plY3RlZEN0eHMkOiBbUmVuZGVyQ29udGV4dCwgU1NSQ29udGV4dF0gfCB1bmRlZmluZWQ7XG4gICRwcm9qZWN0ZWRDaGlsZHJlbiQ6IFJlY29yZDxzdHJpbmcsIGFueVtdIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZDtcbiAgJGludm9jYXRpb25Db250ZXh0JDogSW52b2tlQ29udGV4dCB8IHVuZGVmaW5lZDtcbiAgJHN0YXRpYyQ6IFNTUkNvbnRleHRTdGF0aWM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1NSQ29udGV4dFN0YXRpYyB7XG4gICRsb2NhbGUkOiBzdHJpbmc7XG4gICRjb250ZXh0cyQ6IFFDb250ZXh0W107XG4gICRoZWFkTm9kZXMkOiBKU1hOb2RlPHN0cmluZz5bXTtcbiAgJHRleHROb2RlcyQ6IE1hcDxzdHJpbmcsIHN0cmluZz47XG59XG5cbmNvbnN0IElTX0hFQUQgPSAxIDw8IDA7XG5jb25zdCBJU19IVE1MID0gMSA8PCAyO1xuY29uc3QgSVNfVEVYVCA9IDEgPDwgMztcbmNvbnN0IElTX0lOVklTSUJMRSA9IDEgPDwgNDtcbmNvbnN0IElTX1BIQVNJTkcgPSAxIDw8IDU7XG5jb25zdCBJU19BTkNIT1IgPSAxIDw8IDY7XG5jb25zdCBJU19CVVRUT04gPSAxIDw8IDc7XG5jb25zdCBJU19UQUJMRSA9IDEgPDwgODtcbmNvbnN0IElTX1BIUkFTSU5HX0NPTlRBSU5FUiA9IDEgPDwgOTtcbmNvbnN0IElTX0lNTVVUQUJMRSA9IDEgPDwgMTA7XG5cbmNsYXNzIE1vY2tFbGVtZW50IHtcbiAgW1FfQ1RYXSA9IG51bGw7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBub2RlVHlwZTogbnVtYmVyKSB7XG4gICAgc2VhbCh0aGlzKTtcbiAgfVxufVxuXG5jb25zdCBjcmVhdGVEb2N1bWVudCA9ICgpID0+IHtcbiAgcmV0dXJuIG5ldyBNb2NrRWxlbWVudCg5KTtcbn07XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjb25zdCBfcmVuZGVyU1NSID0gYXN5bmMgKG5vZGU6IEpTWE91dHB1dCwgb3B0czogUmVuZGVyU1NST3B0aW9ucykgPT4ge1xuICBjb25zdCByb290ID0gb3B0cy5jb250YWluZXJUYWdOYW1lO1xuICBjb25zdCBjb250YWluZXJFbCA9IGNyZWF0ZU1vY2tRQ29udGV4dCgxKS4kZWxlbWVudCQ7XG4gIGNvbnN0IGNvbnRhaW5lclN0YXRlID0gY3JlYXRlQ29udGFpbmVyU3RhdGUoY29udGFpbmVyRWwgYXMgRWxlbWVudCwgb3B0cy5iYXNlID8/ICcvJyk7XG4gIGNvbnRhaW5lclN0YXRlLiRzZXJ2ZXJEYXRhJC5sb2NhbGUgPSBvcHRzLnNlcnZlckRhdGE/LmxvY2FsZTtcbiAgY29uc3QgZG9jID0gY3JlYXRlRG9jdW1lbnQoKTtcbiAgY29uc3QgckN0eCA9IGNyZWF0ZVJlbmRlckNvbnRleHQoZG9jIGFzIGFueSwgY29udGFpbmVyU3RhdGUpO1xuICBjb25zdCBoZWFkTm9kZXMgPSBvcHRzLmJlZm9yZUNvbnRlbnQgPz8gW107XG4gIGlmIChxRGV2KSB7XG4gICAgaWYgKFxuICAgICAgcm9vdCBpbiBwaGFzaW5nQ29udGVudCB8fFxuICAgICAgcm9vdCBpbiBlbXB0eUVsZW1lbnRzIHx8XG4gICAgICByb290IGluIHRhYmxlQ29udGVudCB8fFxuICAgICAgcm9vdCBpbiBzdGFydFBoYXNpbmdDb250ZW50IHx8XG4gICAgICByb290IGluIGludmlzaWJsZUVsZW1lbnRzXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBUaGUgXCJjb250YWluZXJUYWdOYW1lXCIgY2FuIG5vdCBiZSBcIiR7cm9vdH1cIi4gUGxlYXNlIGNob29zZSBhIGRpZmZlcmVudCB0YWcgbmFtZSBsaWtlOiBcImRpdlwiLCBcImh0bWxcIiwgXCJjdXN0b20tY29udGFpbmVyXCIuYFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgY29uc3Qgc3NyQ3R4OiBTU1JDb250ZXh0ID0ge1xuICAgICRzdGF0aWMkOiB7XG4gICAgICAkY29udGV4dHMkOiBbXSxcbiAgICAgICRoZWFkTm9kZXMkOiByb290ID09PSAnaHRtbCcgPyBoZWFkTm9kZXMgOiBbXSxcbiAgICAgICRsb2NhbGUkOiBvcHRzLnNlcnZlckRhdGE/LmxvY2FsZSxcbiAgICAgICR0ZXh0Tm9kZXMkOiBuZXcgTWFwKCksXG4gICAgfSxcbiAgICAkcHJvamVjdGVkQ2hpbGRyZW4kOiB1bmRlZmluZWQsXG4gICAgJHByb2plY3RlZEN0eHMkOiB1bmRlZmluZWQsXG4gICAgJGludm9jYXRpb25Db250ZXh0JDogdW5kZWZpbmVkLFxuICB9O1xuICBzZWFsKHNzckN0eCk7XG5cbiAgY29uc3QgbG9jYWxlID0gb3B0cy5zZXJ2ZXJEYXRhPy5sb2NhbGU7XG4gIGNvbnN0IGNvbnRhaW5lckF0dHJpYnV0ZXMgPSBvcHRzLmNvbnRhaW5lckF0dHJpYnV0ZXM7XG4gIGNvbnN0IHFSZW5kZXIgPSBjb250YWluZXJBdHRyaWJ1dGVzWydxOnJlbmRlciddO1xuICBjb250YWluZXJBdHRyaWJ1dGVzWydxOmNvbnRhaW5lciddID0gJ3BhdXNlZCc7XG4gIGNvbnRhaW5lckF0dHJpYnV0ZXNbJ3E6dmVyc2lvbiddID0gdmVyc2lvbiA/PyAnZGV2JztcbiAgY29udGFpbmVyQXR0cmlidXRlc1sncTpyZW5kZXInXSA9IChxUmVuZGVyID8gcVJlbmRlciArICctJyA6ICcnKSArIChxRGV2ID8gJ3Nzci1kZXYnIDogJ3NzcicpO1xuICBjb250YWluZXJBdHRyaWJ1dGVzWydxOmJhc2UnXSA9IG9wdHMuYmFzZSB8fCAnJztcbiAgY29udGFpbmVyQXR0cmlidXRlc1sncTpsb2NhbGUnXSA9IGxvY2FsZTtcbiAgY29udGFpbmVyQXR0cmlidXRlc1sncTptYW5pZmVzdC1oYXNoJ10gPSBvcHRzLm1hbmlmZXN0SGFzaDtcbiAgY29udGFpbmVyQXR0cmlidXRlc1sncTppbnN0YW5jZSddID0gaGFzaCgpO1xuXG4gIGNvbnN0IGNoaWxkcmVuID0gcm9vdCA9PT0gJ2h0bWwnID8gW25vZGVdIDogW2hlYWROb2Rlcywgbm9kZV07XG4gIGlmIChyb290ICE9PSAnaHRtbCcpIHtcbiAgICBjb250YWluZXJBdHRyaWJ1dGVzLmNsYXNzID1cbiAgICAgICdxY/Cfk6YnICsgKGNvbnRhaW5lckF0dHJpYnV0ZXMuY2xhc3MgPyAnICcgKyBjb250YWluZXJBdHRyaWJ1dGVzLmNsYXNzIDogJycpO1xuICB9XG4gIGNvbnN0IHNlcnZlckRhdGEgPSAoY29udGFpbmVyU3RhdGUuJHNlcnZlckRhdGEkID0ge1xuICAgIC4uLmNvbnRhaW5lclN0YXRlLiRzZXJ2ZXJEYXRhJCxcbiAgICAuLi5vcHRzLnNlcnZlckRhdGEsXG4gIH0pO1xuICBzZXJ2ZXJEYXRhLmNvbnRhaW5lckF0dHJpYnV0ZXMgPSB7XG4gICAgLi4uc2VydmVyRGF0YVsnY29udGFpbmVyQXR0cmlidXRlcyddLFxuICAgIC4uLmNvbnRhaW5lckF0dHJpYnV0ZXMsXG4gIH07XG4gIGNvbnN0IGludm9rZUN0eCA9IChzc3JDdHguJGludm9jYXRpb25Db250ZXh0JCA9IG5ld0ludm9rZUNvbnRleHQobG9jYWxlKSk7XG4gIGludm9rZUN0eC4kcmVuZGVyQ3R4JCA9IHJDdHg7XG4gIHNzckN0eC4kaW52b2NhdGlvbkNvbnRleHQkO1xuXG4gIGNvbnN0IHJvb3ROb2RlID0gX2pzeFEoXG4gICAgcm9vdCxcbiAgICBudWxsLFxuICAgIGNvbnRhaW5lckF0dHJpYnV0ZXMsXG4gICAgY2hpbGRyZW4sXG4gICAgSE9TVF9GTEFHX0RJUlRZIHwgSE9TVF9GTEFHX05FRURfQVRUQUNIX0xJU1RFTkVSLFxuICAgIG51bGxcbiAgKTtcbiAgY29udGFpbmVyU3RhdGUuJGhvc3RzUmVuZGVyaW5nJCA9IG5ldyBTZXQoKTtcbiAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PlxuICAgIHJlbmRlclJvb3Qocm9vdE5vZGUsIHJDdHgsIHNzckN0eCwgb3B0cy5zdHJlYW0sIGNvbnRhaW5lclN0YXRlLCBvcHRzKVxuICApO1xufTtcblxuY29uc3QgaGFzaCA9ICgpID0+IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpO1xuXG5jb25zdCByZW5kZXJSb290ID0gYXN5bmMgKFxuICBub2RlOiBKU1hOb2RlSW50ZXJuYWwsXG4gIHJDdHg6IFJlbmRlckNvbnRleHQsXG4gIHNzckN0eDogU1NSQ29udGV4dCxcbiAgc3RyZWFtOiBTdHJlYW1Xcml0ZXIsXG4gIGNvbnRhaW5lclN0YXRlOiBDb250YWluZXJTdGF0ZSxcbiAgb3B0czogUmVuZGVyU1NST3B0aW9uc1xuKSA9PiB7XG4gIGNvbnN0IGJlZm9yZUNsb3NlID0gb3B0cy5iZWZvcmVDbG9zZTtcblxuICBhd2FpdCByZW5kZXJOb2RlKFxuICAgIG5vZGUsXG4gICAgckN0eCxcbiAgICBzc3JDdHgsXG4gICAgc3RyZWFtLFxuICAgIDAsXG4gICAgYmVmb3JlQ2xvc2VcbiAgICAgID8gKHN0cmVhbTogU3RyZWFtV3JpdGVyKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYmVmb3JlQ2xvc2UoXG4gICAgICAgICAgICBzc3JDdHguJHN0YXRpYyQuJGNvbnRleHRzJCxcbiAgICAgICAgICAgIGNvbnRhaW5lclN0YXRlLFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICBzc3JDdHguJHN0YXRpYyQuJHRleHROb2RlcyRcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBwcm9jZXNzRGF0YShyZXN1bHQsIHJDdHgsIHNzckN0eCwgc3RyZWFtLCAwLCB1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZFxuICApO1xuXG4gIGlmIChxRGV2KSB7XG4gICAgaWYgKHNzckN0eC4kc3RhdGljJC4kaGVhZE5vZGVzJC5sZW5ndGggPiAwKSB7XG4gICAgICBsb2dFcnJvcihcbiAgICAgICAgJ01pc3NpbmcgPGhlYWQ+LiBHbG9iYWwgc3R5bGVzIGNvdWxkIG5vdCBiZSByZW5kZXJlZC4gUGxlYXNlIHJlbmRlciBhIDxoZWFkPiBlbGVtZW50IGF0IHRoZSByb290IG9mIHRoZSBhcHAnXG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gckN0eDtcbn07XG5cbmNvbnN0IHJlbmRlckdlbmVyYXRvciA9IGFzeW5jIChcbiAgbm9kZTogSlNYTm9kZTx0eXBlb2YgSW50ZXJuYWxTU1JTdHJlYW0+LFxuICByQ3R4OiBSZW5kZXJDb250ZXh0LFxuICBzc3JDdHg6IFNTUkNvbnRleHQsXG4gIHN0cmVhbTogU3RyZWFtV3JpdGVyLFxuICBmbGFnczogbnVtYmVyXG4pID0+IHtcbiAgc3RyZWFtLndyaXRlKEZMVVNIX0NPTU1FTlQpO1xuICBjb25zdCBnZW5lcmF0b3IgPSBub2RlLnByb3BzLmNoaWxkcmVuO1xuICBsZXQgdmFsdWU6IEFzeW5jR2VuZXJhdG9yO1xuICBpZiAoaXNGdW5jdGlvbihnZW5lcmF0b3IpKSB7XG4gICAgY29uc3QgdiA9IGdlbmVyYXRvcih7XG4gICAgICB3cml0ZShjaHVuaykge1xuICAgICAgICBzdHJlYW0ud3JpdGUoY2h1bmspO1xuICAgICAgICBzdHJlYW0ud3JpdGUoRkxVU0hfQ09NTUVOVCk7XG4gICAgICB9LFxuICAgIH0pO1xuICAgIGlmIChpc1Byb21pc2UodikpIHtcbiAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgICB2YWx1ZSA9IHY7XG4gIH0gZWxzZSB7XG4gICAgdmFsdWUgPSBnZW5lcmF0b3I7XG4gIH1cbiAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiB2YWx1ZSkge1xuICAgIGF3YWl0IHByb2Nlc3NEYXRhKGNodW5rLCByQ3R4LCBzc3JDdHgsIHN0cmVhbSwgZmxhZ3MsIHVuZGVmaW5lZCk7XG4gICAgc3RyZWFtLndyaXRlKEZMVVNIX0NPTU1FTlQpO1xuICB9XG59O1xuXG5jb25zdCByZW5kZXJOb2RlVmlydHVhbCA9IChcbiAgbm9kZTogSlNYTm9kZTx0eXBlb2YgVmlydHVhbD4sXG4gIGVsQ3R4OiBRQ29udGV4dCxcbiAgZXh0cmFOb2RlczogSlNYTm9kZTxzdHJpbmc+W10gfCB1bmRlZmluZWQsXG4gIHJDdHg6IFJlbmRlckNvbnRleHQsXG4gIHNzckN0eDogU1NSQ29udGV4dCxcbiAgc3RyZWFtOiBTdHJlYW1Xcml0ZXIsXG4gIGZsYWdzOiBudW1iZXIsXG4gIGJlZm9yZUNsb3NlPzogKHN0cmVhbTogU3RyZWFtV3JpdGVyKSA9PiBWYWx1ZU9yUHJvbWlzZTx2b2lkPlxuKSA9PiB7XG4gIGNvbnN0IHByb3BzID0gbm9kZS5wcm9wcztcbiAgY29uc3QgcmVuZGVyUXJsID0gcHJvcHNbT25SZW5kZXJQcm9wXTtcbiAgaWYgKHJlbmRlclFybCkge1xuICAgIGVsQ3R4LiRjb21wb25lbnRRcmwkID0gcmVuZGVyUXJsO1xuICAgIHJldHVybiByZW5kZXJTU1JDb21wb25lbnQockN0eCwgc3NyQ3R4LCBzdHJlYW0sIGVsQ3R4LCBub2RlLCBmbGFncywgYmVmb3JlQ2xvc2UpO1xuICB9XG4gIGxldCB2aXJ0dWFsQ29tbWVudCA9ICc8IS0tcXYnICsgcmVuZGVyVmlydHVhbEF0dHJpYnV0ZXMocHJvcHMgYXMgYW55KTtcbiAgY29uc3QgaXNTbG90ID0gUVNsb3RTIGluIHByb3BzO1xuICBjb25zdCBrZXkgPSBub2RlLmtleSAhPSBudWxsID8gZXNjYXBlSHRtbChTdHJpbmcobm9kZS5rZXkpKSA6IG51bGw7XG4gIGlmIChpc1Nsb3QpIHtcbiAgICBhc3NlcnREZWZpbmVkKHJDdHguJGNtcEN0eCQ/LiRpZCQsICdob3N0SWQgbXVzdCBiZSBkZWZpbmVkIGZvciBhIHNsb3QnKTtcbiAgICB2aXJ0dWFsQ29tbWVudCArPSAnIHE6c3JlZj0nICsgckN0eC4kY21wQ3R4JC4kaWQkO1xuICB9XG4gIGlmIChrZXkgIT0gbnVsbCkge1xuICAgIHZpcnR1YWxDb21tZW50ICs9ICcgcTprZXk9JyArIGtleTtcbiAgfVxuICB2aXJ0dWFsQ29tbWVudCArPSAnLS0+JztcbiAgc3RyZWFtLndyaXRlKHZpcnR1YWxDb21tZW50KTtcblxuICBjb25zdCBodG1sID0gbm9kZS5wcm9wc1tkYW5nZXJvdXNseVNldElubmVySFRNTF07XG4gIGlmIChodG1sKSB7XG4gICAgc3RyZWFtLndyaXRlKGh0bWwpO1xuICAgIHN0cmVhbS53cml0ZShDTE9TRV9WSVJUVUFMKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGV4dHJhTm9kZXMpIHtcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgZXh0cmFOb2Rlcykge1xuICAgICAgLy8gV2UgdHJ1c3QgdGhhdCB0aGUgYXR0cmlidXRlcyBhcmUgc3RyaW5nc1xuICAgICAgcmVuZGVyTm9kZUVsZW1lbnRTeW5jKG5vZGUudHlwZSwgbm9kZS5wcm9wcyBhcyBhbnkgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgc3RyZWFtKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcHJvbWlzZSA9IHdhbGtDaGlsZHJlbihub2RlLmNoaWxkcmVuLCByQ3R4LCBzc3JDdHgsIHN0cmVhbSwgZmxhZ3MpO1xuICByZXR1cm4gbWF5YmVUaGVuKHByb21pc2UsICgpID0+IHtcbiAgICAvLyBGYXN0IHBhdGhcbiAgICBpZiAoIWlzU2xvdCAmJiAhYmVmb3JlQ2xvc2UpIHtcbiAgICAgIHN0cmVhbS53cml0ZShDTE9TRV9WSVJUVUFMKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcHJvbWlzZTogVmFsdWVPclByb21pc2U8dm9pZD4gfCB1bmRlZmluZWQ7XG4gICAgaWYgKGlzU2xvdCkge1xuICAgICAgYXNzZXJ0RGVmaW5lZChrZXksICdrZXkgbXVzdCBiZSBkZWZpbmVkIGZvciBhIHNsb3QnKTtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBzc3JDdHguJHByb2plY3RlZENoaWxkcmVuJD8uW2tleV07XG4gICAgICBpZiAoY29udGVudCkge1xuICAgICAgICBjb25zdCBbckN0eCwgc0N0eF0gPSBzc3JDdHguJHByb2plY3RlZEN0eHMkITtcbiAgICAgICAgY29uc3QgbmV3U2xvdFJjdHggPSBwdXNoUmVuZGVyQ29udGV4dChyQ3R4KTtcbiAgICAgICAgbmV3U2xvdFJjdHguJHNsb3RDdHgkID0gZWxDdHg7XG4gICAgICAgIHNzckN0eC4kcHJvamVjdGVkQ2hpbGRyZW4kIVtrZXldID0gdW5kZWZpbmVkO1xuICAgICAgICBwcm9taXNlID0gcHJvY2Vzc0RhdGEoY29udGVudCwgbmV3U2xvdFJjdHgsIHNDdHgsIHN0cmVhbSwgZmxhZ3MpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBJbmplY3QgYmVmb3JlIGNsb3NlXG4gICAgaWYgKGJlZm9yZUNsb3NlKSB7XG4gICAgICBwcm9taXNlID0gbWF5YmVUaGVuKHByb21pc2UsICgpID0+IGJlZm9yZUNsb3NlKHN0cmVhbSkpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXliZVRoZW4ocHJvbWlzZSwgKCkgPT4ge1xuICAgICAgc3RyZWFtLndyaXRlKENMT1NFX1ZJUlRVQUwpO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbmNvbnN0IENMT1NFX1ZJUlRVQUwgPSBgPCEtLS9xdi0tPmA7XG5cbmV4cG9ydCBjb25zdCByZW5kZXJBdHRyaWJ1dGVzID0gKGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcgPT4ge1xuICBsZXQgdGV4dCA9ICcnO1xuICBmb3IgKGNvbnN0IHByb3AgaW4gYXR0cmlidXRlcykge1xuICAgIGlmIChwcm9wID09PSBkYW5nZXJvdXNseVNldElubmVySFRNTCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IHZhbHVlID0gYXR0cmlidXRlc1twcm9wXTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgdGV4dCArPSAnICcgKyAodmFsdWUgPT09ICcnID8gcHJvcCA6IHByb3AgKyAnPVwiJyArIGVzY2FwZVZhbHVlKHZhbHVlKSArICdcIicpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGV4dDtcbn07XG5cbmV4cG9ydCBjb25zdCByZW5kZXJWaXJ0dWFsQXR0cmlidXRlcyA9IChhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nID0+IHtcbiAgbGV0IHRleHQgPSAnJztcbiAgZm9yIChjb25zdCBwcm9wIGluIGF0dHJpYnV0ZXMpIHtcbiAgICBpZiAocHJvcCA9PT0gJ2NoaWxkcmVuJyB8fCBwcm9wID09PSBkYW5nZXJvdXNseVNldElubmVySFRNTCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IHZhbHVlID0gYXR0cmlidXRlc1twcm9wXTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgdGV4dCArPSAnICcgKyAodmFsdWUgPT09ICcnID8gcHJvcCA6IHByb3AgKyAnPScgKyBlc2NhcGVWYWx1ZSh2YWx1ZSkgKyAnJyk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0ZXh0O1xufTtcblxuY29uc3QgcmVuZGVyTm9kZUVsZW1lbnRTeW5jID0gKFxuICB0YWdOYW1lOiBzdHJpbmcsXG4gIGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gIHN0cmVhbTogU3RyZWFtV3JpdGVyXG4pID0+IHtcbiAgc3RyZWFtLndyaXRlKCc8JyArIHRhZ05hbWUgKyByZW5kZXJBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpICsgJz4nKTtcbiAgY29uc3QgZW1wdHkgPSAhIWVtcHR5RWxlbWVudHNbdGFnTmFtZV07XG4gIGlmIChlbXB0eSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFJlbmRlciBpbm5lckhUTUxcbiAgY29uc3QgaW5uZXJIVE1MID0gYXR0cmlidXRlc1tkYW5nZXJvdXNseVNldElubmVySFRNTF07XG4gIGlmIChpbm5lckhUTUwgIT0gbnVsbCkge1xuICAgIHN0cmVhbS53cml0ZShpbm5lckhUTUwpO1xuICB9XG4gIHN0cmVhbS53cml0ZShgPC8ke3RhZ05hbWV9PmApO1xufTtcblxuLyoqIFJlbmRlciBhIGNvbXBvbmVudCQgKi9cbmNvbnN0IHJlbmRlclNTUkNvbXBvbmVudCA9IChcbiAgckN0eDogUmVuZGVyQ29udGV4dCxcbiAgc3NyQ3R4OiBTU1JDb250ZXh0LFxuICBzdHJlYW06IFN0cmVhbVdyaXRlcixcbiAgZWxDdHg6IFFDb250ZXh0LFxuICBub2RlOiBKU1hOb2RlPHR5cGVvZiBWaXJ0dWFsPixcbiAgZmxhZ3M6IG51bWJlcixcbiAgYmVmb3JlQ2xvc2U/OiAoc3RyZWFtOiBTdHJlYW1Xcml0ZXIpID0+IFZhbHVlT3JQcm9taXNlPHZvaWQ+XG4pOiBWYWx1ZU9yUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHByb3BzID0gbm9kZS5wcm9wcztcbiAgc2V0Q29tcG9uZW50UHJvcHMockN0eCwgZWxDdHgsIHByb3BzLnByb3BzISk7XG4gIHJldHVybiBtYXliZVRoZW4oZXhlY3V0ZUNvbXBvbmVudChyQ3R4LCBlbEN0eCksIChyZXMpID0+IHtcbiAgICBjb25zdCBob3N0RWxlbWVudCA9IGVsQ3R4LiRlbGVtZW50JDtcbiAgICBjb25zdCBuZXdSQ3R4ID0gcmVzLnJDdHg7XG4gICAgY29uc3QgaUN0eCA9IG5ld0ludm9rZUNvbnRleHQoc3NyQ3R4LiRzdGF0aWMkLiRsb2NhbGUkLCBob3N0RWxlbWVudCwgdW5kZWZpbmVkKTtcbiAgICBpQ3R4LiRzdWJzY3JpYmVyJCA9IFswLCBob3N0RWxlbWVudF07XG4gICAgaUN0eC4kcmVuZGVyQ3R4JCA9IG5ld1JDdHg7XG4gICAgY29uc3QgbmV3U1NyQ29udGV4dDogU1NSQ29udGV4dCA9IHtcbiAgICAgICRzdGF0aWMkOiBzc3JDdHguJHN0YXRpYyQsXG4gICAgICAkcHJvamVjdGVkQ2hpbGRyZW4kOiBzcGxpdFByb2plY3RlZENoaWxkcmVuKG5vZGUuY2hpbGRyZW4sIHNzckN0eCksXG4gICAgICAkcHJvamVjdGVkQ3R4cyQ6IFtyQ3R4LCBzc3JDdHhdLFxuICAgICAgJGludm9jYXRpb25Db250ZXh0JDogaUN0eCxcbiAgICB9O1xuXG4gICAgY29uc3QgZXh0cmFOb2RlczogSlNYTm9kZTxzdHJpbmc+W10gPSBbXTtcbiAgICBpZiAoZWxDdHguJGFwcGVuZFN0eWxlcyQpIHtcbiAgICAgIGNvbnN0IGlzSFRNTCA9ICEhKGZsYWdzICYgSVNfSFRNTCk7XG4gICAgICBjb25zdCBhcnJheSA9IGlzSFRNTCA/IHNzckN0eC4kc3RhdGljJC4kaGVhZE5vZGVzJCA6IGV4dHJhTm9kZXM7XG4gICAgICBmb3IgKGNvbnN0IHN0eWxlIG9mIGVsQ3R4LiRhcHBlbmRTdHlsZXMkKSB7XG4gICAgICAgIGFycmF5LnB1c2goXG4gICAgICAgICAgX2pzeFEoXG4gICAgICAgICAgICAnc3R5bGUnLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBbUVN0eWxlXTogc3R5bGUuc3R5bGVJZCxcbiAgICAgICAgICAgICAgW2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MXTogc3R5bGUuY29udGVudCxcbiAgICAgICAgICAgICAgaGlkZGVuOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBudWxsXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBuZXdJRCA9IGdldE5leHRJbmRleChyQ3R4KTtcbiAgICBjb25zdCBzY29wZUlkID0gZWxDdHguJHNjb3BlSWRzJCA/IHNlcmlhbGl6ZVNTdHlsZShlbEN0eC4kc2NvcGVJZHMkKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBwcm9jZXNzZWROb2RlID0gX2pzeEMoXG4gICAgICBub2RlLnR5cGUsXG4gICAgICB7XG4gICAgICAgIFtRU2NvcGVkU3R5bGVdOiBzY29wZUlkLFxuICAgICAgICBbRUxFTUVOVF9JRF06IG5ld0lELFxuICAgICAgICBjaGlsZHJlbjogcmVzLm5vZGUsXG4gICAgICB9LFxuICAgICAgMCxcbiAgICAgIG5vZGUua2V5XG4gICAgKTtcblxuICAgIGVsQ3R4LiRpZCQgPSBuZXdJRDtcbiAgICBzc3JDdHguJHN0YXRpYyQuJGNvbnRleHRzJC5wdXNoKGVsQ3R4KTtcblxuICAgIHJldHVybiByZW5kZXJOb2RlVmlydHVhbChcbiAgICAgIHByb2Nlc3NlZE5vZGUsXG4gICAgICBlbEN0eCxcbiAgICAgIGV4dHJhTm9kZXMsXG4gICAgICBuZXdSQ3R4LFxuICAgICAgbmV3U1NyQ29udGV4dCxcbiAgICAgIHN0cmVhbSxcbiAgICAgIGZsYWdzLFxuICAgICAgKHN0cmVhbSkgPT4ge1xuICAgICAgICBpZiAoZWxDdHguJGZsYWdzJCAmIEhPU1RfRkxBR19ORUVEX0FUVEFDSF9MSVNURU5FUikge1xuICAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyQ3R4ID0gY3JlYXRlTW9ja1FDb250ZXh0KDEpO1xuICAgICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IHBsYWNlaG9sZGVyQ3R4LmxpO1xuICAgICAgICAgIGxpc3RlbmVycy5wdXNoKC4uLmVsQ3R4LmxpKTtcbiAgICAgICAgICBlbEN0eC4kZmxhZ3MkICY9IH5IT1NUX0ZMQUdfTkVFRF9BVFRBQ0hfTElTVEVORVI7XG4gICAgICAgICAgcGxhY2Vob2xkZXJDdHguJGlkJCA9IGdldE5leHRJbmRleChyQ3R4KTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBUaGlzIGlzIGEgcGxhY2Vob2xkZXIgZm9yIHF3aWsgYXR0cmlidXRlcyB3aGVuIHRoZSBjb21wb25lbnQgZG9lcyBub3QgaGF2ZSBhIERPTVxuICAgICAgICAgICAqIGVsZW1lbnQuIFdlIGtlZXAgaXQgZW1wdHksIHNvIGl0IGNhbiBiZSBhIHNjcmlwdCB0YWcgd2l0aG91dCB0eXBlLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICAgICBoaWRkZW46ICcnLFxuICAgICAgICAgICAgJ3E6aWQnOiBwbGFjZWhvbGRlckN0eC4kaWQkLFxuICAgICAgICAgIH07XG4gICAgICAgICAgc3NyQ3R4LiRzdGF0aWMkLiRjb250ZXh0cyQucHVzaChwbGFjZWhvbGRlckN0eCk7XG5cbiAgICAgICAgICBjb25zdCBncm91cHMgPSBncm91cExpc3RlbmVycyhsaXN0ZW5lcnMpO1xuICAgICAgICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgZ3JvdXBzKSB7XG4gICAgICAgICAgICBjb25zdCBldmVudE5hbWUgPSBub3JtYWxpemVJbnZpc2libGVFdmVudHMobGlzdGVuZXJbMF0pO1xuICAgICAgICAgICAgYXR0cmlidXRlc1tldmVudE5hbWVdID0gc2VyaWFsaXplUVJMcyhcbiAgICAgICAgICAgICAgbGlzdGVuZXJbMV0sXG4gICAgICAgICAgICAgIHJDdHguJHN0YXRpYyQuJGNvbnRhaW5lclN0YXRlJCxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXJDdHhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZWdpc3RlclF3aWtFdmVudChldmVudE5hbWUsIHJDdHguJHN0YXRpYyQuJGNvbnRhaW5lclN0YXRlJCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlbmRlck5vZGVFbGVtZW50U3luYygnc2NyaXB0JywgYXR0cmlidXRlcywgc3RyZWFtKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9qZWN0ZWRDaGlsZHJlbiA9IG5ld1NTckNvbnRleHQuJHByb2plY3RlZENoaWxkcmVuJDtcbiAgICAgICAgbGV0IG1pc3NpbmdTbG90c0RvbmU7XG4gICAgICAgIGlmIChwcm9qZWN0ZWRDaGlsZHJlbikge1xuICAgICAgICAgIGNvbnN0IG5vZGVzID0gT2JqZWN0LmtleXMocHJvamVjdGVkQ2hpbGRyZW4pLm1hcCgoc2xvdE5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVzY2FwZWRTbG90TmFtZSA9IHNsb3ROYW1lID8gZXNjYXBlSHRtbChzbG90TmFtZSkgOiBzbG90TmFtZTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBwcm9qZWN0ZWRDaGlsZHJlbltlc2NhcGVkU2xvdE5hbWVdO1xuICAgICAgICAgICAgLy8gcHJvamVjdGVkQ2hpbGRyZW5bc2xvdE5hbWVdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIF9qc3hRKFxuICAgICAgICAgICAgICAgICdxOnRlbXBsYXRlJyxcbiAgICAgICAgICAgICAgICB7IFtRU2xvdF06IGVzY2FwZWRTbG90TmFtZSB8fCB0cnVlLCBoaWRkZW46IHRydWUsICdhcmlhLWhpZGRlbic6ICd0cnVlJyB9LFxuICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgY29udGVudCxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBbX3JDdHgsIHNDdHhdID0gbmV3U1NyQ29udGV4dC4kcHJvamVjdGVkQ3R4cyQhO1xuICAgICAgICAgIGNvbnN0IG5ld1Nsb3RSY3R4ID0gcHVzaFJlbmRlckNvbnRleHQoX3JDdHgpO1xuICAgICAgICAgIG5ld1Nsb3RSY3R4LiRzbG90Q3R4JCA9IGVsQ3R4O1xuICAgICAgICAgIG1pc3NpbmdTbG90c0RvbmUgPSBwcm9jZXNzRGF0YShub2RlcywgbmV3U2xvdFJjdHgsIHNDdHgsIHN0cmVhbSwgMCwgdW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmVmb3JlQ2xvc2VcbiAgICAgICAgICA/IG1heWJlVGhlbihtaXNzaW5nU2xvdHNEb25lLCAoKSA9PiBiZWZvcmVDbG9zZShzdHJlYW0pKVxuICAgICAgICAgIDogbWlzc2luZ1Nsb3RzRG9uZTtcbiAgICAgIH1cbiAgICApO1xuICB9KTtcbn07XG5cbmNvbnN0IHNwbGl0UHJvamVjdGVkQ2hpbGRyZW4gPSAoY2hpbGRyZW46IEpTWENoaWxkcmVuLCBzc3JDdHg6IFNTUkNvbnRleHQpID0+IHtcbiAgY29uc3QgZmxhdENoaWxkcmVuID0gZmxhdFZpcnR1YWxDaGlsZHJlbihjaGlsZHJlbiwgc3NyQ3R4KTtcbiAgaWYgKGZsYXRDaGlsZHJlbiA9PT0gbnVsbCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3Qgc2xvdE1hcDogUmVjb3JkPHN0cmluZywgSlNYTm9kZVtdPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgY2hpbGQgb2YgZmxhdENoaWxkcmVuKSB7XG4gICAgbGV0IHNsb3ROYW1lID0gJyc7XG4gICAgaWYgKGlzSlNYTm9kZShjaGlsZCkpIHtcbiAgICAgIHNsb3ROYW1lID0gZXNjYXBlSHRtbCgoY2hpbGQucHJvcHNbUVNsb3RdIGFzIHN0cmluZykgfHwgJycpO1xuICAgIH1cbiAgICAoc2xvdE1hcFtzbG90TmFtZV0gfHw9IFtdKS5wdXNoKGNoaWxkKTtcbiAgfVxuICByZXR1cm4gc2xvdE1hcDtcbn07XG5cbmNvbnN0IGNyZWF0ZU1vY2tRQ29udGV4dCA9IChub2RlVHlwZTogMSB8IDExMSkgPT4ge1xuICBjb25zdCBlbG0gPSBuZXcgTW9ja0VsZW1lbnQobm9kZVR5cGUpO1xuICByZXR1cm4gY3JlYXRlQ29udGV4dChlbG0gYXMgYW55KTtcbn07XG5cbmNvbnN0IHJlbmRlck5vZGUgPSAoXG4gIG5vZGU6IEpTWE5vZGVJbnRlcm5hbCxcbiAgckN0eDogUmVuZGVyQ29udGV4dCxcbiAgc3NyQ3R4OiBTU1JDb250ZXh0LFxuICBzdHJlYW06IFN0cmVhbVdyaXRlcixcbiAgZmxhZ3M6IG51bWJlcixcbiAgYmVmb3JlQ2xvc2U/OiAoc3RyZWFtOiBTdHJlYW1Xcml0ZXIpID0+IFZhbHVlT3JQcm9taXNlPHZvaWQ+XG4pOiBWYWx1ZU9yUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHRhZ05hbWUgPSBub2RlLnR5cGU7XG4gIGNvbnN0IGhvc3RDdHggPSByQ3R4LiRjbXBDdHgkO1xuICBpZiAodHlwZW9mIHRhZ05hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3Qga2V5ID0gbm9kZS5rZXk7XG4gICAgY29uc3QgcHJvcHMgPSBub2RlLnByb3BzO1xuICAgIGNvbnN0IGltbXV0YWJsZSA9IG5vZGUuaW1tdXRhYmxlUHJvcHMgfHwgRU1QVFlfT0JKO1xuICAgIGNvbnN0IGVsQ3R4ID0gY3JlYXRlTW9ja1FDb250ZXh0KDEpO1xuICAgIGNvbnN0IGVsbSA9IGVsQ3R4LiRlbGVtZW50JCBhcyBFbGVtZW50O1xuICAgIGNvbnN0IGlzSGVhZCA9IHRhZ05hbWUgPT09ICdoZWFkJztcbiAgICBsZXQgb3BlbmluZ0VsZW1lbnQgPSAnPCcgKyB0YWdOYW1lO1xuICAgIGxldCB1c2VTaWduYWwgPSBmYWxzZTtcbiAgICBsZXQgaGFzUmVmID0gZmFsc2U7XG4gICAgbGV0IGNsYXNzU3RyID0gJyc7XG4gICAgbGV0IGh0bWxTdHIgPSBudWxsO1xuICAgIGNvbnN0IGhhbmRsZVByb3AgPSAocmF3UHJvcDogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgaXNJbW11dGFibGU6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChyYXdQcm9wID09PSAncmVmJykge1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNldFJlZih2YWx1ZSwgZWxtKTtcbiAgICAgICAgICBoYXNSZWYgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChpc09uUHJvcChyYXdQcm9wKSkge1xuICAgICAgICBzZXRFdmVudChlbEN0eC5saSwgcmF3UHJvcCwgdmFsdWUsIHVuZGVmaW5lZCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChpc1NpZ25hbCh2YWx1ZSkpIHtcbiAgICAgICAgYXNzZXJ0RGVmaW5lZChob3N0Q3R4LCAnU2lnbmFscyBjYW4gbm90IGJlIHVzZWQgb3V0c2lkZSB0aGUgcm9vdCcpO1xuICAgICAgICBpZiAoaXNJbW11dGFibGUpIHtcbiAgICAgICAgICB2YWx1ZSA9IHRyYWNrU2lnbmFsKHZhbHVlLCBbMSwgZWxtLCB2YWx1ZSwgaG9zdEN0eC4kZWxlbWVudCQsIHJhd1Byb3BdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZSA9IHRyYWNrU2lnbmFsKHZhbHVlLCBbMiwgaG9zdEN0eC4kZWxlbWVudCQsIHZhbHVlLCBlbG0sIHJhd1Byb3BdKTtcbiAgICAgICAgfVxuICAgICAgICB1c2VTaWduYWwgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHJhd1Byb3AgPT09IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSB7XG4gICAgICAgIGh0bWxTdHIgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHJhd1Byb3Auc3RhcnRzV2l0aChQUkVWRU5UX0RFRkFVTFQpKSB7XG4gICAgICAgIHJlZ2lzdGVyUXdpa0V2ZW50KHJhd1Byb3Auc2xpY2UoUFJFVkVOVF9ERUZBVUxULmxlbmd0aCksIHJDdHguJHN0YXRpYyQuJGNvbnRhaW5lclN0YXRlJCk7XG4gICAgICB9XG4gICAgICBsZXQgYXR0clZhbHVlO1xuICAgICAgY29uc3QgcHJvcCA9IHJhd1Byb3AgPT09ICdodG1sRm9yJyA/ICdmb3InIDogcmF3UHJvcDtcbiAgICAgIGlmIChwcm9wID09PSAnY2xhc3MnIHx8IHByb3AgPT09ICdjbGFzc05hbWUnKSB7XG4gICAgICAgIGNsYXNzU3RyID0gc2VyaWFsaXplQ2xhc3ModmFsdWUgYXMgQ2xhc3NMaXN0KTtcbiAgICAgIH0gZWxzZSBpZiAocHJvcCA9PT0gJ3N0eWxlJykge1xuICAgICAgICBhdHRyVmFsdWUgPSBzdHJpbmdpZnlTdHlsZSh2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGlzQXJpYUF0dHJpYnV0ZShwcm9wKSB8fCBwcm9wID09PSAnZHJhZ2dhYmxlJyB8fCBwcm9wID09PSAnc3BlbGxjaGVjaycpIHtcbiAgICAgICAgYXR0clZhbHVlID0gdmFsdWUgIT0gbnVsbCA/IFN0cmluZyh2YWx1ZSkgOiBudWxsO1xuICAgICAgICB2YWx1ZSA9IGF0dHJWYWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IGZhbHNlIHx8IHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgYXR0clZhbHVlID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF0dHJWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAoYXR0clZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgaWYgKHByb3AgPT09ICd2YWx1ZScgJiYgdGFnTmFtZSA9PT0gJ3RleHRhcmVhJykge1xuICAgICAgICAgIGh0bWxTdHIgPSBlc2NhcGVIdG1sKGF0dHJWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNTU1JVbnNhZmVBdHRyKHByb3ApKSB7XG4gICAgICAgICAgaWYgKHFEZXYpIHtcbiAgICAgICAgICAgIGxvZ0Vycm9yKCdBdHRyaWJ1dGUgdmFsdWUgaXMgdW5zYWZlIGZvciBTU1InKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3BlbmluZ0VsZW1lbnQgKz1cbiAgICAgICAgICAgICcgJyArICh2YWx1ZSA9PT0gdHJ1ZSA/IHByb3AgOiBwcm9wICsgJz1cIicgKyBlc2NhcGVIdG1sKGF0dHJWYWx1ZSkgKyAnXCInKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgZm9yIChjb25zdCBwcm9wIGluIHByb3BzKSB7XG4gICAgICBsZXQgaXNJbW11dGFibGUgPSBmYWxzZTtcbiAgICAgIGxldCB2YWx1ZTtcbiAgICAgIGlmIChwcm9wIGluIGltbXV0YWJsZSkge1xuICAgICAgICBpc0ltbXV0YWJsZSA9IHRydWU7XG4gICAgICAgIHZhbHVlID0gaW1tdXRhYmxlW3Byb3BdO1xuICAgICAgICBpZiAodmFsdWUgPT09IF9JTU1VVEFCTEUpIHtcbiAgICAgICAgICB2YWx1ZSA9IHByb3BzW3Byb3BdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IHByb3BzW3Byb3BdO1xuICAgICAgfVxuICAgICAgaGFuZGxlUHJvcChwcm9wLCB2YWx1ZSwgaXNJbW11dGFibGUpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gaW1tdXRhYmxlKSB7XG4gICAgICBpZiAocHJvcCBpbiBwcm9wcykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZhbHVlID0gaW1tdXRhYmxlW3Byb3BdO1xuICAgICAgaWYgKHZhbHVlICE9PSBfSU1NVVRBQkxFKSB7XG4gICAgICAgIGhhbmRsZVByb3AocHJvcCwgdmFsdWUsIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBsaXN0ZW5lcnMgPSBlbEN0eC5saTtcbiAgICBpZiAoaG9zdEN0eCkge1xuICAgICAgaWYgKHFEZXYpIHtcbiAgICAgICAgaWYgKHRhZ05hbWUgPT09ICdodG1sJykge1xuICAgICAgICAgIHRocm93IHFFcnJvcihRRXJyb3JfY2FuTm90UmVuZGVySFRNTCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChob3N0Q3R4LiRzY29wZUlkcyQ/Lmxlbmd0aCkge1xuICAgICAgICBjb25zdCBleHRyYSA9IGhvc3RDdHguJHNjb3BlSWRzJC5qb2luKCcgJyk7XG4gICAgICAgIGNsYXNzU3RyID0gY2xhc3NTdHIgPyBgJHtleHRyYX0gJHtjbGFzc1N0cn1gIDogZXh0cmE7XG4gICAgICB9XG4gICAgICBpZiAoaG9zdEN0eC4kZmxhZ3MkICYgSE9TVF9GTEFHX05FRURfQVRUQUNIX0xJU1RFTkVSKSB7XG4gICAgICAgIGxpc3RlbmVycy5wdXNoKC4uLmhvc3RDdHgubGkpO1xuICAgICAgICBob3N0Q3R4LiRmbGFncyQgJj0gfkhPU1RfRkxBR19ORUVEX0FUVEFDSF9MSVNURU5FUjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNldCBIT1NUIGZsYWdzXG4gICAgaWYgKHFEZXYpIHtcbiAgICAgIGlmIChmbGFncyAmIElTX1BIQVNJTkcgJiYgIShmbGFncyAmIElTX1BIUkFTSU5HX0NPTlRBSU5FUikpIHtcbiAgICAgICAgaWYgKCEodGFnTmFtZSBpbiBwaGFzaW5nQ29udGVudCkpIHtcbiAgICAgICAgICB0aHJvdyBjcmVhdGVKU1hFcnJvcihcbiAgICAgICAgICAgIGA8JHt0YWdOYW1lfT4gY2FuIG5vdCBiZSByZW5kZXJlZCBiZWNhdXNlIG9uZSBvZiBpdHMgYW5jZXN0b3IgaXMgYSA8cD4gb3IgYSA8cHJlPi5cXG5cblRoaXMgZ29lcyBhZ2FpbnN0IHRoZSBIVE1MIHNwZWM6IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2RvbS5odG1sI3BocmFzaW5nLWNvbnRlbnQtMmAsXG4gICAgICAgICAgICBub2RlXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRhZ05hbWUgPT09ICd0YWJsZScpIHtcbiAgICAgICAgZmxhZ3MgfD0gSVNfVEFCTEU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZmxhZ3MgJiBJU19UQUJMRSAmJiAhKHRhZ05hbWUgaW4gdGFibGVDb250ZW50KSkge1xuICAgICAgICAgIHRocm93IGNyZWF0ZUpTWEVycm9yKFxuICAgICAgICAgICAgYFRoZSA8dGFibGU+IGVsZW1lbnQgcmVxdWlyZXMgdGhhdCBpdHMgZGlyZWN0IGNoaWxkcmVuIHRvIGJlICc8dGJvZHk+JywgJzx0aGVhZD4nLCAnPHRmb290Picgb3IgJzxjYXB0aW9uPicgaW5zdGVhZCwgJzwke3RhZ05hbWV9Picgd2FzIHJlbmRlcmVkLmAsXG4gICAgICAgICAgICBub2RlXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBmbGFncyAmPSB+SVNfVEFCTEU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0YWdOYW1lID09PSAnYnV0dG9uJykge1xuICAgICAgICBpZiAoZmxhZ3MgJiBJU19CVVRUT04pIHtcbiAgICAgICAgICB0aHJvdyBjcmVhdGVKU1hFcnJvcihcbiAgICAgICAgICAgIGA8JHt0YWdOYW1lfT4gY2FuIG5vdCBiZSByZW5kZXJlZCBiZWNhdXNlIG9uZSBvZiBpdHMgYW5jZXN0b3IgaXMgYWxyZWFkeSBhIDxidXR0b24+LlxcblxuVGhpcyBnb2VzIGFnYWluc3QgdGhlIEhUTUwgc3BlYzogaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0bWwjaW50ZXJhY3RpdmUtY29udGVudGAsXG4gICAgICAgICAgICBub2RlXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmbGFncyB8PSBJU19CVVRUT047XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0YWdOYW1lID09PSAnYScpIHtcbiAgICAgICAgaWYgKGZsYWdzICYgSVNfQU5DSE9SKSB7XG4gICAgICAgICAgdGhyb3cgY3JlYXRlSlNYRXJyb3IoXG4gICAgICAgICAgICBgPCR7dGFnTmFtZX0+IGNhbiBub3QgYmUgcmVuZGVyZWQgYmVjYXVzZSBvbmUgb2YgaXRzIGFuY2VzdG9yIGlzIGFscmVhZHkgYSA8YT4uXFxuXG5UaGlzIGdvZXMgYWdhaW5zdCB0aGUgSFRNTCBzcGVjOiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRtbCNpbnRlcmFjdGl2ZS1jb250ZW50YCxcbiAgICAgICAgICAgIG5vZGVcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZsYWdzIHw9IElTX0FOQ0hPUjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRhZ05hbWUgPT09ICdzdmcnIHx8IHRhZ05hbWUgPT09ICdtYXRoJykge1xuICAgICAgICAvLyBUaGVzZSB0eXBlcyBvZiBlbGVtZW50cyBhcmUgY29uc2lkZXJlZCBwaHJhc2luZyBjb250ZW50LCBidXQgY29udGFpbiBjaGlsZHJlbiB0aGF0IGFyZW4ndCBwaHJhc2luZyBjb250ZW50LlxuICAgICAgICBmbGFncyB8PSBJU19QSFJBU0lOR19DT05UQUlORVI7XG4gICAgICB9XG4gICAgICBpZiAoZmxhZ3MgJiBJU19IRUFEKSB7XG4gICAgICAgIGlmICghKHRhZ05hbWUgaW4gaGVhZENvbnRlbnQpKSB7XG4gICAgICAgICAgdGhyb3cgY3JlYXRlSlNYRXJyb3IoXG4gICAgICAgICAgICBgPCR7dGFnTmFtZX0+IGNhbiBub3QgYmUgcmVuZGVyZWQgYmVjYXVzZSBpdCdzIG5vdCBhIHZhbGlkIGNoaWxkcmVuIG9mIHRoZSA8aGVhZD4gZWxlbWVudC4gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0bWwjbWV0YWRhdGEtY29udGVudGAsXG4gICAgICAgICAgICBub2RlXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZsYWdzICYgSVNfSFRNTCkge1xuICAgICAgICBpZiAoISh0YWdOYW1lIGluIGh0bWxDb250ZW50KSkge1xuICAgICAgICAgIHRocm93IGNyZWF0ZUpTWEVycm9yKFxuICAgICAgICAgICAgYDwke3RhZ05hbWV9PiBjYW4gbm90IGJlIHJlbmRlcmVkIGJlY2F1c2UgaXQncyBub3QgYSB2YWxpZCBkaXJlY3QgY2hpbGRyZW4gb2YgdGhlIDxodG1sPiBlbGVtZW50LCBvbmx5IDxoZWFkPiBhbmQgPGJvZHk+IGFyZSBhbGxvd2VkLmAsXG4gICAgICAgICAgICBub2RlXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0YWdOYW1lIGluIGh0bWxDb250ZW50KSB7XG4gICAgICAgIHRocm93IGNyZWF0ZUpTWEVycm9yKFxuICAgICAgICAgIGA8JHt0YWdOYW1lfT4gY2FuIG5vdCBiZSByZW5kZXJlZCBiZWNhdXNlIGl0cyBwYXJlbnQgaXMgbm90IGEgPGh0bWw+IGVsZW1lbnQuIE1ha2Ugc3VyZSB0aGUgJ2NvbnRhaW5lclRhZ05hbWUnIGlzIHNldCB0byAnaHRtbCcgaW4gZW50cnkuc3NyLnRzeGAsXG4gICAgICAgICAgbm9kZVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHRhZ05hbWUgaW4gc3RhcnRQaGFzaW5nQ29udGVudCkge1xuICAgICAgICBmbGFncyB8PSBJU19QSEFTSU5HO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNIZWFkKSB7XG4gICAgICBmbGFncyB8PSBJU19IRUFEO1xuICAgIH1cbiAgICBpZiAodGFnTmFtZSBpbiBpbnZpc2libGVFbGVtZW50cykge1xuICAgICAgZmxhZ3MgfD0gSVNfSU5WSVNJQkxFO1xuICAgIH1cbiAgICBpZiAodGFnTmFtZSBpbiB0ZXh0T25seUVsZW1lbnRzKSB7XG4gICAgICBmbGFncyB8PSBJU19URVhUO1xuICAgIH1cblxuICAgIGlmIChjbGFzc1N0cikge1xuICAgICAgb3BlbmluZ0VsZW1lbnQgKz0gJyBjbGFzcz1cIicgKyBlc2NhcGVIdG1sKGNsYXNzU3RyKSArICdcIic7XG4gICAgfVxuXG4gICAgaWYgKGxpc3RlbmVycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBncm91cHMgPSBncm91cExpc3RlbmVycyhsaXN0ZW5lcnMpO1xuICAgICAgY29uc3QgaXNJbnZpc2libGUgPSAoZmxhZ3MgJiBJU19JTlZJU0lCTEUpICE9PSAwO1xuICAgICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBncm91cHMpIHtcbiAgICAgICAgY29uc3QgZXZlbnROYW1lID0gaXNJbnZpc2libGUgPyBub3JtYWxpemVJbnZpc2libGVFdmVudHMobGlzdGVuZXJbMF0pIDogbGlzdGVuZXJbMF07XG4gICAgICAgIG9wZW5pbmdFbGVtZW50ICs9XG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICBldmVudE5hbWUgK1xuICAgICAgICAgICc9XCInICtcbiAgICAgICAgICBzZXJpYWxpemVRUkxzKGxpc3RlbmVyWzFdLCByQ3R4LiRzdGF0aWMkLiRjb250YWluZXJTdGF0ZSQsIGVsQ3R4KSArXG4gICAgICAgICAgJ1wiJztcbiAgICAgICAgcmVnaXN0ZXJRd2lrRXZlbnQoZXZlbnROYW1lLCByQ3R4LiRzdGF0aWMkLiRjb250YWluZXJTdGF0ZSQpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoa2V5ICE9IG51bGwpIHtcbiAgICAgIG9wZW5pbmdFbGVtZW50ICs9ICcgcTprZXk9XCInICsgZXNjYXBlSHRtbChrZXkpICsgJ1wiJztcbiAgICB9XG4gICAgaWYgKGhhc1JlZiB8fCB1c2VTaWduYWwgfHwgbGlzdGVuZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChoYXNSZWYgfHwgdXNlU2lnbmFsIHx8IGxpc3RlbmVyc05lZWRJZChsaXN0ZW5lcnMpKSB7XG4gICAgICAgIGNvbnN0IG5ld0lEID0gZ2V0TmV4dEluZGV4KHJDdHgpO1xuICAgICAgICBvcGVuaW5nRWxlbWVudCArPSAnIHE6aWQ9XCInICsgbmV3SUQgKyAnXCInO1xuICAgICAgICBlbEN0eC4kaWQkID0gbmV3SUQ7XG4gICAgICB9XG4gICAgICBzc3JDdHguJHN0YXRpYyQuJGNvbnRleHRzJC5wdXNoKGVsQ3R4KTtcbiAgICB9XG4gICAgaWYgKGZsYWdzICYgSVNfSEVBRCkge1xuICAgICAgb3BlbmluZ0VsZW1lbnQgKz0gJyBxOmhlYWQnO1xuICAgIH1cbiAgICBpZiAocURldiAmJiBxSW5zcGVjdG9yICYmIG5vZGUuZGV2ICYmICEoZmxhZ3MgJiBJU19IRUFEKSkge1xuICAgICAgY29uc3Qgc2FuaXRpemVkRmlsZU5hbWUgPSBub2RlPy5kZXY/LmZpbGVOYW1lPy5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG4gICAgICBpZiAoc2FuaXRpemVkRmlsZU5hbWUgJiYgIS9kYXRhLXF3aWstaW5zcGVjdG9yLy50ZXN0KG9wZW5pbmdFbGVtZW50KSkge1xuICAgICAgICBvcGVuaW5nRWxlbWVudCArPSBgIGRhdGEtcXdpay1pbnNwZWN0b3I9XCIke2VzY2FwZUh0bWwoXG4gICAgICAgICAgYCR7c2FuaXRpemVkRmlsZU5hbWV9OiR7bm9kZS5kZXYubGluZU51bWJlcn06JHtub2RlLmRldi5jb2x1bW5OdW1iZXJ9YFxuICAgICAgICApfVwiYDtcbiAgICAgIH1cbiAgICB9XG4gICAgb3BlbmluZ0VsZW1lbnQgKz0gJz4nO1xuICAgIHN0cmVhbS53cml0ZShvcGVuaW5nRWxlbWVudCk7XG5cbiAgICBpZiAodGFnTmFtZSBpbiBlbXB0eUVsZW1lbnRzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGh0bWxTdHIgIT0gbnVsbCkge1xuICAgICAgc3RyZWFtLndyaXRlKFN0cmluZyhodG1sU3RyKSk7XG4gICAgICBzdHJlYW0ud3JpdGUoYDwvJHt0YWdOYW1lfT5gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRhZ05hbWUgPT09ICdodG1sJykge1xuICAgICAgZmxhZ3MgfD0gSVNfSFRNTDtcbiAgICB9IGVsc2Uge1xuICAgICAgZmxhZ3MgJj0gfklTX0hUTUw7XG4gICAgfVxuICAgIGlmIChub2RlLmZsYWdzICYgc3RhdGljX3N1YnRyZWUpIHtcbiAgICAgIGZsYWdzIHw9IElTX0lNTVVUQUJMRTtcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZSA9IHByb2Nlc3NEYXRhKG5vZGUuY2hpbGRyZW4sIHJDdHgsIHNzckN0eCwgc3RyZWFtLCBmbGFncyk7XG4gICAgcmV0dXJuIG1heWJlVGhlbihwcm9taXNlLCAoKSA9PiB7XG4gICAgICAvLyBJZiBoZWFkIGluamVjdCBiYXNlIHN0eWxlc1xuICAgICAgaWYgKGlzSGVhZCkge1xuICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygc3NyQ3R4LiRzdGF0aWMkLiRoZWFkTm9kZXMkKSB7XG4gICAgICAgICAgcmVuZGVyTm9kZUVsZW1lbnRTeW5jKG5vZGUudHlwZSwgbm9kZS5wcm9wcyBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBzdHJlYW0pO1xuICAgICAgICB9XG4gICAgICAgIHNzckN0eC4kc3RhdGljJC4kaGVhZE5vZGVzJC5sZW5ndGggPSAwO1xuICAgICAgfVxuICAgICAgLy8gRmFzdCBwYXRoXG4gICAgICBpZiAoIWJlZm9yZUNsb3NlKSB7XG4gICAgICAgIHN0cmVhbS53cml0ZShgPC8ke3RhZ05hbWV9PmApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEluamVjdCBiZWZvcmUgY2xvc2VcbiAgICAgIHJldHVybiBtYXliZVRoZW4oYmVmb3JlQ2xvc2Uoc3RyZWFtKSwgKCkgPT4ge1xuICAgICAgICBzdHJlYW0ud3JpdGUoYDwvJHt0YWdOYW1lfT5gKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKHRhZ05hbWUgPT09IFZpcnR1YWwpIHtcbiAgICBjb25zdCBlbEN0eCA9IGNyZWF0ZU1vY2tRQ29udGV4dCgxMTEpO1xuICAgIGlmIChyQ3R4LiRzbG90Q3R4JCkge1xuICAgICAgZWxDdHguJHBhcmVudEN0eCQgPSByQ3R4LiRzbG90Q3R4JDtcbiAgICAgIGVsQ3R4LiRyZWFsUGFyZW50Q3R4JCA9IHJDdHguJGNtcEN0eCQhO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbEN0eC4kcGFyZW50Q3R4JCA9IHJDdHguJGNtcEN0eCQ7XG4gICAgfVxuICAgIGlmIChob3N0Q3R4ICYmIGhvc3RDdHguJGZsYWdzJCAmIEhPU1RfRkxBR19EWU5BTUlDKSB7XG4gICAgICBhZGREeW5hbWljU2xvdChob3N0Q3R4LCBlbEN0eCk7XG4gICAgfVxuICAgIHJldHVybiByZW5kZXJOb2RlVmlydHVhbChcbiAgICAgIG5vZGUgYXMgSlNYTm9kZTx0eXBlb2YgVmlydHVhbD4sXG4gICAgICBlbEN0eCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHJDdHgsXG4gICAgICBzc3JDdHgsXG4gICAgICBzdHJlYW0sXG4gICAgICBmbGFncyxcbiAgICAgIGJlZm9yZUNsb3NlXG4gICAgKTtcbiAgfVxuXG4gIGlmICh0YWdOYW1lID09PSBTU1JSYXcpIHtcbiAgICBzdHJlYW0ud3JpdGUoKG5vZGUgYXMgSlNYTm9kZUludGVybmFsPHR5cGVvZiBTU1JSYXc+KS5wcm9wcy5kYXRhKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHRhZ05hbWUgPT09IEludGVybmFsU1NSU3RyZWFtKSB7XG4gICAgcmV0dXJuIHJlbmRlckdlbmVyYXRvcihcbiAgICAgIG5vZGUgYXMgSlNYTm9kZUludGVybmFsPHR5cGVvZiBJbnRlcm5hbFNTUlN0cmVhbT4sXG4gICAgICByQ3R4LFxuICAgICAgc3NyQ3R4LFxuICAgICAgc3RyZWFtLFxuICAgICAgZmxhZ3NcbiAgICApO1xuICB9XG4gIC8vIElubGluZSBjb21wb25lbnRcbiAgY29uc3QgcmVzID0gaW52b2tlKFxuICAgIHNzckN0eC4kaW52b2NhdGlvbkNvbnRleHQkLFxuICAgIHRhZ05hbWUgYXMgRnVuY3Rpb25Db21wb25lbnQsXG4gICAgbm9kZS5wcm9wcyxcbiAgICBub2RlLmtleSxcbiAgICBub2RlLmZsYWdzLFxuICAgIG5vZGUuZGV2XG4gICk7XG4gIGlmICghc2hvdWxkV3JhcEZ1bmN0aW9uYWwocmVzLCBub2RlKSkge1xuICAgIHJldHVybiBwcm9jZXNzRGF0YShyZXMsIHJDdHgsIHNzckN0eCwgc3RyZWFtLCBmbGFncywgYmVmb3JlQ2xvc2UpO1xuICB9XG4gIHJldHVybiByZW5kZXJOb2RlKFxuICAgIF9qc3hDKFZpcnR1YWwsIHsgY2hpbGRyZW46IHJlcyB9LCAwLCBub2RlLmtleSksXG4gICAgckN0eCxcbiAgICBzc3JDdHgsXG4gICAgc3RyZWFtLFxuICAgIGZsYWdzLFxuICAgIGJlZm9yZUNsb3NlXG4gICk7XG59O1xuXG4vKiogRW1iZWQgbWV0YWRhdGEgd2hpbGUgcmVuZGVyaW5nIHRoZSB0cmVlLCB0byBiZSB1c2VkIHdoZW4gcmVzdW1pbmcgKi9cbmNvbnN0IHByb2Nlc3NEYXRhID0gKFxuICBub2RlOiBhbnksXG4gIHJDdHg6IFJlbmRlckNvbnRleHQsXG4gIHNzckN0eDogU1NSQ29udGV4dCxcbiAgc3RyZWFtOiBTdHJlYW1Xcml0ZXIsXG4gIGZsYWdzOiBudW1iZXIsXG4gIGJlZm9yZUNsb3NlPzogKHN0cmVhbTogU3RyZWFtV3JpdGVyKSA9PiBWYWx1ZU9yUHJvbWlzZTx2b2lkPlxuKTogVmFsdWVPclByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAobm9kZSA9PSBudWxsIHx8IHR5cGVvZiBub2RlID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGlzU3RyaW5nKG5vZGUpIHx8IHR5cGVvZiBub2RlID09PSAnbnVtYmVyJykge1xuICAgIHN0cmVhbS53cml0ZShlc2NhcGVIdG1sKFN0cmluZyhub2RlKSkpO1xuICB9IGVsc2UgaWYgKGlzSlNYTm9kZShub2RlKSkge1xuICAgIHJldHVybiByZW5kZXJOb2RlKG5vZGUsIHJDdHgsIHNzckN0eCwgc3RyZWFtLCBmbGFncywgYmVmb3JlQ2xvc2UpO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkobm9kZSkpIHtcbiAgICByZXR1cm4gd2Fsa0NoaWxkcmVuKG5vZGUsIHJDdHgsIHNzckN0eCwgc3RyZWFtLCBmbGFncyk7XG4gIH0gZWxzZSBpZiAoaXNTaWduYWwobm9kZSkpIHtcbiAgICBjb25zdCBpbnNpZGVUZXh0ID0gZmxhZ3MgJiBJU19URVhUO1xuICAgIGNvbnN0IGhvc3RFbCA9IHJDdHguJGNtcEN0eCQ/LiRlbGVtZW50JCBhcyBRd2lrRWxlbWVudDtcbiAgICBsZXQgdmFsdWU7XG4gICAgaWYgKGhvc3RFbCkge1xuICAgICAgaWYgKCFpbnNpZGVUZXh0KSB7XG4gICAgICAgIGNvbnN0IGlkID0gZ2V0TmV4dEluZGV4KHJDdHgpO1xuICAgICAgICBjb25zdCBzdWJzID1cbiAgICAgICAgICBmbGFncyAmIElTX0lNTVVUQUJMRVxuICAgICAgICAgICAgPyAoWzMsICgnIycgKyBpZCkgYXMgYW55LCBub2RlLCAoJyMnICsgaWQpIGFzIGFueV0gYXMgY29uc3QpXG4gICAgICAgICAgICA6IChbNCwgaG9zdEVsLCBub2RlLCAoJyMnICsgaWQpIGFzIGFueV0gYXMgY29uc3QpO1xuXG4gICAgICAgIHZhbHVlID0gdHJhY2tTaWduYWwobm9kZSwgc3Vicyk7XG4gICAgICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICBjb25zdCBzdHIgPSBqc3hUb1N0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgc3NyQ3R4LiRzdGF0aWMkLiR0ZXh0Tm9kZXMkLnNldChzdHIsIGlkKTtcbiAgICAgICAgfVxuICAgICAgICBzdHJlYW0ud3JpdGUoYDwhLS10PSR7aWR9LS0+YCk7XG4gICAgICAgIHByb2Nlc3NEYXRhKHZhbHVlLCByQ3R4LCBzc3JDdHgsIHN0cmVhbSwgZmxhZ3MsIGJlZm9yZUNsb3NlKTtcbiAgICAgICAgc3RyZWFtLndyaXRlKGA8IS0tLS0+YCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gaW52b2tlKHNzckN0eC4kaW52b2NhdGlvbkNvbnRleHQkLCAoKSA9PiBub2RlLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc3RyZWFtLndyaXRlKGVzY2FwZUh0bWwoanN4VG9TdHJpbmcodmFsdWUpKSk7XG4gICAgcmV0dXJuO1xuICB9IGVsc2UgaWYgKGlzUHJvbWlzZShub2RlKSkge1xuICAgIHN0cmVhbS53cml0ZShGTFVTSF9DT01NRU5UKTtcbiAgICByZXR1cm4gbm9kZS50aGVuKChub2RlKSA9PiBwcm9jZXNzRGF0YShub2RlLCByQ3R4LCBzc3JDdHgsIHN0cmVhbSwgZmxhZ3MsIGJlZm9yZUNsb3NlKSk7XG4gIH0gZWxzZSB7XG4gICAgbG9nV2FybignQSB1bnN1cHBvcnRlZCB2YWx1ZSB3YXMgcGFzc2VkIHRvIHRoZSBKU1gsIHNraXBwaW5nIHJlbmRlci4gVmFsdWU6Jywgbm9kZSk7XG4gICAgcmV0dXJuO1xuICB9XG59O1xuXG5jb25zdCB3YWxrQ2hpbGRyZW4gPSAoXG4gIGNoaWxkcmVuOiB1bmtub3duLFxuICByQ3R4OiBSZW5kZXJDb250ZXh0LFxuICBzc3JDb250ZXh0OiBTU1JDb250ZXh0LFxuICBzdHJlYW06IFN0cmVhbVdyaXRlcixcbiAgZmxhZ3M6IG51bWJlclxuKTogVmFsdWVPclByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIWlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgcmV0dXJuIHByb2Nlc3NEYXRhKGNoaWxkcmVuLCByQ3R4LCBzc3JDb250ZXh0LCBzdHJlYW0sIGZsYWdzKTtcbiAgfVxuICBjb25zdCBsZW4gPSBjaGlsZHJlbi5sZW5ndGg7XG4gIGlmIChsZW4gPT09IDEpIHtcbiAgICByZXR1cm4gcHJvY2Vzc0RhdGEoY2hpbGRyZW5bMF0sIHJDdHgsIHNzckNvbnRleHQsIHN0cmVhbSwgZmxhZ3MpO1xuICB9XG4gIGlmIChsZW4gPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgY3VycmVudEluZGV4ID0gMDtcbiAgY29uc3QgYnVmZmVyczogc3RyaW5nW11bXSA9IFtdO1xuICByZXR1cm4gY2hpbGRyZW4ucmVkdWNlKChwcmV2UHJvbWlzZTogUHJvbWlzZTx2b2lkPiB8IHVuZGVmaW5lZCwgY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgYnVmZmVyOiBzdHJpbmdbXSA9IFtdO1xuICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgIGNvbnN0IGxvY2FsU3RyZWFtOiBTdHJlYW1Xcml0ZXIgPSBwcmV2UHJvbWlzZVxuICAgICAgPyB7XG4gICAgICAgICAgd3JpdGUoY2h1bmspIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50SW5kZXggPT09IGluZGV4KSB7XG4gICAgICAgICAgICAgIHN0cmVhbS53cml0ZShjaHVuayk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBidWZmZXIucHVzaChjaHVuayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgOiBzdHJlYW07XG5cbiAgICBjb25zdCByZW5kZXJlZCA9IHByb2Nlc3NEYXRhKGNoaWxkLCByQ3R4LCBzc3JDb250ZXh0LCBsb2NhbFN0cmVhbSwgZmxhZ3MpO1xuICAgIGlmIChwcmV2UHJvbWlzZSB8fCBpc1Byb21pc2UocmVuZGVyZWQpKSB7XG4gICAgICBjb25zdCBuZXh0ID0gKCkgPT4ge1xuICAgICAgICBjdXJyZW50SW5kZXgrKztcbiAgICAgICAgaWYgKGJ1ZmZlcnMubGVuZ3RoID4gY3VycmVudEluZGV4KSB7XG4gICAgICAgICAgYnVmZmVyc1tjdXJyZW50SW5kZXhdLmZvckVhY2goKGNodW5rKSA9PiBzdHJlYW0ud3JpdGUoY2h1bmspKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGlmIChpc1Byb21pc2UocmVuZGVyZWQpKSB7XG4gICAgICAgIGlmIChwcmV2UHJvbWlzZSkge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbcmVuZGVyZWQsIHByZXZQcm9taXNlXSkudGhlbihuZXh0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVuZGVyZWQudGhlbihuZXh0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHByZXZQcm9taXNlIS50aGVuKG5leHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50SW5kZXgrKztcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9LCB1bmRlZmluZWQpO1xufTtcblxuY29uc3QgZmxhdFZpcnR1YWxDaGlsZHJlbiA9IChjaGlsZHJlbjogYW55LCBzc3JDdHg6IFNTUkNvbnRleHQpOiBhbnlbXSB8IG51bGwgPT4ge1xuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IF9mbGF0VmlydHVhbENoaWxkcmVuKGNoaWxkcmVuLCBzc3JDdHgpO1xuICBjb25zdCBub2RlcyA9IGlzQXJyYXkocmVzdWx0KSA/IHJlc3VsdCA6IFtyZXN1bHRdO1xuICBpZiAobm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIG5vZGVzO1xufTtcblxuY29uc3QgX2ZsYXRWaXJ0dWFsQ2hpbGRyZW4gPSAoY2hpbGRyZW46IGFueSwgc3NyQ3R4OiBTU1JDb250ZXh0KTogYW55ID0+IHtcbiAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICByZXR1cm4gY2hpbGRyZW4uZmxhdE1hcCgoYykgPT4gX2ZsYXRWaXJ0dWFsQ2hpbGRyZW4oYywgc3NyQ3R4KSk7XG4gIH0gZWxzZSBpZiAoXG4gICAgaXNKU1hOb2RlKGNoaWxkcmVuKSAmJlxuICAgIGlzRnVuY3Rpb24oY2hpbGRyZW4udHlwZSkgJiZcbiAgICBjaGlsZHJlbi50eXBlICE9PSBTU1JSYXcgJiZcbiAgICBjaGlsZHJlbi50eXBlICE9PSBJbnRlcm5hbFNTUlN0cmVhbSAmJlxuICAgIGNoaWxkcmVuLnR5cGUgIT09IFZpcnR1YWxcbiAgKSB7XG4gICAgY29uc3QgcmVzID0gaW52b2tlKFxuICAgICAgc3NyQ3R4LiRpbnZvY2F0aW9uQ29udGV4dCQsXG4gICAgICBjaGlsZHJlbi50eXBlLFxuICAgICAgY2hpbGRyZW4ucHJvcHMsXG4gICAgICBjaGlsZHJlbi5rZXksXG4gICAgICBjaGlsZHJlbi5mbGFnc1xuICAgICk7XG4gICAgcmV0dXJuIGZsYXRWaXJ0dWFsQ2hpbGRyZW4ocmVzLCBzc3JDdHgpO1xuICB9XG4gIHJldHVybiBjaGlsZHJlbjtcbn07XG5cbmNvbnN0IHNldENvbXBvbmVudFByb3BzID0gKFxuICByQ3R4OiBSZW5kZXJDb250ZXh0LFxuICBlbEN0eDogUUNvbnRleHQsXG4gIGV4cGVjdFByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4pID0+IHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGV4cGVjdFByb3BzKTtcbiAgY29uc3QgdGFyZ2V0ID0gY3JlYXRlUHJvcHNTdGF0ZSgpO1xuXG4gIGVsQ3R4LiRwcm9wcyQgPSBjcmVhdGVQcm94eSh0YXJnZXQsIHJDdHguJHN0YXRpYyQuJGNvbnRhaW5lclN0YXRlJCk7XG5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGltbXV0YWJsZU1ldGEgPSAoKHRhcmdldCBhcyBhbnkpW19JTU1VVEFCTEVdID1cbiAgICAoZXhwZWN0UHJvcHMgYXMgYW55KVtfSU1NVVRBQkxFXSA/PyBFTVBUWV9PQkopO1xuICBmb3IgKGNvbnN0IHByb3Agb2Yga2V5cykge1xuICAgIGlmIChwcm9wID09PSAnY2hpbGRyZW4nIHx8IHByb3AgPT09IFFTbG90KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGlzU2lnbmFsKGltbXV0YWJsZU1ldGFbcHJvcF0pKSB7XG4gICAgICB0YXJnZXRbX0lNTVVUQUJMRV9QUkVGSVggKyBwcm9wXSA9IGltbXV0YWJsZU1ldGFbcHJvcF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldFtwcm9wXSA9IGV4cGVjdFByb3BzW3Byb3BdO1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgaW52aXNpYmxlRWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIHRydWUgfCB1bmRlZmluZWQ+ID0ge1xuICBoZWFkOiB0cnVlLFxuICBzdHlsZTogdHJ1ZSxcbiAgc2NyaXB0OiB0cnVlLFxuICBsaW5rOiB0cnVlLFxuICBtZXRhOiB0cnVlLFxufTtcblxuY29uc3QgdGV4dE9ubHlFbGVtZW50czogUmVjb3JkPHN0cmluZywgdHJ1ZSB8IHVuZGVmaW5lZD4gPSB7XG4gIHRpdGxlOiB0cnVlLFxuICBzdHlsZTogdHJ1ZSxcbiAgc2NyaXB0OiB0cnVlLFxuICBub2ZyYW1lczogdHJ1ZSxcbiAgdGV4dGFyZWE6IHRydWUsXG59O1xuXG5jb25zdCBlbXB0eUVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCB0cnVlIHwgdW5kZWZpbmVkPiA9IHtcbiAgYXJlYTogdHJ1ZSxcbiAgYmFzZTogdHJ1ZSxcbiAgYmFzZWZvbnQ6IHRydWUsXG4gIGJnc291bmQ6IHRydWUsXG4gIGJyOiB0cnVlLFxuICBjb2w6IHRydWUsXG4gIGVtYmVkOiB0cnVlLFxuICBmcmFtZTogdHJ1ZSxcbiAgaHI6IHRydWUsXG4gIGltZzogdHJ1ZSxcbiAgaW5wdXQ6IHRydWUsXG4gIGtleWdlbjogdHJ1ZSxcbiAgbGluazogdHJ1ZSxcbiAgbWV0YTogdHJ1ZSxcbiAgcGFyYW06IHRydWUsXG4gIHNvdXJjZTogdHJ1ZSxcbiAgdHJhY2s6IHRydWUsXG4gIHdicjogdHJ1ZSxcbn07XG5cbmNvbnN0IHN0YXJ0UGhhc2luZ0NvbnRlbnQ6IFJlY29yZDxzdHJpbmcsIHRydWUgfCB1bmRlZmluZWQ+ID0ge1xuICBwOiB0cnVlLFxuICBwcmU6IHRydWUsXG59O1xuXG5jb25zdCBodG1sQ29udGVudDogUmVjb3JkPHN0cmluZywgdHJ1ZSB8IHVuZGVmaW5lZD4gPSB7XG4gIGhlYWQ6IHRydWUsXG4gIGJvZHk6IHRydWUsXG59O1xuXG5jb25zdCB0YWJsZUNvbnRlbnQ6IFJlY29yZDxzdHJpbmcsIHRydWUgfCB1bmRlZmluZWQ+ID0ge1xuICB0Ym9keTogdHJ1ZSxcbiAgdGhlYWQ6IHRydWUsXG4gIHRmb290OiB0cnVlLFxuICBjYXB0aW9uOiB0cnVlLFxuICBjb2xncm91cDogdHJ1ZSxcbn07XG5cbmNvbnN0IGhlYWRDb250ZW50OiBSZWNvcmQ8c3RyaW5nLCB0cnVlIHwgdW5kZWZpbmVkPiA9IHtcbiAgbWV0YTogdHJ1ZSxcbiAgdGl0bGU6IHRydWUsXG4gIGxpbms6IHRydWUsXG4gIHN0eWxlOiB0cnVlLFxuICBzY3JpcHQ6IHRydWUsXG4gIG5vc2NyaXB0OiB0cnVlLFxuICB0ZW1wbGF0ZTogdHJ1ZSxcbiAgYmFzZTogdHJ1ZSxcbn07XG5cbmNvbnN0IHBoYXNpbmdDb250ZW50OiBSZWNvcmQ8c3RyaW5nLCB0cnVlIHwgdW5kZWZpbmVkPiA9IHtcbiAgYTogdHJ1ZSxcbiAgYWJicjogdHJ1ZSxcbiAgYXJlYTogdHJ1ZSxcbiAgYXVkaW86IHRydWUsXG4gIGI6IHRydWUsXG4gIGJkaTogdHJ1ZSxcbiAgYmRvOiB0cnVlLFxuICBicjogdHJ1ZSxcbiAgYnV0dG9uOiB0cnVlLFxuICBjYW52YXM6IHRydWUsXG4gIGNpdGU6IHRydWUsXG4gIGNvZGU6IHRydWUsXG4gIGNvbW1hbmQ6IHRydWUsXG4gIGRhdGE6IHRydWUsXG4gIGRhdGFsaXN0OiB0cnVlLFxuICBkZWw6IHRydWUsXG4gIGRmbjogdHJ1ZSxcbiAgZW06IHRydWUsXG4gIGVtYmVkOiB0cnVlLFxuICBpOiB0cnVlLFxuICBpZnJhbWU6IHRydWUsXG4gIGltZzogdHJ1ZSxcbiAgaW5wdXQ6IHRydWUsXG4gIGluczogdHJ1ZSxcbiAgaXRlbXByb3A6IHRydWUsXG4gIGtiZDogdHJ1ZSxcbiAga2V5Z2VuOiB0cnVlLFxuICBsYWJlbDogdHJ1ZSxcbiAgbGluazogdHJ1ZSxcbiAgbWFwOiB0cnVlLFxuICBtYXJrOiB0cnVlLFxuICBtYXRoOiB0cnVlLFxuICBtZXRhOiB0cnVlLFxuICBtZXRlcjogdHJ1ZSxcbiAgbm9zY3JpcHQ6IHRydWUsXG4gIG9iamVjdDogdHJ1ZSxcbiAgb3B0aW9uOiB0cnVlLFxuICBvdXRwdXQ6IHRydWUsXG4gIHBpY3R1cmU6IHRydWUsXG4gIHByb2dyZXNzOiB0cnVlLFxuICBxOiB0cnVlLFxuICBydWJ5OiB0cnVlLFxuICBzOiB0cnVlLFxuICBzYW1wOiB0cnVlLFxuICBzY3JpcHQ6IHRydWUsXG4gIHNlbGVjdDogdHJ1ZSxcbiAgc2xvdDogdHJ1ZSxcbiAgc21hbGw6IHRydWUsXG4gIHNwYW46IHRydWUsXG4gIHN0cm9uZzogdHJ1ZSxcbiAgc3ViOiB0cnVlLFxuICBzdXA6IHRydWUsXG4gIHN2ZzogdHJ1ZSxcbiAgdGVtcGxhdGU6IHRydWUsXG4gIHRleHRhcmVhOiB0cnVlLFxuICB0aW1lOiB0cnVlLFxuICB1OiB0cnVlLFxuICB2YXI6IHRydWUsXG4gIHZpZGVvOiB0cnVlLFxuICB3YnI6IHRydWUsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlckRvY3VtZW50IHtcbiAgbm9kZVR5cGU6IDk7XG4gIHBhcmVudEVsZW1lbnQ6IG51bGw7XG4gIG93bmVyRG9jdW1lbnQ6IG51bGw7XG4gIGNyZWF0ZUVsZW1lbnQodGFnTmFtZTogc3RyaW5nKTogYW55O1xufVxuXG5jb25zdCBFU0NBUEVfSFRNTCA9IC9bJjw+J1wiXS9nO1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXJRd2lrRXZlbnQgPSAocHJvcDogc3RyaW5nLCBjb250YWluZXJTdGF0ZTogQ29udGFpbmVyU3RhdGUpID0+IHtcbiAgY29udGFpbmVyU3RhdGUuJGV2ZW50cyQuYWRkKGdldEV2ZW50TmFtZShwcm9wKSk7XG59O1xuXG5jb25zdCBlc2NhcGVWYWx1ZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGVzY2FwZUh0bWwodmFsdWUpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmNvbnN0IGVzY2FwZUh0bWwgPSAoczogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzLnJlcGxhY2UoRVNDQVBFX0hUTUwsIChjKSA9PiB7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgICBjYXNlICcmJzpcbiAgICAgICAgcmV0dXJuICcmYW1wOyc7XG4gICAgICBjYXNlICc8JzpcbiAgICAgICAgcmV0dXJuICcmbHQ7JztcbiAgICAgIGNhc2UgJz4nOlxuICAgICAgICByZXR1cm4gJyZndDsnO1xuICAgICAgY2FzZSAnXCInOlxuICAgICAgICByZXR1cm4gJyZxdW90Oyc7XG4gICAgICBjYXNlIFwiJ1wiOlxuICAgICAgICByZXR1cm4gJyYjMzk7JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH0pO1xufTtcblxuLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjYXR0cmlidXRlcy0yXG5jb25zdCB1bnNhZmVBdHRyQ2hhclJFID0gL1s+Lz1cIidcXHUwMDA5XFx1MDAwYVxcdTAwMGNcXHUwMDIwXS87IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29udHJvbC1yZWdleFxuZXhwb3J0IGNvbnN0IGlzU1NSVW5zYWZlQXR0ciA9IChuYW1lOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIHVuc2FmZUF0dHJDaGFyUkUudGVzdChuYW1lKTtcbn07XG5cbmNvbnN0IGxpc3RlbmVyc05lZWRJZCA9IChsaXN0ZW5lcnM6IExpc3RlbmVyW10pID0+IHtcbiAgcmV0dXJuIGxpc3RlbmVycy5zb21lKChsKSA9PiBsWzFdLiRjYXB0dXJlUmVmJCAmJiBsWzFdLiRjYXB0dXJlUmVmJC5sZW5ndGggPiAwKTtcbn07XG5cbmNvbnN0IGFkZER5bmFtaWNTbG90ID0gKGhvc3RDdHg6IFFDb250ZXh0LCBlbEN0eDogUUNvbnRleHQpID0+IHtcbiAgY29uc3QgZHluYW1pY1Nsb3RzID0gKGhvc3RDdHguJGR5bmFtaWNTbG90cyQgfHw9IFtdKTtcbiAgaWYgKCFkeW5hbWljU2xvdHMuaW5jbHVkZXMoZWxDdHgpKSB7XG4gICAgZHluYW1pY1Nsb3RzLnB1c2goZWxDdHgpO1xuICB9XG59O1xuXG5jb25zdCBub3JtYWxpemVJbnZpc2libGVFdmVudHMgPSAoZXZlbnROYW1lOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIGV2ZW50TmFtZSA9PT0gJ29uOnF2aXNpYmxlJyA/ICdvbi1kb2N1bWVudDpxaW5pdCcgOiBldmVudE5hbWU7XG59O1xuIl19","import { assertDefined } from '../error/assert';\nimport { SignalDerived } from '../state/signal';\nimport { qSerialize } from '../util/qdev';\n/** @internal */\nexport const _fnSignal = (fn, args, fnStr) => {\n    return new SignalDerived(fn, args, fnStr);\n};\nexport const serializeDerivedSignalFunc = (signal) => {\n    const fnBody = qSerialize ? signal.$funcStr$ : 'null';\n    assertDefined(fnBody, 'If qSerialize is true then fnStr must be provided.');\n    let args = '';\n    for (let i = 0; i < signal.$args$.length; i++) {\n        args += `p${i},`;\n    }\n    return `(${args})=>(${fnBody})`;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lZC1mbi5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS9xcmwvaW5saW5lZC1mbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFMUMsZ0JBQWdCO0FBQ2hCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUN2QixFQUFLLEVBQ0wsSUFBbUIsRUFDbkIsS0FBYyxFQUNkLEVBQUU7SUFDRixPQUFPLElBQUksYUFBYSxDQUErQixFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzFFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsTUFBcUIsRUFBRSxFQUFFO0lBQ2xFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3RELGFBQWEsQ0FBQyxNQUFNLEVBQUUsb0RBQW9ELENBQUMsQ0FBQztJQUM1RSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7SUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM5QyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTyxJQUFJLElBQUksT0FBTyxNQUFNLEdBQUcsQ0FBQztBQUNsQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnREZWZpbmVkIH0gZnJvbSAnLi4vZXJyb3IvYXNzZXJ0JztcbmltcG9ydCB7IFNpZ25hbERlcml2ZWQgfSBmcm9tICcuLi9zdGF0ZS9zaWduYWwnO1xuaW1wb3J0IHsgcVNlcmlhbGl6ZSB9IGZyb20gJy4uL3V0aWwvcWRldic7XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjb25zdCBfZm5TaWduYWwgPSA8VCBleHRlbmRzICguLi5hcmdzOiBhbnkpID0+IGFueT4oXG4gIGZuOiBULFxuICBhcmdzOiBQYXJhbWV0ZXJzPFQ+LFxuICBmblN0cj86IHN0cmluZ1xuKSA9PiB7XG4gIHJldHVybiBuZXcgU2lnbmFsRGVyaXZlZDxSZXR1cm5UeXBlPFQ+LCBQYXJhbWV0ZXJzPFQ+PihmbiwgYXJncywgZm5TdHIpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNlcmlhbGl6ZURlcml2ZWRTaWduYWxGdW5jID0gKHNpZ25hbDogU2lnbmFsRGVyaXZlZCkgPT4ge1xuICBjb25zdCBmbkJvZHkgPSBxU2VyaWFsaXplID8gc2lnbmFsLiRmdW5jU3RyJCA6ICdudWxsJztcbiAgYXNzZXJ0RGVmaW5lZChmbkJvZHksICdJZiBxU2VyaWFsaXplIGlzIHRydWUgdGhlbiBmblN0ciBtdXN0IGJlIHByb3ZpZGVkLicpO1xuICBsZXQgYXJncyA9ICcnO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNpZ25hbC4kYXJncyQubGVuZ3RoOyBpKyspIHtcbiAgICBhcmdzICs9IGBwJHtpfSxgO1xuICB9XG4gIHJldHVybiBgKCR7YXJnc30pPT4oJHtmbkJvZHl9KWA7XG59O1xuIl19","import { qDev, qRuntimeQrl, seal } from '../../util/qdev';\nimport { logError, logOnceWarn, logWarn } from '../../util/log';\nimport { isArray, isFunction, isObject, isString } from '../../util/types';\nimport { isQrl } from '../../qrl/qrl-class';\nimport { invoke, untrack } from '../../use/use-core';\nimport { verifySerializable } from '../../state/common';\nimport { isQwikComponent } from '../../component/component.public';\nimport { isSignal } from '../../state/signal';\nimport { isPromise } from '../../util/promises';\nimport { SkipRender } from './utils.public';\nimport { EMPTY_OBJ } from '../../util/flyweight';\nimport { _IMMUTABLE } from '../../internal';\n// keep this import from qwik/build so the cjs build works\nimport { isBrowser } from '@builder.io/qwik/build';\nimport { assertString } from '../../error/assert';\nimport { static_subtree } from '../execute-component';\nimport { ELEMENT_ID, OnRenderProp, QScopedStyle, QSlot, QSlotS } from '../../util/markers';\nimport { _IMMUTABLE_PREFIX } from '../../state/constants';\n/**\n * @internal\n *\n * Create a JSXNode for a string tag\n */\nexport const _jsxQ = (type, mutableProps, immutableProps, children, flags, key, dev) => {\n    assertString(type, 'jsx type must be a string');\n    const processed = key == null ? null : String(key);\n    const node = new JSXNodeImpl(type, mutableProps || EMPTY_OBJ, immutableProps, children, flags, processed);\n    if (qDev && dev) {\n        node.dev = {\n            stack: new Error().stack,\n            ...dev,\n        };\n    }\n    validateJSXNode(node);\n    seal(node);\n    return node;\n};\n/**\n * @internal\n *\n * A string tag with dynamic props, possibly containing children\n */\nexport const _jsxS = (type, mutableProps, immutableProps, flags, key, dev) => {\n    let children = null;\n    if (mutableProps && 'children' in mutableProps) {\n        children = mutableProps.children;\n        delete mutableProps.children;\n    }\n    return _jsxQ(type, mutableProps, immutableProps, children, flags, key, dev);\n};\n/**\n * @internal\n *\n * Create a JSXNode for any tag, with possibly immutable props embedded in props\n */\nexport const _jsxC = (type, mutableProps, flags, key, dev) => {\n    const processed = key == null ? null : String(key);\n    const props = mutableProps ?? {};\n    // In dynamic components, type could be a string\n    if (typeof type === 'string' && _IMMUTABLE in props) {\n        const immutableProps = props[_IMMUTABLE];\n        delete props[_IMMUTABLE];\n        const children = props.children;\n        delete props.children;\n        // Immutable handling for string tags is a bit different, merge all and consider immutable\n        for (const [k, v] of Object.entries(immutableProps)) {\n            if (v !== _IMMUTABLE) {\n                delete props[k];\n                props[k] = v;\n            }\n        }\n        return _jsxQ(type, null, props, children, flags, key, dev);\n    }\n    const node = new JSXNodeImpl(type, props, null, props.children, flags, processed);\n    if (typeof type === 'string' && mutableProps) {\n        delete mutableProps.children;\n    }\n    if (qDev && dev) {\n        node.dev = {\n            stack: new Error().stack,\n            ...dev,\n        };\n    }\n    validateJSXNode(node);\n    seal(node);\n    return node;\n};\n/**\n * @public\n * Used by the JSX transpilers to create a JSXNode.\n * Note that the optimizer will not use this, instead using _jsxQ, _jsxS, and _jsxC directly.\n */\nexport const jsx = (type, props, key) => {\n    const processed = key == null ? null : String(key);\n    const children = untrack(() => {\n        const c = props.children;\n        if (typeof type === 'string') {\n            delete props.children;\n        }\n        return c;\n    });\n    if (isString(type)) {\n        if ('className' in props) {\n            props.class = props.className;\n            delete props.className;\n            if (qDev) {\n                logOnceWarn('jsx: `className` is deprecated. Use `class` instead.');\n            }\n        }\n    }\n    const node = new JSXNodeImpl(type, props, null, children, 0, processed);\n    validateJSXNode(node);\n    seal(node);\n    return node;\n};\nexport const SKIP_RENDER_TYPE = ':skipRender';\nexport class JSXNodeImpl {\n    type;\n    props;\n    immutableProps;\n    children;\n    flags;\n    key;\n    dev;\n    constructor(type, props, immutableProps, children, flags, key = null) {\n        this.type = type;\n        this.props = props;\n        this.immutableProps = immutableProps;\n        this.children = children;\n        this.flags = flags;\n        this.key = key;\n    }\n}\n/** @public */\nexport const Virtual = (props) => props.children;\n/** @public */\nexport const RenderOnce = (props, key) => {\n    return new JSXNodeImpl(Virtual, EMPTY_OBJ, null, props.children, static_subtree, key);\n};\nconst validateJSXNode = (node) => {\n    if (qDev) {\n        const { type, props, immutableProps, children } = node;\n        invoke(undefined, () => {\n            const isQwikC = isQwikComponent(type);\n            if (!isString(type) && !isFunction(type)) {\n                throw new Error(`The <Type> of the JSX element must be either a string or a function. Instead, it's a \"${typeof type}\": ${String(type)}.`);\n            }\n            if (children) {\n                const flatChildren = isArray(children) ? children.flat() : [children];\n                if (isString(type) || isQwikC) {\n                    flatChildren.forEach((child) => {\n                        if (!isValidJSXChild(child)) {\n                            const typeObj = typeof child;\n                            let explanation = '';\n                            if (typeObj === 'object') {\n                                if (child?.constructor) {\n                                    explanation = `it's an instance of \"${child?.constructor.name}\".`;\n                                }\n                                else {\n                                    explanation = `it's a object literal: ${printObjectLiteral(child)} `;\n                                }\n                            }\n                            else if (typeObj === 'function') {\n                                explanation += `it's a function named \"${child.name}\".`;\n                            }\n                            else {\n                                explanation = `it's a \"${typeObj}\": ${String(child)}.`;\n                            }\n                            throw new Error(`One of the children of <${type}> is not an accepted value. JSX children must be either: string, boolean, number, <element>, Array, undefined/null, or a Promise/Signal. Instead, ${explanation}\\n`);\n                        }\n                    });\n                }\n                if (isBrowser) {\n                    if (isFunction(type) || immutableProps) {\n                        const keys = {};\n                        flatChildren.forEach((child) => {\n                            if (isJSXNode(child) && child.key != null) {\n                                const key = String(child.type) + ':' + child.key;\n                                if (keys[key]) {\n                                    const err = createJSXError(`Multiple JSX sibling nodes with the same key.\\nThis is likely caused by missing a custom key in a for loop`, child);\n                                    if (err) {\n                                        if (isString(child.type)) {\n                                            logOnceWarn(err);\n                                        }\n                                        else {\n                                            logOnceWarn(err);\n                                        }\n                                    }\n                                }\n                                else {\n                                    keys[key] = true;\n                                }\n                            }\n                        });\n                    }\n                }\n            }\n            const allProps = [\n                ...Object.entries(props),\n                ...(immutableProps ? Object.entries(immutableProps) : []),\n            ];\n            if (!qRuntimeQrl) {\n                for (const [prop, value] of allProps) {\n                    if (prop.endsWith('$') && value) {\n                        if (!isQrl(value) && !Array.isArray(value)) {\n                            throw new Error(`The value passed in ${prop}={...}> must be a QRL, instead you passed a \"${typeof value}\". Make sure your ${typeof value} is wrapped with $(...), so it can be serialized. Like this:\\n$(${String(value)})`);\n                        }\n                    }\n                    if (prop !== 'children' && isQwikC && value) {\n                        verifySerializable(value, `The value of the JSX attribute \"${prop}\" can not be serialized`);\n                    }\n                }\n            }\n            if (isString(type)) {\n                const hasSetInnerHTML = allProps.some((a) => a[0] === 'dangerouslySetInnerHTML');\n                if (hasSetInnerHTML && children) {\n                    const err = createJSXError(`The JSX element <${type}> can not have both 'dangerouslySetInnerHTML' and children.`, node);\n                    logError(err);\n                }\n                if (allProps.some((a) => a[0] === 'children')) {\n                    throw new Error(`The JSX element <${type}> can not have both 'children' as a property.`);\n                }\n                if (type === 'style') {\n                    if (children) {\n                        logOnceWarn(`jsx: Using <style>{content}</style> will escape the content, effectively breaking the CSS.\nIn order to disable content escaping use '<style dangerouslySetInnerHTML={content}/>'\n\nHowever, if the use case is to inject component styleContent, use 'useStyles$()' instead, it will be a lot more efficient.\nSee https://qwik.dev/docs/core/styles/#usestyles for more information.`);\n                    }\n                }\n                if (type === 'script') {\n                    if (children) {\n                        logOnceWarn(`jsx: Using <script>{content}</script> will escape the content, effectively breaking the inlined JS.\nIn order to disable content escaping use '<script dangerouslySetInnerHTML={content}/>'`);\n                    }\n                }\n            }\n        });\n    }\n};\nconst printObjectLiteral = (obj) => {\n    return `{ ${Object.keys(obj)\n        .map((key) => `\"${key}\"`)\n        .join(', ')} }`;\n};\nexport const isJSXNode = (n) => {\n    if (qDev) {\n        if (n instanceof JSXNodeImpl) {\n            return true;\n        }\n        if (isObject(n) && 'key' in n && 'props' in n && 'type' in n) {\n            logWarn(`Duplicate implementations of \"JSXNode\" found`);\n            return true;\n        }\n        return false;\n    }\n    else {\n        return n instanceof JSXNodeImpl;\n    }\n};\nexport const isValidJSXChild = (node) => {\n    if (!node) {\n        return true;\n    }\n    else if (node === SkipRender) {\n        return true;\n    }\n    else if (isString(node) || typeof node === 'number' || typeof node === 'boolean') {\n        return true;\n    }\n    else if (isJSXNode(node)) {\n        return true;\n    }\n    else if (isArray(node)) {\n        return node.every(isValidJSXChild);\n    }\n    if (isSignal(node)) {\n        return isValidJSXChild(node.value);\n    }\n    else if (isPromise(node)) {\n        return true;\n    }\n    return false;\n};\n/** @public */\nexport const Fragment = (props) => props.children;\n/** @public */\nexport const HTMLFragment = (props) => jsx(Virtual, props);\n/** @public */\nexport const jsxDEV = (type, props, key, _isStatic, opts, _ctx) => {\n    const processed = key == null ? null : String(key);\n    const children = untrack(() => {\n        const c = props.children;\n        if (typeof type === 'string') {\n            delete props.children;\n        }\n        return c;\n    });\n    if (isString(type)) {\n        if ('className' in props) {\n            props.class = props.className;\n            delete props.className;\n            if (qDev) {\n                logOnceWarn('jsx: `className` is deprecated. Use `class` instead.');\n            }\n        }\n    }\n    const node = new JSXNodeImpl(type, props, null, children, 0, processed);\n    node.dev = {\n        stack: new Error().stack,\n        ...opts,\n    };\n    validateJSXNode(node);\n    seal(node);\n    return node;\n};\nexport const createJSXError = (message, node) => {\n    const error = new Error(message);\n    if (!node.dev) {\n        return error;\n    }\n    error.stack = `JSXError: ${message}\\n${filterStack(node.dev.stack, 1)}`;\n    return error;\n};\nconst filterStack = (stack, offset = 0) => {\n    return stack.split('\\n').slice(offset).join('\\n');\n};\nexport { jsx as jsxs };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianN4LXJ1bnRpbWUuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvcmVuZGVyL2pzeC9qc3gtcnVudGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0UsT0FBTyxFQUFFLEtBQUssRUFBb0IsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQW1CLE1BQU0sa0NBQWtDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QywwREFBMEQ7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFVB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SUFDRCxLQUFLLENBQUMsS0FBSyxHQUFHLGFBQWEsT0FBTyxLQUFLLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3pFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFhLEVBQUUsU0FBaUIsQ0FBQyxFQUFFLEVBQUU7SUFDeEQsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGV2SlNYLCBGdW5jdGlvbkNvbXBvbmVudCwgSlNYTm9kZSwgSlNYTm9kZUludGVybmFsIH0gZnJvbSAnLi90eXBlcy9qc3gtbm9kZSc7XG5pbXBvcnQgdHlwZSB7IFF3aWtKU1ggfSBmcm9tICcuL3R5cGVzL2pzeC1xd2lrJztcbmltcG9ydCB7IHFEZXYsIHFSdW50aW1lUXJsLCBzZWFsIH0gZnJvbSAnLi4vLi4vdXRpbC9xZGV2JztcbmltcG9ydCB7IGxvZ0Vycm9yLCBsb2dPbmNlV2FybiwgbG9nV2FybiB9IGZyb20gJy4uLy4uL3V0aWwvbG9nJztcbmltcG9ydCB7IGlzQXJyYXksIGlzRnVuY3Rpb24sIGlzT2JqZWN0LCBpc1N0cmluZyB9IGZyb20gJy4uLy4uL3V0aWwvdHlwZXMnO1xuaW1wb3J0IHsgaXNRcmwsIHR5cGUgUVJMSW50ZXJuYWwgfSBmcm9tICcuLi8uLi9xcmwvcXJsLWNsYXNzJztcbmltcG9ydCB7IGludm9rZSwgdW50cmFjayB9IGZyb20gJy4uLy4uL3VzZS91c2UtY29yZSc7XG5pbXBvcnQgeyB2ZXJpZnlTZXJpYWxpemFibGUgfSBmcm9tICcuLi8uLi9zdGF0ZS9jb21tb24nO1xuaW1wb3J0IHsgaXNRd2lrQ29tcG9uZW50LCB0eXBlIE9uUmVuZGVyRm4gfSBmcm9tICcuLi8uLi9jb21wb25lbnQvY29tcG9uZW50LnB1YmxpYyc7XG5pbXBvcnQgeyBpc1NpZ25hbCB9IGZyb20gJy4uLy4uL3N0YXRlL3NpZ25hbCc7XG5pbXBvcnQgeyBpc1Byb21pc2UgfSBmcm9tICcuLi8uLi91dGlsL3Byb21pc2VzJztcbmltcG9ydCB7IFNraXBSZW5kZXIgfSBmcm9tICcuL3V0aWxzLnB1YmxpYyc7XG5pbXBvcnQgeyBFTVBUWV9PQkogfSBmcm9tICcuLi8uLi91dGlsL2ZseXdlaWdodCc7XG5pbXBvcnQgeyBfSU1NVVRBQkxFIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwnO1xuLy8ga2VlcCB0aGlzIGltcG9ydCBmcm9tIHF3aWsvYnVpbGQgc28gdGhlIGNqcyBidWlsZCB3b3Jrc1xuaW1wb3J0IHsgaXNCcm93c2VyIH0gZnJvbSAnQGJ1aWxkZXIuaW8vcXdpay9idWlsZCc7XG5pbXBvcnQgeyBhc3NlcnRTdHJpbmcgfSBmcm9tICcuLi8uLi9lcnJvci9hc3NlcnQnO1xuaW1wb3J0IHsgc3RhdGljX3N1YnRyZWUgfSBmcm9tICcuLi9leGVjdXRlLWNvbXBvbmVudCc7XG5pbXBvcnQgdHlwZSB7IEpzeENoaWxkIH0gZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBFTEVNRU5UX0lELCBPblJlbmRlclByb3AsIFFTY29wZWRTdHlsZSwgUVNsb3QsIFFTbG90UyB9IGZyb20gJy4uLy4uL3V0aWwvbWFya2Vycyc7XG5pbXBvcnQgdHlwZSB7IEpTWENoaWxkcmVuIH0gZnJvbSAnLi90eXBlcy9qc3gtcXdpay1hdHRyaWJ1dGVzJztcbmltcG9ydCB7IF9JTU1VVEFCTEVfUFJFRklYIH0gZnJvbSAnLi4vLi4vc3RhdGUvY29uc3RhbnRzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqXG4gKiBDcmVhdGUgYSBKU1hOb2RlIGZvciBhIHN0cmluZyB0YWdcbiAqL1xuZXhwb3J0IGNvbnN0IF9qc3hRID0gPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICB0eXBlOiBULFxuICBtdXRhYmxlUHJvcHM6IFJlY29yZDxhbnksIHVua25vd24+IHwgbnVsbCxcbiAgaW1tdXRhYmxlUHJvcHM6IFJlY29yZDxhbnksIHVua25vd24+IHwgbnVsbCxcbiAgY2hpbGRyZW46IEpTWENoaWxkcmVuIHwgbnVsbCxcbiAgZmxhZ3M6IG51bWJlcixcbiAga2V5OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsLFxuICBkZXY/OiBEZXZKU1hcbik6IEpTWE5vZGVJbnRlcm5hbDxUPiA9PiB7XG4gIGFzc2VydFN0cmluZyh0eXBlLCAnanN4IHR5cGUgbXVzdCBiZSBhIHN0cmluZycpO1xuICBjb25zdCBwcm9jZXNzZWQgPSBrZXkgPT0gbnVsbCA/IG51bGwgOiBTdHJpbmcoa2V5KTtcbiAgY29uc3Qgbm9kZSA9IG5ldyBKU1hOb2RlSW1wbDxUPihcbiAgICB0eXBlLFxuICAgIG11dGFibGVQcm9wcyB8fCAoRU1QVFlfT0JKIGFzIGFueSksXG4gICAgaW1tdXRhYmxlUHJvcHMsXG4gICAgY2hpbGRyZW4sXG4gICAgZmxhZ3MsXG4gICAgcHJvY2Vzc2VkXG4gICk7XG4gIGlmIChxRGV2ICYmIGRldikge1xuICAgIG5vZGUuZGV2ID0ge1xuICAgICAgc3RhY2s6IG5ldyBFcnJvcigpLnN0YWNrLFxuICAgICAgLi4uZGV2LFxuICAgIH07XG4gIH1cbiAgdmFsaWRhdGVKU1hOb2RlKG5vZGUpO1xuICBzZWFsKG5vZGUpO1xuICByZXR1cm4gbm9kZTtcbn07XG5cbi8qKlxuICogQGludGVybmFsXG4gKlxuICogQSBzdHJpbmcgdGFnIHdpdGggZHluYW1pYyBwcm9wcywgcG9zc2libHkgY29udGFpbmluZyBjaGlsZHJlblxuICovXG5leHBvcnQgY29uc3QgX2pzeFMgPSA8VCBleHRlbmRzIHN0cmluZz4oXG4gIHR5cGU6IFQsXG4gIG11dGFibGVQcm9wczogUmVjb3JkPGFueSwgdW5rbm93bj4gfCBudWxsLFxuICBpbW11dGFibGVQcm9wczogUmVjb3JkPGFueSwgdW5rbm93bj4gfCBudWxsLFxuICBmbGFnczogbnVtYmVyLFxuICBrZXk6IHN0cmluZyB8IG51bWJlciB8IG51bGwsXG4gIGRldj86IERldkpTWFxuKTogSlNYTm9kZUludGVybmFsPFQ+ID0+IHtcbiAgbGV0IGNoaWxkcmVuOiBKU1hDaGlsZHJlbiA9IG51bGw7XG4gIGlmIChtdXRhYmxlUHJvcHMgJiYgJ2NoaWxkcmVuJyBpbiBtdXRhYmxlUHJvcHMpIHtcbiAgICBjaGlsZHJlbiA9IG11dGFibGVQcm9wcy5jaGlsZHJlbiBhcyBKU1hDaGlsZHJlbjtcbiAgICBkZWxldGUgbXV0YWJsZVByb3BzLmNoaWxkcmVuO1xuICB9XG4gIHJldHVybiBfanN4USh0eXBlLCBtdXRhYmxlUHJvcHMsIGltbXV0YWJsZVByb3BzLCBjaGlsZHJlbiwgZmxhZ3MsIGtleSwgZGV2KTtcbn07XG5cbi8qKlxuICogQGludGVybmFsXG4gKlxuICogQ3JlYXRlIGEgSlNYTm9kZSBmb3IgYW55IHRhZywgd2l0aCBwb3NzaWJseSBpbW11dGFibGUgcHJvcHMgZW1iZWRkZWQgaW4gcHJvcHNcbiAqL1xuZXhwb3J0IGNvbnN0IF9qc3hDID0gPFQgZXh0ZW5kcyBzdHJpbmcgfCBGdW5jdGlvbkNvbXBvbmVudDxSZWNvcmQ8YW55LCB1bmtub3duPj4+KFxuICB0eXBlOiBULFxuICBtdXRhYmxlUHJvcHM6IChUIGV4dGVuZHMgRnVuY3Rpb25Db21wb25lbnQ8aW5mZXIgUFJPUFM+ID8gUFJPUFMgOiBSZWNvcmQ8YW55LCB1bmtub3duPikgfCBudWxsLFxuICBmbGFnczogbnVtYmVyLFxuICBrZXk6IHN0cmluZyB8IG51bWJlciB8IG51bGwsXG4gIGRldj86IEpzeERldk9wdHNcbik6IEpTWE5vZGVJbnRlcm5hbDxUPiA9PiB7XG4gIGNvbnN0IHByb2Nlc3NlZCA9IGtleSA9PSBudWxsID8gbnVsbCA6IFN0cmluZyhrZXkpO1xuICBjb25zdCBwcm9wcyA9IG11dGFibGVQcm9wcyA/PyAoe30gYXMgTm9uTnVsbGFibGU8dHlwZW9mIG11dGFibGVQcm9wcz4pO1xuICAvLyBJbiBkeW5hbWljIGNvbXBvbmVudHMsIHR5cGUgY291bGQgYmUgYSBzdHJpbmdcbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyAmJiBfSU1NVVRBQkxFIGluIHByb3BzKSB7XG4gICAgY29uc3QgaW1tdXRhYmxlUHJvcHMgPSBwcm9wc1tfSU1NVVRBQkxFXSBhcyBSZWNvcmQ8YW55LCB1bmtub3duPjtcbiAgICBkZWxldGUgcHJvcHNbX0lNTVVUQUJMRV07XG4gICAgY29uc3QgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiBhcyBKU1hDaGlsZHJlbjtcbiAgICBkZWxldGUgcHJvcHMuY2hpbGRyZW47XG4gICAgLy8gSW1tdXRhYmxlIGhhbmRsaW5nIGZvciBzdHJpbmcgdGFncyBpcyBhIGJpdCBkaWZmZXJlbnQsIG1lcmdlIGFsbCBhbmQgY29uc2lkZXIgaW1tdXRhYmxlXG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoaW1tdXRhYmxlUHJvcHMpKSB7XG4gICAgICBpZiAodiAhPT0gX0lNTVVUQUJMRSkge1xuICAgICAgICBkZWxldGUgcHJvcHNba107XG4gICAgICAgIChwcm9wcyBhcyBhbnkpW2tdID0gdjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIF9qc3hRKHR5cGUsIG51bGwsIHByb3BzLCBjaGlsZHJlbiwgZmxhZ3MsIGtleSwgZGV2KTtcbiAgfVxuICBjb25zdCBub2RlID0gbmV3IEpTWE5vZGVJbXBsPFQ+KFxuICAgIHR5cGUsXG4gICAgcHJvcHMsXG4gICAgbnVsbCxcbiAgICBwcm9wcy5jaGlsZHJlbiBhcyBKU1hDaGlsZHJlbixcbiAgICBmbGFncyxcbiAgICBwcm9jZXNzZWRcbiAgKTtcbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyAmJiBtdXRhYmxlUHJvcHMpIHtcbiAgICBkZWxldGUgbXV0YWJsZVByb3BzLmNoaWxkcmVuO1xuICB9XG4gIGlmIChxRGV2ICYmIGRldikge1xuICAgIG5vZGUuZGV2ID0ge1xuICAgICAgc3RhY2s6IG5ldyBFcnJvcigpLnN0YWNrLFxuICAgICAgLi4uZGV2LFxuICAgIH07XG4gIH1cbiAgdmFsaWRhdGVKU1hOb2RlKG5vZGUpO1xuICBzZWFsKG5vZGUpO1xuICByZXR1cm4gbm9kZTtcbn07XG5cbi8qKlxuICogQHB1YmxpY1xuICogVXNlZCBieSB0aGUgSlNYIHRyYW5zcGlsZXJzIHRvIGNyZWF0ZSBhIEpTWE5vZGUuXG4gKiBOb3RlIHRoYXQgdGhlIG9wdGltaXplciB3aWxsIG5vdCB1c2UgdGhpcywgaW5zdGVhZCB1c2luZyBfanN4USwgX2pzeFMsIGFuZCBfanN4QyBkaXJlY3RseS5cbiAqL1xuZXhwb3J0IGNvbnN0IGpzeCA9IDxUIGV4dGVuZHMgc3RyaW5nIHwgRnVuY3Rpb25Db21wb25lbnQ8YW55Pj4oXG4gIHR5cGU6IFQsXG4gIHByb3BzOiBUIGV4dGVuZHMgRnVuY3Rpb25Db21wb25lbnQ8aW5mZXIgUFJPUFM+ID8gUFJPUFMgOiBSZWNvcmQ8YW55LCB1bmtub3duPixcbiAga2V5Pzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuKTogSlNYTm9kZTxUPiA9PiB7XG4gIGNvbnN0IHByb2Nlc3NlZCA9IGtleSA9PSBudWxsID8gbnVsbCA6IFN0cmluZyhrZXkpO1xuICBjb25zdCBjaGlsZHJlbiA9IHVudHJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGMgPSBwcm9wcy5jaGlsZHJlbjtcbiAgICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBkZWxldGUgcHJvcHMuY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiBjO1xuICB9KTtcbiAgaWYgKGlzU3RyaW5nKHR5cGUpKSB7XG4gICAgaWYgKCdjbGFzc05hbWUnIGluIHByb3BzKSB7XG4gICAgICAocHJvcHMgYXMgYW55KS5jbGFzcyA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICAgIGRlbGV0ZSBwcm9wcy5jbGFzc05hbWU7XG4gICAgICBpZiAocURldikge1xuICAgICAgICBsb2dPbmNlV2FybignanN4OiBgY2xhc3NOYW1lYCBpcyBkZXByZWNhdGVkLiBVc2UgYGNsYXNzYCBpbnN0ZWFkLicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCBub2RlID0gbmV3IEpTWE5vZGVJbXBsPFQ+KHR5cGUsIHByb3BzLCBudWxsLCBjaGlsZHJlbiwgMCwgcHJvY2Vzc2VkKTtcbiAgdmFsaWRhdGVKU1hOb2RlKG5vZGUpO1xuICBzZWFsKG5vZGUpO1xuICByZXR1cm4gbm9kZTtcbn07XG5cbmV4cG9ydCBjb25zdCBTS0lQX1JFTkRFUl9UWVBFID0gJzpza2lwUmVuZGVyJztcblxuZXhwb3J0IGNsYXNzIEpTWE5vZGVJbXBsPFQ+IGltcGxlbWVudHMgSlNYTm9kZTxUPiB7XG4gIGRldj86IERldkpTWDtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHR5cGU6IFQsXG4gICAgcHVibGljIHByb3BzOiBUIGV4dGVuZHMgRnVuY3Rpb25Db21wb25lbnQ8aW5mZXIgUFJPUFM+ID8gUFJPUFMgOiBSZWNvcmQ8YW55LCB1bmtub3duPixcbiAgICBwdWJsaWMgaW1tdXRhYmxlUHJvcHM6IFJlY29yZDxhbnksIHVua25vd24+IHwgbnVsbCxcbiAgICBwdWJsaWMgY2hpbGRyZW46IEpTWENoaWxkcmVuLFxuICAgIHB1YmxpYyBmbGFnczogbnVtYmVyLFxuICAgIHB1YmxpYyBrZXk6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICkge31cbn1cblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCBjb25zdCBWaXJ0dWFsOiBGdW5jdGlvbkNvbXBvbmVudDx7XG4gIGNoaWxkcmVuPzogSlNYQ2hpbGRyZW47XG4gIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPzogc3RyaW5nO1xuICBbT25SZW5kZXJQcm9wXT86IFFSTEludGVybmFsPE9uUmVuZGVyRm48YW55Pj47XG4gIFtRU2xvdF0/OiBzdHJpbmc7XG4gIFtRU2xvdFNdPzogc3RyaW5nO1xuICBbX0lNTVVUQUJMRV0/OiBSZWNvcmQ8YW55LCB1bmtub3duPjtcbiAgcHJvcHM/OiBSZWNvcmQ8YW55LCB1bmtub3duPjtcbiAgW1FTY29wZWRTdHlsZV0/OiBzdHJpbmc7XG4gIFtFTEVNRU5UX0lEXT86IHN0cmluZztcbn0+ID0gKHByb3BzOiBhbnkpID0+IHByb3BzLmNoaWxkcmVuO1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGNvbnN0IFJlbmRlck9uY2U6IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgY2hpbGRyZW4/OiB1bmtub3duO1xuICBrZXk/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xufT4gPSAocHJvcHM6IGFueSwga2V5KSA9PiB7XG4gIHJldHVybiBuZXcgSlNYTm9kZUltcGwoVmlydHVhbCwgRU1QVFlfT0JKLCBudWxsLCBwcm9wcy5jaGlsZHJlbiwgc3RhdGljX3N1YnRyZWUsIGtleSk7XG59O1xuXG5jb25zdCB2YWxpZGF0ZUpTWE5vZGUgPSAobm9kZTogSlNYTm9kZUludGVybmFsKSA9PiB7XG4gIGlmIChxRGV2KSB7XG4gICAgY29uc3QgeyB0eXBlLCBwcm9wcywgaW1tdXRhYmxlUHJvcHMsIGNoaWxkcmVuIH0gPSBub2RlO1xuICAgIGludm9rZSh1bmRlZmluZWQsICgpID0+IHtcbiAgICAgIGNvbnN0IGlzUXdpa0MgPSBpc1F3aWtDb21wb25lbnQodHlwZSk7XG4gICAgICBpZiAoIWlzU3RyaW5nKHR5cGUpICYmICFpc0Z1bmN0aW9uKHR5cGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVGhlIDxUeXBlPiBvZiB0aGUgSlNYIGVsZW1lbnQgbXVzdCBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBmdW5jdGlvbi4gSW5zdGVhZCwgaXQncyBhIFwiJHt0eXBlb2YgdHlwZX1cIjogJHtTdHJpbmcoXG4gICAgICAgICAgICB0eXBlXG4gICAgICAgICAgKX0uYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IGZsYXRDaGlsZHJlbiA9IGlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW4uZmxhdCgpIDogW2NoaWxkcmVuXTtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHR5cGUpIHx8IGlzUXdpa0MpIHtcbiAgICAgICAgICBmbGF0Q2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgIGlmICghaXNWYWxpZEpTWENoaWxkKGNoaWxkKSkge1xuICAgICAgICAgICAgICBjb25zdCB0eXBlT2JqID0gdHlwZW9mIGNoaWxkO1xuICAgICAgICAgICAgICBsZXQgZXhwbGFuYXRpb24gPSAnJztcbiAgICAgICAgICAgICAgaWYgKHR5cGVPYmogPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkPy5jb25zdHJ1Y3Rvcikge1xuICAgICAgICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBgaXQncyBhbiBpbnN0YW5jZSBvZiBcIiR7Y2hpbGQ/LmNvbnN0cnVjdG9yLm5hbWV9XCIuYDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBgaXQncyBhIG9iamVjdCBsaXRlcmFsOiAke3ByaW50T2JqZWN0TGl0ZXJhbChjaGlsZCBhcyB7fSl9IGA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVPYmogPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBleHBsYW5hdGlvbiArPSBgaXQncyBhIGZ1bmN0aW9uIG5hbWVkIFwiJHsoY2hpbGQgYXMgRnVuY3Rpb24pLm5hbWV9XCIuYDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBleHBsYW5hdGlvbiA9IGBpdCdzIGEgXCIke3R5cGVPYmp9XCI6ICR7U3RyaW5nKGNoaWxkKX0uYDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgT25lIG9mIHRoZSBjaGlsZHJlbiBvZiA8JHt0eXBlfT4gaXMgbm90IGFuIGFjY2VwdGVkIHZhbHVlLiBKU1ggY2hpbGRyZW4gbXVzdCBiZSBlaXRoZXI6IHN0cmluZywgYm9vbGVhbiwgbnVtYmVyLCA8ZWxlbWVudD4sIEFycmF5LCB1bmRlZmluZWQvbnVsbCwgb3IgYSBQcm9taXNlL1NpZ25hbC4gSW5zdGVhZCwgJHtleHBsYW5hdGlvbn1cXG5gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQnJvd3Nlcikge1xuICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHR5cGUpIHx8IGltbXV0YWJsZVByb3BzKSB7XG4gICAgICAgICAgICBjb25zdCBrZXlzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xuICAgICAgICAgICAgZmxhdENoaWxkcmVuLmZvckVhY2goKGNoaWxkOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpc0pTWE5vZGUoY2hpbGQpICYmIGNoaWxkLmtleSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gU3RyaW5nKGNoaWxkLnR5cGUpICsgJzonICsgY2hpbGQua2V5O1xuICAgICAgICAgICAgICAgIGlmIChrZXlzW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGVyciA9IGNyZWF0ZUpTWEVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgTXVsdGlwbGUgSlNYIHNpYmxpbmcgbm9kZXMgd2l0aCB0aGUgc2FtZSBrZXkuXFxuVGhpcyBpcyBsaWtlbHkgY2F1c2VkIGJ5IG1pc3NpbmcgYSBjdXN0b20ga2V5IGluIGEgZm9yIGxvb3BgLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzU3RyaW5nKGNoaWxkLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgbG9nT25jZVdhcm4oZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBsb2dPbmNlV2FybihlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGtleXNba2V5XSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgYWxsUHJvcHMgPSBbXG4gICAgICAgIC4uLk9iamVjdC5lbnRyaWVzKHByb3BzKSxcbiAgICAgICAgLi4uKGltbXV0YWJsZVByb3BzID8gT2JqZWN0LmVudHJpZXMoaW1tdXRhYmxlUHJvcHMpIDogW10pLFxuICAgICAgXTtcbiAgICAgIGlmICghcVJ1bnRpbWVRcmwpIHtcbiAgICAgICAgZm9yIChjb25zdCBbcHJvcCwgdmFsdWVdIG9mIGFsbFByb3BzKSB7XG4gICAgICAgICAgaWYgKHByb3AuZW5kc1dpdGgoJyQnKSAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKCFpc1FybCh2YWx1ZSkgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgVGhlIHZhbHVlIHBhc3NlZCBpbiAke3Byb3B9PXsuLi59PiBtdXN0IGJlIGEgUVJMLCBpbnN0ZWFkIHlvdSBwYXNzZWQgYSBcIiR7dHlwZW9mIHZhbHVlfVwiLiBNYWtlIHN1cmUgeW91ciAke3R5cGVvZiB2YWx1ZX0gaXMgd3JhcHBlZCB3aXRoICQoLi4uKSwgc28gaXQgY2FuIGJlIHNlcmlhbGl6ZWQuIExpa2UgdGhpczpcXG4kKCR7U3RyaW5nKFxuICAgICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICAgICApfSlgXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwcm9wICE9PSAnY2hpbGRyZW4nICYmIGlzUXdpa0MgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIHZlcmlmeVNlcmlhbGl6YWJsZShcbiAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgIGBUaGUgdmFsdWUgb2YgdGhlIEpTWCBhdHRyaWJ1dGUgXCIke3Byb3B9XCIgY2FuIG5vdCBiZSBzZXJpYWxpemVkYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpc1N0cmluZyh0eXBlKSkge1xuICAgICAgICBjb25zdCBoYXNTZXRJbm5lckhUTUwgPSBhbGxQcm9wcy5zb21lKChhKSA9PiBhWzBdID09PSAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnKTtcbiAgICAgICAgaWYgKGhhc1NldElubmVySFRNTCAmJiBjaGlsZHJlbikge1xuICAgICAgICAgIGNvbnN0IGVyciA9IGNyZWF0ZUpTWEVycm9yKFxuICAgICAgICAgICAgYFRoZSBKU1ggZWxlbWVudCA8JHt0eXBlfT4gY2FuIG5vdCBoYXZlIGJvdGggJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJyBhbmQgY2hpbGRyZW4uYCxcbiAgICAgICAgICAgIG5vZGVcbiAgICAgICAgICApO1xuICAgICAgICAgIGxvZ0Vycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFsbFByb3BzLnNvbWUoKGEpID0+IGFbMF0gPT09ICdjaGlsZHJlbicpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgSlNYIGVsZW1lbnQgPCR7dHlwZX0+IGNhbiBub3QgaGF2ZSBib3RoICdjaGlsZHJlbicgYXMgYSBwcm9wZXJ0eS5gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ3N0eWxlJykge1xuICAgICAgICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgICAgICAgbG9nT25jZVdhcm4oYGpzeDogVXNpbmcgPHN0eWxlPntjb250ZW50fTwvc3R5bGU+IHdpbGwgZXNjYXBlIHRoZSBjb250ZW50LCBlZmZlY3RpdmVseSBicmVha2luZyB0aGUgQ1NTLlxuSW4gb3JkZXIgdG8gZGlzYWJsZSBjb250ZW50IGVzY2FwaW5nIHVzZSAnPHN0eWxlIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXtjb250ZW50fS8+J1xuXG5Ib3dldmVyLCBpZiB0aGUgdXNlIGNhc2UgaXMgdG8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZUNvbnRlbnQsIHVzZSAndXNlU3R5bGVzJCgpJyBpbnN0ZWFkLCBpdCB3aWxsIGJlIGEgbG90IG1vcmUgZWZmaWNpZW50LlxuU2VlIGh0dHBzOi8vcXdpay5kZXYvZG9jcy9jb3JlL3N0eWxlcy8jdXNlc3R5bGVzIGZvciBtb3JlIGluZm9ybWF0aW9uLmApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ3NjcmlwdCcpIHtcbiAgICAgICAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGxvZ09uY2VXYXJuKGBqc3g6IFVzaW5nIDxzY3JpcHQ+e2NvbnRlbnR9PC9zY3JpcHQ+IHdpbGwgZXNjYXBlIHRoZSBjb250ZW50LCBlZmZlY3RpdmVseSBicmVha2luZyB0aGUgaW5saW5lZCBKUy5cbkluIG9yZGVyIHRvIGRpc2FibGUgY29udGVudCBlc2NhcGluZyB1c2UgJzxzY3JpcHQgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e2NvbnRlbnR9Lz4nYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG5cbmNvbnN0IHByaW50T2JqZWN0TGl0ZXJhbCA9IChvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB7XG4gIHJldHVybiBgeyAke09iamVjdC5rZXlzKG9iailcbiAgICAubWFwKChrZXkpID0+IGBcIiR7a2V5fVwiYClcbiAgICAuam9pbignLCAnKX0gfWA7XG59O1xuXG5leHBvcnQgY29uc3QgaXNKU1hOb2RlID0gKG46IHVua25vd24pOiBuIGlzIEpTWE5vZGVJbnRlcm5hbCA9PiB7XG4gIGlmIChxRGV2KSB7XG4gICAgaWYgKG4gaW5zdGFuY2VvZiBKU1hOb2RlSW1wbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChpc09iamVjdChuKSAmJiAna2V5JyBpbiBuICYmICdwcm9wcycgaW4gbiAmJiAndHlwZScgaW4gbikge1xuICAgICAgbG9nV2FybihgRHVwbGljYXRlIGltcGxlbWVudGF0aW9ucyBvZiBcIkpTWE5vZGVcIiBmb3VuZGApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbiBpbnN0YW5jZW9mIEpTWE5vZGVJbXBsO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaXNWYWxpZEpTWENoaWxkID0gKG5vZGU6IHVua25vd24pOiBub2RlIGlzIEpzeENoaWxkID0+IHtcbiAgaWYgKCFub2RlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAobm9kZSA9PT0gU2tpcFJlbmRlcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzU3RyaW5nKG5vZGUpIHx8IHR5cGVvZiBub2RlID09PSAnbnVtYmVyJyB8fCB0eXBlb2Ygbm9kZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoaXNKU1hOb2RlKG5vZGUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoaXNBcnJheShub2RlKSkge1xuICAgIHJldHVybiBub2RlLmV2ZXJ5KGlzVmFsaWRKU1hDaGlsZCk7XG4gIH1cbiAgaWYgKGlzU2lnbmFsKG5vZGUpKSB7XG4gICAgcmV0dXJuIGlzVmFsaWRKU1hDaGlsZChub2RlLnZhbHVlKTtcbiAgfSBlbHNlIGlmIChpc1Byb21pc2Uobm9kZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGNvbnN0IEZyYWdtZW50OiBGdW5jdGlvbkNvbXBvbmVudDx7IGNoaWxkcmVuPzogYW55OyBrZXk/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIH0+ID0gKFxuICBwcm9wc1xuKSA9PiBwcm9wcy5jaGlsZHJlbjtcblxuaW50ZXJmYWNlIEpzeERldk9wdHMge1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBsaW5lTnVtYmVyOiBudW1iZXI7XG4gIGNvbHVtbk51bWJlcjogbnVtYmVyO1xufVxuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGNvbnN0IEhUTUxGcmFnbWVudDogRnVuY3Rpb25Db21wb25lbnQ8eyBkYW5nZXJvdXNseVNldElubmVySFRNTDogc3RyaW5nIH0+ID0gKHByb3BzKSA9PlxuICBqc3goVmlydHVhbCwgcHJvcHMpO1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGNvbnN0IGpzeERFViA9IDxUIGV4dGVuZHMgc3RyaW5nIHwgRnVuY3Rpb25Db21wb25lbnQ8UmVjb3JkPGFueSwgdW5rbm93bj4+PihcbiAgdHlwZTogVCxcbiAgcHJvcHM6IFQgZXh0ZW5kcyBGdW5jdGlvbkNvbXBvbmVudDxpbmZlciBQUk9QUz4gPyBQUk9QUyA6IFJlY29yZDxhbnksIHVua25vd24+LFxuICBrZXk6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsXG4gIF9pc1N0YXRpYzogYm9vbGVhbixcbiAgb3B0czogSnN4RGV2T3B0cyxcbiAgX2N0eDogdW5rbm93blxuKTogSlNYTm9kZTxUPiA9PiB7XG4gIGNvbnN0IHByb2Nlc3NlZCA9IGtleSA9PSBudWxsID8gbnVsbCA6IFN0cmluZyhrZXkpO1xuICBjb25zdCBjaGlsZHJlbiA9IHVudHJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGMgPSBwcm9wcy5jaGlsZHJlbjtcbiAgICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBkZWxldGUgcHJvcHMuY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiBjO1xuICB9KSBhcyBKU1hDaGlsZHJlbjtcbiAgaWYgKGlzU3RyaW5nKHR5cGUpKSB7XG4gICAgaWYgKCdjbGFzc05hbWUnIGluIHByb3BzKSB7XG4gICAgICAocHJvcHMgYXMgYW55KS5jbGFzcyA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICAgIGRlbGV0ZSBwcm9wcy5jbGFzc05hbWU7XG4gICAgICBpZiAocURldikge1xuICAgICAgICBsb2dPbmNlV2FybignanN4OiBgY2xhc3NOYW1lYCBpcyBkZXByZWNhdGVkLiBVc2UgYGNsYXNzYCBpbnN0ZWFkLicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCBub2RlID0gbmV3IEpTWE5vZGVJbXBsPFQ+KHR5cGUsIHByb3BzLCBudWxsLCBjaGlsZHJlbiwgMCwgcHJvY2Vzc2VkKTtcbiAgbm9kZS5kZXYgPSB7XG4gICAgc3RhY2s6IG5ldyBFcnJvcigpLnN0YWNrLFxuICAgIC4uLm9wdHMsXG4gIH07XG4gIHZhbGlkYXRlSlNYTm9kZShub2RlKTtcbiAgc2VhbChub2RlKTtcbiAgcmV0dXJuIG5vZGU7XG59O1xuXG5leHBvcnQgdHlwZSB7IFF3aWtKU1ggYXMgSlNYIH07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVKU1hFcnJvciA9IChtZXNzYWdlOiBzdHJpbmcsIG5vZGU6IEpTWE5vZGUpID0+IHtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIGlmICghbm9kZS5kZXYpIHtcbiAgICByZXR1cm4gZXJyb3I7XG4gIH1cbiAgZXJyb3Iuc3RhY2sgPSBgSlNYRXJyb3I6ICR7bWVzc2FnZX1cXG4ke2ZpbHRlclN0YWNrKG5vZGUuZGV2LnN0YWNrISwgMSl9YDtcbiAgcmV0dXJuIGVycm9yO1xufTtcblxuY29uc3QgZmlsdGVyU3RhY2sgPSAoc3RhY2s6IHN0cmluZywgb2Zmc2V0OiBudW1iZXIgPSAwKSA9PiB7XG4gIHJldHVybiBzdGFjay5zcGxpdCgnXFxuJykuc2xpY2Uob2Zmc2V0KS5qb2luKCdcXG4nKTtcbn07XG5cbmV4cG9ydCB7IGpzeCBhcyBqc3hzIH07XG4iXX0=","import { jsx, RenderOnce } from '../jsx/jsx-runtime';\n/** @public */\nexport const SkipRender = Symbol('skip render');\n/** @public */\nexport const SSRRaw = (() => null);\n/** @public */\nexport const SSRComment = (props) => jsx(SSRRaw, { data: `<!--${props.data}-->` }, null);\n/** @public */\nexport const SSRStreamBlock = (props) => {\n    return [\n        jsx(SSRComment, { data: 'qkssr-pu' }),\n        props.children,\n        jsx(SSRComment, { data: 'qkssr-po' }),\n    ];\n};\n/** @public */\nexport const SSRStream = (props, key) => jsx(RenderOnce, { children: jsx(InternalSSRStream, props) }, key);\n/**\n * @deprecated - It has no effect\n * @public\n */\nexport const SSRHint = (() => null);\nexport const InternalSSRStream = () => null;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMucHVibGljLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3JlbmRlci9qc3gvdXRpbHMucHVibGljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFLckQsY0FBYztBQUNkLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBWSxNQUFNLENBQUMsYUFBYSxDQUFRLENBQUM7QUFFaEUsY0FBYztBQUNkLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBd0MsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQVEsQ0FBQztBQUUvRSxjQUFjO0FBQ2QsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUF3QyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ3ZFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQVEsQ0FBQztBQUU3RCxjQUFjO0FBQ2QsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUEwQyxDQUFDLEtBQUssRUFBRSxFQUFFO0lBQzdFLE9BQU87UUFDTCxHQUFHLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3JDLEtBQUssQ0FBQyxRQUFRO1FBQ2QsR0FBRyxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQztLQUMvQixDQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBVUYsY0FBYztBQUNkLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBc0MsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FDekUsR0FBRyxDQUFDLFVBQVUsRUFBRSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQU9wRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQW9DLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFRLENBQUM7QUFFNUUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQXNDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCwgUmVuZGVyT25jZSB9IGZyb20gJy4uL2pzeC9qc3gtcnVudGltZSc7XG5pbXBvcnQgdHlwZSB7IFN0cmVhbVdyaXRlciB9IGZyb20gJy4uL3Nzci9yZW5kZXItc3NyJztcbmltcG9ydCB0eXBlIHsgRnVuY3Rpb25Db21wb25lbnQsIEpTWE5vZGUgfSBmcm9tICcuL3R5cGVzL2pzeC1ub2RlJztcbmltcG9ydCB0eXBlIHsgSlNYQ2hpbGRyZW4gfSBmcm9tICcuL3R5cGVzL2pzeC1xd2lrLWF0dHJpYnV0ZXMnO1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGNvbnN0IFNraXBSZW5kZXI6IEpTWE5vZGUgPSBTeW1ib2woJ3NraXAgcmVuZGVyJykgYXMgYW55O1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGNvbnN0IFNTUlJhdzogRnVuY3Rpb25Db21wb25lbnQ8eyBkYXRhOiBzdHJpbmcgfT4gPSAoKCkgPT4gbnVsbCkgYXMgYW55O1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGNvbnN0IFNTUkNvbW1lbnQ6IEZ1bmN0aW9uQ29tcG9uZW50PHsgZGF0YTogc3RyaW5nIH0+ID0gKHByb3BzKSA9PlxuICBqc3goU1NSUmF3LCB7IGRhdGE6IGA8IS0tJHtwcm9wcy5kYXRhfS0tPmAgfSwgbnVsbCkgYXMgYW55O1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGNvbnN0IFNTUlN0cmVhbUJsb2NrOiBGdW5jdGlvbkNvbXBvbmVudDx7IGNoaWxkcmVuPzogYW55IH0+ID0gKHByb3BzKSA9PiB7XG4gIHJldHVybiBbXG4gICAganN4KFNTUkNvbW1lbnQsIHsgZGF0YTogJ3Frc3NyLXB1JyB9KSxcbiAgICBwcm9wcy5jaGlsZHJlbixcbiAgICBqc3goU1NSQ29tbWVudCwgeyBkYXRhOiAncWtzc3ItcG8nIH0pLFxuICBdIGFzIGFueTtcbn07XG5cbi8qKiBAcHVibGljICovXG5leHBvcnQgdHlwZSBTU1JTdHJlYW1Qcm9wcyA9IHtcbiAgY2hpbGRyZW46XG4gICAgfCBBc3luY0dlbmVyYXRvcjxKU1hDaGlsZHJlbiwgdm9pZCwgYW55PlxuICAgIHwgKChzdHJlYW06IFN0cmVhbVdyaXRlcikgPT4gUHJvbWlzZTx2b2lkPilcbiAgICB8ICgoKSA9PiBBc3luY0dlbmVyYXRvcjxKU1hDaGlsZHJlbiwgdm9pZCwgYW55Pik7XG59O1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGNvbnN0IFNTUlN0cmVhbTogRnVuY3Rpb25Db21wb25lbnQ8U1NSU3RyZWFtUHJvcHM+ID0gKHByb3BzLCBrZXkpID0+XG4gIGpzeChSZW5kZXJPbmNlLCB7IGNoaWxkcmVuOiBqc3goSW50ZXJuYWxTU1JTdHJlYW0sIHByb3BzKSB9LCBrZXkpO1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IHR5cGUgU1NSSGludFByb3BzID0ge1xuICBkeW5hbWljPzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgLSBJdCBoYXMgbm8gZWZmZWN0XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBTU1JIaW50OiBGdW5jdGlvbkNvbXBvbmVudDxTU1JIaW50UHJvcHM+ID0gKCgpID0+IG51bGwpIGFzIGFueTtcblxuZXhwb3J0IGNvbnN0IEludGVybmFsU1NSU3RyZWFtOiBGdW5jdGlvbkNvbXBvbmVudDxTU1JTdHJlYW1Qcm9wcz4gPSAoKSA9PiBudWxsO1xuIl19","import { qError, QError_invalidJsxNodeType } from '../../error/error';\nimport { newInvokeContext, invoke } from '../../use/use-core';\nimport { EMPTY_ARRAY, EMPTY_OBJ } from '../../util/flyweight';\nimport { logWarn } from '../../util/log';\nimport { isNotNullable, isPromise, promiseAll, maybeThen } from '../../util/promises';\nimport { qDev, qInspector, seal } from '../../util/qdev';\nimport { isArray, isFunction, isObject, isString } from '../../util/types';\nimport { domToVnode, smartUpdateChildren } from './visitor';\nimport { SkipRender } from '../jsx/utils.public';\nimport { isJSXNode, SKIP_RENDER_TYPE, _jsxC, Virtual } from '../jsx/jsx-runtime';\nimport { executeComponent, shouldWrapFunctional } from '../execute-component';\nimport { VIRTUAL } from './virtual-element';\nimport { appendHeadStyle } from './operations';\nimport { isSignal } from '../../state/signal';\nimport { HOST_FLAG_MOUNTED } from '../../state/context';\nexport const renderComponent = (rCtx, elCtx, flags) => {\n    const justMounted = !(elCtx.$flags$ & HOST_FLAG_MOUNTED);\n    const hostElement = elCtx.$element$;\n    const containerState = rCtx.$static$.$containerState$;\n    // Component is not dirty any more\n    containerState.$hostsStaging$.delete(elCtx);\n    // Clean current subscription before render\n    containerState.$subsManager$.$clearSub$(hostElement);\n    // TODO, serialize scopeIds\n    return maybeThen(executeComponent(rCtx, elCtx), (res) => {\n        const staticCtx = rCtx.$static$;\n        const newCtx = res.rCtx;\n        const iCtx = newInvokeContext(rCtx.$static$.$locale$, hostElement);\n        staticCtx.$hostElements$.add(hostElement);\n        iCtx.$subscriber$ = [0, hostElement];\n        iCtx.$renderCtx$ = newCtx;\n        if (justMounted) {\n            if (elCtx.$appendStyles$) {\n                for (const style of elCtx.$appendStyles$) {\n                    appendHeadStyle(staticCtx, style);\n                }\n            }\n        }\n        const processedJSXNode = processData(res.node, iCtx);\n        return maybeThen(processedJSXNode, (processedJSXNode) => {\n            const newVdom = wrapJSX(hostElement, processedJSXNode);\n            // const oldVdom = getVdom(hostElement);\n            const oldVdom = getVdom(elCtx);\n            return maybeThen(smartUpdateChildren(newCtx, oldVdom, newVdom, flags), () => {\n                // setVdom(hostElement, newVdom);\n                elCtx.$vdom$ = newVdom;\n            });\n        });\n    });\n};\nexport const getVdom = (elCtx) => {\n    if (!elCtx.$vdom$) {\n        elCtx.$vdom$ = domToVnode(elCtx.$element$);\n    }\n    return elCtx.$vdom$;\n};\nexport class ProcessedJSXNodeImpl {\n    $type$;\n    $props$;\n    $immutableProps$;\n    $children$;\n    $flags$;\n    $key$;\n    $elm$ = null;\n    $text$ = '';\n    $signal$ = null;\n    $id$;\n    $dev$;\n    constructor($type$, $props$, $immutableProps$, $children$, $flags$, $key$) {\n        this.$type$ = $type$;\n        this.$props$ = $props$;\n        this.$immutableProps$ = $immutableProps$;\n        this.$children$ = $children$;\n        this.$flags$ = $flags$;\n        this.$key$ = $key$;\n        this.$id$ = $type$ + ($key$ ? ':' + $key$ : '');\n        if (qDev && qInspector) {\n            this.$dev$ = undefined;\n        }\n        seal(this);\n    }\n}\nexport const processNode = (node, invocationContext) => {\n    const { key, type, props, children, flags, immutableProps } = node;\n    let textType = '';\n    if (isString(type)) {\n        textType = type;\n    }\n    else if (type === Virtual) {\n        textType = VIRTUAL;\n    }\n    else if (isFunction(type)) {\n        const res = invoke(invocationContext, type, props, key, flags, node.dev);\n        if (!shouldWrapFunctional(res, node)) {\n            return processData(res, invocationContext);\n        }\n        return processNode(_jsxC(Virtual, { children: res }, 0, key), invocationContext);\n    }\n    else {\n        throw qError(QError_invalidJsxNodeType, type);\n    }\n    let convertedChildren = EMPTY_ARRAY;\n    if (children != null) {\n        return maybeThen(processData(children, invocationContext), (result) => {\n            if (result !== undefined) {\n                convertedChildren = isArray(result) ? result : [result];\n            }\n            const vnode = new ProcessedJSXNodeImpl(textType, props, immutableProps, convertedChildren, flags, key);\n            if (qDev && qInspector) {\n                vnode.$dev$ = node.dev;\n            }\n            return vnode;\n        });\n    }\n    else {\n        const vnode = new ProcessedJSXNodeImpl(textType, props, immutableProps, convertedChildren, flags, key);\n        if (qDev && qInspector) {\n            vnode.$dev$ = node.dev;\n        }\n        return vnode;\n    }\n};\nexport const wrapJSX = (element, input) => {\n    const children = input === undefined ? EMPTY_ARRAY : isArray(input) ? input : [input];\n    const node = new ProcessedJSXNodeImpl(':virtual', {}, null, children, 0, null);\n    node.$elm$ = element;\n    return node;\n};\nexport const processData = (node, invocationContext) => {\n    if (node == null || typeof node === 'boolean') {\n        return undefined;\n    }\n    if (isPrimitive(node)) {\n        const newNode = new ProcessedJSXNodeImpl('#text', EMPTY_OBJ, null, EMPTY_ARRAY, 0, null);\n        newNode.$text$ = String(node);\n        return newNode;\n    }\n    else if (isJSXNode(node)) {\n        return processNode(node, invocationContext);\n    }\n    else if (isSignal(node)) {\n        const newNode = new ProcessedJSXNodeImpl('#signal', EMPTY_OBJ, null, EMPTY_ARRAY, 0, null);\n        newNode.$signal$ = node;\n        return newNode;\n    }\n    else if (isArray(node)) {\n        const output = promiseAll(node.flatMap((n) => processData(n, invocationContext)));\n        return maybeThen(output, (array) => array.flat(100).filter(isNotNullable));\n    }\n    else if (isPromise(node)) {\n        return node.then((node) => processData(node, invocationContext));\n    }\n    else if (node === SkipRender) {\n        return new ProcessedJSXNodeImpl(SKIP_RENDER_TYPE, EMPTY_OBJ, null, EMPTY_ARRAY, 0, null);\n    }\n    else {\n        logWarn('A unsupported value was passed to the JSX, skipping render. Value:', node);\n        return undefined;\n    }\n};\nexport const isProcessedJSXNode = (n) => {\n    if (qDev) {\n        if (n instanceof ProcessedJSXNodeImpl) {\n            return true;\n        }\n        if (isObject(n) && n.constructor.name === ProcessedJSXNodeImpl.name) {\n            throw new Error(`Duplicate implementations of \"ProcessedJSXNodeImpl\" found`);\n        }\n        return false;\n    }\n    else {\n        return n instanceof ProcessedJSXNodeImpl;\n    }\n};\nexport const isPrimitive = (obj) => {\n    return isString(obj) || typeof obj === 'number';\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWRvbS5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS9yZW5kZXIvZG9tL3JlbmRlci1kb20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLE9BQU8sRUFBc0IsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQXVCLE1BQU0sa0JBQWtCLENBQUM7QUFDaEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFOUUsT0FBTyxFQUFvQixPQUFPLEVBQXVCLE1BQU0sbUJBQW1CLENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFlLE1BQU0s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RSxDQUFDO1NBQU0sSUFBSSxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDL0IsT0FBTyxJQUFJLG9CQUFvQixDQUFDLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRixDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sQ0FBQyxvRUFBb0UsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwRixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFNLEVBQXlCLEVBQUU7SUFDbEUsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNULElBQUksQ0FBQyxZQUFZLG9CQUFvQixFQUFFLENBQUM7WUFDdEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEUsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxDQUFDLFlBQVksb0JBQW9CLENBQUM7SUFDM0MsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQVEsRUFBRSxFQUFFO0lBQ3RDLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQztBQUNsRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBxRXJyb3IsIFFFcnJvcl9pbnZhbGlkSnN4Tm9kZVR5cGUgfSBmcm9tICcuLi8uLi9lcnJvci9lcnJvcic7XG5pbXBvcnQgeyB0eXBlIEludm9rZUNvbnRleHQsIG5ld0ludm9rZUNvbnRleHQsIGludm9rZSB9IGZyb20gJy4uLy4uL3VzZS91c2UtY29yZSc7XG5pbXBvcnQgeyBFTVBUWV9BUlJBWSwgRU1QVFlfT0JKIH0gZnJvbSAnLi4vLi4vdXRpbC9mbHl3ZWlnaHQnO1xuaW1wb3J0IHsgbG9nV2FybiB9IGZyb20gJy4uLy4uL3V0aWwvbG9nJztcbmltcG9ydCB7IGlzTm90TnVsbGFibGUsIGlzUHJvbWlzZSwgcHJvbWlzZUFsbCwgbWF5YmVUaGVuIH0gZnJvbSAnLi4vLi4vdXRpbC9wcm9taXNlcyc7XG5pbXBvcnQgeyBxRGV2LCBxSW5zcGVjdG9yLCBzZWFsIH0gZnJvbSAnLi4vLi4vdXRpbC9xZGV2JztcbmltcG9ydCB7IGlzQXJyYXksIGlzRnVuY3Rpb24sIGlzT2JqZWN0LCBpc1N0cmluZywgdHlwZSBWYWx1ZU9yUHJvbWlzZSB9IGZyb20gJy4uLy4uL3V0aWwvdHlwZXMnO1xuaW1wb3J0IHsgZG9tVG9Wbm9kZSwgc21hcnRVcGRhdGVDaGlsZHJlbiB9IGZyb20gJy4vdmlzaXRvcic7XG5pbXBvcnQgeyBTa2lwUmVuZGVyIH0gZnJvbSAnLi4vanN4L3V0aWxzLnB1YmxpYyc7XG5pbXBvcnQgeyBpc0pTWE5vZGUsIFNLSVBfUkVOREVSX1RZUEUsIF9qc3hDLCBWaXJ0dWFsIH0gZnJvbSAnLi4vanN4L2pzeC1ydW50aW1lJztcbmltcG9ydCB0eXBlIHsgRGV2SlNYLCBKU1hOb2RlSW50ZXJuYWwgfSBmcm9tICcuLi9qc3gvdHlwZXMvanN4LW5vZGUnO1xuaW1wb3J0IHsgZXhlY3V0ZUNvbXBvbmVudCwgc2hvdWxkV3JhcEZ1bmN0aW9uYWwgfSBmcm9tICcuLi9leGVjdXRlLWNvbXBvbmVudCc7XG5pbXBvcnQgdHlwZSB7IFJlbmRlckNvbnRleHQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyB0eXBlIFF3aWtFbGVtZW50LCBWSVJUVUFMLCB0eXBlIFZpcnR1YWxFbGVtZW50IH0gZnJvbSAnLi92aXJ0dWFsLWVsZW1lbnQnO1xuaW1wb3J0IHsgYXBwZW5kSGVhZFN0eWxlIH0gZnJvbSAnLi9vcGVyYXRpb25zJztcbmltcG9ydCB7IGlzU2lnbmFsLCB0eXBlIFNpZ25hbCB9IGZyb20gJy4uLy4uL3N0YXRlL3NpZ25hbCc7XG5pbXBvcnQgeyBIT1NUX0ZMQUdfTU9VTlRFRCwgdHlwZSBRQ29udGV4dCB9IGZyb20gJy4uLy4uL3N0YXRlL2NvbnRleHQnO1xuXG5leHBvcnQgY29uc3QgcmVuZGVyQ29tcG9uZW50ID0gKFxuICByQ3R4OiBSZW5kZXJDb250ZXh0LFxuICBlbEN0eDogUUNvbnRleHQsXG4gIGZsYWdzOiBudW1iZXJcbik6IFZhbHVlT3JQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QganVzdE1vdW50ZWQgPSAhKGVsQ3R4LiRmbGFncyQgJiBIT1NUX0ZMQUdfTU9VTlRFRCk7XG4gIGNvbnN0IGhvc3RFbGVtZW50ID0gZWxDdHguJGVsZW1lbnQkO1xuICBjb25zdCBjb250YWluZXJTdGF0ZSA9IHJDdHguJHN0YXRpYyQuJGNvbnRhaW5lclN0YXRlJDtcbiAgLy8gQ29tcG9uZW50IGlzIG5vdCBkaXJ0eSBhbnkgbW9yZVxuICBjb250YWluZXJTdGF0ZS4kaG9zdHNTdGFnaW5nJC5kZWxldGUoZWxDdHgpO1xuICAvLyBDbGVhbiBjdXJyZW50IHN1YnNjcmlwdGlvbiBiZWZvcmUgcmVuZGVyXG4gIGNvbnRhaW5lclN0YXRlLiRzdWJzTWFuYWdlciQuJGNsZWFyU3ViJChob3N0RWxlbWVudCk7XG5cbiAgLy8gVE9ETywgc2VyaWFsaXplIHNjb3BlSWRzXG4gIHJldHVybiBtYXliZVRoZW4oZXhlY3V0ZUNvbXBvbmVudChyQ3R4LCBlbEN0eCksIChyZXMpID0+IHtcbiAgICBjb25zdCBzdGF0aWNDdHggPSByQ3R4LiRzdGF0aWMkO1xuICAgIGNvbnN0IG5ld0N0eCA9IHJlcy5yQ3R4O1xuICAgIGNvbnN0IGlDdHggPSBuZXdJbnZva2VDb250ZXh0KHJDdHguJHN0YXRpYyQuJGxvY2FsZSQsIGhvc3RFbGVtZW50KTtcbiAgICBzdGF0aWNDdHguJGhvc3RFbGVtZW50cyQuYWRkKGhvc3RFbGVtZW50KTtcbiAgICBpQ3R4LiRzdWJzY3JpYmVyJCA9IFswLCBob3N0RWxlbWVudF07XG4gICAgaUN0eC4kcmVuZGVyQ3R4JCA9IG5ld0N0eDtcbiAgICBpZiAoanVzdE1vdW50ZWQpIHtcbiAgICAgIGlmIChlbEN0eC4kYXBwZW5kU3R5bGVzJCkge1xuICAgICAgICBmb3IgKGNvbnN0IHN0eWxlIG9mIGVsQ3R4LiRhcHBlbmRTdHlsZXMkKSB7XG4gICAgICAgICAgYXBwZW5kSGVhZFN0eWxlKHN0YXRpY0N0eCwgc3R5bGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHByb2Nlc3NlZEpTWE5vZGUgPSBwcm9jZXNzRGF0YShyZXMubm9kZSwgaUN0eCk7XG4gICAgcmV0dXJuIG1heWJlVGhlbihwcm9jZXNzZWRKU1hOb2RlLCAocHJvY2Vzc2VkSlNYTm9kZSkgPT4ge1xuICAgICAgY29uc3QgbmV3VmRvbSA9IHdyYXBKU1goaG9zdEVsZW1lbnQsIHByb2Nlc3NlZEpTWE5vZGUpO1xuICAgICAgLy8gY29uc3Qgb2xkVmRvbSA9IGdldFZkb20oaG9zdEVsZW1lbnQpO1xuICAgICAgY29uc3Qgb2xkVmRvbSA9IGdldFZkb20oZWxDdHgpO1xuICAgICAgcmV0dXJuIG1heWJlVGhlbihzbWFydFVwZGF0ZUNoaWxkcmVuKG5ld0N0eCwgb2xkVmRvbSwgbmV3VmRvbSwgZmxhZ3MpLCAoKSA9PiB7XG4gICAgICAgIC8vIHNldFZkb20oaG9zdEVsZW1lbnQsIG5ld1Zkb20pO1xuICAgICAgICBlbEN0eC4kdmRvbSQgPSBuZXdWZG9tO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFZkb20gPSAoZWxDdHg6IFFDb250ZXh0KSA9PiB7XG4gIGlmICghZWxDdHguJHZkb20kKSB7XG4gICAgZWxDdHguJHZkb20kID0gZG9tVG9Wbm9kZShlbEN0eC4kZWxlbWVudCQpO1xuICB9XG4gIHJldHVybiBlbEN0eC4kdmRvbSQ7XG59O1xuXG5leHBvcnQgY2xhc3MgUHJvY2Vzc2VkSlNYTm9kZUltcGwgaW1wbGVtZW50cyBQcm9jZXNzZWRKU1hOb2RlIHtcbiAgJGVsbSQ6IE5vZGUgfCBWaXJ0dWFsRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAkdGV4dCQ6IHN0cmluZyA9ICcnO1xuICAkc2lnbmFsJDogU2lnbmFsPGFueT4gfCBudWxsID0gbnVsbDtcbiAgJGlkJDogc3RyaW5nO1xuICAkZGV2JDogRGV2SlNYIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyAkdHlwZSQ6IHN0cmluZyxcbiAgICBwdWJsaWMgJHByb3BzJDogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBwdWJsaWMgJGltbXV0YWJsZVByb3BzJDogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwsXG4gICAgcHVibGljICRjaGlsZHJlbiQ6IFByb2Nlc3NlZEpTWE5vZGVbXSxcbiAgICBwdWJsaWMgJGZsYWdzJDogbnVtYmVyLFxuICAgIHB1YmxpYyAka2V5JDogc3RyaW5nIHwgbnVsbFxuICApIHtcbiAgICB0aGlzLiRpZCQgPSAkdHlwZSQgKyAoJGtleSQgPyAnOicgKyAka2V5JCA6ICcnKTtcbiAgICBpZiAocURldiAmJiBxSW5zcGVjdG9yKSB7XG4gICAgICB0aGlzLiRkZXYkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBzZWFsKHRoaXMpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBwcm9jZXNzTm9kZSA9IChcbiAgbm9kZTogSlNYTm9kZUludGVybmFsLFxuICBpbnZvY2F0aW9uQ29udGV4dD86IEludm9rZUNvbnRleHRcbik6IFZhbHVlT3JQcm9taXNlPFByb2Nlc3NlZEpTWE5vZGUgfCBQcm9jZXNzZWRKU1hOb2RlW10gfCB1bmRlZmluZWQ+ID0+IHtcbiAgY29uc3QgeyBrZXksIHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgZmxhZ3MsIGltbXV0YWJsZVByb3BzIH0gPSBub2RlO1xuICBsZXQgdGV4dFR5cGUgPSAnJztcbiAgaWYgKGlzU3RyaW5nKHR5cGUpKSB7XG4gICAgdGV4dFR5cGUgPSB0eXBlO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFZpcnR1YWwpIHtcbiAgICB0ZXh0VHlwZSA9IFZJUlRVQUw7XG4gIH0gZWxzZSBpZiAoaXNGdW5jdGlvbih0eXBlKSkge1xuICAgIGNvbnN0IHJlcyA9IGludm9rZShpbnZvY2F0aW9uQ29udGV4dCwgdHlwZSwgcHJvcHMsIGtleSwgZmxhZ3MsIG5vZGUuZGV2KTtcbiAgICBpZiAoIXNob3VsZFdyYXBGdW5jdGlvbmFsKHJlcywgbm9kZSkpIHtcbiAgICAgIHJldHVybiBwcm9jZXNzRGF0YShyZXMsIGludm9jYXRpb25Db250ZXh0KTtcbiAgICB9XG4gICAgcmV0dXJuIHByb2Nlc3NOb2RlKF9qc3hDKFZpcnR1YWwsIHsgY2hpbGRyZW46IHJlcyB9LCAwLCBrZXkpLCBpbnZvY2F0aW9uQ29udGV4dCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgcUVycm9yKFFFcnJvcl9pbnZhbGlkSnN4Tm9kZVR5cGUsIHR5cGUpO1xuICB9XG4gIGxldCBjb252ZXJ0ZWRDaGlsZHJlbiA9IEVNUFRZX0FSUkFZIGFzIFByb2Nlc3NlZEpTWE5vZGVbXTtcbiAgaWYgKGNoaWxkcmVuICE9IG51bGwpIHtcbiAgICByZXR1cm4gbWF5YmVUaGVuKHByb2Nlc3NEYXRhKGNoaWxkcmVuLCBpbnZvY2F0aW9uQ29udGV4dCksIChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb252ZXJ0ZWRDaGlsZHJlbiA9IGlzQXJyYXkocmVzdWx0KSA/IHJlc3VsdCA6IFtyZXN1bHRdO1xuICAgICAgfVxuICAgICAgY29uc3Qgdm5vZGUgPSBuZXcgUHJvY2Vzc2VkSlNYTm9kZUltcGwoXG4gICAgICAgIHRleHRUeXBlLFxuICAgICAgICBwcm9wcyxcbiAgICAgICAgaW1tdXRhYmxlUHJvcHMsXG4gICAgICAgIGNvbnZlcnRlZENoaWxkcmVuLFxuICAgICAgICBmbGFncyxcbiAgICAgICAga2V5XG4gICAgICApO1xuICAgICAgaWYgKHFEZXYgJiYgcUluc3BlY3Rvcikge1xuICAgICAgICB2bm9kZS4kZGV2JCA9IG5vZGUuZGV2O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZub2RlO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHZub2RlID0gbmV3IFByb2Nlc3NlZEpTWE5vZGVJbXBsKFxuICAgICAgdGV4dFR5cGUsXG4gICAgICBwcm9wcyxcbiAgICAgIGltbXV0YWJsZVByb3BzLFxuICAgICAgY29udmVydGVkQ2hpbGRyZW4sXG4gICAgICBmbGFncyxcbiAgICAgIGtleVxuICAgICk7XG4gICAgaWYgKHFEZXYgJiYgcUluc3BlY3Rvcikge1xuICAgICAgdm5vZGUuJGRldiQgPSBub2RlLmRldjtcbiAgICB9XG4gICAgcmV0dXJuIHZub2RlO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgd3JhcEpTWCA9IChcbiAgZWxlbWVudDogUXdpa0VsZW1lbnQsXG4gIGlucHV0OiBQcm9jZXNzZWRKU1hOb2RlW10gfCBQcm9jZXNzZWRKU1hOb2RlIHwgdW5kZWZpbmVkXG4pID0+IHtcbiAgY29uc3QgY2hpbGRyZW46IFByb2Nlc3NlZEpTWE5vZGVbXSA9XG4gICAgaW5wdXQgPT09IHVuZGVmaW5lZCA/IEVNUFRZX0FSUkFZIDogaXNBcnJheShpbnB1dCkgPyBpbnB1dCA6IFtpbnB1dF07XG4gIGNvbnN0IG5vZGUgPSBuZXcgUHJvY2Vzc2VkSlNYTm9kZUltcGwoJzp2aXJ0dWFsJywge30sIG51bGwsIGNoaWxkcmVuLCAwLCBudWxsKTtcbiAgbm9kZS4kZWxtJCA9IGVsZW1lbnQ7XG4gIHJldHVybiBub2RlO1xufTtcblxuZXhwb3J0IGNvbnN0IHByb2Nlc3NEYXRhID0gKFxuICBub2RlOiBhbnksXG4gIGludm9jYXRpb25Db250ZXh0PzogSW52b2tlQ29udGV4dFxuKTogVmFsdWVPclByb21pc2U8UHJvY2Vzc2VkSlNYTm9kZVtdIHwgUHJvY2Vzc2VkSlNYTm9kZSB8IHVuZGVmaW5lZD4gPT4ge1xuICBpZiAobm9kZSA9PSBudWxsIHx8IHR5cGVvZiBub2RlID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmIChpc1ByaW1pdGl2ZShub2RlKSkge1xuICAgIGNvbnN0IG5ld05vZGUgPSBuZXcgUHJvY2Vzc2VkSlNYTm9kZUltcGwoJyN0ZXh0JywgRU1QVFlfT0JKLCBudWxsLCBFTVBUWV9BUlJBWSwgMCwgbnVsbCk7XG4gICAgbmV3Tm9kZS4kdGV4dCQgPSBTdHJpbmcobm9kZSk7XG4gICAgcmV0dXJuIG5ld05vZGU7XG4gIH0gZWxzZSBpZiAoaXNKU1hOb2RlKG5vZGUpKSB7XG4gICAgcmV0dXJuIHByb2Nlc3NOb2RlKG5vZGUsIGludm9jYXRpb25Db250ZXh0KTtcbiAgfSBlbHNlIGlmIChpc1NpZ25hbChub2RlKSkge1xuICAgIGNvbnN0IG5ld05vZGUgPSBuZXcgUHJvY2Vzc2VkSlNYTm9kZUltcGwoJyNzaWduYWwnLCBFTVBUWV9PQkosIG51bGwsIEVNUFRZX0FSUkFZLCAwLCBudWxsKTtcbiAgICBuZXdOb2RlLiRzaWduYWwkID0gbm9kZTtcbiAgICByZXR1cm4gbmV3Tm9kZTtcbiAgfSBlbHNlIGlmIChpc0FycmF5KG5vZGUpKSB7XG4gICAgY29uc3Qgb3V0cHV0ID0gcHJvbWlzZUFsbChub2RlLmZsYXRNYXAoKG4pID0+IHByb2Nlc3NEYXRhKG4sIGludm9jYXRpb25Db250ZXh0KSkpO1xuICAgIHJldHVybiBtYXliZVRoZW4ob3V0cHV0LCAoYXJyYXkpID0+IGFycmF5LmZsYXQoMTAwKS5maWx0ZXIoaXNOb3ROdWxsYWJsZSkpO1xuICB9IGVsc2UgaWYgKGlzUHJvbWlzZShub2RlKSkge1xuICAgIHJldHVybiBub2RlLnRoZW4oKG5vZGUpID0+IHByb2Nlc3NEYXRhKG5vZGUsIGludm9jYXRpb25Db250ZXh0KSk7XG4gIH0gZWxzZSBpZiAobm9kZSA9PT0gU2tpcFJlbmRlcikge1xuICAgIHJldHVybiBuZXcgUHJvY2Vzc2VkSlNYTm9kZUltcGwoU0tJUF9SRU5ERVJfVFlQRSwgRU1QVFlfT0JKLCBudWxsLCBFTVBUWV9BUlJBWSwgMCwgbnVsbCk7XG4gIH0gZWxzZSB7XG4gICAgbG9nV2FybignQSB1bnN1cHBvcnRlZCB2YWx1ZSB3YXMgcGFzc2VkIHRvIHRoZSBKU1gsIHNraXBwaW5nIHJlbmRlci4gVmFsdWU6Jywgbm9kZSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGlzUHJvY2Vzc2VkSlNYTm9kZSA9IChuOiBhbnkpOiBuIGlzIFByb2Nlc3NlZEpTWE5vZGUgPT4ge1xuICBpZiAocURldikge1xuICAgIGlmIChuIGluc3RhbmNlb2YgUHJvY2Vzc2VkSlNYTm9kZUltcGwpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoaXNPYmplY3QobikgJiYgbi5jb25zdHJ1Y3Rvci5uYW1lID09PSBQcm9jZXNzZWRKU1hOb2RlSW1wbC5uYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgXCJQcm9jZXNzZWRKU1hOb2RlSW1wbFwiIGZvdW5kYCk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbiBpbnN0YW5jZW9mIFByb2Nlc3NlZEpTWE5vZGVJbXBsO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaXNQcmltaXRpdmUgPSAob2JqOiBhbnkpID0+IHtcbiAgcmV0dXJuIGlzU3RyaW5nKG9iaikgfHwgdHlwZW9mIG9iaiA9PT0gJ251bWJlcic7XG59O1xuXG5leHBvcnQgdHlwZSBQcm9jZXNzZWRKU1hOb2RlVHlwZSA9XG4gIHwgJyN0ZXh0J1xuICB8ICc6dmlydHVhbCdcbiAgfCAnOnNpZ25hbCdcbiAgfCB0eXBlb2YgU0tJUF9SRU5ERVJfVFlQRVxuICB8IHN0cmluZztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzZWRKU1hOb2RlIHtcbiAgJHR5cGUkOiBQcm9jZXNzZWRKU1hOb2RlVHlwZTtcbiAgJGlkJDogc3RyaW5nO1xuICAkcHJvcHMkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAkaW1tdXRhYmxlUHJvcHMkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbDtcbiAgJGZsYWdzJDogbnVtYmVyO1xuICAkY2hpbGRyZW4kOiBQcm9jZXNzZWRKU1hOb2RlW107XG4gICRrZXkkOiBzdHJpbmcgfCBudWxsO1xuICAkZWxtJDogTm9kZSB8IFZpcnR1YWxFbGVtZW50IHwgbnVsbDtcbiAgJHRleHQkOiBzdHJpbmc7XG4gICRzaWduYWwkOiBTaWduYWw8YW55PiB8IG51bGw7XG4gICRkZXYkPzogRGV2SlNYO1xufVxuIl19","import { assertDefined, assertTrue } from '../error/assert';\nimport { getDocument } from '../util/dom';\nimport { isComment, isElement, isNode, isQwikElement, isText } from '../util/element';\nimport { logDebug, logWarn } from '../util/log';\nimport { ELEMENT_ID, QContainerAttr, QInstance, getQFuncs } from '../util/markers';\nimport { emitEvent } from '../util/event';\nimport { isArray, isSerializableObject, isString } from '../util/types';\nimport { directGetAttribute, directSetAttribute } from '../render/fast-calls';\nimport { createParser, OBJECT_TRANSFORMS, UNDEFINED_PREFIX } from './serializers';\nimport { _getContainerState, isContainer, SHOW_COMMENT, strToInt, } from './container';\nimport { getVirtualElement } from '../render/dom/virtual-element';\nimport { getSubscriptionManager, parseSubscription } from '../state/common';\nimport { createProxy, setObjectFlags } from '../state/store';\nimport { qDev, qSerialize } from '../util/qdev';\nimport { pauseContainer } from './pause';\nimport { isPrimitive } from '../render/dom/render-dom';\nimport { getWrappingContainer } from '../use/use-core';\nimport { getContext } from '../state/context';\nexport const resumeIfNeeded = (containerEl) => {\n    const isResumed = directGetAttribute(containerEl, QContainerAttr);\n    if (isResumed === 'paused') {\n        resumeContainer(containerEl);\n        if (qSerialize) {\n            appendQwikDevTools(containerEl);\n        }\n    }\n};\nexport const getPauseState = (containerEl) => {\n    const doc = getDocument(containerEl);\n    const isDocElement = containerEl === doc.documentElement;\n    const parentJSON = isDocElement ? doc.body : containerEl;\n    const script = getQwikJSON(parentJSON, 'type');\n    if (script) {\n        const data = script.firstChild.data;\n        return JSON.parse(unescapeText(data) || '{}');\n    }\n};\n/** @internal */\nexport const _deserializeData = (data, element) => {\n    const obj = JSON.parse(data);\n    if (typeof obj !== 'object') {\n        return null;\n    }\n    const { _objs, _entry } = obj;\n    if (typeof _objs === 'undefined' || typeof _entry === 'undefined') {\n        return null;\n    }\n    let doc = {};\n    let containerState = {};\n    if (isNode(element) && isQwikElement(element)) {\n        const containerEl = getWrappingContainer(element);\n        if (containerEl) {\n            containerState = _getContainerState(containerEl);\n            doc = containerEl.ownerDocument;\n        }\n    }\n    const parser = createParser(containerState, doc);\n    for (let i = 0; i < _objs.length; i++) {\n        const value = _objs[i];\n        if (isString(value)) {\n            _objs[i] = value === UNDEFINED_PREFIX ? undefined : parser.prepare(value);\n        }\n    }\n    const getObject = (id) => _objs[strToInt(id)];\n    for (const obj of _objs) {\n        reviveNestedObjects(obj, getObject, parser);\n    }\n    return getObject(_entry);\n};\nexport const resumeContainer = (containerEl) => {\n    if (!isContainer(containerEl)) {\n        logWarn('Skipping resuming because parent element is not q:container');\n        return;\n    }\n    const pauseState = containerEl['_qwikjson_'] ?? getPauseState(containerEl);\n    containerEl['_qwikjson_'] = null;\n    if (!pauseState) {\n        logWarn('Skipping resuming qwik/json metadata was not found.');\n        return;\n    }\n    const doc = getDocument(containerEl);\n    const hash = containerEl.getAttribute(QInstance);\n    const isDocElement = containerEl === doc.documentElement;\n    const parentJSON = isDocElement ? doc.body : containerEl;\n    if (qDev) {\n        const script = getQwikJSON(parentJSON, 'type');\n        if (!script) {\n            logWarn('Skipping resuming qwik/json metadata was not found.');\n            return;\n        }\n    }\n    const inlinedFunctions = getQFuncs(doc, hash);\n    const containerState = _getContainerState(containerEl);\n    // Collect all elements\n    const elements = new Map();\n    const text = new Map();\n    let node = null;\n    let container = 0;\n    // Collect all virtual elements\n    const elementWalker = doc.createTreeWalker(containerEl, SHOW_COMMENT);\n    while ((node = elementWalker.nextNode())) {\n        const data = node.data;\n        if (container === 0) {\n            if (data.startsWith('qv ')) {\n                const id = getID(data); // TODO: remove\n                if (id >= 0) {\n                    elements.set(id, node);\n                }\n            }\n            else if (data.startsWith('t=')) {\n                const id = data.slice(2);\n                const index = strToInt(id);\n                const textNode = getTextNode(node);\n                elements.set(index, textNode);\n                text.set(index, textNode.data);\n            }\n        }\n        if (data === 'cq') {\n            container++;\n        }\n        else if (data === '/cq') {\n            container--;\n        }\n    }\n    // Collect all elements\n    // If there are nested container, we are forced to take a slower path.\n    // In order to check if there are nested containers, we use the `'qc📦'` class.\n    // This is because checking for class is the fastest way for the browser to find it.\n    const slotPath = containerEl.getElementsByClassName('qc📦').length !== 0;\n    containerEl.querySelectorAll('[q\\\\:id]').forEach((el) => {\n        if (slotPath && el.closest('[q\\\\:container]') !== containerEl) {\n            return;\n        }\n        const id = directGetAttribute(el, ELEMENT_ID);\n        assertDefined(id, `resume: element missed q:id`, el);\n        const index = strToInt(id);\n        elements.set(index, el);\n    });\n    const parser = createParser(containerState, doc);\n    const finalized = new Map();\n    const revived = new Set();\n    const getObject = (id) => {\n        assertTrue(typeof id === 'string' && id.length > 0, 'resume: id must be an non-empty string, got:', id);\n        if (finalized.has(id)) {\n            return finalized.get(id);\n        }\n        return computeObject(id);\n    };\n    const computeObject = (id) => {\n        // Handle elements\n        if (id.startsWith('#')) {\n            const elementId = id.slice(1);\n            const index = strToInt(elementId);\n            assertTrue(elements.has(index), `missing element for id:`, elementId);\n            const rawElement = elements.get(index);\n            assertDefined(rawElement, `missing element for id:`, elementId);\n            if (isComment(rawElement)) {\n                if (!rawElement.isConnected) {\n                    finalized.set(id, undefined);\n                    return undefined;\n                }\n                const virtual = getVirtualElement(rawElement);\n                finalized.set(id, virtual);\n                getContext(virtual, containerState);\n                return virtual;\n            }\n            else if (isElement(rawElement)) {\n                finalized.set(id, rawElement);\n                getContext(rawElement, containerState);\n                return rawElement;\n            }\n            finalized.set(id, rawElement);\n            return rawElement;\n        }\n        else if (id.startsWith('@')) {\n            const funcId = id.slice(1);\n            const index = strToInt(funcId);\n            const func = inlinedFunctions[index];\n            assertDefined(func, `missing inlined function for id:`, funcId);\n            return func;\n        }\n        else if (id.startsWith('*')) {\n            const elementId = id.slice(1);\n            const index = strToInt(elementId);\n            assertTrue(elements.has(index), `missing element for id:`, elementId);\n            const str = text.get(index);\n            assertDefined(str, `missing element for id:`, elementId);\n            finalized.set(id, str);\n            return str;\n        }\n        const index = strToInt(id);\n        const objs = pauseState.objs;\n        assertTrue(objs.length > index, 'resume: index is out of bounds', id);\n        let value = objs[index];\n        if (isString(value)) {\n            value = value === UNDEFINED_PREFIX ? undefined : parser.prepare(value);\n        }\n        let obj = value;\n        for (let i = id.length - 1; i >= 0; i--) {\n            const code = id[i];\n            const transform = OBJECT_TRANSFORMS[code];\n            if (!transform) {\n                break;\n            }\n            obj = transform(obj, containerState);\n        }\n        finalized.set(id, obj);\n        if (!isPrimitive(value) && !revived.has(index)) {\n            revived.add(index);\n            reviveSubscriptions(value, index, pauseState.subs, getObject, containerState, parser);\n            reviveNestedObjects(value, getObject, parser);\n        }\n        return obj;\n    };\n    containerState.$elementIndex$ = 100000;\n    containerState.$pauseCtx$ = {\n        getObject,\n        meta: pauseState.ctx,\n        refs: pauseState.refs,\n    };\n    directSetAttribute(containerEl, QContainerAttr, 'resumed');\n    logDebug('Container resumed');\n    emitEvent(containerEl, 'qresume', undefined, true);\n};\nconst reviveSubscriptions = (value, i, objsSubs, getObject, containerState, parser) => {\n    const subs = objsSubs[i];\n    if (subs) {\n        const converted = [];\n        let flag = 0;\n        for (const sub of subs) {\n            if (sub.startsWith('_')) {\n                flag = parseInt(sub.slice(1), 10);\n            }\n            else {\n                const parsed = parseSubscription(sub, getObject);\n                if (parsed) {\n                    converted.push(parsed);\n                }\n            }\n        }\n        if (flag > 0) {\n            setObjectFlags(value, flag);\n        }\n        if (!parser.subs(value, converted)) {\n            const proxy = containerState.$proxyMap$.get(value);\n            if (proxy) {\n                getSubscriptionManager(proxy).$addSubs$(converted);\n            }\n            else {\n                createProxy(value, containerState, converted);\n            }\n        }\n    }\n};\nconst reviveNestedObjects = (obj, getObject, parser) => {\n    if (parser.fill(obj, getObject)) {\n        return;\n    }\n    if (obj && typeof obj == 'object') {\n        if (isArray(obj)) {\n            for (let i = 0; i < obj.length; i++) {\n                obj[i] = getObject(obj[i]);\n            }\n        }\n        else if (isSerializableObject(obj)) {\n            for (const key in obj) {\n                obj[key] = getObject(obj[key]);\n            }\n        }\n    }\n};\nconst unescapeText = (str) => {\n    return str.replace(/\\\\x3C(\\/?script)/gi, '<$1');\n};\nexport const getQwikJSON = (parentElm, attribute) => {\n    let child = parentElm.lastElementChild;\n    while (child) {\n        if (child.tagName === 'SCRIPT' && directGetAttribute(child, attribute) === 'qwik/json') {\n            return child;\n        }\n        child = child.previousElementSibling;\n    }\n    return undefined;\n};\nconst getTextNode = (mark) => {\n    const nextNode = mark.nextSibling;\n    if (isText(nextNode)) {\n        return nextNode;\n    }\n    else {\n        const textNode = mark.ownerDocument.createTextNode('');\n        mark.parentElement.insertBefore(textNode, mark);\n        return textNode;\n    }\n};\nexport const appendQwikDevTools = (containerEl) => {\n    containerEl['qwik'] = {\n        pause: () => pauseContainer(containerEl),\n        state: _getContainerState(containerEl),\n    };\n};\nexport const getID = (stuff) => {\n    const index = stuff.indexOf('q:id=');\n    if (index > 0) {\n        return strToInt(stuff.slice(index + 5));\n    }\n    return -1;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdW1lLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL2NvbnRhaW5lci9yZXN1bWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBZSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBRUwsa0JBQWtCLEVBRWxCLFdBQVcsRUFDWCxZQUFZLEVBRVosUUFBUSxHQUNULE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxpQkFBaUIsRUFBc0IsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRyxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFB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QyxLQUFhLEVBQUUsRUFBRTtJQUNyQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2QsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNaLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydERlZmluZWQsIGFzc2VydFRydWUgfSBmcm9tICcuLi9lcnJvci9hc3NlcnQnO1xuaW1wb3J0IHsgZ2V0RG9jdW1lbnQgfSBmcm9tICcuLi91dGlsL2RvbSc7XG5pbXBvcnQgeyBpc0NvbW1lbnQsIGlzRWxlbWVudCwgaXNOb2RlLCBpc1F3aWtFbGVtZW50LCBpc1RleHQgfSBmcm9tICcuLi91dGlsL2VsZW1lbnQnO1xuaW1wb3J0IHsgbG9nRGVidWcsIGxvZ1dhcm4gfSBmcm9tICcuLi91dGlsL2xvZyc7XG5pbXBvcnQgeyBFTEVNRU5UX0lELCBRQ29udGFpbmVyQXR0ciwgUUluc3RhbmNlLCBnZXRRRnVuY3MgfSBmcm9tICcuLi91dGlsL21hcmtlcnMnO1xuXG5pbXBvcnQgeyBlbWl0RXZlbnQgfSBmcm9tICcuLi91dGlsL2V2ZW50JztcblxuaW1wb3J0IHsgaXNBcnJheSwgaXNTZXJpYWxpemFibGVPYmplY3QsIGlzU3RyaW5nIH0gZnJvbSAnLi4vdXRpbC90eXBlcyc7XG5pbXBvcnQgeyBkaXJlY3RHZXRBdHRyaWJ1dGUsIGRpcmVjdFNldEF0dHJpYnV0ZSB9IGZyb20gJy4uL3JlbmRlci9mYXN0LWNhbGxzJztcbmltcG9ydCB7IGNyZWF0ZVBhcnNlciwgT0JKRUNUX1RSQU5TRk9STVMsIHR5cGUgUGFyc2VyLCBVTkRFRklORURfUFJFRklYIH0gZnJvbSAnLi9zZXJpYWxpemVycyc7XG5pbXBvcnQge1xuICB0eXBlIENvbnRhaW5lclN0YXRlLFxuICBfZ2V0Q29udGFpbmVyU3RhdGUsXG4gIHR5cGUgR2V0T2JqZWN0LFxuICBpc0NvbnRhaW5lcixcbiAgU0hPV19DT01NRU5ULFxuICB0eXBlIFNuYXBzaG90U3RhdGUsXG4gIHN0clRvSW50LFxufSBmcm9tICcuL2NvbnRhaW5lcic7XG5pbXBvcnQgeyBnZXRWaXJ0dWFsRWxlbWVudCB9IGZyb20gJy4uL3JlbmRlci9kb20vdmlydHVhbC1lbGVtZW50JztcbmltcG9ydCB7IGdldFN1YnNjcmlwdGlvbk1hbmFnZXIsIHBhcnNlU3Vic2NyaXB0aW9uLCB0eXBlIFN1YnNjcmlwdGlvbnMgfSBmcm9tICcuLi9zdGF0ZS9jb21tb24nO1xuaW1wb3J0IHsgY3JlYXRlUHJveHksIHNldE9iamVjdEZsYWdzIH0gZnJvbSAnLi4vc3RhdGUvc3RvcmUnO1xuaW1wb3J0IHsgcURldiwgcVNlcmlhbGl6ZSB9IGZyb20gJy4uL3V0aWwvcWRldic7XG5pbXBvcnQgeyBwYXVzZUNvbnRhaW5lciB9IGZyb20gJy4vcGF1c2UnO1xuaW1wb3J0IHsgaXNQcmltaXRpdmUgfSBmcm9tICcuLi9yZW5kZXIvZG9tL3JlbmRlci1kb20nO1xuaW1wb3J0IHsgZ2V0V3JhcHBpbmdDb250YWluZXIgfSBmcm9tICcuLi91c2UvdXNlLWNvcmUnO1xuaW1wb3J0IHsgZ2V0Q29udGV4dCB9IGZyb20gJy4uL3N0YXRlL2NvbnRleHQnO1xuXG5leHBvcnQgY29uc3QgcmVzdW1lSWZOZWVkZWQgPSAoY29udGFpbmVyRWw6IEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgY29uc3QgaXNSZXN1bWVkID0gZGlyZWN0R2V0QXR0cmlidXRlKGNvbnRhaW5lckVsLCBRQ29udGFpbmVyQXR0cik7XG4gIGlmIChpc1Jlc3VtZWQgPT09ICdwYXVzZWQnKSB7XG4gICAgcmVzdW1lQ29udGFpbmVyKGNvbnRhaW5lckVsKTtcbiAgICBpZiAocVNlcmlhbGl6ZSkge1xuICAgICAgYXBwZW5kUXdpa0RldlRvb2xzKGNvbnRhaW5lckVsKTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRQYXVzZVN0YXRlID0gKGNvbnRhaW5lckVsOiBFbGVtZW50KTogU25hcHNob3RTdGF0ZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGRvYyA9IGdldERvY3VtZW50KGNvbnRhaW5lckVsKTtcbiAgY29uc3QgaXNEb2NFbGVtZW50ID0gY29udGFpbmVyRWwgPT09IGRvYy5kb2N1bWVudEVsZW1lbnQ7XG4gIGNvbnN0IHBhcmVudEpTT04gPSBpc0RvY0VsZW1lbnQgPyBkb2MuYm9keSA6IGNvbnRhaW5lckVsO1xuICBjb25zdCBzY3JpcHQgPSBnZXRRd2lrSlNPTihwYXJlbnRKU09OLCAndHlwZScpO1xuICBpZiAoc2NyaXB0KSB7XG4gICAgY29uc3QgZGF0YSA9IChzY3JpcHQuZmlyc3RDaGlsZCEgYXMgYW55KS5kYXRhO1xuICAgIHJldHVybiBKU09OLnBhcnNlKHVuZXNjYXBlVGV4dChkYXRhKSB8fCAne30nKSBhcyBTbmFwc2hvdFN0YXRlO1xuICB9XG59O1xuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgY29uc3QgX2Rlc2VyaWFsaXplRGF0YSA9IChkYXRhOiBzdHJpbmcsIGVsZW1lbnQ/OiB1bmtub3duKSA9PiB7XG4gIGNvbnN0IG9iaiA9IEpTT04ucGFyc2UoZGF0YSk7XG4gIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHsgX29ianMsIF9lbnRyeSB9ID0gb2JqO1xuICBpZiAodHlwZW9mIF9vYmpzID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgX2VudHJ5ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGxldCBkb2MgPSB7fSBhcyBEb2N1bWVudDtcbiAgbGV0IGNvbnRhaW5lclN0YXRlID0ge30gYXMgYW55O1xuICBpZiAoaXNOb2RlKGVsZW1lbnQpICYmIGlzUXdpa0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBjb25zdCBjb250YWluZXJFbCA9IGdldFdyYXBwaW5nQ29udGFpbmVyKGVsZW1lbnQpO1xuICAgIGlmIChjb250YWluZXJFbCkge1xuICAgICAgY29udGFpbmVyU3RhdGUgPSBfZ2V0Q29udGFpbmVyU3RhdGUoY29udGFpbmVyRWwpO1xuICAgICAgZG9jID0gY29udGFpbmVyRWwub3duZXJEb2N1bWVudDtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGFyc2VyID0gY3JlYXRlUGFyc2VyKGNvbnRhaW5lclN0YXRlLCBkb2MpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgX29ianMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB2YWx1ZSA9IF9vYmpzW2ldO1xuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIF9vYmpzW2ldID0gdmFsdWUgPT09IFVOREVGSU5FRF9QUkVGSVggPyB1bmRlZmluZWQgOiBwYXJzZXIucHJlcGFyZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZ2V0T2JqZWN0OiBHZXRPYmplY3QgPSAoaWQpID0+IF9vYmpzW3N0clRvSW50KGlkKV07XG4gIGZvciAoY29uc3Qgb2JqIG9mIF9vYmpzKSB7XG4gICAgcmV2aXZlTmVzdGVkT2JqZWN0cyhvYmosIGdldE9iamVjdCwgcGFyc2VyKTtcbiAgfVxuICByZXR1cm4gZ2V0T2JqZWN0KF9lbnRyeSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzdW1lQ29udGFpbmVyID0gKGNvbnRhaW5lckVsOiBFbGVtZW50KSA9PiB7XG4gIGlmICghaXNDb250YWluZXIoY29udGFpbmVyRWwpKSB7XG4gICAgbG9nV2FybignU2tpcHBpbmcgcmVzdW1pbmcgYmVjYXVzZSBwYXJlbnQgZWxlbWVudCBpcyBub3QgcTpjb250YWluZXInKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYXVzZVN0YXRlID1cbiAgICAoY29udGFpbmVyRWwgYXMgYW55KVsnX3F3aWtqc29uXyddID8/IChnZXRQYXVzZVN0YXRlKGNvbnRhaW5lckVsKSBhcyBTbmFwc2hvdFN0YXRlKTtcblxuICAoY29udGFpbmVyRWwgYXMgYW55KVsnX3F3aWtqc29uXyddID0gbnVsbDtcbiAgaWYgKCFwYXVzZVN0YXRlKSB7XG4gICAgbG9nV2FybignU2tpcHBpbmcgcmVzdW1pbmcgcXdpay9qc29uIG1ldGFkYXRhIHdhcyBub3QgZm91bmQuJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZG9jID0gZ2V0RG9jdW1lbnQoY29udGFpbmVyRWwpO1xuICBjb25zdCBoYXNoID0gY29udGFpbmVyRWwuZ2V0QXR0cmlidXRlKFFJbnN0YW5jZSkhO1xuICBjb25zdCBpc0RvY0VsZW1lbnQgPSBjb250YWluZXJFbCA9PT0gZG9jLmRvY3VtZW50RWxlbWVudDtcbiAgY29uc3QgcGFyZW50SlNPTiA9IGlzRG9jRWxlbWVudCA/IGRvYy5ib2R5IDogY29udGFpbmVyRWw7XG4gIGlmIChxRGV2KSB7XG4gICAgY29uc3Qgc2NyaXB0ID0gZ2V0UXdpa0pTT04ocGFyZW50SlNPTiwgJ3R5cGUnKTtcbiAgICBpZiAoIXNjcmlwdCkge1xuICAgICAgbG9nV2FybignU2tpcHBpbmcgcmVzdW1pbmcgcXdpay9qc29uIG1ldGFkYXRhIHdhcyBub3QgZm91bmQuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaW5saW5lZEZ1bmN0aW9ucyA9IGdldFFGdW5jcyhkb2MsIGhhc2gpO1xuICBjb25zdCBjb250YWluZXJTdGF0ZSA9IF9nZXRDb250YWluZXJTdGF0ZShjb250YWluZXJFbCk7XG5cbiAgLy8gQ29sbGVjdCBhbGwgZWxlbWVudHNcbiAgY29uc3QgZWxlbWVudHMgPSBuZXcgTWFwPG51bWJlciwgTm9kZT4oKTtcbiAgY29uc3QgdGV4dCA9IG5ldyBNYXA8bnVtYmVyLCBzdHJpbmc+KCk7XG4gIGxldCBub2RlOiBDb21tZW50IHwgbnVsbCA9IG51bGw7XG4gIGxldCBjb250YWluZXIgPSAwO1xuXG4gIC8vIENvbGxlY3QgYWxsIHZpcnR1YWwgZWxlbWVudHNcbiAgY29uc3QgZWxlbWVudFdhbGtlciA9IGRvYy5jcmVhdGVUcmVlV2Fsa2VyKGNvbnRhaW5lckVsLCBTSE9XX0NPTU1FTlQpO1xuXG4gIHdoaWxlICgobm9kZSA9IGVsZW1lbnRXYWxrZXIubmV4dE5vZGUoKSBhcyBDb21tZW50KSkge1xuICAgIGNvbnN0IGRhdGEgPSBub2RlLmRhdGE7XG4gICAgaWYgKGNvbnRhaW5lciA9PT0gMCkge1xuICAgICAgaWYgKGRhdGEuc3RhcnRzV2l0aCgncXYgJykpIHtcbiAgICAgICAgY29uc3QgaWQgPSBnZXRJRChkYXRhKTsgLy8gVE9ETzogcmVtb3ZlXG4gICAgICAgIGlmIChpZCA+PSAwKSB7XG4gICAgICAgICAgZWxlbWVudHMuc2V0KGlkLCBub2RlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChkYXRhLnN0YXJ0c1dpdGgoJ3Q9JykpIHtcbiAgICAgICAgY29uc3QgaWQgPSBkYXRhLnNsaWNlKDIpO1xuICAgICAgICBjb25zdCBpbmRleCA9IHN0clRvSW50KGlkKTtcbiAgICAgICAgY29uc3QgdGV4dE5vZGUgPSBnZXRUZXh0Tm9kZShub2RlKTtcbiAgICAgICAgZWxlbWVudHMuc2V0KGluZGV4LCB0ZXh0Tm9kZSk7XG4gICAgICAgIHRleHQuc2V0KGluZGV4LCB0ZXh0Tm9kZS5kYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEgPT09ICdjcScpIHtcbiAgICAgIGNvbnRhaW5lcisrO1xuICAgIH0gZWxzZSBpZiAoZGF0YSA9PT0gJy9jcScpIHtcbiAgICAgIGNvbnRhaW5lci0tO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbGxlY3QgYWxsIGVsZW1lbnRzXG4gIC8vIElmIHRoZXJlIGFyZSBuZXN0ZWQgY29udGFpbmVyLCB3ZSBhcmUgZm9yY2VkIHRvIHRha2UgYSBzbG93ZXIgcGF0aC5cbiAgLy8gSW4gb3JkZXIgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIG5lc3RlZCBjb250YWluZXJzLCB3ZSB1c2UgdGhlIGAncWPwn5OmJ2AgY2xhc3MuXG4gIC8vIFRoaXMgaXMgYmVjYXVzZSBjaGVja2luZyBmb3IgY2xhc3MgaXMgdGhlIGZhc3Rlc3Qgd2F5IGZvciB0aGUgYnJvd3NlciB0byBmaW5kIGl0LlxuICBjb25zdCBzbG90UGF0aCA9IGNvbnRhaW5lckVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3Fj8J+TpicpLmxlbmd0aCAhPT0gMDtcbiAgY29udGFpbmVyRWwucXVlcnlTZWxlY3RvckFsbCgnW3FcXFxcOmlkXScpLmZvckVhY2goKGVsKSA9PiB7XG4gICAgaWYgKHNsb3RQYXRoICYmIGVsLmNsb3Nlc3QoJ1txXFxcXDpjb250YWluZXJdJykgIT09IGNvbnRhaW5lckVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGlkID0gZGlyZWN0R2V0QXR0cmlidXRlKGVsLCBFTEVNRU5UX0lEKTtcbiAgICBhc3NlcnREZWZpbmVkKGlkLCBgcmVzdW1lOiBlbGVtZW50IG1pc3NlZCBxOmlkYCwgZWwpO1xuICAgIGNvbnN0IGluZGV4ID0gc3RyVG9JbnQoaWQpO1xuICAgIGVsZW1lbnRzLnNldChpbmRleCwgZWwpO1xuICB9KTtcbiAgY29uc3QgcGFyc2VyID0gY3JlYXRlUGFyc2VyKGNvbnRhaW5lclN0YXRlLCBkb2MpO1xuXG4gIGNvbnN0IGZpbmFsaXplZCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gIGNvbnN0IHJldml2ZWQgPSBuZXcgU2V0PG51bWJlcj4oKTtcblxuICBjb25zdCBnZXRPYmplY3Q6IEdldE9iamVjdCA9IChpZCkgPT4ge1xuICAgIGFzc2VydFRydWUoXG4gICAgICB0eXBlb2YgaWQgPT09ICdzdHJpbmcnICYmIGlkLmxlbmd0aCA+IDAsXG4gICAgICAncmVzdW1lOiBpZCBtdXN0IGJlIGFuIG5vbi1lbXB0eSBzdHJpbmcsIGdvdDonLFxuICAgICAgaWRcbiAgICApO1xuICAgIGlmIChmaW5hbGl6ZWQuaGFzKGlkKSkge1xuICAgICAgcmV0dXJuIGZpbmFsaXplZC5nZXQoaWQpO1xuICAgIH1cbiAgICByZXR1cm4gY29tcHV0ZU9iamVjdChpZCk7XG4gIH07XG5cbiAgY29uc3QgY29tcHV0ZU9iamVjdDogR2V0T2JqZWN0ID0gKGlkKSA9PiB7XG4gICAgLy8gSGFuZGxlIGVsZW1lbnRzXG4gICAgaWYgKGlkLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgICAgY29uc3QgZWxlbWVudElkID0gaWQuc2xpY2UoMSk7XG4gICAgICBjb25zdCBpbmRleCA9IHN0clRvSW50KGVsZW1lbnRJZCk7XG4gICAgICBhc3NlcnRUcnVlKGVsZW1lbnRzLmhhcyhpbmRleCksIGBtaXNzaW5nIGVsZW1lbnQgZm9yIGlkOmAsIGVsZW1lbnRJZCk7XG4gICAgICBjb25zdCByYXdFbGVtZW50ID0gZWxlbWVudHMuZ2V0KGluZGV4KTtcbiAgICAgIGFzc2VydERlZmluZWQocmF3RWxlbWVudCwgYG1pc3NpbmcgZWxlbWVudCBmb3IgaWQ6YCwgZWxlbWVudElkKTtcbiAgICAgIGlmIChpc0NvbW1lbnQocmF3RWxlbWVudCkpIHtcbiAgICAgICAgaWYgKCFyYXdFbGVtZW50LmlzQ29ubmVjdGVkKSB7XG4gICAgICAgICAgZmluYWxpemVkLnNldChpZCwgdW5kZWZpbmVkKTtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZpcnR1YWwgPSBnZXRWaXJ0dWFsRWxlbWVudChyYXdFbGVtZW50KTtcbiAgICAgICAgZmluYWxpemVkLnNldChpZCwgdmlydHVhbCk7XG4gICAgICAgIGdldENvbnRleHQodmlydHVhbCEsIGNvbnRhaW5lclN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHZpcnR1YWw7XG4gICAgICB9IGVsc2UgaWYgKGlzRWxlbWVudChyYXdFbGVtZW50KSkge1xuICAgICAgICBmaW5hbGl6ZWQuc2V0KGlkLCByYXdFbGVtZW50KTtcbiAgICAgICAgZ2V0Q29udGV4dChyYXdFbGVtZW50LCBjb250YWluZXJTdGF0ZSk7XG4gICAgICAgIHJldHVybiByYXdFbGVtZW50O1xuICAgICAgfVxuICAgICAgZmluYWxpemVkLnNldChpZCwgcmF3RWxlbWVudCk7XG4gICAgICByZXR1cm4gcmF3RWxlbWVudDtcbiAgICB9IGVsc2UgaWYgKGlkLnN0YXJ0c1dpdGgoJ0AnKSkge1xuICAgICAgY29uc3QgZnVuY0lkID0gaWQuc2xpY2UoMSk7XG4gICAgICBjb25zdCBpbmRleCA9IHN0clRvSW50KGZ1bmNJZCk7XG4gICAgICBjb25zdCBmdW5jID0gaW5saW5lZEZ1bmN0aW9uc1tpbmRleF07XG4gICAgICBhc3NlcnREZWZpbmVkKGZ1bmMsIGBtaXNzaW5nIGlubGluZWQgZnVuY3Rpb24gZm9yIGlkOmAsIGZ1bmNJZCk7XG4gICAgICByZXR1cm4gZnVuYztcbiAgICB9IGVsc2UgaWYgKGlkLnN0YXJ0c1dpdGgoJyonKSkge1xuICAgICAgY29uc3QgZWxlbWVudElkID0gaWQuc2xpY2UoMSk7XG4gICAgICBjb25zdCBpbmRleCA9IHN0clRvSW50KGVsZW1lbnRJZCk7XG4gICAgICBhc3NlcnRUcnVlKGVsZW1lbnRzLmhhcyhpbmRleCksIGBtaXNzaW5nIGVsZW1lbnQgZm9yIGlkOmAsIGVsZW1lbnRJZCk7XG4gICAgICBjb25zdCBzdHIgPSB0ZXh0LmdldChpbmRleCk7XG4gICAgICBhc3NlcnREZWZpbmVkKHN0ciwgYG1pc3NpbmcgZWxlbWVudCBmb3IgaWQ6YCwgZWxlbWVudElkKTtcbiAgICAgIGZpbmFsaXplZC5zZXQoaWQsIHN0cik7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICBjb25zdCBpbmRleCA9IHN0clRvSW50KGlkKTtcbiAgICBjb25zdCBvYmpzID0gcGF1c2VTdGF0ZS5vYmpzO1xuICAgIGFzc2VydFRydWUob2Jqcy5sZW5ndGggPiBpbmRleCwgJ3Jlc3VtZTogaW5kZXggaXMgb3V0IG9mIGJvdW5kcycsIGlkKTtcbiAgICBsZXQgdmFsdWUgPSBvYmpzW2luZGV4XTtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlID09PSBVTkRFRklORURfUFJFRklYID8gdW5kZWZpbmVkIDogcGFyc2VyLnByZXBhcmUodmFsdWUpO1xuICAgIH1cbiAgICBsZXQgb2JqID0gdmFsdWU7XG4gICAgZm9yIChsZXQgaSA9IGlkLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBjb2RlID0gaWRbaV07XG4gICAgICBjb25zdCB0cmFuc2Zvcm0gPSBPQkpFQ1RfVFJBTlNGT1JNU1tjb2RlXTtcbiAgICAgIGlmICghdHJhbnNmb3JtKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgb2JqID0gdHJhbnNmb3JtKG9iaiwgY29udGFpbmVyU3RhdGUpO1xuICAgIH1cbiAgICBmaW5hbGl6ZWQuc2V0KGlkLCBvYmopO1xuXG4gICAgaWYgKCFpc1ByaW1pdGl2ZSh2YWx1ZSkgJiYgIXJldml2ZWQuaGFzKGluZGV4KSkge1xuICAgICAgcmV2aXZlZC5hZGQoaW5kZXgpO1xuICAgICAgcmV2aXZlU3Vic2NyaXB0aW9ucyh2YWx1ZSwgaW5kZXgsIHBhdXNlU3RhdGUuc3VicywgZ2V0T2JqZWN0LCBjb250YWluZXJTdGF0ZSwgcGFyc2VyKTtcbiAgICAgIHJldml2ZU5lc3RlZE9iamVjdHModmFsdWUsIGdldE9iamVjdCwgcGFyc2VyKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfTtcblxuICBjb250YWluZXJTdGF0ZS4kZWxlbWVudEluZGV4JCA9IDEwMDAwMDtcbiAgY29udGFpbmVyU3RhdGUuJHBhdXNlQ3R4JCA9IHtcbiAgICBnZXRPYmplY3QsXG4gICAgbWV0YTogcGF1c2VTdGF0ZS5jdHgsXG4gICAgcmVmczogcGF1c2VTdGF0ZS5yZWZzLFxuICB9O1xuXG4gIGRpcmVjdFNldEF0dHJpYnV0ZShjb250YWluZXJFbCwgUUNvbnRhaW5lckF0dHIsICdyZXN1bWVkJyk7XG4gIGxvZ0RlYnVnKCdDb250YWluZXIgcmVzdW1lZCcpO1xuICBlbWl0RXZlbnQoY29udGFpbmVyRWwsICdxcmVzdW1lJywgdW5kZWZpbmVkLCB0cnVlKTtcbn07XG5cbmNvbnN0IHJldml2ZVN1YnNjcmlwdGlvbnMgPSAoXG4gIHZhbHVlOiBhbnksXG4gIGk6IG51bWJlcixcbiAgb2Jqc1N1YnM6IGFueVtdLFxuICBnZXRPYmplY3Q6IEdldE9iamVjdCxcbiAgY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlLFxuICBwYXJzZXI6IFBhcnNlclxuKSA9PiB7XG4gIGNvbnN0IHN1YnMgPSBvYmpzU3Vic1tpXSBhcyBzdHJpbmdbXTtcbiAgaWYgKHN1YnMpIHtcbiAgICBjb25zdCBjb252ZXJ0ZWQ6IFN1YnNjcmlwdGlvbnNbXSA9IFtdO1xuICAgIGxldCBmbGFnID0gMDtcbiAgICBmb3IgKGNvbnN0IHN1YiBvZiBzdWJzKSB7XG4gICAgICBpZiAoc3ViLnN0YXJ0c1dpdGgoJ18nKSkge1xuICAgICAgICBmbGFnID0gcGFyc2VJbnQoc3ViLnNsaWNlKDEpLCAxMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVN1YnNjcmlwdGlvbihzdWIsIGdldE9iamVjdCk7XG4gICAgICAgIGlmIChwYXJzZWQpIHtcbiAgICAgICAgICBjb252ZXJ0ZWQucHVzaChwYXJzZWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChmbGFnID4gMCkge1xuICAgICAgc2V0T2JqZWN0RmxhZ3ModmFsdWUsIGZsYWcpO1xuICAgIH1cbiAgICBpZiAoIXBhcnNlci5zdWJzKHZhbHVlLCBjb252ZXJ0ZWQpKSB7XG4gICAgICBjb25zdCBwcm94eSA9IGNvbnRhaW5lclN0YXRlLiRwcm94eU1hcCQuZ2V0KHZhbHVlKTtcbiAgICAgIGlmIChwcm94eSkge1xuICAgICAgICBnZXRTdWJzY3JpcHRpb25NYW5hZ2VyKHByb3h5KSEuJGFkZFN1YnMkKGNvbnZlcnRlZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjcmVhdGVQcm94eSh2YWx1ZSwgY29udGFpbmVyU3RhdGUsIGNvbnZlcnRlZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCByZXZpdmVOZXN0ZWRPYmplY3RzID0gKG9iajogdW5rbm93biwgZ2V0T2JqZWN0OiBHZXRPYmplY3QsIHBhcnNlcjogUGFyc2VyKSA9PiB7XG4gIGlmIChwYXJzZXIuZmlsbChvYmosIGdldE9iamVjdCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT0gJ29iamVjdCcpIHtcbiAgICBpZiAoaXNBcnJheShvYmopKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkrKykge1xuICAgICAgICBvYmpbaV0gPSBnZXRPYmplY3Qob2JqW2ldIGFzIHN0cmluZyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1NlcmlhbGl6YWJsZU9iamVjdChvYmopKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgICAgb2JqW2tleV0gPSBnZXRPYmplY3Qob2JqW2tleV0gYXMgc3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IHVuZXNjYXBlVGV4dCA9IChzdHI6IHN0cmluZykgPT4ge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1xcXFx4M0MoXFwvP3NjcmlwdCkvZ2ksICc8JDEnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRRd2lrSlNPTiA9IChcbiAgcGFyZW50RWxtOiBFbGVtZW50LFxuICBhdHRyaWJ1dGU6IHN0cmluZ1xuKTogSFRNTFNjcmlwdEVsZW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuICBsZXQgY2hpbGQgPSBwYXJlbnRFbG0ubGFzdEVsZW1lbnRDaGlsZDtcbiAgd2hpbGUgKGNoaWxkKSB7XG4gICAgaWYgKGNoaWxkLnRhZ05hbWUgPT09ICdTQ1JJUFQnICYmIGRpcmVjdEdldEF0dHJpYnV0ZShjaGlsZCwgYXR0cmlidXRlKSA9PT0gJ3F3aWsvanNvbicpIHtcbiAgICAgIHJldHVybiBjaGlsZCBhcyBIVE1MU2NyaXB0RWxlbWVudDtcbiAgICB9XG4gICAgY2hpbGQgPSBjaGlsZC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBnZXRUZXh0Tm9kZSA9IChtYXJrOiBDb21tZW50KSA9PiB7XG4gIGNvbnN0IG5leHROb2RlID0gbWFyay5uZXh0U2libGluZyE7XG4gIGlmIChpc1RleHQobmV4dE5vZGUpKSB7XG4gICAgcmV0dXJuIG5leHROb2RlO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHRleHROb2RlID0gbWFyay5vd25lckRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgICBtYXJrLnBhcmVudEVsZW1lbnQhLmluc2VydEJlZm9yZSh0ZXh0Tm9kZSwgbWFyayk7XG4gICAgcmV0dXJuIHRleHROb2RlO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYXBwZW5kUXdpa0RldlRvb2xzID0gKGNvbnRhaW5lckVsOiBFbGVtZW50KSA9PiB7XG4gIChjb250YWluZXJFbCBhcyBhbnkpWydxd2lrJ10gPSB7XG4gICAgcGF1c2U6ICgpID0+IHBhdXNlQ29udGFpbmVyKGNvbnRhaW5lckVsKSxcbiAgICBzdGF0ZTogX2dldENvbnRhaW5lclN0YXRlKGNvbnRhaW5lckVsKSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJRCA9IChzdHVmZjogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGluZGV4ID0gc3R1ZmYuaW5kZXhPZigncTppZD0nKTtcbiAgaWYgKGluZGV4ID4gMCkge1xuICAgIHJldHVybiBzdHJUb0ludChzdHVmZi5zbGljZShpbmRleCArIDUpKTtcbiAgfVxuICByZXR1cm4gLTE7XG59O1xuIl19","import { assertDefined } from '../error/assert';\nimport { inflateQrl, parseQRL } from '../qrl/qrl';\nimport { getWrappingContainer, getInvokeContext } from './use-core';\nimport { assertQrl } from '../qrl/qrl-class';\nimport { getContext } from '../state/context';\nimport { resumeIfNeeded } from '../container/resume';\nimport { _getContainerState } from '../container/container';\n// <docs markdown=\"../readme.md#useLexicalScope\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useLexicalScope instead)\n/**\n * Used by the Qwik Optimizer to restore the lexically scoped variables.\n *\n * This method should not be present in the application source code.\n *\n * NOTE: `useLexicalScope` method can only be used in the synchronous portion of the callback\n * (before any `await` statements.)\n *\n * @internal\n */\n// </docs>\nexport const useLexicalScope = () => {\n    const context = getInvokeContext();\n    let qrl = context.$qrl$;\n    if (!qrl) {\n        const el = context.$element$;\n        assertDefined(el, 'invoke: element must be defined inside useLexicalScope()', context);\n        const container = getWrappingContainer(el);\n        assertDefined(container, `invoke: cant find parent q:container of`, el);\n        qrl = parseQRL(decodeURIComponent(String(context.$url$)), container);\n        assertQrl(qrl);\n        resumeIfNeeded(container);\n        const elCtx = getContext(el, _getContainerState(container));\n        inflateQrl(qrl, elCtx);\n    }\n    else {\n        assertQrl(qrl);\n        assertDefined(qrl.$captureRef$, 'invoke: qrl $captureRef$ must be defined inside useLexicalScope()', qrl);\n    }\n    return qrl.$captureRef$;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWxleGljYWwtc2NvcGUucHVibGljLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3VzZS91c2UtbGV4aWNhbC1zY29wZS5wdWJsaWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCxpREFBaUQ7QUFDakQseUNBQXlDO0FBQ3pDLDhDQUE4QztBQUM5Qzs7Ozs7Ozs7O0dBU0c7QUFDSCxVQUFVO0FBQ1YsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQTZCLEVBQUU7SUFDNUQsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUNuQyxJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQ3hCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNULE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDN0IsYUFBYSxDQUFDLEVBQUUsRUFBRSwwREFBMEQsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN2RixNQUFNLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQyxhQUFhLENBQUMsU0FBUyxFQUFFLHlDQUF5QyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLEdBQUcsR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3JFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsRUFBRSxFQUFFLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDNUQsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO1NBQU0sQ0FBQztRQUNOLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLGFBQWEsQ0FDWCxHQUFHLENBQUMsWUFBWSxFQUNoQixtRUFBbUUsRUFDbkUsR0FBRyxDQUNKLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUMsWUFBb0IsQ0FBQztBQUNsQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnREZWZpbmVkIH0gZnJvbSAnLi4vZXJyb3IvYXNzZXJ0JztcbmltcG9ydCB7IGluZmxhdGVRcmwsIHBhcnNlUVJMIH0gZnJvbSAnLi4vcXJsL3FybCc7XG5pbXBvcnQgeyBnZXRXcmFwcGluZ0NvbnRhaW5lciwgZ2V0SW52b2tlQ29udGV4dCB9IGZyb20gJy4vdXNlLWNvcmUnO1xuaW1wb3J0IHsgYXNzZXJ0UXJsIH0gZnJvbSAnLi4vcXJsL3FybC1jbGFzcyc7XG5pbXBvcnQgeyBnZXRDb250ZXh0IH0gZnJvbSAnLi4vc3RhdGUvY29udGV4dCc7XG5pbXBvcnQgeyByZXN1bWVJZk5lZWRlZCB9IGZyb20gJy4uL2NvbnRhaW5lci9yZXN1bWUnO1xuaW1wb3J0IHsgX2dldENvbnRhaW5lclN0YXRlIH0gZnJvbSAnLi4vY29udGFpbmVyL2NvbnRhaW5lcic7XG5cbi8vIDxkb2NzIG1hcmtkb3duPVwiLi4vcmVhZG1lLm1kI3VzZUxleGljYWxTY29wZVwiPlxuLy8gISFETyBOT1QgRURJVCBUSElTIENPTU1FTlQgRElSRUNUTFkhISFcbi8vIChlZGl0IC4uL3JlYWRtZS5tZCN1c2VMZXhpY2FsU2NvcGUgaW5zdGVhZClcbi8qKlxuICogVXNlZCBieSB0aGUgUXdpayBPcHRpbWl6ZXIgdG8gcmVzdG9yZSB0aGUgbGV4aWNhbGx5IHNjb3BlZCB2YXJpYWJsZXMuXG4gKlxuICogVGhpcyBtZXRob2Qgc2hvdWxkIG5vdCBiZSBwcmVzZW50IGluIHRoZSBhcHBsaWNhdGlvbiBzb3VyY2UgY29kZS5cbiAqXG4gKiBOT1RFOiBgdXNlTGV4aWNhbFNjb3BlYCBtZXRob2QgY2FuIG9ubHkgYmUgdXNlZCBpbiB0aGUgc3luY2hyb25vdXMgcG9ydGlvbiBvZiB0aGUgY2FsbGJhY2tcbiAqIChiZWZvcmUgYW55IGBhd2FpdGAgc3RhdGVtZW50cy4pXG4gKlxuICogQGludGVybmFsXG4gKi9cbi8vIDwvZG9jcz5cbmV4cG9ydCBjb25zdCB1c2VMZXhpY2FsU2NvcGUgPSA8VkFSUyBleHRlbmRzIGFueVtdPigpOiBWQVJTID0+IHtcbiAgY29uc3QgY29udGV4dCA9IGdldEludm9rZUNvbnRleHQoKTtcbiAgbGV0IHFybCA9IGNvbnRleHQuJHFybCQ7XG4gIGlmICghcXJsKSB7XG4gICAgY29uc3QgZWwgPSBjb250ZXh0LiRlbGVtZW50JDtcbiAgICBhc3NlcnREZWZpbmVkKGVsLCAnaW52b2tlOiBlbGVtZW50IG11c3QgYmUgZGVmaW5lZCBpbnNpZGUgdXNlTGV4aWNhbFNjb3BlKCknLCBjb250ZXh0KTtcbiAgICBjb25zdCBjb250YWluZXIgPSBnZXRXcmFwcGluZ0NvbnRhaW5lcihlbCk7XG4gICAgYXNzZXJ0RGVmaW5lZChjb250YWluZXIsIGBpbnZva2U6IGNhbnQgZmluZCBwYXJlbnQgcTpjb250YWluZXIgb2ZgLCBlbCk7XG4gICAgcXJsID0gcGFyc2VRUkwoZGVjb2RlVVJJQ29tcG9uZW50KFN0cmluZyhjb250ZXh0LiR1cmwkKSksIGNvbnRhaW5lcik7XG4gICAgYXNzZXJ0UXJsKHFybCk7XG4gICAgcmVzdW1lSWZOZWVkZWQoY29udGFpbmVyKTtcbiAgICBjb25zdCBlbEN0eCA9IGdldENvbnRleHQoZWwsIF9nZXRDb250YWluZXJTdGF0ZShjb250YWluZXIpKTtcbiAgICBpbmZsYXRlUXJsKHFybCwgZWxDdHgpO1xuICB9IGVsc2Uge1xuICAgIGFzc2VydFFybChxcmwpO1xuICAgIGFzc2VydERlZmluZWQoXG4gICAgICBxcmwuJGNhcHR1cmVSZWYkLFxuICAgICAgJ2ludm9rZTogcXJsICRjYXB0dXJlUmVmJCBtdXN0IGJlIGRlZmluZWQgaW5zaWRlIHVzZUxleGljYWxTY29wZSgpJyxcbiAgICAgIHFybFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHFybC4kY2FwdHVyZVJlZiQgYXMgVkFSUztcbn07XG4iXX0=","import { getLastSubscription } from '../../state/common';\nimport { getContext, tryGetContext } from '../../state/context';\nimport { trackSignal } from '../../use/use-core';\nimport { logError } from '../../util/log';\nimport { serializeClassWithHost, stringifyStyle } from '../execute-component';\nimport { insertBefore, removeNode } from './operations';\nimport { getVdom, processData } from './render-dom';\nimport { SVG_NS, createElm, diffVnode, getVnodeFromEl, smartSetProperty } from './visitor';\nimport { Virtual, JSXNodeImpl } from '../jsx/jsx-runtime';\nimport { isPromise } from '../../util/promises';\nimport { isQwikElement } from '../../util/element';\nexport const executeSignalOperation = (rCtx, operation) => {\n    try {\n        const type = operation[0];\n        const staticCtx = rCtx.$static$;\n        switch (type) {\n            case 1:\n            case 2: {\n                let elm;\n                let hostElm;\n                if (type === 1) {\n                    elm = operation[1];\n                    hostElm = operation[3];\n                }\n                else {\n                    elm = operation[3];\n                    hostElm = operation[1];\n                }\n                // assertTrue(elm.isConnected, 'element must be connected to the dom');\n                // assertTrue(hostElm.isConnected, 'host element must be connected to the dom');\n                const elCtx = tryGetContext(elm);\n                if (elCtx == null) {\n                    return;\n                }\n                const prop = operation[4];\n                const isSVG = elm.namespaceURI === SVG_NS;\n                staticCtx.$containerState$.$subsManager$.$clearSignal$(operation);\n                let value = trackSignal(operation[2], operation.slice(0, -1));\n                if (prop === 'class') {\n                    value = serializeClassWithHost(value, tryGetContext(hostElm));\n                }\n                else if (prop === 'style') {\n                    value = stringifyStyle(value);\n                }\n                const vdom = getVdom(elCtx);\n                if (prop in vdom.$props$ && vdom.$props$[prop] === value) {\n                    return;\n                }\n                vdom.$props$[prop] = value;\n                return smartSetProperty(staticCtx, elm, prop, value, isSVG);\n            }\n            case 3:\n            case 4: {\n                const elm = operation[3];\n                if (!staticCtx.$visited$.includes(elm)) {\n                    // assertTrue(elm.isConnected, 'text node must be connected to the dom');\n                    staticCtx.$containerState$.$subsManager$.$clearSignal$(operation);\n                    // MISKO: I believe no `invocationContext` is OK because the JSX in signal\n                    // has already been converted to JSX and there is nothing to execute there.\n                    const invocationContext = undefined;\n                    let signalValue = trackSignal(operation[2], operation.slice(0, -1));\n                    const subscription = getLastSubscription();\n                    if (Array.isArray(signalValue)) {\n                        signalValue = new JSXNodeImpl(Virtual, {}, null, signalValue, 0, null);\n                    }\n                    let newVnode = processData(signalValue, invocationContext);\n                    if (isPromise(newVnode)) {\n                        logError('Rendering promises in JSX signals is not supported');\n                    }\n                    else {\n                        if (newVnode === undefined) {\n                            newVnode = processData('', invocationContext);\n                        }\n                        const oldVnode = getVnodeFromEl(elm);\n                        const element = getQwikElement(operation[1]);\n                        rCtx.$cmpCtx$ = getContext(element, rCtx.$static$.$containerState$);\n                        if (oldVnode.$type$ == newVnode.$type$ &&\n                            oldVnode.$key$ == newVnode.$key$ &&\n                            oldVnode.$id$ == newVnode.$id$) {\n                            diffVnode(rCtx, oldVnode, newVnode, 0);\n                        }\n                        else {\n                            const promises = []; // TODO(misko): hook this up\n                            const oldNode = oldVnode.$elm$;\n                            const newElm = createElm(rCtx, newVnode, 0, promises);\n                            if (promises.length) {\n                                logError('Rendering promises in JSX signals is not supported');\n                            }\n                            subscription[3] = newElm;\n                            insertBefore(rCtx.$static$, elm.parentElement, newElm, oldNode);\n                            oldNode && removeNode(staticCtx, oldNode);\n                        }\n                    }\n                }\n            }\n        }\n    }\n    catch (e) {\n        // Ignore\n    }\n};\nfunction getQwikElement(element) {\n    while (element) {\n        if (isQwikElement(element)) {\n            return element;\n        }\n        element = element.parentElement;\n    }\n    throw new Error('Not found');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFscy5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS9yZW5kZXIvZG9tL3NpZ25hbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUF5QixNQUFNLG9CQUFvQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQXlCLE1BQU0sY0FBYyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsSUFBbUIsRUFBRSxTQUEyQixFQUFFLEVBQUU7SUFDekYsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDaEMsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUss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LElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dDQUNwQixRQUFRLENBQUMsb0RBQW9ELENBQUMsQ0FBQzs0QkFDakUsQ0FBQzs0QkFDRCxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDOzRCQUN6QixZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsYUFBYyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQzs0QkFDakUsT0FBTyxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBQzVDLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLFNBQVM7SUFDWCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBQ0YsU0FBUyxjQUFjLENBQUMsT0FBMkI7SUFDakQsT0FBTyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0IsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsYUFBYyxDQUFDO0lBQ25DLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMYXN0U3Vic2NyaXB0aW9uLCB0eXBlIFN1YnNjcmliZXJTaWduYWwgfSBmcm9tICcuLi8uLi9zdGF0ZS9jb21tb24nO1xuaW1wb3J0IHsgZ2V0Q29udGV4dCwgdHJ5R2V0Q29udGV4dCB9IGZyb20gJy4uLy4uL3N0YXRlL2NvbnRleHQnO1xuaW1wb3J0IHsgdHJhY2tTaWduYWwgfSBmcm9tICcuLi8uLi91c2UvdXNlLWNvcmUnO1xuaW1wb3J0IHsgbG9nRXJyb3IgfSBmcm9tICcuLi8uLi91dGlsL2xvZyc7XG5pbXBvcnQgeyBzZXJpYWxpemVDbGFzc1dpdGhIb3N0LCBzdHJpbmdpZnlTdHlsZSB9IGZyb20gJy4uL2V4ZWN1dGUtY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgUmVuZGVyQ29udGV4dCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGluc2VydEJlZm9yZSwgcmVtb3ZlTm9kZSB9IGZyb20gJy4vb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyBnZXRWZG9tLCBwcm9jZXNzRGF0YSwgdHlwZSBQcm9jZXNzZWRKU1hOb2RlIH0gZnJvbSAnLi9yZW5kZXItZG9tJztcbmltcG9ydCB0eXBlIHsgUXdpa0VsZW1lbnQgfSBmcm9tICcuL3ZpcnR1YWwtZWxlbWVudCc7XG5pbXBvcnQgeyBTVkdfTlMsIGNyZWF0ZUVsbSwgZGlmZlZub2RlLCBnZXRWbm9kZUZyb21FbCwgc21hcnRTZXRQcm9wZXJ0eSB9IGZyb20gJy4vdmlzaXRvcic7XG5pbXBvcnQgeyBWaXJ0dWFsLCBKU1hOb2RlSW1wbCB9IGZyb20gJy4uL2pzeC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBpc1Byb21pc2UgfSBmcm9tICcuLi8uLi91dGlsL3Byb21pc2VzJztcbmltcG9ydCB7IGlzUXdpa0VsZW1lbnQgfSBmcm9tICcuLi8uLi91dGlsL2VsZW1lbnQnO1xuXG5leHBvcnQgY29uc3QgZXhlY3V0ZVNpZ25hbE9wZXJhdGlvbiA9IChyQ3R4OiBSZW5kZXJDb250ZXh0LCBvcGVyYXRpb246IFN1YnNjcmliZXJTaWduYWwpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB0eXBlID0gb3BlcmF0aW9uWzBdO1xuICAgIGNvbnN0IHN0YXRpY0N0eCA9IHJDdHguJHN0YXRpYyQ7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICBjYXNlIDI6IHtcbiAgICAgICAgbGV0IGVsbTtcbiAgICAgICAgbGV0IGhvc3RFbG07XG4gICAgICAgIGlmICh0eXBlID09PSAxKSB7XG4gICAgICAgICAgZWxtID0gb3BlcmF0aW9uWzFdO1xuICAgICAgICAgIGhvc3RFbG0gPSBvcGVyYXRpb25bM107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZWxtID0gb3BlcmF0aW9uWzNdO1xuICAgICAgICAgIGhvc3RFbG0gPSBvcGVyYXRpb25bMV07XG4gICAgICAgIH1cbiAgICAgICAgLy8gYXNzZXJ0VHJ1ZShlbG0uaXNDb25uZWN0ZWQsICdlbGVtZW50IG11c3QgYmUgY29ubmVjdGVkIHRvIHRoZSBkb20nKTtcbiAgICAgICAgLy8gYXNzZXJ0VHJ1ZShob3N0RWxtLmlzQ29ubmVjdGVkLCAnaG9zdCBlbGVtZW50IG11c3QgYmUgY29ubmVjdGVkIHRvIHRoZSBkb20nKTtcbiAgICAgICAgY29uc3QgZWxDdHggPSB0cnlHZXRDb250ZXh0KGVsbSk7XG4gICAgICAgIGlmIChlbEN0eCA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb3AgPSBvcGVyYXRpb25bNF07XG4gICAgICAgIGNvbnN0IGlzU1ZHID0gZWxtLm5hbWVzcGFjZVVSSSA9PT0gU1ZHX05TO1xuICAgICAgICBzdGF0aWNDdHguJGNvbnRhaW5lclN0YXRlJC4kc3Vic01hbmFnZXIkLiRjbGVhclNpZ25hbCQob3BlcmF0aW9uKTtcbiAgICAgICAgbGV0IHZhbHVlID0gdHJhY2tTaWduYWwob3BlcmF0aW9uWzJdLCBvcGVyYXRpb24uc2xpY2UoMCwgLTEpIGFzIGFueSkgYXMgYW55O1xuICAgICAgICBpZiAocHJvcCA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgIHZhbHVlID0gc2VyaWFsaXplQ2xhc3NXaXRoSG9zdCh2YWx1ZSwgdHJ5R2V0Q29udGV4dChob3N0RWxtKSk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcCA9PT0gJ3N0eWxlJykge1xuICAgICAgICAgIHZhbHVlID0gc3RyaW5naWZ5U3R5bGUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZkb20gPSBnZXRWZG9tKGVsQ3R4KTtcbiAgICAgICAgaWYgKHByb3AgaW4gdmRvbS4kcHJvcHMkICYmIHZkb20uJHByb3BzJFtwcm9wXSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmRvbS4kcHJvcHMkW3Byb3BdID0gdmFsdWU7XG4gICAgICAgIHJldHVybiBzbWFydFNldFByb3BlcnR5KHN0YXRpY0N0eCwgZWxtLCBwcm9wLCB2YWx1ZSwgaXNTVkcpO1xuICAgICAgfVxuICAgICAgY2FzZSAzOlxuICAgICAgY2FzZSA0OiB7XG4gICAgICAgIGNvbnN0IGVsbSA9IG9wZXJhdGlvblszXTtcbiAgICAgICAgaWYgKCFzdGF0aWNDdHguJHZpc2l0ZWQkLmluY2x1ZGVzKGVsbSkpIHtcbiAgICAgICAgICAvLyBhc3NlcnRUcnVlKGVsbS5pc0Nvbm5lY3RlZCwgJ3RleHQgbm9kZSBtdXN0IGJlIGNvbm5lY3RlZCB0byB0aGUgZG9tJyk7XG4gICAgICAgICAgc3RhdGljQ3R4LiRjb250YWluZXJTdGF0ZSQuJHN1YnNNYW5hZ2VyJC4kY2xlYXJTaWduYWwkKG9wZXJhdGlvbik7XG4gICAgICAgICAgLy8gTUlTS086IEkgYmVsaWV2ZSBubyBgaW52b2NhdGlvbkNvbnRleHRgIGlzIE9LIGJlY2F1c2UgdGhlIEpTWCBpbiBzaWduYWxcbiAgICAgICAgICAvLyBoYXMgYWxyZWFkeSBiZWVuIGNvbnZlcnRlZCB0byBKU1ggYW5kIHRoZXJlIGlzIG5vdGhpbmcgdG8gZXhlY3V0ZSB0aGVyZS5cbiAgICAgICAgICBjb25zdCBpbnZvY2F0aW9uQ29udGV4dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBsZXQgc2lnbmFsVmFsdWUgPSB0cmFja1NpZ25hbChvcGVyYXRpb25bMl0sIG9wZXJhdGlvbi5zbGljZSgwLCAtMSkgYXMgYW55KTtcbiAgICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBnZXRMYXN0U3Vic2NyaXB0aW9uKCkhO1xuXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2lnbmFsVmFsdWUpKSB7XG4gICAgICAgICAgICBzaWduYWxWYWx1ZSA9IG5ldyBKU1hOb2RlSW1wbDx0eXBlb2YgVmlydHVhbD4oVmlydHVhbCwge30sIG51bGwsIHNpZ25hbFZhbHVlLCAwLCBudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IG5ld1Zub2RlID0gcHJvY2Vzc0RhdGEoc2lnbmFsVmFsdWUsIGludm9jYXRpb25Db250ZXh0KSBhc1xuICAgICAgICAgICAgfCBQcm9jZXNzZWRKU1hOb2RlXG4gICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBpZiAoaXNQcm9taXNlKG5ld1Zub2RlKSkge1xuICAgICAgICAgICAgbG9nRXJyb3IoJ1JlbmRlcmluZyBwcm9taXNlcyBpbiBKU1ggc2lnbmFscyBpcyBub3Qgc3VwcG9ydGVkJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChuZXdWbm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIG5ld1Zub2RlID0gcHJvY2Vzc0RhdGEoJycsIGludm9jYXRpb25Db250ZXh0KSBhcyBQcm9jZXNzZWRKU1hOb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgb2xkVm5vZGUgPSBnZXRWbm9kZUZyb21FbChlbG0pO1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGdldFF3aWtFbGVtZW50KG9wZXJhdGlvblsxXSk7XG4gICAgICAgICAgICByQ3R4LiRjbXBDdHgkID0gZ2V0Q29udGV4dChlbGVtZW50LCByQ3R4LiRzdGF0aWMkLiRjb250YWluZXJTdGF0ZSQpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBvbGRWbm9kZS4kdHlwZSQgPT0gbmV3Vm5vZGUuJHR5cGUkICYmXG4gICAgICAgICAgICAgIG9sZFZub2RlLiRrZXkkID09IG5ld1Zub2RlLiRrZXkkICYmXG4gICAgICAgICAgICAgIG9sZFZub2RlLiRpZCQgPT0gbmV3Vm5vZGUuJGlkJFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGRpZmZWbm9kZShyQ3R4LCBvbGRWbm9kZSwgbmV3Vm5vZGUsIDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8YW55PltdID0gW107IC8vIFRPRE8obWlza28pOiBob29rIHRoaXMgdXBcbiAgICAgICAgICAgICAgY29uc3Qgb2xkTm9kZSA9IG9sZFZub2RlLiRlbG0kO1xuICAgICAgICAgICAgICBjb25zdCBuZXdFbG0gPSBjcmVhdGVFbG0ockN0eCwgbmV3Vm5vZGUsIDAsIHByb21pc2VzKTtcbiAgICAgICAgICAgICAgaWYgKHByb21pc2VzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGxvZ0Vycm9yKCdSZW5kZXJpbmcgcHJvbWlzZXMgaW4gSlNYIHNpZ25hbHMgaXMgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvblszXSA9IG5ld0VsbTtcbiAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKHJDdHguJHN0YXRpYyQsIGVsbS5wYXJlbnRFbGVtZW50ISwgbmV3RWxtLCBvbGROb2RlKTtcbiAgICAgICAgICAgICAgb2xkTm9kZSAmJiByZW1vdmVOb2RlKHN0YXRpY0N0eCwgb2xkTm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gSWdub3JlXG4gIH1cbn07XG5mdW5jdGlvbiBnZXRRd2lrRWxlbWVudChlbGVtZW50OiBRd2lrRWxlbWVudCB8IFRleHQpOiBRd2lrRWxlbWVudCB7XG4gIHdoaWxlIChlbGVtZW50KSB7XG4gICAgaWYgKGlzUXdpa0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH1cbiAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50ITtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBmb3VuZCcpO1xufVxuIl19","import { assertDefined, assertTrue } from '../../error/assert';\nimport { executeContextWithScrollAndTransition, IS_HEAD, IS_SVG, SVG_NS } from './visitor';\nimport { getDocument } from '../../util/dom';\nimport { logError, logWarn } from '../../util/log';\nimport { getWrappingContainer } from '../../use/use-core';\nimport { runSubscriber, TaskFlagsIsDirty, TaskFlagsIsVisibleTask, TaskFlagsIsResource, TaskFlagsIsTask, isSubscriberDescriptor, } from '../../use/use-task';\nimport { maybeThen } from '../../util/promises';\nimport { useLexicalScope } from '../../use/use-lexical-scope.public';\nimport { renderComponent } from './render-dom';\nimport { _getContainerState } from '../../container/container';\nimport { createRenderContext } from '../execute-component';\nimport { getRootNode } from './virtual-element';\nimport { appendChild, printRenderStats } from './operations';\nimport { executeSignalOperation } from './signals';\nimport { getPlatform, isServerPlatform } from '../../platform/platform';\nimport { qDev } from '../../util/qdev';\nimport { resumeIfNeeded } from '../../container/resume';\nimport { getContext, HOST_FLAG_DIRTY } from '../../state/context';\nimport { directGetAttribute } from '../fast-calls';\nimport { QStyle } from '../../util/markers';\nexport const notifyChange = (subAction, containerState) => {\n    if (subAction[0] === 0) {\n        const host = subAction[1];\n        if (isSubscriberDescriptor(host)) {\n            notifyTask(host, containerState);\n        }\n        else {\n            notifyRender(host, containerState);\n        }\n    }\n    else {\n        notifySignalOperation(subAction, containerState);\n    }\n};\n/**\n * Mark component for rendering.\n *\n * Use `notifyRender` method to mark a component for rendering at some later point in time. This\n * method uses `getPlatform(doc).queueRender` for scheduling of the rendering. The default\n * implementation of the method is to use `requestAnimationFrame` to do actual rendering.\n *\n * The method is intended to coalesce multiple calls into `notifyRender` into a single call for\n * rendering.\n *\n * @param hostElement - Host-element of the component to re-render.\n * @returns A promise which is resolved when the component has been rendered.\n */\nconst notifyRender = (hostElement, containerState) => {\n    const server = isServerPlatform();\n    if (!server) {\n        resumeIfNeeded(containerState.$containerEl$);\n    }\n    const elCtx = getContext(hostElement, containerState);\n    assertDefined(elCtx.$componentQrl$, `render: notified host element must have a defined $renderQrl$`, elCtx);\n    if (elCtx.$flags$ & HOST_FLAG_DIRTY) {\n        return;\n    }\n    elCtx.$flags$ |= HOST_FLAG_DIRTY;\n    const activeRendering = containerState.$hostsRendering$ !== undefined;\n    if (activeRendering) {\n        containerState.$hostsStaging$.add(elCtx);\n    }\n    else {\n        if (server) {\n            logWarn('Can not rerender in server platform');\n            return undefined;\n        }\n        containerState.$hostsNext$.add(elCtx);\n        scheduleFrame(containerState);\n    }\n};\nconst notifySignalOperation = (op, containerState) => {\n    const activeRendering = containerState.$hostsRendering$ !== undefined;\n    containerState.$opsNext$.add(op);\n    if (!activeRendering) {\n        scheduleFrame(containerState);\n    }\n};\nexport const notifyTask = (task, containerState) => {\n    if (task.$flags$ & TaskFlagsIsDirty) {\n        return;\n    }\n    task.$flags$ |= TaskFlagsIsDirty;\n    const activeRendering = containerState.$hostsRendering$ !== undefined;\n    if (activeRendering) {\n        containerState.$taskStaging$.add(task);\n    }\n    else {\n        containerState.$taskNext$.add(task);\n        scheduleFrame(containerState);\n    }\n};\nconst scheduleFrame = (containerState) => {\n    if (containerState.$renderPromise$ === undefined) {\n        containerState.$renderPromise$ = getPlatform().nextTick(() => renderMarked(containerState));\n    }\n    return containerState.$renderPromise$;\n};\n/**\n * Low-level API used by the Optimizer to process `useTask$()` API. This method is not intended to\n * be used by developers.\n *\n * @internal\n */\nexport const _hW = () => {\n    const [task] = useLexicalScope();\n    notifyTask(task, _getContainerState(getWrappingContainer(task.$el$)));\n};\nconst renderMarked = async (containerState) => {\n    const containerEl = containerState.$containerEl$;\n    const doc = getDocument(containerEl);\n    try {\n        const rCtx = createRenderContext(doc, containerState);\n        const staticCtx = rCtx.$static$;\n        const hostsRendering = (containerState.$hostsRendering$ = new Set(containerState.$hostsNext$));\n        containerState.$hostsNext$.clear();\n        await executeTasksBefore(containerState, rCtx);\n        containerState.$hostsStaging$.forEach((host) => {\n            hostsRendering.add(host);\n        });\n        containerState.$hostsStaging$.clear();\n        const signalOperations = Array.from(containerState.$opsNext$);\n        containerState.$opsNext$.clear();\n        const renderingQueue = Array.from(hostsRendering);\n        sortNodes(renderingQueue);\n        if (!containerState.$styleMoved$ && renderingQueue.length > 0) {\n            containerState.$styleMoved$ = true;\n            const parentJSON = containerEl === doc.documentElement ? doc.body : containerEl;\n            parentJSON.querySelectorAll('style[q\\\\:style]').forEach((el) => {\n                containerState.$styleIds$.add(directGetAttribute(el, QStyle));\n                appendChild(staticCtx, doc.head, el);\n            });\n        }\n        for (const elCtx of renderingQueue) {\n            const el = elCtx.$element$;\n            if (!staticCtx.$hostElements$.has(el)) {\n                if (elCtx.$componentQrl$) {\n                    assertTrue(el.isConnected, 'element must be connected to the dom');\n                    staticCtx.$roots$.push(elCtx);\n                    try {\n                        await renderComponent(rCtx, elCtx, getFlags(el.parentElement));\n                    }\n                    catch (err) {\n                        if (qDev) {\n                            throw err;\n                        }\n                        else {\n                            logError(err);\n                        }\n                    }\n                }\n            }\n        }\n        signalOperations.forEach((op) => {\n            executeSignalOperation(rCtx, op);\n        });\n        // Add post operations\n        staticCtx.$operations$.push(...staticCtx.$postOperations$);\n        // Early exist, no dom operations\n        if (staticCtx.$operations$.length === 0) {\n            printRenderStats(staticCtx);\n            await postRendering(containerState, rCtx);\n            return;\n        }\n        await executeContextWithScrollAndTransition(staticCtx);\n        printRenderStats(staticCtx);\n        return postRendering(containerState, rCtx);\n    }\n    catch (err) {\n        logError(err);\n    }\n};\nconst getFlags = (el) => {\n    let flags = 0;\n    if (el) {\n        if (el.namespaceURI === SVG_NS) {\n            flags |= IS_SVG;\n        }\n        if (el.tagName === 'HEAD') {\n            flags |= IS_HEAD;\n        }\n    }\n    return flags;\n};\nexport const postRendering = async (containerState, rCtx) => {\n    const hostElements = rCtx.$static$.$hostElements$;\n    await executeTasksAfter(containerState, rCtx, (task, stage) => {\n        if ((task.$flags$ & TaskFlagsIsVisibleTask) === 0) {\n            return false;\n        }\n        if (stage) {\n            return hostElements.has(task.$el$);\n        }\n        return true;\n    });\n    // Clear staging\n    containerState.$hostsStaging$.forEach((el) => {\n        containerState.$hostsNext$.add(el);\n    });\n    containerState.$hostsStaging$.clear();\n    containerState.$hostsRendering$ = undefined;\n    containerState.$renderPromise$ = undefined;\n    const pending = containerState.$hostsNext$.size +\n        containerState.$taskNext$.size +\n        containerState.$opsNext$.size;\n    if (pending > 0) {\n        // Immediately render again\n        containerState.$renderPromise$ = renderMarked(containerState);\n    }\n};\nconst isTask = (task) => (task.$flags$ & TaskFlagsIsTask) !== 0;\nconst isResourceTask = (task) => (task.$flags$ & TaskFlagsIsResource) !== 0;\nconst executeTasksBefore = async (containerState, rCtx) => {\n    const containerEl = containerState.$containerEl$;\n    const resourcesPromises = [];\n    const taskPromises = [];\n    containerState.$taskNext$.forEach((task) => {\n        if (isTask(task)) {\n            taskPromises.push(maybeThen(task.$qrl$.$resolveLazy$(containerEl), () => task));\n            containerState.$taskNext$.delete(task);\n        }\n        if (isResourceTask(task)) {\n            resourcesPromises.push(maybeThen(task.$qrl$.$resolveLazy$(containerEl), () => task));\n            containerState.$taskNext$.delete(task);\n        }\n    });\n    do {\n        // Run staging effected\n        containerState.$taskStaging$.forEach((task) => {\n            if (isTask(task)) {\n                taskPromises.push(maybeThen(task.$qrl$.$resolveLazy$(containerEl), () => task));\n            }\n            else if (isResourceTask(task)) {\n                resourcesPromises.push(maybeThen(task.$qrl$.$resolveLazy$(containerEl), () => task));\n            }\n            else {\n                containerState.$taskNext$.add(task);\n            }\n        });\n        containerState.$taskStaging$.clear();\n        // Wait for all promises\n        if (taskPromises.length > 0) {\n            const tasks = await Promise.all(taskPromises);\n            sortTasks(tasks);\n            await Promise.all(tasks.map((task) => {\n                return runSubscriber(task, containerState, rCtx);\n            }));\n            taskPromises.length = 0;\n        }\n    } while (containerState.$taskStaging$.size > 0);\n    if (resourcesPromises.length > 0) {\n        const resources = await Promise.all(resourcesPromises);\n        sortTasks(resources);\n        // no await so these run concurrently with the rendering\n        for (const task of resources) {\n            runSubscriber(task, containerState, rCtx);\n        }\n    }\n};\n/** Execute tasks that are dirty during SSR render */\nexport const executeSSRTasks = (containerState, rCtx) => {\n    const containerEl = containerState.$containerEl$;\n    const staging = containerState.$taskStaging$;\n    if (!staging.size) {\n        return;\n    }\n    const taskPromises = [];\n    let tries = 20;\n    const runTasks = () => {\n        // SSR dirty tasks are in taskStaging\n        staging.forEach((task) => {\n            if (isTask(task)) {\n                taskPromises.push(maybeThen(task.$qrl$.$resolveLazy$(containerEl), () => task));\n            }\n            // We ignore other types of tasks, they are handled via waitOn\n        });\n        staging.clear();\n        // Wait for all promises\n        if (taskPromises.length > 0) {\n            return Promise.all(taskPromises).then(async (tasks) => {\n                sortTasks(tasks);\n                await Promise.all(tasks.map((task) => {\n                    return runSubscriber(task, containerState, rCtx);\n                }));\n                taskPromises.length = 0;\n                if (--tries && staging.size > 0) {\n                    return runTasks();\n                }\n                if (!tries) {\n                    logWarn(`Infinite task loop detected. Tasks:\\n${Array.from(staging)\n                        .map((task) => `  ${task.$qrl$.$symbol$}`)\n                        .join('\\n')}`);\n                }\n            });\n        }\n    };\n    return runTasks();\n};\nconst executeTasksAfter = async (containerState, rCtx, taskPred) => {\n    const taskPromises = [];\n    const containerEl = containerState.$containerEl$;\n    containerState.$taskNext$.forEach((task) => {\n        if (taskPred(task, false)) {\n            if (task.$el$.isConnected) {\n                taskPromises.push(maybeThen(task.$qrl$.$resolveLazy$(containerEl), () => task));\n            }\n            containerState.$taskNext$.delete(task);\n        }\n    });\n    do {\n        // Run staging effected\n        containerState.$taskStaging$.forEach((task) => {\n            if (task.$el$.isConnected) {\n                if (taskPred(task, true)) {\n                    taskPromises.push(maybeThen(task.$qrl$.$resolveLazy$(containerEl), () => task));\n                }\n                else {\n                    containerState.$taskNext$.add(task);\n                }\n            }\n        });\n        containerState.$taskStaging$.clear();\n        // Wait for all promises\n        if (taskPromises.length > 0) {\n            const tasks = await Promise.all(taskPromises);\n            sortTasks(tasks);\n            for (const task of tasks) {\n                runSubscriber(task, containerState, rCtx);\n            }\n            taskPromises.length = 0;\n        }\n    } while (containerState.$taskStaging$.size > 0);\n};\nconst sortNodes = (elements) => {\n    elements.sort((a, b) => a.$element$.compareDocumentPosition(getRootNode(b.$element$)) & 2 ? 1 : -1);\n};\nconst sortTasks = (tasks) => {\n    const isServer = isServerPlatform();\n    tasks.sort((a, b) => {\n        if (isServer || a.$el$ === b.$el$) {\n            return a.$index$ < b.$index$ ? -1 : 1;\n        }\n        return (a.$el$.compareDocumentPosition(getRootNode(b.$el$)) & 2) !== 0 ? 1 : -1;\n    });\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZ5LXJlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS9yZW5kZXIvZG9tL25vdGlmeS1yZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUscUNBQXFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUNMLGFBQWEsRUFFYixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUNuQixlQUFlLEVBQ2Ysc0JBQXNCLEdBQ3ZCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9DLE9BQU8sRUFBdUIsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFvQixNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUs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QUFDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnREZWZpbmVkLCBhc3NlcnRUcnVlIH0gZnJvbSAnLi4vLi4vZXJyb3IvYXNzZXJ0JztcbmltcG9ydCB7IGV4ZWN1dGVDb250ZXh0V2l0aFNjcm9sbEFuZFRyYW5zaXRpb24sIElTX0hFQUQsIElTX1NWRywgU1ZHX05TIH0gZnJvbSAnLi92aXNpdG9yJztcbmltcG9ydCB7IGdldERvY3VtZW50IH0gZnJvbSAnLi4vLi4vdXRpbC9kb20nO1xuaW1wb3J0IHsgbG9nRXJyb3IsIGxvZ1dhcm4gfSBmcm9tICcuLi8uLi91dGlsL2xvZyc7XG5pbXBvcnQgeyBnZXRXcmFwcGluZ0NvbnRhaW5lciB9IGZyb20gJy4uLy4uL3VzZS91c2UtY29yZSc7XG5pbXBvcnQge1xuICBydW5TdWJzY3JpYmVyLFxuICB0eXBlIFN1YnNjcmliZXJFZmZlY3QsXG4gIFRhc2tGbGFnc0lzRGlydHksXG4gIFRhc2tGbGFnc0lzVmlzaWJsZVRhc2ssXG4gIFRhc2tGbGFnc0lzUmVzb3VyY2UsXG4gIFRhc2tGbGFnc0lzVGFzayxcbiAgaXNTdWJzY3JpYmVyRGVzY3JpcHRvcixcbn0gZnJvbSAnLi4vLi4vdXNlL3VzZS10YXNrJztcbmltcG9ydCB7IG1heWJlVGhlbiB9IGZyb20gJy4uLy4uL3V0aWwvcHJvbWlzZXMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZU9yUHJvbWlzZSB9IGZyb20gJy4uLy4uL3V0aWwvdHlwZXMnO1xuaW1wb3J0IHsgdXNlTGV4aWNhbFNjb3BlIH0gZnJvbSAnLi4vLi4vdXNlL3VzZS1sZXhpY2FsLXNjb3BlLnB1YmxpYyc7XG5pbXBvcnQgeyByZW5kZXJDb21wb25lbnQgfSBmcm9tICcuL3JlbmRlci1kb20nO1xuaW1wb3J0IHR5cGUgeyBSZW5kZXJDb250ZXh0IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgdHlwZSBDb250YWluZXJTdGF0ZSwgX2dldENvbnRhaW5lclN0YXRlIH0gZnJvbSAnLi4vLi4vY29udGFpbmVyL2NvbnRhaW5lcic7XG5pbXBvcnQgeyBjcmVhdGVSZW5kZXJDb250ZXh0IH0gZnJvbSAnLi4vZXhlY3V0ZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2V0Um9vdE5vZGUsIHR5cGUgUXdpa0VsZW1lbnQgfSBmcm9tICcuL3ZpcnR1YWwtZWxlbWVudCc7XG5pbXBvcnQgeyBhcHBlbmRDaGlsZCwgcHJpbnRSZW5kZXJTdGF0cyB9IGZyb20gJy4vb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyBleGVjdXRlU2lnbmFsT3BlcmF0aW9uIH0gZnJvbSAnLi9zaWduYWxzJztcbmltcG9ydCB7IGdldFBsYXRmb3JtLCBpc1NlcnZlclBsYXRmb3JtIH0gZnJvbSAnLi4vLi4vcGxhdGZvcm0vcGxhdGZvcm0nO1xuaW1wb3J0IHsgcURldiB9IGZyb20gJy4uLy4uL3V0aWwvcWRldic7XG5pbXBvcnQgdHlwZSB7IFN1YnNjcmliZXJTaWduYWwsIFN1YnNjcmlwdGlvbnMgfSBmcm9tICcuLi8uLi9zdGF0ZS9jb21tb24nO1xuaW1wb3J0IHsgcmVzdW1lSWZOZWVkZWQgfSBmcm9tICcuLi8uLi9jb250YWluZXIvcmVzdW1lJztcbmltcG9ydCB7IGdldENvbnRleHQsIEhPU1RfRkxBR19ESVJUWSwgdHlwZSBRQ29udGV4dCB9IGZyb20gJy4uLy4uL3N0YXRlL2NvbnRleHQnO1xuaW1wb3J0IHsgZGlyZWN0R2V0QXR0cmlidXRlIH0gZnJvbSAnLi4vZmFzdC1jYWxscyc7XG5pbXBvcnQgeyBRU3R5bGUgfSBmcm9tICcuLi8uLi91dGlsL21hcmtlcnMnO1xuXG5leHBvcnQgY29uc3Qgbm90aWZ5Q2hhbmdlID0gKHN1YkFjdGlvbjogU3Vic2NyaXB0aW9ucywgY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlKSA9PiB7XG4gIGlmIChzdWJBY3Rpb25bMF0gPT09IDApIHtcbiAgICBjb25zdCBob3N0ID0gc3ViQWN0aW9uWzFdO1xuICAgIGlmIChpc1N1YnNjcmliZXJEZXNjcmlwdG9yKGhvc3QpKSB7XG4gICAgICBub3RpZnlUYXNrKGhvc3QsIGNvbnRhaW5lclN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm90aWZ5UmVuZGVyKGhvc3QsIGNvbnRhaW5lclN0YXRlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbm90aWZ5U2lnbmFsT3BlcmF0aW9uKHN1YkFjdGlvbiwgY29udGFpbmVyU3RhdGUpO1xuICB9XG59O1xuXG4vKipcbiAqIE1hcmsgY29tcG9uZW50IGZvciByZW5kZXJpbmcuXG4gKlxuICogVXNlIGBub3RpZnlSZW5kZXJgIG1ldGhvZCB0byBtYXJrIGEgY29tcG9uZW50IGZvciByZW5kZXJpbmcgYXQgc29tZSBsYXRlciBwb2ludCBpbiB0aW1lLiBUaGlzXG4gKiBtZXRob2QgdXNlcyBgZ2V0UGxhdGZvcm0oZG9jKS5xdWV1ZVJlbmRlcmAgZm9yIHNjaGVkdWxpbmcgb2YgdGhlIHJlbmRlcmluZy4gVGhlIGRlZmF1bHRcbiAqIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtZXRob2QgaXMgdG8gdXNlIGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgIHRvIGRvIGFjdHVhbCByZW5kZXJpbmcuXG4gKlxuICogVGhlIG1ldGhvZCBpcyBpbnRlbmRlZCB0byBjb2FsZXNjZSBtdWx0aXBsZSBjYWxscyBpbnRvIGBub3RpZnlSZW5kZXJgIGludG8gYSBzaW5nbGUgY2FsbCBmb3JcbiAqIHJlbmRlcmluZy5cbiAqXG4gKiBAcGFyYW0gaG9zdEVsZW1lbnQgLSBIb3N0LWVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudCB0byByZS1yZW5kZXIuXG4gKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggaXMgcmVzb2x2ZWQgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIHJlbmRlcmVkLlxuICovXG5jb25zdCBub3RpZnlSZW5kZXIgPSAoaG9zdEVsZW1lbnQ6IFF3aWtFbGVtZW50LCBjb250YWluZXJTdGF0ZTogQ29udGFpbmVyU3RhdGUpOiB2b2lkID0+IHtcbiAgY29uc3Qgc2VydmVyID0gaXNTZXJ2ZXJQbGF0Zm9ybSgpO1xuICBpZiAoIXNlcnZlcikge1xuICAgIHJlc3VtZUlmTmVlZGVkKGNvbnRhaW5lclN0YXRlLiRjb250YWluZXJFbCQpO1xuICB9XG5cbiAgY29uc3QgZWxDdHggPSBnZXRDb250ZXh0KGhvc3RFbGVtZW50LCBjb250YWluZXJTdGF0ZSk7XG4gIGFzc2VydERlZmluZWQoXG4gICAgZWxDdHguJGNvbXBvbmVudFFybCQsXG4gICAgYHJlbmRlcjogbm90aWZpZWQgaG9zdCBlbGVtZW50IG11c3QgaGF2ZSBhIGRlZmluZWQgJHJlbmRlclFybCRgLFxuICAgIGVsQ3R4XG4gICk7XG4gIGlmIChlbEN0eC4kZmxhZ3MkICYgSE9TVF9GTEFHX0RJUlRZKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVsQ3R4LiRmbGFncyQgfD0gSE9TVF9GTEFHX0RJUlRZO1xuICBjb25zdCBhY3RpdmVSZW5kZXJpbmcgPSBjb250YWluZXJTdGF0ZS4kaG9zdHNSZW5kZXJpbmckICE9PSB1bmRlZmluZWQ7XG4gIGlmIChhY3RpdmVSZW5kZXJpbmcpIHtcbiAgICBjb250YWluZXJTdGF0ZS4kaG9zdHNTdGFnaW5nJC5hZGQoZWxDdHgpO1xuICB9IGVsc2Uge1xuICAgIGlmIChzZXJ2ZXIpIHtcbiAgICAgIGxvZ1dhcm4oJ0NhbiBub3QgcmVyZW5kZXIgaW4gc2VydmVyIHBsYXRmb3JtJyk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb250YWluZXJTdGF0ZS4kaG9zdHNOZXh0JC5hZGQoZWxDdHgpO1xuICAgIHNjaGVkdWxlRnJhbWUoY29udGFpbmVyU3RhdGUpO1xuICB9XG59O1xuXG5jb25zdCBub3RpZnlTaWduYWxPcGVyYXRpb24gPSAob3A6IFN1YnNjcmliZXJTaWduYWwsIGNvbnRhaW5lclN0YXRlOiBDb250YWluZXJTdGF0ZSk6IHZvaWQgPT4ge1xuICBjb25zdCBhY3RpdmVSZW5kZXJpbmcgPSBjb250YWluZXJTdGF0ZS4kaG9zdHNSZW5kZXJpbmckICE9PSB1bmRlZmluZWQ7XG4gIGNvbnRhaW5lclN0YXRlLiRvcHNOZXh0JC5hZGQob3ApO1xuICBpZiAoIWFjdGl2ZVJlbmRlcmluZykge1xuICAgIHNjaGVkdWxlRnJhbWUoY29udGFpbmVyU3RhdGUpO1xuICB9XG59O1xuZXhwb3J0IGNvbnN0IG5vdGlmeVRhc2sgPSAodGFzazogU3Vic2NyaWJlckVmZmVjdCwgY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlKSA9PiB7XG4gIGlmICh0YXNrLiRmbGFncyQgJiBUYXNrRmxhZ3NJc0RpcnR5KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRhc2suJGZsYWdzJCB8PSBUYXNrRmxhZ3NJc0RpcnR5O1xuXG4gIGNvbnN0IGFjdGl2ZVJlbmRlcmluZyA9IGNvbnRhaW5lclN0YXRlLiRob3N0c1JlbmRlcmluZyQgIT09IHVuZGVmaW5lZDtcbiAgaWYgKGFjdGl2ZVJlbmRlcmluZykge1xuICAgIGNvbnRhaW5lclN0YXRlLiR0YXNrU3RhZ2luZyQuYWRkKHRhc2spO1xuICB9IGVsc2Uge1xuICAgIGNvbnRhaW5lclN0YXRlLiR0YXNrTmV4dCQuYWRkKHRhc2spO1xuICAgIHNjaGVkdWxlRnJhbWUoY29udGFpbmVyU3RhdGUpO1xuICB9XG59O1xuXG5jb25zdCBzY2hlZHVsZUZyYW1lID0gKGNvbnRhaW5lclN0YXRlOiBDb250YWluZXJTdGF0ZSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAoY29udGFpbmVyU3RhdGUuJHJlbmRlclByb21pc2UkID09PSB1bmRlZmluZWQpIHtcbiAgICBjb250YWluZXJTdGF0ZS4kcmVuZGVyUHJvbWlzZSQgPSBnZXRQbGF0Zm9ybSgpLm5leHRUaWNrKCgpID0+IHJlbmRlck1hcmtlZChjb250YWluZXJTdGF0ZSkpO1xuICB9XG4gIHJldHVybiBjb250YWluZXJTdGF0ZS4kcmVuZGVyUHJvbWlzZSQ7XG59O1xuXG4vKipcbiAqIExvdy1sZXZlbCBBUEkgdXNlZCBieSB0aGUgT3B0aW1pemVyIHRvIHByb2Nlc3MgYHVzZVRhc2skKClgIEFQSS4gVGhpcyBtZXRob2QgaXMgbm90IGludGVuZGVkIHRvXG4gKiBiZSB1c2VkIGJ5IGRldmVsb3BlcnMuXG4gKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBfaFcgPSAoKSA9PiB7XG4gIGNvbnN0IFt0YXNrXSA9IHVzZUxleGljYWxTY29wZTxbU3Vic2NyaWJlckVmZmVjdF0+KCk7XG4gIG5vdGlmeVRhc2sodGFzaywgX2dldENvbnRhaW5lclN0YXRlKGdldFdyYXBwaW5nQ29udGFpbmVyKHRhc2suJGVsJCkhKSk7XG59O1xuXG5jb25zdCByZW5kZXJNYXJrZWQgPSBhc3luYyAoY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGNvbnRhaW5lckVsID0gY29udGFpbmVyU3RhdGUuJGNvbnRhaW5lckVsJDtcbiAgY29uc3QgZG9jID0gZ2V0RG9jdW1lbnQoY29udGFpbmVyRWwpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgckN0eCA9IGNyZWF0ZVJlbmRlckNvbnRleHQoZG9jLCBjb250YWluZXJTdGF0ZSk7XG4gICAgY29uc3Qgc3RhdGljQ3R4ID0gckN0eC4kc3RhdGljJDtcbiAgICBjb25zdCBob3N0c1JlbmRlcmluZyA9IChjb250YWluZXJTdGF0ZS4kaG9zdHNSZW5kZXJpbmckID0gbmV3IFNldChjb250YWluZXJTdGF0ZS4kaG9zdHNOZXh0JCkpO1xuICAgIGNvbnRhaW5lclN0YXRlLiRob3N0c05leHQkLmNsZWFyKCk7XG4gICAgYXdhaXQgZXhlY3V0ZVRhc2tzQmVmb3JlKGNvbnRhaW5lclN0YXRlLCByQ3R4KTtcblxuICAgIGNvbnRhaW5lclN0YXRlLiRob3N0c1N0YWdpbmckLmZvckVhY2goKGhvc3QpID0+IHtcbiAgICAgIGhvc3RzUmVuZGVyaW5nLmFkZChob3N0KTtcbiAgICB9KTtcbiAgICBjb250YWluZXJTdGF0ZS4kaG9zdHNTdGFnaW5nJC5jbGVhcigpO1xuXG4gICAgY29uc3Qgc2lnbmFsT3BlcmF0aW9ucyA9IEFycmF5LmZyb20oY29udGFpbmVyU3RhdGUuJG9wc05leHQkKTtcbiAgICBjb250YWluZXJTdGF0ZS4kb3BzTmV4dCQuY2xlYXIoKTtcblxuICAgIGNvbnN0IHJlbmRlcmluZ1F1ZXVlID0gQXJyYXkuZnJvbShob3N0c1JlbmRlcmluZyk7XG4gICAgc29ydE5vZGVzKHJlbmRlcmluZ1F1ZXVlKTtcblxuICAgIGlmICghY29udGFpbmVyU3RhdGUuJHN0eWxlTW92ZWQkICYmIHJlbmRlcmluZ1F1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnRhaW5lclN0YXRlLiRzdHlsZU1vdmVkJCA9IHRydWU7XG4gICAgICBjb25zdCBwYXJlbnRKU09OID0gY29udGFpbmVyRWwgPT09IGRvYy5kb2N1bWVudEVsZW1lbnQgPyBkb2MuYm9keSA6IGNvbnRhaW5lckVsO1xuICAgICAgcGFyZW50SlNPTi5xdWVyeVNlbGVjdG9yQWxsKCdzdHlsZVtxXFxcXDpzdHlsZV0nKS5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICBjb250YWluZXJTdGF0ZS4kc3R5bGVJZHMkLmFkZChkaXJlY3RHZXRBdHRyaWJ1dGUoZWwsIFFTdHlsZSkhKTtcbiAgICAgICAgYXBwZW5kQ2hpbGQoc3RhdGljQ3R4LCBkb2MuaGVhZCwgZWwpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBlbEN0eCBvZiByZW5kZXJpbmdRdWV1ZSkge1xuICAgICAgY29uc3QgZWwgPSBlbEN0eC4kZWxlbWVudCQ7XG4gICAgICBpZiAoIXN0YXRpY0N0eC4kaG9zdEVsZW1lbnRzJC5oYXMoZWwpKSB7XG4gICAgICAgIGlmIChlbEN0eC4kY29tcG9uZW50UXJsJCkge1xuICAgICAgICAgIGFzc2VydFRydWUoZWwuaXNDb25uZWN0ZWQsICdlbGVtZW50IG11c3QgYmUgY29ubmVjdGVkIHRvIHRoZSBkb20nKTtcbiAgICAgICAgICBzdGF0aWNDdHguJHJvb3RzJC5wdXNoKGVsQ3R4KTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgcmVuZGVyQ29tcG9uZW50KHJDdHgsIGVsQ3R4LCBnZXRGbGFncyhlbC5wYXJlbnRFbGVtZW50KSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAocURldikge1xuICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsb2dFcnJvcihlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHNpZ25hbE9wZXJhdGlvbnMuZm9yRWFjaCgob3ApID0+IHtcbiAgICAgIGV4ZWN1dGVTaWduYWxPcGVyYXRpb24ockN0eCwgb3ApO1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIHBvc3Qgb3BlcmF0aW9uc1xuICAgIHN0YXRpY0N0eC4kb3BlcmF0aW9ucyQucHVzaCguLi5zdGF0aWNDdHguJHBvc3RPcGVyYXRpb25zJCk7XG5cbiAgICAvLyBFYXJseSBleGlzdCwgbm8gZG9tIG9wZXJhdGlvbnNcbiAgICBpZiAoc3RhdGljQ3R4LiRvcGVyYXRpb25zJC5sZW5ndGggPT09IDApIHtcbiAgICAgIHByaW50UmVuZGVyU3RhdHMoc3RhdGljQ3R4KTtcbiAgICAgIGF3YWl0IHBvc3RSZW5kZXJpbmcoY29udGFpbmVyU3RhdGUsIHJDdHgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGF3YWl0IGV4ZWN1dGVDb250ZXh0V2l0aFNjcm9sbEFuZFRyYW5zaXRpb24oc3RhdGljQ3R4KTtcbiAgICBwcmludFJlbmRlclN0YXRzKHN0YXRpY0N0eCk7XG4gICAgcmV0dXJuIHBvc3RSZW5kZXJpbmcoY29udGFpbmVyU3RhdGUsIHJDdHgpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dFcnJvcihlcnIpO1xuICB9XG59O1xuXG5jb25zdCBnZXRGbGFncyA9IChlbDogRWxlbWVudCB8IG51bGwpID0+IHtcbiAgbGV0IGZsYWdzID0gMDtcbiAgaWYgKGVsKSB7XG4gICAgaWYgKGVsLm5hbWVzcGFjZVVSSSA9PT0gU1ZHX05TKSB7XG4gICAgICBmbGFncyB8PSBJU19TVkc7XG4gICAgfVxuICAgIGlmIChlbC50YWdOYW1lID09PSAnSEVBRCcpIHtcbiAgICAgIGZsYWdzIHw9IElTX0hFQUQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBmbGFncztcbn07XG5cbmV4cG9ydCBjb25zdCBwb3N0UmVuZGVyaW5nID0gYXN5bmMgKGNvbnRhaW5lclN0YXRlOiBDb250YWluZXJTdGF0ZSwgckN0eDogUmVuZGVyQ29udGV4dCkgPT4ge1xuICBjb25zdCBob3N0RWxlbWVudHMgPSByQ3R4LiRzdGF0aWMkLiRob3N0RWxlbWVudHMkO1xuXG4gIGF3YWl0IGV4ZWN1dGVUYXNrc0FmdGVyKGNvbnRhaW5lclN0YXRlLCByQ3R4LCAodGFzaywgc3RhZ2UpID0+IHtcbiAgICBpZiAoKHRhc2suJGZsYWdzJCAmIFRhc2tGbGFnc0lzVmlzaWJsZVRhc2spID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChzdGFnZSkge1xuICAgICAgcmV0dXJuIGhvc3RFbGVtZW50cy5oYXModGFzay4kZWwkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xuXG4gIC8vIENsZWFyIHN0YWdpbmdcbiAgY29udGFpbmVyU3RhdGUuJGhvc3RzU3RhZ2luZyQuZm9yRWFjaCgoZWwpID0+IHtcbiAgICBjb250YWluZXJTdGF0ZS4kaG9zdHNOZXh0JC5hZGQoZWwpO1xuICB9KTtcbiAgY29udGFpbmVyU3RhdGUuJGhvc3RzU3RhZ2luZyQuY2xlYXIoKTtcblxuICBjb250YWluZXJTdGF0ZS4kaG9zdHNSZW5kZXJpbmckID0gdW5kZWZpbmVkO1xuICBjb250YWluZXJTdGF0ZS4kcmVuZGVyUHJvbWlzZSQgPSB1bmRlZmluZWQ7XG5cbiAgY29uc3QgcGVuZGluZyA9XG4gICAgY29udGFpbmVyU3RhdGUuJGhvc3RzTmV4dCQuc2l6ZSArXG4gICAgY29udGFpbmVyU3RhdGUuJHRhc2tOZXh0JC5zaXplICtcbiAgICBjb250YWluZXJTdGF0ZS4kb3BzTmV4dCQuc2l6ZTtcblxuICBpZiAocGVuZGluZyA+IDApIHtcbiAgICAvLyBJbW1lZGlhdGVseSByZW5kZXIgYWdhaW5cbiAgICBjb250YWluZXJTdGF0ZS4kcmVuZGVyUHJvbWlzZSQgPSByZW5kZXJNYXJrZWQoY29udGFpbmVyU3RhdGUpO1xuICB9XG59O1xuXG5jb25zdCBpc1Rhc2sgPSAodGFzazogU3Vic2NyaWJlckVmZmVjdCkgPT4gKHRhc2suJGZsYWdzJCAmIFRhc2tGbGFnc0lzVGFzaykgIT09IDA7XG5jb25zdCBpc1Jlc291cmNlVGFzayA9ICh0YXNrOiBTdWJzY3JpYmVyRWZmZWN0KSA9PiAodGFzay4kZmxhZ3MkICYgVGFza0ZsYWdzSXNSZXNvdXJjZSkgIT09IDA7XG5jb25zdCBleGVjdXRlVGFza3NCZWZvcmUgPSBhc3luYyAoY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlLCByQ3R4OiBSZW5kZXJDb250ZXh0KSA9PiB7XG4gIGNvbnN0IGNvbnRhaW5lckVsID0gY29udGFpbmVyU3RhdGUuJGNvbnRhaW5lckVsJDtcbiAgY29uc3QgcmVzb3VyY2VzUHJvbWlzZXM6IFZhbHVlT3JQcm9taXNlPFN1YnNjcmliZXJFZmZlY3Q+W10gPSBbXTtcbiAgY29uc3QgdGFza1Byb21pc2VzOiBWYWx1ZU9yUHJvbWlzZTxTdWJzY3JpYmVyRWZmZWN0PltdID0gW107XG5cbiAgY29udGFpbmVyU3RhdGUuJHRhc2tOZXh0JC5mb3JFYWNoKCh0YXNrKSA9PiB7XG4gICAgaWYgKGlzVGFzayh0YXNrKSkge1xuICAgICAgdGFza1Byb21pc2VzLnB1c2gobWF5YmVUaGVuKHRhc2suJHFybCQuJHJlc29sdmVMYXp5JChjb250YWluZXJFbCksICgpID0+IHRhc2spKTtcbiAgICAgIGNvbnRhaW5lclN0YXRlLiR0YXNrTmV4dCQuZGVsZXRlKHRhc2spO1xuICAgIH1cbiAgICBpZiAoaXNSZXNvdXJjZVRhc2sodGFzaykpIHtcbiAgICAgIHJlc291cmNlc1Byb21pc2VzLnB1c2gobWF5YmVUaGVuKHRhc2suJHFybCQuJHJlc29sdmVMYXp5JChjb250YWluZXJFbCksICgpID0+IHRhc2spKTtcbiAgICAgIGNvbnRhaW5lclN0YXRlLiR0YXNrTmV4dCQuZGVsZXRlKHRhc2spO1xuICAgIH1cbiAgfSk7XG4gIGRvIHtcbiAgICAvLyBSdW4gc3RhZ2luZyBlZmZlY3RlZFxuICAgIGNvbnRhaW5lclN0YXRlLiR0YXNrU3RhZ2luZyQuZm9yRWFjaCgodGFzaykgPT4ge1xuICAgICAgaWYgKGlzVGFzayh0YXNrKSkge1xuICAgICAgICB0YXNrUHJvbWlzZXMucHVzaChtYXliZVRoZW4odGFzay4kcXJsJC4kcmVzb2x2ZUxhenkkKGNvbnRhaW5lckVsKSwgKCkgPT4gdGFzaykpO1xuICAgICAgfSBlbHNlIGlmIChpc1Jlc291cmNlVGFzayh0YXNrKSkge1xuICAgICAgICByZXNvdXJjZXNQcm9taXNlcy5wdXNoKG1heWJlVGhlbih0YXNrLiRxcmwkLiRyZXNvbHZlTGF6eSQoY29udGFpbmVyRWwpLCAoKSA9PiB0YXNrKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250YWluZXJTdGF0ZS4kdGFza05leHQkLmFkZCh0YXNrKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lclN0YXRlLiR0YXNrU3RhZ2luZyQuY2xlYXIoKTtcblxuICAgIC8vIFdhaXQgZm9yIGFsbCBwcm9taXNlc1xuICAgIGlmICh0YXNrUHJvbWlzZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdGFza3MgPSBhd2FpdCBQcm9taXNlLmFsbCh0YXNrUHJvbWlzZXMpO1xuICAgICAgc29ydFRhc2tzKHRhc2tzKTtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICB0YXNrcy5tYXAoKHRhc2spID0+IHtcbiAgICAgICAgICByZXR1cm4gcnVuU3Vic2NyaWJlcih0YXNrLCBjb250YWluZXJTdGF0ZSwgckN0eCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGFza1Byb21pc2VzLmxlbmd0aCA9IDA7XG4gICAgfVxuICB9IHdoaWxlIChjb250YWluZXJTdGF0ZS4kdGFza1N0YWdpbmckLnNpemUgPiAwKTtcblxuICBpZiAocmVzb3VyY2VzUHJvbWlzZXMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHJlc291cmNlcyA9IGF3YWl0IFByb21pc2UuYWxsKHJlc291cmNlc1Byb21pc2VzKTtcbiAgICBzb3J0VGFza3MocmVzb3VyY2VzKTtcbiAgICAvLyBubyBhd2FpdCBzbyB0aGVzZSBydW4gY29uY3VycmVudGx5IHdpdGggdGhlIHJlbmRlcmluZ1xuICAgIGZvciAoY29uc3QgdGFzayBvZiByZXNvdXJjZXMpIHtcbiAgICAgIHJ1blN1YnNjcmliZXIodGFzaywgY29udGFpbmVyU3RhdGUsIHJDdHgpO1xuICAgIH1cbiAgfVxufTtcblxuLyoqIEV4ZWN1dGUgdGFza3MgdGhhdCBhcmUgZGlydHkgZHVyaW5nIFNTUiByZW5kZXIgKi9cbmV4cG9ydCBjb25zdCBleGVjdXRlU1NSVGFza3MgPSAoY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlLCByQ3R4OiBSZW5kZXJDb250ZXh0KSA9PiB7XG4gIGNvbnN0IGNvbnRhaW5lckVsID0gY29udGFpbmVyU3RhdGUuJGNvbnRhaW5lckVsJDtcbiAgY29uc3Qgc3RhZ2luZyA9IGNvbnRhaW5lclN0YXRlLiR0YXNrU3RhZ2luZyQ7XG4gIGlmICghc3RhZ2luZy5zaXplKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHRhc2tQcm9taXNlczogVmFsdWVPclByb21pc2U8U3Vic2NyaWJlckVmZmVjdD5bXSA9IFtdO1xuXG4gIGxldCB0cmllcyA9IDIwO1xuICBjb25zdCBydW5UYXNrcyA9ICgpID0+IHtcbiAgICAvLyBTU1IgZGlydHkgdGFza3MgYXJlIGluIHRhc2tTdGFnaW5nXG4gICAgc3RhZ2luZy5mb3JFYWNoKCh0YXNrKSA9PiB7XG4gICAgICBpZiAoaXNUYXNrKHRhc2spKSB7XG4gICAgICAgIHRhc2tQcm9taXNlcy5wdXNoKG1heWJlVGhlbih0YXNrLiRxcmwkLiRyZXNvbHZlTGF6eSQoY29udGFpbmVyRWwpLCAoKSA9PiB0YXNrKSk7XG4gICAgICB9XG4gICAgICAvLyBXZSBpZ25vcmUgb3RoZXIgdHlwZXMgb2YgdGFza3MsIHRoZXkgYXJlIGhhbmRsZWQgdmlhIHdhaXRPblxuICAgIH0pO1xuXG4gICAgc3RhZ2luZy5jbGVhcigpO1xuXG4gICAgLy8gV2FpdCBmb3IgYWxsIHByb21pc2VzXG4gICAgaWYgKHRhc2tQcm9taXNlcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwodGFza1Byb21pc2VzKS50aGVuKGFzeW5jICh0YXNrcyk6IFByb21pc2U8dW5rbm93bj4gPT4ge1xuICAgICAgICBzb3J0VGFza3ModGFza3MpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICB0YXNrcy5tYXAoKHRhc2spID0+IHtcbiAgICAgICAgICAgIHJldHVybiBydW5TdWJzY3JpYmVyKHRhc2ssIGNvbnRhaW5lclN0YXRlLCByQ3R4KTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICB0YXNrUHJvbWlzZXMubGVuZ3RoID0gMDtcbiAgICAgICAgaWYgKC0tdHJpZXMgJiYgc3RhZ2luZy5zaXplID4gMCkge1xuICAgICAgICAgIHJldHVybiBydW5UYXNrcygpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdHJpZXMpIHtcbiAgICAgICAgICBsb2dXYXJuKFxuICAgICAgICAgICAgYEluZmluaXRlIHRhc2sgbG9vcCBkZXRlY3RlZC4gVGFza3M6XFxuJHtBcnJheS5mcm9tKHN0YWdpbmcpXG4gICAgICAgICAgICAgIC5tYXAoKHRhc2spID0+IGAgICR7dGFzay4kcXJsJC4kc3ltYm9sJH1gKVxuICAgICAgICAgICAgICAuam9pbignXFxuJyl9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHJ1blRhc2tzKCk7XG59O1xuXG5jb25zdCBleGVjdXRlVGFza3NBZnRlciA9IGFzeW5jIChcbiAgY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlLFxuICByQ3R4OiBSZW5kZXJDb250ZXh0LFxuICB0YXNrUHJlZDogKHRhc2s6IFN1YnNjcmliZXJFZmZlY3QsIHN0YWdpbmc6IGJvb2xlYW4pID0+IGJvb2xlYW5cbikgPT4ge1xuICBjb25zdCB0YXNrUHJvbWlzZXM6IFZhbHVlT3JQcm9taXNlPFN1YnNjcmliZXJFZmZlY3Q+W10gPSBbXTtcbiAgY29uc3QgY29udGFpbmVyRWwgPSBjb250YWluZXJTdGF0ZS4kY29udGFpbmVyRWwkO1xuXG4gIGNvbnRhaW5lclN0YXRlLiR0YXNrTmV4dCQuZm9yRWFjaCgodGFzaykgPT4ge1xuICAgIGlmICh0YXNrUHJlZCh0YXNrLCBmYWxzZSkpIHtcbiAgICAgIGlmICh0YXNrLiRlbCQuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgdGFza1Byb21pc2VzLnB1c2gobWF5YmVUaGVuKHRhc2suJHFybCQuJHJlc29sdmVMYXp5JChjb250YWluZXJFbCksICgpID0+IHRhc2spKTtcbiAgICAgIH1cbiAgICAgIGNvbnRhaW5lclN0YXRlLiR0YXNrTmV4dCQuZGVsZXRlKHRhc2spO1xuICAgIH1cbiAgfSk7XG4gIGRvIHtcbiAgICAvLyBSdW4gc3RhZ2luZyBlZmZlY3RlZFxuICAgIGNvbnRhaW5lclN0YXRlLiR0YXNrU3RhZ2luZyQuZm9yRWFjaCgodGFzaykgPT4ge1xuICAgICAgaWYgKHRhc2suJGVsJC5pc0Nvbm5lY3RlZCkge1xuICAgICAgICBpZiAodGFza1ByZWQodGFzaywgdHJ1ZSkpIHtcbiAgICAgICAgICB0YXNrUHJvbWlzZXMucHVzaChtYXliZVRoZW4odGFzay4kcXJsJC4kcmVzb2x2ZUxhenkkKGNvbnRhaW5lckVsKSwgKCkgPT4gdGFzaykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRhaW5lclN0YXRlLiR0YXNrTmV4dCQuYWRkKHRhc2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29udGFpbmVyU3RhdGUuJHRhc2tTdGFnaW5nJC5jbGVhcigpO1xuXG4gICAgLy8gV2FpdCBmb3IgYWxsIHByb21pc2VzXG4gICAgaWYgKHRhc2tQcm9taXNlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB0YXNrcyA9IGF3YWl0IFByb21pc2UuYWxsKHRhc2tQcm9taXNlcyk7XG4gICAgICBzb3J0VGFza3ModGFza3MpO1xuICAgICAgZm9yIChjb25zdCB0YXNrIG9mIHRhc2tzKSB7XG4gICAgICAgIHJ1blN1YnNjcmliZXIodGFzaywgY29udGFpbmVyU3RhdGUsIHJDdHgpO1xuICAgICAgfVxuICAgICAgdGFza1Byb21pc2VzLmxlbmd0aCA9IDA7XG4gICAgfVxuICB9IHdoaWxlIChjb250YWluZXJTdGF0ZS4kdGFza1N0YWdpbmckLnNpemUgPiAwKTtcbn07XG5cbmNvbnN0IHNvcnROb2RlcyA9IChlbGVtZW50czogUUNvbnRleHRbXSkgPT4ge1xuICBlbGVtZW50cy5zb3J0KChhLCBiKSA9PlxuICAgIGEuJGVsZW1lbnQkLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGdldFJvb3ROb2RlKGIuJGVsZW1lbnQkKSkgJiAyID8gMSA6IC0xXG4gICk7XG59O1xuXG5jb25zdCBzb3J0VGFza3MgPSAodGFza3M6IFN1YnNjcmliZXJFZmZlY3RbXSkgPT4ge1xuICBjb25zdCBpc1NlcnZlciA9IGlzU2VydmVyUGxhdGZvcm0oKTtcbiAgdGFza3Muc29ydCgoYSwgYikgPT4ge1xuICAgIGlmIChpc1NlcnZlciB8fCBhLiRlbCQgPT09IGIuJGVsJCkge1xuICAgICAgcmV0dXJuIGEuJGluZGV4JCA8IGIuJGluZGV4JCA/IC0xIDogMTtcbiAgICB9XG4gICAgcmV0dXJuIChhLiRlbCQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZ2V0Um9vdE5vZGUoYi4kZWwkKSkgJiAyKSAhPT0gMCA/IDEgOiAtMTtcbiAgfSk7XG59O1xuIl19","import { assertQrl } from '../qrl/qrl-class';\nimport { getContext, HOST_FLAG_NEED_ATTACH_LISTENER } from '../state/context';\nimport { normalizeOnProp } from '../state/listeners';\nimport { useInvokeContext } from './use-core';\nimport {} from '../render/jsx/types/jsx-qwik-events';\n// <docs markdown=\"../readme.md#useOn\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useOn instead)\n/**\n * Register a listener on the current component's host element.\n *\n * Used to programmatically add event listeners. Useful from custom `use*` methods, which do not\n * have access to the JSX. Otherwise, it's adding a JSX listener in the `<div>` is a better idea.\n *\n * @public\n * @see `useOn`, `useOnWindow`, `useOnDocument`.\n */\n// </docs>\nexport const useOn = (event, eventQrl) => {\n    _useOn(createEventName(event, undefined), eventQrl);\n};\n// <docs markdown=\"../readme.md#useOnDocument\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useOnDocument instead)\n/**\n * Register a listener on `document`.\n *\n * Used to programmatically add event listeners. Useful from custom `use*` methods, which do not\n * have access to the JSX.\n *\n * @public\n * @see `useOn`, `useOnWindow`, `useOnDocument`.\n *\n * ```tsx\n * function useScroll() {\n *   useOnDocument(\n *     'scroll',\n *     $((event) => {\n *       console.log('body scrolled', event);\n *     })\n *   );\n * }\n *\n * const Cmp = component$(() => {\n *   useScroll();\n *   return <div>Profit!</div>;\n * });\n * ```\n */\n// </docs>\nexport const useOnDocument = (event, eventQrl) => {\n    _useOn(createEventName(event, 'document'), eventQrl);\n};\n// <docs markdown=\"../readme.md#useOnWindow\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useOnWindow instead)\n/**\n * Register a listener on `window`.\n *\n * Used to programmatically add event listeners. Useful from custom `use*` methods, which do not\n * have access to the JSX.\n *\n * @public\n * @see `useOn`, `useOnWindow`, `useOnDocument`.\n *\n * ```tsx\n * function useAnalytics() {\n *   useOnWindow(\n *     'popstate',\n *     $((event) => {\n *       console.log('navigation happened', event);\n *       // report to analytics\n *     })\n *   );\n * }\n *\n * const Cmp = component$(() => {\n *   useAnalytics();\n *   return <div>Profit!</div>;\n * });\n * ```\n */\n// </docs>\nexport const useOnWindow = (event, eventQrl) => {\n    _useOn(createEventName(event, 'window'), eventQrl);\n};\nconst createEventName = (event, eventType) => {\n    const formattedEventType = eventType !== undefined ? eventType + ':' : '';\n    const res = Array.isArray(event)\n        ? event.map((e) => `${formattedEventType}on-${e}`)\n        : `${formattedEventType}on-${event}`;\n    return res;\n};\nconst _useOn = (eventName, eventQrl) => {\n    if (eventQrl) {\n        const invokeCtx = useInvokeContext();\n        const elCtx = getContext(invokeCtx.$hostElement$, invokeCtx.$renderCtx$.$static$.$containerState$);\n        assertQrl(eventQrl);\n        if (typeof eventName === 'string') {\n            elCtx.li.push([normalizeOnProp(eventName), eventQrl]);\n        }\n        else {\n            elCtx.li.push(...eventName.map((name) => [normalizeOnProp(name), eventQrl]));\n        }\n        elCtx.$flags$ |= HOST_FLAG_NEED_ATTACH_LISTENER;\n    }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLW9uLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3VzZS91c2Utb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5RSxPQUFPLEVBQWlCLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM5QyxPQUFPLEVBQXdCLE1BQU0scUNBQXFDLENBQUM7QUFXM0UsdUNBQXVDO0FBQ3ZDLHlDQUF5QztBQUN6QyxvQ0FBb0M7QUFDcEM7Ozs7Ozs7O0dBUUc7QUFDSCxVQUFVO0FBQ1YsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQTRCLEtBQWMsRUFBRSxRQUFxQixFQUFFLEVBQUU7SUFDeEYsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDdEQsQ0FBQyxDQUFDO0FBRUYsK0NBQStDO0FBQy9DLHlDQUF5QztBQUN6Qyw0Q0FBNEM7QUFDNUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQUNILFVBQVU7QUFDVixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBNEIsS0FBYyxFQUFFLFFBQXFCLEVBQUUsRUFBRTtJQUNoRyxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN2RCxDQUFDLENBQUM7QUFFRiw2Q0FBNkM7QUFDN0MseUNBQXlDO0FBQ3pDLDBDQUEwQztBQUMxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILFVBQVU7QUFDVixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBNEIsS0FBYyxFQUFFLFFBQXFCLEVBQUUsRUFBRTtJQUM5RixNQUFNLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxDQUN0QixLQUEwQyxFQUMxQyxTQUE0QyxFQUM1QyxFQUFFO0lBQ0YsTUFBTSxrQkFBa0IsR0FBRyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDMUUsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDOUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsa0JBQWtCLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbEQsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLE1BQU0sS0FBSyxFQUFFLENBQUM7SUFDdkMsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUM7QUFFRixNQUFNLE1BQU0sR0FBRyxDQUFDLFNBQTRCLEVBQUUsUUFBa0IsRUFBRSxFQUFFO0lBQ2xFLElBQUksUUFBUSxFQUFFLENBQUM7UUFDYixNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FDdEIsU0FBUyxDQUFDLGFBQWEsRUFDdkIsU0FBUyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQ2hELENBQUM7UUFDRixTQUFTLENBQUMsUUFBZSxDQUFDLENBQUM7UUFDM0IsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLENBQWEsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7YUFBTSxDQUFDO1lBQ04sS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLENBQWEsQ0FBQyxDQUFDLENBQUM7UUFDM0YsQ0FBQztRQUNELEtBQUssQ0FBQyxPQUFPLElBQUksOEJBQThCLENBQUM7SUFDbEQsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydFFybCB9IGZyb20gJy4uL3FybC9xcmwtY2xhc3MnO1xuaW1wb3J0IHR5cGUgeyBRUkwgfSBmcm9tICcuLi9xcmwvcXJsLnB1YmxpYyc7XG5pbXBvcnQgeyBnZXRDb250ZXh0LCBIT1NUX0ZMQUdfTkVFRF9BVFRBQ0hfTElTVEVORVIgfSBmcm9tICcuLi9zdGF0ZS9jb250ZXh0JztcbmltcG9ydCB7IHR5cGUgTGlzdGVuZXIsIG5vcm1hbGl6ZU9uUHJvcCB9IGZyb20gJy4uL3N0YXRlL2xpc3RlbmVycyc7XG5pbXBvcnQgeyB1c2VJbnZva2VDb250ZXh0IH0gZnJvbSAnLi91c2UtY29yZSc7XG5pbXBvcnQgeyB0eXBlIEtub3duRXZlbnROYW1lcyB9IGZyb20gJy4uL3JlbmRlci9qc3gvdHlwZXMvanN4LXF3aWstZXZlbnRzJztcbmltcG9ydCB0eXBlIHtcbiAgRXZlbnRIYW5kbGVyLFxuICBFdmVudEZyb21OYW1lLFxuICBBbGxFdmVudEtleXMsXG59IGZyb20gJy4uL3JlbmRlci9qc3gvdHlwZXMvanN4LXF3aWstYXR0cmlidXRlcyc7XG5cbmV4cG9ydCB0eXBlIEV2ZW50UVJMPFQgZXh0ZW5kcyBzdHJpbmcgPSBBbGxFdmVudEtleXM+ID1cbiAgfCBRUkw8RXZlbnRIYW5kbGVyPEV2ZW50RnJvbU5hbWU8VD4sIEVsZW1lbnQ+PlxuICB8IHVuZGVmaW5lZDtcblxuLy8gPGRvY3MgbWFya2Rvd249XCIuLi9yZWFkbWUubWQjdXNlT25cIj5cbi8vICEhRE8gTk9UIEVESVQgVEhJUyBDT01NRU5UIERJUkVDVExZISEhXG4vLyAoZWRpdCAuLi9yZWFkbWUubWQjdXNlT24gaW5zdGVhZClcbi8qKlxuICogUmVnaXN0ZXIgYSBsaXN0ZW5lciBvbiB0aGUgY3VycmVudCBjb21wb25lbnQncyBob3N0IGVsZW1lbnQuXG4gKlxuICogVXNlZCB0byBwcm9ncmFtbWF0aWNhbGx5IGFkZCBldmVudCBsaXN0ZW5lcnMuIFVzZWZ1bCBmcm9tIGN1c3RvbSBgdXNlKmAgbWV0aG9kcywgd2hpY2ggZG8gbm90XG4gKiBoYXZlIGFjY2VzcyB0byB0aGUgSlNYLiBPdGhlcndpc2UsIGl0J3MgYWRkaW5nIGEgSlNYIGxpc3RlbmVyIGluIHRoZSBgPGRpdj5gIGlzIGEgYmV0dGVyIGlkZWEuXG4gKlxuICogQHB1YmxpY1xuICogQHNlZSBgdXNlT25gLCBgdXNlT25XaW5kb3dgLCBgdXNlT25Eb2N1bWVudGAuXG4gKi9cbi8vIDwvZG9jcz5cbmV4cG9ydCBjb25zdCB1c2VPbiA9IDxUIGV4dGVuZHMgS25vd25FdmVudE5hbWVzPihldmVudDogVCB8IFRbXSwgZXZlbnRRcmw6IEV2ZW50UVJMPFQ+KSA9PiB7XG4gIF91c2VPbihjcmVhdGVFdmVudE5hbWUoZXZlbnQsIHVuZGVmaW5lZCksIGV2ZW50UXJsKTtcbn07XG5cbi8vIDxkb2NzIG1hcmtkb3duPVwiLi4vcmVhZG1lLm1kI3VzZU9uRG9jdW1lbnRcIj5cbi8vICEhRE8gTk9UIEVESVQgVEhJUyBDT01NRU5UIERJUkVDVExZISEhXG4vLyAoZWRpdCAuLi9yZWFkbWUubWQjdXNlT25Eb2N1bWVudCBpbnN0ZWFkKVxuLyoqXG4gKiBSZWdpc3RlciBhIGxpc3RlbmVyIG9uIGBkb2N1bWVudGAuXG4gKlxuICogVXNlZCB0byBwcm9ncmFtbWF0aWNhbGx5IGFkZCBldmVudCBsaXN0ZW5lcnMuIFVzZWZ1bCBmcm9tIGN1c3RvbSBgdXNlKmAgbWV0aG9kcywgd2hpY2ggZG8gbm90XG4gKiBoYXZlIGFjY2VzcyB0byB0aGUgSlNYLlxuICpcbiAqIEBwdWJsaWNcbiAqIEBzZWUgYHVzZU9uYCwgYHVzZU9uV2luZG93YCwgYHVzZU9uRG9jdW1lbnRgLlxuICpcbiAqIGBgYHRzeFxuICogZnVuY3Rpb24gdXNlU2Nyb2xsKCkge1xuICogICB1c2VPbkRvY3VtZW50KFxuICogICAgICdzY3JvbGwnLFxuICogICAgICQoKGV2ZW50KSA9PiB7XG4gKiAgICAgICBjb25zb2xlLmxvZygnYm9keSBzY3JvbGxlZCcsIGV2ZW50KTtcbiAqICAgICB9KVxuICogICApO1xuICogfVxuICpcbiAqIGNvbnN0IENtcCA9IGNvbXBvbmVudCQoKCkgPT4ge1xuICogICB1c2VTY3JvbGwoKTtcbiAqICAgcmV0dXJuIDxkaXY+UHJvZml0ITwvZGl2PjtcbiAqIH0pO1xuICogYGBgXG4gKi9cbi8vIDwvZG9jcz5cbmV4cG9ydCBjb25zdCB1c2VPbkRvY3VtZW50ID0gPFQgZXh0ZW5kcyBLbm93bkV2ZW50TmFtZXM+KGV2ZW50OiBUIHwgVFtdLCBldmVudFFybDogRXZlbnRRUkw8VD4pID0+IHtcbiAgX3VzZU9uKGNyZWF0ZUV2ZW50TmFtZShldmVudCwgJ2RvY3VtZW50JyksIGV2ZW50UXJsKTtcbn07XG5cbi8vIDxkb2NzIG1hcmtkb3duPVwiLi4vcmVhZG1lLm1kI3VzZU9uV2luZG93XCI+XG4vLyAhIURPIE5PVCBFRElUIFRISVMgQ09NTUVOVCBESVJFQ1RMWSEhIVxuLy8gKGVkaXQgLi4vcmVhZG1lLm1kI3VzZU9uV2luZG93IGluc3RlYWQpXG4vKipcbiAqIFJlZ2lzdGVyIGEgbGlzdGVuZXIgb24gYHdpbmRvd2AuXG4gKlxuICogVXNlZCB0byBwcm9ncmFtbWF0aWNhbGx5IGFkZCBldmVudCBsaXN0ZW5lcnMuIFVzZWZ1bCBmcm9tIGN1c3RvbSBgdXNlKmAgbWV0aG9kcywgd2hpY2ggZG8gbm90XG4gKiBoYXZlIGFjY2VzcyB0byB0aGUgSlNYLlxuICpcbiAqIEBwdWJsaWNcbiAqIEBzZWUgYHVzZU9uYCwgYHVzZU9uV2luZG93YCwgYHVzZU9uRG9jdW1lbnRgLlxuICpcbiAqIGBgYHRzeFxuICogZnVuY3Rpb24gdXNlQW5hbHl0aWNzKCkge1xuICogICB1c2VPbldpbmRvdyhcbiAqICAgICAncG9wc3RhdGUnLFxuICogICAgICQoKGV2ZW50KSA9PiB7XG4gKiAgICAgICBjb25zb2xlLmxvZygnbmF2aWdhdGlvbiBoYXBwZW5lZCcsIGV2ZW50KTtcbiAqICAgICAgIC8vIHJlcG9ydCB0byBhbmFseXRpY3NcbiAqICAgICB9KVxuICogICApO1xuICogfVxuICpcbiAqIGNvbnN0IENtcCA9IGNvbXBvbmVudCQoKCkgPT4ge1xuICogICB1c2VBbmFseXRpY3MoKTtcbiAqICAgcmV0dXJuIDxkaXY+UHJvZml0ITwvZGl2PjtcbiAqIH0pO1xuICogYGBgXG4gKi9cbi8vIDwvZG9jcz5cbmV4cG9ydCBjb25zdCB1c2VPbldpbmRvdyA9IDxUIGV4dGVuZHMgS25vd25FdmVudE5hbWVzPihldmVudDogVCB8IFRbXSwgZXZlbnRRcmw6IEV2ZW50UVJMPFQ+KSA9PiB7XG4gIF91c2VPbihjcmVhdGVFdmVudE5hbWUoZXZlbnQsICd3aW5kb3cnKSwgZXZlbnRRcmwpO1xufTtcblxuY29uc3QgY3JlYXRlRXZlbnROYW1lID0gKFxuICBldmVudDogS25vd25FdmVudE5hbWVzIHwgS25vd25FdmVudE5hbWVzW10sXG4gIGV2ZW50VHlwZTogJ3dpbmRvdycgfCAnZG9jdW1lbnQnIHwgdW5kZWZpbmVkXG4pID0+IHtcbiAgY29uc3QgZm9ybWF0dGVkRXZlbnRUeXBlID0gZXZlbnRUeXBlICE9PSB1bmRlZmluZWQgPyBldmVudFR5cGUgKyAnOicgOiAnJztcbiAgY29uc3QgcmVzID0gQXJyYXkuaXNBcnJheShldmVudClcbiAgICA/IGV2ZW50Lm1hcCgoZSkgPT4gYCR7Zm9ybWF0dGVkRXZlbnRUeXBlfW9uLSR7ZX1gKVxuICAgIDogYCR7Zm9ybWF0dGVkRXZlbnRUeXBlfW9uLSR7ZXZlbnR9YDtcbiAgcmV0dXJuIHJlcztcbn07XG5cbmNvbnN0IF91c2VPbiA9IChldmVudE5hbWU6IHN0cmluZyB8IHN0cmluZ1tdLCBldmVudFFybDogRXZlbnRRUkwpID0+IHtcbiAgaWYgKGV2ZW50UXJsKSB7XG4gICAgY29uc3QgaW52b2tlQ3R4ID0gdXNlSW52b2tlQ29udGV4dCgpO1xuICAgIGNvbnN0IGVsQ3R4ID0gZ2V0Q29udGV4dChcbiAgICAgIGludm9rZUN0eC4kaG9zdEVsZW1lbnQkLFxuICAgICAgaW52b2tlQ3R4LiRyZW5kZXJDdHgkLiRzdGF0aWMkLiRjb250YWluZXJTdGF0ZSRcbiAgICApO1xuICAgIGFzc2VydFFybChldmVudFFybCBhcyBhbnkpO1xuICAgIGlmICh0eXBlb2YgZXZlbnROYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgZWxDdHgubGkucHVzaChbbm9ybWFsaXplT25Qcm9wKGV2ZW50TmFtZSksIGV2ZW50UXJsXSBhcyBMaXN0ZW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsQ3R4LmxpLnB1c2goLi4uZXZlbnROYW1lLm1hcCgobmFtZSkgPT4gW25vcm1hbGl6ZU9uUHJvcChuYW1lKSwgZXZlbnRRcmxdIGFzIExpc3RlbmVyKSk7XG4gICAgfVxuICAgIGVsQ3R4LiRmbGFncyQgfD0gSE9TVF9GTEFHX05FRURfQVRUQUNIX0xJU1RFTkVSO1xuICB9XG59O1xuIl19","import { isQwikComponent } from '../component/component.public';\nimport { _createSignal } from '../state/signal';\nimport { isFunction } from '../util/types';\nimport { invoke, useContainerState } from './use-core';\nimport { useSequentialScope } from './use-sequential-scope';\n/**\n * Creates a signal.\n *\n * If the initial state is a function, the function is invoked to calculate the actual initial\n * state.\n *\n * @deprecated This is a technology preview\n * @public\n */\nexport const createSignal = (initialState) => {\n    const containerState = useContainerState();\n    const value = isFunction(initialState) && !isQwikComponent(initialState)\n        ? invoke(undefined, initialState)\n        : initialState;\n    return _createSignal(value, containerState, 0);\n};\n/**\n * Stores a value which is retained for the lifetime of the component.\n *\n * If the value is a function, the function is invoked to calculate the actual value.\n *\n * @deprecated This is a technology preview\n * @public\n */\nexport const useConstant = (value) => {\n    const { val, set } = useSequentialScope();\n    if (val != null) {\n        return val;\n    }\n    // Note: We are not using `invoke` here because we don't want to clear the context\n    value = isFunction(value) && !isQwikComponent(value) ? value() : value;\n    return set(value);\n};\n/**\n * Hook that creates a signal that is retained for the lifetime of the component.\n *\n * @public\n */\nexport const useSignal = (initialState) => {\n    return useConstant(() => createSignal(initialState));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXNpZ25hbC5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS91c2UvdXNlLXNpZ25hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBZSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVE1RDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBYyxDQUFRLFlBQW9CLEVBQWlCLEVBQUU7SUFDcEYsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQyxNQUFNLEtBQUssR0FDVCxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDO1FBQ3hELENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFlBQW1CLENBQUM7UUFDeEMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUNuQixPQUFPLGFBQWEsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBa0IsQ0FBQztBQUNsRSxDQUFDLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUksS0FBb0IsRUFBSyxFQUFFO0lBQ3hELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsa0JBQWtCLEVBQUssQ0FBQztJQUM3QyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNoQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFDRCxrRkFBa0Y7SUFDbEYsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN2RSxPQUFPLEdBQUcsQ0FBQyxLQUFVLENBQUMsQ0FBQztBQUN6QixDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFjLENBQUMsWUFBa0IsRUFBRSxFQUFFO0lBQ3pELE9BQU8sV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUXdpa0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudC9jb21wb25lbnQucHVibGljJztcbmltcG9ydCB7IF9jcmVhdGVTaWduYWwsIHR5cGUgU2lnbmFsIH0gZnJvbSAnLi4vc3RhdGUvc2lnbmFsJztcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICcuLi91dGlsL3R5cGVzJztcbmltcG9ydCB7IGludm9rZSwgdXNlQ29udGFpbmVyU3RhdGUgfSBmcm9tICcuL3VzZS1jb3JlJztcbmltcG9ydCB7IHVzZVNlcXVlbnRpYWxTY29wZSB9IGZyb20gJy4vdXNlLXNlcXVlbnRpYWwtc2NvcGUnO1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VTaWduYWwge1xuICA8VD4oKTogU2lnbmFsPFQgfCB1bmRlZmluZWQ+O1xuICA8VD4odmFsdWU6IFQgfCAoKCkgPT4gVCkpOiBTaWduYWw8VD47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNpZ25hbC5cbiAqXG4gKiBJZiB0aGUgaW5pdGlhbCBzdGF0ZSBpcyBhIGZ1bmN0aW9uLCB0aGUgZnVuY3Rpb24gaXMgaW52b2tlZCB0byBjYWxjdWxhdGUgdGhlIGFjdHVhbCBpbml0aWFsXG4gKiBzdGF0ZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGlzIGEgdGVjaG5vbG9neSBwcmV2aWV3XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVTaWduYWw6IFVzZVNpZ25hbCA9IDxTVEFURT4oaW5pdGlhbFN0YXRlPzogU1RBVEUpOiBTaWduYWw8U1RBVEU+ID0+IHtcbiAgY29uc3QgY29udGFpbmVyU3RhdGUgPSB1c2VDb250YWluZXJTdGF0ZSgpO1xuICBjb25zdCB2YWx1ZSA9XG4gICAgaXNGdW5jdGlvbihpbml0aWFsU3RhdGUpICYmICFpc1F3aWtDb21wb25lbnQoaW5pdGlhbFN0YXRlKVxuICAgICAgPyBpbnZva2UodW5kZWZpbmVkLCBpbml0aWFsU3RhdGUgYXMgYW55KVxuICAgICAgOiBpbml0aWFsU3RhdGU7XG4gIHJldHVybiBfY3JlYXRlU2lnbmFsKHZhbHVlLCBjb250YWluZXJTdGF0ZSwgMCkgYXMgU2lnbmFsPFNUQVRFPjtcbn07XG5cbi8qKlxuICogU3RvcmVzIGEgdmFsdWUgd2hpY2ggaXMgcmV0YWluZWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgY29tcG9uZW50LlxuICpcbiAqIElmIHRoZSB2YWx1ZSBpcyBhIGZ1bmN0aW9uLCB0aGUgZnVuY3Rpb24gaXMgaW52b2tlZCB0byBjYWxjdWxhdGUgdGhlIGFjdHVhbCB2YWx1ZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGlzIGEgdGVjaG5vbG9neSBwcmV2aWV3XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VDb25zdGFudCA9IDxUPih2YWx1ZTogKCgpID0+IFQpIHwgVCk6IFQgPT4ge1xuICBjb25zdCB7IHZhbCwgc2V0IH0gPSB1c2VTZXF1ZW50aWFsU2NvcGU8VD4oKTtcbiAgaWYgKHZhbCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuICAvLyBOb3RlOiBXZSBhcmUgbm90IHVzaW5nIGBpbnZva2VgIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsZWFyIHRoZSBjb250ZXh0XG4gIHZhbHVlID0gaXNGdW5jdGlvbih2YWx1ZSkgJiYgIWlzUXdpa0NvbXBvbmVudCh2YWx1ZSkgPyB2YWx1ZSgpIDogdmFsdWU7XG4gIHJldHVybiBzZXQodmFsdWUgYXMgVCk7XG59O1xuXG4vKipcbiAqIEhvb2sgdGhhdCBjcmVhdGVzIGEgc2lnbmFsIHRoYXQgaXMgcmV0YWluZWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgY29tcG9uZW50LlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHVzZVNpZ25hbDogVXNlU2lnbmFsID0gKGluaXRpYWxTdGF0ZT86IGFueSkgPT4ge1xuICByZXR1cm4gdXNlQ29uc3RhbnQoKCkgPT4gY3JlYXRlU2lnbmFsKGluaXRpYWxTdGF0ZSkpO1xufTtcbiJdfQ==","import { intToStr, strToInt } from '../container/container';\nimport { assertDefined, assertEqual } from '../error/assert';\nimport { codeToText, QError_trackUseStore } from '../error/error';\nimport { isServerPlatform } from '../platform/platform';\nimport { assertQrl, assertSignal, createQRL } from '../qrl/qrl-class';\nimport { _hW, notifyTask } from '../render/dom/notify-render';\nimport { handleError } from '../render/error-handling';\nimport { getSubscriptionManager, noSerialize, unwrapProxy, } from '../state/common';\nimport { QObjectManagerSymbol } from '../state/constants';\nimport { getContext } from '../state/context';\nimport { _createSignal, isSignal, QObjectSignalFlags, SIGNAL_IMMUTABLE, SIGNAL_UNASSIGNED, } from '../state/signal';\nimport { implicit$FirstArg } from '../util/implicit_dollar';\nimport { logError, logErrorAndStop, logOnceWarn } from '../util/log';\nimport { ComputedEvent, TaskEvent } from '../util/markers';\nimport { delay, isPromise, maybeThen, safeCall } from '../util/promises';\nimport { isFunction, isObject } from '../util/types';\nimport { invoke, newInvokeContext, untrack, useInvokeContext, waitAndRun } from './use-core';\nimport { useOn, useOnDocument } from './use-on';\nimport { useSequentialScope } from './use-sequential-scope';\nimport { useConstant } from './use-signal';\nexport const TaskFlagsIsVisibleTask = 1 << 0;\nexport const TaskFlagsIsTask = 1 << 1;\nexport const TaskFlagsIsResource = 1 << 2;\nexport const TaskFlagsIsComputed = 1 << 3;\nexport const TaskFlagsIsDirty = 1 << 4;\nexport const TaskFlagsIsCleanup = 1 << 5;\n// <docs markdown=\"../readme.md#useTask\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useTask instead)\n/**\n * Reruns the `taskFn` when the observed inputs change.\n *\n * Use `useTask` to observe changes on a set of inputs, and then re-execute the `taskFn` when those\n * inputs change.\n *\n * The `taskFn` only executes if the observed inputs change. To observe the inputs, use the `obs`\n * function to wrap property reads. This creates subscriptions that will trigger the `taskFn` to\n * rerun.\n *\n * @param task - Function which should be re-executed when changes to the inputs are detected\n * @public\n *\n * ### Example\n *\n * The `useTask` function is used to observe the `store.count` property. Any changes to the\n * `store.count` cause the `taskFn` to execute which in turn updates the `store.doubleCount` to\n * the double of `store.count`.\n *\n * ```tsx\n * const Cmp = component$(() => {\n *   const store = useStore({\n *     count: 0,\n *     doubleCount: 0,\n *     debounced: 0,\n *   });\n *\n *   // Double count task\n *   useTask$(({ track }) => {\n *     const count = track(() => store.count);\n *     store.doubleCount = 2 * count;\n *   });\n *\n *   // Debouncer task\n *   useTask$(({ track }) => {\n *     const doubleCount = track(() => store.doubleCount);\n *     const timer = setTimeout(() => {\n *       store.debounced = doubleCount;\n *     }, 2000);\n *     return () => {\n *       clearTimeout(timer);\n *     };\n *   });\n *   return (\n *     <div>\n *       <div>\n *         {store.count} / {store.doubleCount}\n *       </div>\n *       <div>{store.debounced}</div>\n *     </div>\n *   );\n * });\n * ```\n *\n * @public\n * @see `Tracker`\n */\n// </docs>\nexport const useTaskQrl = (qrl, opts) => {\n    const { val, set, iCtx, i, elCtx } = useSequentialScope();\n    if (val) {\n        return;\n    }\n    assertQrl(qrl);\n    const containerState = iCtx.$renderCtx$.$static$.$containerState$;\n    const task = new Task(TaskFlagsIsDirty | TaskFlagsIsTask, i, elCtx.$element$, qrl, undefined);\n    set(true);\n    qrl.$resolveLazy$(containerState.$containerEl$);\n    if (!elCtx.$tasks$) {\n        elCtx.$tasks$ = [];\n    }\n    elCtx.$tasks$.push(task);\n    waitAndRun(iCtx, () => runTask(task, containerState, iCtx.$renderCtx$));\n    if (isServerPlatform()) {\n        useRunTask(task, opts?.eagerness);\n    }\n};\n/** @public */\nexport const createComputedQrl = (qrl) => {\n    assertQrl(qrl);\n    const iCtx = useInvokeContext();\n    const hostElement = iCtx.$hostElement$;\n    const containerState = iCtx.$renderCtx$.$static$.$containerState$;\n    const elCtx = getContext(hostElement, containerState);\n    const signal = _createSignal(undefined, containerState, SIGNAL_UNASSIGNED | SIGNAL_IMMUTABLE, undefined);\n    const task = new Task(TaskFlagsIsDirty | TaskFlagsIsTask | TaskFlagsIsComputed, \n    // Computed signals should update immediately\n    0, elCtx.$element$, qrl, signal);\n    qrl.$resolveLazy$(containerState.$containerEl$);\n    (elCtx.$tasks$ ||= []).push(task);\n    waitAndRun(iCtx, () => runComputed(task, containerState, iCtx.$renderCtx$));\n    return signal;\n};\n/** @public */\nexport const useComputedQrl = (qrl) => {\n    return useConstant(() => createComputedQrl(qrl));\n};\n/**\n * Returns a computed signal which is calculated from the given function. A computed signal is a\n * signal which is calculated from other signals. When the signals change, the computed signal is\n * recalculated, and if the result changed, all tasks which are tracking the signal will be re-run\n * and all components that read the signal will be re-rendered.\n *\n * The function must be synchronous and must not have any side effects.\n *\n * Async functions are deprecated because:\n *\n * - When calculating the first time, it will see it's a promise and it will restart the render\n *   function.\n * - Qwik can't track used signals after the first await, which leads to subtle bugs.\n * - Both `useTask$` and `useResource$` are available, without these problems.\n *\n * In v2, async functions won't work.\n *\n * @public\n */\nexport const useComputed$ = implicit$FirstArg(useComputedQrl);\n/**\n * Returns read-only signal that updates when signals used in the `ComputedFn` change. Unlike\n * useComputed$, this is not a hook and it always creates a new signal.\n *\n * @deprecated This is a technology preview\n * @public\n */\nexport const createComputed$ = implicit$FirstArg(createComputedQrl);\n// <docs markdown=\"../readme.md#useTask\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useTask instead)\n/**\n * Reruns the `taskFn` when the observed inputs change.\n *\n * Use `useTask` to observe changes on a set of inputs, and then re-execute the `taskFn` when those\n * inputs change.\n *\n * The `taskFn` only executes if the observed inputs change. To observe the inputs, use the `obs`\n * function to wrap property reads. This creates subscriptions that will trigger the `taskFn` to\n * rerun.\n *\n * @param task - Function which should be re-executed when changes to the inputs are detected\n * @public\n *\n * ### Example\n *\n * The `useTask` function is used to observe the `store.count` property. Any changes to the\n * `store.count` cause the `taskFn` to execute which in turn updates the `store.doubleCount` to\n * the double of `store.count`.\n *\n * ```tsx\n * const Cmp = component$(() => {\n *   const store = useStore({\n *     count: 0,\n *     doubleCount: 0,\n *     debounced: 0,\n *   });\n *\n *   // Double count task\n *   useTask$(({ track }) => {\n *     const count = track(() => store.count);\n *     store.doubleCount = 2 * count;\n *   });\n *\n *   // Debouncer task\n *   useTask$(({ track }) => {\n *     const doubleCount = track(() => store.doubleCount);\n *     const timer = setTimeout(() => {\n *       store.debounced = doubleCount;\n *     }, 2000);\n *     return () => {\n *       clearTimeout(timer);\n *     };\n *   });\n *   return (\n *     <div>\n *       <div>\n *         {store.count} / {store.doubleCount}\n *       </div>\n *       <div>{store.debounced}</div>\n *     </div>\n *   );\n * });\n * ```\n *\n * @public\n * @see `Tracker`\n */\n// </docs>\nexport const useTask$ = /*#__PURE__*/ implicit$FirstArg(useTaskQrl);\n// <docs markdown=\"../readme.md#useVisibleTask\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useVisibleTask instead)\n/**\n * ```tsx\n * const Timer = component$(() => {\n *   const store = useStore({\n *     count: 0,\n *   });\n *\n *   useVisibleTask$(() => {\n *     // Only runs in the client\n *     const timer = setInterval(() => {\n *       store.count++;\n *     }, 500);\n *     return () => {\n *       clearInterval(timer);\n *     };\n *   });\n *\n *   return <div>{store.count}</div>;\n * });\n * ```\n *\n * @public\n */\n// </docs>\nexport const useVisibleTaskQrl = (qrl, opts) => {\n    const { val, set, i, iCtx, elCtx } = useSequentialScope();\n    const eagerness = opts?.strategy ?? 'intersection-observer';\n    if (val) {\n        if (isServerPlatform()) {\n            useRunTask(val, eagerness);\n        }\n        return;\n    }\n    assertQrl(qrl);\n    const task = new Task(TaskFlagsIsVisibleTask, i, elCtx.$element$, qrl, undefined);\n    const containerState = iCtx.$renderCtx$.$static$.$containerState$;\n    if (!elCtx.$tasks$) {\n        elCtx.$tasks$ = [];\n    }\n    elCtx.$tasks$.push(task);\n    set(task);\n    useRunTask(task, eagerness);\n    if (!isServerPlatform()) {\n        qrl.$resolveLazy$(containerState.$containerEl$);\n        notifyTask(task, containerState);\n    }\n};\n// <docs markdown=\"../readme.md#useVisibleTask\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useVisibleTask instead)\n/**\n * ```tsx\n * const Timer = component$(() => {\n *   const store = useStore({\n *     count: 0,\n *   });\n *\n *   useVisibleTask$(() => {\n *     // Only runs in the client\n *     const timer = setInterval(() => {\n *       store.count++;\n *     }, 500);\n *     return () => {\n *       clearInterval(timer);\n *     };\n *   });\n *\n *   return <div>{store.count}</div>;\n * });\n * ```\n *\n * @public\n */\n// </docs>\nexport const useVisibleTask$ = /*#__PURE__*/ implicit$FirstArg(useVisibleTaskQrl);\nexport const isResourceTask = (task) => {\n    return (task.$flags$ & TaskFlagsIsResource) !== 0;\n};\nexport const isComputedTask = (task) => {\n    return (task.$flags$ & TaskFlagsIsComputed) !== 0;\n};\nexport const runSubscriber = async (task, containerState, rCtx) => {\n    assertEqual(!!(task.$flags$ & TaskFlagsIsDirty), true, 'Resource is not dirty', task);\n    if (isResourceTask(task)) {\n        return runResource(task, containerState, rCtx);\n    }\n    else if (isComputedTask(task)) {\n        return runComputed(task, containerState, rCtx);\n    }\n    else {\n        return runTask(task, containerState, rCtx);\n    }\n};\nexport const runResource = (task, containerState, rCtx, waitOn) => {\n    task.$flags$ &= ~TaskFlagsIsDirty;\n    cleanupTask(task);\n    const el = task.$el$;\n    const iCtx = newInvokeContext(rCtx.$static$.$locale$, el, undefined, TaskEvent);\n    const { $subsManager$: subsManager } = containerState;\n    iCtx.$renderCtx$ = rCtx;\n    const taskFn = task.$qrl$.getFn(iCtx, () => {\n        subsManager.$clearSub$(task);\n    });\n    const cleanups = [];\n    const resource = task.$state$;\n    assertDefined(resource, 'useResource: when running a resource, \"task.r\" must be a defined.', task);\n    const track = (obj, prop) => {\n        if (isFunction(obj)) {\n            const ctx = newInvokeContext();\n            ctx.$renderCtx$ = rCtx;\n            ctx.$subscriber$ = [0, task];\n            return invoke(ctx, obj);\n        }\n        const manager = getSubscriptionManager(obj);\n        if (manager) {\n            manager.$addSub$([0, task], prop);\n        }\n        else {\n            logErrorAndStop(codeToText(QError_trackUseStore), obj);\n        }\n        if (prop) {\n            return obj[prop];\n        }\n        else if (isSignal(obj)) {\n            return obj.value;\n        }\n        else {\n            return obj;\n        }\n    };\n    const resourceTarget = unwrapProxy(resource);\n    const opts = {\n        track,\n        cleanup(callback) {\n            cleanups.push(callback);\n        },\n        cache(policy) {\n            let milliseconds = 0;\n            if (policy === 'immutable') {\n                milliseconds = Infinity;\n            }\n            else {\n                milliseconds = policy;\n            }\n            resource._cache = milliseconds;\n        },\n        previous: resourceTarget._resolved,\n    };\n    let resolve;\n    let reject;\n    let done = false;\n    const setState = (resolved, value) => {\n        if (!done) {\n            done = true;\n            if (resolved) {\n                done = true;\n                resource.loading = false;\n                resource._state = 'resolved';\n                resource._resolved = value;\n                resource._error = undefined;\n                resolve(value);\n            }\n            else {\n                done = true;\n                resource.loading = false;\n                resource._state = 'rejected';\n                resource._error = value;\n                reject(value);\n            }\n            return true;\n        }\n        return false;\n    };\n    // Execute mutation inside empty invocation\n    invoke(iCtx, () => {\n        resource._state = 'pending';\n        resource.loading = !isServerPlatform();\n        resource.value = new Promise((r, re) => {\n            resolve = r;\n            reject = re;\n        });\n    });\n    task.$destroy$ = noSerialize(() => {\n        done = true;\n        cleanups.forEach((fn) => fn());\n    });\n    const promise = safeCall(() => maybeThen(waitOn, () => taskFn(opts)), (value) => {\n        setState(true, value);\n    }, (reason) => {\n        setState(false, reason);\n    });\n    const timeout = resourceTarget._timeout;\n    if (timeout > 0) {\n        return Promise.race([\n            promise,\n            delay(timeout).then(() => {\n                if (setState(false, new Error('timeout'))) {\n                    cleanupTask(task);\n                }\n            }),\n        ]);\n    }\n    return promise;\n};\nexport const runTask = (task, containerState, rCtx) => {\n    task.$flags$ &= ~TaskFlagsIsDirty;\n    cleanupTask(task);\n    const hostElement = task.$el$;\n    const iCtx = newInvokeContext(rCtx.$static$.$locale$, hostElement, undefined, TaskEvent);\n    iCtx.$renderCtx$ = rCtx;\n    const { $subsManager$: subsManager } = containerState;\n    const taskFn = task.$qrl$.getFn(iCtx, () => {\n        subsManager.$clearSub$(task);\n    });\n    const track = (obj, prop) => {\n        if (isFunction(obj)) {\n            const ctx = newInvokeContext();\n            ctx.$subscriber$ = [0, task];\n            return invoke(ctx, obj);\n        }\n        const manager = getSubscriptionManager(obj);\n        if (manager) {\n            manager.$addSub$([0, task], prop);\n        }\n        else {\n            logErrorAndStop(codeToText(QError_trackUseStore), obj);\n        }\n        if (prop) {\n            return obj[prop];\n        }\n        else if (isSignal(obj)) {\n            return obj.value;\n        }\n        else {\n            return obj;\n        }\n    };\n    const cleanups = [];\n    task.$destroy$ = noSerialize(() => {\n        cleanups.forEach((fn) => fn());\n    });\n    const opts = {\n        track,\n        cleanup(callback) {\n            cleanups.push(callback);\n        },\n    };\n    return safeCall(() => taskFn(opts), (returnValue) => {\n        if (isFunction(returnValue)) {\n            cleanups.push(returnValue);\n        }\n    }, (reason) => {\n        handleError(reason, hostElement, rCtx);\n    });\n};\nexport const runComputed = (task, containerState, rCtx) => {\n    assertSignal(task.$state$);\n    task.$flags$ &= ~TaskFlagsIsDirty;\n    cleanupTask(task);\n    const hostElement = task.$el$;\n    const iCtx = newInvokeContext(rCtx.$static$.$locale$, hostElement, undefined, ComputedEvent);\n    iCtx.$subscriber$ = [0, task];\n    iCtx.$renderCtx$ = rCtx;\n    const { $subsManager$: subsManager } = containerState;\n    const taskFn = task.$qrl$.getFn(iCtx, () => {\n        subsManager.$clearSub$(task);\n    });\n    const ok = (returnValue) => {\n        untrack(() => {\n            const signal = task.$state$;\n            signal[QObjectSignalFlags] &= ~SIGNAL_UNASSIGNED;\n            if (signal.untrackedValue !== returnValue) {\n                signal.untrackedValue = returnValue;\n                signal[QObjectManagerSymbol].$notifySubs$();\n            }\n        });\n    };\n    const fail = (reason) => {\n        handleError(reason, hostElement, rCtx);\n    };\n    try {\n        return maybeThen(task.$qrl$.$resolveLazy$(containerState.$containerEl$), () => {\n            const result = taskFn();\n            if (isPromise(result)) {\n                const warningMessage = 'useComputed$: Async functions in computed tasks are deprecated and will stop working in v2. Use useTask$ or useResource$ instead.';\n                const stack = new Error(warningMessage).stack;\n                if (!stack) {\n                    logOnceWarn(warningMessage);\n                }\n                else {\n                    const lessScaryStack = stack.replace(/^Error:\\s*/, '');\n                    logOnceWarn(lessScaryStack);\n                }\n                return result.then(ok, fail);\n            }\n            else {\n                ok(result);\n            }\n        });\n    }\n    catch (reason) {\n        fail(reason);\n    }\n};\nexport const cleanupTask = (task) => {\n    const destroy = task.$destroy$;\n    if (destroy) {\n        task.$destroy$ = undefined;\n        try {\n            destroy();\n        }\n        catch (err) {\n            logError(err);\n        }\n    }\n};\nexport const destroyTask = (task) => {\n    if (task.$flags$ & TaskFlagsIsCleanup) {\n        task.$flags$ &= ~TaskFlagsIsCleanup;\n        const cleanup = task.$qrl$;\n        cleanup();\n    }\n    else {\n        cleanupTask(task);\n    }\n};\nconst useRunTask = (task, eagerness) => {\n    if (eagerness === 'visible' || eagerness === 'intersection-observer') {\n        useOn('qvisible', getTaskHandlerQrl(task));\n    }\n    else if (eagerness === 'load' || eagerness === 'document-ready') {\n        useOnDocument('qinit', getTaskHandlerQrl(task));\n    }\n    else if (eagerness === 'idle' || eagerness === 'document-idle') {\n        useOnDocument('qidle', getTaskHandlerQrl(task));\n    }\n};\nconst getTaskHandlerQrl = (task) => {\n    const taskQrl = task.$qrl$;\n    const taskHandler = createQRL(taskQrl.$chunk$, '_hW', _hW, null, null, [task], taskQrl.$symbol$);\n    // Needed for chunk lookup in dev mode\n    if (taskQrl.dev) {\n        taskHandler.dev = taskQrl.dev;\n    }\n    return taskHandler;\n};\nexport const isTaskCleanup = (obj) => {\n    return isSubscriberDescriptor(obj) && !!(obj.$flags$ & TaskFlagsIsCleanup);\n};\nexport const isSubscriberDescriptor = (obj) => {\n    return isObject(obj) && obj instanceof Task;\n};\nexport const serializeTask = (task, getObjId) => {\n    let value = `${intToStr(task.$flags$)} ${intToStr(task.$index$)} ${getObjId(task.$qrl$)} ${getObjId(task.$el$)}`;\n    if (task.$state$) {\n        value += ` ${getObjId(task.$state$)}`;\n    }\n    return value;\n};\nexport const parseTask = (data) => {\n    const [flags, index, qrl, el, resource] = data.split(' ');\n    return new Task(strToInt(flags), strToInt(index), el, qrl, resource);\n};\nexport class Task {\n    $flags$;\n    $index$;\n    $el$;\n    $qrl$;\n    $state$;\n    constructor($flags$, $index$, $el$, $qrl$, $state$) {\n        this.$flags$ = $flags$;\n        this.$index$ = $index$;\n        this.$el$ = $el$;\n        this.$qrl$ = $qrl$;\n        this.$state$ = $state$;\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXRhc2suanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvdXNlL3VzZS10YXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFxQixRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQW9CLE1BQU0sa0JBQWtCLENBQUM7QUFFeEYsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkQsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixXQUFXLEVBRVgsV0FBVyxHQUNaLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFDTCxhQUFhLEVBQ2IsUUFBUSxFQUNSLGtCQUFrQixFQUdsQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEdBRWxCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7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TCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ29udGFpbmVyU3RhdGUsIGludFRvU3RyLCB0eXBlIE11c3RHZXRPYmpJRCwgc3RyVG9JbnQgfSBmcm9tICcuLi9jb250YWluZXIvY29udGFpbmVyJztcbmltcG9ydCB7IGFzc2VydERlZmluZWQsIGFzc2VydEVxdWFsIH0gZnJvbSAnLi4vZXJyb3IvYXNzZXJ0JztcbmltcG9ydCB7IGNvZGVUb1RleHQsIFFFcnJvcl90cmFja1VzZVN0b3JlIH0gZnJvbSAnLi4vZXJyb3IvZXJyb3InO1xuaW1wb3J0IHsgaXNTZXJ2ZXJQbGF0Zm9ybSB9IGZyb20gJy4uL3BsYXRmb3JtL3BsYXRmb3JtJztcbmltcG9ydCB7IGFzc2VydFFybCwgYXNzZXJ0U2lnbmFsLCBjcmVhdGVRUkwsIHR5cGUgUVJMSW50ZXJuYWwgfSBmcm9tICcuLi9xcmwvcXJsLWNsYXNzJztcbmltcG9ydCB0eXBlIHsgUVJMIH0gZnJvbSAnLi4vcXJsL3FybC5wdWJsaWMnO1xuaW1wb3J0IHsgX2hXLCBub3RpZnlUYXNrIH0gZnJvbSAnLi4vcmVuZGVyL2RvbS9ub3RpZnktcmVuZGVyJztcbmltcG9ydCB0eXBlIHsgUXdpa0VsZW1lbnQgfSBmcm9tICcuLi9yZW5kZXIvZG9tL3ZpcnR1YWwtZWxlbWVudCc7XG5pbXBvcnQgeyBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3JlbmRlci9lcnJvci1oYW5kbGluZyc7XG5pbXBvcnQgdHlwZSB7IFJlbmRlckNvbnRleHQgfSBmcm9tICcuLi9yZW5kZXIvdHlwZXMnO1xuaW1wb3J0IHtcbiAgZ2V0U3Vic2NyaXB0aW9uTWFuYWdlcixcbiAgbm9TZXJpYWxpemUsXG4gIHR5cGUgTm9TZXJpYWxpemUsXG4gIHVud3JhcFByb3h5LFxufSBmcm9tICcuLi9zdGF0ZS9jb21tb24nO1xuaW1wb3J0IHsgUU9iamVjdE1hbmFnZXJTeW1ib2wgfSBmcm9tICcuLi9zdGF0ZS9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0Q29udGV4dCB9IGZyb20gJy4uL3N0YXRlL2NvbnRleHQnO1xuaW1wb3J0IHtcbiAgX2NyZWF0ZVNpZ25hbCxcbiAgaXNTaWduYWwsXG4gIFFPYmplY3RTaWduYWxGbGFncyxcbiAgdHlwZSBSZWFkb25seVNpZ25hbCxcbiAgdHlwZSBTaWduYWwsXG4gIFNJR05BTF9JTU1VVEFCTEUsXG4gIFNJR05BTF9VTkFTU0lHTkVELFxuICB0eXBlIFNpZ25hbEludGVybmFsLFxufSBmcm9tICcuLi9zdGF0ZS9zaWduYWwnO1xuaW1wb3J0IHsgaW1wbGljaXQkRmlyc3RBcmcgfSBmcm9tICcuLi91dGlsL2ltcGxpY2l0X2RvbGxhcic7XG5pbXBvcnQgeyBsb2dFcnJvciwgbG9nRXJyb3JBbmRTdG9wLCBsb2dPbmNlV2FybiB9IGZyb20gJy4uL3V0aWwvbG9nJztcbmltcG9ydCB7IENvbXB1dGVkRXZlbnQsIFRhc2tFdmVudCB9IGZyb20gJy4uL3V0aWwvbWFya2Vycyc7XG5pbXBvcnQgeyBkZWxheSwgaXNQcm9taXNlLCBtYXliZVRoZW4sIHNhZmVDYWxsIH0gZnJvbSAnLi4vdXRpbC9wcm9taXNlcyc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uLCBpc09iamVjdCwgdHlwZSBWYWx1ZU9yUHJvbWlzZSB9IGZyb20gJy4uL3V0aWwvdHlwZXMnO1xuaW1wb3J0IHsgaW52b2tlLCBuZXdJbnZva2VDb250ZXh0LCB1bnRyYWNrLCB1c2VJbnZva2VDb250ZXh0LCB3YWl0QW5kUnVuIH0gZnJvbSAnLi91c2UtY29yZSc7XG5pbXBvcnQgeyB1c2VPbiwgdXNlT25Eb2N1bWVudCB9IGZyb20gJy4vdXNlLW9uJztcbmltcG9ydCB7IHVzZVNlcXVlbnRpYWxTY29wZSB9IGZyb20gJy4vdXNlLXNlcXVlbnRpYWwtc2NvcGUnO1xuaW1wb3J0IHsgdXNlQ29uc3RhbnQgfSBmcm9tICcuL3VzZS1zaWduYWwnO1xuXG5leHBvcnQgY29uc3QgVGFza0ZsYWdzSXNWaXNpYmxlVGFzayA9IDEgPDwgMDtcbmV4cG9ydCBjb25zdCBUYXNrRmxhZ3NJc1Rhc2sgPSAxIDw8IDE7XG5leHBvcnQgY29uc3QgVGFza0ZsYWdzSXNSZXNvdXJjZSA9IDEgPDwgMjtcbmV4cG9ydCBjb25zdCBUYXNrRmxhZ3NJc0NvbXB1dGVkID0gMSA8PCAzO1xuZXhwb3J0IGNvbnN0IFRhc2tGbGFnc0lzRGlydHkgPSAxIDw8IDQ7XG5leHBvcnQgY29uc3QgVGFza0ZsYWdzSXNDbGVhbnVwID0gMSA8PCA1O1xuXG4vLyA8ZG9jcyBtYXJrZG93bj1cIi4uL3JlYWRtZS5tZCNUcmFja2VyXCI+XG4vLyAhIURPIE5PVCBFRElUIFRISVMgQ09NTUVOVCBESVJFQ1RMWSEhIVxuLy8gKGVkaXQgLi4vcmVhZG1lLm1kI1RyYWNrZXIgaW5zdGVhZClcbi8qKlxuICogVXNlZCB0byBzaWduYWwgdG8gUXdpayB3aGljaCBzdGF0ZSBzaG91bGQgYmUgd2F0Y2hlZCBmb3IgY2hhbmdlcy5cbiAqXG4gKiBUaGUgYFRyYWNrZXJgIGlzIHBhc3NlZCBpbnRvIHRoZSBgdGFza0ZuYCBvZiBgdXNlVGFza2AuIEl0IGlzIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gd3JhcCBzdGF0ZVxuICogb2JqZWN0cyBpbiBhIHJlYWQgcHJveHkgd2hpY2ggc2lnbmFscyB0byBRd2lrIHdoaWNoIHByb3BlcnRpZXMgc2hvdWxkIGJlIHdhdGNoZWQgZm9yIGNoYW5nZXMuIEFcbiAqIGNoYW5nZSB0byBhbnkgb2YgdGhlIHByb3BlcnRpZXMgY2F1c2VzIHRoZSBgdGFza0ZuYCB0byByZXJ1bi5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIFRoZSBgb2JzYCBwYXNzZWQgaW50byB0aGUgYHRhc2tGbmAgaXMgdXNlZCB0byBtYXJrIGBzdGF0ZS5jb3VudGAgYXMgYSBwcm9wZXJ0eSBvZiBpbnRlcmVzdC4gQW55XG4gKiBjaGFuZ2VzIHRvIHRoZSBgc3RhdGUuY291bnRgIHByb3BlcnR5IHdpbGwgY2F1c2UgdGhlIGB0YXNrRm5gIHRvIHJlcnVuLlxuICpcbiAqIGBgYHRzeFxuICogY29uc3QgQ21wID0gY29tcG9uZW50JCgoKSA9PiB7XG4gKiAgIGNvbnN0IHN0b3JlID0gdXNlU3RvcmUoeyBjb3VudDogMCwgZG91YmxlQ291bnQ6IDAgfSk7XG4gKiAgIGNvbnN0IHNpZ25hbCA9IHVzZVNpZ25hbCgwKTtcbiAqICAgdXNlVGFzayQoKHsgdHJhY2sgfSkgPT4ge1xuICogICAgIC8vIEFueSBzaWduYWxzIG9yIHN0b3JlcyBhY2Nlc3NlZCBpbnNpZGUgdGhlIHRhc2sgd2lsbCBiZSB0cmFja2VkXG4gKiAgICAgY29uc3QgY291bnQgPSB0cmFjaygoKSA9PiBzdG9yZS5jb3VudCk7XG4gKiAgICAgLy8gWW91IGNhbiBhbHNvIHBhc3MgYSBzaWduYWwgdG8gdHJhY2soKSBkaXJlY3RseVxuICogICAgIGNvbnN0IHNpZ25hbENvdW50ID0gdHJhY2soc2lnbmFsKTtcbiAqICAgICBzdG9yZS5kb3VibGVDb3VudCA9IGNvdW50ICsgc2lnbmFsQ291bnQ7XG4gKiAgIH0pO1xuICogICByZXR1cm4gKFxuICogICAgIDxkaXY+XG4gKiAgICAgICA8c3Bhbj5cbiAqICAgICAgICAge3N0b3JlLmNvdW50fSAvIHtzdG9yZS5kb3VibGVDb3VudH1cbiAqICAgICAgIDwvc3Bhbj5cbiAqICAgICAgIDxidXR0b25cbiAqICAgICAgICAgb25DbGljayQ9eygpID0+IHtcbiAqICAgICAgICAgICBzdG9yZS5jb3VudCsrO1xuICogICAgICAgICAgIHNpZ25hbC52YWx1ZSsrO1xuICogICAgICAgICB9fVxuICogICAgICAgPlxuICogICAgICAgICArXG4gKiAgICAgICA8L2J1dHRvbj5cbiAqICAgICA8L2Rpdj5cbiAqICAgKTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHB1YmxpY1xuICogQHNlZSBgdXNlVGFza2BcbiAqL1xuLy8gPC9kb2NzPlxuZXhwb3J0IGludGVyZmFjZSBUcmFja2VyIHtcbiAgLyoqXG4gICAqIEluY2x1ZGUgdGhlIGV4cHJlc3Npb24gdXNpbmcgc3RvcmVzIC8gc2lnbmFscyB0byB0cmFjazpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIHRyYWNrKCgpID0+IHN0b3JlLmNvdW50KTtcbiAgICogYGBgXG4gICAqXG4gICAqIFRoZSBgdHJhY2soKWAgZnVuY3Rpb24gYWxzbyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgc2NvcGVkIGV4cHJlc3Npb246XG4gICAqXG4gICAqIGBgYHRzeFxuICAgKiBjb25zdCBjb3VudCA9IHRyYWNrKCgpID0+IHN0b3JlLmNvdW50KTtcbiAgICogYGBgXG4gICAqL1xuICA8VD4oZm46ICgpID0+IFQpOiBUO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHRyYWNrIHRoZSB3aG9sZSBvYmplY3QuIElmIGFueSBwcm9wZXJ0eSBvZiB0aGUgcGFzc2VkIHN0b3JlIGNoYW5nZXMsIHRoZSB0YXNrIHdpbGwgYmVcbiAgICogc2NoZWR1bGVkIHRvIHJ1bi4gQWxzbyBhY2NlcHRzIHNpZ25hbHMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgY2hhbmdlIHRyYWNraW5nIGlzIG5vdCBkZWVwLiBJZiB5b3Ugd2FudCB0byB0cmFjayBjaGFuZ2VzIHRvIG5lc3RlZCBwcm9wZXJ0aWVzLFxuICAgKiB5b3UgbmVlZCB0byB1c2UgYHRyYWNrYCBvbiBlYWNoIG9mIHRoZW0uXG4gICAqXG4gICAqIGBgYHRzeFxuICAgKiB0cmFjayhzdG9yZSk7IC8vIHJldHVybnMgc3RvcmVcbiAgICogdHJhY2soc2lnbmFsKTsgLy8gcmV0dXJucyBzaWduYWwudmFsdWVcbiAgICogYGBgXG4gICAqL1xuICA8VCBleHRlbmRzIG9iamVjdD4ob2JqOiBUKTogVCBleHRlbmRzIFNpZ25hbDxpbmZlciBVPiA/IFUgOiBUO1xufVxuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXNrQ3R4IHtcbiAgdHJhY2s6IFRyYWNrZXI7XG4gIGNsZWFudXAoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkO1xufVxuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZUN0eDxUPiB7XG4gIHJlYWRvbmx5IHRyYWNrOiBUcmFja2VyO1xuICBjbGVhbnVwKGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZDtcbiAgY2FjaGUocG9saWN5T3JNaWxsaXNlY29uZHM6IG51bWJlciB8ICdpbW11dGFibGUnKTogdm9pZDtcbiAgcmVhZG9ubHkgcHJldmlvdXM6IFQgfCB1bmRlZmluZWQ7XG59XG5cbi8qKiBAcHVibGljICovXG5leHBvcnQgdHlwZSBUYXNrRm4gPSAoY3R4OiBUYXNrQ3R4KSA9PiBWYWx1ZU9yUHJvbWlzZTx2b2lkIHwgKCgpID0+IHZvaWQpPjtcblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCB0eXBlIENvbXB1dGVkRm48VD4gPSAoKSA9PiBUO1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VGbjxUPiA9IChjdHg6IFJlc291cmNlQ3R4PHVua25vd24+KSA9PiBWYWx1ZU9yUHJvbWlzZTxUPjtcblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCB0eXBlIFJlc291cmNlUmV0dXJuPFQ+ID0gUmVzb3VyY2VQZW5kaW5nPFQ+IHwgUmVzb3VyY2VSZXNvbHZlZDxUPiB8IFJlc291cmNlUmVqZWN0ZWQ8VD47XG5cbi8qKiBAcHVibGljICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUGVuZGluZzxUPiB7XG4gIHJlYWRvbmx5IHZhbHVlOiBQcm9taXNlPFQ+O1xuICByZWFkb25seSBsb2FkaW5nOiBib29sZWFuO1xufVxuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVJlc29sdmVkPFQ+IHtcbiAgcmVhZG9ubHkgdmFsdWU6IFByb21pc2U8VD47XG4gIHJlYWRvbmx5IGxvYWRpbmc6IGJvb2xlYW47XG59XG5cbi8qKiBAcHVibGljICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUmVqZWN0ZWQ8VD4ge1xuICByZWFkb25seSB2YWx1ZTogUHJvbWlzZTxUPjtcbiAgcmVhZG9ubHkgbG9hZGluZzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVJldHVybkludGVybmFsPFQ+IHtcbiAgX19icmFuZDogJ3Jlc291cmNlJztcbiAgX3N0YXRlOiAncGVuZGluZycgfCAncmVzb2x2ZWQnIHwgJ3JlamVjdGVkJztcbiAgX3Jlc29sdmVkOiBUIHwgdW5kZWZpbmVkO1xuICBfZXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xuICBfY2FjaGU6IG51bWJlcjtcbiAgX3RpbWVvdXQ6IG51bWJlcjtcbiAgdmFsdWU6IFByb21pc2U8VD47XG4gIGxvYWRpbmc6IGJvb2xlYW47XG59XG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdG9yQmFzZTxUID0gdW5rbm93biwgQiA9IHVua25vd24+IHtcbiAgJHFybCQ6IFFSTEludGVybmFsPFQ+O1xuICAkZWwkOiBRd2lrRWxlbWVudDtcbiAgJGZsYWdzJDogbnVtYmVyO1xuICAkaW5kZXgkOiBudW1iZXI7XG4gICRkZXN0cm95JD86IE5vU2VyaWFsaXplPCgpID0+IHZvaWQ+O1xuICAkc3RhdGUkOiBCIHwgdW5kZWZpbmVkO1xufVxuXG4vKiogQHB1YmxpYyBAZGVwcmVjYXRlZCB1c2UgdXNlVmlzaWJsZVRhc2skIG9yIHVzZVJlc291cmNlJCwgdXNlVGFzayQgaXMgZm9yIHJ1bm5pbmcgdGFza3MgYXMgcGFydCBvZiB0aGUgaW5pdGlhbCBTU1IgcmVuZGVyICovXG5leHBvcnQgdHlwZSBFYWdlcm5lc3NPcHRpb25zID0gJ3Zpc2libGUnIHwgJ2xvYWQnIHwgJ2lkbGUnO1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IHR5cGUgVmlzaWJsZVRhc2tTdHJhdGVneSA9ICdpbnRlcnNlY3Rpb24tb2JzZXJ2ZXInIHwgJ2RvY3VtZW50LXJlYWR5JyB8ICdkb2N1bWVudC1pZGxlJztcblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgT25WaXNpYmxlVGFza09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHN0cmF0ZWd5IHRvIHVzZSB0byBkZXRlcm1pbmUgd2hlbiB0aGUgXCJWaXNpYmxlVGFza1wiIHNob3VsZCBmaXJzdCBleGVjdXRlLlxuICAgKlxuICAgKiAtIGBpbnRlcnNlY3Rpb24tb2JzZXJ2ZXJgOiB0aGUgdGFzayB3aWxsIGZpcnN0IGV4ZWN1dGUgd2hlbiB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIHRoZVxuICAgKiAgIHZpZXdwb3J0LCB1bmRlciB0aGUgaG9vZCBpdCB1c2VzIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlciBBUEkuXG4gICAqIC0gYGRvY3VtZW50LXJlYWR5YDogdGhlIHRhc2sgd2lsbCBmaXJzdCBleGVjdXRlIHdoZW4gdGhlIGRvY3VtZW50IGlzIHJlYWR5LCB1bmRlciB0aGUgaG9vZCBpdFxuICAgKiAgIHVzZXMgdGhlIGRvY3VtZW50IGBsb2FkYCBldmVudC5cbiAgICogLSBgZG9jdW1lbnQtaWRsZWA6IHRoZSB0YXNrIHdpbGwgZmlyc3QgZXhlY3V0ZSB3aGVuIHRoZSBkb2N1bWVudCBpcyBpZGxlLCB1bmRlciB0aGUgaG9vZCBpdCB1c2VzXG4gICAqICAgdGhlIHJlcXVlc3RJZGxlQ2FsbGJhY2sgQVBJLlxuICAgKi9cbiAgc3RyYXRlZ3k/OiBWaXNpYmxlVGFza1N0cmF0ZWd5O1xufVxuXG4vKiogQHB1YmxpYyBAZGVwcmVjYXRlZCB1c2UgdXNlVmlzaWJsZVRhc2skIG9yIHVzZVJlc291cmNlJCwgdXNlVGFzayQgaXMgZm9yIHJ1bm5pbmcgdGFza3MgYXMgcGFydCBvZiB0aGUgaW5pdGlhbCBTU1IgcmVuZGVyICovXG5leHBvcnQgaW50ZXJmYWNlIFVzZVRhc2tPcHRpb25zIHtcbiAgLyoqXG4gICAqIC0gYHZpc2libGVgOiBydW4gdGhlIGVmZmVjdCB3aGVuIHRoZSBlbGVtZW50IGlzIHZpc2libGUuXG4gICAqIC0gYGxvYWRgOiBlYWdlcmx5IHJ1biB0aGUgZWZmZWN0IHdoZW4gdGhlIGFwcGxpY2F0aW9uIHJlc3VtZXMuXG4gICAqL1xuICBlYWdlcm5lc3M/OiBFYWdlcm5lc3NPcHRpb25zO1xufVxuXG4vLyA8ZG9jcyBtYXJrZG93bj1cIi4uL3JlYWRtZS5tZCN1c2VUYXNrXCI+XG4vLyAhIURPIE5PVCBFRElUIFRISVMgQ09NTUVOVCBESVJFQ1RMWSEhIVxuLy8gKGVkaXQgLi4vcmVhZG1lLm1kI3VzZVRhc2sgaW5zdGVhZClcbi8qKlxuICogUmVydW5zIHRoZSBgdGFza0ZuYCB3aGVuIHRoZSBvYnNlcnZlZCBpbnB1dHMgY2hhbmdlLlxuICpcbiAqIFVzZSBgdXNlVGFza2AgdG8gb2JzZXJ2ZSBjaGFuZ2VzIG9uIGEgc2V0IG9mIGlucHV0cywgYW5kIHRoZW4gcmUtZXhlY3V0ZSB0aGUgYHRhc2tGbmAgd2hlbiB0aG9zZVxuICogaW5wdXRzIGNoYW5nZS5cbiAqXG4gKiBUaGUgYHRhc2tGbmAgb25seSBleGVjdXRlcyBpZiB0aGUgb2JzZXJ2ZWQgaW5wdXRzIGNoYW5nZS4gVG8gb2JzZXJ2ZSB0aGUgaW5wdXRzLCB1c2UgdGhlIGBvYnNgXG4gKiBmdW5jdGlvbiB0byB3cmFwIHByb3BlcnR5IHJlYWRzLiBUaGlzIGNyZWF0ZXMgc3Vic2NyaXB0aW9ucyB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgYHRhc2tGbmAgdG9cbiAqIHJlcnVuLlxuICpcbiAqIEBwYXJhbSB0YXNrIC0gRnVuY3Rpb24gd2hpY2ggc2hvdWxkIGJlIHJlLWV4ZWN1dGVkIHdoZW4gY2hhbmdlcyB0byB0aGUgaW5wdXRzIGFyZSBkZXRlY3RlZFxuICogQHB1YmxpY1xuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogVGhlIGB1c2VUYXNrYCBmdW5jdGlvbiBpcyB1c2VkIHRvIG9ic2VydmUgdGhlIGBzdG9yZS5jb3VudGAgcHJvcGVydHkuIEFueSBjaGFuZ2VzIHRvIHRoZVxuICogYHN0b3JlLmNvdW50YCBjYXVzZSB0aGUgYHRhc2tGbmAgdG8gZXhlY3V0ZSB3aGljaCBpbiB0dXJuIHVwZGF0ZXMgdGhlIGBzdG9yZS5kb3VibGVDb3VudGAgdG9cbiAqIHRoZSBkb3VibGUgb2YgYHN0b3JlLmNvdW50YC5cbiAqXG4gKiBgYGB0c3hcbiAqIGNvbnN0IENtcCA9IGNvbXBvbmVudCQoKCkgPT4ge1xuICogICBjb25zdCBzdG9yZSA9IHVzZVN0b3JlKHtcbiAqICAgICBjb3VudDogMCxcbiAqICAgICBkb3VibGVDb3VudDogMCxcbiAqICAgICBkZWJvdW5jZWQ6IDAsXG4gKiAgIH0pO1xuICpcbiAqICAgLy8gRG91YmxlIGNvdW50IHRhc2tcbiAqICAgdXNlVGFzayQoKHsgdHJhY2sgfSkgPT4ge1xuICogICAgIGNvbnN0IGNvdW50ID0gdHJhY2soKCkgPT4gc3RvcmUuY291bnQpO1xuICogICAgIHN0b3JlLmRvdWJsZUNvdW50ID0gMiAqIGNvdW50O1xuICogICB9KTtcbiAqXG4gKiAgIC8vIERlYm91bmNlciB0YXNrXG4gKiAgIHVzZVRhc2skKCh7IHRyYWNrIH0pID0+IHtcbiAqICAgICBjb25zdCBkb3VibGVDb3VudCA9IHRyYWNrKCgpID0+IHN0b3JlLmRvdWJsZUNvdW50KTtcbiAqICAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICogICAgICAgc3RvcmUuZGVib3VuY2VkID0gZG91YmxlQ291bnQ7XG4gKiAgICAgfSwgMjAwMCk7XG4gKiAgICAgcmV0dXJuICgpID0+IHtcbiAqICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gKiAgICAgfTtcbiAqICAgfSk7XG4gKiAgIHJldHVybiAoXG4gKiAgICAgPGRpdj5cbiAqICAgICAgIDxkaXY+XG4gKiAgICAgICAgIHtzdG9yZS5jb3VudH0gLyB7c3RvcmUuZG91YmxlQ291bnR9XG4gKiAgICAgICA8L2Rpdj5cbiAqICAgICAgIDxkaXY+e3N0b3JlLmRlYm91bmNlZH08L2Rpdj5cbiAqICAgICA8L2Rpdj5cbiAqICAgKTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHB1YmxpY1xuICogQHNlZSBgVHJhY2tlcmBcbiAqL1xuLy8gPC9kb2NzPlxuZXhwb3J0IGNvbnN0IHVzZVRhc2tRcmwgPSAocXJsOiBRUkw8VGFza0ZuPiwgb3B0cz86IFVzZVRhc2tPcHRpb25zKTogdm9pZCA9PiB7XG4gIGNvbnN0IHsgdmFsLCBzZXQsIGlDdHgsIGksIGVsQ3R4IH0gPSB1c2VTZXF1ZW50aWFsU2NvcGU8Ym9vbGVhbj4oKTtcbiAgaWYgKHZhbCkge1xuICAgIHJldHVybjtcbiAgfVxuICBhc3NlcnRRcmwocXJsKTtcblxuICBjb25zdCBjb250YWluZXJTdGF0ZSA9IGlDdHguJHJlbmRlckN0eCQuJHN0YXRpYyQuJGNvbnRhaW5lclN0YXRlJDtcbiAgY29uc3QgdGFzayA9IG5ldyBUYXNrKFRhc2tGbGFnc0lzRGlydHkgfCBUYXNrRmxhZ3NJc1Rhc2ssIGksIGVsQ3R4LiRlbGVtZW50JCwgcXJsLCB1bmRlZmluZWQpO1xuICBzZXQodHJ1ZSk7XG4gIHFybC4kcmVzb2x2ZUxhenkkKGNvbnRhaW5lclN0YXRlLiRjb250YWluZXJFbCQpO1xuICBpZiAoIWVsQ3R4LiR0YXNrcyQpIHtcbiAgICBlbEN0eC4kdGFza3MkID0gW107XG4gIH1cbiAgZWxDdHguJHRhc2tzJC5wdXNoKHRhc2spO1xuICB3YWl0QW5kUnVuKGlDdHgsICgpID0+IHJ1blRhc2sodGFzaywgY29udGFpbmVyU3RhdGUsIGlDdHguJHJlbmRlckN0eCQpKTtcbiAgaWYgKGlzU2VydmVyUGxhdGZvcm0oKSkge1xuICAgIHVzZVJ1blRhc2sodGFzaywgb3B0cz8uZWFnZXJuZXNzKTtcbiAgfVxufTtcblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVDb21wdXRlZFFybCA9IDxUPihxcmw6IFFSTDxDb21wdXRlZEZuPFQ+Pik6IFNpZ25hbDxBd2FpdGVkPFQ+PiA9PiB7XG4gIGFzc2VydFFybChxcmwpO1xuICBjb25zdCBpQ3R4ID0gdXNlSW52b2tlQ29udGV4dCgpO1xuICBjb25zdCBob3N0RWxlbWVudCA9IGlDdHguJGhvc3RFbGVtZW50JDtcbiAgY29uc3QgY29udGFpbmVyU3RhdGUgPSBpQ3R4LiRyZW5kZXJDdHgkLiRzdGF0aWMkLiRjb250YWluZXJTdGF0ZSQ7XG4gIGNvbnN0IGVsQ3R4ID0gZ2V0Q29udGV4dChob3N0RWxlbWVudCwgY29udGFpbmVyU3RhdGUpO1xuICBjb25zdCBzaWduYWwgPSBfY3JlYXRlU2lnbmFsKFxuICAgIHVuZGVmaW5lZCBhcyBBd2FpdGVkPFQ+LFxuICAgIGNvbnRhaW5lclN0YXRlLFxuICAgIFNJR05BTF9VTkFTU0lHTkVEIHwgU0lHTkFMX0lNTVVUQUJMRSxcbiAgICB1bmRlZmluZWRcbiAgKTtcblxuICBjb25zdCB0YXNrID0gbmV3IFRhc2soXG4gICAgVGFza0ZsYWdzSXNEaXJ0eSB8IFRhc2tGbGFnc0lzVGFzayB8IFRhc2tGbGFnc0lzQ29tcHV0ZWQsXG4gICAgLy8gQ29tcHV0ZWQgc2lnbmFscyBzaG91bGQgdXBkYXRlIGltbWVkaWF0ZWx5XG4gICAgMCxcbiAgICBlbEN0eC4kZWxlbWVudCQsXG4gICAgcXJsLFxuICAgIHNpZ25hbFxuICApO1xuICBxcmwuJHJlc29sdmVMYXp5JChjb250YWluZXJTdGF0ZS4kY29udGFpbmVyRWwkKTtcbiAgKGVsQ3R4LiR0YXNrcyQgfHw9IFtdKS5wdXNoKHRhc2spO1xuXG4gIHdhaXRBbmRSdW4oaUN0eCwgKCkgPT4gcnVuQ29tcHV0ZWQodGFzaywgY29udGFpbmVyU3RhdGUsIGlDdHguJHJlbmRlckN0eCQpKTtcbiAgcmV0dXJuIHNpZ25hbCBhcyBSZWFkb25seVNpZ25hbDxBd2FpdGVkPFQ+Pjtcbn07XG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGNvbnN0IHVzZUNvbXB1dGVkUXJsID0gPFQ+KHFybDogUVJMPENvbXB1dGVkRm48VD4+KTogU2lnbmFsPEF3YWl0ZWQ8VD4+ID0+IHtcbiAgcmV0dXJuIHVzZUNvbnN0YW50KCgpID0+IGNyZWF0ZUNvbXB1dGVkUXJsKHFybCkpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgY29tcHV0ZWQgc2lnbmFsIHdoaWNoIGlzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgZ2l2ZW4gZnVuY3Rpb24uIEEgY29tcHV0ZWQgc2lnbmFsIGlzIGFcbiAqIHNpZ25hbCB3aGljaCBpcyBjYWxjdWxhdGVkIGZyb20gb3RoZXIgc2lnbmFscy4gV2hlbiB0aGUgc2lnbmFscyBjaGFuZ2UsIHRoZSBjb21wdXRlZCBzaWduYWwgaXNcbiAqIHJlY2FsY3VsYXRlZCwgYW5kIGlmIHRoZSByZXN1bHQgY2hhbmdlZCwgYWxsIHRhc2tzIHdoaWNoIGFyZSB0cmFja2luZyB0aGUgc2lnbmFsIHdpbGwgYmUgcmUtcnVuXG4gKiBhbmQgYWxsIGNvbXBvbmVudHMgdGhhdCByZWFkIHRoZSBzaWduYWwgd2lsbCBiZSByZS1yZW5kZXJlZC5cbiAqXG4gKiBUaGUgZnVuY3Rpb24gbXVzdCBiZSBzeW5jaHJvbm91cyBhbmQgbXVzdCBub3QgaGF2ZSBhbnkgc2lkZSBlZmZlY3RzLlxuICpcbiAqIEFzeW5jIGZ1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCBiZWNhdXNlOlxuICpcbiAqIC0gV2hlbiBjYWxjdWxhdGluZyB0aGUgZmlyc3QgdGltZSwgaXQgd2lsbCBzZWUgaXQncyBhIHByb21pc2UgYW5kIGl0IHdpbGwgcmVzdGFydCB0aGUgcmVuZGVyXG4gKiAgIGZ1bmN0aW9uLlxuICogLSBRd2lrIGNhbid0IHRyYWNrIHVzZWQgc2lnbmFscyBhZnRlciB0aGUgZmlyc3QgYXdhaXQsIHdoaWNoIGxlYWRzIHRvIHN1YnRsZSBidWdzLlxuICogLSBCb3RoIGB1c2VUYXNrJGAgYW5kIGB1c2VSZXNvdXJjZSRgIGFyZSBhdmFpbGFibGUsIHdpdGhvdXQgdGhlc2UgcHJvYmxlbXMuXG4gKlxuICogSW4gdjIsIGFzeW5jIGZ1bmN0aW9ucyB3b24ndCB3b3JrLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHVzZUNvbXB1dGVkJCA9IGltcGxpY2l0JEZpcnN0QXJnKHVzZUNvbXB1dGVkUXJsKTtcbi8qKlxuICogUmV0dXJucyByZWFkLW9ubHkgc2lnbmFsIHRoYXQgdXBkYXRlcyB3aGVuIHNpZ25hbHMgdXNlZCBpbiB0aGUgYENvbXB1dGVkRm5gIGNoYW5nZS4gVW5saWtlXG4gKiB1c2VDb21wdXRlZCQsIHRoaXMgaXMgbm90IGEgaG9vayBhbmQgaXQgYWx3YXlzIGNyZWF0ZXMgYSBuZXcgc2lnbmFsLlxuICpcbiAqIEBkZXByZWNhdGVkIFRoaXMgaXMgYSB0ZWNobm9sb2d5IHByZXZpZXdcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvbXB1dGVkJCA9IGltcGxpY2l0JEZpcnN0QXJnKGNyZWF0ZUNvbXB1dGVkUXJsKTtcblxuLy8gPGRvY3MgbWFya2Rvd249XCIuLi9yZWFkbWUubWQjdXNlVGFza1wiPlxuLy8gISFETyBOT1QgRURJVCBUSElTIENPTU1FTlQgRElSRUNUTFkhISFcbi8vIChlZGl0IC4uL3JlYWRtZS5tZCN1c2VUYXNrIGluc3RlYWQpXG4vKipcbiAqIFJlcnVucyB0aGUgYHRhc2tGbmAgd2hlbiB0aGUgb2JzZXJ2ZWQgaW5wdXRzIGNoYW5nZS5cbiAqXG4gKiBVc2UgYHVzZVRhc2tgIHRvIG9ic2VydmUgY2hhbmdlcyBvbiBhIHNldCBvZiBpbnB1dHMsIGFuZCB0aGVuIHJlLWV4ZWN1dGUgdGhlIGB0YXNrRm5gIHdoZW4gdGhvc2VcbiAqIGlucHV0cyBjaGFuZ2UuXG4gKlxuICogVGhlIGB0YXNrRm5gIG9ubHkgZXhlY3V0ZXMgaWYgdGhlIG9ic2VydmVkIGlucHV0cyBjaGFuZ2UuIFRvIG9ic2VydmUgdGhlIGlucHV0cywgdXNlIHRoZSBgb2JzYFxuICogZnVuY3Rpb24gdG8gd3JhcCBwcm9wZXJ0eSByZWFkcy4gVGhpcyBjcmVhdGVzIHN1YnNjcmlwdGlvbnMgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIGB0YXNrRm5gIHRvXG4gKiByZXJ1bi5cbiAqXG4gKiBAcGFyYW0gdGFzayAtIEZ1bmN0aW9uIHdoaWNoIHNob3VsZCBiZSByZS1leGVjdXRlZCB3aGVuIGNoYW5nZXMgdG8gdGhlIGlucHV0cyBhcmUgZGV0ZWN0ZWRcbiAqIEBwdWJsaWNcbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIFRoZSBgdXNlVGFza2AgZnVuY3Rpb24gaXMgdXNlZCB0byBvYnNlcnZlIHRoZSBgc3RvcmUuY291bnRgIHByb3BlcnR5LiBBbnkgY2hhbmdlcyB0byB0aGVcbiAqIGBzdG9yZS5jb3VudGAgY2F1c2UgdGhlIGB0YXNrRm5gIHRvIGV4ZWN1dGUgd2hpY2ggaW4gdHVybiB1cGRhdGVzIHRoZSBgc3RvcmUuZG91YmxlQ291bnRgIHRvXG4gKiB0aGUgZG91YmxlIG9mIGBzdG9yZS5jb3VudGAuXG4gKlxuICogYGBgdHN4XG4gKiBjb25zdCBDbXAgPSBjb21wb25lbnQkKCgpID0+IHtcbiAqICAgY29uc3Qgc3RvcmUgPSB1c2VTdG9yZSh7XG4gKiAgICAgY291bnQ6IDAsXG4gKiAgICAgZG91YmxlQ291bnQ6IDAsXG4gKiAgICAgZGVib3VuY2VkOiAwLFxuICogICB9KTtcbiAqXG4gKiAgIC8vIERvdWJsZSBjb3VudCB0YXNrXG4gKiAgIHVzZVRhc2skKCh7IHRyYWNrIH0pID0+IHtcbiAqICAgICBjb25zdCBjb3VudCA9IHRyYWNrKCgpID0+IHN0b3JlLmNvdW50KTtcbiAqICAgICBzdG9yZS5kb3VibGVDb3VudCA9IDIgKiBjb3VudDtcbiAqICAgfSk7XG4gKlxuICogICAvLyBEZWJvdW5jZXIgdGFza1xuICogICB1c2VUYXNrJCgoeyB0cmFjayB9KSA9PiB7XG4gKiAgICAgY29uc3QgZG91YmxlQ291bnQgPSB0cmFjaygoKSA9PiBzdG9yZS5kb3VibGVDb3VudCk7XG4gKiAgICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAqICAgICAgIHN0b3JlLmRlYm91bmNlZCA9IGRvdWJsZUNvdW50O1xuICogICAgIH0sIDIwMDApO1xuICogICAgIHJldHVybiAoKSA9PiB7XG4gKiAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICogICAgIH07XG4gKiAgIH0pO1xuICogICByZXR1cm4gKFxuICogICAgIDxkaXY+XG4gKiAgICAgICA8ZGl2PlxuICogICAgICAgICB7c3RvcmUuY291bnR9IC8ge3N0b3JlLmRvdWJsZUNvdW50fVxuICogICAgICAgPC9kaXY+XG4gKiAgICAgICA8ZGl2PntzdG9yZS5kZWJvdW5jZWR9PC9kaXY+XG4gKiAgICAgPC9kaXY+XG4gKiAgICk7XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBwdWJsaWNcbiAqIEBzZWUgYFRyYWNrZXJgXG4gKi9cbi8vIDwvZG9jcz5cbmV4cG9ydCBjb25zdCB1c2VUYXNrJCA9IC8qI19fUFVSRV9fKi8gaW1wbGljaXQkRmlyc3RBcmcodXNlVGFza1FybCk7XG5cbi8vIDxkb2NzIG1hcmtkb3duPVwiLi4vcmVhZG1lLm1kI3VzZVZpc2libGVUYXNrXCI+XG4vLyAhIURPIE5PVCBFRElUIFRISVMgQ09NTUVOVCBESVJFQ1RMWSEhIVxuLy8gKGVkaXQgLi4vcmVhZG1lLm1kI3VzZVZpc2libGVUYXNrIGluc3RlYWQpXG4vKipcbiAqIGBgYHRzeFxuICogY29uc3QgVGltZXIgPSBjb21wb25lbnQkKCgpID0+IHtcbiAqICAgY29uc3Qgc3RvcmUgPSB1c2VTdG9yZSh7XG4gKiAgICAgY291bnQ6IDAsXG4gKiAgIH0pO1xuICpcbiAqICAgdXNlVmlzaWJsZVRhc2skKCgpID0+IHtcbiAqICAgICAvLyBPbmx5IHJ1bnMgaW4gdGhlIGNsaWVudFxuICogICAgIGNvbnN0IHRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICogICAgICAgc3RvcmUuY291bnQrKztcbiAqICAgICB9LCA1MDApO1xuICogICAgIHJldHVybiAoKSA9PiB7XG4gKiAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAqICAgICB9O1xuICogICB9KTtcbiAqXG4gKiAgIHJldHVybiA8ZGl2PntzdG9yZS5jb3VudH08L2Rpdj47XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuLy8gPC9kb2NzPlxuZXhwb3J0IGNvbnN0IHVzZVZpc2libGVUYXNrUXJsID0gKHFybDogUVJMPFRhc2tGbj4sIG9wdHM/OiBPblZpc2libGVUYXNrT3B0aW9ucyk6IHZvaWQgPT4ge1xuICBjb25zdCB7IHZhbCwgc2V0LCBpLCBpQ3R4LCBlbEN0eCB9ID0gdXNlU2VxdWVudGlhbFNjb3BlPFRhc2s8VGFza0ZuPj4oKTtcbiAgY29uc3QgZWFnZXJuZXNzID0gb3B0cz8uc3RyYXRlZ3kgPz8gJ2ludGVyc2VjdGlvbi1vYnNlcnZlcic7XG4gIGlmICh2YWwpIHtcbiAgICBpZiAoaXNTZXJ2ZXJQbGF0Zm9ybSgpKSB7XG4gICAgICB1c2VSdW5UYXNrKHZhbCwgZWFnZXJuZXNzKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGFzc2VydFFybChxcmwpO1xuICBjb25zdCB0YXNrID0gbmV3IFRhc2soVGFza0ZsYWdzSXNWaXNpYmxlVGFzaywgaSwgZWxDdHguJGVsZW1lbnQkLCBxcmwsIHVuZGVmaW5lZCk7XG4gIGNvbnN0IGNvbnRhaW5lclN0YXRlID0gaUN0eC4kcmVuZGVyQ3R4JC4kc3RhdGljJC4kY29udGFpbmVyU3RhdGUkO1xuICBpZiAoIWVsQ3R4LiR0YXNrcyQpIHtcbiAgICBlbEN0eC4kdGFza3MkID0gW107XG4gIH1cbiAgZWxDdHguJHRhc2tzJC5wdXNoKHRhc2spO1xuICBzZXQodGFzayk7XG4gIHVzZVJ1blRhc2sodGFzaywgZWFnZXJuZXNzKTtcbiAgaWYgKCFpc1NlcnZlclBsYXRmb3JtKCkpIHtcbiAgICBxcmwuJHJlc29sdmVMYXp5JChjb250YWluZXJTdGF0ZS4kY29udGFpbmVyRWwkKTtcbiAgICBub3RpZnlUYXNrKHRhc2ssIGNvbnRhaW5lclN0YXRlKTtcbiAgfVxufTtcblxuLy8gPGRvY3MgbWFya2Rvd249XCIuLi9yZWFkbWUubWQjdXNlVmlzaWJsZVRhc2tcIj5cbi8vICEhRE8gTk9UIEVESVQgVEhJUyBDT01NRU5UIERJUkVDVExZISEhXG4vLyAoZWRpdCAuLi9yZWFkbWUubWQjdXNlVmlzaWJsZVRhc2sgaW5zdGVhZClcbi8qKlxuICogYGBgdHN4XG4gKiBjb25zdCBUaW1lciA9IGNvbXBvbmVudCQoKCkgPT4ge1xuICogICBjb25zdCBzdG9yZSA9IHVzZVN0b3JlKHtcbiAqICAgICBjb3VudDogMCxcbiAqICAgfSk7XG4gKlxuICogICB1c2VWaXNpYmxlVGFzayQoKCkgPT4ge1xuICogICAgIC8vIE9ubHkgcnVucyBpbiB0aGUgY2xpZW50XG4gKiAgICAgY29uc3QgdGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gKiAgICAgICBzdG9yZS5jb3VudCsrO1xuICogICAgIH0sIDUwMCk7XG4gKiAgICAgcmV0dXJuICgpID0+IHtcbiAqICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpO1xuICogICAgIH07XG4gKiAgIH0pO1xuICpcbiAqICAgcmV0dXJuIDxkaXY+e3N0b3JlLmNvdW50fTwvZGl2PjtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHB1YmxpY1xuICovXG4vLyA8L2RvY3M+XG5leHBvcnQgY29uc3QgdXNlVmlzaWJsZVRhc2skID0gLyojX19QVVJFX18qLyBpbXBsaWNpdCRGaXJzdEFyZyh1c2VWaXNpYmxlVGFza1FybCk7XG5cbmV4cG9ydCB0eXBlIFRhc2tEZXNjcmlwdG9yID0gRGVzY3JpcHRvckJhc2U8VGFza0ZuPjtcblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZURlc2NyaXB0b3I8VD5cbiAgZXh0ZW5kcyBEZXNjcmlwdG9yQmFzZTxSZXNvdXJjZUZuPFQ+LCBSZXNvdXJjZVJldHVybkludGVybmFsPFQ+PiB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkRGVzY3JpcHRvcjxUPiBleHRlbmRzIERlc2NyaXB0b3JCYXNlPENvbXB1dGVkRm48VD4sIFNpZ25hbDxUPj4ge31cblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlckhvc3QgPSBRd2lrRWxlbWVudDtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlckVmZmVjdCA9XG4gIHwgVGFza0Rlc2NyaXB0b3JcbiAgfCBSZXNvdXJjZURlc2NyaXB0b3I8dW5rbm93bj5cbiAgfCBDb21wdXRlZERlc2NyaXB0b3I8dW5rbm93bj47XG5cbmV4cG9ydCBjb25zdCBpc1Jlc291cmNlVGFzayA9ICh0YXNrOiBTdWJzY3JpYmVyRWZmZWN0KTogdGFzayBpcyBSZXNvdXJjZURlc2NyaXB0b3I8dW5rbm93bj4gPT4ge1xuICByZXR1cm4gKHRhc2suJGZsYWdzJCAmIFRhc2tGbGFnc0lzUmVzb3VyY2UpICE9PSAwO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQ29tcHV0ZWRUYXNrID0gKHRhc2s6IFN1YnNjcmliZXJFZmZlY3QpOiB0YXNrIGlzIENvbXB1dGVkRGVzY3JpcHRvcjx1bmtub3duPiA9PiB7XG4gIHJldHVybiAodGFzay4kZmxhZ3MkICYgVGFza0ZsYWdzSXNDb21wdXRlZCkgIT09IDA7XG59O1xuZXhwb3J0IGNvbnN0IHJ1blN1YnNjcmliZXIgPSBhc3luYyAoXG4gIHRhc2s6IFN1YnNjcmliZXJFZmZlY3QsXG4gIGNvbnRhaW5lclN0YXRlOiBDb250YWluZXJTdGF0ZSxcbiAgckN0eDogUmVuZGVyQ29udGV4dFxuKSA9PiB7XG4gIGFzc2VydEVxdWFsKCEhKHRhc2suJGZsYWdzJCAmIFRhc2tGbGFnc0lzRGlydHkpLCB0cnVlLCAnUmVzb3VyY2UgaXMgbm90IGRpcnR5JywgdGFzayk7XG4gIGlmIChpc1Jlc291cmNlVGFzayh0YXNrKSkge1xuICAgIHJldHVybiBydW5SZXNvdXJjZSh0YXNrLCBjb250YWluZXJTdGF0ZSwgckN0eCk7XG4gIH0gZWxzZSBpZiAoaXNDb21wdXRlZFRhc2sodGFzaykpIHtcbiAgICByZXR1cm4gcnVuQ29tcHV0ZWQodGFzaywgY29udGFpbmVyU3RhdGUsIHJDdHgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBydW5UYXNrKHRhc2ssIGNvbnRhaW5lclN0YXRlLCByQ3R4KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJ1blJlc291cmNlID0gPFQ+KFxuICB0YXNrOiBSZXNvdXJjZURlc2NyaXB0b3I8VD4sXG4gIGNvbnRhaW5lclN0YXRlOiBDb250YWluZXJTdGF0ZSxcbiAgckN0eDogUmVuZGVyQ29udGV4dCxcbiAgd2FpdE9uPzogUHJvbWlzZTx1bmtub3duPlxuKTogVmFsdWVPclByb21pc2U8dm9pZD4gPT4ge1xuICB0YXNrLiRmbGFncyQgJj0gflRhc2tGbGFnc0lzRGlydHk7XG4gIGNsZWFudXBUYXNrKHRhc2spO1xuXG4gIGNvbnN0IGVsID0gdGFzay4kZWwkO1xuICBjb25zdCBpQ3R4ID0gbmV3SW52b2tlQ29udGV4dChyQ3R4LiRzdGF0aWMkLiRsb2NhbGUkLCBlbCwgdW5kZWZpbmVkLCBUYXNrRXZlbnQpO1xuICBjb25zdCB7ICRzdWJzTWFuYWdlciQ6IHN1YnNNYW5hZ2VyIH0gPSBjb250YWluZXJTdGF0ZTtcbiAgaUN0eC4kcmVuZGVyQ3R4JCA9IHJDdHg7XG4gIGNvbnN0IHRhc2tGbiA9IHRhc2suJHFybCQuZ2V0Rm4oaUN0eCwgKCkgPT4ge1xuICAgIHN1YnNNYW5hZ2VyLiRjbGVhclN1YiQodGFzayk7XG4gIH0pO1xuXG4gIGNvbnN0IGNsZWFudXBzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuICBjb25zdCByZXNvdXJjZSA9IHRhc2suJHN0YXRlJDtcbiAgYXNzZXJ0RGVmaW5lZChcbiAgICByZXNvdXJjZSxcbiAgICAndXNlUmVzb3VyY2U6IHdoZW4gcnVubmluZyBhIHJlc291cmNlLCBcInRhc2suclwiIG11c3QgYmUgYSBkZWZpbmVkLicsXG4gICAgdGFza1xuICApO1xuXG4gIGNvbnN0IHRyYWNrOiBUcmFja2VyID0gKG9iajogKCgpID0+IHVua25vd24pIHwgb2JqZWN0IHwgU2lnbmFsLCBwcm9wPzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGlzRnVuY3Rpb24ob2JqKSkge1xuICAgICAgY29uc3QgY3R4ID0gbmV3SW52b2tlQ29udGV4dCgpO1xuICAgICAgY3R4LiRyZW5kZXJDdHgkID0gckN0eDtcbiAgICAgIGN0eC4kc3Vic2NyaWJlciQgPSBbMCwgdGFza107XG4gICAgICByZXR1cm4gaW52b2tlKGN0eCwgb2JqKTtcbiAgICB9XG4gICAgY29uc3QgbWFuYWdlciA9IGdldFN1YnNjcmlwdGlvbk1hbmFnZXIob2JqKTtcbiAgICBpZiAobWFuYWdlcikge1xuICAgICAgbWFuYWdlci4kYWRkU3ViJChbMCwgdGFza10sIHByb3ApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dFcnJvckFuZFN0b3AoY29kZVRvVGV4dChRRXJyb3JfdHJhY2tVc2VTdG9yZSksIG9iaik7XG4gICAgfVxuICAgIGlmIChwcm9wKSB7XG4gICAgICByZXR1cm4gKG9iaiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbcHJvcF07XG4gICAgfSBlbHNlIGlmIChpc1NpZ25hbChvYmopKSB7XG4gICAgICByZXR1cm4gb2JqLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVzb3VyY2VUYXJnZXQgPSB1bndyYXBQcm94eShyZXNvdXJjZSk7XG4gIGNvbnN0IG9wdHM6IFJlc291cmNlQ3R4PFQ+ID0ge1xuICAgIHRyYWNrLFxuICAgIGNsZWFudXAoY2FsbGJhY2spIHtcbiAgICAgIGNsZWFudXBzLnB1c2goY2FsbGJhY2spO1xuICAgIH0sXG4gICAgY2FjaGUocG9saWN5KSB7XG4gICAgICBsZXQgbWlsbGlzZWNvbmRzID0gMDtcbiAgICAgIGlmIChwb2xpY3kgPT09ICdpbW11dGFibGUnKSB7XG4gICAgICAgIG1pbGxpc2Vjb25kcyA9IEluZmluaXR5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWlsbGlzZWNvbmRzID0gcG9saWN5O1xuICAgICAgfVxuICAgICAgcmVzb3VyY2UuX2NhY2hlID0gbWlsbGlzZWNvbmRzO1xuICAgIH0sXG4gICAgcHJldmlvdXM6IHJlc291cmNlVGFyZ2V0Ll9yZXNvbHZlZCxcbiAgfTtcblxuICBsZXQgcmVzb2x2ZTogKHY6IFQpID0+IHZvaWQ7XG4gIGxldCByZWplY3Q6ICh2OiB1bmtub3duKSA9PiB2b2lkO1xuICBsZXQgZG9uZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHNldFN0YXRlID0gKHJlc29sdmVkOiBib29sZWFuLCB2YWx1ZTogVCB8IEVycm9yKSA9PiB7XG4gICAgaWYgKCFkb25lKSB7XG4gICAgICBkb25lID0gdHJ1ZTtcbiAgICAgIGlmIChyZXNvbHZlZCkge1xuICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgcmVzb3VyY2UubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICByZXNvdXJjZS5fc3RhdGUgPSAncmVzb2x2ZWQnO1xuICAgICAgICByZXNvdXJjZS5fcmVzb2x2ZWQgPSB2YWx1ZSBhcyBUO1xuICAgICAgICByZXNvdXJjZS5fZXJyb3IgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSBhcyBUKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICByZXNvdXJjZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHJlc291cmNlLl9zdGF0ZSA9ICdyZWplY3RlZCc7XG4gICAgICAgIHJlc291cmNlLl9lcnJvciA9IHZhbHVlIGFzIEVycm9yO1xuICAgICAgICByZWplY3QodmFsdWUgYXMgRXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICAvLyBFeGVjdXRlIG11dGF0aW9uIGluc2lkZSBlbXB0eSBpbnZvY2F0aW9uXG4gIGludm9rZShpQ3R4LCAoKSA9PiB7XG4gICAgcmVzb3VyY2UuX3N0YXRlID0gJ3BlbmRpbmcnO1xuICAgIHJlc291cmNlLmxvYWRpbmcgPSAhaXNTZXJ2ZXJQbGF0Zm9ybSgpO1xuICAgIHJlc291cmNlLnZhbHVlID0gbmV3IFByb21pc2UoKHIsIHJlKSA9PiB7XG4gICAgICByZXNvbHZlID0gcjtcbiAgICAgIHJlamVjdCA9IHJlO1xuICAgIH0pO1xuICB9KTtcblxuICB0YXNrLiRkZXN0cm95JCA9IG5vU2VyaWFsaXplKCgpID0+IHtcbiAgICBkb25lID0gdHJ1ZTtcbiAgICBjbGVhbnVwcy5mb3JFYWNoKChmbikgPT4gZm4oKSk7XG4gIH0pO1xuXG4gIGNvbnN0IHByb21pc2UgPSBzYWZlQ2FsbChcbiAgICAoKSA9PiBtYXliZVRoZW4od2FpdE9uLCAoKSA9PiB0YXNrRm4ob3B0cykpLFxuICAgICh2YWx1ZSkgPT4ge1xuICAgICAgc2V0U3RhdGUodHJ1ZSwgdmFsdWUpO1xuICAgIH0sXG4gICAgKHJlYXNvbikgPT4ge1xuICAgICAgc2V0U3RhdGUoZmFsc2UsIHJlYXNvbik7XG4gICAgfVxuICApO1xuXG4gIGNvbnN0IHRpbWVvdXQgPSByZXNvdXJjZVRhcmdldC5fdGltZW91dDtcbiAgaWYgKHRpbWVvdXQgPiAwKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmFjZShbXG4gICAgICBwcm9taXNlLFxuICAgICAgZGVsYXkodGltZW91dCkudGhlbigoKSA9PiB7XG4gICAgICAgIGlmIChzZXRTdGF0ZShmYWxzZSwgbmV3IEVycm9yKCd0aW1lb3V0JykpKSB7XG4gICAgICAgICAgY2xlYW51cFRhc2sodGFzayk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIF0pO1xuICB9XG4gIHJldHVybiBwcm9taXNlO1xufTtcblxuZXhwb3J0IGNvbnN0IHJ1blRhc2sgPSAoXG4gIHRhc2s6IFRhc2tEZXNjcmlwdG9yIHwgQ29tcHV0ZWREZXNjcmlwdG9yPHVua25vd24+LFxuICBjb250YWluZXJTdGF0ZTogQ29udGFpbmVyU3RhdGUsXG4gIHJDdHg6IFJlbmRlckNvbnRleHRcbik6IFZhbHVlT3JQcm9taXNlPHZvaWQ+ID0+IHtcbiAgdGFzay4kZmxhZ3MkICY9IH5UYXNrRmxhZ3NJc0RpcnR5O1xuXG4gIGNsZWFudXBUYXNrKHRhc2spO1xuICBjb25zdCBob3N0RWxlbWVudCA9IHRhc2suJGVsJDtcbiAgY29uc3QgaUN0eCA9IG5ld0ludm9rZUNvbnRleHQockN0eC4kc3RhdGljJC4kbG9jYWxlJCwgaG9zdEVsZW1lbnQsIHVuZGVmaW5lZCwgVGFza0V2ZW50KTtcbiAgaUN0eC4kcmVuZGVyQ3R4JCA9IHJDdHg7XG4gIGNvbnN0IHsgJHN1YnNNYW5hZ2VyJDogc3Vic01hbmFnZXIgfSA9IGNvbnRhaW5lclN0YXRlO1xuICBjb25zdCB0YXNrRm4gPSB0YXNrLiRxcmwkLmdldEZuKGlDdHgsICgpID0+IHtcbiAgICBzdWJzTWFuYWdlci4kY2xlYXJTdWIkKHRhc2spO1xuICB9KSBhcyBUYXNrRm47XG4gIGNvbnN0IHRyYWNrOiBUcmFja2VyID0gKG9iajogKCgpID0+IHVua25vd24pIHwgb2JqZWN0IHwgU2lnbmFsLCBwcm9wPzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGlzRnVuY3Rpb24ob2JqKSkge1xuICAgICAgY29uc3QgY3R4ID0gbmV3SW52b2tlQ29udGV4dCgpO1xuICAgICAgY3R4LiRzdWJzY3JpYmVyJCA9IFswLCB0YXNrXTtcbiAgICAgIHJldHVybiBpbnZva2UoY3R4LCBvYmopO1xuICAgIH1cbiAgICBjb25zdCBtYW5hZ2VyID0gZ2V0U3Vic2NyaXB0aW9uTWFuYWdlcihvYmopO1xuICAgIGlmIChtYW5hZ2VyKSB7XG4gICAgICBtYW5hZ2VyLiRhZGRTdWIkKFswLCB0YXNrXSwgcHJvcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ0Vycm9yQW5kU3RvcChjb2RlVG9UZXh0KFFFcnJvcl90cmFja1VzZVN0b3JlKSwgb2JqKTtcbiAgICB9XG4gICAgaWYgKHByb3ApIHtcbiAgICAgIHJldHVybiAob2JqIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtwcm9wXTtcbiAgICB9IGVsc2UgaWYgKGlzU2lnbmFsKG9iaikpIHtcbiAgICAgIHJldHVybiBvYmoudmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICB9O1xuICBjb25zdCBjbGVhbnVwczogKCgpID0+IHZvaWQpW10gPSBbXTtcbiAgdGFzay4kZGVzdHJveSQgPSBub1NlcmlhbGl6ZSgoKSA9PiB7XG4gICAgY2xlYW51cHMuZm9yRWFjaCgoZm4pID0+IGZuKCkpO1xuICB9KTtcblxuICBjb25zdCBvcHRzOiBUYXNrQ3R4ID0ge1xuICAgIHRyYWNrLFxuICAgIGNsZWFudXAoY2FsbGJhY2spIHtcbiAgICAgIGNsZWFudXBzLnB1c2goY2FsbGJhY2spO1xuICAgIH0sXG4gIH07XG4gIHJldHVybiBzYWZlQ2FsbChcbiAgICAoKSA9PiB0YXNrRm4ob3B0cyksXG4gICAgKHJldHVyblZhbHVlKSA9PiB7XG4gICAgICBpZiAoaXNGdW5jdGlvbihyZXR1cm5WYWx1ZSkpIHtcbiAgICAgICAgY2xlYW51cHMucHVzaChyZXR1cm5WYWx1ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICAocmVhc29uKSA9PiB7XG4gICAgICBoYW5kbGVFcnJvcihyZWFzb24sIGhvc3RFbGVtZW50LCByQ3R4KTtcbiAgICB9XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgcnVuQ29tcHV0ZWQgPSAoXG4gIHRhc2s6IENvbXB1dGVkRGVzY3JpcHRvcjx1bmtub3duPixcbiAgY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlLFxuICByQ3R4OiBSZW5kZXJDb250ZXh0XG4pOiBWYWx1ZU9yUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGFzc2VydFNpZ25hbCh0YXNrLiRzdGF0ZSQpO1xuICB0YXNrLiRmbGFncyQgJj0gflRhc2tGbGFnc0lzRGlydHk7XG4gIGNsZWFudXBUYXNrKHRhc2spO1xuICBjb25zdCBob3N0RWxlbWVudCA9IHRhc2suJGVsJDtcbiAgY29uc3QgaUN0eCA9IG5ld0ludm9rZUNvbnRleHQockN0eC4kc3RhdGljJC4kbG9jYWxlJCwgaG9zdEVsZW1lbnQsIHVuZGVmaW5lZCwgQ29tcHV0ZWRFdmVudCk7XG4gIGlDdHguJHN1YnNjcmliZXIkID0gWzAsIHRhc2tdO1xuICBpQ3R4LiRyZW5kZXJDdHgkID0gckN0eDtcblxuICBjb25zdCB7ICRzdWJzTWFuYWdlciQ6IHN1YnNNYW5hZ2VyIH0gPSBjb250YWluZXJTdGF0ZTtcbiAgY29uc3QgdGFza0ZuID0gdGFzay4kcXJsJC5nZXRGbihpQ3R4LCAoKSA9PiB7XG4gICAgc3Vic01hbmFnZXIuJGNsZWFyU3ViJCh0YXNrKTtcbiAgfSkgYXMgQ29tcHV0ZWRGbjx1bmtub3duPjtcblxuICBjb25zdCBvayA9IChyZXR1cm5WYWx1ZTogYW55KSA9PiB7XG4gICAgdW50cmFjaygoKSA9PiB7XG4gICAgICBjb25zdCBzaWduYWwgPSB0YXNrLiRzdGF0ZSQhIGFzIFNpZ25hbEludGVybmFsPHVua25vd24+O1xuICAgICAgc2lnbmFsW1FPYmplY3RTaWduYWxGbGFnc10gJj0gflNJR05BTF9VTkFTU0lHTkVEO1xuICAgICAgaWYgKHNpZ25hbC51bnRyYWNrZWRWYWx1ZSAhPT0gcmV0dXJuVmFsdWUpIHtcbiAgICAgICAgc2lnbmFsLnVudHJhY2tlZFZhbHVlID0gcmV0dXJuVmFsdWU7XG4gICAgICAgIHNpZ25hbFtRT2JqZWN0TWFuYWdlclN5bWJvbF0uJG5vdGlmeVN1YnMkKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IGZhaWwgPSAocmVhc29uOiB1bmtub3duKSA9PiB7XG4gICAgaGFuZGxlRXJyb3IocmVhc29uLCBob3N0RWxlbWVudCwgckN0eCk7XG4gIH07XG4gIHRyeSB7XG4gICAgcmV0dXJuIG1heWJlVGhlbih0YXNrLiRxcmwkLiRyZXNvbHZlTGF6eSQoY29udGFpbmVyU3RhdGUuJGNvbnRhaW5lckVsJCksICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRhc2tGbigpO1xuICAgICAgaWYgKGlzUHJvbWlzZShyZXN1bHQpKSB7XG4gICAgICAgIGNvbnN0IHdhcm5pbmdNZXNzYWdlID1cbiAgICAgICAgICAndXNlQ29tcHV0ZWQkOiBBc3luYyBmdW5jdGlvbnMgaW4gY29tcHV0ZWQgdGFza3MgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgc3RvcCB3b3JraW5nIGluIHYyLiBVc2UgdXNlVGFzayQgb3IgdXNlUmVzb3VyY2UkIGluc3RlYWQuJztcbiAgICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgRXJyb3Iod2FybmluZ01lc3NhZ2UpLnN0YWNrO1xuICAgICAgICBpZiAoIXN0YWNrKSB7XG4gICAgICAgICAgbG9nT25jZVdhcm4od2FybmluZ01lc3NhZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGxlc3NTY2FyeVN0YWNrID0gc3RhY2sucmVwbGFjZSgvXkVycm9yOlxccyovLCAnJyk7XG4gICAgICAgICAgbG9nT25jZVdhcm4obGVzc1NjYXJ5U3RhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKG9rLCBmYWlsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9rKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0gY2F0Y2ggKHJlYXNvbikge1xuICAgIGZhaWwocmVhc29uKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFudXBUYXNrID0gKHRhc2s6IFN1YnNjcmliZXJFZmZlY3QpID0+IHtcbiAgY29uc3QgZGVzdHJveSA9IHRhc2suJGRlc3Ryb3kkO1xuICBpZiAoZGVzdHJveSkge1xuICAgIHRhc2suJGRlc3Ryb3kkID0gdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICBkZXN0cm95KCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2dFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGRlc3Ryb3lUYXNrID0gKHRhc2s6IFN1YnNjcmliZXJFZmZlY3QpID0+IHtcbiAgaWYgKHRhc2suJGZsYWdzJCAmIFRhc2tGbGFnc0lzQ2xlYW51cCkge1xuICAgIHRhc2suJGZsYWdzJCAmPSB+VGFza0ZsYWdzSXNDbGVhbnVwO1xuICAgIGNvbnN0IGNsZWFudXAgPSB0YXNrLiRxcmwkO1xuICAgIChjbGVhbnVwIGFzIEZ1bmN0aW9uKSgpO1xuICB9IGVsc2Uge1xuICAgIGNsZWFudXBUYXNrKHRhc2spO1xuICB9XG59O1xuXG5jb25zdCB1c2VSdW5UYXNrID0gKFxuICB0YXNrOiBTdWJzY3JpYmVyRWZmZWN0LFxuICBlYWdlcm5lc3M6IFZpc2libGVUYXNrU3RyYXRlZ3kgfCBFYWdlcm5lc3NPcHRpb25zIHwgdW5kZWZpbmVkXG4pID0+IHtcbiAgaWYgKGVhZ2VybmVzcyA9PT0gJ3Zpc2libGUnIHx8IGVhZ2VybmVzcyA9PT0gJ2ludGVyc2VjdGlvbi1vYnNlcnZlcicpIHtcbiAgICB1c2VPbigncXZpc2libGUnLCBnZXRUYXNrSGFuZGxlclFybCh0YXNrKSk7XG4gIH0gZWxzZSBpZiAoZWFnZXJuZXNzID09PSAnbG9hZCcgfHwgZWFnZXJuZXNzID09PSAnZG9jdW1lbnQtcmVhZHknKSB7XG4gICAgdXNlT25Eb2N1bWVudCgncWluaXQnLCBnZXRUYXNrSGFuZGxlclFybCh0YXNrKSk7XG4gIH0gZWxzZSBpZiAoZWFnZXJuZXNzID09PSAnaWRsZScgfHwgZWFnZXJuZXNzID09PSAnZG9jdW1lbnQtaWRsZScpIHtcbiAgICB1c2VPbkRvY3VtZW50KCdxaWRsZScsIGdldFRhc2tIYW5kbGVyUXJsKHRhc2spKTtcbiAgfVxufTtcblxuY29uc3QgZ2V0VGFza0hhbmRsZXJRcmwgPSAodGFzazogU3Vic2NyaWJlckVmZmVjdCk6IFFSTDwoZXY6IEV2ZW50KSA9PiB2b2lkPiA9PiB7XG4gIGNvbnN0IHRhc2tRcmwgPSB0YXNrLiRxcmwkO1xuICBjb25zdCB0YXNrSGFuZGxlciA9IGNyZWF0ZVFSTDwoZXY6IEV2ZW50KSA9PiB2b2lkPihcbiAgICB0YXNrUXJsLiRjaHVuayQsXG4gICAgJ19oVycsXG4gICAgX2hXLFxuICAgIG51bGwsXG4gICAgbnVsbCxcbiAgICBbdGFza10sXG4gICAgdGFza1FybC4kc3ltYm9sJFxuICApO1xuICAvLyBOZWVkZWQgZm9yIGNodW5rIGxvb2t1cCBpbiBkZXYgbW9kZVxuICBpZiAodGFza1FybC5kZXYpIHtcbiAgICB0YXNrSGFuZGxlci5kZXYgPSB0YXNrUXJsLmRldjtcbiAgfVxuICByZXR1cm4gdGFza0hhbmRsZXI7XG59O1xuXG5leHBvcnQgY29uc3QgaXNUYXNrQ2xlYW51cCA9IChvYmo6IHVua25vd24pOiBvYmogaXMgVGFza0Rlc2NyaXB0b3IgPT4ge1xuICByZXR1cm4gaXNTdWJzY3JpYmVyRGVzY3JpcHRvcihvYmopICYmICEhKG9iai4kZmxhZ3MkICYgVGFza0ZsYWdzSXNDbGVhbnVwKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1N1YnNjcmliZXJEZXNjcmlwdG9yID0gKG9iajogdW5rbm93bik6IG9iaiBpcyBTdWJzY3JpYmVyRWZmZWN0ID0+IHtcbiAgcmV0dXJuIGlzT2JqZWN0KG9iaikgJiYgb2JqIGluc3RhbmNlb2YgVGFzaztcbn07XG5cbmV4cG9ydCBjb25zdCBzZXJpYWxpemVUYXNrID0gKHRhc2s6IFN1YnNjcmliZXJFZmZlY3QsIGdldE9iaklkOiBNdXN0R2V0T2JqSUQpID0+IHtcbiAgbGV0IHZhbHVlID0gYCR7aW50VG9TdHIodGFzay4kZmxhZ3MkKX0gJHtpbnRUb1N0cih0YXNrLiRpbmRleCQpfSAke2dldE9iaklkKFxuICAgIHRhc2suJHFybCRcbiAgKX0gJHtnZXRPYmpJZCh0YXNrLiRlbCQpfWA7XG4gIGlmICh0YXNrLiRzdGF0ZSQpIHtcbiAgICB2YWx1ZSArPSBgICR7Z2V0T2JqSWQodGFzay4kc3RhdGUkKX1gO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZVRhc2sgPSAoZGF0YTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IFtmbGFncywgaW5kZXgsIHFybCwgZWwsIHJlc291cmNlXSA9IGRhdGEuc3BsaXQoJyAnKTtcbiAgcmV0dXJuIG5ldyBUYXNrKHN0clRvSW50KGZsYWdzKSwgc3RyVG9JbnQoaW5kZXgpLCBlbCBhcyBhbnksIHFybCBhcyBhbnksIHJlc291cmNlIGFzIGFueSk7XG59O1xuXG5leHBvcnQgY2xhc3MgVGFzazxUID0gdW5rbm93biwgQiA9IFQ+IGltcGxlbWVudHMgRGVzY3JpcHRvckJhc2U8dW5rbm93biwgU2lnbmFsPEI+PiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyAkZmxhZ3MkOiBudW1iZXIsXG4gICAgcHVibGljICRpbmRleCQ6IG51bWJlcixcbiAgICBwdWJsaWMgJGVsJDogUXdpa0VsZW1lbnQsXG4gICAgcHVibGljICRxcmwkOiBRUkxJbnRlcm5hbDxUPixcbiAgICBwdWJsaWMgJHN0YXRlJDogU2lnbmFsPEI+IHwgdW5kZWZpbmVkXG4gICkge31cbn1cbiJdfQ==","export function isTemplate(node) {\n    const tagName = (node && node.tagName) || '';\n    return tagName.toUpperCase() == 'TEMPLATE';\n}\nexport function prettyHtml(element, prefix = '') {\n    const lines = [];\n    lines.push(prefix, '<', element.localName);\n    const attrs = element.attributes;\n    for (let i = 0; i < attrs.length; i++) {\n        const attr = attrs[i];\n        lines.push('\\n', prefix, '    ', attr.name, '=\"', attr.value, '\"');\n    }\n    lines.push('>');\n    let child = isTemplate(element) ? element.content.firstChild : element.firstChild;\n    while (child) {\n        if (isElement(child)) {\n            lines.push('\\n', prettyHtml(child, prefix + '  '));\n        }\n        else {\n            lines.push('\\n', prefix, child.textContent);\n        }\n        child = child.nextSibling;\n    }\n    lines.push('\\n', prefix, '</', element.localName, '>');\n    return lines.join('');\n}\nexport function isElement(value) {\n    return isNode(value) && value.nodeType === 1;\n}\nexport function isNode(value) {\n    return value && typeof value.nodeType === 'number';\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvdGVzdGluZy9odG1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBNkI7SUFDdEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFJLElBQUssSUFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUQsT0FBTyxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksVUFBVSxDQUFDO0FBQzdDLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQW9CLEVBQUUsU0FBaUIsRUFBRTtJQUNsRSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDakIsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQixJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ2xGLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxLQUFLLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFVO0lBQ2xDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxNQUFNLFVBQVUsTUFBTSxDQUFDLEtBQVU7SUFDL0IsT0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlzVGVtcGxhdGUobm9kZTogTm9kZSB8IG51bGwgfCB1bmRlZmluZWQpOiBub2RlIGlzIEhUTUxUZW1wbGF0ZUVsZW1lbnQge1xuICBjb25zdCB0YWdOYW1lID0gKG5vZGUgJiYgKG5vZGUgYXMgRWxlbWVudCkudGFnTmFtZSkgfHwgJyc7XG4gIHJldHVybiB0YWdOYW1lLnRvVXBwZXJDYXNlKCkgPT0gJ1RFTVBMQVRFJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXR0eUh0bWwoZWxlbWVudDogSFRNTEVsZW1lbnQsIHByZWZpeDogc3RyaW5nID0gJycpOiBhbnkge1xuICBjb25zdCBsaW5lcyA9IFtdO1xuICBsaW5lcy5wdXNoKHByZWZpeCwgJzwnLCBlbGVtZW50LmxvY2FsTmFtZSk7XG4gIGNvbnN0IGF0dHJzID0gZWxlbWVudC5hdHRyaWJ1dGVzO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgYXR0ciA9IGF0dHJzW2ldO1xuICAgIGxpbmVzLnB1c2goJ1xcbicsIHByZWZpeCwgJyAgICAnLCBhdHRyLm5hbWUsICc9XCInLCBhdHRyLnZhbHVlLCAnXCInKTtcbiAgfVxuICBsaW5lcy5wdXNoKCc+Jyk7XG4gIGxldCBjaGlsZCA9IGlzVGVtcGxhdGUoZWxlbWVudCkgPyBlbGVtZW50LmNvbnRlbnQuZmlyc3RDaGlsZCA6IGVsZW1lbnQuZmlyc3RDaGlsZDtcbiAgd2hpbGUgKGNoaWxkKSB7XG4gICAgaWYgKGlzRWxlbWVudChjaGlsZCkpIHtcbiAgICAgIGxpbmVzLnB1c2goJ1xcbicsIHByZXR0eUh0bWwoY2hpbGQsIHByZWZpeCArICcgICcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGluZXMucHVzaCgnXFxuJywgcHJlZml4LCBjaGlsZC50ZXh0Q29udGVudCk7XG4gICAgfVxuICAgIGNoaWxkID0gY2hpbGQubmV4dFNpYmxpbmc7XG4gIH1cbiAgbGluZXMucHVzaCgnXFxuJywgcHJlZml4LCAnPC8nLCBlbGVtZW50LmxvY2FsTmFtZSwgJz4nKTtcbiAgcmV0dXJuIGxpbmVzLmpvaW4oJycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbGVtZW50KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBIVE1MRWxlbWVudCB7XG4gIHJldHVybiBpc05vZGUodmFsdWUpICYmIHZhbHVlLm5vZGVUeXBlID09PSAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBOb2RlIHtcbiAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZS5ub2RlVHlwZSA9PT0gJ251bWJlcic7XG59XG4iXX0=","import { destroyTask } from '../use/use-task';\nimport { getProxyTarget } from './common';\nimport { getDomListeners } from './listeners';\nimport { seal } from '../util/qdev';\nimport { directGetAttribute } from '../render/fast-calls';\nimport { isElement } from '../../testing/html';\nimport { assertQwikElement } from '../error/assert';\nimport { QScopedStyle } from '../util/markers';\nimport { createPropsState, createProxy, setObjectFlags } from './store';\nimport { _IMMUTABLE, _IMMUTABLE_PREFIX, Q_CTX, QObjectImmutable } from './constants';\nexport const HOST_FLAG_DIRTY = 1 << 0;\nexport const HOST_FLAG_NEED_ATTACH_LISTENER = 1 << 1;\nexport const HOST_FLAG_MOUNTED = 1 << 2;\nexport const HOST_FLAG_DYNAMIC = 1 << 3;\nexport const HOST_REMOVED = 1 << 4;\nexport const tryGetContext = (element) => {\n    return element[Q_CTX];\n};\nexport const getContext = (el, containerState) => {\n    assertQwikElement(el);\n    const ctx = tryGetContext(el);\n    if (ctx) {\n        return ctx;\n    }\n    const elCtx = createContext(el);\n    const elementID = directGetAttribute(el, 'q:id');\n    if (elementID) {\n        const pauseCtx = containerState.$pauseCtx$;\n        elCtx.$id$ = elementID;\n        if (pauseCtx) {\n            const { getObject, meta, refs } = pauseCtx;\n            if (isElement(el)) {\n                const refMap = refs[elementID];\n                if (refMap) {\n                    elCtx.$refMap$ = refMap.split(' ').map(getObject);\n                    elCtx.li = getDomListeners(elCtx, containerState.$containerEl$);\n                }\n            }\n            else {\n                const styleIds = el.getAttribute(QScopedStyle);\n                elCtx.$scopeIds$ = styleIds ? styleIds.split('|') : null;\n                const ctxMeta = meta[elementID];\n                if (ctxMeta) {\n                    const seq = ctxMeta.s;\n                    const host = ctxMeta.h;\n                    const contexts = ctxMeta.c;\n                    const tasks = ctxMeta.w;\n                    if (seq) {\n                        elCtx.$seq$ = seq.split(' ').map(getObject);\n                    }\n                    if (tasks) {\n                        elCtx.$tasks$ = tasks.split(' ').map(getObject);\n                    }\n                    if (contexts) {\n                        elCtx.$contexts$ = new Map();\n                        for (const part of contexts.split(' ')) {\n                            const [key, value] = part.split('=');\n                            elCtx.$contexts$.set(key, getObject(value));\n                        }\n                    }\n                    // Restore sequence scoping\n                    if (host) {\n                        const [renderQrl, props] = host.split(' ');\n                        elCtx.$flags$ = HOST_FLAG_MOUNTED;\n                        if (renderQrl) {\n                            elCtx.$componentQrl$ = getObject(renderQrl);\n                        }\n                        if (props) {\n                            const propsObj = getObject(props);\n                            elCtx.$props$ = propsObj;\n                            setObjectFlags(propsObj, QObjectImmutable);\n                            propsObj[_IMMUTABLE] = getImmutableFromProps(propsObj);\n                        }\n                        else {\n                            elCtx.$props$ = createProxy(createPropsState(), containerState);\n                        }\n                    }\n                }\n            }\n        }\n    }\n    return elCtx;\n};\nconst getImmutableFromProps = (props) => {\n    const immutable = {};\n    const target = getProxyTarget(props);\n    for (const key in target) {\n        if (key.startsWith(_IMMUTABLE_PREFIX)) {\n            immutable[key.slice(_IMMUTABLE_PREFIX.length)] = target[key];\n        }\n    }\n    return immutable;\n};\nexport const createContext = (element) => {\n    const ctx = {\n        $flags$: 0,\n        $id$: '',\n        $element$: element,\n        $refMap$: [],\n        li: [],\n        $tasks$: null,\n        $seq$: null,\n        $slots$: null,\n        $scopeIds$: null,\n        $appendStyles$: null,\n        $props$: null,\n        $vdom$: null,\n        $componentQrl$: null,\n        $contexts$: null,\n        $dynamicSlots$: null,\n        $parentCtx$: undefined,\n        $realParentCtx$: undefined,\n    };\n    seal(ctx);\n    element[Q_CTX] = ctx;\n    return ctx;\n};\nexport const cleanupContext = (elCtx, subsManager) => {\n    elCtx.$tasks$?.forEach((task) => {\n        subsManager.$clearSub$(task);\n        destroyTask(task);\n    });\n    elCtx.$componentQrl$ = null;\n    elCtx.$seq$ = null;\n    elCtx.$tasks$ = null;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS9zdGF0ZS9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQXlCLE1BQU0saUJBQWlCLENBQUM7QUFNckUsT0FBTyxFQUFFLGNBQWMsRUFBNEIsTUFBTSxVQUFVLENBQUM7QUFFcEUsT0FBTyxFQUFFLGVBQWUsRUFBaUIsTUFBTSxhQUFhLENBQUM7QUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBTXJGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBc0NuQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdB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QUssQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzVCLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ25CLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgT25SZW5kZXJGbiB9IGZyb20gJy4uL2NvbXBvbmVudC9jb21wb25lbnQucHVibGljJztcbmltcG9ydCB7IGRlc3Ryb3lUYXNrLCB0eXBlIFN1YnNjcmliZXJFZmZlY3QgfSBmcm9tICcuLi91c2UvdXNlLXRhc2snO1xuaW1wb3J0IHR5cGUgeyBRUkxJbnRlcm5hbCB9IGZyb20gJy4uL3FybC9xcmwtY2xhc3MnO1xuaW1wb3J0IHR5cGUgeyBRUkwgfSBmcm9tICcuLi9xcmwvcXJsLnB1YmxpYyc7XG5pbXBvcnQgdHlwZSB7IFN0eWxlQXBwZW5kIH0gZnJvbSAnLi4vdXNlL3VzZS1jb3JlJztcbmltcG9ydCB0eXBlIHsgUHJvY2Vzc2VkSlNYTm9kZSB9IGZyb20gJy4uL3JlbmRlci9kb20vcmVuZGVyLWRvbSc7XG5pbXBvcnQgdHlwZSB7IFF3aWtFbGVtZW50LCBWaXJ0dWFsRWxlbWVudCB9IGZyb20gJy4uL3JlbmRlci9kb20vdmlydHVhbC1lbGVtZW50JztcbmltcG9ydCB7IGdldFByb3h5VGFyZ2V0LCB0eXBlIFN1YnNjcmlwdGlvbk1hbmFnZXIgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgdHlwZSB7IENvbnRhaW5lclN0YXRlIH0gZnJvbSAnLi4vY29udGFpbmVyL2NvbnRhaW5lcic7XG5pbXBvcnQgeyBnZXREb21MaXN0ZW5lcnMsIHR5cGUgTGlzdGVuZXIgfSBmcm9tICcuL2xpc3RlbmVycyc7XG5pbXBvcnQgeyBzZWFsIH0gZnJvbSAnLi4vdXRpbC9xZGV2JztcbmltcG9ydCB7IGRpcmVjdEdldEF0dHJpYnV0ZSB9IGZyb20gJy4uL3JlbmRlci9mYXN0LWNhbGxzJztcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gJy4uLy4uL3Rlc3RpbmcvaHRtbCc7XG5pbXBvcnQgeyBhc3NlcnRRd2lrRWxlbWVudCB9IGZyb20gJy4uL2Vycm9yL2Fzc2VydCc7XG5pbXBvcnQgeyBRU2NvcGVkU3R5bGUgfSBmcm9tICcuLi91dGlsL21hcmtlcnMnO1xuaW1wb3J0IHsgY3JlYXRlUHJvcHNTdGF0ZSwgY3JlYXRlUHJveHksIHNldE9iamVjdEZsYWdzIH0gZnJvbSAnLi9zdG9yZSc7XG5pbXBvcnQgeyBfSU1NVVRBQkxFLCBfSU1NVVRBQkxFX1BSRUZJWCwgUV9DVFgsIFFPYmplY3RJbW11dGFibGUgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUUNvbnRleHRFdmVudHMge1xuICBbZXZlbnROYW1lOiBzdHJpbmddOiBRUkwgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjb25zdCBIT1NUX0ZMQUdfRElSVFkgPSAxIDw8IDA7XG5leHBvcnQgY29uc3QgSE9TVF9GTEFHX05FRURfQVRUQUNIX0xJU1RFTkVSID0gMSA8PCAxO1xuZXhwb3J0IGNvbnN0IEhPU1RfRkxBR19NT1VOVEVEID0gMSA8PCAyO1xuZXhwb3J0IGNvbnN0IEhPU1RfRkxBR19EWU5BTUlDID0gMSA8PCAzO1xuZXhwb3J0IGNvbnN0IEhPU1RfUkVNT1ZFRCA9IDEgPDwgNDtcblxuLyoqIFF3aWsgQ29udGV4dCBvZiBhbiBlbGVtZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBRQ29udGV4dCB7XG4gIC8qKiBWRE9NIGVsZW1lbnQuICovXG4gICRlbGVtZW50JDogUXdpa0VsZW1lbnQ7XG4gICRyZWZNYXAkOiBhbnlbXTtcbiAgJGZsYWdzJDogbnVtYmVyO1xuICAvKiogUUlkLCBmb3IgcmVmZXJlbmNlZCBjb21wb25lbnRzICovXG4gICRpZCQ6IHN0cmluZztcbiAgLyoqIFByb3h5IGZvciB0aGUgY29tcG9uZW50IHByb3BzICovXG4gICRwcm9wcyQ6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsO1xuICAvKiogVGhlIFFSTCBpZiB0aGlzIGlzIGBjb21wb25lbnQkYC13cmFwcGVkIGNvbXBvbmVudC4gKi9cbiAgJGNvbXBvbmVudFFybCQ6IFFSTEludGVybmFsPE9uUmVuZGVyRm48YW55Pj4gfCBudWxsO1xuICAvKiogVGhlIGV2ZW50IGhhbmRsZXJzIGZvciB0aGlzIGVsZW1lbnQgKi9cbiAgbGk6IExpc3RlbmVyW107XG4gIC8qKiBTZXF1ZW50aWFsIGRhdGEgc3RvcmUgZm9yIGhvb2tzLCBtYW5hZ2VkIGJ5IHVzZVNlcXVlbnRpYWxTY29wZS4gKi9cbiAgJHNlcSQ6IGFueVtdIHwgbnVsbDtcbiAgJHRhc2tzJDogU3Vic2NyaWJlckVmZmVjdFtdIHwgbnVsbDtcbiAgLyoqIFRoZSBwdWJsaWMgY29udGV4dHMgZGVmaW5lZCBvbiB0aGlzIChhbHdheXMgVmlydHVhbCkgY29tcG9uZW50LCBtYW5hZ2VkIGJ5IHVzZUNvbnRleHRQcm92aWRlci4gKi9cbiAgJGNvbnRleHRzJDogTWFwPHN0cmluZywgYW55PiB8IG51bGw7XG4gICRhcHBlbmRTdHlsZXMkOiBTdHlsZUFwcGVuZFtdIHwgbnVsbDtcbiAgJHNjb3BlSWRzJDogc3RyaW5nW10gfCBudWxsO1xuICAkdmRvbSQ6IFByb2Nlc3NlZEpTWE5vZGUgfCBudWxsO1xuICAkc2xvdHMkOiBQcm9jZXNzZWRKU1hOb2RlW10gfCBudWxsO1xuICAkZHluYW1pY1Nsb3RzJDogUUNvbnRleHRbXSB8IG51bGw7XG4gIC8qKlxuICAgKiBUaGUgUXdpayBDb250ZXh0IG9mIHRoZSB2aXJ0dWFsIHBhcmVudCBjb21wb25lbnQsIG51bGwgaWYgbm8gcGFyZW50LiBGb3IgYW4gcmVhbCBlbGVtZW50LCBpdCdzXG4gICAqIHRoZSBvd25lciB2aXJ0dWFsIGNvbXBvbmVudCwgYW5kIGZvciBhIHZpcnR1YWwgY29tcG9uZW50IGl0J3MgdGhlIHdyYXBwaW5nIHZpcnR1YWwgY29tcG9uZW50LlxuICAgKi9cbiAgJHBhcmVudEN0eCQ6IFFDb250ZXh0IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIER1cmluZyBTU1IsIHNlcGFyYXRlbHkgc3RvcmUgdGhlIGFjdHVhbCBwYXJlbnQgb2Ygc2xvdHRlZCBjb21wb25lbnRzIHRvIGNvcnJlY3RseSBwYXVzZVxuICAgKiBzdWJzY3JpcHRpb25zXG4gICAqL1xuICAkcmVhbFBhcmVudEN0eCQ6IFFDb250ZXh0IHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY29uc3QgdHJ5R2V0Q29udGV4dCA9IChlbGVtZW50OiBRd2lrRWxlbWVudCk6IFFDb250ZXh0IHwgdW5kZWZpbmVkID0+IHtcbiAgcmV0dXJuIChlbGVtZW50IGFzIGFueSlbUV9DVFhdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnRleHQgPSAoZWw6IFF3aWtFbGVtZW50LCBjb250YWluZXJTdGF0ZTogQ29udGFpbmVyU3RhdGUpOiBRQ29udGV4dCA9PiB7XG4gIGFzc2VydFF3aWtFbGVtZW50KGVsKTtcbiAgY29uc3QgY3R4ID0gdHJ5R2V0Q29udGV4dChlbCkhO1xuICBpZiAoY3R4KSB7XG4gICAgcmV0dXJuIGN0eDtcbiAgfVxuICBjb25zdCBlbEN0eCA9IGNyZWF0ZUNvbnRleHQoZWwpO1xuICBjb25zdCBlbGVtZW50SUQgPSBkaXJlY3RHZXRBdHRyaWJ1dGUoZWwsICdxOmlkJyk7XG4gIGlmIChlbGVtZW50SUQpIHtcbiAgICBjb25zdCBwYXVzZUN0eCA9IGNvbnRhaW5lclN0YXRlLiRwYXVzZUN0eCQ7XG4gICAgZWxDdHguJGlkJCA9IGVsZW1lbnRJRDtcbiAgICBpZiAocGF1c2VDdHgpIHtcbiAgICAgIGNvbnN0IHsgZ2V0T2JqZWN0LCBtZXRhLCByZWZzIH0gPSBwYXVzZUN0eDtcbiAgICAgIGlmIChpc0VsZW1lbnQoZWwpKSB7XG4gICAgICAgIGNvbnN0IHJlZk1hcCA9IHJlZnNbZWxlbWVudElEXTtcbiAgICAgICAgaWYgKHJlZk1hcCkge1xuICAgICAgICAgIGVsQ3R4LiRyZWZNYXAkID0gcmVmTWFwLnNwbGl0KCcgJykubWFwKGdldE9iamVjdCk7XG4gICAgICAgICAgZWxDdHgubGkgPSBnZXREb21MaXN0ZW5lcnMoZWxDdHgsIGNvbnRhaW5lclN0YXRlLiRjb250YWluZXJFbCQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdHlsZUlkcyA9IGVsLmdldEF0dHJpYnV0ZShRU2NvcGVkU3R5bGUpO1xuICAgICAgICBlbEN0eC4kc2NvcGVJZHMkID0gc3R5bGVJZHMgPyBzdHlsZUlkcy5zcGxpdCgnfCcpIDogbnVsbDtcblxuICAgICAgICBjb25zdCBjdHhNZXRhID0gbWV0YVtlbGVtZW50SURdO1xuICAgICAgICBpZiAoY3R4TWV0YSkge1xuICAgICAgICAgIGNvbnN0IHNlcSA9IGN0eE1ldGEucztcbiAgICAgICAgICBjb25zdCBob3N0ID0gY3R4TWV0YS5oO1xuICAgICAgICAgIGNvbnN0IGNvbnRleHRzID0gY3R4TWV0YS5jO1xuICAgICAgICAgIGNvbnN0IHRhc2tzID0gY3R4TWV0YS53O1xuICAgICAgICAgIGlmIChzZXEpIHtcbiAgICAgICAgICAgIGVsQ3R4LiRzZXEkID0gc2VxLnNwbGl0KCcgJykubWFwKGdldE9iamVjdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0YXNrcykge1xuICAgICAgICAgICAgZWxDdHguJHRhc2tzJCA9IHRhc2tzLnNwbGl0KCcgJykubWFwKGdldE9iamVjdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjb250ZXh0cykge1xuICAgICAgICAgICAgZWxDdHguJGNvbnRleHRzJCA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcGFydCBvZiBjb250ZXh0cy5zcGxpdCgnICcpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IHBhcnQuc3BsaXQoJz0nKTtcbiAgICAgICAgICAgICAgZWxDdHguJGNvbnRleHRzJC5zZXQoa2V5LCBnZXRPYmplY3QodmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBSZXN0b3JlIHNlcXVlbmNlIHNjb3BpbmdcbiAgICAgICAgICBpZiAoaG9zdCkge1xuICAgICAgICAgICAgY29uc3QgW3JlbmRlclFybCwgcHJvcHNdID0gaG9zdC5zcGxpdCgnICcpIGFzIFtzdHJpbmcgfCB1bmRlZmluZWQsIHN0cmluZyB8IHVuZGVmaW5lZF07XG4gICAgICAgICAgICBlbEN0eC4kZmxhZ3MkID0gSE9TVF9GTEFHX01PVU5URUQ7XG4gICAgICAgICAgICBpZiAocmVuZGVyUXJsKSB7XG4gICAgICAgICAgICAgIGVsQ3R4LiRjb21wb25lbnRRcmwkID0gZ2V0T2JqZWN0KHJlbmRlclFybCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgICAgY29uc3QgcHJvcHNPYmogPSBnZXRPYmplY3QocHJvcHMpO1xuICAgICAgICAgICAgICBlbEN0eC4kcHJvcHMkID0gcHJvcHNPYmo7XG4gICAgICAgICAgICAgIHNldE9iamVjdEZsYWdzKHByb3BzT2JqLCBRT2JqZWN0SW1tdXRhYmxlKTtcbiAgICAgICAgICAgICAgcHJvcHNPYmpbX0lNTVVUQUJMRV0gPSBnZXRJbW11dGFibGVGcm9tUHJvcHMocHJvcHNPYmopO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZWxDdHguJHByb3BzJCA9IGNyZWF0ZVByb3h5KGNyZWF0ZVByb3BzU3RhdGUoKSwgY29udGFpbmVyU3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlbEN0eDtcbn07XG5cbmNvbnN0IGdldEltbXV0YWJsZUZyb21Qcm9wcyA9IChwcm9wczogUmVjb3JkPHN0cmluZywgYW55Pik6IFJlY29yZDxzdHJpbmcsIGFueT4gPT4ge1xuICBjb25zdCBpbW11dGFibGU6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgY29uc3QgdGFyZ2V0ID0gZ2V0UHJveHlUYXJnZXQocHJvcHMpO1xuICBmb3IgKGNvbnN0IGtleSBpbiB0YXJnZXQpIHtcbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoX0lNTVVUQUJMRV9QUkVGSVgpKSB7XG4gICAgICBpbW11dGFibGVba2V5LnNsaWNlKF9JTU1VVEFCTEVfUFJFRklYLmxlbmd0aCldID0gdGFyZ2V0W2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiBpbW11dGFibGU7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29udGV4dCA9IChlbGVtZW50OiBFbGVtZW50IHwgVmlydHVhbEVsZW1lbnQpOiBRQ29udGV4dCA9PiB7XG4gIGNvbnN0IGN0eCA9IHtcbiAgICAkZmxhZ3MkOiAwLFxuICAgICRpZCQ6ICcnLFxuICAgICRlbGVtZW50JDogZWxlbWVudCxcbiAgICAkcmVmTWFwJDogW10sXG4gICAgbGk6IFtdLFxuICAgICR0YXNrcyQ6IG51bGwsXG4gICAgJHNlcSQ6IG51bGwsXG4gICAgJHNsb3RzJDogbnVsbCxcbiAgICAkc2NvcGVJZHMkOiBudWxsLFxuICAgICRhcHBlbmRTdHlsZXMkOiBudWxsLFxuICAgICRwcm9wcyQ6IG51bGwsXG4gICAgJHZkb20kOiBudWxsLFxuICAgICRjb21wb25lbnRRcmwkOiBudWxsLFxuICAgICRjb250ZXh0cyQ6IG51bGwsXG4gICAgJGR5bmFtaWNTbG90cyQ6IG51bGwsXG4gICAgJHBhcmVudEN0eCQ6IHVuZGVmaW5lZCxcbiAgICAkcmVhbFBhcmVudEN0eCQ6IHVuZGVmaW5lZCxcbiAgfSBhcyBRQ29udGV4dDtcbiAgc2VhbChjdHgpO1xuICAoZWxlbWVudCBhcyBhbnkpW1FfQ1RYXSA9IGN0eDtcbiAgcmV0dXJuIGN0eDtcbn07XG5cbmV4cG9ydCBjb25zdCBjbGVhbnVwQ29udGV4dCA9IChlbEN0eDogUUNvbnRleHQsIHN1YnNNYW5hZ2VyOiBTdWJzY3JpcHRpb25NYW5hZ2VyKSA9PiB7XG4gIGVsQ3R4LiR0YXNrcyQ/LmZvckVhY2goKHRhc2spID0+IHtcbiAgICBzdWJzTWFuYWdlci4kY2xlYXJTdWIkKHRhc2spO1xuICAgIGRlc3Ryb3lUYXNrKHRhc2spO1xuICB9KTtcbiAgZWxDdHguJGNvbXBvbmVudFFybCQgPSBudWxsO1xuICBlbEN0eC4kc2VxJCA9IG51bGw7XG4gIGVsQ3R4LiR0YXNrcyQgPSBudWxsO1xufTtcbiJdfQ==","import { tryGetInvokeContext } from './use-core';\nlet _locale = undefined;\n/**\n * Retrieve the current locale.\n *\n * If no current locale and there is no `defaultLocale` the function throws an error.\n *\n * @returns The locale.\n * @internal\n */\nexport function getLocale(defaultLocale) {\n    if (_locale === undefined) {\n        const ctx = tryGetInvokeContext();\n        if (ctx && ctx.$locale$) {\n            return ctx.$locale$;\n        }\n        if (defaultLocale !== undefined) {\n            return defaultLocale;\n        }\n        throw new Error('Reading `locale` outside of context.');\n    }\n    return _locale;\n}\n/**\n * Override the `getLocale` with `lang` within the `fn` execution.\n *\n * @internal\n */\nexport function withLocale(locale, fn) {\n    const previousLang = _locale;\n    try {\n        _locale = locale;\n        return fn();\n    }\n    finally {\n        _locale = previousLang;\n    }\n}\n/**\n * Globally set a lang.\n *\n * This can be used only in browser. Server execution requires that each request could potentially\n * be a different lang, therefore setting a global lang would produce incorrect responses.\n *\n * @param lang\n */\nexport function setLocale(locale) {\n    _locale = locale;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWxvY2FsZS5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS91c2UvdXNlLWxvY2FsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakQsSUFBSSxPQUFPLEdBQXVCLFNBQVMsQ0FBQztBQUU1Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxhQUFzQjtJQUM5QyxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMxQixNQUFNLEdBQUcsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1FBQ2xDLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4QixPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBSSxNQUFjLEVBQUUsRUFBVztJQUN2RCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUM7SUFDN0IsSUFBSSxDQUFDO1FBQ0gsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUNqQixPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQ2QsQ0FBQztZQUFTLENBQUM7UUFDVCxPQUFPLEdBQUcsWUFBWSxDQUFDO0lBQ3pCLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsTUFBYztJQUN0QyxPQUFPLEdBQUcsTUFBTSxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0cnlHZXRJbnZva2VDb250ZXh0IH0gZnJvbSAnLi91c2UtY29yZSc7XG5cbmxldCBfbG9jYWxlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbi8qKlxuICogUmV0cmlldmUgdGhlIGN1cnJlbnQgbG9jYWxlLlxuICpcbiAqIElmIG5vIGN1cnJlbnQgbG9jYWxlIGFuZCB0aGVyZSBpcyBubyBgZGVmYXVsdExvY2FsZWAgdGhlIGZ1bmN0aW9uIHRocm93cyBhbiBlcnJvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbG9jYWxlLlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbGUoZGVmYXVsdExvY2FsZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChfbG9jYWxlID09PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBjdHggPSB0cnlHZXRJbnZva2VDb250ZXh0KCk7XG4gICAgaWYgKGN0eCAmJiBjdHguJGxvY2FsZSQpIHtcbiAgICAgIHJldHVybiBjdHguJGxvY2FsZSQ7XG4gICAgfVxuICAgIGlmIChkZWZhdWx0TG9jYWxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0TG9jYWxlO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlYWRpbmcgYGxvY2FsZWAgb3V0c2lkZSBvZiBjb250ZXh0LicpO1xuICB9XG4gIHJldHVybiBfbG9jYWxlO1xufVxuXG4vKipcbiAqIE92ZXJyaWRlIHRoZSBgZ2V0TG9jYWxlYCB3aXRoIGBsYW5nYCB3aXRoaW4gdGhlIGBmbmAgZXhlY3V0aW9uLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aExvY2FsZTxUPihsb2NhbGU6IHN0cmluZywgZm46ICgpID0+IFQpOiBUIHtcbiAgY29uc3QgcHJldmlvdXNMYW5nID0gX2xvY2FsZTtcbiAgdHJ5IHtcbiAgICBfbG9jYWxlID0gbG9jYWxlO1xuICAgIHJldHVybiBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIF9sb2NhbGUgPSBwcmV2aW91c0xhbmc7XG4gIH1cbn1cblxuLyoqXG4gKiBHbG9iYWxseSBzZXQgYSBsYW5nLlxuICpcbiAqIFRoaXMgY2FuIGJlIHVzZWQgb25seSBpbiBicm93c2VyLiBTZXJ2ZXIgZXhlY3V0aW9uIHJlcXVpcmVzIHRoYXQgZWFjaCByZXF1ZXN0IGNvdWxkIHBvdGVudGlhbGx5XG4gKiBiZSBhIGRpZmZlcmVudCBsYW5nLCB0aGVyZWZvcmUgc2V0dGluZyBhIGdsb2JhbCBsYW5nIHdvdWxkIHByb2R1Y2UgaW5jb3JyZWN0IHJlc3BvbnNlcy5cbiAqXG4gKiBAcGFyYW0gbGFuZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0TG9jYWxlKGxvY2FsZTogc3RyaW5nKTogdm9pZCB7XG4gIF9sb2NhbGUgPSBsb2NhbGU7XG59XG4iXX0=","import { _getContainerState } from '../container/container';\nimport { assertDefined } from '../error/assert';\nimport { qError, QError_useInvokeContext, QError_useMethodOutsideContext } from '../error/error';\nimport { getContext, HOST_FLAG_DYNAMIC } from '../state/context';\nimport { ComputedEvent, QContainerSelector, QLocaleAttr, RenderEvent, ResourceEvent, TaskEvent, } from '../util/markers';\nimport { isPromise } from '../util/promises';\nimport { seal } from '../util/qdev';\nimport { isArray } from '../util/types';\nimport { setLocale } from './use-locale';\nimport { isSignal } from '../state/signal';\nimport { unwrapStore } from '../index';\nlet _context;\n/** @public */\nexport const tryGetInvokeContext = () => {\n    if (!_context) {\n        const context = typeof document !== 'undefined' && document && document.__q_context__;\n        if (!context) {\n            return undefined;\n        }\n        if (isArray(context)) {\n            return (document.__q_context__ = newInvokeContextFromTuple(context));\n        }\n        return context;\n    }\n    return _context;\n};\nexport const getInvokeContext = () => {\n    const ctx = tryGetInvokeContext();\n    if (!ctx) {\n        throw qError(QError_useMethodOutsideContext);\n    }\n    return ctx;\n};\nexport const useInvokeContext = () => {\n    const ctx = tryGetInvokeContext();\n    if (!ctx || ctx.$event$ !== RenderEvent) {\n        throw qError(QError_useInvokeContext);\n    }\n    assertDefined(ctx.$hostElement$, `invoke: $hostElement$ must be defined`, ctx);\n    assertDefined(ctx.$waitOn$, `invoke: $waitOn$ must be defined`, ctx);\n    assertDefined(ctx.$renderCtx$, `invoke: $renderCtx$ must be defined`, ctx);\n    assertDefined(ctx.$subscriber$, `invoke: $subscriber$ must be defined`, ctx);\n    return ctx;\n};\nexport const useContainerState = () => {\n    const ctx = useInvokeContext();\n    return ctx.$renderCtx$.$static$.$containerState$;\n};\nexport function useBindInvokeContext(fn) {\n    if (fn == null) {\n        return fn;\n    }\n    const ctx = getInvokeContext();\n    return function (...args) {\n        return (invokeApply).call(this, ctx, fn, args);\n    };\n}\n/** Call a function with the given InvokeContext and given arguments. */\nexport function invoke(context, fn, ...args) {\n    return invokeApply.call(this, context, fn, args);\n}\n/** Call a function with the given InvokeContext and array of arguments. */\nexport function invokeApply(context, fn, args) {\n    const previousContext = _context;\n    let returnValue;\n    try {\n        _context = context;\n        returnValue = fn.apply(this, args);\n    }\n    finally {\n        _context = previousContext;\n    }\n    return returnValue;\n}\nexport const waitAndRun = (ctx, callback) => {\n    const waitOn = ctx.$waitOn$;\n    if (waitOn.length === 0) {\n        const result = callback();\n        if (isPromise(result)) {\n            waitOn.push(result);\n        }\n    }\n    else {\n        waitOn.push(Promise.all(waitOn).then(callback));\n    }\n};\nexport const newInvokeContextFromTuple = ([element, event, url]) => {\n    const container = element.closest(QContainerSelector);\n    const locale = container?.getAttribute(QLocaleAttr) || undefined;\n    locale && setLocale(locale);\n    return newInvokeContext(locale, undefined, element, event, url);\n};\n// TODO how about putting url and locale (and event/custom?) in to a \"static\" object\nexport const newInvokeContext = (locale, hostElement, element, event, url) => {\n    // ServerRequestEvent has .locale, but it's not always defined.\n    const $locale$ = locale || (typeof event === 'object' && event && 'locale' in event ? event.locale : undefined);\n    const ctx = {\n        $url$: url,\n        $i$: 0,\n        $hostElement$: hostElement,\n        $element$: element,\n        $event$: event,\n        $qrl$: undefined,\n        $waitOn$: undefined,\n        $subscriber$: undefined,\n        $renderCtx$: undefined,\n        $locale$,\n    };\n    seal(ctx);\n    return ctx;\n};\nexport const getWrappingContainer = (el) => {\n    return el.closest(QContainerSelector);\n};\n/**\n * Get the value of the expression without tracking listeners. A function will be invoked, signals\n * will return their value, and stores will be unwrapped (they return the backing object).\n *\n * When you pass a function, you can also pass additional arguments that the function will receive.\n *\n * Note that stores are not unwrapped recursively.\n *\n * @param expr - The function or object to evaluate without tracking.\n * @param args - Additional arguments to pass when `expr` is a function.\n * @public\n */\nexport const untrack = (expr, ...args) => {\n    if (typeof expr === 'function') {\n        return invoke(undefined, expr, ...args);\n    }\n    if (isSignal(expr)) {\n        return expr.untrackedValue;\n    }\n    return unwrapStore(expr);\n};\nconst trackInvocation = /*#__PURE__*/ newInvokeContext(undefined, undefined, undefined, RenderEvent);\n/**\n * Mark sub as a listener for the signal\n *\n * @public\n */\nexport const trackSignal = (signal, sub) => {\n    trackInvocation.$subscriber$ = sub;\n    return invoke(trackInvocation, () => signal.value);\n};\n/** @internal */\nexport const _getContextElement = () => {\n    const iCtx = tryGetInvokeContext();\n    if (iCtx) {\n        return (iCtx.$element$ ?? iCtx.$hostElement$ ?? iCtx.$qrl$?.$setContainer$(undefined));\n    }\n};\n/** @internal */\nexport const _getContextEvent = () => {\n    const iCtx = tryGetInvokeContext();\n    if (iCtx) {\n        return iCtx.$event$;\n    }\n};\n/** @internal */\nexport const _jsxBranch = (input) => {\n    const iCtx = tryGetInvokeContext();\n    if (iCtx && iCtx.$hostElement$ && iCtx.$renderCtx$) {\n        const hostElement = iCtx.$hostElement$;\n        const elCtx = getContext(hostElement, iCtx.$renderCtx$.$static$.$containerState$);\n        elCtx.$flags$ |= HOST_FLAG_DYNAMIC;\n    }\n    return input;\n};\n/** @internal */\nexport const _waitUntilRendered = (elm) => {\n    const containerEl = getWrappingContainer(elm);\n    if (!containerEl) {\n        return Promise.resolve();\n    }\n    const containerState = _getContainerState(containerEl);\n    return containerState.$renderPromise$ ?? Promise.resolve();\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWNvcmUuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvdXNlL3VzZS1jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUFFLHVCQUF1QixFQUFFLDhCQUE4QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLakcsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLFNBQVMsR0FDVixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQUUsUUFBUSxFQUFvQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFrRXZDLElBQUksUUFBbUMsQ0FBQztBQUV4QyxjQUFjO0FBQ2QsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsR0FBOEIsRUFBRTtJQUNqRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLE9BQU8sR0FBRyxPQUFPLFFBQVEsS0FBSyxXQUFXLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFDdEYsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lB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QVUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNsRixLQUFLLENBQUMsT0FBTyxJQUFJLGlCQUFpQixDQUFDO0lBQ3JDLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGLGdCQUFnQjtBQUNoQixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEdBQVksRUFBRSxFQUFFO0lBQ2pELE1BQU0sV0FBVyxHQUFHLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBQ0QsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkQsT0FBTyxjQUFjLENBQUMsZUFBZSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUM3RCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfZ2V0Q29udGFpbmVyU3RhdGUgfSBmcm9tICcuLi9jb250YWluZXIvY29udGFpbmVyJztcbmltcG9ydCB0eXBlIHsgUXdpa0RvY3VtZW50IH0gZnJvbSAnLi4vZG9jdW1lbnQnO1xuaW1wb3J0IHsgYXNzZXJ0RGVmaW5lZCB9IGZyb20gJy4uL2Vycm9yL2Fzc2VydCc7XG5pbXBvcnQgeyBxRXJyb3IsIFFFcnJvcl91c2VJbnZva2VDb250ZXh0LCBRRXJyb3JfdXNlTWV0aG9kT3V0c2lkZUNvbnRleHQgfSBmcm9tICcuLi9lcnJvci9lcnJvcic7XG5pbXBvcnQgdHlwZSB7IFFSTEludGVybmFsIH0gZnJvbSAnLi4vcXJsL3FybC1jbGFzcyc7XG5pbXBvcnQgdHlwZSB7IFFSTCB9IGZyb20gJy4uL3FybC9xcmwucHVibGljJztcbmltcG9ydCB0eXBlIHsgUXdpa0VsZW1lbnQgfSBmcm9tICcuLi9yZW5kZXIvZG9tL3ZpcnR1YWwtZWxlbWVudCc7XG5pbXBvcnQgdHlwZSB7IFJlbmRlckNvbnRleHQgfSBmcm9tICcuLi9yZW5kZXIvdHlwZXMnO1xuaW1wb3J0IHsgZ2V0Q29udGV4dCwgSE9TVF9GTEFHX0RZTkFNSUMgfSBmcm9tICcuLi9zdGF0ZS9jb250ZXh0JztcbmltcG9ydCB7XG4gIENvbXB1dGVkRXZlbnQsXG4gIFFDb250YWluZXJTZWxlY3RvcixcbiAgUUxvY2FsZUF0dHIsXG4gIFJlbmRlckV2ZW50LFxuICBSZXNvdXJjZUV2ZW50LFxuICBUYXNrRXZlbnQsXG59IGZyb20gJy4uL3V0aWwvbWFya2Vycyc7XG5pbXBvcnQgeyBpc1Byb21pc2UgfSBmcm9tICcuLi91dGlsL3Byb21pc2VzJztcbmltcG9ydCB7IHNlYWwgfSBmcm9tICcuLi91dGlsL3FkZXYnO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJy4uL3V0aWwvdHlwZXMnO1xuaW1wb3J0IHsgc2V0TG9jYWxlIH0gZnJvbSAnLi91c2UtbG9jYWxlJztcbmltcG9ydCB0eXBlIHsgU3Vic2NyaWJlciB9IGZyb20gJy4uL3N0YXRlL2NvbW1vbic7XG5pbXBvcnQgeyBpc1NpZ25hbCwgdHlwZSBTaWduYWwsIHR5cGUgU2lnbmFsSW50ZXJuYWwgfSBmcm9tICcuLi9zdGF0ZS9zaWduYWwnO1xuaW1wb3J0IHsgdW53cmFwU3RvcmUgfSBmcm9tICcuLi9pbmRleCc7XG5cbmRlY2xhcmUgY29uc3QgZG9jdW1lbnQ6IFF3aWtEb2N1bWVudDtcblxuLy8gU2ltcGxpZmllZCB2ZXJzaW9uIG9mIGBTZXJ2ZXJSZXF1ZXN0RXZlbnRgIGZyb20gYEBidWlsZGVyLmlvL3F3aWstY2l0eWAgcGFja2FnZS5cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxpZmllZFNlcnZlclJlcXVlc3RFdmVudDxUID0gdW5rbm93bj4ge1xuICB1cmw6IFVSTDtcbiAgbG9jYWxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHJlcXVlc3Q6IFJlcXVlc3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3R5bGVBcHBlbmQge1xuICBzdHlsZUlkOiBzdHJpbmc7XG4gIGNvbnRlbnQ6IHN0cmluZyB8IG51bGw7XG59XG5cbi8vIFNpbXBsaWZpZWQgdmVyc2lvbiBvZiBgU2VydmVyUmVxdWVzdEV2ZW50YCBmcm9tIGBAYnVpbGRlci5pby9xd2lrLWNpdHlgIHBhY2thZ2UuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlclJlcXVlc3RFdmVudDxUID0gdW5rbm93bj4ge1xuICB1cmw6IFVSTDtcbiAgbG9jYWxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHJlcXVlc3Q6IFJlcXVlc3Q7XG59XG5cbmV4cG9ydCB0eXBlIFBvc3NpYmxlRXZlbnRzID1cbiAgfCBFdmVudFxuICB8IFNpbXBsaWZpZWRTZXJ2ZXJSZXF1ZXN0RXZlbnRcbiAgfCB0eXBlb2YgVGFza0V2ZW50XG4gIHwgdHlwZW9mIFJlbmRlckV2ZW50XG4gIHwgdHlwZW9mIENvbXB1dGVkRXZlbnRcbiAgfCB0eXBlb2YgUmVzb3VyY2VFdmVudDtcblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJJbnZva2VDb250ZXh0IGV4dGVuZHMgSW52b2tlQ29udGV4dCB7XG4gICRyZW5kZXJDdHgkOiBSZW5kZXJDb250ZXh0O1xuICAvKiogVGhlIHBhcmVudCBkb2N1bWVudCAqL1xuICAkZG9jJDogRG9jdW1lbnQ7XG4gIC8vIFRoZSBiZWxvdyBhcmUganVzdCBhbHdheXMtZGVmaW5lZCBhdHRyaWJ1dGVzIG9mIEludm9rZUNvbnRleHQuXG4gICRob3N0RWxlbWVudCQ6IFF3aWtFbGVtZW50O1xuICAkZXZlbnQkOiBQb3NzaWJsZUV2ZW50cztcbiAgJHdhaXRPbiQ6IFByb21pc2U8dW5rbm93bj5bXTtcbiAgJHN1YnNjcmliZXIkOiBTdWJzY3JpYmVyIHwgbnVsbDtcbn1cblxuZXhwb3J0IHR5cGUgSW52b2tlVHVwbGUgPSBbRWxlbWVudCwgRXZlbnQsIFVSTD9dO1xuXG4vKiogVGhlIHNoYXJlZCBzdGF0ZSBkdXJpbmcgYW4gaW52b2tlKCkgY2FsbCAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZva2VDb250ZXh0IHtcbiAgLyogVGhlIFVSTCBvZiB0aGUgUVJMICovXG4gICR1cmwkOiBVUkwgfCB1bmRlZmluZWQ7XG4gIC8qKiBUaGUgbmV4dCBhdmFpbGFibGUgaW5kZXggZm9yIHRoZSBzZXF1ZW50aWFsU2NvcGUgYXJyYXkgKi9cbiAgJGkkOiBudW1iZXI7XG4gIC8qKiBUaGUgVmlydHVhbCBwYXJlbnQgY29tcG9uZW50IGZvciB0aGUgY3VycmVudCBjb21wb25lbnQgY29kZSAqL1xuICAkaG9zdEVsZW1lbnQkOiBRd2lrRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgLyoqIFRoZSBjdXJyZW50IERPTSBlbGVtZW50ICovXG4gICRlbGVtZW50JDogRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgLyoqIFRoZSBldmVudCB3ZSdyZSBjdXJyZW50bHkgaGFuZGxpbmcgKi9cbiAgJGV2ZW50JDogUG9zc2libGVFdmVudHMgfCB1bmRlZmluZWQ7XG4gIC8qKiBUaGUgUVJMIGZ1bmN0aW9uIHdlJ3JlIGN1cnJlbnRseSBleGVjdXRpbmcgKi9cbiAgJHFybCQ6IFFSTCB8IHVuZGVmaW5lZDtcbiAgLyoqIFByb21pc2VzIHRoYXQgbmVlZCBhd2FpdGluZyBiZWZvcmUgdGhlIGN1cnJlbnQgaW52b2NhdGlvbiBpcyBkb25lICovXG4gICR3YWl0T24kOiBQcm9taXNlPHVua25vd24+W10gfCB1bmRlZmluZWQ7XG4gIC8qKiBUaGUgY3VycmVudCBzdWJzY3JpYmVyIGZvciByZWdpc3RlcmluZyBzaWduYWwgcmVhZHMgKi9cbiAgJHN1YnNjcmliZXIkOiBTdWJzY3JpYmVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgJHJlbmRlckN0eCQ6IFJlbmRlckNvbnRleHQgfCB1bmRlZmluZWQ7XG4gICRsb2NhbGUkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmxldCBfY29udGV4dDogSW52b2tlQ29udGV4dCB8IHVuZGVmaW5lZDtcblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCBjb25zdCB0cnlHZXRJbnZva2VDb250ZXh0ID0gKCk6IEludm9rZUNvbnRleHQgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoIV9jb250ZXh0KSB7XG4gICAgY29uc3QgY29udGV4dCA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQuX19xX2NvbnRleHRfXztcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChpc0FycmF5KGNvbnRleHQpKSB7XG4gICAgICByZXR1cm4gKGRvY3VtZW50Ll9fcV9jb250ZXh0X18gPSBuZXdJbnZva2VDb250ZXh0RnJvbVR1cGxlKGNvbnRleHQgYXMgSW52b2tlVHVwbGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRleHQgYXMgSW52b2tlQ29udGV4dDtcbiAgfVxuICByZXR1cm4gX2NvbnRleHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW52b2tlQ29udGV4dCA9ICgpOiBJbnZva2VDb250ZXh0ID0+IHtcbiAgY29uc3QgY3R4ID0gdHJ5R2V0SW52b2tlQ29udGV4dCgpO1xuICBpZiAoIWN0eCkge1xuICAgIHRocm93IHFFcnJvcihRRXJyb3JfdXNlTWV0aG9kT3V0c2lkZUNvbnRleHQpO1xuICB9XG4gIHJldHVybiBjdHg7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW52b2tlQ29udGV4dCA9ICgpOiBSZW5kZXJJbnZva2VDb250ZXh0ID0+IHtcbiAgY29uc3QgY3R4ID0gdHJ5R2V0SW52b2tlQ29udGV4dCgpO1xuICBpZiAoIWN0eCB8fCBjdHguJGV2ZW50JCAhPT0gUmVuZGVyRXZlbnQpIHtcbiAgICB0aHJvdyBxRXJyb3IoUUVycm9yX3VzZUludm9rZUNvbnRleHQpO1xuICB9XG4gIGFzc2VydERlZmluZWQoY3R4LiRob3N0RWxlbWVudCQsIGBpbnZva2U6ICRob3N0RWxlbWVudCQgbXVzdCBiZSBkZWZpbmVkYCwgY3R4KTtcbiAgYXNzZXJ0RGVmaW5lZChjdHguJHdhaXRPbiQsIGBpbnZva2U6ICR3YWl0T24kIG11c3QgYmUgZGVmaW5lZGAsIGN0eCk7XG4gIGFzc2VydERlZmluZWQoY3R4LiRyZW5kZXJDdHgkLCBgaW52b2tlOiAkcmVuZGVyQ3R4JCBtdXN0IGJlIGRlZmluZWRgLCBjdHgpO1xuICBhc3NlcnREZWZpbmVkKGN0eC4kc3Vic2NyaWJlciQsIGBpbnZva2U6ICRzdWJzY3JpYmVyJCBtdXN0IGJlIGRlZmluZWRgLCBjdHgpO1xuXG4gIHJldHVybiBjdHggYXMgUmVuZGVySW52b2tlQ29udGV4dDtcbn07XG5leHBvcnQgY29uc3QgdXNlQ29udGFpbmVyU3RhdGUgPSAoKSA9PiB7XG4gIGNvbnN0IGN0eCA9IHVzZUludm9rZUNvbnRleHQoKTtcbiAgcmV0dXJuIGN0eC4kcmVuZGVyQ3R4JC4kc3RhdGljJC4kY29udGFpbmVyU3RhdGUkO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUJpbmRJbnZva2VDb250ZXh0PEZOIGV4dGVuZHMgKC4uLmFyZ3M6IGFueSkgPT4gYW55PihcbiAgdGhpczogdW5rbm93bixcbiAgZm46IEZOIHwgdW5kZWZpbmVkXG4pOiB0eXBlb2YgZm4ge1xuICBpZiAoZm4gPT0gbnVsbCkge1xuICAgIHJldHVybiBmbjtcbiAgfVxuICBjb25zdCBjdHggPSBnZXRJbnZva2VDb250ZXh0KCk7XG4gIHJldHVybiBmdW5jdGlvbiAodGhpczogdW5rbm93biwgLi4uYXJnczogUGFyYW1ldGVyczxGTj4pIHtcbiAgICByZXR1cm4gKGludm9rZUFwcGx5PEZOPikuY2FsbCh0aGlzLCBjdHgsIGZuISwgYXJncyk7XG4gIH0gYXMgRk47XG59XG5cbi8qKiBDYWxsIGEgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gSW52b2tlQ29udGV4dCBhbmQgZ2l2ZW4gYXJndW1lbnRzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludm9rZTxGTiBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PihcbiAgdGhpczogdW5rbm93bixcbiAgY29udGV4dDogSW52b2tlQ29udGV4dCB8IHVuZGVmaW5lZCxcbiAgZm46IEZOLFxuICAuLi5hcmdzOiBQYXJhbWV0ZXJzPEZOPlxuKTogUmV0dXJuVHlwZTxGTj4ge1xuICByZXR1cm4gaW52b2tlQXBwbHkuY2FsbCh0aGlzLCBjb250ZXh0LCBmbiwgYXJncyk7XG59XG5cbi8qKiBDYWxsIGEgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gSW52b2tlQ29udGV4dCBhbmQgYXJyYXkgb2YgYXJndW1lbnRzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludm9rZUFwcGx5PEZOIGV4dGVuZHMgKC4uLmFyZ3M6IGFueSkgPT4gYW55PihcbiAgdGhpczogdW5rbm93bixcbiAgY29udGV4dDogSW52b2tlQ29udGV4dCB8IHVuZGVmaW5lZCxcbiAgZm46IEZOLFxuICBhcmdzOiBQYXJhbWV0ZXJzPEZOPlxuKTogUmV0dXJuVHlwZTxGTj4ge1xuICBjb25zdCBwcmV2aW91c0NvbnRleHQgPSBfY29udGV4dDtcbiAgbGV0IHJldHVyblZhbHVlOiBSZXR1cm5UeXBlPEZOPjtcbiAgdHJ5IHtcbiAgICBfY29udGV4dCA9IGNvbnRleHQ7XG4gICAgcmV0dXJuVmFsdWUgPSBmbi5hcHBseSh0aGlzLCBhcmdzKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBfY29udGV4dCA9IHByZXZpb3VzQ29udGV4dDtcbiAgfVxuICByZXR1cm4gcmV0dXJuVmFsdWU7XG59XG5cbmV4cG9ydCBjb25zdCB3YWl0QW5kUnVuID0gKGN0eDogUmVuZGVySW52b2tlQ29udGV4dCwgY2FsbGJhY2s6ICgpID0+IHVua25vd24pID0+IHtcbiAgY29uc3Qgd2FpdE9uID0gY3R4LiR3YWl0T24kO1xuICBpZiAod2FpdE9uLmxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGNhbGxiYWNrKCk7XG4gICAgaWYgKGlzUHJvbWlzZShyZXN1bHQpKSB7XG4gICAgICB3YWl0T24ucHVzaChyZXN1bHQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB3YWl0T24ucHVzaChQcm9taXNlLmFsbCh3YWl0T24pLnRoZW4oY2FsbGJhY2spKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IG5ld0ludm9rZUNvbnRleHRGcm9tVHVwbGUgPSAoW2VsZW1lbnQsIGV2ZW50LCB1cmxdOiBJbnZva2VUdXBsZSkgPT4ge1xuICBjb25zdCBjb250YWluZXIgPSBlbGVtZW50LmNsb3Nlc3QoUUNvbnRhaW5lclNlbGVjdG9yKTtcbiAgY29uc3QgbG9jYWxlID0gY29udGFpbmVyPy5nZXRBdHRyaWJ1dGUoUUxvY2FsZUF0dHIpIHx8IHVuZGVmaW5lZDtcbiAgbG9jYWxlICYmIHNldExvY2FsZShsb2NhbGUpO1xuICByZXR1cm4gbmV3SW52b2tlQ29udGV4dChsb2NhbGUsIHVuZGVmaW5lZCwgZWxlbWVudCwgZXZlbnQsIHVybCk7XG59O1xuXG4vLyBUT0RPIGhvdyBhYm91dCBwdXR0aW5nIHVybCBhbmQgbG9jYWxlIChhbmQgZXZlbnQvY3VzdG9tPykgaW4gdG8gYSBcInN0YXRpY1wiIG9iamVjdFxuZXhwb3J0IGNvbnN0IG5ld0ludm9rZUNvbnRleHQgPSAoXG4gIGxvY2FsZT86IHN0cmluZyxcbiAgaG9zdEVsZW1lbnQ/OiBRd2lrRWxlbWVudCxcbiAgZWxlbWVudD86IEVsZW1lbnQsXG4gIGV2ZW50PzogUG9zc2libGVFdmVudHMsXG4gIHVybD86IFVSTFxuKTogSW52b2tlQ29udGV4dCA9PiB7XG4gIC8vIFNlcnZlclJlcXVlc3RFdmVudCBoYXMgLmxvY2FsZSwgYnV0IGl0J3Mgbm90IGFsd2F5cyBkZWZpbmVkLlxuICBjb25zdCAkbG9jYWxlJCA9XG4gICAgbG9jYWxlIHx8ICh0eXBlb2YgZXZlbnQgPT09ICdvYmplY3QnICYmIGV2ZW50ICYmICdsb2NhbGUnIGluIGV2ZW50ID8gZXZlbnQubG9jYWxlIDogdW5kZWZpbmVkKTtcbiAgY29uc3QgY3R4OiBJbnZva2VDb250ZXh0ID0ge1xuICAgICR1cmwkOiB1cmwsXG4gICAgJGkkOiAwLFxuICAgICRob3N0RWxlbWVudCQ6IGhvc3RFbGVtZW50LFxuICAgICRlbGVtZW50JDogZWxlbWVudCxcbiAgICAkZXZlbnQkOiBldmVudCxcbiAgICAkcXJsJDogdW5kZWZpbmVkLFxuICAgICR3YWl0T24kOiB1bmRlZmluZWQsXG4gICAgJHN1YnNjcmliZXIkOiB1bmRlZmluZWQsXG4gICAgJHJlbmRlckN0eCQ6IHVuZGVmaW5lZCxcbiAgICAkbG9jYWxlJCxcbiAgfTtcbiAgc2VhbChjdHgpO1xuICByZXR1cm4gY3R4O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFdyYXBwaW5nQ29udGFpbmVyID0gKGVsOiBRd2lrRWxlbWVudCk6IEVsZW1lbnQgfCBudWxsID0+IHtcbiAgcmV0dXJuIGVsLmNsb3Nlc3QoUUNvbnRhaW5lclNlbGVjdG9yKTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiB3aXRob3V0IHRyYWNraW5nIGxpc3RlbmVycy4gQSBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQsIHNpZ25hbHNcbiAqIHdpbGwgcmV0dXJuIHRoZWlyIHZhbHVlLCBhbmQgc3RvcmVzIHdpbGwgYmUgdW53cmFwcGVkICh0aGV5IHJldHVybiB0aGUgYmFja2luZyBvYmplY3QpLlxuICpcbiAqIFdoZW4geW91IHBhc3MgYSBmdW5jdGlvbiwgeW91IGNhbiBhbHNvIHBhc3MgYWRkaXRpb25hbCBhcmd1bWVudHMgdGhhdCB0aGUgZnVuY3Rpb24gd2lsbCByZWNlaXZlLlxuICpcbiAqIE5vdGUgdGhhdCBzdG9yZXMgYXJlIG5vdCB1bndyYXBwZWQgcmVjdXJzaXZlbHkuXG4gKlxuICogQHBhcmFtIGV4cHIgLSBUaGUgZnVuY3Rpb24gb3Igb2JqZWN0IHRvIGV2YWx1YXRlIHdpdGhvdXQgdHJhY2tpbmcuXG4gKiBAcGFyYW0gYXJncyAtIEFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3Mgd2hlbiBgZXhwcmAgaXMgYSBmdW5jdGlvbi5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHVudHJhY2sgPSA8VCwgQSBleHRlbmRzIGFueVtdPihcbiAgZXhwcjogKCguLi5hcmdzOiBBKSA9PiBUKSB8IFNpZ25hbDxUPiB8IFQsXG4gIC4uLmFyZ3M6IEFcbik6IFQgPT4ge1xuICBpZiAodHlwZW9mIGV4cHIgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gaW52b2tlKHVuZGVmaW5lZCwgZXhwciBhcyAoLi4uYXJnczogQSkgPT4gVCwgLi4uYXJncyk7XG4gIH1cbiAgaWYgKGlzU2lnbmFsKGV4cHIpKSB7XG4gICAgcmV0dXJuIChleHByIGFzIFNpZ25hbEludGVybmFsPFQ+KS51bnRyYWNrZWRWYWx1ZTtcbiAgfVxuICByZXR1cm4gdW53cmFwU3RvcmUoZXhwcik7XG59O1xuXG5jb25zdCB0cmFja0ludm9jYXRpb24gPSAvKiNfX1BVUkVfXyovIG5ld0ludm9rZUNvbnRleHQoXG4gIHVuZGVmaW5lZCxcbiAgdW5kZWZpbmVkLFxuICB1bmRlZmluZWQsXG4gIFJlbmRlckV2ZW50XG4pO1xuXG4vKipcbiAqIE1hcmsgc3ViIGFzIGEgbGlzdGVuZXIgZm9yIHRoZSBzaWduYWxcbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0cmFja1NpZ25hbCA9IDxUPihzaWduYWw6IFNpZ25hbCwgc3ViOiBTdWJzY3JpYmVyKTogVCA9PiB7XG4gIHRyYWNrSW52b2NhdGlvbi4kc3Vic2NyaWJlciQgPSBzdWI7XG4gIHJldHVybiBpbnZva2UodHJhY2tJbnZvY2F0aW9uLCAoKSA9PiBzaWduYWwudmFsdWUpO1xufTtcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IF9nZXRDb250ZXh0RWxlbWVudCA9ICgpOiB1bmtub3duID0+IHtcbiAgY29uc3QgaUN0eCA9IHRyeUdldEludm9rZUNvbnRleHQoKTtcbiAgaWYgKGlDdHgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgaUN0eC4kZWxlbWVudCQgPz8gaUN0eC4kaG9zdEVsZW1lbnQkID8/IChpQ3R4LiRxcmwkIGFzIFFSTEludGVybmFsKT8uJHNldENvbnRhaW5lciQodW5kZWZpbmVkKVxuICAgICk7XG4gIH1cbn07XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjb25zdCBfZ2V0Q29udGV4dEV2ZW50ID0gKCk6IHVua25vd24gPT4ge1xuICBjb25zdCBpQ3R4ID0gdHJ5R2V0SW52b2tlQ29udGV4dCgpO1xuICBpZiAoaUN0eCkge1xuICAgIHJldHVybiBpQ3R4LiRldmVudCQ7XG4gIH1cbn07XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjb25zdCBfanN4QnJhbmNoID0gPFQ+KGlucHV0PzogVCkgPT4ge1xuICBjb25zdCBpQ3R4ID0gdHJ5R2V0SW52b2tlQ29udGV4dCgpO1xuICBpZiAoaUN0eCAmJiBpQ3R4LiRob3N0RWxlbWVudCQgJiYgaUN0eC4kcmVuZGVyQ3R4JCkge1xuICAgIGNvbnN0IGhvc3RFbGVtZW50ID0gaUN0eC4kaG9zdEVsZW1lbnQkO1xuICAgIGNvbnN0IGVsQ3R4ID0gZ2V0Q29udGV4dChob3N0RWxlbWVudCwgaUN0eC4kcmVuZGVyQ3R4JC4kc3RhdGljJC4kY29udGFpbmVyU3RhdGUkKTtcbiAgICBlbEN0eC4kZmxhZ3MkIHw9IEhPU1RfRkxBR19EWU5BTUlDO1xuICB9XG4gIHJldHVybiBpbnB1dDtcbn07XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjb25zdCBfd2FpdFVudGlsUmVuZGVyZWQgPSAoZWxtOiBFbGVtZW50KSA9PiB7XG4gIGNvbnN0IGNvbnRhaW5lckVsID0gZ2V0V3JhcHBpbmdDb250YWluZXIoZWxtKTtcbiAgaWYgKCFjb250YWluZXJFbCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuICBjb25zdCBjb250YWluZXJTdGF0ZSA9IF9nZXRDb250YWluZXJTdGF0ZShjb250YWluZXJFbCk7XG4gIHJldHVybiBjb250YWluZXJTdGF0ZS4kcmVuZGVyUHJvbWlzZSQgPz8gUHJvbWlzZS5yZXNvbHZlKCk7XG59O1xuIl19","import { assertEqual, assertTrue } from '../error/assert';\nimport { tryGetInvokeContext } from '../use/use-core';\nimport { logWarn } from '../util/log';\nimport { qDev, qSerialize } from '../util/qdev';\nimport { ComputedEvent, RenderEvent, ResourceEvent } from '../util/markers';\nimport { isObject } from '../util/types';\nimport { getSubscriptionManager, getProxyTarget, LocalSubscriptionManager, verifySerializable, } from './common';\nimport { QObjectManagerSymbol, _IMMUTABLE, _IMMUTABLE_PREFIX } from './constants';\nimport { _fnSignal } from '../qrl/inlined-fn';\n/** @internal */\nexport const _createSignal = (value, containerState, flags, subscriptions) => {\n    const manager = containerState.$subsManager$.$createManager$(subscriptions);\n    const signal = new SignalImpl(value, manager, flags);\n    return signal;\n};\nexport const QObjectSignalFlags = Symbol('proxy manager');\nexport const SIGNAL_IMMUTABLE = 1 << 0;\nexport const SIGNAL_UNASSIGNED = 1 << 1;\nexport const SignalUnassignedException = Symbol('unassigned signal');\nexport class SignalBase {\n}\nexport class SignalImpl extends SignalBase {\n    untrackedValue;\n    [QObjectManagerSymbol];\n    [QObjectSignalFlags] = 0;\n    constructor(v, manager, flags) {\n        super();\n        this.untrackedValue = v;\n        this[QObjectManagerSymbol] = manager;\n        this[QObjectSignalFlags] = flags;\n    }\n    // prevent accidental use as value\n    valueOf() {\n        if (qDev) {\n            throw new TypeError('Cannot coerce a Signal, use `.value` instead');\n        }\n    }\n    toString() {\n        return `[Signal ${String(this.value)}]`;\n    }\n    toJSON() {\n        return { value: this.value };\n    }\n    get value() {\n        if (this[QObjectSignalFlags] & SIGNAL_UNASSIGNED) {\n            throw SignalUnassignedException;\n        }\n        const sub = tryGetInvokeContext()?.$subscriber$;\n        if (sub) {\n            this[QObjectManagerSymbol].$addSub$(sub);\n        }\n        return this.untrackedValue;\n    }\n    set value(v) {\n        if (qDev) {\n            if (this[QObjectSignalFlags] & SIGNAL_IMMUTABLE) {\n                throw new Error('Cannot mutate immutable signal');\n            }\n            if (qSerialize) {\n                verifySerializable(v);\n            }\n            const invokeCtx = tryGetInvokeContext();\n            if (invokeCtx) {\n                if (invokeCtx.$event$ === RenderEvent) {\n                    logWarn('State mutation inside render function. Use useTask$() instead.', invokeCtx.$hostElement$);\n                }\n                else if (invokeCtx.$event$ === ComputedEvent) {\n                    logWarn('State mutation inside useComputed$() is an antipattern. Use useTask$() instead', invokeCtx.$hostElement$);\n                }\n                else if (invokeCtx.$event$ === ResourceEvent) {\n                    logWarn('State mutation inside useResource$() is an antipattern. Use useTask$() instead', invokeCtx.$hostElement$);\n                }\n            }\n        }\n        const manager = this[QObjectManagerSymbol];\n        const oldValue = this.untrackedValue;\n        if (manager && oldValue !== v) {\n            this.untrackedValue = v;\n            manager.$notifySubs$();\n        }\n    }\n}\nexport class SignalDerived extends SignalBase {\n    $func$;\n    $args$;\n    $funcStr$;\n    constructor($func$, $args$, $funcStr$) {\n        super();\n        this.$func$ = $func$;\n        this.$args$ = $args$;\n        this.$funcStr$ = $funcStr$;\n    }\n    get value() {\n        return this.$func$.apply(undefined, this.$args$);\n    }\n}\nexport class SignalWrapper extends SignalBase {\n    ref;\n    prop;\n    constructor(ref, prop) {\n        super();\n        this.ref = ref;\n        this.prop = prop;\n    }\n    get [QObjectManagerSymbol]() {\n        return getSubscriptionManager(this.ref);\n    }\n    get value() {\n        return this.ref[this.prop];\n    }\n    set value(value) {\n        this.ref[this.prop] = value;\n    }\n}\n/**\n * Checks if a given object is a `Signal`.\n *\n * @param obj - The object to check if `Signal`.\n * @returns Boolean - True if the object is a `Signal`.\n * @public\n */\nexport const isSignal = (obj) => {\n    return obj instanceof SignalBase;\n};\n/** @internal */\nexport const _wrapProp = (obj, prop) => {\n    if (!isObject(obj)) {\n        return obj[prop];\n    }\n    if (obj instanceof SignalBase) {\n        assertEqual(prop, 'value', 'Left side is a signal, prop must be value');\n        return obj;\n    }\n    const target = getProxyTarget(obj);\n    if (target) {\n        const signal = target[_IMMUTABLE_PREFIX + prop];\n        if (signal) {\n            assertTrue(isSignal(signal), `${_IMMUTABLE_PREFIX} has to be a signal kind`);\n            return signal;\n        }\n        if (target[_IMMUTABLE]?.[prop] !== true) {\n            return new SignalWrapper(obj, prop);\n        }\n    }\n    const immutable = obj[_IMMUTABLE]?.[prop];\n    if (isSignal(immutable)) {\n        return immutable;\n    }\n    return _IMMUTABLE;\n};\n/** @internal */\nexport const _wrapSignal = (obj, prop) => {\n    const r = _wrapProp(obj, prop);\n    if (r === _IMMUTABLE) {\n        return obj[prop];\n    }\n    return r;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3N0YXRlL3NpZ25hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGNBQWMsRUFDZCx3QkFBd0IsRUFFeEIsa0JBQWtCLEdBQ25CLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBd0I5QyxnQkFBZ0I7QUFDaEIsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQzNCLEtBQVEsRUFDUixjQUE4QixFQUM5QixLQUFhLEVBQ2IsYUFBK0IsRUFDWixFQUFFO0lBQ3JCLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVFLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFJLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0s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QUFDO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBRUYsZ0JBQWdCO0FBQ2hCLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUN6QixHQUFNLEVBQ04sSUFBTyxFQUNGLEVBQUU7SUFDUCxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9CLElBQUksQ0FBQyxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydEVxdWFsLCBhc3NlcnRUcnVlIH0gZnJvbSAnLi4vZXJyb3IvYXNzZXJ0JztcbmltcG9ydCB7IHRyeUdldEludm9rZUNvbnRleHQgfSBmcm9tICcuLi91c2UvdXNlLWNvcmUnO1xuaW1wb3J0IHsgbG9nV2FybiB9IGZyb20gJy4uL3V0aWwvbG9nJztcbmltcG9ydCB7IHFEZXYsIHFTZXJpYWxpemUgfSBmcm9tICcuLi91dGlsL3FkZXYnO1xuaW1wb3J0IHsgQ29tcHV0ZWRFdmVudCwgUmVuZGVyRXZlbnQsIFJlc291cmNlRXZlbnQgfSBmcm9tICcuLi91dGlsL21hcmtlcnMnO1xuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICcuLi91dGlsL3R5cGVzJztcbmltcG9ydCB0eXBlIHsgQ29udGFpbmVyU3RhdGUgfSBmcm9tICcuLi9jb250YWluZXIvY29udGFpbmVyJztcbmltcG9ydCB7XG4gIGdldFN1YnNjcmlwdGlvbk1hbmFnZXIsXG4gIGdldFByb3h5VGFyZ2V0LFxuICBMb2NhbFN1YnNjcmlwdGlvbk1hbmFnZXIsXG4gIHR5cGUgU3Vic2NyaXB0aW9ucyxcbiAgdmVyaWZ5U2VyaWFsaXphYmxlLFxufSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBRT2JqZWN0TWFuYWdlclN5bWJvbCwgX0lNTVVUQUJMRSwgX0lNTVVUQUJMRV9QUkVGSVggfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBfZm5TaWduYWwgfSBmcm9tICcuLi9xcmwvaW5saW5lZC1mbic7XG5cbi8qKlxuICogQSBzaWduYWwgaXMgYSByZWFjdGl2ZSB2YWx1ZSB3aGljaCBjYW4gYmUgcmVhZCBhbmQgd3JpdHRlbi4gV2hlbiB0aGUgc2lnbmFsIGlzIHdyaXR0ZW4sIGFsbCB0YXNrc1xuICogd2hpY2ggYXJlIHRyYWNraW5nIHRoZSBzaWduYWwgd2lsbCBiZSByZS1ydW4gYW5kIGFsbCBjb21wb25lbnRzIHRoYXQgcmVhZCB0aGUgc2lnbmFsIHdpbGwgYmVcbiAqIHJlLXJlbmRlcmVkLlxuICpcbiAqIEZ1cnRoZXJtb3JlLCB3aGVuIGEgc2lnbmFsIHZhbHVlIGlzIHBhc3NlZCBhcyBhIHByb3AgdG8gYSBjb21wb25lbnQsIHRoZSBvcHRpbWl6ZXIgd2lsbFxuICogYXV0b21hdGljYWxseSBmb3J3YXJkIHRoZSBzaWduYWwuIFRoaXMgbWVhbnMgdGhhdCBgcmV0dXJuIDxkaXYgdGl0bGU9e3NpZ25hbC52YWx1ZX0+aGk8L2Rpdj5gXG4gKiB3aWxsIHVwZGF0ZSB0aGUgYHRpdGxlYCBhdHRyaWJ1dGUgd2hlbiB0aGUgc2lnbmFsIGNoYW5nZXMgd2l0aG91dCBoYXZpbmcgdG8gcmUtcmVuZGVyIHRoZVxuICogY29tcG9uZW50LlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWduYWw8VCA9IGFueT4ge1xuICB2YWx1ZTogVDtcbn1cblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCB0eXBlIFJlYWRvbmx5U2lnbmFsPFQgPSB1bmtub3duPiA9IFJlYWRvbmx5PFNpZ25hbDxUPj47XG5cbi8qKiBAcHVibGljICovXG5leHBvcnQgdHlwZSBWYWx1ZU9yU2lnbmFsPFQ+ID0gVCB8IFNpZ25hbDxUPjtcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IF9jcmVhdGVTaWduYWwgPSA8VD4oXG4gIHZhbHVlOiBULFxuICBjb250YWluZXJTdGF0ZTogQ29udGFpbmVyU3RhdGUsXG4gIGZsYWdzOiBudW1iZXIsXG4gIHN1YnNjcmlwdGlvbnM/OiBTdWJzY3JpcHRpb25zW11cbik6IFNpZ25hbEludGVybmFsPFQ+ID0+IHtcbiAgY29uc3QgbWFuYWdlciA9IGNvbnRhaW5lclN0YXRlLiRzdWJzTWFuYWdlciQuJGNyZWF0ZU1hbmFnZXIkKHN1YnNjcmlwdGlvbnMpO1xuICBjb25zdCBzaWduYWwgPSBuZXcgU2lnbmFsSW1wbDxUPih2YWx1ZSwgbWFuYWdlciwgZmxhZ3MpO1xuICByZXR1cm4gc2lnbmFsO1xufTtcblxuZXhwb3J0IGNvbnN0IFFPYmplY3RTaWduYWxGbGFncyA9IFN5bWJvbCgncHJveHkgbWFuYWdlcicpO1xuXG5leHBvcnQgY29uc3QgU0lHTkFMX0lNTVVUQUJMRSA9IDEgPDwgMDtcbmV4cG9ydCBjb25zdCBTSUdOQUxfVU5BU1NJR05FRCA9IDEgPDwgMTtcblxuZXhwb3J0IGNvbnN0IFNpZ25hbFVuYXNzaWduZWRFeGNlcHRpb24gPSBTeW1ib2woJ3VuYXNzaWduZWQgc2lnbmFsJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmFsSW50ZXJuYWw8VD4gZXh0ZW5kcyBTaWduYWw8VD4ge1xuICB1bnRyYWNrZWRWYWx1ZTogVDtcbiAgW1FPYmplY3RNYW5hZ2VyU3ltYm9sXTogTG9jYWxTdWJzY3JpcHRpb25NYW5hZ2VyO1xuICBbUU9iamVjdFNpZ25hbEZsYWdzXTogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgU2lnbmFsQmFzZSB7fVxuXG5leHBvcnQgY2xhc3MgU2lnbmFsSW1wbDxUPiBleHRlbmRzIFNpZ25hbEJhc2UgaW1wbGVtZW50cyBTaWduYWw8VD4ge1xuICB1bnRyYWNrZWRWYWx1ZTogVDtcbiAgW1FPYmplY3RNYW5hZ2VyU3ltYm9sXTogTG9jYWxTdWJzY3JpcHRpb25NYW5hZ2VyO1xuICBbUU9iamVjdFNpZ25hbEZsYWdzXTogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3Rvcih2OiBULCBtYW5hZ2VyOiBMb2NhbFN1YnNjcmlwdGlvbk1hbmFnZXIsIGZsYWdzOiBudW1iZXIpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudW50cmFja2VkVmFsdWUgPSB2O1xuICAgIHRoaXNbUU9iamVjdE1hbmFnZXJTeW1ib2xdID0gbWFuYWdlcjtcbiAgICB0aGlzW1FPYmplY3RTaWduYWxGbGFnc10gPSBmbGFncztcbiAgfVxuXG4gIC8vIHByZXZlbnQgYWNjaWRlbnRhbCB1c2UgYXMgdmFsdWVcbiAgdmFsdWVPZigpIHtcbiAgICBpZiAocURldikge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNvZXJjZSBhIFNpZ25hbCwgdXNlIGAudmFsdWVgIGluc3RlYWQnKTtcbiAgICB9XG4gIH1cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIGBbU2lnbmFsICR7U3RyaW5nKHRoaXMudmFsdWUpfV1gO1xuICB9XG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4geyB2YWx1ZTogdGhpcy52YWx1ZSB9O1xuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIGlmICh0aGlzW1FPYmplY3RTaWduYWxGbGFnc10gJiBTSUdOQUxfVU5BU1NJR05FRCkge1xuICAgICAgdGhyb3cgU2lnbmFsVW5hc3NpZ25lZEV4Y2VwdGlvbjtcbiAgICB9XG4gICAgY29uc3Qgc3ViID0gdHJ5R2V0SW52b2tlQ29udGV4dCgpPy4kc3Vic2NyaWJlciQ7XG4gICAgaWYgKHN1Yikge1xuICAgICAgdGhpc1tRT2JqZWN0TWFuYWdlclN5bWJvbF0uJGFkZFN1YiQoc3ViKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudW50cmFja2VkVmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodjogVCkge1xuICAgIGlmIChxRGV2KSB7XG4gICAgICBpZiAodGhpc1tRT2JqZWN0U2lnbmFsRmxhZ3NdICYgU0lHTkFMX0lNTVVUQUJMRSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBtdXRhdGUgaW1tdXRhYmxlIHNpZ25hbCcpO1xuICAgICAgfVxuICAgICAgaWYgKHFTZXJpYWxpemUpIHtcbiAgICAgICAgdmVyaWZ5U2VyaWFsaXphYmxlKHYpO1xuICAgICAgfVxuICAgICAgY29uc3QgaW52b2tlQ3R4ID0gdHJ5R2V0SW52b2tlQ29udGV4dCgpO1xuICAgICAgaWYgKGludm9rZUN0eCkge1xuICAgICAgICBpZiAoaW52b2tlQ3R4LiRldmVudCQgPT09IFJlbmRlckV2ZW50KSB7XG4gICAgICAgICAgbG9nV2FybihcbiAgICAgICAgICAgICdTdGF0ZSBtdXRhdGlvbiBpbnNpZGUgcmVuZGVyIGZ1bmN0aW9uLiBVc2UgdXNlVGFzayQoKSBpbnN0ZWFkLicsXG4gICAgICAgICAgICBpbnZva2VDdHguJGhvc3RFbGVtZW50JFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW52b2tlQ3R4LiRldmVudCQgPT09IENvbXB1dGVkRXZlbnQpIHtcbiAgICAgICAgICBsb2dXYXJuKFxuICAgICAgICAgICAgJ1N0YXRlIG11dGF0aW9uIGluc2lkZSB1c2VDb21wdXRlZCQoKSBpcyBhbiBhbnRpcGF0dGVybi4gVXNlIHVzZVRhc2skKCkgaW5zdGVhZCcsXG4gICAgICAgICAgICBpbnZva2VDdHguJGhvc3RFbGVtZW50JFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW52b2tlQ3R4LiRldmVudCQgPT09IFJlc291cmNlRXZlbnQpIHtcbiAgICAgICAgICBsb2dXYXJuKFxuICAgICAgICAgICAgJ1N0YXRlIG11dGF0aW9uIGluc2lkZSB1c2VSZXNvdXJjZSQoKSBpcyBhbiBhbnRpcGF0dGVybi4gVXNlIHVzZVRhc2skKCkgaW5zdGVhZCcsXG4gICAgICAgICAgICBpbnZva2VDdHguJGhvc3RFbGVtZW50JFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbWFuYWdlciA9IHRoaXNbUU9iamVjdE1hbmFnZXJTeW1ib2xdO1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy51bnRyYWNrZWRWYWx1ZTtcbiAgICBpZiAobWFuYWdlciAmJiBvbGRWYWx1ZSAhPT0gdikge1xuICAgICAgdGhpcy51bnRyYWNrZWRWYWx1ZSA9IHY7XG4gICAgICBtYW5hZ2VyLiRub3RpZnlTdWJzJCgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2lnbmFsRGVyaXZlZDxSRVRVUk4gPSB1bmtub3duLCBBUkdTIGV4dGVuZHMgYW55W10gPSB1bmtub3duW10+IGV4dGVuZHMgU2lnbmFsQmFzZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyAkZnVuYyQ6ICguLi5hcmdzOiBBUkdTKSA9PiBSRVRVUk4sXG4gICAgcHVibGljICRhcmdzJDogQVJHUyxcbiAgICBwdWJsaWMgJGZ1bmNTdHIkPzogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogUkVUVVJOIHtcbiAgICByZXR1cm4gdGhpcy4kZnVuYyQuYXBwbHkodW5kZWZpbmVkLCB0aGlzLiRhcmdzJCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNpZ25hbFdyYXBwZXI8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4sIFAgZXh0ZW5kcyBrZXlvZiBUPiBleHRlbmRzIFNpZ25hbEJhc2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVmOiBULFxuICAgIHB1YmxpYyBwcm9wOiBQXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBnZXQgW1FPYmplY3RNYW5hZ2VyU3ltYm9sXSgpIHtcbiAgICByZXR1cm4gZ2V0U3Vic2NyaXB0aW9uTWFuYWdlcih0aGlzLnJlZik7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogVFtQXSB7XG4gICAgcmV0dXJuIHRoaXMucmVmW3RoaXMucHJvcF07XG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWU6IFRbUF0pIHtcbiAgICB0aGlzLnJlZlt0aGlzLnByb3BdID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBnaXZlbiBvYmplY3QgaXMgYSBgU2lnbmFsYC5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBjaGVjayBpZiBgU2lnbmFsYC5cbiAqIEByZXR1cm5zIEJvb2xlYW4gLSBUcnVlIGlmIHRoZSBvYmplY3QgaXMgYSBgU2lnbmFsYC5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGlzU2lnbmFsID0gPFQgPSB1bmtub3duPihvYmo6IGFueSk6IG9iaiBpcyBTaWduYWw8VD4gPT4ge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgU2lnbmFsQmFzZTtcbn07XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjb25zdCBfd3JhcFByb3AgPSA8VCBleHRlbmRzIFJlY29yZDxhbnksIGFueT4sIFAgZXh0ZW5kcyBrZXlvZiBUPihvYmo6IFQsIHByb3A6IFApOiBhbnkgPT4ge1xuICBpZiAoIWlzT2JqZWN0KG9iaikpIHtcbiAgICByZXR1cm4gb2JqW3Byb3BdO1xuICB9XG4gIGlmIChvYmogaW5zdGFuY2VvZiBTaWduYWxCYXNlKSB7XG4gICAgYXNzZXJ0RXF1YWwocHJvcCwgJ3ZhbHVlJywgJ0xlZnQgc2lkZSBpcyBhIHNpZ25hbCwgcHJvcCBtdXN0IGJlIHZhbHVlJyk7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuICBjb25zdCB0YXJnZXQgPSBnZXRQcm94eVRhcmdldChvYmopO1xuICBpZiAodGFyZ2V0KSB7XG4gICAgY29uc3Qgc2lnbmFsID0gdGFyZ2V0W19JTU1VVEFCTEVfUFJFRklYICsgKHByb3AgYXMgYW55KV07XG4gICAgaWYgKHNpZ25hbCkge1xuICAgICAgYXNzZXJ0VHJ1ZShpc1NpZ25hbChzaWduYWwpLCBgJHtfSU1NVVRBQkxFX1BSRUZJWH0gaGFzIHRvIGJlIGEgc2lnbmFsIGtpbmRgKTtcbiAgICAgIHJldHVybiBzaWduYWw7XG4gICAgfVxuICAgIGlmICgodGFyZ2V0IGFzIGFueSlbX0lNTVVUQUJMRV0/Lltwcm9wXSAhPT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIG5ldyBTaWduYWxXcmFwcGVyKG9iaiwgcHJvcCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGltbXV0YWJsZSA9IChvYmogYXMgYW55KVtfSU1NVVRBQkxFXT8uW3Byb3BdO1xuICBpZiAoaXNTaWduYWwoaW1tdXRhYmxlKSkge1xuICAgIHJldHVybiBpbW11dGFibGU7XG4gIH1cbiAgcmV0dXJuIF9JTU1VVEFCTEU7XG59O1xuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgY29uc3QgX3dyYXBTaWduYWwgPSA8VCBleHRlbmRzIFJlY29yZDxhbnksIGFueT4sIFAgZXh0ZW5kcyBrZXlvZiBUPihcbiAgb2JqOiBULFxuICBwcm9wOiBQXG4pOiBhbnkgPT4ge1xuICBjb25zdCByID0gX3dyYXBQcm9wKG9iaiwgcHJvcCk7XG4gIGlmIChyID09PSBfSU1NVVRBQkxFKSB7XG4gICAgcmV0dXJuIG9ialtwcm9wXTtcbiAgfVxuICByZXR1cm4gcjtcbn07XG4iXX0=","import { qError, QError_invalidRefValue } from '../error/error';\nimport { seal } from '../util/qdev';\nimport { isFunction } from '../util/types';\nimport { fromKebabToCamelCase } from '../util/case';\nimport { QContainerAttr } from '../util/markers';\nimport { isElement } from '../util/element';\nimport { createSubscriptionManager, } from '../state/common';\nimport { isSignal } from '../state/signal';\nimport { directGetAttribute } from '../render/fast-calls';\nimport { isServerPlatform } from '../platform/platform';\nconst CONTAINER_STATE = Symbol('ContainerState');\n/** @internal */\nexport const _getContainerState = (containerEl) => {\n    let state = containerEl[CONTAINER_STATE];\n    if (!state) {\n        containerEl[CONTAINER_STATE] = state = createContainerState(containerEl, directGetAttribute(containerEl, 'q:base') ?? '/');\n    }\n    return state;\n};\nexport const createContainerState = (containerEl, base) => {\n    const containerAttributes = {};\n    if (containerEl) {\n        const attrs = containerEl.attributes;\n        if (attrs) {\n            for (let index = 0; index < attrs.length; index++) {\n                const attr = attrs[index];\n                containerAttributes[attr.name] = attr.value;\n            }\n        }\n    }\n    const containerState = {\n        $containerEl$: containerEl,\n        $elementIndex$: 0,\n        $styleMoved$: false,\n        $proxyMap$: new WeakMap(),\n        $opsNext$: new Set(),\n        $taskNext$: new Set(),\n        $taskStaging$: new Set(),\n        $hostsNext$: new Set(),\n        $hostsStaging$: new Set(),\n        $styleIds$: new Set(),\n        $events$: new Set(),\n        $serverData$: { containerAttributes },\n        $base$: base,\n        $renderPromise$: undefined,\n        $hostsRendering$: undefined,\n        $pauseCtx$: undefined,\n        $subsManager$: null,\n        $inlineFns$: new Map(),\n    };\n    seal(containerState);\n    containerState.$subsManager$ = createSubscriptionManager(containerState);\n    return containerState;\n};\nexport const removeContainerState = (containerEl) => {\n    delete containerEl[CONTAINER_STATE];\n};\nexport const setRef = (value, elm) => {\n    if (isFunction(value)) {\n        return value(elm);\n    }\n    else if (isSignal(value)) {\n        if (isServerPlatform()) {\n            // During SSR, assigning a ref should not cause reactivity because\n            // the expectation is that the ref is filled in on the client\n            return (value.untrackedValue = elm);\n        }\n        else {\n            return (value.value = elm);\n        }\n    }\n    throw qError(QError_invalidRefValue, value);\n};\nexport const SHOW_ELEMENT = 1;\nexport const SHOW_COMMENT = 128;\nexport const FILTER_ACCEPT = 1;\nexport const FILTER_REJECT = 2;\nexport const FILTER_SKIP = 3;\nexport const isContainer = (el) => {\n    return isElement(el) && el.hasAttribute(QContainerAttr);\n};\nexport const intToStr = (nu) => {\n    return nu.toString(36);\n};\nexport const strToInt = (nu) => {\n    return parseInt(nu, 36);\n};\nexport const getEventName = (attribute) => {\n    const colonPos = attribute.indexOf(':');\n    if (attribute) {\n        return fromKebabToCamelCase(attribute.slice(colonPos + 1));\n    }\n    else {\n        return attribute;\n    }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL2NvbnRhaW5lci9jb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQ0wseUJBQXlCLEdBRzFCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFFBQVEsRUFBZ0MsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQWdGeEQsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFakQsZ0JBQWdCO0FBQ2hCLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsV0FBb0IsRUFBa0IsRUFBRTtJQUN6RSxJQUFJLEtBQUssR0FBSSxXQUFtQixDQUFDLGVBQWUsQ0FBbUIsQ0FBQztJQUNwRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVixXQUFtQixDQUFDLGVBQWUsQ0FBQyxHQUFHLEtBQUssR0FBRyxvQkFBb0IsQ0FDbEUsV0FBVyxFQUNYLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsSUFBSSxHQUFHLENBQ2pELENBQUM7SUFDSixD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QUcsQ0FBQyxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFFN0IsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsRUFBUSxFQUFFLEVBQUU7SUFDdEMsT0FBTyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUMxRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxFQUFVLEVBQUUsRUFBRTtJQUNyQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUU7SUFDckMsT0FBTyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLFNBQWlCLEVBQUUsRUFBRTtJQUNoRCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLElBQUksU0FBUyxFQUFFLENBQUM7UUFDZCxPQUFPLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcUVycm9yLCBRRXJyb3JfaW52YWxpZFJlZlZhbHVlIH0gZnJvbSAnLi4vZXJyb3IvZXJyb3InO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZVJldHVybkludGVybmFsLCBTdWJzY3JpYmVyRWZmZWN0IH0gZnJvbSAnLi4vdXNlL3VzZS10YXNrJztcbmltcG9ydCB7IHNlYWwgfSBmcm9tICcuLi91dGlsL3FkZXYnO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWwvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBRUkwgfSBmcm9tICcuLi9xcmwvcXJsLnB1YmxpYyc7XG5pbXBvcnQgeyBmcm9tS2ViYWJUb0NhbWVsQ2FzZSB9IGZyb20gJy4uL3V0aWwvY2FzZSc7XG5pbXBvcnQgeyBRQ29udGFpbmVyQXR0ciB9IGZyb20gJy4uL3V0aWwvbWFya2Vycyc7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tICcuLi91dGlsL2VsZW1lbnQnO1xuaW1wb3J0IHtcbiAgY3JlYXRlU3Vic2NyaXB0aW9uTWFuYWdlcixcbiAgdHlwZSBTdWJzY3JpYmVyU2lnbmFsLFxuICB0eXBlIFN1YnNjcmlwdGlvbk1hbmFnZXIsXG59IGZyb20gJy4uL3N0YXRlL2NvbW1vbic7XG5pbXBvcnQgeyBpc1NpZ25hbCwgdHlwZSBTaWduYWwsIHR5cGUgU2lnbmFsSW1wbCB9IGZyb20gJy4uL3N0YXRlL3NpZ25hbCc7XG5pbXBvcnQgeyBkaXJlY3RHZXRBdHRyaWJ1dGUgfSBmcm9tICcuLi9yZW5kZXIvZmFzdC1jYWxscyc7XG5pbXBvcnQgdHlwZSB7IFFDb250ZXh0IH0gZnJvbSAnLi4vc3RhdGUvY29udGV4dCc7XG5pbXBvcnQgeyBpc1NlcnZlclBsYXRmb3JtIH0gZnJvbSAnLi4vcGxhdGZvcm0vcGxhdGZvcm0nO1xuXG5leHBvcnQgdHlwZSBHZXRPYmplY3QgPSAoaWQ6IHN0cmluZykgPT4gYW55O1xuZXhwb3J0IHR5cGUgR2V0T2JqSUQgPSAob2JqOiBhbnkpID0+IHN0cmluZyB8IG51bGw7XG5leHBvcnQgdHlwZSBNdXN0R2V0T2JqSUQgPSAob2JqOiBhbnkpID0+IHN0cmluZztcblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgU25hcHNob3RNZXRhVmFsdWUge1xuICB3Pzogc3RyaW5nOyAvLyBxOndhdGNoZXNcbiAgcz86IHN0cmluZzsgLy8gcTpzZXFcbiAgaD86IHN0cmluZzsgLy8gcTpob3N0XG4gIGM/OiBzdHJpbmc7IC8vIHE6Y29udGV4dFxufVxuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IHR5cGUgU25hcHNob3RNZXRhID0gUmVjb3JkPHN0cmluZywgU25hcHNob3RNZXRhVmFsdWU+O1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGludGVyZmFjZSBTbmFwc2hvdFN0YXRlIHtcbiAgY3R4OiBTbmFwc2hvdE1ldGE7XG4gIHJlZnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIG9ianM6IGFueVtdO1xuICBzdWJzOiBhbnlbXTtcbn1cblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgU25hcHNob3RMaXN0ZW5lciB7XG4gIGtleTogc3RyaW5nO1xuICBxcmw6IFFSTDxhbnk+O1xuICBlbDogRWxlbWVudDtcbn1cblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgU25hcHNob3RSZXN1bHQge1xuICBzdGF0ZTogU25hcHNob3RTdGF0ZTtcbiAgZnVuY3M6IHN0cmluZ1tdO1xuICBxcmxzOiBRUkxbXTtcbiAgb2JqczogYW55W107XG4gIHJlc291cmNlczogUmVzb3VyY2VSZXR1cm5JbnRlcm5hbDxhbnk+W107XG4gIG1vZGU6ICdyZW5kZXInIHwgJ2xpc3RlbmVycycgfCAnc3RhdGljJztcbn1cblxuZXhwb3J0IHR5cGUgT2JqVG9Qcm94eU1hcCA9IFdlYWtNYXA8YW55LCBhbnk+O1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXVzZUNvbnRleHQge1xuICBnZXRPYmplY3Q6IEdldE9iamVjdDtcbiAgbWV0YTogU25hcHNob3RNZXRhO1xuICByZWZzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJTdGF0ZSB7XG4gIHJlYWRvbmx5ICRjb250YWluZXJFbCQ6IEVsZW1lbnQ7XG5cbiAgcmVhZG9ubHkgJHByb3h5TWFwJDogT2JqVG9Qcm94eU1hcDtcbiAgJHN1YnNNYW5hZ2VyJDogU3Vic2NyaXB0aW9uTWFuYWdlcjtcblxuICByZWFkb25seSAkdGFza05leHQkOiBTZXQ8U3Vic2NyaWJlckVmZmVjdD47XG4gIHJlYWRvbmx5ICR0YXNrU3RhZ2luZyQ6IFNldDxTdWJzY3JpYmVyRWZmZWN0PjtcblxuICByZWFkb25seSAkb3BzTmV4dCQ6IFNldDxTdWJzY3JpYmVyU2lnbmFsPjtcblxuICByZWFkb25seSAkaG9zdHNOZXh0JDogU2V0PFFDb250ZXh0PjtcbiAgcmVhZG9ubHkgJGhvc3RzU3RhZ2luZyQ6IFNldDxRQ29udGV4dD47XG4gIHJlYWRvbmx5ICRiYXNlJDogc3RyaW5nO1xuXG4gICRob3N0c1JlbmRlcmluZyQ6IFNldDxRQ29udGV4dD4gfCB1bmRlZmluZWQ7XG4gICRyZW5kZXJQcm9taXNlJDogUHJvbWlzZTx2b2lkPiB8IHVuZGVmaW5lZDtcblxuICAkc2VydmVyRGF0YSQ6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICRlbGVtZW50SW5kZXgkOiBudW1iZXI7XG5cbiAgJHBhdXNlQ3R4JDogUGF1c2VDb250ZXh0IHwgdW5kZWZpbmVkO1xuICAkc3R5bGVNb3ZlZCQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5ICRzdHlsZUlkcyQ6IFNldDxzdHJpbmc+O1xuICByZWFkb25seSAkZXZlbnRzJDogU2V0PHN0cmluZz47XG4gIHJlYWRvbmx5ICRpbmxpbmVGbnMkOiBNYXA8c3RyaW5nLCBudW1iZXI+O1xufVxuXG5jb25zdCBDT05UQUlORVJfU1RBVEUgPSBTeW1ib2woJ0NvbnRhaW5lclN0YXRlJyk7XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjb25zdCBfZ2V0Q29udGFpbmVyU3RhdGUgPSAoY29udGFpbmVyRWw6IEVsZW1lbnQpOiBDb250YWluZXJTdGF0ZSA9PiB7XG4gIGxldCBzdGF0ZSA9IChjb250YWluZXJFbCBhcyBhbnkpW0NPTlRBSU5FUl9TVEFURV0gYXMgQ29udGFpbmVyU3RhdGU7XG4gIGlmICghc3RhdGUpIHtcbiAgICAoY29udGFpbmVyRWwgYXMgYW55KVtDT05UQUlORVJfU1RBVEVdID0gc3RhdGUgPSBjcmVhdGVDb250YWluZXJTdGF0ZShcbiAgICAgIGNvbnRhaW5lckVsLFxuICAgICAgZGlyZWN0R2V0QXR0cmlidXRlKGNvbnRhaW5lckVsLCAncTpiYXNlJykgPz8gJy8nXG4gICAgKTtcbiAgfVxuICByZXR1cm4gc3RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29udGFpbmVyU3RhdGUgPSAoY29udGFpbmVyRWw6IEVsZW1lbnQsIGJhc2U6IHN0cmluZykgPT4ge1xuICBjb25zdCBjb250YWluZXJBdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGlmIChjb250YWluZXJFbCkge1xuICAgIGNvbnN0IGF0dHJzID0gY29udGFpbmVyRWwuYXR0cmlidXRlcztcbiAgICBpZiAoYXR0cnMpIHtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhdHRycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgYXR0ciA9IGF0dHJzW2luZGV4XTtcbiAgICAgICAgY29udGFpbmVyQXR0cmlidXRlc1thdHRyLm5hbWVdID0gYXR0ci52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY29uc3QgY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlID0ge1xuICAgICRjb250YWluZXJFbCQ6IGNvbnRhaW5lckVsLFxuXG4gICAgJGVsZW1lbnRJbmRleCQ6IDAsXG4gICAgJHN0eWxlTW92ZWQkOiBmYWxzZSxcblxuICAgICRwcm94eU1hcCQ6IG5ldyBXZWFrTWFwKCksXG5cbiAgICAkb3BzTmV4dCQ6IG5ldyBTZXQoKSxcblxuICAgICR0YXNrTmV4dCQ6IG5ldyBTZXQoKSxcbiAgICAkdGFza1N0YWdpbmckOiBuZXcgU2V0KCksXG5cbiAgICAkaG9zdHNOZXh0JDogbmV3IFNldCgpLFxuICAgICRob3N0c1N0YWdpbmckOiBuZXcgU2V0KCksXG5cbiAgICAkc3R5bGVJZHMkOiBuZXcgU2V0KCksXG4gICAgJGV2ZW50cyQ6IG5ldyBTZXQoKSxcblxuICAgICRzZXJ2ZXJEYXRhJDogeyBjb250YWluZXJBdHRyaWJ1dGVzIH0sXG4gICAgJGJhc2UkOiBiYXNlLFxuICAgICRyZW5kZXJQcm9taXNlJDogdW5kZWZpbmVkLFxuICAgICRob3N0c1JlbmRlcmluZyQ6IHVuZGVmaW5lZCxcbiAgICAkcGF1c2VDdHgkOiB1bmRlZmluZWQsXG4gICAgJHN1YnNNYW5hZ2VyJDogbnVsbCBhcyBhbnksXG4gICAgJGlubGluZUZucyQ6IG5ldyBNYXAoKSxcbiAgfTtcbiAgc2VhbChjb250YWluZXJTdGF0ZSk7XG4gIGNvbnRhaW5lclN0YXRlLiRzdWJzTWFuYWdlciQgPSBjcmVhdGVTdWJzY3JpcHRpb25NYW5hZ2VyKGNvbnRhaW5lclN0YXRlKTtcbiAgcmV0dXJuIGNvbnRhaW5lclN0YXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUNvbnRhaW5lclN0YXRlID0gKGNvbnRhaW5lckVsOiBFbGVtZW50KSA9PiB7XG4gIGRlbGV0ZSAoY29udGFpbmVyRWwgYXMgYW55KVtDT05UQUlORVJfU1RBVEVdO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFJlZiA9ICh2YWx1ZTogYW55LCBlbG06IEVsZW1lbnQpID0+IHtcbiAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlKGVsbSk7XG4gIH0gZWxzZSBpZiAoaXNTaWduYWwodmFsdWUpKSB7XG4gICAgaWYgKGlzU2VydmVyUGxhdGZvcm0oKSkge1xuICAgICAgLy8gRHVyaW5nIFNTUiwgYXNzaWduaW5nIGEgcmVmIHNob3VsZCBub3QgY2F1c2UgcmVhY3Rpdml0eSBiZWNhdXNlXG4gICAgICAvLyB0aGUgZXhwZWN0YXRpb24gaXMgdGhhdCB0aGUgcmVmIGlzIGZpbGxlZCBpbiBvbiB0aGUgY2xpZW50XG4gICAgICByZXR1cm4gKCh2YWx1ZSBhcyBTaWduYWxJbXBsPEVsZW1lbnQ+KS51bnRyYWNrZWRWYWx1ZSA9IGVsbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoKHZhbHVlIGFzIFNpZ25hbDxFbGVtZW50PikudmFsdWUgPSBlbG0pO1xuICAgIH1cbiAgfVxuICB0aHJvdyBxRXJyb3IoUUVycm9yX2ludmFsaWRSZWZWYWx1ZSwgdmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IFNIT1dfRUxFTUVOVCA9IDE7XG5leHBvcnQgY29uc3QgU0hPV19DT01NRU5UID0gMTI4O1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9BQ0NFUFQgPSAxO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9SRUpFQ1QgPSAyO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9TS0lQID0gMztcblxuZXhwb3J0IGNvbnN0IGlzQ29udGFpbmVyID0gKGVsOiBOb2RlKSA9PiB7XG4gIHJldHVybiBpc0VsZW1lbnQoZWwpICYmIGVsLmhhc0F0dHJpYnV0ZShRQ29udGFpbmVyQXR0cik7XG59O1xuXG5leHBvcnQgY29uc3QgaW50VG9TdHIgPSAobnU6IG51bWJlcikgPT4ge1xuICByZXR1cm4gbnUudG9TdHJpbmcoMzYpO1xufTtcblxuZXhwb3J0IGNvbnN0IHN0clRvSW50ID0gKG51OiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIHBhcnNlSW50KG51LCAzNik7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXZlbnROYW1lID0gKGF0dHJpYnV0ZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGNvbG9uUG9zID0gYXR0cmlidXRlLmluZGV4T2YoJzonKTtcbiAgaWYgKGF0dHJpYnV0ZSkge1xuICAgIHJldHVybiBmcm9tS2ViYWJUb0NhbWVsQ2FzZShhdHRyaWJ1dGUuc2xpY2UoY29sb25Qb3MgKyAxKSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGF0dHJpYnV0ZTtcbiAgfVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBRQ29udGFpbmVyRWxlbWVudCBleHRlbmRzIEVsZW1lbnQge1xuICBfcXdpa2pzb25fPzogYW55O1xufVxuIl19","import { getEventName, setRef } from '../../container/container';\nimport { assertDefined, assertElement, assertEqual, assertFail, assertQwikElement, assertTrue, } from '../../error/assert';\nimport { assertQrl, isQrl } from '../../qrl/qrl-class';\nimport { PREVENT_DEFAULT, isOnProp, setEvent } from '../../state/listeners';\nimport { isElement, isQwikElement, isText, isVirtualElement } from '../../util/element';\nimport { logWarn } from '../../util/log';\nimport { ELEMENT_ID, OnRenderProp, QSlot, QSlotRef, QSlotS, QStyle } from '../../util/markers';\nimport { isPromise, maybeThen, promiseAll, promiseAllLazy } from '../../util/promises';\nimport { qDev, qInspector, qTest } from '../../util/qdev';\nimport { dangerouslySetInnerHTML, isAriaAttribute, jsxToString, pushRenderContext, serializeClassWithHost, setQId, static_listeners, static_subtree, stringifyStyle, } from '../execute-component';\nimport { directGetAttribute, directSetAttribute } from '../fast-calls';\nimport { SKIP_RENDER_TYPE, isJSXNode } from '../jsx/jsx-runtime';\nimport { ProcessedJSXNodeImpl, getVdom, processData, renderComponent, } from './render-dom';\nimport { VIRTUAL, getRootNode, newVirtualElement, processVirtualNodes, queryAllVirtualByAttribute, } from './virtual-element';\n// keep this import from qwik/build so the cjs build works\nimport { isBrowser } from '@builder.io/qwik/build';\nimport { getProxyTarget, getSubscriptionManager, } from '../../state/common';\nimport { _IMMUTABLE, _IMMUTABLE_PREFIX } from '../../state/constants';\nimport { HOST_FLAG_DIRTY, HOST_FLAG_NEED_ATTACH_LISTENER, cleanupContext, createContext, getContext, tryGetContext, } from '../../state/context';\nimport { isSignal } from '../../state/signal';\nimport { ReadWriteProxyHandler, createPropsState, createProxy } from '../../state/store';\nimport { trackSignal } from '../../use/use-core';\nimport { EMPTY_OBJ } from '../../util/flyweight';\nimport { appendChild, createElement, createTemplate, executeDOMRender, getKey, insertAfter, insertBefore, prepend, removeNode, setAttribute, setKey, setProperty, setPropertyPost, } from './operations';\nexport const SVG_NS = 'http://www.w3.org/2000/svg';\nexport const IS_SVG = 1 << 0;\nexport const IS_HEAD = 1 << 1;\nexport const IS_IMMUTABLE = 1 << 2;\nconst CHILDREN_PLACEHOLDER = [];\nexport const smartUpdateChildren = (ctx, oldVnode, newVnode, flags) => {\n    assertQwikElement(oldVnode.$elm$);\n    const ch = newVnode.$children$;\n    if (ch.length === 1 && ch[0].$type$ === SKIP_RENDER_TYPE) {\n        newVnode.$children$ = oldVnode.$children$;\n        return;\n    }\n    const elm = oldVnode.$elm$;\n    const needsDOMRead = oldVnode.$children$ === CHILDREN_PLACEHOLDER;\n    let filter = isChildComponent;\n    if (needsDOMRead) {\n        const isHead = elm.nodeName === 'HEAD';\n        if (isHead) {\n            filter = isHeadChildren;\n            flags |= IS_HEAD;\n        }\n    }\n    const oldCh = getVnodeChildren(oldVnode, filter);\n    if (oldCh.length > 0 && ch.length > 0) {\n        return diffChildren(ctx, elm, oldCh, ch, flags);\n    }\n    else if (oldCh.length > 0 && ch.length === 0) {\n        return removeChildren(ctx.$static$, oldCh, 0, oldCh.length - 1);\n    }\n    else if (ch.length > 0) {\n        return addChildren(ctx, elm, null, ch, 0, ch.length - 1, flags);\n    }\n};\nexport const getVnodeChildren = (oldVnode, filter) => {\n    const oldCh = oldVnode.$children$;\n    const elm = oldVnode.$elm$;\n    if (oldCh === CHILDREN_PLACEHOLDER) {\n        return (oldVnode.$children$ = getChildrenVnodes(elm, filter));\n    }\n    return oldCh;\n};\nexport const diffChildren = (ctx, parentElm, oldCh, newCh, flags) => {\n    let oldStartIdx = 0;\n    let newStartIdx = 0;\n    let oldEndIdx = oldCh.length - 1;\n    let oldStartVnode = oldCh[0];\n    let oldEndVnode = oldCh[oldEndIdx];\n    let newEndIdx = newCh.length - 1;\n    let newStartVnode = newCh[0];\n    let newEndVnode = newCh[newEndIdx];\n    let oldKeyToIdx;\n    let idxInOld;\n    let elmToMove;\n    const results = [];\n    const staticCtx = ctx.$static$;\n    while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n        if (oldStartVnode == null) {\n            oldStartVnode = oldCh[++oldStartIdx]; // Vnode might have been moved left\n        }\n        else if (oldEndVnode == null) {\n            oldEndVnode = oldCh[--oldEndIdx];\n        }\n        else if (newStartVnode == null) {\n            newStartVnode = newCh[++newStartIdx];\n        }\n        else if (newEndVnode == null) {\n            newEndVnode = newCh[--newEndIdx];\n        }\n        else if (oldStartVnode.$id$ === newStartVnode.$id$) {\n            results.push(diffVnode(ctx, oldStartVnode, newStartVnode, flags));\n            oldStartVnode = oldCh[++oldStartIdx];\n            newStartVnode = newCh[++newStartIdx];\n        }\n        else if (oldEndVnode.$id$ === newEndVnode.$id$) {\n            results.push(diffVnode(ctx, oldEndVnode, newEndVnode, flags));\n            oldEndVnode = oldCh[--oldEndIdx];\n            newEndVnode = newCh[--newEndIdx];\n        }\n        else if (oldStartVnode.$key$ && oldStartVnode.$id$ === newEndVnode.$id$) {\n            assertDefined(oldStartVnode.$elm$, 'oldStartVnode $elm$ must be defined');\n            assertDefined(oldEndVnode.$elm$, 'oldEndVnode $elm$ must be defined');\n            // Vnode moved right\n            results.push(diffVnode(ctx, oldStartVnode, newEndVnode, flags));\n            insertAfter(staticCtx, parentElm, oldStartVnode.$elm$, oldEndVnode.$elm$);\n            oldStartVnode = oldCh[++oldStartIdx];\n            newEndVnode = newCh[--newEndIdx];\n        }\n        else if (oldEndVnode.$key$ && oldEndVnode.$id$ === newStartVnode.$id$) {\n            assertDefined(oldStartVnode.$elm$, 'oldStartVnode $elm$ must be defined');\n            assertDefined(oldEndVnode.$elm$, 'oldEndVnode $elm$ must be defined');\n            // Vnode moved left\n            results.push(diffVnode(ctx, oldEndVnode, newStartVnode, flags));\n            insertBefore(staticCtx, parentElm, oldEndVnode.$elm$, oldStartVnode.$elm$);\n            oldEndVnode = oldCh[--oldEndIdx];\n            newStartVnode = newCh[++newStartIdx];\n        }\n        else {\n            if (oldKeyToIdx === undefined) {\n                oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n            }\n            idxInOld = oldKeyToIdx[newStartVnode.$key$];\n            if (idxInOld === undefined) {\n                // New element\n                const newElm = createElm(ctx, newStartVnode, flags, results);\n                insertBefore(staticCtx, parentElm, newElm, oldStartVnode?.$elm$);\n            }\n            else {\n                elmToMove = oldCh[idxInOld];\n                if (elmToMove.$type$ !== newStartVnode.$type$) {\n                    const newElm = createElm(ctx, newStartVnode, flags, results);\n                    // TO CHECK: should we not await these promises?\n                    maybeThen(newElm, (newElm) => {\n                        insertBefore(staticCtx, parentElm, newElm, oldStartVnode?.$elm$);\n                    });\n                }\n                else {\n                    results.push(diffVnode(ctx, elmToMove, newStartVnode, flags));\n                    oldCh[idxInOld] = undefined;\n                    assertDefined(elmToMove.$elm$, 'elmToMove $elm$ must be defined');\n                    insertBefore(staticCtx, parentElm, elmToMove.$elm$, oldStartVnode.$elm$);\n                }\n            }\n            newStartVnode = newCh[++newStartIdx];\n        }\n    }\n    if (newStartIdx <= newEndIdx) {\n        const before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].$elm$;\n        results.push(addChildren(ctx, parentElm, before, newCh, newStartIdx, newEndIdx, flags));\n    }\n    let wait = promiseAll(results);\n    if (oldStartIdx <= oldEndIdx) {\n        wait = maybeThen(wait, () => {\n            removeChildren(staticCtx, oldCh, oldStartIdx, oldEndIdx);\n        });\n    }\n    return wait;\n};\nexport const getChildren = (elm, filter) => {\n    const end = isVirtualElement(elm) ? elm.close : null;\n    const nodes = [];\n    let node = elm.firstChild;\n    while ((node = processVirtualNodes(node))) {\n        if (filter(node)) {\n            nodes.push(node);\n        }\n        node = node.nextSibling;\n        if (node === end) {\n            break;\n        }\n    }\n    return nodes;\n};\n// export const getChildren = (elm: QwikElement, mode: ChildrenMode): (Node | VirtualElement)[] => {\n//   // console.warn('DOM READ: getChildren()', elm);\n//   switch (mode) {\n//     case 'root':\n//       return getCh(elm, isChildComponent);\n//     case 'head':\n//       return getCh(elm, isHeadChildren);\n//     case 'elements':\n//       return getCh(elm, isNodeElement);\n//   }\n// };\nconst getChildrenVnodes = (elm, filter) => {\n    return getChildren(elm, filter).map(getVnodeFromEl);\n};\nexport const getVnodeFromEl = (el) => {\n    if (isElement(el)) {\n        return tryGetContext(el)?.$vdom$ ?? domToVnode(el);\n    }\n    return domToVnode(el);\n};\nexport const domToVnode = (node) => {\n    if (isQwikElement(node)) {\n        const t = new ProcessedJSXNodeImpl(node.localName, {}, null, CHILDREN_PLACEHOLDER, 0, getKey(node));\n        t.$elm$ = node;\n        return t;\n    }\n    else if (isText(node)) {\n        const t = new ProcessedJSXNodeImpl(node.nodeName, EMPTY_OBJ, null, CHILDREN_PLACEHOLDER, 0, null);\n        t.$text$ = node.data;\n        t.$elm$ = node;\n        return t;\n    }\n    assertFail('Invalid node type');\n};\nconst isHeadChildren = (node) => {\n    const type = node.nodeType;\n    if (type === 1) {\n        return node.hasAttribute('q:head');\n    }\n    return type === 111;\n};\nexport const isSlotTemplate = (node) => {\n    return node.nodeName === 'Q:TEMPLATE';\n};\nexport const isChildComponent = (node) => {\n    const type = node.nodeType;\n    if (type === 3 || type === 111) {\n        return true;\n    }\n    if (type !== 1) {\n        return false;\n    }\n    const nodeName = node.nodeName;\n    if (nodeName === 'Q:TEMPLATE') {\n        return false;\n    }\n    if (nodeName === 'HEAD') {\n        return node.hasAttribute('q:head');\n    }\n    if (nodeName === 'STYLE') {\n        return !node.hasAttribute(QStyle);\n    }\n    return true;\n};\nexport const splitChildren = (input) => {\n    const output = {};\n    for (const item of input) {\n        const key = getSlotName(item);\n        const node = output[key] ??\n            (output[key] = new ProcessedJSXNodeImpl(VIRTUAL, {\n                [QSlotS]: '',\n            }, null, [], 0, key));\n        node.$children$.push(item);\n    }\n    return output;\n};\nexport const diffVnode = (rCtx, oldVnode, newVnode, flags) => {\n    assertEqual(oldVnode.$type$, newVnode.$type$, 'old and new vnodes type must be the same');\n    assertEqual(oldVnode.$key$, newVnode.$key$, 'old and new vnodes key must be the same');\n    assertEqual(oldVnode.$id$, newVnode.$id$, 'old and new vnodes key must be the same');\n    const elm = oldVnode.$elm$;\n    const tag = newVnode.$type$;\n    const staticCtx = rCtx.$static$;\n    const containerState = staticCtx.$containerState$;\n    const currentComponent = rCtx.$cmpCtx$;\n    assertDefined(elm, 'while patching element must be defined');\n    assertDefined(currentComponent, 'while patching current component must be defined');\n    newVnode.$elm$ = elm;\n    // Render text nodes\n    if (tag === '#text') {\n        staticCtx.$visited$.push(elm);\n        const signal = newVnode.$signal$;\n        if (signal) {\n            newVnode.$text$ = jsxToString(trackSignal(signal, [4, currentComponent.$element$, signal, elm]));\n        }\n        setProperty(staticCtx, elm, 'data', newVnode.$text$);\n        return;\n    }\n    else if (tag === '#signal') {\n        return;\n    }\n    assertQwikElement(elm);\n    const props = newVnode.$props$;\n    const vnodeFlags = newVnode.$flags$;\n    const elCtx = getContext(elm, containerState);\n    if (tag !== VIRTUAL) {\n        // Track SVG state\n        let isSvg = (flags & IS_SVG) !== 0;\n        if (!isSvg && tag === 'svg') {\n            flags |= IS_SVG;\n            isSvg = true;\n        }\n        if (props !== EMPTY_OBJ) {\n            // elCtx.$vdom$ = newVnode;\n            if ((vnodeFlags & static_listeners) === 0) {\n                elCtx.li.length = 0;\n            }\n            const values = oldVnode.$props$;\n            newVnode.$props$ = values;\n            for (const prop in props) {\n                let newValue = props[prop];\n                if (prop === 'ref') {\n                    assertElement(elm);\n                    if (newValue !== undefined) {\n                        setRef(newValue, elm);\n                    }\n                    continue;\n                }\n                if (isOnProp(prop)) {\n                    const normalized = setEvent(elCtx.li, prop, newValue, containerState.$containerEl$);\n                    addQwikEvent(staticCtx, elm, normalized);\n                    continue;\n                }\n                if (isSignal(newValue)) {\n                    newValue = trackSignal(newValue, [1, currentComponent.$element$, newValue, elm, prop]);\n                }\n                if (prop === 'class') {\n                    newValue = serializeClassWithHost(newValue, currentComponent);\n                }\n                else if (prop === 'style') {\n                    newValue = stringifyStyle(newValue);\n                }\n                if (values[prop] !== newValue) {\n                    values[prop] = newValue;\n                    smartSetProperty(staticCtx, elm, prop, newValue, isSvg);\n                }\n            }\n        }\n        if (vnodeFlags & static_subtree) {\n            return;\n        }\n        if (isSvg && tag === 'foreignObject') {\n            flags &= ~IS_SVG;\n        }\n        const setsInnerHTML = props[dangerouslySetInnerHTML] !== undefined;\n        if (setsInnerHTML) {\n            if (qDev && newVnode.$children$.length > 0) {\n                logWarn('Node can not have children when innerHTML is set');\n            }\n            return;\n        }\n        if (tag === 'textarea') {\n            return;\n        }\n        return smartUpdateChildren(rCtx, oldVnode, newVnode, flags);\n    }\n    else if (OnRenderProp in props) {\n        const cmpProps = props.props;\n        setComponentProps(containerState, elCtx, cmpProps);\n        let needsRender = !!(elCtx.$flags$ & HOST_FLAG_DIRTY);\n        // TODO: review this corner case\n        if (!needsRender && !elCtx.$componentQrl$ && !elCtx.$element$.hasAttribute(ELEMENT_ID)) {\n            setQId(rCtx, elCtx);\n            elCtx.$componentQrl$ = cmpProps[OnRenderProp];\n            assertQrl(elCtx.$componentQrl$);\n            needsRender = true;\n        }\n        // Rendering of children of component is more complicated,\n        // since the children must be projected into the rendered slots\n        // In addition, nested children might need rerendering, if that's the case\n        // we need to render the nested component, and wait before projecting the content\n        // since otherwise we don't know where the slots\n        if (needsRender) {\n            return maybeThen(renderComponent(rCtx, elCtx, flags), () => renderContentProjection(rCtx, elCtx, newVnode, flags));\n        }\n        return renderContentProjection(rCtx, elCtx, newVnode, flags);\n    }\n    else if (QSlotS in props) {\n        assertDefined(currentComponent.$slots$, 'current component slots must be a defined array');\n        currentComponent.$slots$.push(newVnode);\n        return;\n    }\n    else if (dangerouslySetInnerHTML in props) {\n        setProperty(staticCtx, elm, 'innerHTML', props[dangerouslySetInnerHTML]);\n        return;\n    }\n    if (vnodeFlags & static_subtree) {\n        return;\n    }\n    return smartUpdateChildren(rCtx, oldVnode, newVnode, flags);\n};\nconst renderContentProjection = (rCtx, hostCtx, vnode, flags) => {\n    if (vnode.$flags$ & static_subtree) {\n        return;\n    }\n    const newChildren = vnode.$children$;\n    const staticCtx = rCtx.$static$;\n    const splittedNewChildren = splitChildren(newChildren);\n    const slotMaps = getSlotMap(hostCtx);\n    // Remove content from empty slots\n    for (const key in slotMaps.slots) {\n        if (!splittedNewChildren[key]) {\n            const slotEl = slotMaps.slots[key];\n            const oldCh = getChildrenVnodes(slotEl, isChildComponent);\n            if (oldCh.length > 0) {\n                // getVdom(slotEl).$children$ = [];\n                const slotCtx = tryGetContext(slotEl);\n                if (slotCtx && slotCtx.$vdom$) {\n                    slotCtx.$vdom$.$children$ = [];\n                }\n                removeChildren(staticCtx, oldCh, 0, oldCh.length - 1);\n            }\n        }\n    }\n    // Remove empty templates\n    for (const key in slotMaps.templates) {\n        const templateEl = slotMaps.templates[key];\n        if (templateEl && !splittedNewChildren[key]) {\n            slotMaps.templates[key] = undefined;\n            removeNode(staticCtx, templateEl);\n        }\n    }\n    // Render into slots\n    return promiseAll(Object.keys(splittedNewChildren).map((slotName) => {\n        const newVdom = splittedNewChildren[slotName];\n        const slotCtx = getSlotCtx(staticCtx, slotMaps, hostCtx, slotName, rCtx.$static$.$containerState$);\n        const oldVdom = getVdom(slotCtx);\n        const slotRctx = pushRenderContext(rCtx);\n        const slotEl = slotCtx.$element$;\n        slotRctx.$slotCtx$ = slotCtx;\n        slotCtx.$vdom$ = newVdom;\n        newVdom.$elm$ = slotEl;\n        let newFlags = flags & ~IS_SVG;\n        if (slotEl.isSvg) {\n            newFlags |= IS_SVG;\n        }\n        const index = staticCtx.$addSlots$.findIndex((slot) => slot[0] === slotEl);\n        if (index >= 0) {\n            staticCtx.$addSlots$.splice(index, 1);\n        }\n        return smartUpdateChildren(slotRctx, oldVdom, newVdom, newFlags);\n    }));\n};\nconst addChildren = (ctx, parentElm, before, vnodes, startIdx, endIdx, flags) => {\n    const promises = [];\n    for (; startIdx <= endIdx; ++startIdx) {\n        const ch = vnodes[startIdx];\n        assertDefined(ch, 'render: node must be defined at index', startIdx, vnodes);\n        const elm = createElm(ctx, ch, flags, promises);\n        insertBefore(ctx.$static$, parentElm, elm, before);\n    }\n    return promiseAllLazy(promises);\n};\nconst removeChildren = (staticCtx, nodes, startIdx, endIdx) => {\n    for (; startIdx <= endIdx; ++startIdx) {\n        const ch = nodes[startIdx];\n        if (ch) {\n            assertDefined(ch.$elm$, 'vnode elm must be defined');\n            removeNode(staticCtx, ch.$elm$);\n        }\n    }\n};\nconst getSlotCtx = (staticCtx, slotMaps, hostCtx, slotName, containerState) => {\n    // If a slot is known, render children inside\n    const slotEl = slotMaps.slots[slotName];\n    if (slotEl) {\n        return getContext(slotEl, containerState);\n    }\n    // Otherwise we park the children in a template\n    const templateEl = slotMaps.templates[slotName];\n    if (templateEl) {\n        return getContext(templateEl, containerState);\n    }\n    const template = createTemplate(staticCtx.$doc$, slotName);\n    const elCtx = createContext(template);\n    elCtx.$parentCtx$ = hostCtx;\n    prepend(staticCtx, hostCtx.$element$, template);\n    slotMaps.templates[slotName] = template;\n    return elCtx;\n};\nconst getSlotName = (node) => {\n    return node.$props$[QSlot] ?? '';\n};\nexport const createElm = (rCtx, vnode, flags, promises) => {\n    const tag = vnode.$type$;\n    const doc = rCtx.$static$.$doc$;\n    const currentComponent = rCtx.$cmpCtx$;\n    if (tag === '#text') {\n        return (vnode.$elm$ = doc.createTextNode(vnode.$text$));\n    }\n    if (tag === '#signal') {\n        const signal = vnode.$signal$;\n        assertDefined(signal, 'expecting signal here');\n        assertDefined(currentComponent, 'signals can not be used outside components');\n        const signalValue = signal.value;\n        if (isJSXNode(signalValue)) {\n            // convert signal value to ProcessedJSXNode\n            const processedSignal = processData(signalValue);\n            if (isSignal(processedSignal)) {\n                throw new Error('NOT IMPLEMENTED: Promise');\n            }\n            else if (Array.isArray(processedSignal)) {\n                throw new Error('NOT IMPLEMENTED: Array');\n            }\n            else {\n                // crate elements\n                const elm = createElm(rCtx, processedSignal, flags, promises);\n                // create subscription\n                trackSignal(signal, flags & IS_IMMUTABLE\n                    ? [3, elm, signal, elm]\n                    : [4, currentComponent.$element$, signal, elm]);\n                // update the vNode for future diff.\n                return (vnode.$elm$ = elm);\n            }\n        }\n        else {\n            // create element\n            const elm = doc.createTextNode(vnode.$text$);\n            elm.data = vnode.$text$ = jsxToString(signalValue);\n            // create subscription\n            trackSignal(signal, flags & IS_IMMUTABLE\n                ? [3, elm, signal, elm]\n                : [4, currentComponent.$element$, signal, elm]);\n            // update the vNode for future diff.\n            return (vnode.$elm$ = elm);\n        }\n    }\n    let elm;\n    let isSvg = !!(flags & IS_SVG);\n    if (!isSvg && tag === 'svg') {\n        flags |= IS_SVG;\n        isSvg = true;\n    }\n    const isVirtual = tag === VIRTUAL;\n    const props = vnode.$props$;\n    const staticCtx = rCtx.$static$;\n    const containerState = staticCtx.$containerState$;\n    if (isVirtual) {\n        elm = newVirtualElement(doc, isSvg);\n    }\n    else if (tag === 'head') {\n        elm = doc.head;\n        flags |= IS_HEAD;\n    }\n    else {\n        elm = createElement(doc, tag, isSvg);\n        flags &= ~IS_HEAD;\n    }\n    if (vnode.$flags$ & static_subtree) {\n        flags |= IS_IMMUTABLE;\n    }\n    vnode.$elm$ = elm;\n    const elCtx = createContext(elm);\n    if (rCtx.$slotCtx$) {\n        elCtx.$parentCtx$ = rCtx.$slotCtx$;\n        elCtx.$realParentCtx$ = rCtx.$cmpCtx$;\n    }\n    else {\n        elCtx.$parentCtx$ = rCtx.$cmpCtx$;\n    }\n    if (!isVirtual) {\n        if (qDev && qInspector) {\n            const dev = vnode.$dev$;\n            if (dev) {\n                directSetAttribute(elm, 'data-qwik-inspector', `${dev.fileName}:${dev.lineNumber}:${dev.columnNumber}`);\n            }\n        }\n        if (vnode.$immutableProps$) {\n            const immProps = props !== EMPTY_OBJ\n                ? Object.fromEntries(Object.entries(vnode.$immutableProps$).map(([k, v]) => [\n                    k,\n                    v === _IMMUTABLE ? props[k] : v,\n                ]))\n                : vnode.$immutableProps$;\n            setProperties(staticCtx, elCtx, currentComponent, immProps, isSvg, true);\n        }\n        if (props !== EMPTY_OBJ) {\n            elCtx.$vdom$ = vnode;\n            const p = vnode.$immutableProps$\n                ? Object.fromEntries(Object.entries(props).filter(([k]) => !(k in vnode.$immutableProps$)))\n                : props;\n            vnode.$props$ = setProperties(staticCtx, elCtx, currentComponent, p, isSvg, false);\n        }\n        if (isSvg && tag === 'foreignObject') {\n            isSvg = false;\n            flags &= ~IS_SVG;\n        }\n        if (currentComponent) {\n            const scopedIds = currentComponent.$scopeIds$;\n            if (scopedIds) {\n                scopedIds.forEach((styleId) => {\n                    elm.classList.add(styleId);\n                });\n            }\n            if (currentComponent.$flags$ & HOST_FLAG_NEED_ATTACH_LISTENER) {\n                elCtx.li.push(...currentComponent.li);\n                currentComponent.$flags$ &= ~HOST_FLAG_NEED_ATTACH_LISTENER;\n            }\n        }\n        for (const listener of elCtx.li) {\n            addQwikEvent(staticCtx, elm, listener[0]);\n        }\n        const setsInnerHTML = props[dangerouslySetInnerHTML] !== undefined;\n        if (setsInnerHTML) {\n            if (qDev && vnode.$children$.length > 0) {\n                logWarn('Node can not have children when innerHTML is set');\n            }\n            return elm;\n        }\n        if (isSvg && tag === 'foreignObject') {\n            isSvg = false;\n            flags &= ~IS_SVG;\n        }\n    }\n    else if (OnRenderProp in props) {\n        const renderQRL = props[OnRenderProp];\n        assertQrl(renderQRL);\n        const target = createPropsState();\n        const manager = containerState.$subsManager$.$createManager$();\n        const proxy = new Proxy(target, new ReadWriteProxyHandler(containerState, manager));\n        const expectProps = props.props;\n        containerState.$proxyMap$.set(target, proxy);\n        elCtx.$props$ = proxy;\n        if (expectProps !== EMPTY_OBJ) {\n            const immutableMeta = (target[_IMMUTABLE] =\n                expectProps[_IMMUTABLE] ?? EMPTY_OBJ);\n            for (const prop in expectProps) {\n                if (prop !== 'children' && prop !== QSlot) {\n                    const immutableValue = immutableMeta[prop];\n                    if (isSignal(immutableValue)) {\n                        target[_IMMUTABLE_PREFIX + prop] = immutableValue;\n                    }\n                    else {\n                        target[prop] = expectProps[prop];\n                    }\n                }\n            }\n        }\n        setQId(rCtx, elCtx);\n        // Run mount hook\n        elCtx.$componentQrl$ = renderQRL;\n        const wait = maybeThen(renderComponent(rCtx, elCtx, flags), () => {\n            let children = vnode.$children$;\n            if (children.length === 0) {\n                return;\n            }\n            if (children.length === 1 && children[0].$type$ === SKIP_RENDER_TYPE) {\n                children = children[0].$children$;\n            }\n            const slotMap = getSlotMap(elCtx);\n            const p = [];\n            const splittedNewChildren = splitChildren(children);\n            for (const slotName in splittedNewChildren) {\n                const newVnode = splittedNewChildren[slotName];\n                const slotCtx = getSlotCtx(staticCtx, slotMap, elCtx, slotName, staticCtx.$containerState$);\n                const slotRctx = pushRenderContext(rCtx);\n                const slotEl = slotCtx.$element$;\n                slotRctx.$slotCtx$ = slotCtx;\n                slotCtx.$vdom$ = newVnode;\n                newVnode.$elm$ = slotEl;\n                let newFlags = flags & ~IS_SVG;\n                if (slotEl.isSvg) {\n                    newFlags |= IS_SVG;\n                }\n                for (const node of newVnode.$children$) {\n                    const nodeElm = createElm(slotRctx, node, newFlags, p);\n                    assertDefined(node.$elm$, 'vnode elm must be defined');\n                    assertEqual(nodeElm, node.$elm$, 'vnode elm must be defined');\n                    appendChild(staticCtx, slotEl, nodeElm);\n                }\n            }\n            return promiseAllLazy(p);\n        });\n        if (isPromise(wait)) {\n            promises.push(wait);\n        }\n        return elm;\n    }\n    else if (QSlotS in props) {\n        assertDefined(currentComponent, 'slot can only be used inside component');\n        assertDefined(currentComponent.$slots$, 'current component slots must be a defined array');\n        setKey(elm, vnode.$key$);\n        directSetAttribute(elm, QSlotRef, currentComponent.$id$);\n        directSetAttribute(elm, QSlotS, '');\n        currentComponent.$slots$.push(vnode);\n        staticCtx.$addSlots$.push([elm, currentComponent.$element$]);\n    }\n    else if (dangerouslySetInnerHTML in props) {\n        setProperty(staticCtx, elm, 'innerHTML', props[dangerouslySetInnerHTML]);\n        return elm;\n    }\n    let children = vnode.$children$;\n    if (children.length === 0) {\n        return elm;\n    }\n    if (children.length === 1 && children[0].$type$ === SKIP_RENDER_TYPE) {\n        children = children[0].$children$;\n    }\n    const nodes = children.map((ch) => createElm(rCtx, ch, flags, promises));\n    for (const node of nodes) {\n        directAppendChild(elm, node);\n    }\n    return elm;\n};\nconst getSlots = (elCtx) => {\n    const slots = elCtx.$slots$;\n    if (!slots) {\n        const parent = elCtx.$element$.parentElement;\n        assertDefined(parent, 'component should be already attached to the dom');\n        return (elCtx.$slots$ = readDOMSlots(elCtx));\n    }\n    return slots;\n};\nconst getSlotMap = (elCtx) => {\n    const slotsArray = getSlots(elCtx);\n    const slots = {};\n    const templates = {};\n    const t = Array.from(elCtx.$element$.childNodes).filter(isSlotTemplate);\n    // Map virtual slots\n    for (const vnode of slotsArray) {\n        assertQwikElement(vnode.$elm$);\n        slots[vnode.$key$ ?? ''] = vnode.$elm$;\n    }\n    // Map templates\n    for (const elm of t) {\n        templates[directGetAttribute(elm, QSlot) ?? ''] = elm;\n    }\n    return { slots, templates };\n};\nconst readDOMSlots = (elCtx) => {\n    const parent = elCtx.$element$.parentElement;\n    assertDefined(parent, 'component should be already attached to the dom');\n    return queryAllVirtualByAttribute(parent, QSlotRef, elCtx.$id$).map(domToVnode);\n};\nconst handleStyle = (ctx, elm, newValue) => {\n    setProperty(ctx, elm.style, 'cssText', newValue);\n    return true;\n};\nconst handleClass = (ctx, elm, newValue) => {\n    assertTrue(newValue == null || typeof newValue === 'string', 'class newValue must be either nullish or string', newValue);\n    if (elm.namespaceURI === SVG_NS) {\n        setAttribute(ctx, elm, 'class', newValue);\n    }\n    else {\n        setProperty(ctx, elm, 'className', newValue);\n    }\n    return true;\n};\nconst checkBeforeAssign = (ctx, elm, newValue, prop) => {\n    if (prop in elm) {\n        // a selected <option> is different from a selected <option value> (innerText vs '')\n        if (elm[prop] !== newValue || (prop === 'value' && !elm.hasAttribute(prop))) {\n            if (\n            // we must set value last so that it adheres to min,max,step\n            prop === 'value' &&\n                // but we must also set options first so they are present before updating select\n                elm.tagName !== 'OPTION') {\n                setPropertyPost(ctx, elm, prop, newValue);\n            }\n            else {\n                setProperty(ctx, elm, prop, newValue);\n            }\n        }\n        return true;\n    }\n    return false;\n};\nconst forceAttribute = (ctx, elm, newValue, prop) => {\n    setAttribute(ctx, elm, prop.toLowerCase(), newValue);\n    return true;\n};\nconst setInnerHTML = (ctx, elm, newValue) => {\n    setProperty(ctx, elm, 'innerHTML', newValue);\n    return true;\n};\nconst noop = () => {\n    return true;\n};\nexport const PROP_HANDLER_MAP = {\n    style: handleStyle,\n    class: handleClass,\n    className: handleClass,\n    value: checkBeforeAssign,\n    checked: checkBeforeAssign,\n    href: forceAttribute,\n    list: forceAttribute,\n    form: forceAttribute,\n    tabIndex: forceAttribute,\n    download: forceAttribute,\n    innerHTML: noop,\n    [dangerouslySetInnerHTML]: setInnerHTML,\n};\nexport const smartSetProperty = (staticCtx, elm, prop, newValue, isSvg) => {\n    // aria attribute value should be rendered as string\n    if (isAriaAttribute(prop)) {\n        setAttribute(staticCtx, elm, prop, newValue != null ? String(newValue) : newValue);\n        return;\n    }\n    // Check if its an exception\n    const exception = PROP_HANDLER_MAP[prop];\n    if (exception) {\n        if (exception(staticCtx, elm, newValue, prop)) {\n            return;\n        }\n    }\n    // Check if property in prototype\n    if (!isSvg && prop in elm) {\n        setProperty(staticCtx, elm, prop, newValue);\n        return;\n    }\n    if (prop.startsWith(PREVENT_DEFAULT)) {\n        registerQwikEvent(prop.slice(PREVENT_DEFAULT.length));\n    }\n    // Fallback to render attribute\n    setAttribute(staticCtx, elm, prop, newValue);\n};\nexport const areExactQRLs = (oldValue, newValue) => {\n    if (!isQrl(oldValue) || !isQrl(newValue) || oldValue.$hash$ !== newValue.$hash$) {\n        return false;\n    }\n    const cA = oldValue.$captureRef$;\n    const cB = newValue.$captureRef$;\n    if (cA && cB) {\n        return sameArrays(cA, cB);\n    }\n    return false;\n};\nexport const sameArrays = (a1, a2) => {\n    const len = a1.length;\n    if (len !== a2.length) {\n        return false;\n    }\n    for (let i = 0; i < len; i++) {\n        if (a1[i] !== a2[i]) {\n            return false;\n        }\n    }\n    return true;\n};\nexport const setProperties = (staticCtx, elCtx, hostCtx, newProps, isSvg, immutable) => {\n    const values = {};\n    const elm = elCtx.$element$;\n    for (const prop in newProps) {\n        let newValue = newProps[prop];\n        if (prop === 'ref') {\n            assertElement(elm);\n            if (newValue !== undefined) {\n                setRef(newValue, elm);\n            }\n            continue;\n        }\n        if (isOnProp(prop)) {\n            setEvent(elCtx.li, prop, newValue, staticCtx.$containerState$.$containerEl$);\n            continue;\n        }\n        if (isSignal(newValue)) {\n            assertDefined(hostCtx, 'Signals can only be used in components');\n            newValue = trackSignal(newValue, immutable\n                ? [1, elm, newValue, hostCtx.$element$, prop]\n                : [2, hostCtx.$element$, newValue, elm, prop]);\n        }\n        if (prop === 'class') {\n            if (qDev && values.class) {\n                throw new TypeError('Can only provide one of class or className');\n            }\n            newValue = serializeClassWithHost(newValue, hostCtx);\n            if (!newValue) {\n                continue;\n            }\n        }\n        else if (prop === 'style') {\n            newValue = stringifyStyle(newValue);\n        }\n        values[prop] = newValue;\n        smartSetProperty(staticCtx, elm, prop, newValue, isSvg);\n    }\n    return values;\n};\nexport const setComponentProps = (containerState, elCtx, expectProps) => {\n    let props = elCtx.$props$;\n    if (!props) {\n        elCtx.$props$ = props = createProxy(createPropsState(), containerState);\n    }\n    if (expectProps === EMPTY_OBJ) {\n        return;\n    }\n    const manager = getSubscriptionManager(props);\n    assertDefined(manager, `props have to be a proxy, but it is not`, props);\n    const target = getProxyTarget(props);\n    assertDefined(target, `props have to be a proxy, but it is not`, props);\n    const immutableMeta = (target[_IMMUTABLE] =\n        expectProps[_IMMUTABLE] ?? EMPTY_OBJ);\n    for (const prop in expectProps) {\n        if (prop !== 'children' && prop !== QSlot && !immutableMeta[prop]) {\n            const value = expectProps[prop];\n            if (target[prop] !== value) {\n                target[prop] = value;\n                manager.$notifySubs$(prop);\n            }\n        }\n    }\n};\nexport const cleanupTree = (elm, staticCtx, subsManager, stopSlots, dispose = false) => {\n    subsManager.$clearSub$(elm);\n    if (isQwikElement(elm)) {\n        if (!dispose && stopSlots && elm.hasAttribute(QSlotS)) {\n            staticCtx.$rmSlots$.push(elm);\n            return;\n        }\n        const ctx = tryGetContext(elm);\n        if (ctx) {\n            cleanupContext(ctx, subsManager);\n        }\n        const end = isVirtualElement(elm) ? elm.close : null;\n        let node = elm.firstChild;\n        while ((node = processVirtualNodes(node))) {\n            cleanupTree(node, staticCtx, subsManager, true, dispose);\n            node = node.nextSibling;\n            if (node === end) {\n                break;\n            }\n        }\n    }\n};\nconst restoreScroll = () => {\n    if (document.__q_scroll_restore__) {\n        document.__q_scroll_restore__();\n        document.__q_scroll_restore__ = undefined;\n    }\n};\nexport const executeContextWithScrollAndTransition = async (ctx) => {\n    // try to use `document.startViewTransition`\n    if (isBrowser && !qTest) {\n        if (document.__q_view_transition__) {\n            document.__q_view_transition__ = undefined;\n            if (document.startViewTransition) {\n                const transition = document.startViewTransition(() => {\n                    executeDOMRender(ctx);\n                    restoreScroll();\n                });\n                const event = new CustomEvent('qviewTransition', {\n                    detail: transition,\n                });\n                document.dispatchEvent(event);\n                await transition.finished;\n                return;\n            }\n        }\n    }\n    // fallback\n    executeDOMRender(ctx);\n    if (isBrowser) {\n        restoreScroll();\n    }\n};\nexport const directAppendChild = (parent, child) => {\n    if (isVirtualElement(child)) {\n        child.appendTo(parent);\n    }\n    else {\n        parent.appendChild(child);\n    }\n};\nexport const directRemoveChild = (parent, child) => {\n    if (isVirtualElement(child)) {\n        child.remove();\n    }\n    else {\n        parent.removeChild(child);\n    }\n};\nexport const directInsertAfter = (parent, child, ref) => {\n    if (isVirtualElement(child)) {\n        child.insertBeforeTo(parent, ref?.nextSibling ?? null);\n    }\n    else {\n        parent.insertBefore(child, ref?.nextSibling ?? null);\n    }\n};\nexport const directInsertBefore = (parent, child, ref) => {\n    if (isVirtualElement(child)) {\n        child.insertBeforeTo(parent, getRootNode(ref));\n    }\n    else {\n        parent.insertBefore(child, getRootNode(ref));\n    }\n};\nconst createKeyToOldIdx = (children, beginIdx, endIdx) => {\n    const map = {};\n    for (let i = beginIdx; i <= endIdx; ++i) {\n        const child = children[i];\n        const key = child.$key$;\n        if (key != null) {\n            map[key] = i;\n        }\n    }\n    return map;\n};\nexport const addQwikEvent = (staticCtx, elm, prop) => {\n    if (!prop.startsWith('on:')) {\n        setAttribute(staticCtx, elm, prop, '');\n    }\n    registerQwikEvent(prop);\n};\nexport const registerQwikEvent = (prop) => {\n    if (!qTest) {\n        const eventName = getEventName(prop);\n        try {\n            // This is managed by qwik-loader\n            (globalThis.qwikevents ||= []).push(eventName);\n        }\n        catch (err) {\n            logWarn(err);\n        }\n    }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXRvci5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS9yZW5kZXIvZG9tL3Zpc2l0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQXVCLE1BQU0sMkJBQTJCLENBQUM7QUFDdEYsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEVBQ2IsV0FBVyxFQUNYLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsVUFBVSxHQUNYLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTFELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsZUFBZSxFQUNmLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGNBQWMsR0FDZixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxrQkFB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LENBQUM7SUFDekMsQ0FBQztJQUNELGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7SUFDaEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQztZQUNILGlDQUFpQztZQUNqQyxDQUFFLFVBQWtCLENBQUMsVUFBVSxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBPblJlbmRlckZuIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2NvbXBvbmVudC5wdWJsaWMnO1xuaW1wb3J0IHsgZ2V0RXZlbnROYW1lLCBzZXRSZWYsIHR5cGUgQ29udGFpbmVyU3RhdGUgfSBmcm9tICcuLi8uLi9jb250YWluZXIvY29udGFpbmVyJztcbmltcG9ydCB7XG4gIGFzc2VydERlZmluZWQsXG4gIGFzc2VydEVsZW1lbnQsXG4gIGFzc2VydEVxdWFsLFxuICBhc3NlcnRGYWlsLFxuICBhc3NlcnRRd2lrRWxlbWVudCxcbiAgYXNzZXJ0VHJ1ZSxcbn0gZnJvbSAnLi4vLi4vZXJyb3IvYXNzZXJ0JztcbmltcG9ydCB7IGFzc2VydFFybCwgaXNRcmwgfSBmcm9tICcuLi8uLi9xcmwvcXJsLWNsYXNzJztcbmltcG9ydCB7IFBSRVZFTlRfREVGQVVMVCwgaXNPblByb3AsIHNldEV2ZW50IH0gZnJvbSAnLi4vLi4vc3RhdGUvbGlzdGVuZXJzJztcbmltcG9ydCB7IGlzRWxlbWVudCwgaXNRd2lrRWxlbWVudCwgaXNUZXh0LCBpc1ZpcnR1YWxFbGVtZW50IH0gZnJvbSAnLi4vLi4vdXRpbC9lbGVtZW50JztcbmltcG9ydCB7IGxvZ1dhcm4gfSBmcm9tICcuLi8uLi91dGlsL2xvZyc7XG5pbXBvcnQgeyBFTEVNRU5UX0lELCBPblJlbmRlclByb3AsIFFTbG90LCBRU2xvdFJlZiwgUVNsb3RTLCBRU3R5bGUgfSBmcm9tICcuLi8uLi91dGlsL21hcmtlcnMnO1xuaW1wb3J0IHsgaXNQcm9taXNlLCBtYXliZVRoZW4sIHByb21pc2VBbGwsIHByb21pc2VBbGxMYXp5IH0gZnJvbSAnLi4vLi4vdXRpbC9wcm9taXNlcyc7XG5pbXBvcnQgeyBxRGV2LCBxSW5zcGVjdG9yLCBxVGVzdCB9IGZyb20gJy4uLy4uL3V0aWwvcWRldic7XG5pbXBvcnQgdHlwZSB7IFZhbHVlT3JQcm9taXNlIH0gZnJvbSAnLi4vLi4vdXRpbC90eXBlcyc7XG5pbXBvcnQge1xuICBkYW5nZXJvdXNseVNldElubmVySFRNTCxcbiAgaXNBcmlhQXR0cmlidXRlLFxuICBqc3hUb1N0cmluZyxcbiAgcHVzaFJlbmRlckNvbnRleHQsXG4gIHNlcmlhbGl6ZUNsYXNzV2l0aEhvc3QsXG4gIHNldFFJZCxcbiAgc3RhdGljX2xpc3RlbmVycyxcbiAgc3RhdGljX3N1YnRyZWUsXG4gIHN0cmluZ2lmeVN0eWxlLFxufSBmcm9tICcuLi9leGVjdXRlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBkaXJlY3RHZXRBdHRyaWJ1dGUsIGRpcmVjdFNldEF0dHJpYnV0ZSB9IGZyb20gJy4uL2Zhc3QtY2FsbHMnO1xuaW1wb3J0IHsgU0tJUF9SRU5ERVJfVFlQRSwgaXNKU1hOb2RlIH0gZnJvbSAnLi4vanN4L2pzeC1ydW50aW1lJztcbmltcG9ydCB0eXBlIHsgUmVuZGVyQ29udGV4dCwgUmVuZGVyU3RhdGljQ29udGV4dCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7XG4gIFByb2Nlc3NlZEpTWE5vZGVJbXBsLFxuICBnZXRWZG9tLFxuICBwcm9jZXNzRGF0YSxcbiAgcmVuZGVyQ29tcG9uZW50LFxuICB0eXBlIFByb2Nlc3NlZEpTWE5vZGUsXG59IGZyb20gJy4vcmVuZGVyLWRvbSc7XG5pbXBvcnQge1xuICBWSVJUVUFMLFxuICBnZXRSb290Tm9kZSxcbiAgbmV3VmlydHVhbEVsZW1lbnQsXG4gIHByb2Nlc3NWaXJ0dWFsTm9kZXMsXG4gIHF1ZXJ5QWxsVmlydHVhbEJ5QXR0cmlidXRlLFxuICB0eXBlIFF3aWtFbGVtZW50LFxuICB0eXBlIFZpcnR1YWxFbGVtZW50LFxufSBmcm9tICcuL3ZpcnR1YWwtZWxlbWVudCc7XG5cbi8vIGtlZXAgdGhpcyBpbXBvcnQgZnJvbSBxd2lrL2J1aWxkIHNvIHRoZSBjanMgYnVpbGQgd29ya3NcbmltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gJ0BidWlsZGVyLmlvL3F3aWsvYnVpbGQnO1xuaW1wb3J0IHtcbiAgZ2V0UHJveHlUYXJnZXQsXG4gIGdldFN1YnNjcmlwdGlvbk1hbmFnZXIsXG4gIHR5cGUgU3Vic2NyaWJlckMsXG4gIHR5cGUgU3Vic2NyaXB0aW9uTWFuYWdlcixcbn0gZnJvbSAnLi4vLi4vc3RhdGUvY29tbW9uJztcbmltcG9ydCB7IF9JTU1VVEFCTEUsIF9JTU1VVEFCTEVfUFJFRklYIH0gZnJvbSAnLi4vLi4vc3RhdGUvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIEhPU1RfRkxBR19ESVJUWSxcbiAgSE9TVF9GTEFHX05FRURfQVRUQUNIX0xJU1RFTkVSLFxuICBjbGVhbnVwQ29udGV4dCxcbiAgY3JlYXRlQ29udGV4dCxcbiAgZ2V0Q29udGV4dCxcbiAgdHJ5R2V0Q29udGV4dCxcbiAgdHlwZSBRQ29udGV4dCxcbn0gZnJvbSAnLi4vLi4vc3RhdGUvY29udGV4dCc7XG5pbXBvcnQgeyBpc1NpZ25hbCB9IGZyb20gJy4uLy4uL3N0YXRlL3NpZ25hbCc7XG5pbXBvcnQgeyBSZWFkV3JpdGVQcm94eUhhbmRsZXIsIGNyZWF0ZVByb3BzU3RhdGUsIGNyZWF0ZVByb3h5IH0gZnJvbSAnLi4vLi4vc3RhdGUvc3RvcmUnO1xuaW1wb3J0IHsgdHJhY2tTaWduYWwgfSBmcm9tICcuLi8uLi91c2UvdXNlLWNvcmUnO1xuaW1wb3J0IHsgRU1QVFlfT0JKIH0gZnJvbSAnLi4vLi4vdXRpbC9mbHl3ZWlnaHQnO1xuaW1wb3J0IHtcbiAgYXBwZW5kQ2hpbGQsXG4gIGNyZWF0ZUVsZW1lbnQsXG4gIGNyZWF0ZVRlbXBsYXRlLFxuICBleGVjdXRlRE9NUmVuZGVyLFxuICBnZXRLZXksXG4gIGluc2VydEFmdGVyLFxuICBpbnNlcnRCZWZvcmUsXG4gIHByZXBlbmQsXG4gIHJlbW92ZU5vZGUsXG4gIHNldEF0dHJpYnV0ZSxcbiAgc2V0S2V5LFxuICBzZXRQcm9wZXJ0eSxcbiAgc2V0UHJvcGVydHlQb3N0LFxufSBmcm9tICcuL29wZXJhdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgU1ZHX05TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJztcblxuZXhwb3J0IGNvbnN0IElTX1NWRyA9IDEgPDwgMDtcbmV4cG9ydCBjb25zdCBJU19IRUFEID0gMSA8PCAxO1xuZXhwb3J0IGNvbnN0IElTX0lNTVVUQUJMRSA9IDEgPDwgMjtcblxudHlwZSBLZXlUb0luZGV4TWFwID0geyBba2V5OiBzdHJpbmddOiBudW1iZXIgfTtcblxuY29uc3QgQ0hJTERSRU5fUExBQ0VIT0xERVI6IFByb2Nlc3NlZEpTWE5vZGVbXSA9IFtdO1xudHlwZSBQcm9wSGFuZGxlciA9IChcbiAgc3RhdGljQ3R4OiBSZW5kZXJTdGF0aWNDb250ZXh0LFxuICBlbDogSFRNTEVsZW1lbnQsXG4gIG5ld1ZhbHVlOiBhbnksXG4gIFByb2Nlc3NlZEpTWE5vZGVJbXBsOiBzdHJpbmdcbikgPT4gYm9vbGVhbjtcblxuZXhwb3J0IHR5cGUgQ2hpbGRyZW5Nb2RlID0gJ3Jvb3QnIHwgJ2hlYWQnIHwgJ2VsZW1lbnRzJztcblxuZXhwb3J0IGNvbnN0IHNtYXJ0VXBkYXRlQ2hpbGRyZW4gPSAoXG4gIGN0eDogUmVuZGVyQ29udGV4dCxcbiAgb2xkVm5vZGU6IFByb2Nlc3NlZEpTWE5vZGUsXG4gIG5ld1Zub2RlOiBQcm9jZXNzZWRKU1hOb2RlLFxuICBmbGFnczogbnVtYmVyXG4pID0+IHtcbiAgYXNzZXJ0UXdpa0VsZW1lbnQob2xkVm5vZGUuJGVsbSQpO1xuXG4gIGNvbnN0IGNoID0gbmV3Vm5vZGUuJGNoaWxkcmVuJDtcbiAgaWYgKGNoLmxlbmd0aCA9PT0gMSAmJiBjaFswXS4kdHlwZSQgPT09IFNLSVBfUkVOREVSX1RZUEUpIHtcbiAgICBuZXdWbm9kZS4kY2hpbGRyZW4kID0gb2xkVm5vZGUuJGNoaWxkcmVuJDtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgZWxtID0gb2xkVm5vZGUuJGVsbSQ7XG4gIGNvbnN0IG5lZWRzRE9NUmVhZCA9IG9sZFZub2RlLiRjaGlsZHJlbiQgPT09IENISUxEUkVOX1BMQUNFSE9MREVSO1xuICBsZXQgZmlsdGVyID0gaXNDaGlsZENvbXBvbmVudDtcbiAgaWYgKG5lZWRzRE9NUmVhZCkge1xuICAgIGNvbnN0IGlzSGVhZCA9IGVsbS5ub2RlTmFtZSA9PT0gJ0hFQUQnO1xuICAgIGlmIChpc0hlYWQpIHtcbiAgICAgIGZpbHRlciA9IGlzSGVhZENoaWxkcmVuO1xuICAgICAgZmxhZ3MgfD0gSVNfSEVBRDtcbiAgICB9XG4gIH1cblxuICBjb25zdCBvbGRDaCA9IGdldFZub2RlQ2hpbGRyZW4ob2xkVm5vZGUsIGZpbHRlcik7XG4gIGlmIChvbGRDaC5sZW5ndGggPiAwICYmIGNoLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gZGlmZkNoaWxkcmVuKGN0eCwgZWxtLCBvbGRDaCwgY2gsIGZsYWdzKTtcbiAgfSBlbHNlIGlmIChvbGRDaC5sZW5ndGggPiAwICYmIGNoLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiByZW1vdmVDaGlsZHJlbihjdHguJHN0YXRpYyQsIG9sZENoLCAwLCBvbGRDaC5sZW5ndGggLSAxKTtcbiAgfSBlbHNlIGlmIChjaC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIGFkZENoaWxkcmVuKGN0eCwgZWxtLCBudWxsLCBjaCwgMCwgY2gubGVuZ3RoIC0gMSwgZmxhZ3MpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Vm5vZGVDaGlsZHJlbiA9IChcbiAgb2xkVm5vZGU6IFByb2Nlc3NlZEpTWE5vZGUsXG4gIGZpbHRlcjogKGVsOiBOb2RlIHwgVmlydHVhbEVsZW1lbnQpID0+IGJvb2xlYW5cbikgPT4ge1xuICBjb25zdCBvbGRDaCA9IG9sZFZub2RlLiRjaGlsZHJlbiQ7XG4gIGNvbnN0IGVsbSA9IG9sZFZub2RlLiRlbG0kIGFzIEVsZW1lbnQ7XG4gIGlmIChvbGRDaCA9PT0gQ0hJTERSRU5fUExBQ0VIT0xERVIpIHtcbiAgICByZXR1cm4gKG9sZFZub2RlLiRjaGlsZHJlbiQgPSBnZXRDaGlsZHJlblZub2RlcyhlbG0sIGZpbHRlcikpO1xuICB9XG4gIHJldHVybiBvbGRDaDtcbn07XG5cbmV4cG9ydCBjb25zdCBkaWZmQ2hpbGRyZW4gPSAoXG4gIGN0eDogUmVuZGVyQ29udGV4dCxcbiAgcGFyZW50RWxtOiBRd2lrRWxlbWVudCxcbiAgb2xkQ2g6IFByb2Nlc3NlZEpTWE5vZGVbXSxcbiAgbmV3Q2g6IFByb2Nlc3NlZEpTWE5vZGVbXSxcbiAgZmxhZ3M6IG51bWJlclxuKTogVmFsdWVPclByb21pc2U8dm9pZD4gPT4ge1xuICBsZXQgb2xkU3RhcnRJZHggPSAwO1xuICBsZXQgbmV3U3RhcnRJZHggPSAwO1xuICBsZXQgb2xkRW5kSWR4ID0gb2xkQ2gubGVuZ3RoIC0gMTtcbiAgbGV0IG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFswXSBhcyBQcm9jZXNzZWRKU1hOb2RlIHwgdW5kZWZpbmVkO1xuICBsZXQgb2xkRW5kVm5vZGUgPSBvbGRDaFtvbGRFbmRJZHhdIGFzIFByb2Nlc3NlZEpTWE5vZGUgfCB1bmRlZmluZWQ7XG4gIGxldCBuZXdFbmRJZHggPSBuZXdDaC5sZW5ndGggLSAxO1xuICBsZXQgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWzBdIGFzIFByb2Nlc3NlZEpTWE5vZGUgfCB1bmRlZmluZWQ7XG4gIGxldCBuZXdFbmRWbm9kZSA9IG5ld0NoW25ld0VuZElkeF0gYXMgUHJvY2Vzc2VkSlNYTm9kZSB8IHVuZGVmaW5lZDtcbiAgbGV0IG9sZEtleVRvSWR4OiBLZXlUb0luZGV4TWFwIHwgdW5kZWZpbmVkO1xuICBsZXQgaWR4SW5PbGQ6IG51bWJlcjtcbiAgbGV0IGVsbVRvTW92ZTogUHJvY2Vzc2VkSlNYTm9kZTtcbiAgY29uc3QgcmVzdWx0czogYW55W10gPSBbXTtcbiAgY29uc3Qgc3RhdGljQ3R4ID0gY3R4LiRzdGF0aWMkO1xuXG4gIHdoaWxlIChvbGRTdGFydElkeCA8PSBvbGRFbmRJZHggJiYgbmV3U3RhcnRJZHggPD0gbmV3RW5kSWR4KSB7XG4gICAgaWYgKG9sZFN0YXJ0Vm5vZGUgPT0gbnVsbCkge1xuICAgICAgb2xkU3RhcnRWbm9kZSA9IG9sZENoWysrb2xkU3RhcnRJZHhdOyAvLyBWbm9kZSBtaWdodCBoYXZlIGJlZW4gbW92ZWQgbGVmdFxuICAgIH0gZWxzZSBpZiAob2xkRW5kVm5vZGUgPT0gbnVsbCkge1xuICAgICAgb2xkRW5kVm5vZGUgPSBvbGRDaFstLW9sZEVuZElkeF07XG4gICAgfSBlbHNlIGlmIChuZXdTdGFydFZub2RlID09IG51bGwpIHtcbiAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAgICB9IGVsc2UgaWYgKG5ld0VuZFZub2RlID09IG51bGwpIHtcbiAgICAgIG5ld0VuZFZub2RlID0gbmV3Q2hbLS1uZXdFbmRJZHhdO1xuICAgIH0gZWxzZSBpZiAob2xkU3RhcnRWbm9kZS4kaWQkID09PSBuZXdTdGFydFZub2RlLiRpZCQpIHtcbiAgICAgIHJlc3VsdHMucHVzaChkaWZmVm5vZGUoY3R4LCBvbGRTdGFydFZub2RlLCBuZXdTdGFydFZub2RlLCBmbGFncykpO1xuICAgICAgb2xkU3RhcnRWbm9kZSA9IG9sZENoWysrb2xkU3RhcnRJZHhdO1xuICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgIH0gZWxzZSBpZiAob2xkRW5kVm5vZGUuJGlkJCA9PT0gbmV3RW5kVm5vZGUuJGlkJCkge1xuICAgICAgcmVzdWx0cy5wdXNoKGRpZmZWbm9kZShjdHgsIG9sZEVuZFZub2RlLCBuZXdFbmRWbm9kZSwgZmxhZ3MpKTtcbiAgICAgIG9sZEVuZFZub2RlID0gb2xkQ2hbLS1vbGRFbmRJZHhdO1xuICAgICAgbmV3RW5kVm5vZGUgPSBuZXdDaFstLW5ld0VuZElkeF07XG4gICAgfSBlbHNlIGlmIChvbGRTdGFydFZub2RlLiRrZXkkICYmIG9sZFN0YXJ0Vm5vZGUuJGlkJCA9PT0gbmV3RW5kVm5vZGUuJGlkJCkge1xuICAgICAgYXNzZXJ0RGVmaW5lZChvbGRTdGFydFZub2RlLiRlbG0kLCAnb2xkU3RhcnRWbm9kZSAkZWxtJCBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICAgIGFzc2VydERlZmluZWQob2xkRW5kVm5vZGUuJGVsbSQsICdvbGRFbmRWbm9kZSAkZWxtJCBtdXN0IGJlIGRlZmluZWQnKTtcblxuICAgICAgLy8gVm5vZGUgbW92ZWQgcmlnaHRcbiAgICAgIHJlc3VsdHMucHVzaChkaWZmVm5vZGUoY3R4LCBvbGRTdGFydFZub2RlLCBuZXdFbmRWbm9kZSwgZmxhZ3MpKTtcbiAgICAgIGluc2VydEFmdGVyKHN0YXRpY0N0eCwgcGFyZW50RWxtLCBvbGRTdGFydFZub2RlLiRlbG0kLCBvbGRFbmRWbm9kZS4kZWxtJCk7XG4gICAgICBvbGRTdGFydFZub2RlID0gb2xkQ2hbKytvbGRTdGFydElkeF07XG4gICAgICBuZXdFbmRWbm9kZSA9IG5ld0NoWy0tbmV3RW5kSWR4XTtcbiAgICB9IGVsc2UgaWYgKG9sZEVuZFZub2RlLiRrZXkkICYmIG9sZEVuZFZub2RlLiRpZCQgPT09IG5ld1N0YXJ0Vm5vZGUuJGlkJCkge1xuICAgICAgYXNzZXJ0RGVmaW5lZChvbGRTdGFydFZub2RlLiRlbG0kLCAnb2xkU3RhcnRWbm9kZSAkZWxtJCBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICAgIGFzc2VydERlZmluZWQob2xkRW5kVm5vZGUuJGVsbSQsICdvbGRFbmRWbm9kZSAkZWxtJCBtdXN0IGJlIGRlZmluZWQnKTtcblxuICAgICAgLy8gVm5vZGUgbW92ZWQgbGVmdFxuICAgICAgcmVzdWx0cy5wdXNoKGRpZmZWbm9kZShjdHgsIG9sZEVuZFZub2RlLCBuZXdTdGFydFZub2RlLCBmbGFncykpO1xuICAgICAgaW5zZXJ0QmVmb3JlKHN0YXRpY0N0eCwgcGFyZW50RWxtLCBvbGRFbmRWbm9kZS4kZWxtJCwgb2xkU3RhcnRWbm9kZS4kZWxtJCk7XG4gICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG9sZEtleVRvSWR4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb2xkS2V5VG9JZHggPSBjcmVhdGVLZXlUb09sZElkeChvbGRDaCwgb2xkU3RhcnRJZHgsIG9sZEVuZElkeCk7XG4gICAgICB9XG4gICAgICBpZHhJbk9sZCA9IG9sZEtleVRvSWR4W25ld1N0YXJ0Vm5vZGUuJGtleSQgYXMgc3RyaW5nXTtcbiAgICAgIGlmIChpZHhJbk9sZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIE5ldyBlbGVtZW50XG4gICAgICAgIGNvbnN0IG5ld0VsbSA9IGNyZWF0ZUVsbShjdHgsIG5ld1N0YXJ0Vm5vZGUsIGZsYWdzLCByZXN1bHRzKTtcbiAgICAgICAgaW5zZXJ0QmVmb3JlKHN0YXRpY0N0eCwgcGFyZW50RWxtLCBuZXdFbG0sIG9sZFN0YXJ0Vm5vZGU/LiRlbG0kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsbVRvTW92ZSA9IG9sZENoW2lkeEluT2xkXTtcbiAgICAgICAgaWYgKGVsbVRvTW92ZS4kdHlwZSQgIT09IG5ld1N0YXJ0Vm5vZGUuJHR5cGUkKSB7XG4gICAgICAgICAgY29uc3QgbmV3RWxtID0gY3JlYXRlRWxtKGN0eCwgbmV3U3RhcnRWbm9kZSwgZmxhZ3MsIHJlc3VsdHMpO1xuICAgICAgICAgIC8vIFRPIENIRUNLOiBzaG91bGQgd2Ugbm90IGF3YWl0IHRoZXNlIHByb21pc2VzP1xuICAgICAgICAgIG1heWJlVGhlbihuZXdFbG0sIChuZXdFbG0pID0+IHtcbiAgICAgICAgICAgIGluc2VydEJlZm9yZShzdGF0aWNDdHgsIHBhcmVudEVsbSwgbmV3RWxtLCBvbGRTdGFydFZub2RlPy4kZWxtJCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKGRpZmZWbm9kZShjdHgsIGVsbVRvTW92ZSwgbmV3U3RhcnRWbm9kZSwgZmxhZ3MpKTtcbiAgICAgICAgICBvbGRDaFtpZHhJbk9sZF0gPSB1bmRlZmluZWQgYXMgYW55O1xuICAgICAgICAgIGFzc2VydERlZmluZWQoZWxtVG9Nb3ZlLiRlbG0kLCAnZWxtVG9Nb3ZlICRlbG0kIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgICAgICAgIGluc2VydEJlZm9yZShzdGF0aWNDdHgsIHBhcmVudEVsbSwgZWxtVG9Nb3ZlLiRlbG0kLCBvbGRTdGFydFZub2RlLiRlbG0kKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgIH1cbiAgfVxuXG4gIGlmIChuZXdTdGFydElkeCA8PSBuZXdFbmRJZHgpIHtcbiAgICBjb25zdCBiZWZvcmUgPSBuZXdDaFtuZXdFbmRJZHggKyAxXSA9PSBudWxsID8gbnVsbCA6IG5ld0NoW25ld0VuZElkeCArIDFdLiRlbG0kO1xuICAgIHJlc3VsdHMucHVzaChhZGRDaGlsZHJlbihjdHgsIHBhcmVudEVsbSwgYmVmb3JlLCBuZXdDaCwgbmV3U3RhcnRJZHgsIG5ld0VuZElkeCwgZmxhZ3MpKTtcbiAgfVxuXG4gIGxldCB3YWl0ID0gcHJvbWlzZUFsbChyZXN1bHRzKSBhcyBhbnk7XG4gIGlmIChvbGRTdGFydElkeCA8PSBvbGRFbmRJZHgpIHtcbiAgICB3YWl0ID0gbWF5YmVUaGVuKHdhaXQsICgpID0+IHtcbiAgICAgIHJlbW92ZUNoaWxkcmVuKHN0YXRpY0N0eCwgb2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJZHgpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiB3YWl0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENoaWxkcmVuID0gKGVsbTogUXdpa0VsZW1lbnQsIGZpbHRlcjogKGVsOiBOb2RlIHwgVmlydHVhbEVsZW1lbnQpID0+IGJvb2xlYW4pID0+IHtcbiAgY29uc3QgZW5kID0gaXNWaXJ0dWFsRWxlbWVudChlbG0pID8gZWxtLmNsb3NlIDogbnVsbDtcbiAgY29uc3Qgbm9kZXM6IChOb2RlIHwgVmlydHVhbEVsZW1lbnQpW10gPSBbXTtcbiAgbGV0IG5vZGU6IE5vZGUgfCBudWxsIHwgVmlydHVhbEVsZW1lbnQgPSBlbG0uZmlyc3RDaGlsZDtcbiAgd2hpbGUgKChub2RlID0gcHJvY2Vzc1ZpcnR1YWxOb2Rlcyhub2RlKSkpIHtcbiAgICBpZiAoZmlsdGVyKG5vZGUpKSB7XG4gICAgICBub2Rlcy5wdXNoKG5vZGUpO1xuICAgIH1cbiAgICBub2RlID0gbm9kZS5uZXh0U2libGluZztcbiAgICBpZiAobm9kZSA9PT0gZW5kKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5vZGVzO1xufTtcblxuLy8gZXhwb3J0IGNvbnN0IGdldENoaWxkcmVuID0gKGVsbTogUXdpa0VsZW1lbnQsIG1vZGU6IENoaWxkcmVuTW9kZSk6IChOb2RlIHwgVmlydHVhbEVsZW1lbnQpW10gPT4ge1xuLy8gICAvLyBjb25zb2xlLndhcm4oJ0RPTSBSRUFEOiBnZXRDaGlsZHJlbigpJywgZWxtKTtcbi8vICAgc3dpdGNoIChtb2RlKSB7XG4vLyAgICAgY2FzZSAncm9vdCc6XG4vLyAgICAgICByZXR1cm4gZ2V0Q2goZWxtLCBpc0NoaWxkQ29tcG9uZW50KTtcbi8vICAgICBjYXNlICdoZWFkJzpcbi8vICAgICAgIHJldHVybiBnZXRDaChlbG0sIGlzSGVhZENoaWxkcmVuKTtcbi8vICAgICBjYXNlICdlbGVtZW50cyc6XG4vLyAgICAgICByZXR1cm4gZ2V0Q2goZWxtLCBpc05vZGVFbGVtZW50KTtcbi8vICAgfVxuLy8gfTtcblxuY29uc3QgZ2V0Q2hpbGRyZW5Wbm9kZXMgPSAoZWxtOiBRd2lrRWxlbWVudCwgZmlsdGVyOiAoZWw6IE5vZGUgfCBWaXJ0dWFsRWxlbWVudCkgPT4gYm9vbGVhbikgPT4ge1xuICByZXR1cm4gZ2V0Q2hpbGRyZW4oZWxtLCBmaWx0ZXIpLm1hcChnZXRWbm9kZUZyb21FbCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Vm5vZGVGcm9tRWwgPSAoZWw6IE5vZGUgfCBWaXJ0dWFsRWxlbWVudCkgPT4ge1xuICBpZiAoaXNFbGVtZW50KGVsKSkge1xuICAgIHJldHVybiB0cnlHZXRDb250ZXh0KGVsKT8uJHZkb20kID8/IGRvbVRvVm5vZGUoZWwpO1xuICB9XG4gIHJldHVybiBkb21Ub1Zub2RlKGVsKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkb21Ub1Zub2RlID0gKG5vZGU6IE5vZGUgfCBWaXJ0dWFsRWxlbWVudCk6IFByb2Nlc3NlZEpTWE5vZGUgPT4ge1xuICBpZiAoaXNRd2lrRWxlbWVudChub2RlKSkge1xuICAgIGNvbnN0IHQgPSBuZXcgUHJvY2Vzc2VkSlNYTm9kZUltcGwoXG4gICAgICBub2RlLmxvY2FsTmFtZSxcbiAgICAgIHt9LFxuICAgICAgbnVsbCxcbiAgICAgIENISUxEUkVOX1BMQUNFSE9MREVSLFxuICAgICAgMCxcbiAgICAgIGdldEtleShub2RlKVxuICAgICk7XG4gICAgdC4kZWxtJCA9IG5vZGU7XG4gICAgcmV0dXJuIHQ7XG4gIH0gZWxzZSBpZiAoaXNUZXh0KG5vZGUpKSB7XG4gICAgY29uc3QgdCA9IG5ldyBQcm9jZXNzZWRKU1hOb2RlSW1wbChcbiAgICAgIG5vZGUubm9kZU5hbWUsXG4gICAgICBFTVBUWV9PQkosXG4gICAgICBudWxsLFxuICAgICAgQ0hJTERSRU5fUExBQ0VIT0xERVIsXG4gICAgICAwLFxuICAgICAgbnVsbFxuICAgICk7XG4gICAgdC4kdGV4dCQgPSBub2RlLmRhdGE7XG4gICAgdC4kZWxtJCA9IG5vZGU7XG4gICAgcmV0dXJuIHQ7XG4gIH1cbiAgYXNzZXJ0RmFpbCgnSW52YWxpZCBub2RlIHR5cGUnKTtcbn07XG5cbmNvbnN0IGlzSGVhZENoaWxkcmVuID0gKG5vZGU6IE5vZGUgfCBWaXJ0dWFsRWxlbWVudCk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCB0eXBlID0gbm9kZS5ub2RlVHlwZTtcbiAgaWYgKHR5cGUgPT09IDEpIHtcbiAgICByZXR1cm4gKG5vZGUgYXMgRWxlbWVudCkuaGFzQXR0cmlidXRlKCdxOmhlYWQnKTtcbiAgfVxuICByZXR1cm4gdHlwZSA9PT0gMTExO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2xvdFRlbXBsYXRlID0gKG5vZGU6IE5vZGUgfCBWaXJ0dWFsRWxlbWVudCk6IG5vZGUgaXMgRWxlbWVudCA9PiB7XG4gIHJldHVybiBub2RlLm5vZGVOYW1lID09PSAnUTpURU1QTEFURSc7XG59O1xuXG5leHBvcnQgY29uc3QgaXNDaGlsZENvbXBvbmVudCA9IChub2RlOiBOb2RlIHwgVmlydHVhbEVsZW1lbnQpOiBib29sZWFuID0+IHtcbiAgY29uc3QgdHlwZSA9IG5vZGUubm9kZVR5cGU7XG4gIGlmICh0eXBlID09PSAzIHx8IHR5cGUgPT09IDExMSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh0eXBlICE9PSAxKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IG5vZGVOYW1lID0gbm9kZS5ub2RlTmFtZTtcbiAgaWYgKG5vZGVOYW1lID09PSAnUTpURU1QTEFURScpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKG5vZGVOYW1lID09PSAnSEVBRCcpIHtcbiAgICByZXR1cm4gKG5vZGUgYXMgRWxlbWVudCkuaGFzQXR0cmlidXRlKCdxOmhlYWQnKTtcbiAgfVxuICBpZiAobm9kZU5hbWUgPT09ICdTVFlMRScpIHtcbiAgICByZXR1cm4gIShub2RlIGFzIEVsZW1lbnQpLmhhc0F0dHJpYnV0ZShRU3R5bGUpO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuZXhwb3J0IGNvbnN0IHNwbGl0Q2hpbGRyZW4gPSAoaW5wdXQ6IFByb2Nlc3NlZEpTWE5vZGVbXSk6IFJlY29yZDxzdHJpbmcsIFByb2Nlc3NlZEpTWE5vZGU+ID0+IHtcbiAgY29uc3Qgb3V0cHV0OiBSZWNvcmQ8c3RyaW5nLCBQcm9jZXNzZWRKU1hOb2RlPiA9IHt9O1xuICBmb3IgKGNvbnN0IGl0ZW0gb2YgaW5wdXQpIHtcbiAgICBjb25zdCBrZXkgPSBnZXRTbG90TmFtZShpdGVtKTtcbiAgICBjb25zdCBub2RlID1cbiAgICAgIG91dHB1dFtrZXldID8/XG4gICAgICAob3V0cHV0W2tleV0gPSBuZXcgUHJvY2Vzc2VkSlNYTm9kZUltcGwoXG4gICAgICAgIFZJUlRVQUwsXG4gICAgICAgIHtcbiAgICAgICAgICBbUVNsb3RTXTogJycsXG4gICAgICAgIH0sXG4gICAgICAgIG51bGwsXG4gICAgICAgIFtdLFxuICAgICAgICAwLFxuICAgICAgICBrZXlcbiAgICAgICkpO1xuICAgIG5vZGUuJGNoaWxkcmVuJC5wdXNoKGl0ZW0pO1xuICB9XG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5leHBvcnQgY29uc3QgZGlmZlZub2RlID0gKFxuICByQ3R4OiBSZW5kZXJDb250ZXh0LFxuICBvbGRWbm9kZTogUHJvY2Vzc2VkSlNYTm9kZSxcbiAgbmV3Vm5vZGU6IFByb2Nlc3NlZEpTWE5vZGUsXG4gIGZsYWdzOiBudW1iZXJcbik6IFZhbHVlT3JQcm9taXNlPHZvaWQ+ID0+IHtcbiAgYXNzZXJ0RXF1YWwob2xkVm5vZGUuJHR5cGUkLCBuZXdWbm9kZS4kdHlwZSQsICdvbGQgYW5kIG5ldyB2bm9kZXMgdHlwZSBtdXN0IGJlIHRoZSBzYW1lJyk7XG4gIGFzc2VydEVxdWFsKG9sZFZub2RlLiRrZXkkLCBuZXdWbm9kZS4ka2V5JCwgJ29sZCBhbmQgbmV3IHZub2RlcyBrZXkgbXVzdCBiZSB0aGUgc2FtZScpO1xuICBhc3NlcnRFcXVhbChvbGRWbm9kZS4kaWQkLCBuZXdWbm9kZS4kaWQkLCAnb2xkIGFuZCBuZXcgdm5vZGVzIGtleSBtdXN0IGJlIHRoZSBzYW1lJyk7XG4gIGNvbnN0IGVsbSA9IG9sZFZub2RlLiRlbG0kO1xuICBjb25zdCB0YWcgPSBuZXdWbm9kZS4kdHlwZSQ7XG4gIGNvbnN0IHN0YXRpY0N0eCA9IHJDdHguJHN0YXRpYyQ7XG4gIGNvbnN0IGNvbnRhaW5lclN0YXRlID0gc3RhdGljQ3R4LiRjb250YWluZXJTdGF0ZSQ7XG4gIGNvbnN0IGN1cnJlbnRDb21wb25lbnQgPSByQ3R4LiRjbXBDdHgkO1xuICBhc3NlcnREZWZpbmVkKGVsbSwgJ3doaWxlIHBhdGNoaW5nIGVsZW1lbnQgbXVzdCBiZSBkZWZpbmVkJyk7XG4gIGFzc2VydERlZmluZWQoY3VycmVudENvbXBvbmVudCwgJ3doaWxlIHBhdGNoaW5nIGN1cnJlbnQgY29tcG9uZW50IG11c3QgYmUgZGVmaW5lZCcpO1xuXG4gIG5ld1Zub2RlLiRlbG0kID0gZWxtO1xuXG4gIC8vIFJlbmRlciB0ZXh0IG5vZGVzXG4gIGlmICh0YWcgPT09ICcjdGV4dCcpIHtcbiAgICBzdGF0aWNDdHguJHZpc2l0ZWQkLnB1c2goZWxtKTtcbiAgICBjb25zdCBzaWduYWwgPSBuZXdWbm9kZS4kc2lnbmFsJDtcbiAgICBpZiAoc2lnbmFsKSB7XG4gICAgICBuZXdWbm9kZS4kdGV4dCQgPSBqc3hUb1N0cmluZyhcbiAgICAgICAgdHJhY2tTaWduYWwoc2lnbmFsLCBbNCwgY3VycmVudENvbXBvbmVudC4kZWxlbWVudCQsIHNpZ25hbCwgZWxtIGFzIFRleHRdKVxuICAgICAgKTtcbiAgICB9XG4gICAgc2V0UHJvcGVydHkoc3RhdGljQ3R4LCBlbG0sICdkYXRhJywgbmV3Vm5vZGUuJHRleHQkKTtcbiAgICByZXR1cm47XG4gIH0gZWxzZSBpZiAodGFnID09PSAnI3NpZ25hbCcpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYXNzZXJ0UXdpa0VsZW1lbnQoZWxtKTtcblxuICBjb25zdCBwcm9wcyA9IG5ld1Zub2RlLiRwcm9wcyQ7XG4gIGNvbnN0IHZub2RlRmxhZ3MgPSBuZXdWbm9kZS4kZmxhZ3MkO1xuICBjb25zdCBlbEN0eCA9IGdldENvbnRleHQoZWxtLCBjb250YWluZXJTdGF0ZSk7XG5cbiAgaWYgKHRhZyAhPT0gVklSVFVBTCkge1xuICAgIC8vIFRyYWNrIFNWRyBzdGF0ZVxuICAgIGxldCBpc1N2ZyA9IChmbGFncyAmIElTX1NWRykgIT09IDA7XG4gICAgaWYgKCFpc1N2ZyAmJiB0YWcgPT09ICdzdmcnKSB7XG4gICAgICBmbGFncyB8PSBJU19TVkc7XG4gICAgICBpc1N2ZyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzICE9PSBFTVBUWV9PQkopIHtcbiAgICAgIC8vIGVsQ3R4LiR2ZG9tJCA9IG5ld1Zub2RlO1xuICAgICAgaWYgKCh2bm9kZUZsYWdzICYgc3RhdGljX2xpc3RlbmVycykgPT09IDApIHtcbiAgICAgICAgZWxDdHgubGkubGVuZ3RoID0gMDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZhbHVlcyA9IG9sZFZub2RlLiRwcm9wcyQ7XG4gICAgICBuZXdWbm9kZS4kcHJvcHMkID0gdmFsdWVzO1xuICAgICAgZm9yIChjb25zdCBwcm9wIGluIHByb3BzKSB7XG4gICAgICAgIGxldCBuZXdWYWx1ZSA9IHByb3BzW3Byb3BdO1xuICAgICAgICBpZiAocHJvcCA9PT0gJ3JlZicpIHtcbiAgICAgICAgICBhc3NlcnRFbGVtZW50KGVsbSk7XG4gICAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNldFJlZihuZXdWYWx1ZSwgZWxtKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNPblByb3AocHJvcCkpIHtcbiAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gc2V0RXZlbnQoZWxDdHgubGksIHByb3AsIG5ld1ZhbHVlLCBjb250YWluZXJTdGF0ZS4kY29udGFpbmVyRWwkKTtcbiAgICAgICAgICBhZGRRd2lrRXZlbnQoc3RhdGljQ3R4LCBlbG0sIG5vcm1hbGl6ZWQpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzU2lnbmFsKG5ld1ZhbHVlKSkge1xuICAgICAgICAgIG5ld1ZhbHVlID0gdHJhY2tTaWduYWwobmV3VmFsdWUsIFsxLCBjdXJyZW50Q29tcG9uZW50LiRlbGVtZW50JCwgbmV3VmFsdWUsIGVsbSwgcHJvcF0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9wID09PSAnY2xhc3MnKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBzZXJpYWxpemVDbGFzc1dpdGhIb3N0KG5ld1ZhbHVlLCBjdXJyZW50Q29tcG9uZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9wID09PSAnc3R5bGUnKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBzdHJpbmdpZnlTdHlsZShuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlc1twcm9wXSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICB2YWx1ZXNbcHJvcF0gPSBuZXdWYWx1ZTtcbiAgICAgICAgICBzbWFydFNldFByb3BlcnR5KHN0YXRpY0N0eCwgZWxtIGFzIEhUTUxFbGVtZW50LCBwcm9wLCBuZXdWYWx1ZSwgaXNTdmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2bm9kZUZsYWdzICYgc3RhdGljX3N1YnRyZWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNTdmcgJiYgdGFnID09PSAnZm9yZWlnbk9iamVjdCcpIHtcbiAgICAgIGZsYWdzICY9IH5JU19TVkc7XG4gICAgfVxuXG4gICAgY29uc3Qgc2V0c0lubmVySFRNTCA9IHByb3BzW2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MXSAhPT0gdW5kZWZpbmVkO1xuICAgIGlmIChzZXRzSW5uZXJIVE1MKSB7XG4gICAgICBpZiAocURldiAmJiBuZXdWbm9kZS4kY2hpbGRyZW4kLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbG9nV2FybignTm9kZSBjYW4gbm90IGhhdmUgY2hpbGRyZW4gd2hlbiBpbm5lckhUTUwgaXMgc2V0Jyk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0YWcgPT09ICd0ZXh0YXJlYScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuIHNtYXJ0VXBkYXRlQ2hpbGRyZW4ockN0eCwgb2xkVm5vZGUsIG5ld1Zub2RlLCBmbGFncyk7XG4gIH0gZWxzZSBpZiAoT25SZW5kZXJQcm9wIGluIHByb3BzKSB7XG4gICAgY29uc3QgY21wUHJvcHMgPSBwcm9wcy5wcm9wcztcbiAgICBzZXRDb21wb25lbnRQcm9wcyhjb250YWluZXJTdGF0ZSwgZWxDdHgsIGNtcFByb3BzKTtcbiAgICBsZXQgbmVlZHNSZW5kZXIgPSAhIShlbEN0eC4kZmxhZ3MkICYgSE9TVF9GTEFHX0RJUlRZKTtcbiAgICAvLyBUT0RPOiByZXZpZXcgdGhpcyBjb3JuZXIgY2FzZVxuICAgIGlmICghbmVlZHNSZW5kZXIgJiYgIWVsQ3R4LiRjb21wb25lbnRRcmwkICYmICFlbEN0eC4kZWxlbWVudCQuaGFzQXR0cmlidXRlKEVMRU1FTlRfSUQpKSB7XG4gICAgICBzZXRRSWQockN0eCwgZWxDdHgpO1xuICAgICAgZWxDdHguJGNvbXBvbmVudFFybCQgPSBjbXBQcm9wc1tPblJlbmRlclByb3BdO1xuICAgICAgYXNzZXJ0UXJsKGVsQ3R4LiRjb21wb25lbnRRcmwkIGFzIGFueSk7XG4gICAgICBuZWVkc1JlbmRlciA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gUmVuZGVyaW5nIG9mIGNoaWxkcmVuIG9mIGNvbXBvbmVudCBpcyBtb3JlIGNvbXBsaWNhdGVkLFxuICAgIC8vIHNpbmNlIHRoZSBjaGlsZHJlbiBtdXN0IGJlIHByb2plY3RlZCBpbnRvIHRoZSByZW5kZXJlZCBzbG90c1xuICAgIC8vIEluIGFkZGl0aW9uLCBuZXN0ZWQgY2hpbGRyZW4gbWlnaHQgbmVlZCByZXJlbmRlcmluZywgaWYgdGhhdCdzIHRoZSBjYXNlXG4gICAgLy8gd2UgbmVlZCB0byByZW5kZXIgdGhlIG5lc3RlZCBjb21wb25lbnQsIGFuZCB3YWl0IGJlZm9yZSBwcm9qZWN0aW5nIHRoZSBjb250ZW50XG4gICAgLy8gc2luY2Ugb3RoZXJ3aXNlIHdlIGRvbid0IGtub3cgd2hlcmUgdGhlIHNsb3RzXG4gICAgaWYgKG5lZWRzUmVuZGVyKSB7XG4gICAgICByZXR1cm4gbWF5YmVUaGVuKHJlbmRlckNvbXBvbmVudChyQ3R4LCBlbEN0eCwgZmxhZ3MpLCAoKSA9PlxuICAgICAgICByZW5kZXJDb250ZW50UHJvamVjdGlvbihyQ3R4LCBlbEN0eCwgbmV3Vm5vZGUsIGZsYWdzKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlbmRlckNvbnRlbnRQcm9qZWN0aW9uKHJDdHgsIGVsQ3R4LCBuZXdWbm9kZSwgZmxhZ3MpO1xuICB9IGVsc2UgaWYgKFFTbG90UyBpbiBwcm9wcykge1xuICAgIGFzc2VydERlZmluZWQoY3VycmVudENvbXBvbmVudC4kc2xvdHMkLCAnY3VycmVudCBjb21wb25lbnQgc2xvdHMgbXVzdCBiZSBhIGRlZmluZWQgYXJyYXknKTtcbiAgICBjdXJyZW50Q29tcG9uZW50LiRzbG90cyQucHVzaChuZXdWbm9kZSk7XG4gICAgcmV0dXJuO1xuICB9IGVsc2UgaWYgKGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGluIHByb3BzKSB7XG4gICAgc2V0UHJvcGVydHkoc3RhdGljQ3R4LCBlbG0sICdpbm5lckhUTUwnLCBwcm9wc1tkYW5nZXJvdXNseVNldElubmVySFRNTF0pO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAodm5vZGVGbGFncyAmIHN0YXRpY19zdWJ0cmVlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHJldHVybiBzbWFydFVwZGF0ZUNoaWxkcmVuKHJDdHgsIG9sZFZub2RlLCBuZXdWbm9kZSwgZmxhZ3MpO1xufTtcblxuY29uc3QgcmVuZGVyQ29udGVudFByb2plY3Rpb24gPSAoXG4gIHJDdHg6IFJlbmRlckNvbnRleHQsXG4gIGhvc3RDdHg6IFFDb250ZXh0LFxuICB2bm9kZTogUHJvY2Vzc2VkSlNYTm9kZSxcbiAgZmxhZ3M6IG51bWJlclxuKTogVmFsdWVPclByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAodm5vZGUuJGZsYWdzJCAmIHN0YXRpY19zdWJ0cmVlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IG5ld0NoaWxkcmVuID0gdm5vZGUuJGNoaWxkcmVuJDtcbiAgY29uc3Qgc3RhdGljQ3R4ID0gckN0eC4kc3RhdGljJDtcbiAgY29uc3Qgc3BsaXR0ZWROZXdDaGlsZHJlbiA9IHNwbGl0Q2hpbGRyZW4obmV3Q2hpbGRyZW4pO1xuICBjb25zdCBzbG90TWFwcyA9IGdldFNsb3RNYXAoaG9zdEN0eCk7XG5cbiAgLy8gUmVtb3ZlIGNvbnRlbnQgZnJvbSBlbXB0eSBzbG90c1xuICBmb3IgKGNvbnN0IGtleSBpbiBzbG90TWFwcy5zbG90cykge1xuICAgIGlmICghc3BsaXR0ZWROZXdDaGlsZHJlbltrZXldKSB7XG4gICAgICBjb25zdCBzbG90RWwgPSBzbG90TWFwcy5zbG90c1trZXldO1xuICAgICAgY29uc3Qgb2xkQ2ggPSBnZXRDaGlsZHJlblZub2RlcyhzbG90RWwsIGlzQ2hpbGRDb21wb25lbnQpO1xuICAgICAgaWYgKG9sZENoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gZ2V0VmRvbShzbG90RWwpLiRjaGlsZHJlbiQgPSBbXTtcbiAgICAgICAgY29uc3Qgc2xvdEN0eCA9IHRyeUdldENvbnRleHQoc2xvdEVsKTtcbiAgICAgICAgaWYgKHNsb3RDdHggJiYgc2xvdEN0eC4kdmRvbSQpIHtcbiAgICAgICAgICBzbG90Q3R4LiR2ZG9tJC4kY2hpbGRyZW4kID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcmVtb3ZlQ2hpbGRyZW4oc3RhdGljQ3R4LCBvbGRDaCwgMCwgb2xkQ2gubGVuZ3RoIC0gMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVtb3ZlIGVtcHR5IHRlbXBsYXRlc1xuICBmb3IgKGNvbnN0IGtleSBpbiBzbG90TWFwcy50ZW1wbGF0ZXMpIHtcbiAgICBjb25zdCB0ZW1wbGF0ZUVsID0gc2xvdE1hcHMudGVtcGxhdGVzW2tleV07XG4gICAgaWYgKHRlbXBsYXRlRWwgJiYgIXNwbGl0dGVkTmV3Q2hpbGRyZW5ba2V5XSkge1xuICAgICAgc2xvdE1hcHMudGVtcGxhdGVzW2tleV0gPSB1bmRlZmluZWQ7XG4gICAgICByZW1vdmVOb2RlKHN0YXRpY0N0eCwgdGVtcGxhdGVFbCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVuZGVyIGludG8gc2xvdHNcbiAgcmV0dXJuIHByb21pc2VBbGwoXG4gICAgT2JqZWN0LmtleXMoc3BsaXR0ZWROZXdDaGlsZHJlbikubWFwKChzbG90TmFtZSkgPT4ge1xuICAgICAgY29uc3QgbmV3VmRvbSA9IHNwbGl0dGVkTmV3Q2hpbGRyZW5bc2xvdE5hbWVdO1xuICAgICAgY29uc3Qgc2xvdEN0eCA9IGdldFNsb3RDdHgoXG4gICAgICAgIHN0YXRpY0N0eCxcbiAgICAgICAgc2xvdE1hcHMsXG4gICAgICAgIGhvc3RDdHgsXG4gICAgICAgIHNsb3ROYW1lLFxuICAgICAgICByQ3R4LiRzdGF0aWMkLiRjb250YWluZXJTdGF0ZSRcbiAgICAgICk7XG4gICAgICBjb25zdCBvbGRWZG9tID0gZ2V0VmRvbShzbG90Q3R4KTtcbiAgICAgIGNvbnN0IHNsb3RSY3R4ID0gcHVzaFJlbmRlckNvbnRleHQockN0eCk7XG4gICAgICBjb25zdCBzbG90RWwgPSBzbG90Q3R4LiRlbGVtZW50JCBhcyBWaXJ0dWFsRWxlbWVudDtcbiAgICAgIHNsb3RSY3R4LiRzbG90Q3R4JCA9IHNsb3RDdHg7XG4gICAgICBzbG90Q3R4LiR2ZG9tJCA9IG5ld1Zkb207XG4gICAgICBuZXdWZG9tLiRlbG0kID0gc2xvdEVsO1xuICAgICAgbGV0IG5ld0ZsYWdzID0gZmxhZ3MgJiB+SVNfU1ZHO1xuICAgICAgaWYgKHNsb3RFbC5pc1N2Zykge1xuICAgICAgICBuZXdGbGFncyB8PSBJU19TVkc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGluZGV4ID0gc3RhdGljQ3R4LiRhZGRTbG90cyQuZmluZEluZGV4KChzbG90KSA9PiBzbG90WzBdID09PSBzbG90RWwpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgc3RhdGljQ3R4LiRhZGRTbG90cyQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzbWFydFVwZGF0ZUNoaWxkcmVuKHNsb3RSY3R4LCBvbGRWZG9tLCBuZXdWZG9tLCBuZXdGbGFncyk7XG4gICAgfSlcbiAgKSBhcyBhbnk7XG59O1xuXG5jb25zdCBhZGRDaGlsZHJlbiA9IChcbiAgY3R4OiBSZW5kZXJDb250ZXh0LFxuICBwYXJlbnRFbG06IFF3aWtFbGVtZW50LFxuICBiZWZvcmU6IE5vZGUgfCBWaXJ0dWFsRWxlbWVudCB8IG51bGwsXG4gIHZub2RlczogUHJvY2Vzc2VkSlNYTm9kZVtdLFxuICBzdGFydElkeDogbnVtYmVyLFxuICBlbmRJZHg6IG51bWJlcixcbiAgZmxhZ3M6IG51bWJlclxuKTogVmFsdWVPclByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBwcm9taXNlczogUHJvbWlzZTxhbnk+W10gPSBbXTtcbiAgZm9yICg7IHN0YXJ0SWR4IDw9IGVuZElkeDsgKytzdGFydElkeCkge1xuICAgIGNvbnN0IGNoID0gdm5vZGVzW3N0YXJ0SWR4XTtcbiAgICBhc3NlcnREZWZpbmVkKGNoLCAncmVuZGVyOiBub2RlIG11c3QgYmUgZGVmaW5lZCBhdCBpbmRleCcsIHN0YXJ0SWR4LCB2bm9kZXMpO1xuICAgIGNvbnN0IGVsbSA9IGNyZWF0ZUVsbShjdHgsIGNoLCBmbGFncywgcHJvbWlzZXMpO1xuICAgIGluc2VydEJlZm9yZShjdHguJHN0YXRpYyQsIHBhcmVudEVsbSwgZWxtLCBiZWZvcmUpO1xuICB9XG4gIHJldHVybiBwcm9taXNlQWxsTGF6eShwcm9taXNlcyk7XG59O1xuXG5jb25zdCByZW1vdmVDaGlsZHJlbiA9IChcbiAgc3RhdGljQ3R4OiBSZW5kZXJTdGF0aWNDb250ZXh0LFxuICBub2RlczogUHJvY2Vzc2VkSlNYTm9kZVtdLFxuICBzdGFydElkeDogbnVtYmVyLFxuICBlbmRJZHg6IG51bWJlclxuKTogdm9pZCA9PiB7XG4gIGZvciAoOyBzdGFydElkeCA8PSBlbmRJZHg7ICsrc3RhcnRJZHgpIHtcbiAgICBjb25zdCBjaCA9IG5vZGVzW3N0YXJ0SWR4XTtcbiAgICBpZiAoY2gpIHtcbiAgICAgIGFzc2VydERlZmluZWQoY2guJGVsbSQsICd2bm9kZSBlbG0gbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgICByZW1vdmVOb2RlKHN0YXRpY0N0eCwgY2guJGVsbSQpO1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgZ2V0U2xvdEN0eCA9IChcbiAgc3RhdGljQ3R4OiBSZW5kZXJTdGF0aWNDb250ZXh0LFxuICBzbG90TWFwczogU2xvdE1hcHMsXG4gIGhvc3RDdHg6IFFDb250ZXh0LFxuICBzbG90TmFtZTogc3RyaW5nLFxuICBjb250YWluZXJTdGF0ZTogQ29udGFpbmVyU3RhdGVcbik6IFFDb250ZXh0ID0+IHtcbiAgLy8gSWYgYSBzbG90IGlzIGtub3duLCByZW5kZXIgY2hpbGRyZW4gaW5zaWRlXG4gIGNvbnN0IHNsb3RFbCA9IHNsb3RNYXBzLnNsb3RzW3Nsb3ROYW1lXTtcbiAgaWYgKHNsb3RFbCkge1xuICAgIHJldHVybiBnZXRDb250ZXh0KHNsb3RFbCwgY29udGFpbmVyU3RhdGUpO1xuICB9XG4gIC8vIE90aGVyd2lzZSB3ZSBwYXJrIHRoZSBjaGlsZHJlbiBpbiBhIHRlbXBsYXRlXG4gIGNvbnN0IHRlbXBsYXRlRWwgPSBzbG90TWFwcy50ZW1wbGF0ZXNbc2xvdE5hbWVdO1xuICBpZiAodGVtcGxhdGVFbCkge1xuICAgIHJldHVybiBnZXRDb250ZXh0KHRlbXBsYXRlRWwsIGNvbnRhaW5lclN0YXRlKTtcbiAgfVxuICBjb25zdCB0ZW1wbGF0ZSA9IGNyZWF0ZVRlbXBsYXRlKHN0YXRpY0N0eC4kZG9jJCwgc2xvdE5hbWUpO1xuICBjb25zdCBlbEN0eCA9IGNyZWF0ZUNvbnRleHQodGVtcGxhdGUpO1xuICBlbEN0eC4kcGFyZW50Q3R4JCA9IGhvc3RDdHg7XG4gIHByZXBlbmQoc3RhdGljQ3R4LCBob3N0Q3R4LiRlbGVtZW50JCwgdGVtcGxhdGUpO1xuICBzbG90TWFwcy50ZW1wbGF0ZXNbc2xvdE5hbWVdID0gdGVtcGxhdGU7XG4gIHJldHVybiBlbEN0eDtcbn07XG5cbmNvbnN0IGdldFNsb3ROYW1lID0gKG5vZGU6IFByb2Nlc3NlZEpTWE5vZGUpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gbm9kZS4kcHJvcHMkW1FTbG90XSA/PyAnJztcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVFbG0gPSAoXG4gIHJDdHg6IFJlbmRlckNvbnRleHQsXG4gIHZub2RlOiBQcm9jZXNzZWRKU1hOb2RlLFxuICBmbGFnczogbnVtYmVyLFxuICBwcm9taXNlczogUHJvbWlzZTxhbnk+W11cbik6IE5vZGUgfCBWaXJ0dWFsRWxlbWVudCA9PiB7XG4gIGNvbnN0IHRhZyA9IHZub2RlLiR0eXBlJDtcbiAgY29uc3QgZG9jID0gckN0eC4kc3RhdGljJC4kZG9jJDtcbiAgY29uc3QgY3VycmVudENvbXBvbmVudCA9IHJDdHguJGNtcEN0eCQ7XG4gIGlmICh0YWcgPT09ICcjdGV4dCcpIHtcbiAgICByZXR1cm4gKHZub2RlLiRlbG0kID0gZG9jLmNyZWF0ZVRleHROb2RlKHZub2RlLiR0ZXh0JCkpO1xuICB9XG5cbiAgaWYgKHRhZyA9PT0gJyNzaWduYWwnKSB7XG4gICAgY29uc3Qgc2lnbmFsID0gdm5vZGUuJHNpZ25hbCQhO1xuICAgIGFzc2VydERlZmluZWQoc2lnbmFsLCAnZXhwZWN0aW5nIHNpZ25hbCBoZXJlJyk7XG4gICAgYXNzZXJ0RGVmaW5lZChjdXJyZW50Q29tcG9uZW50LCAnc2lnbmFscyBjYW4gbm90IGJlIHVzZWQgb3V0c2lkZSBjb21wb25lbnRzJyk7XG4gICAgY29uc3Qgc2lnbmFsVmFsdWUgPSBzaWduYWwudmFsdWU7XG4gICAgaWYgKGlzSlNYTm9kZShzaWduYWxWYWx1ZSkpIHtcbiAgICAgIC8vIGNvbnZlcnQgc2lnbmFsIHZhbHVlIHRvIFByb2Nlc3NlZEpTWE5vZGVcbiAgICAgIGNvbnN0IHByb2Nlc3NlZFNpZ25hbCA9IHByb2Nlc3NEYXRhKHNpZ25hbFZhbHVlKTtcbiAgICAgIGlmIChpc1NpZ25hbChwcm9jZXNzZWRTaWduYWwpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTk9UIElNUExFTUVOVEVEOiBQcm9taXNlJyk7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocHJvY2Vzc2VkU2lnbmFsKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05PVCBJTVBMRU1FTlRFRDogQXJyYXknKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNyYXRlIGVsZW1lbnRzXG4gICAgICAgIGNvbnN0IGVsbSA9IGNyZWF0ZUVsbShyQ3R4LCBwcm9jZXNzZWRTaWduYWwgYXMgUHJvY2Vzc2VkSlNYTm9kZSwgZmxhZ3MsIHByb21pc2VzKTtcbiAgICAgICAgLy8gY3JlYXRlIHN1YnNjcmlwdGlvblxuICAgICAgICB0cmFja1NpZ25hbChcbiAgICAgICAgICBzaWduYWwsXG4gICAgICAgICAgZmxhZ3MgJiBJU19JTU1VVEFCTEVcbiAgICAgICAgICAgID8gKFszLCBlbG0sIHNpZ25hbCwgZWxtXSBhcyBTdWJzY3JpYmVyQylcbiAgICAgICAgICAgIDogKFs0LCBjdXJyZW50Q29tcG9uZW50LiRlbGVtZW50JCwgc2lnbmFsLCBlbG1dIGFzIFN1YnNjcmliZXJDKVxuICAgICAgICApO1xuICAgICAgICAvLyB1cGRhdGUgdGhlIHZOb2RlIGZvciBmdXR1cmUgZGlmZi5cbiAgICAgICAgcmV0dXJuICh2bm9kZS4kZWxtJCA9IGVsbSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNyZWF0ZSBlbGVtZW50XG4gICAgICBjb25zdCBlbG0gPSBkb2MuY3JlYXRlVGV4dE5vZGUodm5vZGUuJHRleHQkKTtcbiAgICAgIGVsbS5kYXRhID0gdm5vZGUuJHRleHQkID0ganN4VG9TdHJpbmcoc2lnbmFsVmFsdWUpO1xuICAgICAgLy8gY3JlYXRlIHN1YnNjcmlwdGlvblxuICAgICAgdHJhY2tTaWduYWwoXG4gICAgICAgIHNpZ25hbCxcbiAgICAgICAgZmxhZ3MgJiBJU19JTU1VVEFCTEVcbiAgICAgICAgICA/IChbMywgZWxtLCBzaWduYWwsIGVsbV0gYXMgU3Vic2NyaWJlckMpXG4gICAgICAgICAgOiAoWzQsIGN1cnJlbnRDb21wb25lbnQuJGVsZW1lbnQkLCBzaWduYWwsIGVsbV0gYXMgU3Vic2NyaWJlckMpXG4gICAgICApO1xuICAgICAgLy8gdXBkYXRlIHRoZSB2Tm9kZSBmb3IgZnV0dXJlIGRpZmYuXG4gICAgICByZXR1cm4gKHZub2RlLiRlbG0kID0gZWxtKTtcbiAgICB9XG4gIH1cblxuICBsZXQgZWxtOiBRd2lrRWxlbWVudDtcbiAgbGV0IGlzU3ZnID0gISEoZmxhZ3MgJiBJU19TVkcpO1xuICBpZiAoIWlzU3ZnICYmIHRhZyA9PT0gJ3N2ZycpIHtcbiAgICBmbGFncyB8PSBJU19TVkc7XG4gICAgaXNTdmcgPSB0cnVlO1xuICB9XG4gIGNvbnN0IGlzVmlydHVhbCA9IHRhZyA9PT0gVklSVFVBTDtcbiAgY29uc3QgcHJvcHMgPSB2bm9kZS4kcHJvcHMkO1xuICBjb25zdCBzdGF0aWNDdHggPSByQ3R4LiRzdGF0aWMkO1xuICBjb25zdCBjb250YWluZXJTdGF0ZSA9IHN0YXRpY0N0eC4kY29udGFpbmVyU3RhdGUkO1xuICBpZiAoaXNWaXJ0dWFsKSB7XG4gICAgZWxtID0gbmV3VmlydHVhbEVsZW1lbnQoZG9jLCBpc1N2Zyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnaGVhZCcpIHtcbiAgICBlbG0gPSBkb2MuaGVhZDtcbiAgICBmbGFncyB8PSBJU19IRUFEO1xuICB9IGVsc2Uge1xuICAgIGVsbSA9IGNyZWF0ZUVsZW1lbnQoZG9jLCB0YWcsIGlzU3ZnKTtcbiAgICBmbGFncyAmPSB+SVNfSEVBRDtcbiAgfVxuICBpZiAodm5vZGUuJGZsYWdzJCAmIHN0YXRpY19zdWJ0cmVlKSB7XG4gICAgZmxhZ3MgfD0gSVNfSU1NVVRBQkxFO1xuICB9XG5cbiAgdm5vZGUuJGVsbSQgPSBlbG07XG4gIGNvbnN0IGVsQ3R4ID0gY3JlYXRlQ29udGV4dChlbG0pO1xuICBpZiAockN0eC4kc2xvdEN0eCQpIHtcbiAgICBlbEN0eC4kcGFyZW50Q3R4JCA9IHJDdHguJHNsb3RDdHgkO1xuICAgIGVsQ3R4LiRyZWFsUGFyZW50Q3R4JCA9IHJDdHguJGNtcEN0eCQhO1xuICB9IGVsc2Uge1xuICAgIGVsQ3R4LiRwYXJlbnRDdHgkID0gckN0eC4kY21wQ3R4JDtcbiAgfVxuICBpZiAoIWlzVmlydHVhbCkge1xuICAgIGlmIChxRGV2ICYmIHFJbnNwZWN0b3IpIHtcbiAgICAgIGNvbnN0IGRldiA9IHZub2RlLiRkZXYkO1xuICAgICAgaWYgKGRldikge1xuICAgICAgICBkaXJlY3RTZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgZWxtLFxuICAgICAgICAgICdkYXRhLXF3aWstaW5zcGVjdG9yJyxcbiAgICAgICAgICBgJHtkZXYuZmlsZU5hbWV9OiR7ZGV2LmxpbmVOdW1iZXJ9OiR7ZGV2LmNvbHVtbk51bWJlcn1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2bm9kZS4kaW1tdXRhYmxlUHJvcHMkKSB7XG4gICAgICBjb25zdCBpbW1Qcm9wcyA9XG4gICAgICAgIHByb3BzICE9PSBFTVBUWV9PQkpcbiAgICAgICAgICA/IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXModm5vZGUuJGltbXV0YWJsZVByb3BzJCkubWFwKChbaywgdl0pID0+IFtcbiAgICAgICAgICAgICAgICBrLFxuICAgICAgICAgICAgICAgIHYgPT09IF9JTU1VVEFCTEUgPyBwcm9wc1trXSA6IHYsXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiB2bm9kZS4kaW1tdXRhYmxlUHJvcHMkO1xuICAgICAgc2V0UHJvcGVydGllcyhzdGF0aWNDdHgsIGVsQ3R4LCBjdXJyZW50Q29tcG9uZW50LCBpbW1Qcm9wcywgaXNTdmcsIHRydWUpO1xuICAgIH1cbiAgICBpZiAocHJvcHMgIT09IEVNUFRZX09CSikge1xuICAgICAgZWxDdHguJHZkb20kID0gdm5vZGU7XG4gICAgICBjb25zdCBwID0gdm5vZGUuJGltbXV0YWJsZVByb3BzJFxuICAgICAgICA/IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhwcm9wcykuZmlsdGVyKChba10pID0+ICEoayBpbiB2bm9kZS4kaW1tdXRhYmxlUHJvcHMkISkpKVxuICAgICAgICA6IHByb3BzO1xuICAgICAgdm5vZGUuJHByb3BzJCA9IHNldFByb3BlcnRpZXMoc3RhdGljQ3R4LCBlbEN0eCwgY3VycmVudENvbXBvbmVudCwgcCwgaXNTdmcsIGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGlzU3ZnICYmIHRhZyA9PT0gJ2ZvcmVpZ25PYmplY3QnKSB7XG4gICAgICBpc1N2ZyA9IGZhbHNlO1xuICAgICAgZmxhZ3MgJj0gfklTX1NWRztcbiAgICB9XG4gICAgaWYgKGN1cnJlbnRDb21wb25lbnQpIHtcbiAgICAgIGNvbnN0IHNjb3BlZElkcyA9IGN1cnJlbnRDb21wb25lbnQuJHNjb3BlSWRzJDtcbiAgICAgIGlmIChzY29wZWRJZHMpIHtcbiAgICAgICAgc2NvcGVkSWRzLmZvckVhY2goKHN0eWxlSWQpID0+IHtcbiAgICAgICAgICAoZWxtIGFzIEVsZW1lbnQpLmNsYXNzTGlzdC5hZGQoc3R5bGVJZCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnRDb21wb25lbnQuJGZsYWdzJCAmIEhPU1RfRkxBR19ORUVEX0FUVEFDSF9MSVNURU5FUikge1xuICAgICAgICBlbEN0eC5saS5wdXNoKC4uLmN1cnJlbnRDb21wb25lbnQubGkpO1xuICAgICAgICBjdXJyZW50Q29tcG9uZW50LiRmbGFncyQgJj0gfkhPU1RfRkxBR19ORUVEX0FUVEFDSF9MSVNURU5FUjtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBlbEN0eC5saSkge1xuICAgICAgYWRkUXdpa0V2ZW50KHN0YXRpY0N0eCwgZWxtLCBsaXN0ZW5lclswXSk7XG4gICAgfVxuICAgIGNvbnN0IHNldHNJbm5lckhUTUwgPSBwcm9wc1tkYW5nZXJvdXNseVNldElubmVySFRNTF0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAoc2V0c0lubmVySFRNTCkge1xuICAgICAgaWYgKHFEZXYgJiYgdm5vZGUuJGNoaWxkcmVuJC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxvZ1dhcm4oJ05vZGUgY2FuIG5vdCBoYXZlIGNoaWxkcmVuIHdoZW4gaW5uZXJIVE1MIGlzIHNldCcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVsbTtcbiAgICB9XG4gICAgaWYgKGlzU3ZnICYmIHRhZyA9PT0gJ2ZvcmVpZ25PYmplY3QnKSB7XG4gICAgICBpc1N2ZyA9IGZhbHNlO1xuICAgICAgZmxhZ3MgJj0gfklTX1NWRztcbiAgICB9XG4gIH0gZWxzZSBpZiAoT25SZW5kZXJQcm9wIGluIHByb3BzKSB7XG4gICAgY29uc3QgcmVuZGVyUVJMID0gcHJvcHNbT25SZW5kZXJQcm9wXTtcbiAgICBhc3NlcnRRcmw8T25SZW5kZXJGbjxhbnk+PihyZW5kZXJRUkwpO1xuICAgIGNvbnN0IHRhcmdldCA9IGNyZWF0ZVByb3BzU3RhdGUoKTtcbiAgICBjb25zdCBtYW5hZ2VyID0gY29udGFpbmVyU3RhdGUuJHN1YnNNYW5hZ2VyJC4kY3JlYXRlTWFuYWdlciQoKTtcbiAgICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIG5ldyBSZWFkV3JpdGVQcm94eUhhbmRsZXIoY29udGFpbmVyU3RhdGUsIG1hbmFnZXIpKTtcbiAgICBjb25zdCBleHBlY3RQcm9wcyA9IHByb3BzLnByb3BzO1xuICAgIGNvbnRhaW5lclN0YXRlLiRwcm94eU1hcCQuc2V0KHRhcmdldCwgcHJveHkpO1xuICAgIGVsQ3R4LiRwcm9wcyQgPSBwcm94eTtcbiAgICBpZiAoZXhwZWN0UHJvcHMgIT09IEVNUFRZX09CSikge1xuICAgICAgY29uc3QgaW1tdXRhYmxlTWV0YSA9ICgodGFyZ2V0IGFzIGFueSlbX0lNTVVUQUJMRV0gPVxuICAgICAgICAoZXhwZWN0UHJvcHMgYXMgYW55KVtfSU1NVVRBQkxFXSA/PyBFTVBUWV9PQkopO1xuXG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gZXhwZWN0UHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3AgIT09ICdjaGlsZHJlbicgJiYgcHJvcCAhPT0gUVNsb3QpIHtcbiAgICAgICAgICBjb25zdCBpbW11dGFibGVWYWx1ZSA9IGltbXV0YWJsZU1ldGFbcHJvcF07XG4gICAgICAgICAgaWYgKGlzU2lnbmFsKGltbXV0YWJsZVZhbHVlKSkge1xuICAgICAgICAgICAgdGFyZ2V0W19JTU1VVEFCTEVfUFJFRklYICsgcHJvcF0gPSBpbW11dGFibGVWYWx1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0W3Byb3BdID0gZXhwZWN0UHJvcHNbcHJvcF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHNldFFJZChyQ3R4LCBlbEN0eCk7XG5cbiAgICAvLyBSdW4gbW91bnQgaG9va1xuICAgIGVsQ3R4LiRjb21wb25lbnRRcmwkID0gcmVuZGVyUVJMO1xuXG4gICAgY29uc3Qgd2FpdCA9IG1heWJlVGhlbihyZW5kZXJDb21wb25lbnQockN0eCwgZWxDdHgsIGZsYWdzKSwgKCkgPT4ge1xuICAgICAgbGV0IGNoaWxkcmVuID0gdm5vZGUuJGNoaWxkcmVuJDtcbiAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiBjaGlsZHJlblswXS4kdHlwZSQgPT09IFNLSVBfUkVOREVSX1RZUEUpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlblswXS4kY2hpbGRyZW4kO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2xvdE1hcCA9IGdldFNsb3RNYXAoZWxDdHgpO1xuICAgICAgY29uc3QgcDogUHJvbWlzZTx2b2lkPltdID0gW107XG4gICAgICBjb25zdCBzcGxpdHRlZE5ld0NoaWxkcmVuID0gc3BsaXRDaGlsZHJlbihjaGlsZHJlbik7XG4gICAgICBmb3IgKGNvbnN0IHNsb3ROYW1lIGluIHNwbGl0dGVkTmV3Q2hpbGRyZW4pIHtcbiAgICAgICAgY29uc3QgbmV3Vm5vZGUgPSBzcGxpdHRlZE5ld0NoaWxkcmVuW3Nsb3ROYW1lXTtcbiAgICAgICAgY29uc3Qgc2xvdEN0eCA9IGdldFNsb3RDdHgoc3RhdGljQ3R4LCBzbG90TWFwLCBlbEN0eCwgc2xvdE5hbWUsIHN0YXRpY0N0eC4kY29udGFpbmVyU3RhdGUkKTtcbiAgICAgICAgY29uc3Qgc2xvdFJjdHggPSBwdXNoUmVuZGVyQ29udGV4dChyQ3R4KTtcbiAgICAgICAgY29uc3Qgc2xvdEVsID0gc2xvdEN0eC4kZWxlbWVudCQgYXMgVmlydHVhbEVsZW1lbnQ7XG4gICAgICAgIHNsb3RSY3R4LiRzbG90Q3R4JCA9IHNsb3RDdHg7XG4gICAgICAgIHNsb3RDdHguJHZkb20kID0gbmV3Vm5vZGU7XG4gICAgICAgIG5ld1Zub2RlLiRlbG0kID0gc2xvdEVsO1xuICAgICAgICBsZXQgbmV3RmxhZ3MgPSBmbGFncyAmIH5JU19TVkc7XG4gICAgICAgIGlmIChzbG90RWwuaXNTdmcpIHtcbiAgICAgICAgICBuZXdGbGFncyB8PSBJU19TVkc7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5ld1Zub2RlLiRjaGlsZHJlbiQpIHtcbiAgICAgICAgICBjb25zdCBub2RlRWxtID0gY3JlYXRlRWxtKHNsb3RSY3R4LCBub2RlLCBuZXdGbGFncywgcCk7XG4gICAgICAgICAgYXNzZXJ0RGVmaW5lZChub2RlLiRlbG0kLCAndm5vZGUgZWxtIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgICAgICAgIGFzc2VydEVxdWFsKG5vZGVFbG0sIG5vZGUuJGVsbSQsICd2bm9kZSBlbG0gbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgICAgICAgYXBwZW5kQ2hpbGQoc3RhdGljQ3R4LCBzbG90RWwsIG5vZGVFbG0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvbWlzZUFsbExhenkocCk7XG4gICAgfSk7XG4gICAgaWYgKGlzUHJvbWlzZSh3YWl0KSkge1xuICAgICAgcHJvbWlzZXMucHVzaCh3YWl0KTtcbiAgICB9XG4gICAgcmV0dXJuIGVsbTtcbiAgfSBlbHNlIGlmIChRU2xvdFMgaW4gcHJvcHMpIHtcbiAgICBhc3NlcnREZWZpbmVkKGN1cnJlbnRDb21wb25lbnQsICdzbG90IGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIGNvbXBvbmVudCcpO1xuICAgIGFzc2VydERlZmluZWQoY3VycmVudENvbXBvbmVudC4kc2xvdHMkLCAnY3VycmVudCBjb21wb25lbnQgc2xvdHMgbXVzdCBiZSBhIGRlZmluZWQgYXJyYXknKTtcblxuICAgIHNldEtleShlbG0sIHZub2RlLiRrZXkkKTtcbiAgICBkaXJlY3RTZXRBdHRyaWJ1dGUoZWxtLCBRU2xvdFJlZiwgY3VycmVudENvbXBvbmVudC4kaWQkKTtcbiAgICBkaXJlY3RTZXRBdHRyaWJ1dGUoZWxtLCBRU2xvdFMsICcnKTtcbiAgICBjdXJyZW50Q29tcG9uZW50LiRzbG90cyQucHVzaCh2bm9kZSk7XG4gICAgc3RhdGljQ3R4LiRhZGRTbG90cyQucHVzaChbZWxtLCBjdXJyZW50Q29tcG9uZW50LiRlbGVtZW50JF0pO1xuICB9IGVsc2UgaWYgKGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGluIHByb3BzKSB7XG4gICAgc2V0UHJvcGVydHkoc3RhdGljQ3R4LCBlbG0sICdpbm5lckhUTUwnLCBwcm9wc1tkYW5nZXJvdXNseVNldElubmVySFRNTF0pO1xuICAgIHJldHVybiBlbG07XG4gIH1cblxuICBsZXQgY2hpbGRyZW4gPSB2bm9kZS4kY2hpbGRyZW4kO1xuICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGVsbTtcbiAgfVxuICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmIGNoaWxkcmVuWzBdLiR0eXBlJCA9PT0gU0tJUF9SRU5ERVJfVFlQRSkge1xuICAgIGNoaWxkcmVuID0gY2hpbGRyZW5bMF0uJGNoaWxkcmVuJDtcbiAgfVxuICBjb25zdCBub2RlcyA9IGNoaWxkcmVuLm1hcCgoY2gpID0+IGNyZWF0ZUVsbShyQ3R4LCBjaCwgZmxhZ3MsIHByb21pc2VzKSk7XG4gIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgIGRpcmVjdEFwcGVuZENoaWxkKGVsbSwgbm9kZSk7XG4gIH1cbiAgcmV0dXJuIGVsbTtcbn07XG5cbmludGVyZmFjZSBTbG90TWFwcyB7XG4gIHNsb3RzOiBSZWNvcmQ8c3RyaW5nLCBRd2lrRWxlbWVudD47XG4gIHRlbXBsYXRlczogUmVjb3JkPHN0cmluZywgRWxlbWVudCB8IHVuZGVmaW5lZD47XG59XG5cbmNvbnN0IGdldFNsb3RzID0gKGVsQ3R4OiBRQ29udGV4dCk6IFByb2Nlc3NlZEpTWE5vZGVbXSA9PiB7XG4gIGNvbnN0IHNsb3RzID0gZWxDdHguJHNsb3RzJDtcbiAgaWYgKCFzbG90cykge1xuICAgIGNvbnN0IHBhcmVudCA9IGVsQ3R4LiRlbGVtZW50JC5wYXJlbnRFbGVtZW50O1xuICAgIGFzc2VydERlZmluZWQocGFyZW50LCAnY29tcG9uZW50IHNob3VsZCBiZSBhbHJlYWR5IGF0dGFjaGVkIHRvIHRoZSBkb20nKTtcbiAgICByZXR1cm4gKGVsQ3R4LiRzbG90cyQgPSByZWFkRE9NU2xvdHMoZWxDdHgpKTtcbiAgfVxuICByZXR1cm4gc2xvdHM7XG59O1xuXG5jb25zdCBnZXRTbG90TWFwID0gKGVsQ3R4OiBRQ29udGV4dCk6IFNsb3RNYXBzID0+IHtcbiAgY29uc3Qgc2xvdHNBcnJheSA9IGdldFNsb3RzKGVsQ3R4KTtcbiAgY29uc3Qgc2xvdHM6IFJlY29yZDxzdHJpbmcsIFF3aWtFbGVtZW50PiA9IHt9O1xuICBjb25zdCB0ZW1wbGF0ZXM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnQgfCB1bmRlZmluZWQ+ID0ge307XG4gIGNvbnN0IHQgPSBBcnJheS5mcm9tKGVsQ3R4LiRlbGVtZW50JC5jaGlsZE5vZGVzKS5maWx0ZXIoaXNTbG90VGVtcGxhdGUpO1xuXG4gIC8vIE1hcCB2aXJ0dWFsIHNsb3RzXG4gIGZvciAoY29uc3Qgdm5vZGUgb2Ygc2xvdHNBcnJheSkge1xuICAgIGFzc2VydFF3aWtFbGVtZW50KHZub2RlLiRlbG0kKTtcbiAgICBzbG90c1t2bm9kZS4ka2V5JCA/PyAnJ10gPSB2bm9kZS4kZWxtJDtcbiAgfVxuICAvLyBNYXAgdGVtcGxhdGVzXG4gIGZvciAoY29uc3QgZWxtIG9mIHQpIHtcbiAgICB0ZW1wbGF0ZXNbZGlyZWN0R2V0QXR0cmlidXRlKGVsbSwgUVNsb3QpID8/ICcnXSA9IGVsbTtcbiAgfVxuICByZXR1cm4geyBzbG90cywgdGVtcGxhdGVzIH07XG59O1xuXG5jb25zdCByZWFkRE9NU2xvdHMgPSAoZWxDdHg6IFFDb250ZXh0KTogUHJvY2Vzc2VkSlNYTm9kZVtdID0+IHtcbiAgY29uc3QgcGFyZW50ID0gZWxDdHguJGVsZW1lbnQkLnBhcmVudEVsZW1lbnQ7XG4gIGFzc2VydERlZmluZWQocGFyZW50LCAnY29tcG9uZW50IHNob3VsZCBiZSBhbHJlYWR5IGF0dGFjaGVkIHRvIHRoZSBkb20nKTtcbiAgcmV0dXJuIHF1ZXJ5QWxsVmlydHVhbEJ5QXR0cmlidXRlKHBhcmVudCwgUVNsb3RSZWYsIGVsQ3R4LiRpZCQpLm1hcChkb21Ub1Zub2RlKTtcbn07XG5cbmNvbnN0IGhhbmRsZVN0eWxlOiBQcm9wSGFuZGxlciA9IChjdHgsIGVsbSwgbmV3VmFsdWUpID0+IHtcbiAgc2V0UHJvcGVydHkoY3R4LCBlbG0uc3R5bGUsICdjc3NUZXh0JywgbmV3VmFsdWUpO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmNvbnN0IGhhbmRsZUNsYXNzOiBQcm9wSGFuZGxlciA9IChjdHgsIGVsbSwgbmV3VmFsdWUpID0+IHtcbiAgYXNzZXJ0VHJ1ZShcbiAgICBuZXdWYWx1ZSA9PSBudWxsIHx8IHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ3N0cmluZycsXG4gICAgJ2NsYXNzIG5ld1ZhbHVlIG11c3QgYmUgZWl0aGVyIG51bGxpc2ggb3Igc3RyaW5nJyxcbiAgICBuZXdWYWx1ZVxuICApO1xuICBpZiAoZWxtLm5hbWVzcGFjZVVSSSA9PT0gU1ZHX05TKSB7XG4gICAgc2V0QXR0cmlidXRlKGN0eCwgZWxtLCAnY2xhc3MnLCBuZXdWYWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgc2V0UHJvcGVydHkoY3R4LCBlbG0sICdjbGFzc05hbWUnLCBuZXdWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5jb25zdCBjaGVja0JlZm9yZUFzc2lnbjogUHJvcEhhbmRsZXIgPSAoY3R4LCBlbG0sIG5ld1ZhbHVlLCBwcm9wKSA9PiB7XG4gIGlmIChwcm9wIGluIGVsbSkge1xuICAgIC8vIGEgc2VsZWN0ZWQgPG9wdGlvbj4gaXMgZGlmZmVyZW50IGZyb20gYSBzZWxlY3RlZCA8b3B0aW9uIHZhbHVlPiAoaW5uZXJUZXh0IHZzICcnKVxuICAgIGlmICgoZWxtIGFzIGFueSlbcHJvcF0gIT09IG5ld1ZhbHVlIHx8IChwcm9wID09PSAndmFsdWUnICYmICFlbG0uaGFzQXR0cmlidXRlKHByb3ApKSkge1xuICAgICAgaWYgKFxuICAgICAgICAvLyB3ZSBtdXN0IHNldCB2YWx1ZSBsYXN0IHNvIHRoYXQgaXQgYWRoZXJlcyB0byBtaW4sbWF4LHN0ZXBcbiAgICAgICAgcHJvcCA9PT0gJ3ZhbHVlJyAmJlxuICAgICAgICAvLyBidXQgd2UgbXVzdCBhbHNvIHNldCBvcHRpb25zIGZpcnN0IHNvIHRoZXkgYXJlIHByZXNlbnQgYmVmb3JlIHVwZGF0aW5nIHNlbGVjdFxuICAgICAgICBlbG0udGFnTmFtZSAhPT0gJ09QVElPTidcbiAgICAgICkge1xuICAgICAgICBzZXRQcm9wZXJ0eVBvc3QoY3R4LCBlbG0sIHByb3AsIG5ld1ZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFByb3BlcnR5KGN0eCwgZWxtLCBwcm9wLCBuZXdWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmNvbnN0IGZvcmNlQXR0cmlidXRlOiBQcm9wSGFuZGxlciA9IChjdHgsIGVsbSwgbmV3VmFsdWUsIHByb3ApID0+IHtcbiAgc2V0QXR0cmlidXRlKGN0eCwgZWxtLCBwcm9wLnRvTG93ZXJDYXNlKCksIG5ld1ZhbHVlKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5jb25zdCBzZXRJbm5lckhUTUw6IFByb3BIYW5kbGVyID0gKGN0eCwgZWxtLCBuZXdWYWx1ZSkgPT4ge1xuICBzZXRQcm9wZXJ0eShjdHgsIGVsbSwgJ2lubmVySFRNTCcsIG5ld1ZhbHVlKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5jb25zdCBub29wOiBQcm9wSGFuZGxlciA9ICgpID0+IHtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5leHBvcnQgY29uc3QgUFJPUF9IQU5ETEVSX01BUDogUmVjb3JkPHN0cmluZywgUHJvcEhhbmRsZXIgfCB1bmRlZmluZWQ+ID0ge1xuICBzdHlsZTogaGFuZGxlU3R5bGUsXG4gIGNsYXNzOiBoYW5kbGVDbGFzcyxcbiAgY2xhc3NOYW1lOiBoYW5kbGVDbGFzcyxcbiAgdmFsdWU6IGNoZWNrQmVmb3JlQXNzaWduLFxuICBjaGVja2VkOiBjaGVja0JlZm9yZUFzc2lnbixcbiAgaHJlZjogZm9yY2VBdHRyaWJ1dGUsXG4gIGxpc3Q6IGZvcmNlQXR0cmlidXRlLFxuICBmb3JtOiBmb3JjZUF0dHJpYnV0ZSxcbiAgdGFiSW5kZXg6IGZvcmNlQXR0cmlidXRlLFxuICBkb3dubG9hZDogZm9yY2VBdHRyaWJ1dGUsXG4gIGlubmVySFRNTDogbm9vcCxcbiAgW2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MXTogc2V0SW5uZXJIVE1MLFxufTtcblxuZXhwb3J0IGNvbnN0IHNtYXJ0U2V0UHJvcGVydHkgPSAoXG4gIHN0YXRpY0N0eDogUmVuZGVyU3RhdGljQ29udGV4dCxcbiAgZWxtOiBRd2lrRWxlbWVudCxcbiAgcHJvcDogc3RyaW5nLFxuICBuZXdWYWx1ZTogYW55LFxuICBpc1N2ZzogYm9vbGVhblxuKSA9PiB7XG4gIC8vIGFyaWEgYXR0cmlidXRlIHZhbHVlIHNob3VsZCBiZSByZW5kZXJlZCBhcyBzdHJpbmdcbiAgaWYgKGlzQXJpYUF0dHJpYnV0ZShwcm9wKSkge1xuICAgIHNldEF0dHJpYnV0ZShzdGF0aWNDdHgsIGVsbSwgcHJvcCwgbmV3VmFsdWUgIT0gbnVsbCA/IFN0cmluZyhuZXdWYWx1ZSkgOiBuZXdWYWx1ZSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgaXRzIGFuIGV4Y2VwdGlvblxuICBjb25zdCBleGNlcHRpb24gPSBQUk9QX0hBTkRMRVJfTUFQW3Byb3BdO1xuICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgaWYgKGV4Y2VwdGlvbihzdGF0aWNDdHgsIGVsbSBhcyBIVE1MRWxlbWVudCwgbmV3VmFsdWUsIHByb3ApKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgcHJvcGVydHkgaW4gcHJvdG90eXBlXG4gIGlmICghaXNTdmcgJiYgcHJvcCBpbiBlbG0pIHtcbiAgICBzZXRQcm9wZXJ0eShzdGF0aWNDdHgsIGVsbSwgcHJvcCwgbmV3VmFsdWUpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChwcm9wLnN0YXJ0c1dpdGgoUFJFVkVOVF9ERUZBVUxUKSkge1xuICAgIHJlZ2lzdGVyUXdpa0V2ZW50KHByb3Auc2xpY2UoUFJFVkVOVF9ERUZBVUxULmxlbmd0aCkpO1xuICB9XG5cbiAgLy8gRmFsbGJhY2sgdG8gcmVuZGVyIGF0dHJpYnV0ZVxuICBzZXRBdHRyaWJ1dGUoc3RhdGljQ3R4LCBlbG0sIHByb3AsIG5ld1ZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhcmVFeGFjdFFSTHMgPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICBpZiAoIWlzUXJsKG9sZFZhbHVlKSB8fCAhaXNRcmwobmV3VmFsdWUpIHx8IG9sZFZhbHVlLiRoYXNoJCAhPT0gbmV3VmFsdWUuJGhhc2gkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGNBID0gb2xkVmFsdWUuJGNhcHR1cmVSZWYkO1xuICBjb25zdCBjQiA9IG5ld1ZhbHVlLiRjYXB0dXJlUmVmJDtcbiAgaWYgKGNBICYmIGNCKSB7XG4gICAgcmV0dXJuIHNhbWVBcnJheXMoY0EsIGNCKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3Qgc2FtZUFycmF5cyA9IChhMTogYW55W10sIGEyOiBhbnlbXSkgPT4ge1xuICBjb25zdCBsZW4gPSBhMS5sZW5ndGg7XG4gIGlmIChsZW4gIT09IGEyLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYTFbaV0gIT09IGEyW2ldKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFByb3BlcnRpZXMgPSAoXG4gIHN0YXRpY0N0eDogUmVuZGVyU3RhdGljQ29udGV4dCxcbiAgZWxDdHg6IFFDb250ZXh0LFxuICBob3N0Q3R4OiBRQ29udGV4dCB8IG51bGwsXG4gIG5ld1Byb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBpc1N2ZzogYm9vbGVhbixcbiAgaW1tdXRhYmxlOiBib29sZWFuXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0+IHtcbiAgY29uc3QgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGNvbnN0IGVsbSA9IGVsQ3R4LiRlbGVtZW50JDtcbiAgZm9yIChjb25zdCBwcm9wIGluIG5ld1Byb3BzKSB7XG4gICAgbGV0IG5ld1ZhbHVlID0gbmV3UHJvcHNbcHJvcF07XG4gICAgaWYgKHByb3AgPT09ICdyZWYnKSB7XG4gICAgICBhc3NlcnRFbGVtZW50KGVsbSk7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZXRSZWYobmV3VmFsdWUsIGVsbSk7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNPblByb3AocHJvcCkpIHtcbiAgICAgIHNldEV2ZW50KGVsQ3R4LmxpLCBwcm9wLCBuZXdWYWx1ZSwgc3RhdGljQ3R4LiRjb250YWluZXJTdGF0ZSQuJGNvbnRhaW5lckVsJCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNTaWduYWwobmV3VmFsdWUpKSB7XG4gICAgICBhc3NlcnREZWZpbmVkKGhvc3RDdHgsICdTaWduYWxzIGNhbiBvbmx5IGJlIHVzZWQgaW4gY29tcG9uZW50cycpO1xuICAgICAgbmV3VmFsdWUgPSB0cmFja1NpZ25hbChcbiAgICAgICAgbmV3VmFsdWUsXG4gICAgICAgIGltbXV0YWJsZVxuICAgICAgICAgID8gWzEsIGVsbSwgbmV3VmFsdWUsIGhvc3RDdHguJGVsZW1lbnQkLCBwcm9wXVxuICAgICAgICAgIDogWzIsIGhvc3RDdHguJGVsZW1lbnQkLCBuZXdWYWx1ZSwgZWxtLCBwcm9wXVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcCA9PT0gJ2NsYXNzJykge1xuICAgICAgaWYgKHFEZXYgJiYgdmFsdWVzLmNsYXNzKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0NhbiBvbmx5IHByb3ZpZGUgb25lIG9mIGNsYXNzIG9yIGNsYXNzTmFtZScpO1xuICAgICAgfVxuICAgICAgbmV3VmFsdWUgPSBzZXJpYWxpemVDbGFzc1dpdGhIb3N0KG5ld1ZhbHVlLCBob3N0Q3R4KTtcbiAgICAgIGlmICghbmV3VmFsdWUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwcm9wID09PSAnc3R5bGUnKSB7XG4gICAgICBuZXdWYWx1ZSA9IHN0cmluZ2lmeVN0eWxlKG5ld1ZhbHVlKTtcbiAgICB9XG4gICAgdmFsdWVzW3Byb3BdID0gbmV3VmFsdWU7XG4gICAgc21hcnRTZXRQcm9wZXJ0eShzdGF0aWNDdHgsIGVsbSwgcHJvcCwgbmV3VmFsdWUsIGlzU3ZnKTtcbiAgfVxuICByZXR1cm4gdmFsdWVzO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldENvbXBvbmVudFByb3BzID0gKFxuICBjb250YWluZXJTdGF0ZTogQ29udGFpbmVyU3RhdGUsXG4gIGVsQ3R4OiBRQ29udGV4dCxcbiAgZXhwZWN0UHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT5cbikgPT4ge1xuICBsZXQgcHJvcHMgPSBlbEN0eC4kcHJvcHMkO1xuICBpZiAoIXByb3BzKSB7XG4gICAgZWxDdHguJHByb3BzJCA9IHByb3BzID0gY3JlYXRlUHJveHkoY3JlYXRlUHJvcHNTdGF0ZSgpLCBjb250YWluZXJTdGF0ZSk7XG4gIH1cbiAgaWYgKGV4cGVjdFByb3BzID09PSBFTVBUWV9PQkopIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBtYW5hZ2VyID0gZ2V0U3Vic2NyaXB0aW9uTWFuYWdlcihwcm9wcyk7XG4gIGFzc2VydERlZmluZWQobWFuYWdlciwgYHByb3BzIGhhdmUgdG8gYmUgYSBwcm94eSwgYnV0IGl0IGlzIG5vdGAsIHByb3BzKTtcbiAgY29uc3QgdGFyZ2V0ID0gZ2V0UHJveHlUYXJnZXQocHJvcHMpO1xuICBhc3NlcnREZWZpbmVkKHRhcmdldCwgYHByb3BzIGhhdmUgdG8gYmUgYSBwcm94eSwgYnV0IGl0IGlzIG5vdGAsIHByb3BzKTtcblxuICBjb25zdCBpbW11dGFibGVNZXRhID0gKCh0YXJnZXQgYXMgYW55KVtfSU1NVVRBQkxFXSA9XG4gICAgKGV4cGVjdFByb3BzIGFzIGFueSlbX0lNTVVUQUJMRV0gPz8gRU1QVFlfT0JKKTtcblxuICBmb3IgKGNvbnN0IHByb3AgaW4gZXhwZWN0UHJvcHMpIHtcbiAgICBpZiAocHJvcCAhPT0gJ2NoaWxkcmVuJyAmJiBwcm9wICE9PSBRU2xvdCAmJiAhaW1tdXRhYmxlTWV0YVtwcm9wXSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBleHBlY3RQcm9wc1twcm9wXTtcbiAgICAgIGlmICh0YXJnZXRbcHJvcF0gIT09IHZhbHVlKSB7XG4gICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlO1xuICAgICAgICBtYW5hZ2VyLiRub3RpZnlTdWJzJChwcm9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjbGVhbnVwVHJlZSA9IChcbiAgZWxtOiBOb2RlIHwgVmlydHVhbEVsZW1lbnQsXG4gIHN0YXRpY0N0eDogUmVuZGVyU3RhdGljQ29udGV4dCxcbiAgc3Vic01hbmFnZXI6IFN1YnNjcmlwdGlvbk1hbmFnZXIsXG4gIHN0b3BTbG90czogYm9vbGVhbixcbiAgZGlzcG9zZSA9IGZhbHNlXG4pID0+IHtcbiAgc3Vic01hbmFnZXIuJGNsZWFyU3ViJChlbG0pO1xuICBpZiAoaXNRd2lrRWxlbWVudChlbG0pKSB7XG4gICAgaWYgKCFkaXNwb3NlICYmIHN0b3BTbG90cyAmJiBlbG0uaGFzQXR0cmlidXRlKFFTbG90UykpIHtcbiAgICAgIHN0YXRpY0N0eC4kcm1TbG90cyQucHVzaChlbG0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjdHggPSB0cnlHZXRDb250ZXh0KGVsbSk7XG4gICAgaWYgKGN0eCkge1xuICAgICAgY2xlYW51cENvbnRleHQoY3R4LCBzdWJzTWFuYWdlcik7XG4gICAgfVxuICAgIGNvbnN0IGVuZCA9IGlzVmlydHVhbEVsZW1lbnQoZWxtKSA/IGVsbS5jbG9zZSA6IG51bGw7XG4gICAgbGV0IG5vZGU6IE5vZGUgfCBudWxsIHwgVmlydHVhbEVsZW1lbnQgPSBlbG0uZmlyc3RDaGlsZDtcbiAgICB3aGlsZSAoKG5vZGUgPSBwcm9jZXNzVmlydHVhbE5vZGVzKG5vZGUpKSkge1xuICAgICAgY2xlYW51cFRyZWUobm9kZSEsIHN0YXRpY0N0eCwgc3Vic01hbmFnZXIsIHRydWUsIGRpc3Bvc2UpO1xuICAgICAgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgICBpZiAobm9kZSA9PT0gZW5kKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuY29uc3QgcmVzdG9yZVNjcm9sbCA9ICgpID0+IHtcbiAgaWYgKGRvY3VtZW50Ll9fcV9zY3JvbGxfcmVzdG9yZV9fKSB7XG4gICAgZG9jdW1lbnQuX19xX3Njcm9sbF9yZXN0b3JlX18oKTtcbiAgICBkb2N1bWVudC5fX3Ffc2Nyb2xsX3Jlc3RvcmVfXyA9IHVuZGVmaW5lZDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGV4ZWN1dGVDb250ZXh0V2l0aFNjcm9sbEFuZFRyYW5zaXRpb24gPSBhc3luYyAoY3R4OiBSZW5kZXJTdGF0aWNDb250ZXh0KSA9PiB7XG4gIC8vIHRyeSB0byB1c2UgYGRvY3VtZW50LnN0YXJ0Vmlld1RyYW5zaXRpb25gXG4gIGlmIChpc0Jyb3dzZXIgJiYgIXFUZXN0KSB7XG4gICAgaWYgKGRvY3VtZW50Ll9fcV92aWV3X3RyYW5zaXRpb25fXykge1xuICAgICAgZG9jdW1lbnQuX19xX3ZpZXdfdHJhbnNpdGlvbl9fID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKGRvY3VtZW50LnN0YXJ0Vmlld1RyYW5zaXRpb24pIHtcbiAgICAgICAgY29uc3QgdHJhbnNpdGlvbiA9IGRvY3VtZW50LnN0YXJ0Vmlld1RyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICAgIGV4ZWN1dGVET01SZW5kZXIoY3R4KTtcbiAgICAgICAgICByZXN0b3JlU2Nyb2xsKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBDdXN0b21FdmVudCgncXZpZXdUcmFuc2l0aW9uJywge1xuICAgICAgICAgIGRldGFpbDogdHJhbnNpdGlvbixcbiAgICAgICAgfSk7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICBhd2FpdCB0cmFuc2l0aW9uLmZpbmlzaGVkO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIGZhbGxiYWNrXG4gIGV4ZWN1dGVET01SZW5kZXIoY3R4KTtcbiAgaWYgKGlzQnJvd3Nlcikge1xuICAgIHJlc3RvcmVTY3JvbGwoKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGRpcmVjdEFwcGVuZENoaWxkID0gKHBhcmVudDogUXdpa0VsZW1lbnQsIGNoaWxkOiBOb2RlIHwgVmlydHVhbEVsZW1lbnQpID0+IHtcbiAgaWYgKGlzVmlydHVhbEVsZW1lbnQoY2hpbGQpKSB7XG4gICAgY2hpbGQuYXBwZW5kVG8ocGFyZW50KTtcbiAgfSBlbHNlIHtcbiAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoY2hpbGQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZGlyZWN0UmVtb3ZlQ2hpbGQgPSAocGFyZW50OiBRd2lrRWxlbWVudCwgY2hpbGQ6IE5vZGUgfCBWaXJ0dWFsRWxlbWVudCkgPT4ge1xuICBpZiAoaXNWaXJ0dWFsRWxlbWVudChjaGlsZCkpIHtcbiAgICBjaGlsZC5yZW1vdmUoKTtcbiAgfSBlbHNlIHtcbiAgICBwYXJlbnQucmVtb3ZlQ2hpbGQoY2hpbGQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZGlyZWN0SW5zZXJ0QWZ0ZXIgPSAoXG4gIHBhcmVudDogUXdpa0VsZW1lbnQsXG4gIGNoaWxkOiBOb2RlIHwgVmlydHVhbEVsZW1lbnQsXG4gIHJlZjogTm9kZSB8IFZpcnR1YWxFbGVtZW50IHwgbnVsbFxuKSA9PiB7XG4gIGlmIChpc1ZpcnR1YWxFbGVtZW50KGNoaWxkKSkge1xuICAgIGNoaWxkLmluc2VydEJlZm9yZVRvKHBhcmVudCwgcmVmPy5uZXh0U2libGluZyA/PyBudWxsKTtcbiAgfSBlbHNlIHtcbiAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGNoaWxkLCByZWY/Lm5leHRTaWJsaW5nID8/IG51bGwpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZGlyZWN0SW5zZXJ0QmVmb3JlID0gKFxuICBwYXJlbnQ6IFF3aWtFbGVtZW50LFxuICBjaGlsZDogTm9kZSB8IFZpcnR1YWxFbGVtZW50LFxuICByZWY6IE5vZGUgfCBWaXJ0dWFsRWxlbWVudCB8IG51bGxcbikgPT4ge1xuICBpZiAoaXNWaXJ0dWFsRWxlbWVudChjaGlsZCkpIHtcbiAgICBjaGlsZC5pbnNlcnRCZWZvcmVUbyhwYXJlbnQsIGdldFJvb3ROb2RlKHJlZikpO1xuICB9IGVsc2Uge1xuICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoY2hpbGQsIGdldFJvb3ROb2RlKHJlZikpO1xuICB9XG59O1xuXG5jb25zdCBjcmVhdGVLZXlUb09sZElkeCA9IChcbiAgY2hpbGRyZW46IFByb2Nlc3NlZEpTWE5vZGVbXSxcbiAgYmVnaW5JZHg6IG51bWJlcixcbiAgZW5kSWR4OiBudW1iZXJcbik6IEtleVRvSW5kZXhNYXAgPT4ge1xuICBjb25zdCBtYXA6IEtleVRvSW5kZXhNYXAgPSB7fTtcbiAgZm9yIChsZXQgaSA9IGJlZ2luSWR4OyBpIDw9IGVuZElkeDsgKytpKSB7XG4gICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICBjb25zdCBrZXkgPSBjaGlsZC4ka2V5JDtcbiAgICBpZiAoa2V5ICE9IG51bGwpIHtcbiAgICAgIG1hcFtrZXkgYXMgc3RyaW5nXSA9IGk7XG4gICAgfVxuICB9XG4gIHJldHVybiBtYXA7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkUXdpa0V2ZW50ID0gKHN0YXRpY0N0eDogUmVuZGVyU3RhdGljQ29udGV4dCwgZWxtOiBRd2lrRWxlbWVudCwgcHJvcDogc3RyaW5nKSA9PiB7XG4gIGlmICghcHJvcC5zdGFydHNXaXRoKCdvbjonKSkge1xuICAgIHNldEF0dHJpYnV0ZShzdGF0aWNDdHgsIGVsbSwgcHJvcCwgJycpO1xuICB9XG4gIHJlZ2lzdGVyUXdpa0V2ZW50KHByb3ApO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyUXdpa0V2ZW50ID0gKHByb3A6IHN0cmluZykgPT4ge1xuICBpZiAoIXFUZXN0KSB7XG4gICAgY29uc3QgZXZlbnROYW1lID0gZ2V0RXZlbnROYW1lKHByb3ApO1xuICAgIHRyeSB7XG4gICAgICAvLyBUaGlzIGlzIG1hbmFnZWQgYnkgcXdpay1sb2FkZXJcbiAgICAgICgoZ2xvYmFsVGhpcyBhcyBhbnkpLnF3aWtldmVudHMgfHw9IFtdKS5wdXNoKGV2ZW50TmFtZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2dXYXJuKGVycik7XG4gICAgfVxuICB9XG59O1xuIl19","import { assertDefined } from '../../error/assert';\nimport { codeToText, QError_setProperty } from '../../error/error';\nimport { getDocument } from '../../util/dom';\nimport { isElement, isNode, isQwikElement } from '../../util/element';\nimport { logDebug, logError, logWarn } from '../../util/log';\nimport { QSlot, QSlotRef, QStyle } from '../../util/markers';\nimport { qDev } from '../../util/qdev';\nimport { directGetAttribute, directSetAttribute } from '../fast-calls';\nimport { cleanupTree, directAppendChild, directInsertAfter, directInsertBefore, directRemoveChild, getChildren, isChildComponent, isSlotTemplate, SVG_NS, } from './visitor';\nexport const setAttribute = (staticCtx, el, prop, value) => {\n    staticCtx.$operations$.push({\n        $operation$: _setAttribute,\n        $args$: [el, prop, value],\n    });\n};\nconst _setAttribute = (el, prop, value) => {\n    if (value == null || value === false) {\n        el.removeAttribute(prop);\n    }\n    else {\n        // element.setAttribute requires string. Boolean attributes automatically convert \"\" to `true`\n        const str = value === true ? '' : String(value);\n        directSetAttribute(el, prop, str);\n    }\n};\nexport const setProperty = (staticCtx, node, key, value) => {\n    staticCtx.$operations$.push({\n        $operation$: _setProperty,\n        $args$: [node, key, value],\n    });\n};\nexport const setPropertyPost = (staticCtx, node, key, value) => {\n    staticCtx.$postOperations$.push({\n        $operation$: _setProperty,\n        $args$: [node, key, value],\n    });\n};\nconst _setProperty = (node, key, value) => {\n    try {\n        node[key] = value == null ? '' : value;\n        if (value == null && isNode(node) && isElement(node)) {\n            node.removeAttribute(key);\n        }\n    }\n    catch (err) {\n        logError(codeToText(QError_setProperty), key, { node, value }, err);\n    }\n};\nexport const createElement = (doc, expectTag, isSvg) => {\n    const el = isSvg ? doc.createElementNS(SVG_NS, expectTag) : doc.createElement(expectTag);\n    return el;\n};\nexport const insertBefore = (staticCtx, parent, newChild, refChild) => {\n    staticCtx.$operations$.push({\n        $operation$: directInsertBefore,\n        $args$: [parent, newChild, refChild ? refChild : null],\n    });\n    return newChild;\n};\nexport const insertAfter = (staticCtx, parent, newChild, refChild) => {\n    staticCtx.$operations$.push({\n        $operation$: directInsertAfter,\n        $args$: [parent, newChild, refChild ? refChild : null],\n    });\n    return newChild;\n};\nexport const appendChild = (staticCtx, parent, newChild) => {\n    staticCtx.$operations$.push({\n        $operation$: directAppendChild,\n        $args$: [parent, newChild],\n    });\n    return newChild;\n};\nexport const appendHeadStyle = (staticCtx, styleTask) => {\n    staticCtx.$containerState$.$styleIds$.add(styleTask.styleId);\n    staticCtx.$postOperations$.push({\n        $operation$: _appendHeadStyle,\n        $args$: [staticCtx.$containerState$, styleTask],\n    });\n};\nexport const setClasslist = (staticCtx, elm, toRemove, toAdd) => {\n    staticCtx.$operations$.push({\n        $operation$: _setClasslist,\n        $args$: [elm, toRemove, toAdd],\n    });\n};\nexport const _setClasslist = (elm, toRemove, toAdd) => {\n    const classList = elm.classList;\n    classList.remove(...toRemove);\n    classList.add(...toAdd);\n};\nexport const _appendHeadStyle = (containerState, styleTask) => {\n    const containerEl = containerState.$containerEl$;\n    const doc = getDocument(containerEl);\n    const isDoc = doc.documentElement === containerEl;\n    const headEl = doc.head;\n    const style = doc.createElement('style');\n    if (isDoc && !headEl) {\n        logWarn('document.head is undefined');\n    }\n    directSetAttribute(style, QStyle, styleTask.styleId);\n    directSetAttribute(style, 'hidden', '');\n    style.textContent = styleTask.content;\n    if (isDoc && headEl) {\n        directAppendChild(headEl, style);\n    }\n    else {\n        directInsertBefore(containerEl, style, containerEl.firstChild);\n    }\n};\nexport const prepend = (staticCtx, parent, newChild) => {\n    staticCtx.$operations$.push({\n        $operation$: directPrepend,\n        $args$: [parent, newChild],\n    });\n};\nexport const directPrepend = (parent, newChild) => {\n    directInsertBefore(parent, newChild, parent.firstChild);\n};\nexport const removeNode = (staticCtx, el) => {\n    if (isQwikElement(el)) {\n        const subsManager = staticCtx.$containerState$.$subsManager$;\n        cleanupTree(el, staticCtx, subsManager, true);\n    }\n    staticCtx.$operations$.push({\n        $operation$: _removeNode,\n        $args$: [el, staticCtx],\n    });\n};\nconst _removeNode = (el, staticCtx) => {\n    const parent = el.parentElement;\n    if (parent) {\n        directRemoveChild(parent, el);\n    }\n    else if (qDev) {\n        logWarn('Trying to remove component already removed', el);\n    }\n};\nexport const createTemplate = (doc, slotName) => {\n    const template = createElement(doc, 'q:template', false);\n    directSetAttribute(template, QSlot, slotName);\n    directSetAttribute(template, 'hidden', '');\n    directSetAttribute(template, 'aria-hidden', 'true');\n    return template;\n};\nexport const executeDOMRender = (staticCtx) => {\n    for (const op of staticCtx.$operations$) {\n        // PERF(misko): polymorphic execution\n        op.$operation$.apply(undefined, op.$args$);\n    }\n    resolveSlotProjection(staticCtx);\n};\nexport const getKey = (el) => {\n    return directGetAttribute(el, 'q:key');\n};\nexport const setKey = (el, key) => {\n    if (key !== null) {\n        directSetAttribute(el, 'q:key', key);\n    }\n};\nexport const resolveSlotProjection = (staticCtx) => {\n    // Slots removed\n    const subsManager = staticCtx.$containerState$.$subsManager$;\n    for (const slotEl of staticCtx.$rmSlots$) {\n        const key = getKey(slotEl);\n        assertDefined(key, 'slots must have a key');\n        const slotChildren = getChildren(slotEl, isChildComponent);\n        if (slotChildren.length > 0) {\n            const sref = slotEl.getAttribute(QSlotRef);\n            const hostCtx = staticCtx.$roots$.find((r) => r.$id$ === sref);\n            if (hostCtx) {\n                const hostElm = hostCtx.$element$;\n                if (hostElm.isConnected) {\n                    const hasTemplate = getChildren(hostElm, isSlotTemplate).some((node) => directGetAttribute(node, QSlot) === key);\n                    if (!hasTemplate) {\n                        const template = createTemplate(staticCtx.$doc$, key);\n                        for (const child of slotChildren) {\n                            directAppendChild(template, child);\n                        }\n                        directInsertBefore(hostElm, template, hostElm.firstChild);\n                    }\n                    else {\n                        cleanupTree(slotEl, staticCtx, subsManager, false);\n                    }\n                }\n                else {\n                    cleanupTree(slotEl, staticCtx, subsManager, false);\n                }\n            }\n            else {\n                // If slot content cannot be relocated, it means it's content is definitely removed\n                // Cleanup needs to be executed\n                cleanupTree(slotEl, staticCtx, subsManager, false);\n            }\n        }\n    }\n    // Slots added\n    for (const [slotEl, hostElm] of staticCtx.$addSlots$) {\n        const key = getKey(slotEl);\n        assertDefined(key, 'slots must have a key');\n        const template = getChildren(hostElm, isSlotTemplate).find((node) => {\n            return node.getAttribute(QSlot) === key;\n        });\n        if (template) {\n            getChildren(template, isChildComponent).forEach((child) => {\n                directAppendChild(slotEl, child);\n            });\n            template.remove();\n        }\n    }\n};\nexport const printRenderStats = (staticCtx) => {\n    if (qDev) {\n        if (typeof window !== 'undefined' && window.document != null) {\n            const byOp = {};\n            for (const op of staticCtx.$operations$) {\n                byOp[op.$operation$.name] = (byOp[op.$operation$.name] ?? 0) + 1;\n            }\n            const stats = {\n                byOp,\n                roots: staticCtx.$roots$.map((ctx) => ctx.$element$),\n                hostElements: Array.from(staticCtx.$hostElements$),\n                operations: staticCtx.$operations$.map((v) => [v.$operation$.name, ...v.$args$]),\n            };\n            const noOps = staticCtx.$operations$.length === 0;\n            logDebug('Render stats.', noOps ? 'No operations' : '', stats);\n        }\n    }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS9yZW5kZXIvZG9tL29wZXJhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2RSxPQUFPLEVBQ0wsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxNQUFNLEdBQ1AsTUFBTSxXQUFXLENBQUM7QUFFbkIsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQzFCLFNBQThCLEVBQzlCLEVBQWUsRUFDZixJQUFZLEVBQ1osS0FBVSxFQUNWLEVBQUU7SUFDRixTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztRQUMxQixXQUFXLEVBQUUsYUFBYTtRQUMxQixNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQztLQUMxQixD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bEQsVUFBVSxFQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2pGLENBQUM7WUFDRixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7WUFDbEQsUUFBUSxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb250YWluZXJTdGF0ZSB9IGZyb20gJy4uLy4uL2NvbnRhaW5lci9jb250YWluZXInO1xuaW1wb3J0IHsgYXNzZXJ0RGVmaW5lZCB9IGZyb20gJy4uLy4uL2Vycm9yL2Fzc2VydCc7XG5pbXBvcnQgeyBjb2RlVG9UZXh0LCBRRXJyb3Jfc2V0UHJvcGVydHkgfSBmcm9tICcuLi8uLi9lcnJvci9lcnJvcic7XG5pbXBvcnQgdHlwZSB7IFN0eWxlQXBwZW5kIH0gZnJvbSAnLi4vLi4vdXNlL3VzZS1jb3JlJztcbmltcG9ydCB7IGdldERvY3VtZW50IH0gZnJvbSAnLi4vLi4vdXRpbC9kb20nO1xuaW1wb3J0IHsgaXNFbGVtZW50LCBpc05vZGUsIGlzUXdpa0VsZW1lbnQgfSBmcm9tICcuLi8uLi91dGlsL2VsZW1lbnQnO1xuaW1wb3J0IHsgbG9nRGVidWcsIGxvZ0Vycm9yLCBsb2dXYXJuIH0gZnJvbSAnLi4vLi4vdXRpbC9sb2cnO1xuaW1wb3J0IHsgUVNsb3QsIFFTbG90UmVmLCBRU3R5bGUgfSBmcm9tICcuLi8uLi91dGlsL21hcmtlcnMnO1xuaW1wb3J0IHsgcURldiB9IGZyb20gJy4uLy4uL3V0aWwvcWRldic7XG5pbXBvcnQgeyBkaXJlY3RHZXRBdHRyaWJ1dGUsIGRpcmVjdFNldEF0dHJpYnV0ZSB9IGZyb20gJy4uL2Zhc3QtY2FsbHMnO1xuaW1wb3J0IHR5cGUgeyBSZW5kZXJTdGF0aWNDb250ZXh0IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBRd2lrRWxlbWVudCwgVmlydHVhbEVsZW1lbnQgfSBmcm9tICcuL3ZpcnR1YWwtZWxlbWVudCc7XG5pbXBvcnQge1xuICBjbGVhbnVwVHJlZSxcbiAgZGlyZWN0QXBwZW5kQ2hpbGQsXG4gIGRpcmVjdEluc2VydEFmdGVyLFxuICBkaXJlY3RJbnNlcnRCZWZvcmUsXG4gIGRpcmVjdFJlbW92ZUNoaWxkLFxuICBnZXRDaGlsZHJlbixcbiAgaXNDaGlsZENvbXBvbmVudCxcbiAgaXNTbG90VGVtcGxhdGUsXG4gIFNWR19OUyxcbn0gZnJvbSAnLi92aXNpdG9yJztcblxuZXhwb3J0IGNvbnN0IHNldEF0dHJpYnV0ZSA9IChcbiAgc3RhdGljQ3R4OiBSZW5kZXJTdGF0aWNDb250ZXh0LFxuICBlbDogUXdpa0VsZW1lbnQsXG4gIHByb3A6IHN0cmluZyxcbiAgdmFsdWU6IGFueVxuKSA9PiB7XG4gIHN0YXRpY0N0eC4kb3BlcmF0aW9ucyQucHVzaCh7XG4gICAgJG9wZXJhdGlvbiQ6IF9zZXRBdHRyaWJ1dGUsXG4gICAgJGFyZ3MkOiBbZWwsIHByb3AsIHZhbHVlXSxcbiAgfSk7XG59O1xuXG5jb25zdCBfc2V0QXR0cmlidXRlID0gKGVsOiBRd2lrRWxlbWVudCwgcHJvcDogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG4gIGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09PSBmYWxzZSkge1xuICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShwcm9wKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBlbGVtZW50LnNldEF0dHJpYnV0ZSByZXF1aXJlcyBzdHJpbmcuIEJvb2xlYW4gYXR0cmlidXRlcyBhdXRvbWF0aWNhbGx5IGNvbnZlcnQgXCJcIiB0byBgdHJ1ZWBcbiAgICBjb25zdCBzdHIgPSB2YWx1ZSA9PT0gdHJ1ZSA/ICcnIDogU3RyaW5nKHZhbHVlKTtcbiAgICBkaXJlY3RTZXRBdHRyaWJ1dGUoZWwsIHByb3AsIHN0cik7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzZXRQcm9wZXJ0eSA9IChzdGF0aWNDdHg6IFJlbmRlclN0YXRpY0NvbnRleHQsIG5vZGU6IGFueSwga2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcbiAgc3RhdGljQ3R4LiRvcGVyYXRpb25zJC5wdXNoKHtcbiAgICAkb3BlcmF0aW9uJDogX3NldFByb3BlcnR5LFxuICAgICRhcmdzJDogW25vZGUsIGtleSwgdmFsdWVdLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRQcm9wZXJ0eVBvc3QgPSAoXG4gIHN0YXRpY0N0eDogUmVuZGVyU3RhdGljQ29udGV4dCxcbiAgbm9kZTogYW55LFxuICBrZXk6IHN0cmluZyxcbiAgdmFsdWU6IGFueVxuKSA9PiB7XG4gIHN0YXRpY0N0eC4kcG9zdE9wZXJhdGlvbnMkLnB1c2goe1xuICAgICRvcGVyYXRpb24kOiBfc2V0UHJvcGVydHksXG4gICAgJGFyZ3MkOiBbbm9kZSwga2V5LCB2YWx1ZV0sXG4gIH0pO1xufTtcblxuY29uc3QgX3NldFByb3BlcnR5ID0gKG5vZGU6IGFueSwga2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcbiAgdHJ5IHtcbiAgICBub2RlW2tleV0gPSB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCAmJiBpc05vZGUobm9kZSkgJiYgaXNFbGVtZW50KG5vZGUpKSB7XG4gICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nRXJyb3IoY29kZVRvVGV4dChRRXJyb3Jfc2V0UHJvcGVydHkpLCBrZXksIHsgbm9kZSwgdmFsdWUgfSwgZXJyKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUVsZW1lbnQgPSAoZG9jOiBEb2N1bWVudCwgZXhwZWN0VGFnOiBzdHJpbmcsIGlzU3ZnOiBib29sZWFuKTogRWxlbWVudCA9PiB7XG4gIGNvbnN0IGVsID0gaXNTdmcgPyBkb2MuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgZXhwZWN0VGFnKSA6IGRvYy5jcmVhdGVFbGVtZW50KGV4cGVjdFRhZyk7XG5cbiAgcmV0dXJuIGVsO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydEJlZm9yZSA9IDxUIGV4dGVuZHMgTm9kZSB8IFZpcnR1YWxFbGVtZW50PihcbiAgc3RhdGljQ3R4OiBSZW5kZXJTdGF0aWNDb250ZXh0LFxuICBwYXJlbnQ6IFF3aWtFbGVtZW50LFxuICBuZXdDaGlsZDogVCxcbiAgcmVmQ2hpbGQ6IE5vZGUgfCBWaXJ0dWFsRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWRcbik6IFQgPT4ge1xuICBzdGF0aWNDdHguJG9wZXJhdGlvbnMkLnB1c2goe1xuICAgICRvcGVyYXRpb24kOiBkaXJlY3RJbnNlcnRCZWZvcmUsXG4gICAgJGFyZ3MkOiBbcGFyZW50LCBuZXdDaGlsZCwgcmVmQ2hpbGQgPyByZWZDaGlsZCA6IG51bGxdLFxuICB9KTtcbiAgcmV0dXJuIG5ld0NoaWxkO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydEFmdGVyID0gPFQgZXh0ZW5kcyBOb2RlIHwgVmlydHVhbEVsZW1lbnQ+KFxuICBzdGF0aWNDdHg6IFJlbmRlclN0YXRpY0NvbnRleHQsXG4gIHBhcmVudDogUXdpa0VsZW1lbnQsXG4gIG5ld0NoaWxkOiBULFxuICByZWZDaGlsZDogTm9kZSB8IFZpcnR1YWxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogVCA9PiB7XG4gIHN0YXRpY0N0eC4kb3BlcmF0aW9ucyQucHVzaCh7XG4gICAgJG9wZXJhdGlvbiQ6IGRpcmVjdEluc2VydEFmdGVyLFxuICAgICRhcmdzJDogW3BhcmVudCwgbmV3Q2hpbGQsIHJlZkNoaWxkID8gcmVmQ2hpbGQgOiBudWxsXSxcbiAgfSk7XG4gIHJldHVybiBuZXdDaGlsZDtcbn07XG5cbmV4cG9ydCBjb25zdCBhcHBlbmRDaGlsZCA9IDxUIGV4dGVuZHMgTm9kZSB8IFZpcnR1YWxFbGVtZW50PihcbiAgc3RhdGljQ3R4OiBSZW5kZXJTdGF0aWNDb250ZXh0LFxuICBwYXJlbnQ6IFF3aWtFbGVtZW50LFxuICBuZXdDaGlsZDogVFxuKTogVCA9PiB7XG4gIHN0YXRpY0N0eC4kb3BlcmF0aW9ucyQucHVzaCh7XG4gICAgJG9wZXJhdGlvbiQ6IGRpcmVjdEFwcGVuZENoaWxkLFxuICAgICRhcmdzJDogW3BhcmVudCwgbmV3Q2hpbGRdLFxuICB9KTtcbiAgcmV0dXJuIG5ld0NoaWxkO1xufTtcblxuZXhwb3J0IGNvbnN0IGFwcGVuZEhlYWRTdHlsZSA9IChzdGF0aWNDdHg6IFJlbmRlclN0YXRpY0NvbnRleHQsIHN0eWxlVGFzazogU3R5bGVBcHBlbmQpID0+IHtcbiAgc3RhdGljQ3R4LiRjb250YWluZXJTdGF0ZSQuJHN0eWxlSWRzJC5hZGQoc3R5bGVUYXNrLnN0eWxlSWQpO1xuICBzdGF0aWNDdHguJHBvc3RPcGVyYXRpb25zJC5wdXNoKHtcbiAgICAkb3BlcmF0aW9uJDogX2FwcGVuZEhlYWRTdHlsZSxcbiAgICAkYXJncyQ6IFtzdGF0aWNDdHguJGNvbnRhaW5lclN0YXRlJCwgc3R5bGVUYXNrXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0Q2xhc3NsaXN0ID0gKFxuICBzdGF0aWNDdHg6IFJlbmRlclN0YXRpY0NvbnRleHQsXG4gIGVsbTogRWxlbWVudCxcbiAgdG9SZW1vdmU6IHN0cmluZ1tdLFxuICB0b0FkZDogc3RyaW5nW11cbikgPT4ge1xuICBzdGF0aWNDdHguJG9wZXJhdGlvbnMkLnB1c2goe1xuICAgICRvcGVyYXRpb24kOiBfc2V0Q2xhc3NsaXN0LFxuICAgICRhcmdzJDogW2VsbSwgdG9SZW1vdmUsIHRvQWRkXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgX3NldENsYXNzbGlzdCA9IChlbG06IEVsZW1lbnQsIHRvUmVtb3ZlOiBzdHJpbmdbXSwgdG9BZGQ6IHN0cmluZ1tdKSA9PiB7XG4gIGNvbnN0IGNsYXNzTGlzdCA9IGVsbS5jbGFzc0xpc3Q7XG4gIGNsYXNzTGlzdC5yZW1vdmUoLi4udG9SZW1vdmUpO1xuICBjbGFzc0xpc3QuYWRkKC4uLnRvQWRkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBfYXBwZW5kSGVhZFN0eWxlID0gKGNvbnRhaW5lclN0YXRlOiBDb250YWluZXJTdGF0ZSwgc3R5bGVUYXNrOiBTdHlsZUFwcGVuZCkgPT4ge1xuICBjb25zdCBjb250YWluZXJFbCA9IGNvbnRhaW5lclN0YXRlLiRjb250YWluZXJFbCQ7XG4gIGNvbnN0IGRvYyA9IGdldERvY3VtZW50KGNvbnRhaW5lckVsKTtcbiAgY29uc3QgaXNEb2MgPSBkb2MuZG9jdW1lbnRFbGVtZW50ID09PSBjb250YWluZXJFbDtcbiAgY29uc3QgaGVhZEVsID0gZG9jLmhlYWQ7XG4gIGNvbnN0IHN0eWxlID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIGlmIChpc0RvYyAmJiAhaGVhZEVsKSB7XG4gICAgbG9nV2FybignZG9jdW1lbnQuaGVhZCBpcyB1bmRlZmluZWQnKTtcbiAgfVxuICBkaXJlY3RTZXRBdHRyaWJ1dGUoc3R5bGUsIFFTdHlsZSwgc3R5bGVUYXNrLnN0eWxlSWQpO1xuICBkaXJlY3RTZXRBdHRyaWJ1dGUoc3R5bGUsICdoaWRkZW4nLCAnJyk7XG5cbiAgc3R5bGUudGV4dENvbnRlbnQgPSBzdHlsZVRhc2suY29udGVudDtcbiAgaWYgKGlzRG9jICYmIGhlYWRFbCkge1xuICAgIGRpcmVjdEFwcGVuZENoaWxkKGhlYWRFbCwgc3R5bGUpO1xuICB9IGVsc2Uge1xuICAgIGRpcmVjdEluc2VydEJlZm9yZShjb250YWluZXJFbCwgc3R5bGUsIGNvbnRhaW5lckVsLmZpcnN0Q2hpbGQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcHJlcGVuZCA9IChzdGF0aWNDdHg6IFJlbmRlclN0YXRpY0NvbnRleHQsIHBhcmVudDogUXdpa0VsZW1lbnQsIG5ld0NoaWxkOiBOb2RlKSA9PiB7XG4gIHN0YXRpY0N0eC4kb3BlcmF0aW9ucyQucHVzaCh7XG4gICAgJG9wZXJhdGlvbiQ6IGRpcmVjdFByZXBlbmQsXG4gICAgJGFyZ3MkOiBbcGFyZW50LCBuZXdDaGlsZF0sXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGRpcmVjdFByZXBlbmQgPSAocGFyZW50OiBRd2lrRWxlbWVudCwgbmV3Q2hpbGQ6IE5vZGUpID0+IHtcbiAgZGlyZWN0SW5zZXJ0QmVmb3JlKHBhcmVudCwgbmV3Q2hpbGQsIHBhcmVudC5maXJzdENoaWxkKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVOb2RlID0gKHN0YXRpY0N0eDogUmVuZGVyU3RhdGljQ29udGV4dCwgZWw6IE5vZGUgfCBWaXJ0dWFsRWxlbWVudCkgPT4ge1xuICBpZiAoaXNRd2lrRWxlbWVudChlbCkpIHtcbiAgICBjb25zdCBzdWJzTWFuYWdlciA9IHN0YXRpY0N0eC4kY29udGFpbmVyU3RhdGUkLiRzdWJzTWFuYWdlciQ7XG4gICAgY2xlYW51cFRyZWUoZWwgYXMgRWxlbWVudCwgc3RhdGljQ3R4LCBzdWJzTWFuYWdlciwgdHJ1ZSk7XG4gIH1cbiAgc3RhdGljQ3R4LiRvcGVyYXRpb25zJC5wdXNoKHtcbiAgICAkb3BlcmF0aW9uJDogX3JlbW92ZU5vZGUsXG4gICAgJGFyZ3MkOiBbZWwsIHN0YXRpY0N0eF0sXG4gIH0pO1xufTtcblxuY29uc3QgX3JlbW92ZU5vZGUgPSAoZWw6IE5vZGUgfCBWaXJ0dWFsRWxlbWVudCwgc3RhdGljQ3R4OiBSZW5kZXJTdGF0aWNDb250ZXh0KSA9PiB7XG4gIGNvbnN0IHBhcmVudCA9IGVsLnBhcmVudEVsZW1lbnQ7XG4gIGlmIChwYXJlbnQpIHtcbiAgICBkaXJlY3RSZW1vdmVDaGlsZChwYXJlbnQsIGVsKTtcbiAgfSBlbHNlIGlmIChxRGV2KSB7XG4gICAgbG9nV2FybignVHJ5aW5nIHRvIHJlbW92ZSBjb21wb25lbnQgYWxyZWFkeSByZW1vdmVkJywgZWwpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlVGVtcGxhdGUgPSAoZG9jOiBEb2N1bWVudCwgc2xvdE5hbWU6IHN0cmluZykgPT4ge1xuICBjb25zdCB0ZW1wbGF0ZSA9IGNyZWF0ZUVsZW1lbnQoZG9jLCAncTp0ZW1wbGF0ZScsIGZhbHNlKTtcbiAgZGlyZWN0U2V0QXR0cmlidXRlKHRlbXBsYXRlLCBRU2xvdCwgc2xvdE5hbWUpO1xuICBkaXJlY3RTZXRBdHRyaWJ1dGUodGVtcGxhdGUsICdoaWRkZW4nLCAnJyk7XG4gIGRpcmVjdFNldEF0dHJpYnV0ZSh0ZW1wbGF0ZSwgJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcblxuICByZXR1cm4gdGVtcGxhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgZXhlY3V0ZURPTVJlbmRlciA9IChzdGF0aWNDdHg6IFJlbmRlclN0YXRpY0NvbnRleHQpID0+IHtcbiAgZm9yIChjb25zdCBvcCBvZiBzdGF0aWNDdHguJG9wZXJhdGlvbnMkKSB7XG4gICAgLy8gUEVSRihtaXNrbyk6IHBvbHltb3JwaGljIGV4ZWN1dGlvblxuICAgIG9wLiRvcGVyYXRpb24kLmFwcGx5KHVuZGVmaW5lZCwgb3AuJGFyZ3MkKTtcbiAgfVxuICByZXNvbHZlU2xvdFByb2plY3Rpb24oc3RhdGljQ3R4KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRLZXkgPSAoZWw6IFF3aWtFbGVtZW50KTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIHJldHVybiBkaXJlY3RHZXRBdHRyaWJ1dGUoZWwsICdxOmtleScpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldEtleSA9IChlbDogUXdpa0VsZW1lbnQsIGtleTogc3RyaW5nIHwgbnVsbCkgPT4ge1xuICBpZiAoa2V5ICE9PSBudWxsKSB7XG4gICAgZGlyZWN0U2V0QXR0cmlidXRlKGVsLCAncTprZXknLCBrZXkpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVNsb3RQcm9qZWN0aW9uID0gKHN0YXRpY0N0eDogUmVuZGVyU3RhdGljQ29udGV4dCkgPT4ge1xuICAvLyBTbG90cyByZW1vdmVkXG4gIGNvbnN0IHN1YnNNYW5hZ2VyID0gc3RhdGljQ3R4LiRjb250YWluZXJTdGF0ZSQuJHN1YnNNYW5hZ2VyJDtcbiAgZm9yIChjb25zdCBzbG90RWwgb2Ygc3RhdGljQ3R4LiRybVNsb3RzJCkge1xuICAgIGNvbnN0IGtleSA9IGdldEtleShzbG90RWwpO1xuICAgIGFzc2VydERlZmluZWQoa2V5LCAnc2xvdHMgbXVzdCBoYXZlIGEga2V5Jyk7XG5cbiAgICBjb25zdCBzbG90Q2hpbGRyZW4gPSBnZXRDaGlsZHJlbihzbG90RWwsIGlzQ2hpbGRDb21wb25lbnQpO1xuICAgIGlmIChzbG90Q2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc3JlZiA9IHNsb3RFbC5nZXRBdHRyaWJ1dGUoUVNsb3RSZWYpO1xuICAgICAgY29uc3QgaG9zdEN0eCA9IHN0YXRpY0N0eC4kcm9vdHMkLmZpbmQoKHIpID0+IHIuJGlkJCA9PT0gc3JlZik7XG4gICAgICBpZiAoaG9zdEN0eCkge1xuICAgICAgICBjb25zdCBob3N0RWxtID0gaG9zdEN0eC4kZWxlbWVudCQ7XG4gICAgICAgIGlmIChob3N0RWxtLmlzQ29ubmVjdGVkKSB7XG4gICAgICAgICAgY29uc3QgaGFzVGVtcGxhdGUgPSBnZXRDaGlsZHJlbihob3N0RWxtLCBpc1Nsb3RUZW1wbGF0ZSkuc29tZShcbiAgICAgICAgICAgIChub2RlOiBhbnkpID0+IGRpcmVjdEdldEF0dHJpYnV0ZShub2RlLCBRU2xvdCkgPT09IGtleVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoIWhhc1RlbXBsYXRlKSB7XG4gICAgICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IGNyZWF0ZVRlbXBsYXRlKHN0YXRpY0N0eC4kZG9jJCwga2V5KTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygc2xvdENoaWxkcmVuKSB7XG4gICAgICAgICAgICAgIGRpcmVjdEFwcGVuZENoaWxkKHRlbXBsYXRlLCBjaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaXJlY3RJbnNlcnRCZWZvcmUoaG9zdEVsbSwgdGVtcGxhdGUsIGhvc3RFbG0uZmlyc3RDaGlsZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsZWFudXBUcmVlKHNsb3RFbCwgc3RhdGljQ3R4LCBzdWJzTWFuYWdlciwgZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjbGVhbnVwVHJlZShzbG90RWwsIHN0YXRpY0N0eCwgc3Vic01hbmFnZXIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgc2xvdCBjb250ZW50IGNhbm5vdCBiZSByZWxvY2F0ZWQsIGl0IG1lYW5zIGl0J3MgY29udGVudCBpcyBkZWZpbml0ZWx5IHJlbW92ZWRcbiAgICAgICAgLy8gQ2xlYW51cCBuZWVkcyB0byBiZSBleGVjdXRlZFxuICAgICAgICBjbGVhbnVwVHJlZShzbG90RWwsIHN0YXRpY0N0eCwgc3Vic01hbmFnZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTbG90cyBhZGRlZFxuICBmb3IgKGNvbnN0IFtzbG90RWwsIGhvc3RFbG1dIG9mIHN0YXRpY0N0eC4kYWRkU2xvdHMkKSB7XG4gICAgY29uc3Qga2V5ID0gZ2V0S2V5KHNsb3RFbCk7XG4gICAgYXNzZXJ0RGVmaW5lZChrZXksICdzbG90cyBtdXN0IGhhdmUgYSBrZXknKTtcblxuICAgIGNvbnN0IHRlbXBsYXRlID0gZ2V0Q2hpbGRyZW4oaG9zdEVsbSwgaXNTbG90VGVtcGxhdGUpLmZpbmQoKG5vZGU6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIG5vZGUuZ2V0QXR0cmlidXRlKFFTbG90KSA9PT0ga2V5O1xuICAgIH0pIGFzIEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHRlbXBsYXRlKSB7XG4gICAgICBnZXRDaGlsZHJlbih0ZW1wbGF0ZSwgaXNDaGlsZENvbXBvbmVudCkuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgZGlyZWN0QXBwZW5kQ2hpbGQoc2xvdEVsLCBjaGlsZCk7XG4gICAgICB9KTtcbiAgICAgIHRlbXBsYXRlLnJlbW92ZSgpO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHByaW50UmVuZGVyU3RhdHMgPSAoc3RhdGljQ3R4OiBSZW5kZXJTdGF0aWNDb250ZXh0KSA9PiB7XG4gIGlmIChxRGV2KSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAhPSBudWxsKSB7XG4gICAgICBjb25zdCBieU9wOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XG4gICAgICBmb3IgKGNvbnN0IG9wIG9mIHN0YXRpY0N0eC4kb3BlcmF0aW9ucyQpIHtcbiAgICAgICAgYnlPcFtvcC4kb3BlcmF0aW9uJC5uYW1lXSA9IChieU9wW29wLiRvcGVyYXRpb24kLm5hbWVdID8/IDApICsgMTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0YXRzID0ge1xuICAgICAgICBieU9wLFxuICAgICAgICByb290czogc3RhdGljQ3R4LiRyb290cyQubWFwKChjdHgpID0+IGN0eC4kZWxlbWVudCQpLFxuICAgICAgICBob3N0RWxlbWVudHM6IEFycmF5LmZyb20oc3RhdGljQ3R4LiRob3N0RWxlbWVudHMkKSxcbiAgICAgICAgb3BlcmF0aW9uczogc3RhdGljQ3R4LiRvcGVyYXRpb25zJC5tYXAoKHYpID0+IFt2LiRvcGVyYXRpb24kLm5hbWUsIC4uLnYuJGFyZ3MkXSksXG4gICAgICB9O1xuICAgICAgY29uc3Qgbm9PcHMgPSBzdGF0aWNDdHguJG9wZXJhdGlvbnMkLmxlbmd0aCA9PT0gMDtcbiAgICAgIGxvZ0RlYnVnKCdSZW5kZXIgc3RhdHMuJywgbm9PcHMgPyAnTm8gb3BlcmF0aW9ucycgOiAnJywgc3RhdHMpO1xuICAgIH1cbiAgfVxufTtcbiJdfQ==","import { assertEqual, assertFail, assertTrue } from '../../error/assert';\nimport { VIRTUAL_SYMBOL } from '../../state/constants';\nimport { isComment, isElement, isNodeElement, isQwikElement, isVirtualElement, } from '../../util/element';\nimport { qSerialize, seal } from '../../util/qdev';\nimport { directGetAttribute } from '../fast-calls';\nimport { createElement } from './operations';\nimport { SVG_NS, getChildren } from './visitor';\nexport const newVirtualElement = (doc, isSvg) => {\n    const open = doc.createComment('qv ');\n    const close = doc.createComment('/qv');\n    return new VirtualElementImpl(open, close, isSvg);\n};\nexport const parseVirtualAttributes = (str) => {\n    if (!str) {\n        return {};\n    }\n    const attributes = str.split(' ');\n    return Object.fromEntries(attributes.map((attr) => {\n        const index = attr.indexOf('=');\n        if (index >= 0) {\n            return [attr.slice(0, index), unescape(attr.slice(index + 1))];\n        }\n        else {\n            return [attr, ''];\n        }\n    }));\n};\nexport const serializeVirtualAttributes = (map) => {\n    const attributes = [];\n    Object.entries(map).forEach(([key, value]) => {\n        if (!value) {\n            attributes.push(`${key}`);\n        }\n        else {\n            attributes.push(`${key}=${escape(value)}`);\n        }\n    });\n    return attributes.join(' ');\n};\nconst SHOW_COMMENT = 128;\nconst FILTER_ACCEPT = 1;\nconst FILTER_REJECT = 2;\nexport const walkerVirtualByAttribute = (el, prop, value) => {\n    return el.ownerDocument.createTreeWalker(el, SHOW_COMMENT, {\n        acceptNode(c) {\n            const virtual = getVirtualElement(c);\n            if (virtual) {\n                return directGetAttribute(virtual, prop) === value ? FILTER_ACCEPT : FILTER_REJECT;\n            }\n            return FILTER_REJECT;\n        },\n    });\n};\nexport const queryVirtualByAttribute = (el, prop, value) => {\n    const walker = walkerVirtualByAttribute(el, prop, value);\n    const open = walker.firstChild();\n    if (open) {\n        return getVirtualElement(open);\n    }\n    return null;\n};\nexport const queryAllVirtualByAttribute = (el, prop, value) => {\n    const walker = walkerVirtualByAttribute(el, prop, value);\n    const pars = [];\n    let currentNode = null;\n    while ((currentNode = walker.nextNode())) {\n        pars.push(getVirtualElement(currentNode));\n    }\n    return pars;\n};\nexport const escape = (s) => {\n    return s.replace(/ /g, '+');\n};\nexport const unescape = (s) => {\n    return s.replace(/\\+/g, ' ');\n};\nexport const VIRTUAL = ':virtual';\nexport class VirtualElementImpl {\n    open;\n    close;\n    isSvg;\n    ownerDocument;\n    _qc_ = null;\n    nodeType = 111;\n    localName = VIRTUAL;\n    nodeName = VIRTUAL;\n    $attributes$;\n    $template$;\n    constructor(open, close, isSvg) {\n        this.open = open;\n        this.close = close;\n        this.isSvg = isSvg;\n        const doc = (this.ownerDocument = open.ownerDocument);\n        this.$template$ = createElement(doc, 'template', false);\n        this.$attributes$ = parseVirtualAttributes(open.data.slice(3));\n        assertTrue(open.data.startsWith('qv '), 'comment is not a qv');\n        open[VIRTUAL_SYMBOL] = this;\n        close[VIRTUAL_SYMBOL] = this;\n        seal(this);\n    }\n    insertBefore(node, ref) {\n        const parent = this.parentElement;\n        if (parent) {\n            const ref2 = ref ? ref : this.close;\n            parent.insertBefore(node, ref2);\n        }\n        else {\n            this.$template$.insertBefore(node, ref);\n        }\n        return node;\n    }\n    remove() {\n        const parent = this.parentElement;\n        if (parent) {\n            const ch = this.childNodes;\n            assertEqual(this.$template$.childElementCount, 0, 'children should be empty');\n            parent.removeChild(this.open);\n            for (let i = 0; i < ch.length; i++) {\n                this.$template$.appendChild(ch[i]);\n            }\n            parent.removeChild(this.close);\n        }\n    }\n    appendChild(node) {\n        return this.insertBefore(node, null);\n    }\n    insertBeforeTo(newParent, child) {\n        // const ch = this.childNodes;\n        const ch = this.childNodes;\n        // TODO\n        // if (this.parentElement) {\n        //   console.warn('already attached');\n        // }\n        newParent.insertBefore(this.open, child);\n        for (const c of ch) {\n            newParent.insertBefore(c, child);\n        }\n        newParent.insertBefore(this.close, child);\n        assertEqual(this.$template$.childElementCount, 0, 'children should be empty');\n    }\n    appendTo(newParent) {\n        this.insertBeforeTo(newParent, null);\n    }\n    get namespaceURI() {\n        return this.parentElement?.namespaceURI ?? '';\n    }\n    removeChild(child) {\n        if (this.parentElement) {\n            this.parentElement.removeChild(child);\n        }\n        else {\n            this.$template$.removeChild(child);\n        }\n    }\n    getAttribute(prop) {\n        return this.$attributes$[prop] ?? null;\n    }\n    hasAttribute(prop) {\n        return prop in this.$attributes$;\n    }\n    setAttribute(prop, value) {\n        this.$attributes$[prop] = value;\n        if (qSerialize) {\n            this.open.data = updateComment(this.$attributes$);\n        }\n    }\n    removeAttribute(prop) {\n        delete this.$attributes$[prop];\n        if (qSerialize) {\n            this.open.data = updateComment(this.$attributes$);\n        }\n    }\n    matches(_) {\n        return false;\n    }\n    compareDocumentPosition(other) {\n        return this.open.compareDocumentPosition(other);\n    }\n    closest(query) {\n        const parent = this.parentElement;\n        if (parent) {\n            return parent.closest(query);\n        }\n        return null;\n    }\n    querySelectorAll(query) {\n        const result = [];\n        const ch = getChildren(this, isNodeElement);\n        ch.forEach((el) => {\n            if (isQwikElement(el)) {\n                if (el.matches(query)) {\n                    result.push(el);\n                }\n                result.concat(Array.from(el.querySelectorAll(query)));\n            }\n        });\n        return result;\n    }\n    querySelector(query) {\n        for (const el of this.childNodes) {\n            if (isElement(el)) {\n                if (el.matches(query)) {\n                    return el;\n                }\n                const v = el.querySelector(query);\n                if (v !== null) {\n                    return v;\n                }\n            }\n        }\n        return null;\n    }\n    get innerHTML() {\n        return '';\n    }\n    set innerHTML(html) {\n        const parent = this.parentElement;\n        if (parent) {\n            this.childNodes.forEach((a) => this.removeChild(a));\n            this.$template$.innerHTML = html;\n            parent.insertBefore(this.$template$.content, this.close);\n        }\n        else {\n            this.$template$.innerHTML = html;\n        }\n    }\n    get firstChild() {\n        if (this.parentElement) {\n            const first = this.open.nextSibling;\n            if (first === this.close) {\n                return null;\n            }\n            return first;\n        }\n        else {\n            return this.$template$.firstChild;\n        }\n    }\n    get nextSibling() {\n        return this.close.nextSibling;\n    }\n    get previousSibling() {\n        return this.open.previousSibling;\n    }\n    get childNodes() {\n        if (!this.parentElement) {\n            return Array.from(this.$template$.childNodes);\n        }\n        const nodes = [];\n        let node = this.open;\n        while ((node = node.nextSibling)) {\n            if (node === this.close) {\n                break;\n            }\n            nodes.push(node);\n        }\n        return nodes;\n    }\n    get isConnected() {\n        return this.open.isConnected;\n    }\n    /** The DOM parent element (not the vDOM parent, use findVirtual for that) */\n    get parentElement() {\n        return this.open.parentElement;\n    }\n}\nconst updateComment = (attributes) => {\n    return `qv ${serializeVirtualAttributes(attributes)}`;\n};\nexport const processVirtualNodes = (node) => {\n    if (node == null) {\n        return null;\n    }\n    if (isComment(node)) {\n        const virtual = getVirtualElement(node);\n        if (virtual) {\n            return virtual;\n        }\n    }\n    return node;\n};\nconst findClose = (open) => {\n    let node = open;\n    let stack = 1;\n    while ((node = node.nextSibling)) {\n        if (isComment(node)) {\n            // We don't want to resume virtual nodes but if they're already resumed, use them\n            const virtual = node[VIRTUAL_SYMBOL];\n            if (virtual) {\n                // This is not our existing virtual node because otherwise findClose wouldn't have been called\n                node = virtual;\n            }\n            else if (node.data.startsWith('qv ')) {\n                stack++;\n            }\n            else if (node.data === '/qv') {\n                stack--;\n                if (stack === 0) {\n                    return node;\n                }\n            }\n        }\n    }\n    assertFail('close not found');\n};\nexport const getVirtualElement = (open) => {\n    const virtual = open[VIRTUAL_SYMBOL];\n    if (virtual) {\n        return virtual;\n    }\n    if (open.data.startsWith('qv ')) {\n        const close = findClose(open);\n        return new VirtualElementImpl(open, close, open.parentElement?.namespaceURI === SVG_NS);\n    }\n    return null;\n};\nexport const getRootNode = (node) => {\n    if (node == null) {\n        return null; // TODO\n    }\n    if (isVirtualElement(node)) {\n        return node.open;\n    }\n    else {\n        return node;\n    }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1lbGVtZW50LmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3JlbmRlci9kb20vdmlydHVhbC1lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGdCQUFnQixHQUNqQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFxQ2hELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBYSxFQUFFLEtBQWMsRUFBa0IsRUFBRTtJQUNqRixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsT0FBTyxJQUFJLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxHQUFXLEVBQTBCLEVBQUU7SUFDNUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lB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QUF5QixFQUFFO0lBQ3hFLE1BQU0sT0FBTyxHQUFJLElBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5QyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1osT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsT0FBTyxJQUFJLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxZQUFZLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBa0MsRUFBUSxFQUFFO0lBQ3RFLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2pCLE9BQU8sSUFBVyxDQUFDLENBQUMsT0FBTztJQUM3QixDQUFDO0lBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydEVxdWFsLCBhc3NlcnRGYWlsLCBhc3NlcnRUcnVlIH0gZnJvbSAnLi4vLi4vZXJyb3IvYXNzZXJ0JztcbmltcG9ydCB7IFZJUlRVQUxfU1lNQk9MIH0gZnJvbSAnLi4vLi4vc3RhdGUvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIGlzQ29tbWVudCxcbiAgaXNFbGVtZW50LFxuICBpc05vZGVFbGVtZW50LFxuICBpc1F3aWtFbGVtZW50LFxuICBpc1ZpcnR1YWxFbGVtZW50LFxufSBmcm9tICcuLi8uLi91dGlsL2VsZW1lbnQnO1xuaW1wb3J0IHsgcVNlcmlhbGl6ZSwgc2VhbCB9IGZyb20gJy4uLy4uL3V0aWwvcWRldic7XG5pbXBvcnQgeyBkaXJlY3RHZXRBdHRyaWJ1dGUgfSBmcm9tICcuLi9mYXN0LWNhbGxzJztcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQgfSBmcm9tICcuL29wZXJhdGlvbnMnO1xuaW1wb3J0IHsgU1ZHX05TLCBnZXRDaGlsZHJlbiB9IGZyb20gJy4vdmlzaXRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlydHVhbEVsZW1lbnQge1xuICByZWFkb25seSBvcGVuOiBDb21tZW50O1xuICByZWFkb25seSBjbG9zZTogQ29tbWVudDtcbiAgcmVhZG9ubHkgaXNTdmc6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGluc2VydEJlZm9yZTogPFQgZXh0ZW5kcyBOb2RlPihub2RlOiBULCBjaGlsZDogTm9kZSB8IG51bGwpID0+IFQ7XG4gIHJlYWRvbmx5IGFwcGVuZENoaWxkOiA8VCBleHRlbmRzIE5vZGU+KG5vZGU6IFQpID0+IFQ7XG4gIHJlYWRvbmx5IGluc2VydEJlZm9yZVRvOiAobmV3UGFyZW50OiBRd2lrRWxlbWVudCwgY2hpbGQ6IE5vZGUgfCBudWxsKSA9PiB2b2lkO1xuICByZWFkb25seSBhcHBlbmRUbzogKG5ld1BhcmVudDogUXdpa0VsZW1lbnQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IG93bmVyRG9jdW1lbnQ6IERvY3VtZW50O1xuICByZWFkb25seSBuYW1lc3BhY2VVUkk6IHN0cmluZztcbiAgcmVhZG9ubHkgbm9kZVR5cGU6IDExMTtcbiAgcmVhZG9ubHkgY2hpbGROb2RlczogTm9kZVtdO1xuICByZWFkb25seSBmaXJzdENoaWxkOiBOb2RlIHwgbnVsbDtcbiAgcmVhZG9ubHkgcHJldmlvdXNTaWJsaW5nOiBOb2RlIHwgbnVsbDtcbiAgcmVhZG9ubHkgbmV4dFNpYmxpbmc6IE5vZGUgfCBudWxsO1xuICByZWFkb25seSByZW1vdmU6ICgpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IGNsb3Nlc3Q6IChxdWVyeTogc3RyaW5nKSA9PiBFbGVtZW50IHwgbnVsbDtcbiAgcmVhZG9ubHkgaGFzQXR0cmlidXRlOiAocHJvcDogc3RyaW5nKSA9PiBib29sZWFuO1xuICByZWFkb25seSBnZXRBdHRyaWJ1dGU6IChwcm9wOiBzdHJpbmcpID0+IHN0cmluZyB8IG51bGw7XG4gIHJlYWRvbmx5IHJlbW92ZUF0dHJpYnV0ZTogKHByb3A6IHN0cmluZykgPT4gdm9pZDtcbiAgcmVhZG9ubHkgcXVlcnlTZWxlY3RvcjogKHF1ZXJ5OiBzdHJpbmcpID0+IFF3aWtFbGVtZW50IHwgbnVsbDtcbiAgcmVhZG9ubHkgcXVlcnlTZWxlY3RvckFsbDogKHF1ZXJ5OiBzdHJpbmcpID0+IFF3aWtFbGVtZW50W107XG4gIHJlYWRvbmx5IGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uOiAob3RoZXI6IE5vZGUpID0+IG51bWJlcjtcbiAgcmVhZG9ubHkgbWF0Y2hlczogKHF1ZXJ5OiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNldEF0dHJpYnV0ZTogKHByb3A6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgcmVhZG9ubHkgcmVtb3ZlQ2hpbGQ6IChub2RlOiBOb2RlKSA9PiB2b2lkO1xuICByZWFkb25seSBsb2NhbE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbm9kZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgaXNDb25uZWN0ZWQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHBhcmVudEVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsO1xuICBpbm5lckhUTUw6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUXdpa0VsZW1lbnQgPSBFbGVtZW50IHwgVmlydHVhbEVsZW1lbnQ7XG5cbmV4cG9ydCBjb25zdCBuZXdWaXJ0dWFsRWxlbWVudCA9IChkb2M6IERvY3VtZW50LCBpc1N2ZzogYm9vbGVhbik6IFZpcnR1YWxFbGVtZW50ID0+IHtcbiAgY29uc3Qgb3BlbiA9IGRvYy5jcmVhdGVDb21tZW50KCdxdiAnKTtcbiAgY29uc3QgY2xvc2UgPSBkb2MuY3JlYXRlQ29tbWVudCgnL3F2Jyk7XG4gIHJldHVybiBuZXcgVmlydHVhbEVsZW1lbnRJbXBsKG9wZW4sIGNsb3NlLCBpc1N2Zyk7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VWaXJ0dWFsQXR0cmlidXRlcyA9IChzdHI6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4ge1xuICBpZiAoIXN0cikge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBjb25zdCBhdHRyaWJ1dGVzID0gc3RyLnNwbGl0KCcgJyk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgYXR0cmlidXRlcy5tYXAoKGF0dHIpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gYXR0ci5pbmRleE9mKCc9Jyk7XG4gICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICByZXR1cm4gW2F0dHIuc2xpY2UoMCwgaW5kZXgpLCB1bmVzY2FwZShhdHRyLnNsaWNlKGluZGV4ICsgMSkpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBbYXR0ciwgJyddO1xuICAgICAgfVxuICAgIH0pXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VyaWFsaXplVmlydHVhbEF0dHJpYnV0ZXMgPSAobWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSA9PiB7XG4gIGNvbnN0IGF0dHJpYnV0ZXM6IHN0cmluZ1tdID0gW107XG4gIE9iamVjdC5lbnRyaWVzKG1hcCkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgYXR0cmlidXRlcy5wdXNoKGAke2tleX1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXR0cmlidXRlcy5wdXNoKGAke2tleX09JHtlc2NhcGUodmFsdWUpfWApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBhdHRyaWJ1dGVzLmpvaW4oJyAnKTtcbn07XG5cbmNvbnN0IFNIT1dfQ09NTUVOVCA9IDEyODtcbmNvbnN0IEZJTFRFUl9BQ0NFUFQgPSAxO1xuY29uc3QgRklMVEVSX1JFSkVDVCA9IDI7XG5cbmV4cG9ydCBjb25zdCB3YWxrZXJWaXJ0dWFsQnlBdHRyaWJ1dGUgPSAoZWw6IEVsZW1lbnQsIHByb3A6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4ge1xuICByZXR1cm4gZWwub3duZXJEb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGVsLCBTSE9XX0NPTU1FTlQsIHtcbiAgICBhY2NlcHROb2RlKGMpIHtcbiAgICAgIGNvbnN0IHZpcnR1YWwgPSBnZXRWaXJ0dWFsRWxlbWVudChjIGFzIENvbW1lbnQpO1xuICAgICAgaWYgKHZpcnR1YWwpIHtcbiAgICAgICAgcmV0dXJuIGRpcmVjdEdldEF0dHJpYnV0ZSh2aXJ0dWFsLCBwcm9wKSA9PT0gdmFsdWUgPyBGSUxURVJfQUNDRVBUIDogRklMVEVSX1JFSkVDVDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBGSUxURVJfUkVKRUNUO1xuICAgIH0sXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHF1ZXJ5VmlydHVhbEJ5QXR0cmlidXRlID0gKGVsOiBFbGVtZW50LCBwcm9wOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3Qgd2Fsa2VyID0gd2Fsa2VyVmlydHVhbEJ5QXR0cmlidXRlKGVsLCBwcm9wLCB2YWx1ZSk7XG4gIGNvbnN0IG9wZW4gPSB3YWxrZXIuZmlyc3RDaGlsZCgpO1xuICBpZiAob3Blbikge1xuICAgIHJldHVybiBnZXRWaXJ0dWFsRWxlbWVudChvcGVuIGFzIENvbW1lbnQpO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHF1ZXJ5QWxsVmlydHVhbEJ5QXR0cmlidXRlID0gKGVsOiBFbGVtZW50LCBwcm9wOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3Qgd2Fsa2VyID0gd2Fsa2VyVmlydHVhbEJ5QXR0cmlidXRlKGVsLCBwcm9wLCB2YWx1ZSk7XG4gIGNvbnN0IHBhcnM6IFZpcnR1YWxFbGVtZW50W10gPSBbXTtcbiAgbGV0IGN1cnJlbnROb2RlOiBOb2RlIHwgbnVsbCA9IG51bGw7XG4gIHdoaWxlICgoY3VycmVudE5vZGUgPSB3YWxrZXIubmV4dE5vZGUoKSkpIHtcbiAgICBwYXJzLnB1c2goZ2V0VmlydHVhbEVsZW1lbnQoY3VycmVudE5vZGUgYXMgQ29tbWVudCkhKTtcbiAgfVxuICByZXR1cm4gcGFycztcbn07XG5cbmV4cG9ydCBjb25zdCBlc2NhcGUgPSAoczogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzLnJlcGxhY2UoLyAvZywgJysnKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1bmVzY2FwZSA9IChzOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIHMucmVwbGFjZSgvXFwrL2csICcgJyk7XG59O1xuXG5leHBvcnQgY29uc3QgVklSVFVBTCA9ICc6dmlydHVhbCc7XG5cbmV4cG9ydCBjbGFzcyBWaXJ0dWFsRWxlbWVudEltcGwgaW1wbGVtZW50cyBWaXJ0dWFsRWxlbWVudCB7XG4gIG93bmVyRG9jdW1lbnQ6IERvY3VtZW50O1xuICBfcWNfOiBhbnkgPSBudWxsO1xuXG4gIHJlYWRvbmx5IG5vZGVUeXBlID0gMTExIGFzIGNvbnN0O1xuICByZWFkb25seSBsb2NhbE5hbWUgPSBWSVJUVUFMO1xuICByZWFkb25seSBub2RlTmFtZSA9IFZJUlRVQUw7XG5cbiAgcHJpdmF0ZSAkYXR0cmlidXRlcyQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHByaXZhdGUgJHRlbXBsYXRlJDogSFRNTFRlbXBsYXRlRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBvcGVuOiBDb21tZW50LFxuICAgIHJlYWRvbmx5IGNsb3NlOiBDb21tZW50LFxuICAgIHJlYWRvbmx5IGlzU3ZnOiBib29sZWFuXG4gICkge1xuICAgIGNvbnN0IGRvYyA9ICh0aGlzLm93bmVyRG9jdW1lbnQgPSBvcGVuLm93bmVyRG9jdW1lbnQpO1xuICAgIHRoaXMuJHRlbXBsYXRlJCA9IGNyZWF0ZUVsZW1lbnQoZG9jLCAndGVtcGxhdGUnLCBmYWxzZSkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcbiAgICB0aGlzLiRhdHRyaWJ1dGVzJCA9IHBhcnNlVmlydHVhbEF0dHJpYnV0ZXMob3Blbi5kYXRhLnNsaWNlKDMpKTtcbiAgICBhc3NlcnRUcnVlKG9wZW4uZGF0YS5zdGFydHNXaXRoKCdxdiAnKSwgJ2NvbW1lbnQgaXMgbm90IGEgcXYnKTtcbiAgICAob3BlbiBhcyBhbnkpW1ZJUlRVQUxfU1lNQk9MXSA9IHRoaXM7XG4gICAgKGNsb3NlIGFzIGFueSlbVklSVFVBTF9TWU1CT0xdID0gdGhpcztcbiAgICBzZWFsKHRoaXMpO1xuICB9XG5cbiAgaW5zZXJ0QmVmb3JlPFQgZXh0ZW5kcyBOb2RlPihub2RlOiBULCByZWY6IE5vZGUgfCBudWxsKTogVCB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5wYXJlbnRFbGVtZW50O1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIGNvbnN0IHJlZjIgPSByZWYgPyByZWYgOiB0aGlzLmNsb3NlO1xuICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShub2RlLCByZWYyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4kdGVtcGxhdGUkLmluc2VydEJlZm9yZShub2RlLCByZWYpO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHJlbW92ZSgpIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnBhcmVudEVsZW1lbnQ7XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgY29uc3QgY2ggPSB0aGlzLmNoaWxkTm9kZXM7XG4gICAgICBhc3NlcnRFcXVhbCh0aGlzLiR0ZW1wbGF0ZSQuY2hpbGRFbGVtZW50Q291bnQsIDAsICdjaGlsZHJlbiBzaG91bGQgYmUgZW1wdHknKTtcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZCh0aGlzLm9wZW4pO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaC5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLiR0ZW1wbGF0ZSQuYXBwZW5kQ2hpbGQoY2hbaV0pO1xuICAgICAgfVxuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHRoaXMuY2xvc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFwcGVuZENoaWxkPFQgZXh0ZW5kcyBOb2RlPihub2RlOiBUKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKG5vZGUsIG51bGwpO1xuICB9XG5cbiAgaW5zZXJ0QmVmb3JlVG8obmV3UGFyZW50OiBRd2lrRWxlbWVudCwgY2hpbGQ6IE5vZGUgfCBudWxsKSB7XG4gICAgLy8gY29uc3QgY2ggPSB0aGlzLmNoaWxkTm9kZXM7XG4gICAgY29uc3QgY2ggPSB0aGlzLmNoaWxkTm9kZXM7XG4gICAgLy8gVE9ET1xuICAgIC8vIGlmICh0aGlzLnBhcmVudEVsZW1lbnQpIHtcbiAgICAvLyAgIGNvbnNvbGUud2FybignYWxyZWFkeSBhdHRhY2hlZCcpO1xuICAgIC8vIH1cbiAgICBuZXdQYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMub3BlbiwgY2hpbGQpO1xuICAgIGZvciAoY29uc3QgYyBvZiBjaCkge1xuICAgICAgbmV3UGFyZW50Lmluc2VydEJlZm9yZShjLCBjaGlsZCk7XG4gICAgfVxuICAgIG5ld1BhcmVudC5pbnNlcnRCZWZvcmUodGhpcy5jbG9zZSwgY2hpbGQpO1xuICAgIGFzc2VydEVxdWFsKHRoaXMuJHRlbXBsYXRlJC5jaGlsZEVsZW1lbnRDb3VudCwgMCwgJ2NoaWxkcmVuIHNob3VsZCBiZSBlbXB0eScpO1xuICB9XG5cbiAgYXBwZW5kVG8obmV3UGFyZW50OiBRd2lrRWxlbWVudCkge1xuICAgIHRoaXMuaW5zZXJ0QmVmb3JlVG8obmV3UGFyZW50LCBudWxsKTtcbiAgfVxuXG4gIGdldCBuYW1lc3BhY2VVUkkoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50RWxlbWVudD8ubmFtZXNwYWNlVVJJID8/ICcnO1xuICB9XG5cbiAgcmVtb3ZlQ2hpbGQoY2hpbGQ6IE5vZGUpIHtcbiAgICBpZiAodGhpcy5wYXJlbnRFbGVtZW50KSB7XG4gICAgICB0aGlzLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoY2hpbGQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiR0ZW1wbGF0ZSQucmVtb3ZlQ2hpbGQoY2hpbGQpO1xuICAgIH1cbiAgfVxuXG4gIGdldEF0dHJpYnV0ZShwcm9wOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy4kYXR0cmlidXRlcyRbcHJvcF0gPz8gbnVsbDtcbiAgfVxuXG4gIGhhc0F0dHJpYnV0ZShwcm9wOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcHJvcCBpbiB0aGlzLiRhdHRyaWJ1dGVzJDtcbiAgfVxuXG4gIHNldEF0dHJpYnV0ZShwcm9wOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLiRhdHRyaWJ1dGVzJFtwcm9wXSA9IHZhbHVlO1xuICAgIGlmIChxU2VyaWFsaXplKSB7XG4gICAgICB0aGlzLm9wZW4uZGF0YSA9IHVwZGF0ZUNvbW1lbnQodGhpcy4kYXR0cmlidXRlcyQpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUF0dHJpYnV0ZShwcm9wOiBzdHJpbmcpIHtcbiAgICBkZWxldGUgdGhpcy4kYXR0cmlidXRlcyRbcHJvcF07XG4gICAgaWYgKHFTZXJpYWxpemUpIHtcbiAgICAgIHRoaXMub3Blbi5kYXRhID0gdXBkYXRlQ29tbWVudCh0aGlzLiRhdHRyaWJ1dGVzJCk7XG4gICAgfVxuICB9XG5cbiAgbWF0Y2hlcyhfOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbihvdGhlcjogTm9kZSkge1xuICAgIHJldHVybiB0aGlzLm9wZW4uY29tcGFyZURvY3VtZW50UG9zaXRpb24ob3RoZXIpO1xuICB9XG5cbiAgY2xvc2VzdChxdWVyeTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5wYXJlbnRFbGVtZW50O1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHJldHVybiBwYXJlbnQuY2xvc2VzdChxdWVyeSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcXVlcnlTZWxlY3RvckFsbChxdWVyeTogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVzdWx0OiBRd2lrRWxlbWVudFtdID0gW107XG4gICAgY29uc3QgY2ggPSBnZXRDaGlsZHJlbih0aGlzLCBpc05vZGVFbGVtZW50KTtcbiAgICBjaC5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgaWYgKGlzUXdpa0VsZW1lbnQoZWwpKSB7XG4gICAgICAgIGlmIChlbC5tYXRjaGVzKHF1ZXJ5KSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGVsKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQuY29uY2F0KEFycmF5LmZyb20oZWwucXVlcnlTZWxlY3RvckFsbChxdWVyeSkpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcXVlcnlTZWxlY3RvcihxdWVyeTogc3RyaW5nKSB7XG4gICAgZm9yIChjb25zdCBlbCBvZiB0aGlzLmNoaWxkTm9kZXMpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQoZWwpKSB7XG4gICAgICAgIGlmIChlbC5tYXRjaGVzKHF1ZXJ5KSkge1xuICAgICAgICAgIHJldHVybiBlbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2ID0gZWwucXVlcnlTZWxlY3RvcihxdWVyeSk7XG4gICAgICAgIGlmICh2ICE9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXQgaW5uZXJIVE1MKCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHNldCBpbm5lckhUTUwoaHRtbDogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5wYXJlbnRFbGVtZW50O1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHRoaXMuY2hpbGROb2Rlcy5mb3JFYWNoKChhKSA9PiB0aGlzLnJlbW92ZUNoaWxkKGEpKTtcbiAgICAgIHRoaXMuJHRlbXBsYXRlJC5pbm5lckhUTUwgPSBodG1sO1xuICAgICAgcGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLiR0ZW1wbGF0ZSQuY29udGVudCwgdGhpcy5jbG9zZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuJHRlbXBsYXRlJC5pbm5lckhUTUwgPSBodG1sO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmaXJzdENoaWxkKCkge1xuICAgIGlmICh0aGlzLnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5vcGVuLm5leHRTaWJsaW5nO1xuICAgICAgaWYgKGZpcnN0ID09PSB0aGlzLmNsb3NlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpcnN0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy4kdGVtcGxhdGUkLmZpcnN0Q2hpbGQ7XG4gICAgfVxuICB9XG4gIGdldCBuZXh0U2libGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9zZS5uZXh0U2libGluZztcbiAgfVxuICBnZXQgcHJldmlvdXNTaWJsaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm9wZW4ucHJldmlvdXNTaWJsaW5nO1xuICB9XG4gIGdldCBjaGlsZE5vZGVzKCk6IE5vZGVbXSB7XG4gICAgaWYgKCF0aGlzLnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuJHRlbXBsYXRlJC5jaGlsZE5vZGVzKSBhcyBhbnk7XG4gICAgfVxuICAgIGNvbnN0IG5vZGVzOiBOb2RlW10gPSBbXTtcbiAgICBsZXQgbm9kZTogTm9kZSB8IG51bGwgPSB0aGlzLm9wZW47XG4gICAgd2hpbGUgKChub2RlID0gbm9kZS5uZXh0U2libGluZykpIHtcbiAgICAgIGlmIChub2RlID09PSB0aGlzLmNsb3NlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbm9kZXMucHVzaChub2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGVzO1xuICB9XG4gIGdldCBpc0Nvbm5lY3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcGVuLmlzQ29ubmVjdGVkO1xuICB9XG4gIC8qKiBUaGUgRE9NIHBhcmVudCBlbGVtZW50IChub3QgdGhlIHZET00gcGFyZW50LCB1c2UgZmluZFZpcnR1YWwgZm9yIHRoYXQpICovXG4gIGdldCBwYXJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLm9wZW4ucGFyZW50RWxlbWVudDtcbiAgfVxufVxuXG5jb25zdCB1cGRhdGVDb21tZW50ID0gKGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pID0+IHtcbiAgcmV0dXJuIGBxdiAke3NlcmlhbGl6ZVZpcnR1YWxBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpfWA7XG59O1xuXG5leHBvcnQgY29uc3QgcHJvY2Vzc1ZpcnR1YWxOb2RlcyA9IDxUIGV4dGVuZHMgTm9kZSB8IG51bGw+KG5vZGU6IFQpOiBUIHwgVmlydHVhbEVsZW1lbnQgPT4ge1xuICBpZiAobm9kZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGwgYXMgVDtcbiAgfVxuXG4gIGlmIChpc0NvbW1lbnQobm9kZSkpIHtcbiAgICBjb25zdCB2aXJ0dWFsID0gZ2V0VmlydHVhbEVsZW1lbnQobm9kZSk7XG4gICAgaWYgKHZpcnR1YWwpIHtcbiAgICAgIHJldHVybiB2aXJ0dWFsO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbm9kZTtcbn07XG5cbmNvbnN0IGZpbmRDbG9zZSA9IChvcGVuOiBDb21tZW50KTogQ29tbWVudCA9PiB7XG4gIGxldCBub2RlOiBOb2RlIHwgbnVsbCA9IG9wZW47XG4gIGxldCBzdGFjayA9IDE7XG4gIHdoaWxlICgobm9kZSA9IG5vZGUubmV4dFNpYmxpbmcpKSB7XG4gICAgaWYgKGlzQ29tbWVudChub2RlKSkge1xuICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byByZXN1bWUgdmlydHVhbCBub2RlcyBidXQgaWYgdGhleSdyZSBhbHJlYWR5IHJlc3VtZWQsIHVzZSB0aGVtXG4gICAgICBjb25zdCB2aXJ0dWFsID0gKG5vZGUgYXMgYW55KVtWSVJUVUFMX1NZTUJPTF0gYXMgQ2hpbGROb2RlO1xuICAgICAgaWYgKHZpcnR1YWwpIHtcbiAgICAgICAgLy8gVGhpcyBpcyBub3Qgb3VyIGV4aXN0aW5nIHZpcnR1YWwgbm9kZSBiZWNhdXNlIG90aGVyd2lzZSBmaW5kQ2xvc2Ugd291bGRuJ3QgaGF2ZSBiZWVuIGNhbGxlZFxuICAgICAgICBub2RlID0gdmlydHVhbDtcbiAgICAgIH0gZWxzZSBpZiAobm9kZS5kYXRhLnN0YXJ0c1dpdGgoJ3F2ICcpKSB7XG4gICAgICAgIHN0YWNrKys7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUuZGF0YSA9PT0gJy9xdicpIHtcbiAgICAgICAgc3RhY2stLTtcbiAgICAgICAgaWYgKHN0YWNrID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgYXNzZXJ0RmFpbCgnY2xvc2Ugbm90IGZvdW5kJyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VmlydHVhbEVsZW1lbnQgPSAob3BlbjogQ29tbWVudCk6IFZpcnR1YWxFbGVtZW50IHwgbnVsbCA9PiB7XG4gIGNvbnN0IHZpcnR1YWwgPSAob3BlbiBhcyBhbnkpW1ZJUlRVQUxfU1lNQk9MXTtcbiAgaWYgKHZpcnR1YWwpIHtcbiAgICByZXR1cm4gdmlydHVhbDtcbiAgfVxuICBpZiAob3Blbi5kYXRhLnN0YXJ0c1dpdGgoJ3F2ICcpKSB7XG4gICAgY29uc3QgY2xvc2UgPSBmaW5kQ2xvc2Uob3Blbik7XG4gICAgcmV0dXJuIG5ldyBWaXJ0dWFsRWxlbWVudEltcGwob3BlbiwgY2xvc2UsIG9wZW4ucGFyZW50RWxlbWVudD8ubmFtZXNwYWNlVVJJID09PSBTVkdfTlMpO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJvb3ROb2RlID0gKG5vZGU6IE5vZGUgfCBWaXJ0dWFsRWxlbWVudCB8IG51bGwpOiBOb2RlID0+IHtcbiAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsIGFzIGFueTsgLy8gVE9ET1xuICB9XG4gIGlmIChpc1ZpcnR1YWxFbGVtZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGUub3BlbjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufTtcbiJdfQ==","import { assertDefined, assertElement, assertEqual } from '../error/assert';\nimport { getDocument } from '../util/dom';\nimport { isComment, isDocument, isElement, isNode, isQwikElement, isText, isVirtualElement, } from '../util/element';\nimport { logWarn } from '../util/log';\nimport { ELEMENT_ID, ELEMENT_ID_PREFIX, QContainerAttr, QScopedStyle } from '../util/markers';\nimport { qDev } from '../util/qdev';\nimport { QError_containerAlreadyPaused, QError_missingObjectId, QError_verifySerializable, qError, } from '../error/error';\nimport { serializeQRLs } from '../qrl/qrl';\nimport { processVirtualNodes, } from '../render/dom/virtual-element';\nimport { directGetAttribute, directSetAttribute } from '../render/fast-calls';\nimport { LocalSubscriptionManager, fastSkipSerialize, fastWeakSerialize, getProxyFlags, getProxyTarget, getSubscriptionManager, isConnected, serializeSubscription, } from '../state/common';\nimport { QObjectImmutable, QObjectRecursive } from '../state/constants';\nimport { HOST_FLAG_DYNAMIC, tryGetContext } from '../state/context';\nimport { groupListeners } from '../state/listeners';\nimport { SignalImpl } from '../state/signal';\nimport { serializeSStyle } from '../style/qrl-styles';\nimport { TaskFlagsIsDirty, destroyTask, isResourceTask, } from '../use/use-task';\nimport { isNotNullable, isPromise } from '../util/promises';\nimport { isArray, isObject, isSerializableObject } from '../util/types';\nimport { FILTER_REJECT, FILTER_SKIP, SHOW_COMMENT, SHOW_ELEMENT, _getContainerState, intToStr, createContainerState, } from './container';\nimport { UNDEFINED_PREFIX, collectDeps, serializeValue } from './serializers';\nimport { isQrl } from '../qrl/qrl-class';\n/** @internal */\nexport const _serializeData = async (data, pureQRL) => {\n    const containerState = createContainerState(null, null);\n    const collector = createCollector(containerState);\n    collectValue(data, collector, false);\n    // Wait for remaining promises\n    let promises;\n    while ((promises = collector.$promises$).length > 0) {\n        collector.$promises$ = [];\n        const results = await Promise.allSettled(promises);\n        for (const result of results) {\n            if (result.status === 'rejected') {\n                console.error(result.reason);\n            }\n        }\n    }\n    const objs = Array.from(collector.$objSet$.keys());\n    let count = 0;\n    const objToId = new Map();\n    for (const obj of objs) {\n        objToId.set(obj, intToStr(count));\n        count++;\n    }\n    if (collector.$noSerialize$.length > 0) {\n        const undefinedID = objToId.get(undefined);\n        assertDefined(undefinedID, 'undefined ID must be defined');\n        for (const obj of collector.$noSerialize$) {\n            objToId.set(obj, undefinedID);\n        }\n    }\n    const mustGetObjId = (obj) => {\n        let suffix = '';\n        if (isPromise(obj)) {\n            const promiseValue = getPromiseValue(obj);\n            if (!promiseValue) {\n                throw qError(QError_missingObjectId, obj);\n            }\n            obj = promiseValue.value;\n            if (promiseValue.resolved) {\n                suffix += '~';\n            }\n            else {\n                suffix += '_';\n            }\n        }\n        if (isObject(obj)) {\n            const target = getProxyTarget(obj);\n            if (target) {\n                suffix += '!';\n                obj = target;\n            }\n        }\n        const key = objToId.get(obj);\n        if (key === undefined) {\n            throw qError(QError_missingObjectId, obj);\n        }\n        return key + suffix;\n    };\n    const convertedObjs = serializeObjects(objs, mustGetObjId, null, collector, containerState);\n    return JSON.stringify({\n        _entry: mustGetObjId(data),\n        _objs: convertedObjs,\n    });\n};\n// <docs markdown=\"../readme.md#pauseContainer\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#pauseContainer instead)\n// </docs>\n/** This pauses a running container in the browser. It is not used for SSR */\n// TODO(mhevery): this is a remnant when you could have paused on client. Should be deleted.\nexport const pauseContainer = async (elmOrDoc, defaultParentJSON) => {\n    const doc = getDocument(elmOrDoc);\n    const documentElement = doc.documentElement;\n    const containerEl = isDocument(elmOrDoc) ? documentElement : elmOrDoc;\n    if (directGetAttribute(containerEl, QContainerAttr) === 'paused') {\n        throw qError(QError_containerAlreadyPaused);\n    }\n    const parentJSON = defaultParentJSON ?? (containerEl === doc.documentElement ? doc.body : containerEl);\n    const containerState = _getContainerState(containerEl);\n    const contexts = getNodesInScope(containerEl, hasContext);\n    // Set container to paused\n    directSetAttribute(containerEl, QContainerAttr, 'paused');\n    // Update elements with context\n    for (const elCtx of contexts) {\n        const elm = elCtx.$element$;\n        const listeners = elCtx.li;\n        if (elCtx.$scopeIds$) {\n            const value = serializeSStyle(elCtx.$scopeIds$);\n            if (value) {\n                elm.setAttribute(QScopedStyle, value);\n            }\n        }\n        if (elCtx.$id$) {\n            elm.setAttribute(ELEMENT_ID, elCtx.$id$);\n        }\n        if (isElement(elm) && listeners.length > 0) {\n            const groups = groupListeners(listeners);\n            for (const listener of groups) {\n                elm.setAttribute(listener[0], serializeQRLs(listener[1], containerState, elCtx));\n            }\n        }\n    }\n    // Serialize data\n    const data = await _pauseFromContexts(contexts, containerState, (el) => {\n        if (isNode(el) && isText(el)) {\n            return getTextID(el, containerState);\n        }\n        return null;\n    });\n    // Emit Qwik JSON\n    const qwikJson = doc.createElement('script');\n    directSetAttribute(qwikJson, 'type', 'qwik/json');\n    qwikJson.textContent = escapeText(JSON.stringify(data.state, undefined, qDev ? '  ' : undefined));\n    parentJSON.appendChild(qwikJson);\n    // Emit event registration\n    const extraListeners = Array.from(containerState.$events$, (s) => JSON.stringify(s));\n    const eventsScript = doc.createElement('script');\n    eventsScript.textContent = `(window.qwikevents||=[]).push(${extraListeners.join(', ')})`;\n    parentJSON.appendChild(eventsScript);\n    return data;\n};\n/**\n * Grab all state needed to resume the container later.\n *\n * @internal\n */\nexport const _pauseFromContexts = async (allContexts, containerState, fallbackGetObjId, textNodes) => {\n    const collector = createCollector(containerState);\n    textNodes?.forEach((_, key) => {\n        collector.$seen$.add(key);\n    });\n    let hasListeners = false;\n    // Collect resources\n    // TODO: optimize\n    for (const ctx of allContexts) {\n        if (ctx.$tasks$) {\n            for (const task of ctx.$tasks$) {\n                if (qDev) {\n                    if (task.$flags$ & TaskFlagsIsDirty) {\n                        logWarn(`Serializing dirty task. Looks like an internal error. \nTask Symbol: ${task.$qrl$.$symbol$}\n`);\n                    }\n                    if (!isConnected(task)) {\n                        logWarn('Serializing disconnected task. Looks like an internal error.');\n                    }\n                }\n                if (isResourceTask(task)) {\n                    collector.$resources$.push(task.$state$);\n                }\n                destroyTask(task);\n            }\n        }\n    }\n    // Find all listeners. They are the \"entries\" for resuming the container.\n    // Any lexical scope they reference must be serialized.\n    for (const ctx of allContexts) {\n        const el = ctx.$element$;\n        const ctxListeners = ctx.li;\n        for (const listener of ctxListeners) {\n            if (isElement(el)) {\n                const qrl = listener[1];\n                const captured = qrl.$captureRef$;\n                if (captured) {\n                    for (const obj of captured) {\n                        /**\n                         * Collect the lexical scope used by the listener. This also collects all the\n                         * subscribers of any reactive state in scope, since the listener might change that\n                         * state\n                         */\n                        collectValue(obj, collector, true);\n                    }\n                }\n                collector.$qrls$.push(qrl);\n                hasListeners = true;\n            }\n        }\n    }\n    // No listeners implies static page\n    if (!hasListeners) {\n        return {\n            state: {\n                refs: {},\n                ctx: {},\n                objs: [],\n                subs: [],\n            },\n            objs: [],\n            funcs: [],\n            qrls: [],\n            resources: collector.$resources$,\n            mode: 'static',\n        };\n    }\n    // Wait for remaining promises\n    let promises;\n    while ((promises = collector.$promises$).length > 0) {\n        collector.$promises$ = [];\n        await Promise.all(promises);\n    }\n    // If at this point any component can render, we need to capture Context and Props\n    const canRender = collector.$elements$.length > 0;\n    if (canRender) {\n        for (const elCtx of collector.$deferElements$) {\n            collectElementData(elCtx, collector, elCtx.$element$);\n        }\n        for (const ctx of allContexts) {\n            collectProps(ctx, collector);\n        }\n    }\n    // Wait for remaining promises\n    while ((promises = collector.$promises$).length > 0) {\n        collector.$promises$ = [];\n        await Promise.all(promises);\n    }\n    // Convert objSet to array\n    const elementToIndex = new Map();\n    const objs = Array.from(collector.$objSet$.keys());\n    const objToId = new Map();\n    const getElementID = (el) => {\n        let id = elementToIndex.get(el);\n        if (id === undefined) {\n            id = getQId(el);\n            if (!id) {\n                console.warn('Missing ID', el);\n            }\n            elementToIndex.set(el, id);\n        }\n        return id;\n    };\n    const getObjId = (obj) => {\n        let suffix = '';\n        if (isPromise(obj)) {\n            const promiseValue = getPromiseValue(obj);\n            if (!promiseValue) {\n                return null;\n            }\n            obj = promiseValue.value;\n            if (promiseValue.resolved) {\n                suffix += '~';\n            }\n            else {\n                suffix += '_';\n            }\n        }\n        if (isObject(obj)) {\n            const target = getProxyTarget(obj);\n            if (target) {\n                suffix += '!';\n                obj = target;\n            }\n            else if (isQwikElement(obj)) {\n                const elID = getElementID(obj);\n                if (elID) {\n                    return ELEMENT_ID_PREFIX + elID + suffix;\n                }\n                return null;\n            }\n        }\n        const id = objToId.get(obj);\n        if (id) {\n            return id + suffix;\n        }\n        const textId = textNodes?.get(obj);\n        if (textId) {\n            return '*' + textId;\n        }\n        if (fallbackGetObjId) {\n            return fallbackGetObjId(obj);\n        }\n        return null;\n    };\n    const mustGetObjId = (obj) => {\n        const key = getObjId(obj);\n        if (key === null) {\n            // TODO(mhevery): this is a hack as we should never get here.\n            // This as a workaround for https://github.com/QwikDev/qwik/issues/4979\n            if (isQrl(obj)) {\n                const id = intToStr(objToId.size);\n                objToId.set(obj, id);\n                return id;\n            }\n            else {\n                throw qError(QError_missingObjectId, obj);\n            }\n        }\n        return key;\n    };\n    // Compute subscriptions\n    const subsMap = new Map();\n    for (const obj of objs) {\n        const subs = getManager(obj, containerState)?.$subs$;\n        if (!subs) {\n            continue;\n        }\n        const flags = getProxyFlags(obj) ?? 0;\n        const converted = [];\n        if (flags & QObjectRecursive) {\n            converted.push(flags);\n        }\n        for (const sub of subs) {\n            const host = sub[1];\n            if (sub[0] === 0 && isNode(host) && isVirtualElement(host)) {\n                if (!collector.$elements$.includes(tryGetContext(host))) {\n                    continue;\n                }\n            }\n            converted.push(sub);\n        }\n        if (converted.length > 0) {\n            subsMap.set(obj, converted);\n        }\n    }\n    // Sort objects: the ones with subscriptions go first\n    objs.sort((a, b) => {\n        const isProxyA = subsMap.has(a) ? 0 : 1;\n        const isProxyB = subsMap.has(b) ? 0 : 1;\n        return isProxyA - isProxyB;\n    });\n    // Generate object ID by using a monotonic counter\n    let count = 0;\n    for (const obj of objs) {\n        objToId.set(obj, intToStr(count));\n        count++;\n    }\n    if (collector.$noSerialize$.length > 0) {\n        const undefinedID = objToId.get(undefined);\n        assertDefined(undefinedID, 'undefined ID must be defined');\n        for (const obj of collector.$noSerialize$) {\n            objToId.set(obj, undefinedID);\n        }\n    }\n    // Serialize object subscriptions\n    const subs = [];\n    for (const obj of objs) {\n        const value = subsMap.get(obj);\n        if (value == null) {\n            break;\n        }\n        subs.push(value\n            .map((s) => {\n            if (typeof s === 'number') {\n                return `_${s}`;\n            }\n            return serializeSubscription(s, getObjId);\n        })\n            .filter(isNotNullable));\n    }\n    assertEqual(subs.length, subsMap.size, 'missing subscriptions to serialize', subs, subsMap);\n    const convertedObjs = serializeObjects(objs, mustGetObjId, getObjId, collector, containerState);\n    const meta = {};\n    const refs = {};\n    // Write back to the dom\n    for (const ctx of allContexts) {\n        const node = ctx.$element$;\n        const elementID = ctx.$id$;\n        const ref = ctx.$refMap$;\n        const props = ctx.$props$;\n        const contexts = ctx.$contexts$;\n        const tasks = ctx.$tasks$;\n        const renderQrl = ctx.$componentQrl$;\n        const seq = ctx.$seq$;\n        const metaValue = {};\n        const elementCaptured = isVirtualElement(node) && collector.$elements$.includes(ctx);\n        assertDefined(elementID, `pause: can not generate ID for dom node`, node);\n        if (ref.length > 0) {\n            assertElement(node);\n            const value = mapJoin(ref, mustGetObjId, ' ');\n            if (value) {\n                refs[elementID] = value;\n            }\n        }\n        else if (canRender) {\n            let add = false;\n            if (elementCaptured) {\n                assertDefined(renderQrl, 'renderQrl must be defined');\n                const propsId = getObjId(props);\n                metaValue.h = mustGetObjId(renderQrl) + (propsId ? ' ' + propsId : '');\n                add = true;\n            }\n            else {\n                const propsId = getObjId(props);\n                if (propsId) {\n                    metaValue.h = ' ' + propsId;\n                    add = true;\n                }\n            }\n            if (tasks && tasks.length > 0) {\n                const value = mapJoin(tasks, getObjId, ' ');\n                if (value) {\n                    metaValue.w = value;\n                    add = true;\n                }\n            }\n            if (elementCaptured && seq && seq.length > 0) {\n                const value = mapJoin(seq, mustGetObjId, ' ');\n                metaValue.s = value;\n                add = true;\n            }\n            if (contexts) {\n                const serializedContexts = [];\n                contexts.forEach((value, key) => {\n                    const id = getObjId(value);\n                    if (id) {\n                        serializedContexts.push(`${key}=${id}`);\n                    }\n                });\n                const value = serializedContexts.join(' ');\n                if (value) {\n                    metaValue.c = value;\n                    add = true;\n                }\n            }\n            if (add) {\n                meta[elementID] = metaValue;\n            }\n        }\n    }\n    // Sanity check of serialized element\n    if (qDev) {\n        elementToIndex.forEach((value, el) => {\n            if (!value) {\n                logWarn('unconnected element', el.nodeName, '\\n');\n            }\n        });\n    }\n    return {\n        state: {\n            refs,\n            ctx: meta,\n            objs: convertedObjs,\n            subs,\n        },\n        objs,\n        funcs: collector.$inlinedFunctions$,\n        resources: collector.$resources$,\n        qrls: collector.$qrls$,\n        mode: canRender ? 'render' : 'listeners',\n    };\n};\nexport const mapJoin = (objects, getObjectId, sep) => {\n    let output = '';\n    for (const obj of objects) {\n        const id = getObjectId(obj);\n        if (id !== null) {\n            if (output !== '') {\n                output += sep;\n            }\n            output += id;\n        }\n    }\n    return output;\n};\nexport const getNodesInScope = (parent, predicate) => {\n    const results = [];\n    const v = predicate(parent);\n    if (v !== undefined) {\n        results.push(v);\n    }\n    const walker = parent.ownerDocument.createTreeWalker(parent, SHOW_ELEMENT | SHOW_COMMENT, {\n        acceptNode(node) {\n            if (isContainer(node)) {\n                return FILTER_REJECT;\n            }\n            const v = predicate(node);\n            if (v !== undefined) {\n                results.push(v);\n            }\n            return FILTER_SKIP;\n        },\n    });\n    while (walker.nextNode()) {\n        // do nothing\n    }\n    return results;\n};\n// Collect props proxy objects\nconst collectProps = (elCtx, collector) => {\n    const parentCtx = elCtx.$realParentCtx$ || elCtx.$parentCtx$;\n    const props = elCtx.$props$;\n    // Collect only if the parent (which changes the props) is part of the listener graph\n    if (parentCtx && props && !isEmptyObj(props) && collector.$elements$.includes(parentCtx)) {\n        const subs = getSubscriptionManager(props)?.$subs$;\n        const el = elCtx.$element$;\n        if (subs) {\n            for (const [type, host] of subs) {\n                if (type === 0) {\n                    if (host !== el) {\n                        collectSubscriptions(getSubscriptionManager(props), collector, false);\n                    }\n                    if (isNode(host)) {\n                        collectElement(host, collector);\n                    }\n                    else {\n                        collectValue(host, collector, true);\n                    }\n                }\n                else {\n                    collectValue(props, collector, false);\n                    collectSubscriptions(getSubscriptionManager(props), collector, false);\n                }\n            }\n        }\n    }\n};\nconst createCollector = (containerState) => {\n    const inlinedFunctions = [];\n    containerState.$inlineFns$.forEach((id, fnStr) => {\n        while (inlinedFunctions.length <= id) {\n            inlinedFunctions.push('');\n        }\n        inlinedFunctions[id] = fnStr;\n    });\n    return {\n        $containerState$: containerState,\n        $seen$: new Set(),\n        $objSet$: new Set(),\n        $prefetch$: 0,\n        $noSerialize$: [],\n        $inlinedFunctions$: inlinedFunctions,\n        $resources$: [],\n        $elements$: [],\n        $qrls$: [],\n        $deferElements$: [],\n        $promises$: [],\n    };\n};\nconst collectDeferElement = (el, collector) => {\n    const ctx = tryGetContext(el);\n    if (collector.$elements$.includes(ctx)) {\n        return;\n    }\n    collector.$elements$.push(ctx);\n    if (ctx.$flags$ & HOST_FLAG_DYNAMIC) {\n        collector.$prefetch$++;\n        collectElementData(ctx, collector, true);\n        collector.$prefetch$--;\n    }\n    else {\n        collector.$deferElements$.push(ctx);\n    }\n};\nconst collectElement = (el, collector) => {\n    const ctx = tryGetContext(el);\n    if (ctx) {\n        if (collector.$elements$.includes(ctx)) {\n            return;\n        }\n        collector.$elements$.push(ctx);\n        collectElementData(ctx, collector, el);\n    }\n};\nexport const collectElementData = (elCtx, collector, dynamicCtx) => {\n    if (elCtx.$props$ && !isEmptyObj(elCtx.$props$)) {\n        collectValue(elCtx.$props$, collector, dynamicCtx);\n        collectSubscriptions(getSubscriptionManager(elCtx.$props$), collector, dynamicCtx);\n    }\n    if (elCtx.$componentQrl$) {\n        collectValue(elCtx.$componentQrl$, collector, dynamicCtx);\n    }\n    if (elCtx.$seq$) {\n        for (const obj of elCtx.$seq$) {\n            collectValue(obj, collector, dynamicCtx);\n        }\n    }\n    if (elCtx.$tasks$) {\n        const map = collector.$containerState$.$subsManager$.$groupToManagers$;\n        for (const obj of elCtx.$tasks$) {\n            if (map.has(obj)) {\n                collectValue(obj, collector, dynamicCtx);\n            }\n        }\n    }\n    if (dynamicCtx === true) {\n        collectContext(elCtx, collector);\n        if (elCtx.$dynamicSlots$) {\n            for (const slotCtx of elCtx.$dynamicSlots$) {\n                collectContext(slotCtx, collector);\n            }\n        }\n    }\n};\nconst collectContext = (elCtx, collector) => {\n    while (elCtx) {\n        if (elCtx.$contexts$) {\n            for (const obj of elCtx.$contexts$.values()) {\n                collectValue(obj, collector, true);\n            }\n        }\n        elCtx = elCtx.$parentCtx$;\n    }\n};\nexport const escapeText = (str) => {\n    return str.replace(/<(\\/?script)/gi, '\\\\x3C$1');\n};\n// Collect all the subscribers of this manager\nexport const collectSubscriptions = (manager, collector, leaks) => {\n    // if (!leaks) {\n    //   return;\n    // }\n    if (collector.$seen$.has(manager)) {\n        return;\n    }\n    collector.$seen$.add(manager);\n    const subs = manager.$subs$;\n    assertDefined(subs, 'subs must be defined');\n    for (const sub of subs) {\n        const type = sub[0];\n        if (type > 0) {\n            collectValue(sub[2], collector, leaks);\n        }\n        if (leaks === true) {\n            const host = sub[1];\n            if (isNode(host) && isVirtualElement(host)) {\n                if (sub[0] === 0) {\n                    collectDeferElement(host, collector);\n                }\n            }\n            else {\n                collectValue(host, collector, true);\n            }\n        }\n    }\n};\nconst PROMISE_VALUE = Symbol();\nconst resolvePromise = (promise) => {\n    return promise.then((value) => {\n        const v = {\n            resolved: true,\n            value,\n        };\n        promise[PROMISE_VALUE] = v;\n        return value;\n    }, (value) => {\n        const v = {\n            resolved: false,\n            value,\n        };\n        promise[PROMISE_VALUE] = v;\n        return value;\n    });\n};\nconst getPromiseValue = (promise) => {\n    return promise[PROMISE_VALUE];\n};\nexport const collectValue = (obj, collector, leaks) => {\n    if (obj != null) {\n        const objType = typeof obj;\n        switch (objType) {\n            case 'function':\n            case 'object': {\n                if (collector.$seen$.has(obj)) {\n                    return;\n                }\n                collector.$seen$.add(obj);\n                if (fastSkipSerialize(obj)) {\n                    collector.$objSet$.add(undefined);\n                    collector.$noSerialize$.push(obj);\n                    return;\n                }\n                /** The possibly proxied `obj` */\n                const input = obj;\n                const target = getProxyTarget(obj);\n                if (target) {\n                    // `obj` is now the non-proxied object\n                    obj = target;\n                    // NOTE: You may be tempted to add the `target` to the `seen` set,\n                    // but that would not work as it is possible for the `target` object\n                    // to already be in `seen` set if it was passed in directly, so\n                    // we can't short circuit and need to do the work.\n                    // Issue: https://github.com/QwikDev/qwik/issues/5001\n                    const mutable = (getProxyFlags(obj) & QObjectImmutable) === 0;\n                    if (leaks && mutable) {\n                        collectSubscriptions(getSubscriptionManager(input), collector, leaks);\n                    }\n                    if (fastWeakSerialize(input)) {\n                        collector.$objSet$.add(obj);\n                        return;\n                    }\n                }\n                const collected = collectDeps(obj, collector, leaks);\n                if (collected) {\n                    collector.$objSet$.add(obj);\n                    return;\n                }\n                if (isPromise(obj)) {\n                    collector.$promises$.push(resolvePromise(obj).then((value) => {\n                        collectValue(value, collector, leaks);\n                    }));\n                    return;\n                }\n                if (objType === 'object') {\n                    if (isNode(obj)) {\n                        return;\n                    }\n                    if (isArray(obj)) {\n                        for (let i = 0; i < obj.length; i++) {\n                            collectValue(input[i], collector, leaks);\n                        }\n                    }\n                    else if (isSerializableObject(obj)) {\n                        for (const key in obj) {\n                            collectValue(input[key], collector, leaks);\n                        }\n                    }\n                }\n                break;\n            }\n        }\n    }\n    collector.$objSet$.add(obj);\n};\nexport const isContainer = (el) => {\n    return isElement(el) && el.hasAttribute(QContainerAttr);\n};\nconst hasContext = (el) => {\n    const node = processVirtualNodes(el);\n    if (isQwikElement(node)) {\n        const ctx = tryGetContext(node);\n        if (ctx && ctx.$id$) {\n            return ctx;\n        }\n    }\n    return undefined;\n};\nconst getManager = (obj, containerState) => {\n    if (!isObject(obj)) {\n        return undefined;\n    }\n    if (obj instanceof SignalImpl) {\n        return getSubscriptionManager(obj);\n    }\n    const proxy = containerState.$proxyMap$.get(obj);\n    if (proxy) {\n        return getSubscriptionManager(proxy);\n    }\n    return undefined;\n};\nconst getQId = (el) => {\n    const ctx = tryGetContext(el);\n    if (ctx) {\n        return ctx.$id$;\n    }\n    return null;\n};\nconst getTextID = (node, containerState) => {\n    const prev = node.previousSibling;\n    if (prev && isComment(prev)) {\n        if (prev.data.startsWith('t=')) {\n            return ELEMENT_ID_PREFIX + prev.data.slice(2);\n        }\n    }\n    const doc = node.ownerDocument;\n    const id = intToStr(containerState.$elementIndex$++);\n    const open = doc.createComment(`t=${id}`);\n    const close = doc.createComment('');\n    const parent = node.parentElement;\n    parent.insertBefore(open, node);\n    parent.insertBefore(close, node.nextSibling);\n    return ELEMENT_ID_PREFIX + id;\n};\nconst isEmptyObj = (obj) => {\n    return Object.keys(obj).length === 0;\n};\nfunction serializeObjects(objs, mustGetObjId, getObjId, collector, containerState) {\n    return objs.map((obj) => {\n        if (obj === null) {\n            return null;\n        }\n        const typeObj = typeof obj;\n        switch (typeObj) {\n            case 'undefined':\n                return UNDEFINED_PREFIX;\n            case 'number':\n                if (!Number.isFinite(obj)) {\n                    break;\n                }\n                return obj;\n            case 'string':\n                if (obj.charCodeAt(0) < 32 /* space */) {\n                    // if strings starts with a special character let the string serializer handle it\n                    // to deal with escape sequences.\n                    break;\n                }\n                else {\n                    // Fast path of just serializing the string.\n                    return obj;\n                }\n            case 'boolean':\n                return obj;\n        }\n        const value = serializeValue(obj, mustGetObjId, collector, containerState);\n        if (value !== undefined) {\n            return value;\n        }\n        if (typeObj === 'object') {\n            if (isArray(obj)) {\n                return obj.map(mustGetObjId);\n            }\n            if (isSerializableObject(obj)) {\n                const output = {};\n                for (const key in obj) {\n                    if (getObjId) {\n                        const id = getObjId(obj[key]);\n                        if (id !== null) {\n                            output[key] = id;\n                        }\n                    }\n                    else {\n                        output[key] = mustGetObjId(obj[key]);\n                    }\n                }\n                return output;\n            }\n        }\n        throw qError(QError_verifySerializable, obj);\n    });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF1c2UuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvY29udGFpbmVyL3BhdXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxFQUNULE1BQU0sRUFDTixhQUFhLEVBQ2IsTUFBTSxFQUNOLGdCQUFnQixHQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVwQyxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDekIsTUFBTSxHQUNQLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxPQUFPLEVBQ0wsbUJBQW1CLEdBR3BCLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUUsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixjQUFjLEVBQ2Qsc0JBQXNCLEVBQ3RCLFdBQVcsRUFDWCxxQkFBcUIsR0FHdEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0Is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RSxDQUFDO1lBQ3pCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvQixDQUFDO1lBQ0QsSUFBSSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5QixNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO2dCQUN2QyxLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUN0QixJQUFJLFFBQVEsRUFBRSxDQUFDO3dCQUNiLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDOUIsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7NEJBQ2hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ25CLENBQUM7b0JBQ0gsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZDLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sTUFBTSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydERlZmluZWQsIGFzc2VydEVsZW1lbnQsIGFzc2VydEVxdWFsIH0gZnJvbSAnLi4vZXJyb3IvYXNzZXJ0JztcbmltcG9ydCB7IGdldERvY3VtZW50IH0gZnJvbSAnLi4vdXRpbC9kb20nO1xuaW1wb3J0IHtcbiAgaXNDb21tZW50LFxuICBpc0RvY3VtZW50LFxuICBpc0VsZW1lbnQsXG4gIGlzTm9kZSxcbiAgaXNRd2lrRWxlbWVudCxcbiAgaXNUZXh0LFxuICBpc1ZpcnR1YWxFbGVtZW50LFxufSBmcm9tICcuLi91dGlsL2VsZW1lbnQnO1xuaW1wb3J0IHsgbG9nV2FybiB9IGZyb20gJy4uL3V0aWwvbG9nJztcbmltcG9ydCB7IEVMRU1FTlRfSUQsIEVMRU1FTlRfSURfUFJFRklYLCBRQ29udGFpbmVyQXR0ciwgUVNjb3BlZFN0eWxlIH0gZnJvbSAnLi4vdXRpbC9tYXJrZXJzJztcbmltcG9ydCB7IHFEZXYgfSBmcm9tICcuLi91dGlsL3FkZXYnO1xuXG5pbXBvcnQge1xuICBRRXJyb3JfY29udGFpbmVyQWxyZWFkeVBhdXNlZCxcbiAgUUVycm9yX21pc3NpbmdPYmplY3RJZCxcbiAgUUVycm9yX3ZlcmlmeVNlcmlhbGl6YWJsZSxcbiAgcUVycm9yLFxufSBmcm9tICcuLi9lcnJvci9lcnJvcic7XG5pbXBvcnQgeyBzZXJpYWxpemVRUkxzIH0gZnJvbSAnLi4vcXJsL3FybCc7XG5pbXBvcnQgdHlwZSB7IFFSTCB9IGZyb20gJy4uL3FybC9xcmwucHVibGljJztcbmltcG9ydCB7XG4gIHByb2Nlc3NWaXJ0dWFsTm9kZXMsXG4gIHR5cGUgUXdpa0VsZW1lbnQsXG4gIHR5cGUgVmlydHVhbEVsZW1lbnQsXG59IGZyb20gJy4uL3JlbmRlci9kb20vdmlydHVhbC1lbGVtZW50JztcbmltcG9ydCB7IGRpcmVjdEdldEF0dHJpYnV0ZSwgZGlyZWN0U2V0QXR0cmlidXRlIH0gZnJvbSAnLi4vcmVuZGVyL2Zhc3QtY2FsbHMnO1xuaW1wb3J0IHtcbiAgTG9jYWxTdWJzY3JpcHRpb25NYW5hZ2VyLFxuICBmYXN0U2tpcFNlcmlhbGl6ZSxcbiAgZmFzdFdlYWtTZXJpYWxpemUsXG4gIGdldFByb3h5RmxhZ3MsXG4gIGdldFByb3h5VGFyZ2V0LFxuICBnZXRTdWJzY3JpcHRpb25NYW5hZ2VyLFxuICBpc0Nvbm5lY3RlZCxcbiAgc2VyaWFsaXplU3Vic2NyaXB0aW9uLFxuICB0eXBlIFN1YnNjcmlwdGlvbnMsXG4gIHR5cGUgU3Vic2NyaWJlclNpZ25hbCxcbn0gZnJvbSAnLi4vc3RhdGUvY29tbW9uJztcbmltcG9ydCB7IFFPYmplY3RJbW11dGFibGUsIFFPYmplY3RSZWN1cnNpdmUgfSBmcm9tICcuLi9zdGF0ZS9jb25zdGFudHMnO1xuaW1wb3J0IHsgSE9TVF9GTEFHX0RZTkFNSUMsIHRyeUdldENvbnRleHQsIHR5cGUgUUNvbnRleHQgfSBmcm9tICcuLi9zdGF0ZS9jb250ZXh0JztcbmltcG9ydCB7IGdyb3VwTGlzdGVuZXJzIH0gZnJvbSAnLi4vc3RhdGUvbGlzdGVuZXJzJztcbmltcG9ydCB7IFNpZ25hbEltcGwgfSBmcm9tICcuLi9zdGF0ZS9zaWduYWwnO1xuaW1wb3J0IHsgc2VyaWFsaXplU1N0eWxlIH0gZnJvbSAnLi4vc3R5bGUvcXJsLXN0eWxlcyc7XG5pbXBvcnQge1xuICBUYXNrRmxhZ3NJc0RpcnR5LFxuICBkZXN0cm95VGFzayxcbiAgaXNSZXNvdXJjZVRhc2ssXG4gIHR5cGUgUmVzb3VyY2VSZXR1cm5JbnRlcm5hbCxcbn0gZnJvbSAnLi4vdXNlL3VzZS10YXNrJztcbmltcG9ydCB7IGlzTm90TnVsbGFibGUsIGlzUHJvbWlzZSB9IGZyb20gJy4uL3V0aWwvcHJvbWlzZXMnO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNPYmplY3QsIGlzU2VyaWFsaXphYmxlT2JqZWN0IH0gZnJvbSAnLi4vdXRpbC90eXBlcyc7XG5pbXBvcnQge1xuICBGSUxURVJfUkVKRUNULFxuICBGSUxURVJfU0tJUCxcbiAgU0hPV19DT01NRU5ULFxuICBTSE9XX0VMRU1FTlQsXG4gIF9nZXRDb250YWluZXJTdGF0ZSxcbiAgaW50VG9TdHIsXG4gIHR5cGUgQ29udGFpbmVyU3RhdGUsXG4gIHR5cGUgR2V0T2JqSUQsXG4gIHR5cGUgU25hcHNob3RNZXRhLFxuICB0eXBlIFNuYXBzaG90TWV0YVZhbHVlLFxuICB0eXBlIFNuYXBzaG90UmVzdWx0LFxuICBjcmVhdGVDb250YWluZXJTdGF0ZSxcbn0gZnJvbSAnLi9jb250YWluZXInO1xuaW1wb3J0IHsgVU5ERUZJTkVEX1BSRUZJWCwgY29sbGVjdERlcHMsIHNlcmlhbGl6ZVZhbHVlIH0gZnJvbSAnLi9zZXJpYWxpemVycyc7XG5pbXBvcnQgeyBpc1FybCB9IGZyb20gJy4uL3FybC9xcmwtY2xhc3MnO1xuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgY29uc3QgX3NlcmlhbGl6ZURhdGEgPSBhc3luYyAoZGF0YTogYW55LCBwdXJlUVJMPzogYm9vbGVhbikgPT4ge1xuICBjb25zdCBjb250YWluZXJTdGF0ZSA9IGNyZWF0ZUNvbnRhaW5lclN0YXRlKG51bGwhLCBudWxsISk7XG4gIGNvbnN0IGNvbGxlY3RvciA9IGNyZWF0ZUNvbGxlY3Rvcihjb250YWluZXJTdGF0ZSk7XG4gIGNvbGxlY3RWYWx1ZShkYXRhLCBjb2xsZWN0b3IsIGZhbHNlKTtcblxuICAvLyBXYWl0IGZvciByZW1haW5pbmcgcHJvbWlzZXNcbiAgbGV0IHByb21pc2VzOiBQcm9taXNlPGFueT5bXTtcbiAgd2hpbGUgKChwcm9taXNlcyA9IGNvbGxlY3Rvci4kcHJvbWlzZXMkKS5sZW5ndGggPiAwKSB7XG4gICAgY29sbGVjdG9yLiRwcm9taXNlcyQgPSBbXTtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHByb21pc2VzKTtcbiAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzKSB7XG4gICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ3JlamVjdGVkJykge1xuICAgICAgICBjb25zb2xlLmVycm9yKHJlc3VsdC5yZWFzb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9ianMgPSBBcnJheS5mcm9tKGNvbGxlY3Rvci4kb2JqU2V0JC5rZXlzKCkpO1xuICBsZXQgY291bnQgPSAwO1xuXG4gIGNvbnN0IG9ialRvSWQgPSBuZXcgTWFwPGFueSwgc3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IG9iaiBvZiBvYmpzKSB7XG4gICAgb2JqVG9JZC5zZXQob2JqLCBpbnRUb1N0cihjb3VudCkpO1xuICAgIGNvdW50Kys7XG4gIH1cbiAgaWYgKGNvbGxlY3Rvci4kbm9TZXJpYWxpemUkLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCB1bmRlZmluZWRJRCA9IG9ialRvSWQuZ2V0KHVuZGVmaW5lZCk7XG4gICAgYXNzZXJ0RGVmaW5lZCh1bmRlZmluZWRJRCwgJ3VuZGVmaW5lZCBJRCBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICBmb3IgKGNvbnN0IG9iaiBvZiBjb2xsZWN0b3IuJG5vU2VyaWFsaXplJCkge1xuICAgICAgb2JqVG9JZC5zZXQob2JqLCB1bmRlZmluZWRJRCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbXVzdEdldE9iaklkID0gKG9iajogYW55KTogc3RyaW5nID0+IHtcbiAgICBsZXQgc3VmZml4ID0gJyc7XG4gICAgaWYgKGlzUHJvbWlzZShvYmopKSB7XG4gICAgICBjb25zdCBwcm9taXNlVmFsdWUgPSBnZXRQcm9taXNlVmFsdWUob2JqKTtcbiAgICAgIGlmICghcHJvbWlzZVZhbHVlKSB7XG4gICAgICAgIHRocm93IHFFcnJvcihRRXJyb3JfbWlzc2luZ09iamVjdElkLCBvYmopO1xuICAgICAgfVxuICAgICAgb2JqID0gcHJvbWlzZVZhbHVlLnZhbHVlO1xuICAgICAgaWYgKHByb21pc2VWYWx1ZS5yZXNvbHZlZCkge1xuICAgICAgICBzdWZmaXggKz0gJ34nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VmZml4ICs9ICdfJztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0KG9iaikpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGdldFByb3h5VGFyZ2V0KG9iaik7XG4gICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgIHN1ZmZpeCArPSAnISc7XG4gICAgICAgIG9iaiA9IHRhcmdldDtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qga2V5ID0gb2JqVG9JZC5nZXQob2JqKTtcbiAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IHFFcnJvcihRRXJyb3JfbWlzc2luZ09iamVjdElkLCBvYmopO1xuICAgIH1cbiAgICByZXR1cm4ga2V5ICsgc3VmZml4O1xuICB9O1xuXG4gIGNvbnN0IGNvbnZlcnRlZE9ianMgPSBzZXJpYWxpemVPYmplY3RzKG9ianMsIG11c3RHZXRPYmpJZCwgbnVsbCwgY29sbGVjdG9yLCBjb250YWluZXJTdGF0ZSk7XG5cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICBfZW50cnk6IG11c3RHZXRPYmpJZChkYXRhKSxcbiAgICBfb2JqczogY29udmVydGVkT2JqcyxcbiAgfSk7XG59O1xuXG4vLyA8ZG9jcyBtYXJrZG93bj1cIi4uL3JlYWRtZS5tZCNwYXVzZUNvbnRhaW5lclwiPlxuLy8gISFETyBOT1QgRURJVCBUSElTIENPTU1FTlQgRElSRUNUTFkhISFcbi8vIChlZGl0IC4uL3JlYWRtZS5tZCNwYXVzZUNvbnRhaW5lciBpbnN0ZWFkKVxuLy8gPC9kb2NzPlxuLyoqIFRoaXMgcGF1c2VzIGEgcnVubmluZyBjb250YWluZXIgaW4gdGhlIGJyb3dzZXIuIEl0IGlzIG5vdCB1c2VkIGZvciBTU1IgKi9cbi8vIFRPRE8obWhldmVyeSk6IHRoaXMgaXMgYSByZW1uYW50IHdoZW4geW91IGNvdWxkIGhhdmUgcGF1c2VkIG9uIGNsaWVudC4gU2hvdWxkIGJlIGRlbGV0ZWQuXG5leHBvcnQgY29uc3QgcGF1c2VDb250YWluZXIgPSBhc3luYyAoXG4gIGVsbU9yRG9jOiBFbGVtZW50IHwgRG9jdW1lbnQsXG4gIGRlZmF1bHRQYXJlbnRKU09OPzogRWxlbWVudFxuKTogUHJvbWlzZTxTbmFwc2hvdFJlc3VsdD4gPT4ge1xuICBjb25zdCBkb2MgPSBnZXREb2N1bWVudChlbG1PckRvYyk7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGRvYy5kb2N1bWVudEVsZW1lbnQ7XG4gIGNvbnN0IGNvbnRhaW5lckVsID0gaXNEb2N1bWVudChlbG1PckRvYykgPyBkb2N1bWVudEVsZW1lbnQgOiBlbG1PckRvYztcbiAgaWYgKGRpcmVjdEdldEF0dHJpYnV0ZShjb250YWluZXJFbCwgUUNvbnRhaW5lckF0dHIpID09PSAncGF1c2VkJykge1xuICAgIHRocm93IHFFcnJvcihRRXJyb3JfY29udGFpbmVyQWxyZWFkeVBhdXNlZCk7XG4gIH1cbiAgY29uc3QgcGFyZW50SlNPTiA9XG4gICAgZGVmYXVsdFBhcmVudEpTT04gPz8gKGNvbnRhaW5lckVsID09PSBkb2MuZG9jdW1lbnRFbGVtZW50ID8gZG9jLmJvZHkgOiBjb250YWluZXJFbCk7XG5cbiAgY29uc3QgY29udGFpbmVyU3RhdGUgPSBfZ2V0Q29udGFpbmVyU3RhdGUoY29udGFpbmVyRWwpO1xuICBjb25zdCBjb250ZXh0cyA9IGdldE5vZGVzSW5TY29wZShjb250YWluZXJFbCwgaGFzQ29udGV4dCk7XG5cbiAgLy8gU2V0IGNvbnRhaW5lciB0byBwYXVzZWRcbiAgZGlyZWN0U2V0QXR0cmlidXRlKGNvbnRhaW5lckVsLCBRQ29udGFpbmVyQXR0ciwgJ3BhdXNlZCcpO1xuXG4gIC8vIFVwZGF0ZSBlbGVtZW50cyB3aXRoIGNvbnRleHRcbiAgZm9yIChjb25zdCBlbEN0eCBvZiBjb250ZXh0cykge1xuICAgIGNvbnN0IGVsbSA9IGVsQ3R4LiRlbGVtZW50JDtcbiAgICBjb25zdCBsaXN0ZW5lcnMgPSBlbEN0eC5saTtcbiAgICBpZiAoZWxDdHguJHNjb3BlSWRzJCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBzZXJpYWxpemVTU3R5bGUoZWxDdHguJHNjb3BlSWRzJCk7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgZWxtLnNldEF0dHJpYnV0ZShRU2NvcGVkU3R5bGUsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVsQ3R4LiRpZCQpIHtcbiAgICAgIGVsbS5zZXRBdHRyaWJ1dGUoRUxFTUVOVF9JRCwgZWxDdHguJGlkJCk7XG4gICAgfVxuICAgIGlmIChpc0VsZW1lbnQoZWxtKSAmJiBsaXN0ZW5lcnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZ3JvdXBzID0gZ3JvdXBMaXN0ZW5lcnMobGlzdGVuZXJzKTtcbiAgICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgZ3JvdXBzKSB7XG4gICAgICAgIGVsbS5zZXRBdHRyaWJ1dGUobGlzdGVuZXJbMF0sIHNlcmlhbGl6ZVFSTHMobGlzdGVuZXJbMV0sIGNvbnRhaW5lclN0YXRlLCBlbEN0eCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNlcmlhbGl6ZSBkYXRhXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBfcGF1c2VGcm9tQ29udGV4dHMoY29udGV4dHMsIGNvbnRhaW5lclN0YXRlLCAoZWwpID0+IHtcbiAgICBpZiAoaXNOb2RlKGVsKSAmJiBpc1RleHQoZWwpKSB7XG4gICAgICByZXR1cm4gZ2V0VGV4dElEKGVsLCBjb250YWluZXJTdGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9KTtcblxuICAvLyBFbWl0IFF3aWsgSlNPTlxuICBjb25zdCBxd2lrSnNvbiA9IGRvYy5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgZGlyZWN0U2V0QXR0cmlidXRlKHF3aWtKc29uLCAndHlwZScsICdxd2lrL2pzb24nKTtcbiAgcXdpa0pzb24udGV4dENvbnRlbnQgPSBlc2NhcGVUZXh0KEpTT04uc3RyaW5naWZ5KGRhdGEuc3RhdGUsIHVuZGVmaW5lZCwgcURldiA/ICcgICcgOiB1bmRlZmluZWQpKTtcbiAgcGFyZW50SlNPTi5hcHBlbmRDaGlsZChxd2lrSnNvbik7XG5cbiAgLy8gRW1pdCBldmVudCByZWdpc3RyYXRpb25cbiAgY29uc3QgZXh0cmFMaXN0ZW5lcnMgPSBBcnJheS5mcm9tKGNvbnRhaW5lclN0YXRlLiRldmVudHMkLCAocykgPT4gSlNPTi5zdHJpbmdpZnkocykpO1xuICBjb25zdCBldmVudHNTY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gIGV2ZW50c1NjcmlwdC50ZXh0Q29udGVudCA9IGAod2luZG93LnF3aWtldmVudHN8fD1bXSkucHVzaCgke2V4dHJhTGlzdGVuZXJzLmpvaW4oJywgJyl9KWA7XG4gIHBhcmVudEpTT04uYXBwZW5kQ2hpbGQoZXZlbnRzU2NyaXB0KTtcblxuICByZXR1cm4gZGF0YTtcbn07XG5cbi8qKlxuICogR3JhYiBhbGwgc3RhdGUgbmVlZGVkIHRvIHJlc3VtZSB0aGUgY29udGFpbmVyIGxhdGVyLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgX3BhdXNlRnJvbUNvbnRleHRzID0gYXN5bmMgKFxuICBhbGxDb250ZXh0czogUUNvbnRleHRbXSxcbiAgY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlLFxuICBmYWxsYmFja0dldE9iaklkPzogR2V0T2JqSUQsXG4gIHRleHROb2Rlcz86IE1hcDxzdHJpbmcsIHN0cmluZz5cbik6IFByb21pc2U8U25hcHNob3RSZXN1bHQ+ID0+IHtcbiAgY29uc3QgY29sbGVjdG9yID0gY3JlYXRlQ29sbGVjdG9yKGNvbnRhaW5lclN0YXRlKTtcbiAgdGV4dE5vZGVzPy5mb3JFYWNoKChfLCBrZXkpID0+IHtcbiAgICBjb2xsZWN0b3IuJHNlZW4kLmFkZChrZXkpO1xuICB9KTtcbiAgbGV0IGhhc0xpc3RlbmVycyA9IGZhbHNlO1xuXG4gIC8vIENvbGxlY3QgcmVzb3VyY2VzXG4gIC8vIFRPRE86IG9wdGltaXplXG4gIGZvciAoY29uc3QgY3R4IG9mIGFsbENvbnRleHRzKSB7XG4gICAgaWYgKGN0eC4kdGFza3MkKSB7XG4gICAgICBmb3IgKGNvbnN0IHRhc2sgb2YgY3R4LiR0YXNrcyQpIHtcbiAgICAgICAgaWYgKHFEZXYpIHtcbiAgICAgICAgICBpZiAodGFzay4kZmxhZ3MkICYgVGFza0ZsYWdzSXNEaXJ0eSkge1xuICAgICAgICAgICAgbG9nV2FybihcbiAgICAgICAgICAgICAgYFNlcmlhbGl6aW5nIGRpcnR5IHRhc2suIExvb2tzIGxpa2UgYW4gaW50ZXJuYWwgZXJyb3IuIFxuVGFzayBTeW1ib2w6ICR7dGFzay4kcXJsJC4kc3ltYm9sJH1cbmBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghaXNDb25uZWN0ZWQodGFzaykpIHtcbiAgICAgICAgICAgIGxvZ1dhcm4oJ1NlcmlhbGl6aW5nIGRpc2Nvbm5lY3RlZCB0YXNrLiBMb29rcyBsaWtlIGFuIGludGVybmFsIGVycm9yLicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNSZXNvdXJjZVRhc2sodGFzaykpIHtcbiAgICAgICAgICBjb2xsZWN0b3IuJHJlc291cmNlcyQucHVzaCh0YXNrLiRzdGF0ZSQhKTtcbiAgICAgICAgfVxuICAgICAgICBkZXN0cm95VGFzayh0YXNrKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGaW5kIGFsbCBsaXN0ZW5lcnMuIFRoZXkgYXJlIHRoZSBcImVudHJpZXNcIiBmb3IgcmVzdW1pbmcgdGhlIGNvbnRhaW5lci5cbiAgLy8gQW55IGxleGljYWwgc2NvcGUgdGhleSByZWZlcmVuY2UgbXVzdCBiZSBzZXJpYWxpemVkLlxuICBmb3IgKGNvbnN0IGN0eCBvZiBhbGxDb250ZXh0cykge1xuICAgIGNvbnN0IGVsID0gY3R4LiRlbGVtZW50JDtcbiAgICBjb25zdCBjdHhMaXN0ZW5lcnMgPSBjdHgubGk7XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBjdHhMaXN0ZW5lcnMpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQoZWwpKSB7XG4gICAgICAgIGNvbnN0IHFybCA9IGxpc3RlbmVyWzFdO1xuICAgICAgICBjb25zdCBjYXB0dXJlZCA9IHFybC4kY2FwdHVyZVJlZiQ7XG4gICAgICAgIGlmIChjYXB0dXJlZCkge1xuICAgICAgICAgIGZvciAoY29uc3Qgb2JqIG9mIGNhcHR1cmVkKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbGxlY3QgdGhlIGxleGljYWwgc2NvcGUgdXNlZCBieSB0aGUgbGlzdGVuZXIuIFRoaXMgYWxzbyBjb2xsZWN0cyBhbGwgdGhlXG4gICAgICAgICAgICAgKiBzdWJzY3JpYmVycyBvZiBhbnkgcmVhY3RpdmUgc3RhdGUgaW4gc2NvcGUsIHNpbmNlIHRoZSBsaXN0ZW5lciBtaWdodCBjaGFuZ2UgdGhhdFxuICAgICAgICAgICAgICogc3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29sbGVjdFZhbHVlKG9iaiwgY29sbGVjdG9yLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29sbGVjdG9yLiRxcmxzJC5wdXNoKHFybCk7XG4gICAgICAgIGhhc0xpc3RlbmVycyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTm8gbGlzdGVuZXJzIGltcGxpZXMgc3RhdGljIHBhZ2VcbiAgaWYgKCFoYXNMaXN0ZW5lcnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHtcbiAgICAgICAgcmVmczoge30sXG4gICAgICAgIGN0eDoge30sXG4gICAgICAgIG9ianM6IFtdLFxuICAgICAgICBzdWJzOiBbXSxcbiAgICAgIH0sXG4gICAgICBvYmpzOiBbXSxcbiAgICAgIGZ1bmNzOiBbXSxcbiAgICAgIHFybHM6IFtdLFxuICAgICAgcmVzb3VyY2VzOiBjb2xsZWN0b3IuJHJlc291cmNlcyQsXG4gICAgICBtb2RlOiAnc3RhdGljJyxcbiAgICB9O1xuICB9XG5cbiAgLy8gV2FpdCBmb3IgcmVtYWluaW5nIHByb21pc2VzXG4gIGxldCBwcm9taXNlczogUHJvbWlzZTxhbnk+W107XG4gIHdoaWxlICgocHJvbWlzZXMgPSBjb2xsZWN0b3IuJHByb21pc2VzJCkubGVuZ3RoID4gMCkge1xuICAgIGNvbGxlY3Rvci4kcHJvbWlzZXMkID0gW107XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICB9XG5cbiAgLy8gSWYgYXQgdGhpcyBwb2ludCBhbnkgY29tcG9uZW50IGNhbiByZW5kZXIsIHdlIG5lZWQgdG8gY2FwdHVyZSBDb250ZXh0IGFuZCBQcm9wc1xuICBjb25zdCBjYW5SZW5kZXIgPSBjb2xsZWN0b3IuJGVsZW1lbnRzJC5sZW5ndGggPiAwO1xuICBpZiAoY2FuUmVuZGVyKSB7XG4gICAgZm9yIChjb25zdCBlbEN0eCBvZiBjb2xsZWN0b3IuJGRlZmVyRWxlbWVudHMkKSB7XG4gICAgICBjb2xsZWN0RWxlbWVudERhdGEoZWxDdHgsIGNvbGxlY3RvciwgZWxDdHguJGVsZW1lbnQkKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGN0eCBvZiBhbGxDb250ZXh0cykge1xuICAgICAgY29sbGVjdFByb3BzKGN0eCwgY29sbGVjdG9yKTtcbiAgICB9XG4gIH1cblxuICAvLyBXYWl0IGZvciByZW1haW5pbmcgcHJvbWlzZXNcbiAgd2hpbGUgKChwcm9taXNlcyA9IGNvbGxlY3Rvci4kcHJvbWlzZXMkKS5sZW5ndGggPiAwKSB7XG4gICAgY29sbGVjdG9yLiRwcm9taXNlcyQgPSBbXTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gIH1cblxuICAvLyBDb252ZXJ0IG9ialNldCB0byBhcnJheVxuICBjb25zdCBlbGVtZW50VG9JbmRleCA9IG5ldyBNYXA8Tm9kZSB8IFF3aWtFbGVtZW50LCBzdHJpbmcgfCBudWxsPigpO1xuICBjb25zdCBvYmpzID0gQXJyYXkuZnJvbShjb2xsZWN0b3IuJG9ialNldCQua2V5cygpKTtcbiAgY29uc3Qgb2JqVG9JZCA9IG5ldyBNYXA8YW55LCBzdHJpbmc+KCk7XG5cbiAgY29uc3QgZ2V0RWxlbWVudElEID0gKGVsOiBRd2lrRWxlbWVudCk6IHN0cmluZyB8IG51bGwgPT4ge1xuICAgIGxldCBpZCA9IGVsZW1lbnRUb0luZGV4LmdldChlbCk7XG4gICAgaWYgKGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlkID0gZ2V0UUlkKGVsKTtcbiAgICAgIGlmICghaWQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdNaXNzaW5nIElEJywgZWwpO1xuICAgICAgfVxuICAgICAgZWxlbWVudFRvSW5kZXguc2V0KGVsLCBpZCk7XG4gICAgfVxuICAgIHJldHVybiBpZDtcbiAgfTtcblxuICBjb25zdCBnZXRPYmpJZDogR2V0T2JqSUQgPSAob2JqKSA9PiB7XG4gICAgbGV0IHN1ZmZpeCA9ICcnO1xuICAgIGlmIChpc1Byb21pc2Uob2JqKSkge1xuICAgICAgY29uc3QgcHJvbWlzZVZhbHVlID0gZ2V0UHJvbWlzZVZhbHVlKG9iaik7XG4gICAgICBpZiAoIXByb21pc2VWYWx1ZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIG9iaiA9IHByb21pc2VWYWx1ZS52YWx1ZTtcbiAgICAgIGlmIChwcm9taXNlVmFsdWUucmVzb2x2ZWQpIHtcbiAgICAgICAgc3VmZml4ICs9ICd+JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1ZmZpeCArPSAnXyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzT2JqZWN0KG9iaikpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGdldFByb3h5VGFyZ2V0KG9iaik7XG4gICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgIHN1ZmZpeCArPSAnISc7XG4gICAgICAgIG9iaiA9IHRhcmdldDtcbiAgICAgIH0gZWxzZSBpZiAoaXNRd2lrRWxlbWVudChvYmopKSB7XG4gICAgICAgIGNvbnN0IGVsSUQgPSBnZXRFbGVtZW50SUQob2JqKTtcbiAgICAgICAgaWYgKGVsSUQpIHtcbiAgICAgICAgICByZXR1cm4gRUxFTUVOVF9JRF9QUkVGSVggKyBlbElEICsgc3VmZml4O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBpZCA9IG9ialRvSWQuZ2V0KG9iaik7XG4gICAgaWYgKGlkKSB7XG4gICAgICByZXR1cm4gaWQgKyBzdWZmaXg7XG4gICAgfVxuICAgIGNvbnN0IHRleHRJZCA9IHRleHROb2Rlcz8uZ2V0KG9iaik7XG4gICAgaWYgKHRleHRJZCkge1xuICAgICAgcmV0dXJuICcqJyArIHRleHRJZDtcbiAgICB9XG4gICAgaWYgKGZhbGxiYWNrR2V0T2JqSWQpIHtcbiAgICAgIHJldHVybiBmYWxsYmFja0dldE9iaklkKG9iaik7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGNvbnN0IG11c3RHZXRPYmpJZCA9IChvYmo6IGFueSk6IHN0cmluZyA9PiB7XG4gICAgY29uc3Qga2V5ID0gZ2V0T2JqSWQob2JqKTtcbiAgICBpZiAoa2V5ID09PSBudWxsKSB7XG4gICAgICAvLyBUT0RPKG1oZXZlcnkpOiB0aGlzIGlzIGEgaGFjayBhcyB3ZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUuXG4gICAgICAvLyBUaGlzIGFzIGEgd29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL1F3aWtEZXYvcXdpay9pc3N1ZXMvNDk3OVxuICAgICAgaWYgKGlzUXJsKG9iaikpIHtcbiAgICAgICAgY29uc3QgaWQgPSBpbnRUb1N0cihvYmpUb0lkLnNpemUpO1xuICAgICAgICBvYmpUb0lkLnNldChvYmosIGlkKTtcbiAgICAgICAgcmV0dXJuIGlkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgcUVycm9yKFFFcnJvcl9taXNzaW5nT2JqZWN0SWQsIG9iaik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBrZXk7XG4gIH07XG5cbiAgLy8gQ29tcHV0ZSBzdWJzY3JpcHRpb25zXG4gIGNvbnN0IHN1YnNNYXAgPSBuZXcgTWFwPGFueSwgKFN1YnNjcmlwdGlvbnMgfCBudW1iZXIpW10+KCk7XG4gIGZvciAoY29uc3Qgb2JqIG9mIG9ianMpIHtcbiAgICBjb25zdCBzdWJzID0gZ2V0TWFuYWdlcihvYmosIGNvbnRhaW5lclN0YXRlKT8uJHN1YnMkO1xuICAgIGlmICghc3Vicykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGZsYWdzID0gZ2V0UHJveHlGbGFncyhvYmopID8/IDA7XG4gICAgY29uc3QgY29udmVydGVkOiAoU3Vic2NyaXB0aW9ucyB8IG51bWJlcilbXSA9IFtdO1xuICAgIGlmIChmbGFncyAmIFFPYmplY3RSZWN1cnNpdmUpIHtcbiAgICAgIGNvbnZlcnRlZC5wdXNoKGZsYWdzKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBzdWIgb2Ygc3Vicykge1xuICAgICAgY29uc3QgaG9zdCA9IHN1YlsxXTtcbiAgICAgIGlmIChzdWJbMF0gPT09IDAgJiYgaXNOb2RlKGhvc3QpICYmIGlzVmlydHVhbEVsZW1lbnQoaG9zdCkpIHtcbiAgICAgICAgaWYgKCFjb2xsZWN0b3IuJGVsZW1lbnRzJC5pbmNsdWRlcyh0cnlHZXRDb250ZXh0KGhvc3QpISkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29udmVydGVkLnB1c2goc3ViKTtcbiAgICB9XG4gICAgaWYgKGNvbnZlcnRlZC5sZW5ndGggPiAwKSB7XG4gICAgICBzdWJzTWFwLnNldChvYmosIGNvbnZlcnRlZCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU29ydCBvYmplY3RzOiB0aGUgb25lcyB3aXRoIHN1YnNjcmlwdGlvbnMgZ28gZmlyc3RcbiAgb2Jqcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgY29uc3QgaXNQcm94eUEgPSBzdWJzTWFwLmhhcyhhKSA/IDAgOiAxO1xuICAgIGNvbnN0IGlzUHJveHlCID0gc3Vic01hcC5oYXMoYikgPyAwIDogMTtcbiAgICByZXR1cm4gaXNQcm94eUEgLSBpc1Byb3h5QjtcbiAgfSk7XG5cbiAgLy8gR2VuZXJhdGUgb2JqZWN0IElEIGJ5IHVzaW5nIGEgbW9ub3RvbmljIGNvdW50ZXJcbiAgbGV0IGNvdW50ID0gMDtcbiAgZm9yIChjb25zdCBvYmogb2Ygb2Jqcykge1xuICAgIG9ialRvSWQuc2V0KG9iaiwgaW50VG9TdHIoY291bnQpKTtcbiAgICBjb3VudCsrO1xuICB9XG4gIGlmIChjb2xsZWN0b3IuJG5vU2VyaWFsaXplJC5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgdW5kZWZpbmVkSUQgPSBvYmpUb0lkLmdldCh1bmRlZmluZWQpO1xuICAgIGFzc2VydERlZmluZWQodW5kZWZpbmVkSUQsICd1bmRlZmluZWQgSUQgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgZm9yIChjb25zdCBvYmogb2YgY29sbGVjdG9yLiRub1NlcmlhbGl6ZSQpIHtcbiAgICAgIG9ialRvSWQuc2V0KG9iaiwgdW5kZWZpbmVkSUQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNlcmlhbGl6ZSBvYmplY3Qgc3Vic2NyaXB0aW9uc1xuICBjb25zdCBzdWJzOiBzdHJpbmdbXVtdID0gW107XG4gIGZvciAoY29uc3Qgb2JqIG9mIG9ianMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHN1YnNNYXAuZ2V0KG9iaik7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBzdWJzLnB1c2goXG4gICAgICB2YWx1ZVxuICAgICAgICAubWFwKChzKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBzID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgcmV0dXJuIGBfJHtzfWA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzZXJpYWxpemVTdWJzY3JpcHRpb24ocywgZ2V0T2JqSWQpO1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKGlzTm90TnVsbGFibGUpXG4gICAgKTtcbiAgfVxuICBhc3NlcnRFcXVhbChzdWJzLmxlbmd0aCwgc3Vic01hcC5zaXplLCAnbWlzc2luZyBzdWJzY3JpcHRpb25zIHRvIHNlcmlhbGl6ZScsIHN1YnMsIHN1YnNNYXApO1xuXG4gIGNvbnN0IGNvbnZlcnRlZE9ianMgPSBzZXJpYWxpemVPYmplY3RzKG9ianMsIG11c3RHZXRPYmpJZCwgZ2V0T2JqSWQsIGNvbGxlY3RvciwgY29udGFpbmVyU3RhdGUpO1xuXG4gIGNvbnN0IG1ldGE6IFNuYXBzaG90TWV0YSA9IHt9O1xuICBjb25zdCByZWZzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgLy8gV3JpdGUgYmFjayB0byB0aGUgZG9tXG4gIGZvciAoY29uc3QgY3R4IG9mIGFsbENvbnRleHRzKSB7XG4gICAgY29uc3Qgbm9kZSA9IGN0eC4kZWxlbWVudCQ7XG4gICAgY29uc3QgZWxlbWVudElEID0gY3R4LiRpZCQ7XG4gICAgY29uc3QgcmVmID0gY3R4LiRyZWZNYXAkO1xuICAgIGNvbnN0IHByb3BzID0gY3R4LiRwcm9wcyQ7XG4gICAgY29uc3QgY29udGV4dHMgPSBjdHguJGNvbnRleHRzJDtcbiAgICBjb25zdCB0YXNrcyA9IGN0eC4kdGFza3MkO1xuICAgIGNvbnN0IHJlbmRlclFybCA9IGN0eC4kY29tcG9uZW50UXJsJDtcbiAgICBjb25zdCBzZXEgPSBjdHguJHNlcSQ7XG4gICAgY29uc3QgbWV0YVZhbHVlOiBTbmFwc2hvdE1ldGFWYWx1ZSA9IHt9O1xuICAgIGNvbnN0IGVsZW1lbnRDYXB0dXJlZCA9IGlzVmlydHVhbEVsZW1lbnQobm9kZSkgJiYgY29sbGVjdG9yLiRlbGVtZW50cyQuaW5jbHVkZXMoY3R4KTtcbiAgICBhc3NlcnREZWZpbmVkKGVsZW1lbnRJRCwgYHBhdXNlOiBjYW4gbm90IGdlbmVyYXRlIElEIGZvciBkb20gbm9kZWAsIG5vZGUpO1xuXG4gICAgaWYgKHJlZi5sZW5ndGggPiAwKSB7XG4gICAgICBhc3NlcnRFbGVtZW50KG5vZGUpO1xuICAgICAgY29uc3QgdmFsdWUgPSBtYXBKb2luKHJlZiwgbXVzdEdldE9iaklkLCAnICcpO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHJlZnNbZWxlbWVudElEXSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FuUmVuZGVyKSB7XG4gICAgICBsZXQgYWRkID0gZmFsc2U7XG4gICAgICBpZiAoZWxlbWVudENhcHR1cmVkKSB7XG4gICAgICAgIGFzc2VydERlZmluZWQocmVuZGVyUXJsLCAncmVuZGVyUXJsIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgICAgICBjb25zdCBwcm9wc0lkID0gZ2V0T2JqSWQocHJvcHMpO1xuICAgICAgICBtZXRhVmFsdWUuaCA9IG11c3RHZXRPYmpJZChyZW5kZXJRcmwpICsgKHByb3BzSWQgPyAnICcgKyBwcm9wc0lkIDogJycpO1xuICAgICAgICBhZGQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcHJvcHNJZCA9IGdldE9iaklkKHByb3BzKTtcbiAgICAgICAgaWYgKHByb3BzSWQpIHtcbiAgICAgICAgICBtZXRhVmFsdWUuaCA9ICcgJyArIHByb3BzSWQ7XG4gICAgICAgICAgYWRkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGFza3MgJiYgdGFza3MubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG1hcEpvaW4odGFza3MsIGdldE9iaklkLCAnICcpO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICBtZXRhVmFsdWUudyA9IHZhbHVlO1xuICAgICAgICAgIGFkZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGVsZW1lbnRDYXB0dXJlZCAmJiBzZXEgJiYgc2VxLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBtYXBKb2luKHNlcSwgbXVzdEdldE9iaklkLCAnICcpO1xuICAgICAgICBtZXRhVmFsdWUucyA9IHZhbHVlO1xuICAgICAgICBhZGQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29udGV4dHMpIHtcbiAgICAgICAgY29uc3Qgc2VyaWFsaXplZENvbnRleHRzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBjb250ZXh0cy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgY29uc3QgaWQgPSBnZXRPYmpJZCh2YWx1ZSk7XG4gICAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICBzZXJpYWxpemVkQ29udGV4dHMucHVzaChgJHtrZXl9PSR7aWR9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBzZXJpYWxpemVkQ29udGV4dHMuam9pbignICcpO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICBtZXRhVmFsdWUuYyA9IHZhbHVlO1xuICAgICAgICAgIGFkZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChhZGQpIHtcbiAgICAgICAgbWV0YVtlbGVtZW50SURdID0gbWV0YVZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNhbml0eSBjaGVjayBvZiBzZXJpYWxpemVkIGVsZW1lbnRcbiAgaWYgKHFEZXYpIHtcbiAgICBlbGVtZW50VG9JbmRleC5mb3JFYWNoKCh2YWx1ZSwgZWwpID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgbG9nV2FybigndW5jb25uZWN0ZWQgZWxlbWVudCcsIGVsLm5vZGVOYW1lLCAnXFxuJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0YXRlOiB7XG4gICAgICByZWZzLFxuICAgICAgY3R4OiBtZXRhLFxuICAgICAgb2JqczogY29udmVydGVkT2JqcyxcbiAgICAgIHN1YnMsXG4gICAgfSxcbiAgICBvYmpzLFxuICAgIGZ1bmNzOiBjb2xsZWN0b3IuJGlubGluZWRGdW5jdGlvbnMkLFxuICAgIHJlc291cmNlczogY29sbGVjdG9yLiRyZXNvdXJjZXMkLFxuICAgIHFybHM6IGNvbGxlY3Rvci4kcXJscyQsXG4gICAgbW9kZTogY2FuUmVuZGVyID8gJ3JlbmRlcicgOiAnbGlzdGVuZXJzJyxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBtYXBKb2luID0gKG9iamVjdHM6IGFueVtdLCBnZXRPYmplY3RJZDogR2V0T2JqSUQsIHNlcDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9ICcnO1xuICBmb3IgKGNvbnN0IG9iaiBvZiBvYmplY3RzKSB7XG4gICAgY29uc3QgaWQgPSBnZXRPYmplY3RJZChvYmopO1xuICAgIGlmIChpZCAhPT0gbnVsbCkge1xuICAgICAgaWYgKG91dHB1dCAhPT0gJycpIHtcbiAgICAgICAgb3V0cHV0ICs9IHNlcDtcbiAgICAgIH1cbiAgICAgIG91dHB1dCArPSBpZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dHB1dDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXROb2Rlc0luU2NvcGUgPSA8VD4oXG4gIHBhcmVudDogRWxlbWVudCxcbiAgcHJlZGljYXRlOiAoZWw6IE5vZGUpID0+IFQgfCB1bmRlZmluZWRcbik6IFRbXSA9PiB7XG4gIGNvbnN0IHJlc3VsdHM6IFRbXSA9IFtdO1xuICBjb25zdCB2ID0gcHJlZGljYXRlKHBhcmVudCk7XG4gIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXN1bHRzLnB1c2godik7XG4gIH1cbiAgY29uc3Qgd2Fsa2VyID0gcGFyZW50Lm93bmVyRG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihwYXJlbnQsIFNIT1dfRUxFTUVOVCB8IFNIT1dfQ09NTUVOVCwge1xuICAgIGFjY2VwdE5vZGUobm9kZSkge1xuICAgICAgaWYgKGlzQ29udGFpbmVyKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBGSUxURVJfUkVKRUNUO1xuICAgICAgfVxuICAgICAgY29uc3QgdiA9IHByZWRpY2F0ZShub2RlKTtcbiAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVzdWx0cy5wdXNoKHYpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEZJTFRFUl9TS0lQO1xuICAgIH0sXG4gIH0pO1xuICB3aGlsZSAod2Fsa2VyLm5leHROb2RlKCkpIHtcbiAgICAvLyBkbyBub3RoaW5nXG4gIH1cblxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdG9yIHtcbiAgJHNlZW4kOiBTZXQ8YW55PjtcbiAgJG9ialNldCQ6IFNldDxhbnk+O1xuICAkbm9TZXJpYWxpemUkOiBhbnlbXTtcbiAgJGVsZW1lbnRzJDogUUNvbnRleHRbXTtcbiAgJHFybHMkOiBRUkxbXTtcbiAgJGlubGluZWRGdW5jdGlvbnMkOiBzdHJpbmdbXTtcbiAgJHJlc291cmNlcyQ6IFJlc291cmNlUmV0dXJuSW50ZXJuYWw8dW5rbm93bj5bXTtcbiAgJHByZWZldGNoJDogbnVtYmVyO1xuICAkZGVmZXJFbGVtZW50cyQ6IFFDb250ZXh0W107XG4gICRjb250YWluZXJTdGF0ZSQ6IENvbnRhaW5lclN0YXRlO1xuICAkcHJvbWlzZXMkOiBQcm9taXNlPGFueT5bXTtcbn1cblxuLy8gQ29sbGVjdCBwcm9wcyBwcm94eSBvYmplY3RzXG5jb25zdCBjb2xsZWN0UHJvcHMgPSAoZWxDdHg6IFFDb250ZXh0LCBjb2xsZWN0b3I6IENvbGxlY3RvcikgPT4ge1xuICBjb25zdCBwYXJlbnRDdHggPSBlbEN0eC4kcmVhbFBhcmVudEN0eCQgfHwgZWxDdHguJHBhcmVudEN0eCQ7XG4gIGNvbnN0IHByb3BzID0gZWxDdHguJHByb3BzJDtcbiAgLy8gQ29sbGVjdCBvbmx5IGlmIHRoZSBwYXJlbnQgKHdoaWNoIGNoYW5nZXMgdGhlIHByb3BzKSBpcyBwYXJ0IG9mIHRoZSBsaXN0ZW5lciBncmFwaFxuICBpZiAocGFyZW50Q3R4ICYmIHByb3BzICYmICFpc0VtcHR5T2JqKHByb3BzKSAmJiBjb2xsZWN0b3IuJGVsZW1lbnRzJC5pbmNsdWRlcyhwYXJlbnRDdHgpKSB7XG4gICAgY29uc3Qgc3VicyA9IGdldFN1YnNjcmlwdGlvbk1hbmFnZXIocHJvcHMpPy4kc3VicyQ7XG4gICAgY29uc3QgZWwgPSBlbEN0eC4kZWxlbWVudCQgYXMgVmlydHVhbEVsZW1lbnQ7XG4gICAgaWYgKHN1YnMpIHtcbiAgICAgIGZvciAoY29uc3QgW3R5cGUsIGhvc3RdIG9mIHN1YnMpIHtcbiAgICAgICAgaWYgKHR5cGUgPT09IDApIHtcbiAgICAgICAgICBpZiAoaG9zdCAhPT0gZWwpIHtcbiAgICAgICAgICAgIGNvbGxlY3RTdWJzY3JpcHRpb25zKGdldFN1YnNjcmlwdGlvbk1hbmFnZXIocHJvcHMpISwgY29sbGVjdG9yLCBmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc05vZGUoaG9zdCkpIHtcbiAgICAgICAgICAgIGNvbGxlY3RFbGVtZW50KGhvc3QsIGNvbGxlY3Rvcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbGxlY3RWYWx1ZShob3N0LCBjb2xsZWN0b3IsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2xsZWN0VmFsdWUocHJvcHMsIGNvbGxlY3RvciwgZmFsc2UpO1xuICAgICAgICAgIGNvbGxlY3RTdWJzY3JpcHRpb25zKGdldFN1YnNjcmlwdGlvbk1hbmFnZXIocHJvcHMpISwgY29sbGVjdG9yLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IGNyZWF0ZUNvbGxlY3RvciA9IChjb250YWluZXJTdGF0ZTogQ29udGFpbmVyU3RhdGUpOiBDb2xsZWN0b3IgPT4ge1xuICBjb25zdCBpbmxpbmVkRnVuY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuICBjb250YWluZXJTdGF0ZS4kaW5saW5lRm5zJC5mb3JFYWNoKChpZCwgZm5TdHIpID0+IHtcbiAgICB3aGlsZSAoaW5saW5lZEZ1bmN0aW9ucy5sZW5ndGggPD0gaWQpIHtcbiAgICAgIGlubGluZWRGdW5jdGlvbnMucHVzaCgnJyk7XG4gICAgfVxuICAgIGlubGluZWRGdW5jdGlvbnNbaWRdID0gZm5TdHI7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgICRjb250YWluZXJTdGF0ZSQ6IGNvbnRhaW5lclN0YXRlLFxuICAgICRzZWVuJDogbmV3IFNldCgpLFxuICAgICRvYmpTZXQkOiBuZXcgU2V0KCksXG4gICAgJHByZWZldGNoJDogMCxcbiAgICAkbm9TZXJpYWxpemUkOiBbXSxcbiAgICAkaW5saW5lZEZ1bmN0aW9ucyQ6IGlubGluZWRGdW5jdGlvbnMsXG4gICAgJHJlc291cmNlcyQ6IFtdLFxuICAgICRlbGVtZW50cyQ6IFtdLFxuICAgICRxcmxzJDogW10sXG4gICAgJGRlZmVyRWxlbWVudHMkOiBbXSxcbiAgICAkcHJvbWlzZXMkOiBbXSxcbiAgfTtcbn07XG5cbmNvbnN0IGNvbGxlY3REZWZlckVsZW1lbnQgPSAoZWw6IFZpcnR1YWxFbGVtZW50LCBjb2xsZWN0b3I6IENvbGxlY3RvcikgPT4ge1xuICBjb25zdCBjdHggPSB0cnlHZXRDb250ZXh0KGVsKSE7XG4gIGlmIChjb2xsZWN0b3IuJGVsZW1lbnRzJC5pbmNsdWRlcyhjdHgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbGxlY3Rvci4kZWxlbWVudHMkLnB1c2goY3R4KTtcbiAgaWYgKGN0eC4kZmxhZ3MkICYgSE9TVF9GTEFHX0RZTkFNSUMpIHtcbiAgICBjb2xsZWN0b3IuJHByZWZldGNoJCsrO1xuICAgIGNvbGxlY3RFbGVtZW50RGF0YShjdHgsIGNvbGxlY3RvciwgdHJ1ZSk7XG4gICAgY29sbGVjdG9yLiRwcmVmZXRjaCQtLTtcbiAgfSBlbHNlIHtcbiAgICBjb2xsZWN0b3IuJGRlZmVyRWxlbWVudHMkLnB1c2goY3R4KTtcbiAgfVxufTtcblxuY29uc3QgY29sbGVjdEVsZW1lbnQgPSAoZWw6IFF3aWtFbGVtZW50LCBjb2xsZWN0b3I6IENvbGxlY3RvcikgPT4ge1xuICBjb25zdCBjdHggPSB0cnlHZXRDb250ZXh0KGVsKTtcbiAgaWYgKGN0eCkge1xuICAgIGlmIChjb2xsZWN0b3IuJGVsZW1lbnRzJC5pbmNsdWRlcyhjdHgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbGxlY3Rvci4kZWxlbWVudHMkLnB1c2goY3R4KTtcbiAgICBjb2xsZWN0RWxlbWVudERhdGEoY3R4LCBjb2xsZWN0b3IsIGVsKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNvbGxlY3RFbGVtZW50RGF0YSA9IChcbiAgZWxDdHg6IFFDb250ZXh0LFxuICBjb2xsZWN0b3I6IENvbGxlY3RvcixcbiAgZHluYW1pY0N0eDogUXdpa0VsZW1lbnQgfCBib29sZWFuXG4pID0+IHtcbiAgaWYgKGVsQ3R4LiRwcm9wcyQgJiYgIWlzRW1wdHlPYmooZWxDdHguJHByb3BzJCkpIHtcbiAgICBjb2xsZWN0VmFsdWUoZWxDdHguJHByb3BzJCwgY29sbGVjdG9yLCBkeW5hbWljQ3R4KTtcbiAgICBjb2xsZWN0U3Vic2NyaXB0aW9ucyhnZXRTdWJzY3JpcHRpb25NYW5hZ2VyKGVsQ3R4LiRwcm9wcyQpISwgY29sbGVjdG9yLCBkeW5hbWljQ3R4KTtcbiAgfVxuICBpZiAoZWxDdHguJGNvbXBvbmVudFFybCQpIHtcbiAgICBjb2xsZWN0VmFsdWUoZWxDdHguJGNvbXBvbmVudFFybCQsIGNvbGxlY3RvciwgZHluYW1pY0N0eCk7XG4gIH1cbiAgaWYgKGVsQ3R4LiRzZXEkKSB7XG4gICAgZm9yIChjb25zdCBvYmogb2YgZWxDdHguJHNlcSQpIHtcbiAgICAgIGNvbGxlY3RWYWx1ZShvYmosIGNvbGxlY3RvciwgZHluYW1pY0N0eCk7XG4gICAgfVxuICB9XG4gIGlmIChlbEN0eC4kdGFza3MkKSB7XG4gICAgY29uc3QgbWFwID0gY29sbGVjdG9yLiRjb250YWluZXJTdGF0ZSQuJHN1YnNNYW5hZ2VyJC4kZ3JvdXBUb01hbmFnZXJzJDtcbiAgICBmb3IgKGNvbnN0IG9iaiBvZiBlbEN0eC4kdGFza3MkKSB7XG4gICAgICBpZiAobWFwLmhhcyhvYmopKSB7XG4gICAgICAgIGNvbGxlY3RWYWx1ZShvYmosIGNvbGxlY3RvciwgZHluYW1pY0N0eCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGR5bmFtaWNDdHggPT09IHRydWUpIHtcbiAgICBjb2xsZWN0Q29udGV4dChlbEN0eCwgY29sbGVjdG9yKTtcbiAgICBpZiAoZWxDdHguJGR5bmFtaWNTbG90cyQpIHtcbiAgICAgIGZvciAoY29uc3Qgc2xvdEN0eCBvZiBlbEN0eC4kZHluYW1pY1Nsb3RzJCkge1xuICAgICAgICBjb2xsZWN0Q29udGV4dChzbG90Q3R4LCBjb2xsZWN0b3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuY29uc3QgY29sbGVjdENvbnRleHQgPSAoZWxDdHg6IFFDb250ZXh0IHwgbnVsbCB8IHVuZGVmaW5lZCwgY29sbGVjdG9yOiBDb2xsZWN0b3IpID0+IHtcbiAgd2hpbGUgKGVsQ3R4KSB7XG4gICAgaWYgKGVsQ3R4LiRjb250ZXh0cyQpIHtcbiAgICAgIGZvciAoY29uc3Qgb2JqIG9mIGVsQ3R4LiRjb250ZXh0cyQudmFsdWVzKCkpIHtcbiAgICAgICAgY29sbGVjdFZhbHVlKG9iaiwgY29sbGVjdG9yLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxDdHggPSBlbEN0eC4kcGFyZW50Q3R4JDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGVzY2FwZVRleHQgPSAoc3RyOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC88KFxcLz9zY3JpcHQpL2dpLCAnXFxcXHgzQyQxJyk7XG59O1xuXG4vLyBDb2xsZWN0IGFsbCB0aGUgc3Vic2NyaWJlcnMgb2YgdGhpcyBtYW5hZ2VyXG5leHBvcnQgY29uc3QgY29sbGVjdFN1YnNjcmlwdGlvbnMgPSAoXG4gIG1hbmFnZXI6IExvY2FsU3Vic2NyaXB0aW9uTWFuYWdlcixcbiAgY29sbGVjdG9yOiBDb2xsZWN0b3IsXG4gIGxlYWtzOiBib29sZWFuIHwgUXdpa0VsZW1lbnRcbikgPT4ge1xuICAvLyBpZiAoIWxlYWtzKSB7XG4gIC8vICAgcmV0dXJuO1xuICAvLyB9XG4gIGlmIChjb2xsZWN0b3IuJHNlZW4kLmhhcyhtYW5hZ2VyKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb2xsZWN0b3IuJHNlZW4kLmFkZChtYW5hZ2VyKTtcblxuICBjb25zdCBzdWJzID0gbWFuYWdlci4kc3VicyQ7XG4gIGFzc2VydERlZmluZWQoc3VicywgJ3N1YnMgbXVzdCBiZSBkZWZpbmVkJyk7XG4gIGZvciAoY29uc3Qgc3ViIG9mIHN1YnMpIHtcbiAgICBjb25zdCB0eXBlID0gc3ViWzBdO1xuICAgIGlmICh0eXBlID4gMCkge1xuICAgICAgY29sbGVjdFZhbHVlKChzdWIgYXMgU3Vic2NyaWJlclNpZ25hbClbMl0sIGNvbGxlY3RvciwgbGVha3MpO1xuICAgIH1cbiAgICBpZiAobGVha3MgPT09IHRydWUpIHtcbiAgICAgIGNvbnN0IGhvc3QgPSBzdWJbMV07XG4gICAgICBpZiAoaXNOb2RlKGhvc3QpICYmIGlzVmlydHVhbEVsZW1lbnQoaG9zdCkpIHtcbiAgICAgICAgaWYgKHN1YlswXSA9PT0gMCkge1xuICAgICAgICAgIGNvbGxlY3REZWZlckVsZW1lbnQoaG9zdCwgY29sbGVjdG9yKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29sbGVjdFZhbHVlKGhvc3QsIGNvbGxlY3RvciwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBQUk9NSVNFX1ZBTFVFID0gU3ltYm9sKCk7XG5cbmludGVyZmFjZSBQcm9taXNlVmFsdWUge1xuICByZXNvbHZlZDogYm9vbGVhbjtcbiAgdmFsdWU6IGFueTtcbn1cbmNvbnN0IHJlc29sdmVQcm9taXNlID0gKHByb21pc2U6IFByb21pc2U8YW55PikgPT4ge1xuICByZXR1cm4gcHJvbWlzZS50aGVuKFxuICAgICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgdjogUHJvbWlzZVZhbHVlID0ge1xuICAgICAgICByZXNvbHZlZDogdHJ1ZSxcbiAgICAgICAgdmFsdWUsXG4gICAgICB9O1xuICAgICAgKHByb21pc2UgYXMgYW55KVtQUk9NSVNFX1ZBTFVFXSA9IHY7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgICAodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IHY6IFByb21pc2VWYWx1ZSA9IHtcbiAgICAgICAgcmVzb2x2ZWQ6IGZhbHNlLFxuICAgICAgICB2YWx1ZSxcbiAgICAgIH07XG4gICAgICAocHJvbWlzZSBhcyBhbnkpW1BST01JU0VfVkFMVUVdID0gdjtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICk7XG59O1xuXG5jb25zdCBnZXRQcm9taXNlVmFsdWUgPSAocHJvbWlzZTogUHJvbWlzZTxhbnk+KTogUHJvbWlzZVZhbHVlIHwgdW5kZWZpbmVkID0+IHtcbiAgcmV0dXJuIChwcm9taXNlIGFzIGFueSlbUFJPTUlTRV9WQUxVRV07XG59O1xuXG5leHBvcnQgY29uc3QgY29sbGVjdFZhbHVlID0gKG9iajogdW5rbm93biwgY29sbGVjdG9yOiBDb2xsZWN0b3IsIGxlYWtzOiBib29sZWFuIHwgUXdpa0VsZW1lbnQpID0+IHtcbiAgaWYgKG9iaiAhPSBudWxsKSB7XG4gICAgY29uc3Qgb2JqVHlwZSA9IHR5cGVvZiBvYmo7XG4gICAgc3dpdGNoIChvYmpUeXBlKSB7XG4gICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICBjYXNlICdvYmplY3QnOiB7XG4gICAgICAgIGlmIChjb2xsZWN0b3IuJHNlZW4kLmhhcyhvYmopKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbGxlY3Rvci4kc2VlbiQuYWRkKG9iaik7XG4gICAgICAgIGlmIChmYXN0U2tpcFNlcmlhbGl6ZShvYmopKSB7XG4gICAgICAgICAgY29sbGVjdG9yLiRvYmpTZXQkLmFkZCh1bmRlZmluZWQpO1xuICAgICAgICAgIGNvbGxlY3Rvci4kbm9TZXJpYWxpemUkLnB1c2gob2JqKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvKiogVGhlIHBvc3NpYmx5IHByb3hpZWQgYG9iamAgKi9cbiAgICAgICAgY29uc3QgaW5wdXQgPSBvYmo7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGdldFByb3h5VGFyZ2V0KG9iaik7XG4gICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICAvLyBgb2JqYCBpcyBub3cgdGhlIG5vbi1wcm94aWVkIG9iamVjdFxuICAgICAgICAgIG9iaiA9IHRhcmdldDtcbiAgICAgICAgICAvLyBOT1RFOiBZb3UgbWF5IGJlIHRlbXB0ZWQgdG8gYWRkIHRoZSBgdGFyZ2V0YCB0byB0aGUgYHNlZW5gIHNldCxcbiAgICAgICAgICAvLyBidXQgdGhhdCB3b3VsZCBub3Qgd29yayBhcyBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIGB0YXJnZXRgIG9iamVjdFxuICAgICAgICAgIC8vIHRvIGFscmVhZHkgYmUgaW4gYHNlZW5gIHNldCBpZiBpdCB3YXMgcGFzc2VkIGluIGRpcmVjdGx5LCBzb1xuICAgICAgICAgIC8vIHdlIGNhbid0IHNob3J0IGNpcmN1aXQgYW5kIG5lZWQgdG8gZG8gdGhlIHdvcmsuXG4gICAgICAgICAgLy8gSXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9Rd2lrRGV2L3F3aWsvaXNzdWVzLzUwMDFcbiAgICAgICAgICBjb25zdCBtdXRhYmxlID0gKGdldFByb3h5RmxhZ3Mob2JqKSEgJiBRT2JqZWN0SW1tdXRhYmxlKSA9PT0gMDtcbiAgICAgICAgICBpZiAobGVha3MgJiYgbXV0YWJsZSkge1xuICAgICAgICAgICAgY29sbGVjdFN1YnNjcmlwdGlvbnMoZ2V0U3Vic2NyaXB0aW9uTWFuYWdlcihpbnB1dCkhLCBjb2xsZWN0b3IsIGxlYWtzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZhc3RXZWFrU2VyaWFsaXplKGlucHV0KSkge1xuICAgICAgICAgICAgY29sbGVjdG9yLiRvYmpTZXQkLmFkZChvYmopO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb2xsZWN0ZWQgPSBjb2xsZWN0RGVwcyhvYmosIGNvbGxlY3RvciwgbGVha3MpO1xuICAgICAgICBpZiAoY29sbGVjdGVkKSB7XG4gICAgICAgICAgY29sbGVjdG9yLiRvYmpTZXQkLmFkZChvYmopO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1Byb21pc2Uob2JqKSkge1xuICAgICAgICAgIGNvbGxlY3Rvci4kcHJvbWlzZXMkLnB1c2goXG4gICAgICAgICAgICByZXNvbHZlUHJvbWlzZShvYmopLnRoZW4oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbGxlY3RWYWx1ZSh2YWx1ZSwgY29sbGVjdG9yLCBsZWFrcyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9ialR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgaWYgKGlzTm9kZShvYmopKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGNvbGxlY3RWYWx1ZSgoaW5wdXQgYXMgdHlwZW9mIG9iailbaV0sIGNvbGxlY3RvciwgbGVha3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoaXNTZXJpYWxpemFibGVPYmplY3Qob2JqKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgICAgIGNvbGxlY3RWYWx1ZSgoaW5wdXQgYXMgdHlwZW9mIG9iailba2V5XSwgY29sbGVjdG9yLCBsZWFrcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb2xsZWN0b3IuJG9ialNldCQuYWRkKG9iaik7XG59O1xuXG5leHBvcnQgY29uc3QgaXNDb250YWluZXIgPSAoZWw6IE5vZGUpID0+IHtcbiAgcmV0dXJuIGlzRWxlbWVudChlbCkgJiYgZWwuaGFzQXR0cmlidXRlKFFDb250YWluZXJBdHRyKTtcbn07XG5cbmNvbnN0IGhhc0NvbnRleHQgPSAoZWw6IE5vZGUpID0+IHtcbiAgY29uc3Qgbm9kZSA9IHByb2Nlc3NWaXJ0dWFsTm9kZXMoZWwpO1xuICBpZiAoaXNRd2lrRWxlbWVudChub2RlKSkge1xuICAgIGNvbnN0IGN0eCA9IHRyeUdldENvbnRleHQobm9kZSk7XG4gICAgaWYgKGN0eCAmJiBjdHguJGlkJCkge1xuICAgICAgcmV0dXJuIGN0eDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGdldE1hbmFnZXIgPSAob2JqOiBhbnksIGNvbnRhaW5lclN0YXRlOiBDb250YWluZXJTdGF0ZSkgPT4ge1xuICBpZiAoIWlzT2JqZWN0KG9iaikpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmIChvYmogaW5zdGFuY2VvZiBTaWduYWxJbXBsKSB7XG4gICAgcmV0dXJuIGdldFN1YnNjcmlwdGlvbk1hbmFnZXIob2JqKTtcbiAgfVxuICBjb25zdCBwcm94eSA9IGNvbnRhaW5lclN0YXRlLiRwcm94eU1hcCQuZ2V0KG9iaik7XG4gIGlmIChwcm94eSkge1xuICAgIHJldHVybiBnZXRTdWJzY3JpcHRpb25NYW5hZ2VyKHByb3h5KTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuY29uc3QgZ2V0UUlkID0gKGVsOiBRd2lrRWxlbWVudCk6IHN0cmluZyB8IG51bGwgPT4ge1xuICBjb25zdCBjdHggPSB0cnlHZXRDb250ZXh0KGVsKTtcbiAgaWYgKGN0eCkge1xuICAgIHJldHVybiBjdHguJGlkJDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbmNvbnN0IGdldFRleHRJRCA9IChub2RlOiBUZXh0LCBjb250YWluZXJTdGF0ZTogQ29udGFpbmVyU3RhdGUpID0+IHtcbiAgY29uc3QgcHJldiA9IG5vZGUucHJldmlvdXNTaWJsaW5nO1xuICBpZiAocHJldiAmJiBpc0NvbW1lbnQocHJldikpIHtcbiAgICBpZiAocHJldi5kYXRhLnN0YXJ0c1dpdGgoJ3Q9JykpIHtcbiAgICAgIHJldHVybiBFTEVNRU5UX0lEX1BSRUZJWCArIHByZXYuZGF0YS5zbGljZSgyKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgZG9jID0gbm9kZS5vd25lckRvY3VtZW50O1xuICBjb25zdCBpZCA9IGludFRvU3RyKGNvbnRhaW5lclN0YXRlLiRlbGVtZW50SW5kZXgkKyspO1xuICBjb25zdCBvcGVuID0gZG9jLmNyZWF0ZUNvbW1lbnQoYHQ9JHtpZH1gKTtcbiAgY29uc3QgY2xvc2UgPSBkb2MuY3JlYXRlQ29tbWVudCgnJyk7XG4gIGNvbnN0IHBhcmVudCA9IG5vZGUucGFyZW50RWxlbWVudCE7XG4gIHBhcmVudC5pbnNlcnRCZWZvcmUob3Blbiwgbm9kZSk7XG4gIHBhcmVudC5pbnNlcnRCZWZvcmUoY2xvc2UsIG5vZGUubmV4dFNpYmxpbmcpO1xuICByZXR1cm4gRUxFTUVOVF9JRF9QUkVGSVggKyBpZDtcbn07XG5cbmNvbnN0IGlzRW1wdHlPYmogPSAob2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMDtcbn07XG5mdW5jdGlvbiBzZXJpYWxpemVPYmplY3RzKFxuICBvYmpzOiBhbnlbXSxcbiAgbXVzdEdldE9iaklkOiAob2JqOiBhbnkpID0+IHN0cmluZyxcbiAgZ2V0T2JqSWQ6IEdldE9iaklEIHwgbnVsbCxcbiAgY29sbGVjdG9yOiBDb2xsZWN0b3IsXG4gIGNvbnRhaW5lclN0YXRlOiBhbnlcbikge1xuICByZXR1cm4gb2Jqcy5tYXAoKG9iaikgPT4ge1xuICAgIGlmIChvYmogPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB0eXBlT2JqID0gdHlwZW9mIG9iajtcbiAgICBzd2l0Y2ggKHR5cGVPYmopIHtcbiAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICAgIHJldHVybiBVTkRFRklORURfUFJFRklYO1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUob2JqKSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICBpZiAoKG9iaiBhcyBzdHJpbmcpLmNoYXJDb2RlQXQoMCkgPCAzMiAvKiBzcGFjZSAqLykge1xuICAgICAgICAgIC8vIGlmIHN0cmluZ3Mgc3RhcnRzIHdpdGggYSBzcGVjaWFsIGNoYXJhY3RlciBsZXQgdGhlIHN0cmluZyBzZXJpYWxpemVyIGhhbmRsZSBpdFxuICAgICAgICAgIC8vIHRvIGRlYWwgd2l0aCBlc2NhcGUgc2VxdWVuY2VzLlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEZhc3QgcGF0aCBvZiBqdXN0IHNlcmlhbGl6aW5nIHRoZSBzdHJpbmcuXG4gICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIGNvbnN0IHZhbHVlID0gc2VyaWFsaXplVmFsdWUob2JqLCBtdXN0R2V0T2JqSWQsIGNvbGxlY3RvciwgY29udGFpbmVyU3RhdGUpO1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmICh0eXBlT2JqID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKGlzQXJyYXkob2JqKSkge1xuICAgICAgICByZXR1cm4gb2JqLm1hcChtdXN0R2V0T2JqSWQpO1xuICAgICAgfVxuICAgICAgaWYgKGlzU2VyaWFsaXphYmxlT2JqZWN0KG9iaikpIHtcbiAgICAgICAgY29uc3Qgb3V0cHV0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgICAgIGlmIChnZXRPYmpJZCkge1xuICAgICAgICAgICAgY29uc3QgaWQgPSBnZXRPYmpJZChvYmpba2V5XSk7XG4gICAgICAgICAgICBpZiAoaWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgb3V0cHV0W2tleV0gPSBpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0cHV0W2tleV0gPSBtdXN0R2V0T2JqSWQob2JqW2tleV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBxRXJyb3IoUUVycm9yX3ZlcmlmeVNlcmlhbGl6YWJsZSwgb2JqKTtcbiAgfSk7XG59XG4iXX0=","import { EMPTY_ARRAY } from '../util/flyweight';\nimport { assertQrl, createQRL, isSyncQrl } from './qrl-class';\nimport { isFunction, isString } from '../util/types';\nimport { qError, QError_dynamicImportFailed, QError_qrlMissingChunk, QError_unknownTypeArgument, } from '../error/error';\nimport { qRuntimeQrl, qSerialize } from '../util/qdev';\nimport { getPlatform } from '../platform/platform';\nimport { assertDefined, assertTrue, assertElement } from '../error/assert';\nimport { mapJoin } from '../container/pause';\nimport { throwErrorAndStop } from '../util/log';\n// https://regexr.com/68v72\nconst EXTRACT_IMPORT_PATH = /\\(\\s*(['\"])([^\\1]+)\\1\\s*\\)/;\n// https://regexr.com/690ds\nconst EXTRACT_SELF_IMPORT = /Promise\\s*\\.\\s*resolve/;\n// https://regexr.com/6a83h\nconst EXTRACT_FILE_NAME = /[\\\\/(]([\\w\\d.\\-_]+\\.(js|ts)x?):/;\nconst announcedQRL = /*#__PURE__*/ new Set();\n// <docs markdown=\"../readme.md#qrl\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#qrl instead)\n/**\n * Used by Qwik Optimizer to point to lazy-loaded resources.\n *\n * This function should be used by the Qwik Optimizer only. The function should not be directly\n * referred to in the source code of the application.\n *\n * @param chunkOrFn - Chunk name (or function which is stringified to extract chunk name)\n * @param symbol - Symbol to lazy load\n * @param lexicalScopeCapture - A set of lexically scoped variables to capture.\n * @public\n * @see `QRL`, `$(...)`\n */\n// </docs>\nexport const qrl = (chunkOrFn, symbol, lexicalScopeCapture = EMPTY_ARRAY, stackOffset = 0) => {\n    let chunk = null;\n    let symbolFn = null;\n    if (isFunction(chunkOrFn)) {\n        symbolFn = chunkOrFn;\n        if (qSerialize) {\n            let match;\n            const srcCode = String(chunkOrFn);\n            if ((match = srcCode.match(EXTRACT_IMPORT_PATH)) && match[2]) {\n                chunk = match[2];\n            }\n            else if ((match = srcCode.match(EXTRACT_SELF_IMPORT))) {\n                const ref = 'QWIK-SELF';\n                const frames = new Error(ref).stack.split('\\n');\n                const start = frames.findIndex((f) => f.includes(ref));\n                const frame = frames[start + 2 + stackOffset];\n                match = frame.match(EXTRACT_FILE_NAME);\n                if (!match) {\n                    chunk = 'main';\n                }\n                else {\n                    chunk = match[1];\n                }\n            }\n            else {\n                throw qError(QError_dynamicImportFailed, srcCode);\n            }\n        }\n    }\n    else if (isString(chunkOrFn)) {\n        chunk = chunkOrFn;\n    }\n    else {\n        throw qError(QError_unknownTypeArgument, chunkOrFn);\n    }\n    if (!announcedQRL.has(symbol)) {\n        // Emit event\n        announcedQRL.add(symbol);\n    }\n    // Unwrap subscribers\n    return createQRL(chunk, symbol, null, symbolFn, null, lexicalScopeCapture, null);\n};\n/** @internal */\nexport const inlinedQrl = (symbol, symbolName, lexicalScopeCapture = EMPTY_ARRAY) => {\n    // Unwrap subscribers\n    return createQRL(null, symbolName, symbol, null, null, lexicalScopeCapture, null);\n};\n/** @internal */\nexport const _noopQrl = (symbolName, lexicalScopeCapture = EMPTY_ARRAY) => {\n    return createQRL(null, symbolName, null, null, null, lexicalScopeCapture, null);\n};\n/** @internal */\nexport const _noopQrlDEV = (symbolName, opts, lexicalScopeCapture = EMPTY_ARRAY) => {\n    const newQrl = _noopQrl(symbolName, lexicalScopeCapture);\n    newQrl.dev = opts;\n    return newQrl;\n};\n/** @internal */\nexport const qrlDEV = (chunkOrFn, symbol, opts, lexicalScopeCapture = EMPTY_ARRAY) => {\n    const newQrl = qrl(chunkOrFn, symbol, lexicalScopeCapture, 1);\n    newQrl.dev = opts;\n    return newQrl;\n};\n/** @internal */\nexport const inlinedQrlDEV = (symbol, symbolName, opts, lexicalScopeCapture = EMPTY_ARRAY) => {\n    const qrl = inlinedQrl(symbol, symbolName, lexicalScopeCapture);\n    qrl.dev = opts;\n    return qrl;\n};\nexport const serializeQRL = (qrl, opts = {}) => {\n    assertTrue(qSerialize, 'In order to serialize a QRL, qSerialize must be true');\n    assertQrl(qrl);\n    let symbol = qrl.$symbol$;\n    let chunk = qrl.$chunk$;\n    const refSymbol = qrl.$refSymbol$ ?? symbol;\n    const platform = getPlatform();\n    if (platform) {\n        const result = platform.chunkForSymbol(refSymbol, chunk, qrl.dev?.file);\n        if (result) {\n            chunk = result[1];\n            if (!qrl.$refSymbol$) {\n                symbol = result[0];\n            }\n        }\n        else {\n            console.error('serializeQRL: Cannot resolve symbol', symbol, 'in', chunk, qrl.dev?.file);\n        }\n    }\n    if (qRuntimeQrl && chunk == null) {\n        chunk = '/runtimeQRL';\n        symbol = '_';\n    }\n    if (chunk == null) {\n        throw qError(QError_qrlMissingChunk, qrl.$symbol$);\n    }\n    if (chunk.startsWith('./')) {\n        chunk = chunk.slice(2);\n    }\n    if (isSyncQrl(qrl)) {\n        if (opts.$containerState$) {\n            const fn = qrl.resolved;\n            const containerState = opts.$containerState$;\n            const fnStrKey = fn.serialized || fn.toString();\n            let id = containerState.$inlineFns$.get(fnStrKey);\n            if (id === undefined) {\n                id = containerState.$inlineFns$.size;\n                containerState.$inlineFns$.set(fnStrKey, id);\n            }\n            symbol = String(id);\n        }\n        else {\n            throwErrorAndStop('Sync QRL without containerState');\n        }\n    }\n    let output = `${chunk}#${symbol}`;\n    const capture = qrl.$capture$;\n    const captureRef = qrl.$captureRef$;\n    if (captureRef && captureRef.length) {\n        if (opts.$getObjId$) {\n            output += `[${mapJoin(captureRef, opts.$getObjId$, ' ')}]`;\n        }\n        else if (opts.$addRefMap$) {\n            output += `[${mapJoin(captureRef, opts.$addRefMap$, ' ')}]`;\n        }\n    }\n    else if (capture && capture.length > 0) {\n        output += `[${capture.join(' ')}]`;\n    }\n    return output;\n};\nexport const serializeQRLs = (existingQRLs, containerState, elCtx) => {\n    assertElement(elCtx.$element$);\n    const opts = {\n        $containerState$: containerState,\n        $addRefMap$: (obj) => addToArray(elCtx.$refMap$, obj),\n    };\n    return mapJoin(existingQRLs, (qrl) => serializeQRL(qrl, opts), '\\n');\n};\n/** `./chunk#symbol[captures] */\nexport const parseQRL = (qrl, containerEl) => {\n    const endIdx = qrl.length;\n    const hashIdx = indexOf(qrl, 0, '#');\n    const captureIdx = indexOf(qrl, hashIdx, '[');\n    const chunkEndIdx = Math.min(hashIdx, captureIdx);\n    const chunk = qrl.substring(0, chunkEndIdx);\n    const symbolStartIdx = hashIdx == endIdx ? hashIdx : hashIdx + 1;\n    const symbolEndIdx = captureIdx;\n    const symbol = symbolStartIdx == symbolEndIdx ? 'default' : qrl.substring(symbolStartIdx, symbolEndIdx);\n    const captureStartIdx = captureIdx;\n    const captureEndIdx = endIdx;\n    const capture = captureStartIdx === captureEndIdx\n        ? EMPTY_ARRAY\n        : qrl.substring(captureStartIdx + 1, captureEndIdx - 1).split(' ');\n    const iQrl = createQRL(chunk, symbol, null, null, capture, null, null);\n    if (containerEl) {\n        iQrl.$setContainer$(containerEl);\n    }\n    return iQrl;\n};\nconst indexOf = (text, startIdx, char) => {\n    const endIdx = text.length;\n    const charIdx = text.indexOf(char, startIdx == endIdx ? 0 : startIdx);\n    return charIdx == -1 ? endIdx : charIdx;\n};\nconst addToArray = (array, obj) => {\n    const index = array.indexOf(obj);\n    if (index === -1) {\n        array.push(obj);\n        return String(array.length - 1);\n    }\n    return String(index);\n};\nexport const inflateQrl = (qrl, elCtx) => {\n    assertDefined(qrl.$capture$, 'invoke: qrl capture must be defined inside useLexicalScope()', qrl);\n    return (qrl.$captureRef$ = qrl.$capture$.map((idx) => {\n        const int = parseInt(idx, 10);\n        const obj = elCtx.$refMap$[int];\n        assertTrue(elCtx.$refMap$.length > int, 'out of bounds inflate access', idx);\n        return obj;\n    }));\n};\n/** @internal */\nexport const _regSymbol = (symbol, hash) => {\n    if (typeof globalThis.__qwik_reg_symbols === 'undefined') {\n        globalThis.__qwik_reg_symbols = new Map();\n    }\n    globalThis.__qwik_reg_symbols.set(hash, symbol);\n    return symbol;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXJsLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3FybC9xcmwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBb0IsTUFBTSxhQUFhLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUNMLE1BQU0sRUFDTiwwQkFBMEIsRUFDMUIsc0JBQXNCLEVBQ3RCLDBCQUEwQixHQUMzQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUczRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWhELDJCQUEyQjtBQUMzQixNQUFNLG1CQUFtQixHQUFHLDRCQUE0QixDQUFDO0FBRXpELDJCQUEyQjtBQUMzQixNQUFNLG1CQUFtQixHQUFHLHdCQUF3QixDQUFDO0FBRXJELDJCQUEyQjtBQUMzQixNQUFNLGlCQUFpQixHQUFHLGlDQUFpQyxDQUFDO0FBRTVELE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxJQUFJLEdBQUcsRUFBVSxDQUFDO0FBU3JELHFDQUFxQztBQUNyQyx5Q0FBeUM7QUFDekMsa0NBQWtDO0FBQ2xDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsVUFBVTtBQUNWLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUNqQixT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QUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSw4QkFBOEIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM3RSxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixnQkFBZ0I7QUFDaEIsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBVyxFQUFFLElBQVksRUFBRSxFQUFFO0lBQ3RELElBQUksT0FBUSxVQUFrQixDQUFDLGtCQUFrQixLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ2pFLFVBQWtCLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztJQUNsRSxDQUFDO0lBQ0EsVUFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVNUFRZX0FSUkFZIH0gZnJvbSAnLi4vdXRpbC9mbHl3ZWlnaHQnO1xuaW1wb3J0IHR5cGUgeyBRUkwgfSBmcm9tICcuL3FybC5wdWJsaWMnO1xuaW1wb3J0IHsgYXNzZXJ0UXJsLCBjcmVhdGVRUkwsIGlzU3luY1FybCwgdHlwZSBRUkxJbnRlcm5hbCB9IGZyb20gJy4vcXJsLWNsYXNzJztcbmltcG9ydCB7IGlzRnVuY3Rpb24sIGlzU3RyaW5nIH0gZnJvbSAnLi4vdXRpbC90eXBlcyc7XG5pbXBvcnQge1xuICBxRXJyb3IsXG4gIFFFcnJvcl9keW5hbWljSW1wb3J0RmFpbGVkLFxuICBRRXJyb3JfcXJsTWlzc2luZ0NodW5rLFxuICBRRXJyb3JfdW5rbm93blR5cGVBcmd1bWVudCxcbn0gZnJvbSAnLi4vZXJyb3IvZXJyb3InO1xuaW1wb3J0IHsgcVJ1bnRpbWVRcmwsIHFTZXJpYWxpemUgfSBmcm9tICcuLi91dGlsL3FkZXYnO1xuaW1wb3J0IHsgZ2V0UGxhdGZvcm0gfSBmcm9tICcuLi9wbGF0Zm9ybS9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBhc3NlcnREZWZpbmVkLCBhc3NlcnRUcnVlLCBhc3NlcnRFbGVtZW50IH0gZnJvbSAnLi4vZXJyb3IvYXNzZXJ0JztcbmltcG9ydCB0eXBlIHsgQ29udGFpbmVyU3RhdGUsIE11c3RHZXRPYmpJRCB9IGZyb20gJy4uL2NvbnRhaW5lci9jb250YWluZXInO1xuaW1wb3J0IHR5cGUgeyBRQ29udGV4dCB9IGZyb20gJy4uL3N0YXRlL2NvbnRleHQnO1xuaW1wb3J0IHsgbWFwSm9pbiB9IGZyb20gJy4uL2NvbnRhaW5lci9wYXVzZSc7XG5pbXBvcnQgeyB0aHJvd0Vycm9yQW5kU3RvcCB9IGZyb20gJy4uL3V0aWwvbG9nJztcblxuLy8gaHR0cHM6Ly9yZWdleHIuY29tLzY4djcyXG5jb25zdCBFWFRSQUNUX0lNUE9SVF9QQVRIID0gL1xcKFxccyooWydcIl0pKFteXFwxXSspXFwxXFxzKlxcKS87XG5cbi8vIGh0dHBzOi8vcmVnZXhyLmNvbS82OTBkc1xuY29uc3QgRVhUUkFDVF9TRUxGX0lNUE9SVCA9IC9Qcm9taXNlXFxzKlxcLlxccypyZXNvbHZlLztcblxuLy8gaHR0cHM6Ly9yZWdleHIuY29tLzZhODNoXG5jb25zdCBFWFRSQUNUX0ZJTEVfTkFNRSA9IC9bXFxcXC8oXShbXFx3XFxkLlxcLV9dK1xcLihqc3x0cyl4Pyk6LztcblxuY29uc3QgYW5ub3VuY2VkUVJMID0gLyojX19QVVJFX18qLyBuZXcgU2V0PHN0cmluZz4oKTtcblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUVJMRGV2IHtcbiAgZmlsZTogc3RyaW5nO1xuICBsbzogbnVtYmVyO1xuICBoaTogbnVtYmVyO1xufVxuXG4vLyA8ZG9jcyBtYXJrZG93bj1cIi4uL3JlYWRtZS5tZCNxcmxcIj5cbi8vICEhRE8gTk9UIEVESVQgVEhJUyBDT01NRU5UIERJUkVDVExZISEhXG4vLyAoZWRpdCAuLi9yZWFkbWUubWQjcXJsIGluc3RlYWQpXG4vKipcbiAqIFVzZWQgYnkgUXdpayBPcHRpbWl6ZXIgdG8gcG9pbnQgdG8gbGF6eS1sb2FkZWQgcmVzb3VyY2VzLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgYnkgdGhlIFF3aWsgT3B0aW1pemVyIG9ubHkuIFRoZSBmdW5jdGlvbiBzaG91bGQgbm90IGJlIGRpcmVjdGx5XG4gKiByZWZlcnJlZCB0byBpbiB0aGUgc291cmNlIGNvZGUgb2YgdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBjaHVua09yRm4gLSBDaHVuayBuYW1lIChvciBmdW5jdGlvbiB3aGljaCBpcyBzdHJpbmdpZmllZCB0byBleHRyYWN0IGNodW5rIG5hbWUpXG4gKiBAcGFyYW0gc3ltYm9sIC0gU3ltYm9sIHRvIGxhenkgbG9hZFxuICogQHBhcmFtIGxleGljYWxTY29wZUNhcHR1cmUgLSBBIHNldCBvZiBsZXhpY2FsbHkgc2NvcGVkIHZhcmlhYmxlcyB0byBjYXB0dXJlLlxuICogQHB1YmxpY1xuICogQHNlZSBgUVJMYCwgYCQoLi4uKWBcbiAqL1xuLy8gPC9kb2NzPlxuZXhwb3J0IGNvbnN0IHFybCA9IDxUID0gYW55PihcbiAgY2h1bmtPckZuOiBzdHJpbmcgfCAoKCkgPT4gUHJvbWlzZTxhbnk+KSxcbiAgc3ltYm9sOiBzdHJpbmcsXG4gIGxleGljYWxTY29wZUNhcHR1cmU6IGFueVtdID0gRU1QVFlfQVJSQVksXG4gIHN0YWNrT2Zmc2V0ID0gMFxuKTogUVJMPFQ+ID0+IHtcbiAgbGV0IGNodW5rOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgbGV0IHN5bWJvbEZuOiBudWxsIHwgKCgpID0+IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4pID0gbnVsbDtcbiAgaWYgKGlzRnVuY3Rpb24oY2h1bmtPckZuKSkge1xuICAgIHN5bWJvbEZuID0gY2h1bmtPckZuO1xuICAgIGlmIChxU2VyaWFsaXplKSB7XG4gICAgICBsZXQgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsO1xuICAgICAgY29uc3Qgc3JjQ29kZSA9IFN0cmluZyhjaHVua09yRm4pO1xuICAgICAgaWYgKChtYXRjaCA9IHNyY0NvZGUubWF0Y2goRVhUUkFDVF9JTVBPUlRfUEFUSCkpICYmIG1hdGNoWzJdKSB7XG4gICAgICAgIGNodW5rID0gbWF0Y2hbMl07XG4gICAgICB9IGVsc2UgaWYgKChtYXRjaCA9IHNyY0NvZGUubWF0Y2goRVhUUkFDVF9TRUxGX0lNUE9SVCkpKSB7XG4gICAgICAgIGNvbnN0IHJlZiA9ICdRV0lLLVNFTEYnO1xuICAgICAgICBjb25zdCBmcmFtZXMgPSBuZXcgRXJyb3IocmVmKS5zdGFjayEuc3BsaXQoJ1xcbicpO1xuICAgICAgICBjb25zdCBzdGFydCA9IGZyYW1lcy5maW5kSW5kZXgoKGYpID0+IGYuaW5jbHVkZXMocmVmKSk7XG4gICAgICAgIGNvbnN0IGZyYW1lID0gZnJhbWVzW3N0YXJ0ICsgMiArIHN0YWNrT2Zmc2V0XTtcbiAgICAgICAgbWF0Y2ggPSBmcmFtZS5tYXRjaChFWFRSQUNUX0ZJTEVfTkFNRSk7XG4gICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICBjaHVuayA9ICdtYWluJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjaHVuayA9IG1hdGNoWzFdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBxRXJyb3IoUUVycm9yX2R5bmFtaWNJbXBvcnRGYWlsZWQsIHNyY0NvZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChpc1N0cmluZyhjaHVua09yRm4pKSB7XG4gICAgY2h1bmsgPSBjaHVua09yRm47XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgcUVycm9yKFFFcnJvcl91bmtub3duVHlwZUFyZ3VtZW50LCBjaHVua09yRm4pO1xuICB9XG5cbiAgaWYgKCFhbm5vdW5jZWRRUkwuaGFzKHN5bWJvbCkpIHtcbiAgICAvLyBFbWl0IGV2ZW50XG4gICAgYW5ub3VuY2VkUVJMLmFkZChzeW1ib2wpO1xuICB9XG5cbiAgLy8gVW53cmFwIHN1YnNjcmliZXJzXG4gIHJldHVybiBjcmVhdGVRUkw8VD4oY2h1bmssIHN5bWJvbCwgbnVsbCwgc3ltYm9sRm4sIG51bGwsIGxleGljYWxTY29wZUNhcHR1cmUsIG51bGwpO1xufTtcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IGlubGluZWRRcmwgPSA8VD4oXG4gIHN5bWJvbDogVCxcbiAgc3ltYm9sTmFtZTogc3RyaW5nLFxuICBsZXhpY2FsU2NvcGVDYXB0dXJlOiBhbnlbXSA9IEVNUFRZX0FSUkFZXG4pOiBRUkw8VD4gPT4ge1xuICAvLyBVbndyYXAgc3Vic2NyaWJlcnNcbiAgcmV0dXJuIGNyZWF0ZVFSTDxUPihudWxsLCBzeW1ib2xOYW1lLCBzeW1ib2wsIG51bGwsIG51bGwsIGxleGljYWxTY29wZUNhcHR1cmUsIG51bGwpO1xufTtcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IF9ub29wUXJsID0gPFQ+KFxuICBzeW1ib2xOYW1lOiBzdHJpbmcsXG4gIGxleGljYWxTY29wZUNhcHR1cmU6IGFueVtdID0gRU1QVFlfQVJSQVlcbik6IFFSTDxUPiA9PiB7XG4gIHJldHVybiBjcmVhdGVRUkw8VD4obnVsbCwgc3ltYm9sTmFtZSwgbnVsbCwgbnVsbCwgbnVsbCwgbGV4aWNhbFNjb3BlQ2FwdHVyZSwgbnVsbCk7XG59O1xuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgY29uc3QgX25vb3BRcmxERVYgPSA8VD4oXG4gIHN5bWJvbE5hbWU6IHN0cmluZyxcbiAgb3B0czogUVJMRGV2LFxuICBsZXhpY2FsU2NvcGVDYXB0dXJlOiBhbnlbXSA9IEVNUFRZX0FSUkFZXG4pOiBRUkw8VD4gPT4ge1xuICBjb25zdCBuZXdRcmwgPSBfbm9vcFFybChzeW1ib2xOYW1lLCBsZXhpY2FsU2NvcGVDYXB0dXJlKSBhcyBRUkxJbnRlcm5hbDxUPjtcbiAgbmV3UXJsLmRldiA9IG9wdHM7XG4gIHJldHVybiBuZXdRcmw7XG59O1xuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgY29uc3QgcXJsREVWID0gPFQgPSBhbnk+KFxuICBjaHVua09yRm46IHN0cmluZyB8ICgoKSA9PiBQcm9taXNlPGFueT4pLFxuICBzeW1ib2w6IHN0cmluZyxcbiAgb3B0czogUVJMRGV2LFxuICBsZXhpY2FsU2NvcGVDYXB0dXJlOiBhbnlbXSA9IEVNUFRZX0FSUkFZXG4pOiBRUkw8VD4gPT4ge1xuICBjb25zdCBuZXdRcmwgPSBxcmwoY2h1bmtPckZuLCBzeW1ib2wsIGxleGljYWxTY29wZUNhcHR1cmUsIDEpIGFzIFFSTEludGVybmFsPFQ+O1xuICBuZXdRcmwuZGV2ID0gb3B0cztcbiAgcmV0dXJuIG5ld1FybDtcbn07XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjb25zdCBpbmxpbmVkUXJsREVWID0gPFQgPSBhbnk+KFxuICBzeW1ib2w6IFQsXG4gIHN5bWJvbE5hbWU6IHN0cmluZyxcbiAgb3B0czogUVJMRGV2LFxuICBsZXhpY2FsU2NvcGVDYXB0dXJlOiBhbnlbXSA9IEVNUFRZX0FSUkFZXG4pOiBRUkw8VD4gPT4ge1xuICBjb25zdCBxcmwgPSBpbmxpbmVkUXJsKHN5bWJvbCwgc3ltYm9sTmFtZSwgbGV4aWNhbFNjb3BlQ2FwdHVyZSkgYXMgUVJMSW50ZXJuYWw8VD47XG4gIHFybC5kZXYgPSBvcHRzO1xuICByZXR1cm4gcXJsO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBRUkxTZXJpYWxpemVPcHRpb25zIHtcbiAgJGdldE9iaklkJD86IE11c3RHZXRPYmpJRDtcbiAgJGFkZFJlZk1hcCQ/OiAob2JqOiBhbnkpID0+IHN0cmluZztcbiAgJGNvbnRhaW5lclN0YXRlJD86IENvbnRhaW5lclN0YXRlO1xufVxuXG5leHBvcnQgY29uc3Qgc2VyaWFsaXplUVJMID0gKHFybDogUVJMSW50ZXJuYWwsIG9wdHM6IFFSTFNlcmlhbGl6ZU9wdGlvbnMgPSB7fSkgPT4ge1xuICBhc3NlcnRUcnVlKHFTZXJpYWxpemUsICdJbiBvcmRlciB0byBzZXJpYWxpemUgYSBRUkwsIHFTZXJpYWxpemUgbXVzdCBiZSB0cnVlJyk7XG4gIGFzc2VydFFybChxcmwpO1xuICBsZXQgc3ltYm9sID0gcXJsLiRzeW1ib2wkO1xuICBsZXQgY2h1bmsgPSBxcmwuJGNodW5rJDtcbiAgY29uc3QgcmVmU3ltYm9sID0gcXJsLiRyZWZTeW1ib2wkID8/IHN5bWJvbDtcbiAgY29uc3QgcGxhdGZvcm0gPSBnZXRQbGF0Zm9ybSgpO1xuXG4gIGlmIChwbGF0Zm9ybSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHBsYXRmb3JtLmNodW5rRm9yU3ltYm9sKHJlZlN5bWJvbCwgY2h1bmssIHFybC5kZXY/LmZpbGUpO1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIGNodW5rID0gcmVzdWx0WzFdO1xuICAgICAgaWYgKCFxcmwuJHJlZlN5bWJvbCQpIHtcbiAgICAgICAgc3ltYm9sID0gcmVzdWx0WzBdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdzZXJpYWxpemVRUkw6IENhbm5vdCByZXNvbHZlIHN5bWJvbCcsIHN5bWJvbCwgJ2luJywgY2h1bmssIHFybC5kZXY/LmZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChxUnVudGltZVFybCAmJiBjaHVuayA9PSBudWxsKSB7XG4gICAgY2h1bmsgPSAnL3J1bnRpbWVRUkwnO1xuICAgIHN5bWJvbCA9ICdfJztcbiAgfVxuICBpZiAoY2h1bmsgPT0gbnVsbCkge1xuICAgIHRocm93IHFFcnJvcihRRXJyb3JfcXJsTWlzc2luZ0NodW5rLCBxcmwuJHN5bWJvbCQpO1xuICB9XG4gIGlmIChjaHVuay5zdGFydHNXaXRoKCcuLycpKSB7XG4gICAgY2h1bmsgPSBjaHVuay5zbGljZSgyKTtcbiAgfVxuICBpZiAoaXNTeW5jUXJsKHFybCkpIHtcbiAgICBpZiAob3B0cy4kY29udGFpbmVyU3RhdGUkKSB7XG4gICAgICBjb25zdCBmbiA9IHFybC5yZXNvbHZlZCBhcyBGdW5jdGlvbjtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclN0YXRlID0gb3B0cy4kY29udGFpbmVyU3RhdGUkO1xuICAgICAgY29uc3QgZm5TdHJLZXkgPSAoKGZuIGFzIGFueSkuc2VyaWFsaXplZCBhcyBzdHJpbmcpIHx8IGZuLnRvU3RyaW5nKCk7XG4gICAgICBsZXQgaWQgPSBjb250YWluZXJTdGF0ZS4kaW5saW5lRm5zJC5nZXQoZm5TdHJLZXkpO1xuICAgICAgaWYgKGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWQgPSBjb250YWluZXJTdGF0ZS4kaW5saW5lRm5zJC5zaXplO1xuICAgICAgICBjb250YWluZXJTdGF0ZS4kaW5saW5lRm5zJC5zZXQoZm5TdHJLZXksIGlkKTtcbiAgICAgIH1cbiAgICAgIHN5bWJvbCA9IFN0cmluZyhpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93RXJyb3JBbmRTdG9wKCdTeW5jIFFSTCB3aXRob3V0IGNvbnRhaW5lclN0YXRlJyk7XG4gICAgfVxuICB9XG4gIGxldCBvdXRwdXQgPSBgJHtjaHVua30jJHtzeW1ib2x9YDtcbiAgY29uc3QgY2FwdHVyZSA9IHFybC4kY2FwdHVyZSQ7XG4gIGNvbnN0IGNhcHR1cmVSZWYgPSBxcmwuJGNhcHR1cmVSZWYkO1xuICBpZiAoY2FwdHVyZVJlZiAmJiBjYXB0dXJlUmVmLmxlbmd0aCkge1xuICAgIGlmIChvcHRzLiRnZXRPYmpJZCQpIHtcbiAgICAgIG91dHB1dCArPSBgWyR7bWFwSm9pbihjYXB0dXJlUmVmLCBvcHRzLiRnZXRPYmpJZCQsICcgJyl9XWA7XG4gICAgfSBlbHNlIGlmIChvcHRzLiRhZGRSZWZNYXAkKSB7XG4gICAgICBvdXRwdXQgKz0gYFske21hcEpvaW4oY2FwdHVyZVJlZiwgb3B0cy4kYWRkUmVmTWFwJCwgJyAnKX1dYDtcbiAgICB9XG4gIH0gZWxzZSBpZiAoY2FwdHVyZSAmJiBjYXB0dXJlLmxlbmd0aCA+IDApIHtcbiAgICBvdXRwdXQgKz0gYFske2NhcHR1cmUuam9pbignICcpfV1gO1xuICB9XG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VyaWFsaXplUVJMcyA9IChcbiAgZXhpc3RpbmdRUkxzOiBRUkxJbnRlcm5hbDxhbnk+W10sXG4gIGNvbnRhaW5lclN0YXRlOiBDb250YWluZXJTdGF0ZSxcbiAgZWxDdHg6IFFDb250ZXh0XG4pOiBzdHJpbmcgPT4ge1xuICBhc3NlcnRFbGVtZW50KGVsQ3R4LiRlbGVtZW50JCk7XG4gIGNvbnN0IG9wdHM6IFFSTFNlcmlhbGl6ZU9wdGlvbnMgPSB7XG4gICAgJGNvbnRhaW5lclN0YXRlJDogY29udGFpbmVyU3RhdGUsXG4gICAgJGFkZFJlZk1hcCQ6IChvYmopID0+IGFkZFRvQXJyYXkoZWxDdHguJHJlZk1hcCQsIG9iaiksXG4gIH07XG4gIHJldHVybiBtYXBKb2luKGV4aXN0aW5nUVJMcywgKHFybCkgPT4gc2VyaWFsaXplUVJMKHFybCwgb3B0cyksICdcXG4nKTtcbn07XG5cbi8qKiBgLi9jaHVuayNzeW1ib2xbY2FwdHVyZXNdICovXG5leHBvcnQgY29uc3QgcGFyc2VRUkwgPSA8VCA9IGFueT4ocXJsOiBzdHJpbmcsIGNvbnRhaW5lckVsPzogRWxlbWVudCk6IFFSTEludGVybmFsPFQ+ID0+IHtcbiAgY29uc3QgZW5kSWR4ID0gcXJsLmxlbmd0aDtcbiAgY29uc3QgaGFzaElkeCA9IGluZGV4T2YocXJsLCAwLCAnIycpO1xuICBjb25zdCBjYXB0dXJlSWR4ID0gaW5kZXhPZihxcmwsIGhhc2hJZHgsICdbJyk7XG5cbiAgY29uc3QgY2h1bmtFbmRJZHggPSBNYXRoLm1pbihoYXNoSWR4LCBjYXB0dXJlSWR4KTtcbiAgY29uc3QgY2h1bmsgPSBxcmwuc3Vic3RyaW5nKDAsIGNodW5rRW5kSWR4KTtcblxuICBjb25zdCBzeW1ib2xTdGFydElkeCA9IGhhc2hJZHggPT0gZW5kSWR4ID8gaGFzaElkeCA6IGhhc2hJZHggKyAxO1xuICBjb25zdCBzeW1ib2xFbmRJZHggPSBjYXB0dXJlSWR4O1xuICBjb25zdCBzeW1ib2wgPVxuICAgIHN5bWJvbFN0YXJ0SWR4ID09IHN5bWJvbEVuZElkeCA/ICdkZWZhdWx0JyA6IHFybC5zdWJzdHJpbmcoc3ltYm9sU3RhcnRJZHgsIHN5bWJvbEVuZElkeCk7XG5cbiAgY29uc3QgY2FwdHVyZVN0YXJ0SWR4ID0gY2FwdHVyZUlkeDtcbiAgY29uc3QgY2FwdHVyZUVuZElkeCA9IGVuZElkeDtcbiAgY29uc3QgY2FwdHVyZSA9XG4gICAgY2FwdHVyZVN0YXJ0SWR4ID09PSBjYXB0dXJlRW5kSWR4XG4gICAgICA/IEVNUFRZX0FSUkFZXG4gICAgICA6IHFybC5zdWJzdHJpbmcoY2FwdHVyZVN0YXJ0SWR4ICsgMSwgY2FwdHVyZUVuZElkeCAtIDEpLnNwbGl0KCcgJyk7XG5cbiAgY29uc3QgaVFybCA9IGNyZWF0ZVFSTDxhbnk+KGNodW5rLCBzeW1ib2wsIG51bGwsIG51bGwsIGNhcHR1cmUsIG51bGwsIG51bGwpO1xuICBpZiAoY29udGFpbmVyRWwpIHtcbiAgICBpUXJsLiRzZXRDb250YWluZXIkKGNvbnRhaW5lckVsKTtcbiAgfVxuICByZXR1cm4gaVFybCBhcyBRUkxJbnRlcm5hbDxUPjtcbn07XG5cbmNvbnN0IGluZGV4T2YgPSAodGV4dDogc3RyaW5nLCBzdGFydElkeDogbnVtYmVyLCBjaGFyOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgZW5kSWR4ID0gdGV4dC5sZW5ndGg7XG4gIGNvbnN0IGNoYXJJZHggPSB0ZXh0LmluZGV4T2YoY2hhciwgc3RhcnRJZHggPT0gZW5kSWR4ID8gMCA6IHN0YXJ0SWR4KTtcbiAgcmV0dXJuIGNoYXJJZHggPT0gLTEgPyBlbmRJZHggOiBjaGFySWR4O1xufTtcblxuY29uc3QgYWRkVG9BcnJheSA9IChhcnJheTogYW55W10sIG9iajogYW55KSA9PiB7XG4gIGNvbnN0IGluZGV4ID0gYXJyYXkuaW5kZXhPZihvYmopO1xuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgYXJyYXkucHVzaChvYmopO1xuICAgIHJldHVybiBTdHJpbmcoYXJyYXkubGVuZ3RoIC0gMSk7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyhpbmRleCk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5mbGF0ZVFybCA9IChxcmw6IFFSTEludGVybmFsLCBlbEN0eDogUUNvbnRleHQpID0+IHtcbiAgYXNzZXJ0RGVmaW5lZChxcmwuJGNhcHR1cmUkLCAnaW52b2tlOiBxcmwgY2FwdHVyZSBtdXN0IGJlIGRlZmluZWQgaW5zaWRlIHVzZUxleGljYWxTY29wZSgpJywgcXJsKTtcbiAgcmV0dXJuIChxcmwuJGNhcHR1cmVSZWYkID0gcXJsLiRjYXB0dXJlJC5tYXAoKGlkeCkgPT4ge1xuICAgIGNvbnN0IGludCA9IHBhcnNlSW50KGlkeCwgMTApO1xuICAgIGNvbnN0IG9iaiA9IGVsQ3R4LiRyZWZNYXAkW2ludF07XG4gICAgYXNzZXJ0VHJ1ZShlbEN0eC4kcmVmTWFwJC5sZW5ndGggPiBpbnQsICdvdXQgb2YgYm91bmRzIGluZmxhdGUgYWNjZXNzJywgaWR4KTtcbiAgICByZXR1cm4gb2JqO1xuICB9KSk7XG59O1xuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgY29uc3QgX3JlZ1N5bWJvbCA9IChzeW1ib2w6IGFueSwgaGFzaDogc3RyaW5nKSA9PiB7XG4gIGlmICh0eXBlb2YgKGdsb2JhbFRoaXMgYXMgYW55KS5fX3F3aWtfcmVnX3N5bWJvbHMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgKGdsb2JhbFRoaXMgYXMgYW55KS5fX3F3aWtfcmVnX3N5bWJvbHMgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICB9XG4gIChnbG9iYWxUaGlzIGFzIGFueSkuX19xd2lrX3JlZ19zeW1ib2xzLnNldChoYXNoLCBzeW1ib2wpO1xuICByZXR1cm4gc3ltYm9sO1xufTtcbiJdfQ==","import { $ } from '../qrl/qrl.public';\nimport { assertQrl } from '../qrl/qrl-class';\nimport { runResource, TaskFlagsIsDirty, TaskFlagsIsResource, Task, } from './use-task';\nimport { Fragment, jsx } from '../render/jsx/jsx-runtime';\nimport { isServerPlatform } from '../platform/platform';\nimport { untrack, useBindInvokeContext } from './use-core';\nimport { useSequentialScope } from './use-sequential-scope';\nimport { createProxy } from '../state/store';\nimport { getProxyTarget } from '../state/common';\nimport { isSignal } from '../state/signal';\nimport { isObject } from '../util/types';\nimport { isPromise } from '../util/promises';\n// <docs markdown=\"../readme.md#useResource\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useResource instead)\n/**\n * This method works like an async memoized function that runs whenever some tracked value changes\n * and returns some data.\n *\n * `useResource` however returns immediate a `ResourceReturn` object that contains the data and a\n * state that indicates if the data is available or not.\n *\n * The status can be one of the following:\n *\n * - `pending` - the data is not yet available.\n * - `resolved` - the data is available.\n * - `rejected` - the data is not available due to an error or timeout.\n *\n * Avoid using a `try/catch` statement in `useResource$`. If you catch the error instead of passing\n * it, the resource status will never be `rejected`.\n *\n * ### Example\n *\n * Example showing how `useResource` to perform a fetch to request the weather, whenever the input\n * city name changes.\n *\n * ```tsx\n * const Cmp = component$(() => {\n *   const cityS = useSignal('');\n *\n *   const weatherResource = useResource$(async ({ track, cleanup }) => {\n *     const cityName = track(cityS);\n *     const abortController = new AbortController();\n *     cleanup(() => abortController.abort('cleanup'));\n *     const res = await fetch(`http://weatherdata.com?city=${cityName}`, {\n *       signal: abortController.signal,\n *     });\n *     const data = await res.json();\n *     return data as { temp: number };\n *   });\n *\n *   return (\n *     <div>\n *       <input name=\"city\" bind:value={cityS} />\n *       <Resource\n *         value={weatherResource}\n *         onResolved={(weather) => {\n *           return <div>Temperature: {weather.temp}</div>;\n *         }}\n *       />\n *     </div>\n *   );\n * });\n * ```\n *\n * @public\n * @see Resource\n * @see ResourceReturn\n */\n// </docs>\nexport const useResourceQrl = (qrl, opts) => {\n    const { val, set, i, iCtx, elCtx } = useSequentialScope();\n    if (val != null) {\n        return val;\n    }\n    assertQrl(qrl);\n    const containerState = iCtx.$renderCtx$.$static$.$containerState$;\n    const resource = createResourceReturn(containerState, opts);\n    const el = elCtx.$element$;\n    const task = new Task(TaskFlagsIsDirty | TaskFlagsIsResource, i, el, qrl, resource);\n    const previousWait = Promise.all(iCtx.$waitOn$.slice());\n    runResource(task, containerState, iCtx.$renderCtx$, previousWait);\n    if (!elCtx.$tasks$) {\n        elCtx.$tasks$ = [];\n    }\n    elCtx.$tasks$.push(task);\n    set(resource);\n    return resource;\n};\n// <docs markdown=\"../readme.md#useResource\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useResource instead)\n/**\n * This method works like an async memoized function that runs whenever some tracked value changes\n * and returns some data.\n *\n * `useResource` however returns immediate a `ResourceReturn` object that contains the data and a\n * state that indicates if the data is available or not.\n *\n * The status can be one of the following:\n *\n * - 'pending' - the data is not yet available.\n * - 'resolved' - the data is available.\n * - 'rejected' - the data is not available due to an error or timeout.\n *\n * ### Example\n *\n * Example showing how `useResource` to perform a fetch to request the weather, whenever the input\n * city name changes.\n *\n * ```tsx\n * const Cmp = component$(() => {\n *   const cityS = useSignal('');\n *\n *   const weatherResource = useResource$(async ({ track, cleanup }) => {\n *     const cityName = track(cityS);\n *     const abortController = new AbortController();\n *     cleanup(() => abortController.abort('cleanup'));\n *     const res = await fetch(`http://weatherdata.com?city=${cityName}`, {\n *       signal: abortController.signal,\n *     });\n *     const data = await res.json();\n *     return data as { temp: number };\n *   });\n *\n *   return (\n *     <div>\n *       <input name=\"city\" bind:value={cityS} />\n *       <Resource\n *         value={weatherResource}\n *         onResolved={(weather) => {\n *           return <div>Temperature: {weather.temp}</div>;\n *         }}\n *       />\n *     </div>\n *   );\n * });\n * ```\n *\n * @public\n * @see Resource\n * @see ResourceReturn\n */\n// </docs>\nexport const useResource$ = (generatorFn, opts) => {\n    return useResourceQrl($(generatorFn), opts);\n};\n// <docs markdown=\"../readme.md#useResource\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useResource instead)\n/**\n * This method works like an async memoized function that runs whenever some tracked value changes\n * and returns some data.\n *\n * `useResource` however returns immediate a `ResourceReturn` object that contains the data and a\n * state that indicates if the data is available or not.\n *\n * The status can be one of the following:\n *\n * - 'pending' - the data is not yet available.\n * - 'resolved' - the data is available.\n * - 'rejected' - the data is not available due to an error or timeout.\n *\n * ### Example\n *\n * Example showing how `useResource` to perform a fetch to request the weather, whenever the input\n * city name changes.\n *\n * ```tsx\n * const Cmp = component$(() => {\n *   const cityS = useSignal('');\n *\n *   const weatherResource = useResource$(async ({ track, cleanup }) => {\n *     const cityName = track(cityS);\n *     const abortController = new AbortController();\n *     cleanup(() => abortController.abort('cleanup'));\n *     const res = await fetch(`http://weatherdata.com?city=${cityName}`, {\n *       signal: abortController.signal,\n *     });\n *     const data = await res.json();\n *     return data as { temp: number };\n *   });\n *\n *   return (\n *     <div>\n *       <input name=\"city\" bind:value={cityS} />\n *       <Resource\n *         value={weatherResource}\n *         onResolved={(weather) => {\n *           return <div>Temperature: {weather.temp}</div>;\n *         }}\n *       />\n *     </div>\n *   );\n * });\n * ```\n *\n * @public\n * @see Resource\n * @see ResourceReturn\n */\n// </docs>\nexport const Resource = (props) => {\n    // Resource path\n    return jsx(Fragment, {\n        children: getResourceValueAsPromise(props),\n    });\n};\nfunction getResourceValueAsPromise(props) {\n    const resource = props.value;\n    if (isResourceReturn(resource)) {\n        const isBrowser = !isServerPlatform();\n        if (isBrowser) {\n            if (props.onRejected) {\n                resource.value.catch(() => { });\n                if (resource._state === 'rejected') {\n                    return Promise.resolve(resource._error).then(useBindInvokeContext(props.onRejected));\n                }\n            }\n            if (props.onPending) {\n                const state = resource._state;\n                if (state === 'resolved') {\n                    return Promise.resolve(resource._resolved).then(useBindInvokeContext(props.onResolved));\n                }\n                else if (state === 'pending') {\n                    return Promise.resolve().then(useBindInvokeContext(props.onPending));\n                }\n                else if (state === 'rejected') {\n                    throw resource._error;\n                }\n            }\n            if (untrack(() => resource._resolved) !== undefined) {\n                return Promise.resolve(resource._resolved).then(useBindInvokeContext(props.onResolved));\n            }\n        }\n        const value = resource.value;\n        if (value) {\n            return value.then(useBindInvokeContext(props.onResolved), useBindInvokeContext(props.onRejected));\n        }\n        else {\n            // this is temporary value until the `runResource` is executed and promise is assigned to the value\n            return Promise.resolve(undefined);\n        }\n    }\n    else if (isPromise(resource)) {\n        return resource.then(useBindInvokeContext(props.onResolved), useBindInvokeContext(props.onRejected));\n    }\n    else if (isSignal(resource)) {\n        return Promise.resolve(resource.value).then(useBindInvokeContext(props.onResolved), useBindInvokeContext(props.onRejected));\n    }\n    else {\n        return Promise.resolve(resource).then(useBindInvokeContext(props.onResolved), useBindInvokeContext(props.onRejected));\n    }\n}\nexport const _createResourceReturn = (opts) => {\n    const resource = {\n        __brand: 'resource',\n        value: undefined,\n        loading: isServerPlatform() ? false : true,\n        _resolved: undefined,\n        _error: undefined,\n        _state: 'pending',\n        _timeout: opts?.timeout ?? -1,\n        _cache: 0,\n    };\n    return resource;\n};\nexport const createResourceReturn = (containerState, opts, initialPromise) => {\n    const result = _createResourceReturn(opts);\n    result.value = initialPromise;\n    const resource = createProxy(result, containerState, undefined);\n    return resource;\n};\nexport const getInternalResource = (resource) => {\n    return getProxyTarget(resource);\n};\nexport const isResourceReturn = (obj) => {\n    return isObject(obj) && obj.__brand === 'resource';\n};\nexport const serializeResource = (resource, getObjId) => {\n    const state = resource._state;\n    if (state === 'resolved') {\n        return `0 ${getObjId(resource._resolved)}`;\n    }\n    else if (state === 'pending') {\n        return `1`;\n    }\n    else {\n        return `2 ${getObjId(resource._error)}`;\n    }\n};\nexport const parseResourceReturn = (data) => {\n    const [first, id] = data.split(' ');\n    const result = _createResourceReturn(undefined);\n    result.value = Promise.resolve();\n    if (first === '0') {\n        result._state = 'resolved';\n        result._resolved = id;\n        result.loading = false;\n    }\n    else if (first === '1') {\n        result._state = 'pending';\n        result.value = new Promise(() => { });\n        result.loading = true;\n    }\n    else if (first === '2') {\n        result._state = 'rejected';\n        result._error = id;\n        result.loading = false;\n    }\n    return result;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXJlc291cmNlLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3VzZS91c2UtcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLENBQUMsRUFBWSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBSUwsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsSUFBSSxHQUVMLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUczRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQWUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQWlCN0MsNkNBQTZDO0FBQzdDLHlDQUF5QztBQUN6QywwQ0FBMEM7QUFDMUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcURHO0FBQ0gsVUFBVTtBQUNWLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUM1QixHQUF1QixFQUN2QixJQUFzQixFQUNILEVBQUU7SUFDckIsTUFBTSxFQUFF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TSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBSSxJQUFZLEVBQTZCLEVBQUU7SUFDaEYsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFJLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBUyxDQUFDO0lBQ3hDLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsRUFBUyxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7U0FBTSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUN6QixNQUFNLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUMxQixNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7U0FBTSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUN6QixNQUFNLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztRQUMzQixNQUFNLENBQUMsTUFBTSxHQUFHLEVBQVMsQ0FBQztRQUMxQixNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgJCwgdHlwZSBRUkwgfSBmcm9tICcuLi9xcmwvcXJsLnB1YmxpYyc7XG5pbXBvcnQgeyBhc3NlcnRRcmwgfSBmcm9tICcuLi9xcmwvcXJsLWNsYXNzJztcbmltcG9ydCB7XG4gIHR5cGUgUmVzb3VyY2VSZXR1cm4sXG4gIHR5cGUgUmVzb3VyY2VEZXNjcmlwdG9yLFxuICB0eXBlIFJlc291cmNlRm4sXG4gIHJ1blJlc291cmNlLFxuICBUYXNrRmxhZ3NJc0RpcnR5LFxuICBUYXNrRmxhZ3NJc1Jlc291cmNlLFxuICBUYXNrLFxuICB0eXBlIFJlc291cmNlUmV0dXJuSW50ZXJuYWwsXG59IGZyb20gJy4vdXNlLXRhc2snO1xuaW1wb3J0IHsgRnJhZ21lbnQsIGpzeCB9IGZyb20gJy4uL3JlbmRlci9qc3gvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgaXNTZXJ2ZXJQbGF0Zm9ybSB9IGZyb20gJy4uL3BsYXRmb3JtL3BsYXRmb3JtJztcbmltcG9ydCB7IHVudHJhY2ssIHVzZUJpbmRJbnZva2VDb250ZXh0IH0gZnJvbSAnLi91c2UtY29yZSc7XG5cbmltcG9ydCB0eXBlIHsgQ29udGFpbmVyU3RhdGUsIEdldE9iaklEIH0gZnJvbSAnLi4vY29udGFpbmVyL2NvbnRhaW5lcic7XG5pbXBvcnQgeyB1c2VTZXF1ZW50aWFsU2NvcGUgfSBmcm9tICcuL3VzZS1zZXF1ZW50aWFsLXNjb3BlJztcbmltcG9ydCB7IGNyZWF0ZVByb3h5IH0gZnJvbSAnLi4vc3RhdGUvc3RvcmUnO1xuaW1wb3J0IHsgZ2V0UHJveHlUYXJnZXQgfSBmcm9tICcuLi9zdGF0ZS9jb21tb24nO1xuaW1wb3J0IHsgaXNTaWduYWwsIHR5cGUgU2lnbmFsIH0gZnJvbSAnLi4vc3RhdGUvc2lnbmFsJztcbmltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnLi4vdXRpbC90eXBlcyc7XG5pbXBvcnQgeyBpc1Byb21pc2UgfSBmcm9tICcuLi91dGlsL3Byb21pc2VzJztcbmltcG9ydCB0eXBlIHsgSlNYT3V0cHV0IH0gZnJvbSAnLi4vcmVuZGVyL2pzeC90eXBlcy9qc3gtbm9kZSc7XG5cbi8qKlxuICogT3B0aW9ucyB0byBwYXNzIHRvIGB1c2VSZXNvdXJjZSQoKWBcbiAqXG4gKiBAcHVibGljXG4gKiBAc2VlIHVzZVJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiBJZiB0aGUgcmVzb3VyY2UgdGFrZXMgbW9yZSB0aGFuIHRoZSBzcGVjaWZpZWQgbWlsbGlzZWNvbmQsIGl0IHdpbGxcbiAgICogdGltZW91dC4gUmVzdWx0aW5nIG9uIGEgcmVqZWN0ZWQgcmVzb3VyY2UuXG4gICAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xufVxuXG4vLyA8ZG9jcyBtYXJrZG93bj1cIi4uL3JlYWRtZS5tZCN1c2VSZXNvdXJjZVwiPlxuLy8gISFETyBOT1QgRURJVCBUSElTIENPTU1FTlQgRElSRUNUTFkhISFcbi8vIChlZGl0IC4uL3JlYWRtZS5tZCN1c2VSZXNvdXJjZSBpbnN0ZWFkKVxuLyoqXG4gKiBUaGlzIG1ldGhvZCB3b3JrcyBsaWtlIGFuIGFzeW5jIG1lbW9pemVkIGZ1bmN0aW9uIHRoYXQgcnVucyB3aGVuZXZlciBzb21lIHRyYWNrZWQgdmFsdWUgY2hhbmdlc1xuICogYW5kIHJldHVybnMgc29tZSBkYXRhLlxuICpcbiAqIGB1c2VSZXNvdXJjZWAgaG93ZXZlciByZXR1cm5zIGltbWVkaWF0ZSBhIGBSZXNvdXJjZVJldHVybmAgb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIGRhdGEgYW5kIGFcbiAqIHN0YXRlIHRoYXQgaW5kaWNhdGVzIGlmIHRoZSBkYXRhIGlzIGF2YWlsYWJsZSBvciBub3QuXG4gKlxuICogVGhlIHN0YXR1cyBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6XG4gKlxuICogLSBgcGVuZGluZ2AgLSB0aGUgZGF0YSBpcyBub3QgeWV0IGF2YWlsYWJsZS5cbiAqIC0gYHJlc29sdmVkYCAtIHRoZSBkYXRhIGlzIGF2YWlsYWJsZS5cbiAqIC0gYHJlamVjdGVkYCAtIHRoZSBkYXRhIGlzIG5vdCBhdmFpbGFibGUgZHVlIHRvIGFuIGVycm9yIG9yIHRpbWVvdXQuXG4gKlxuICogQXZvaWQgdXNpbmcgYSBgdHJ5L2NhdGNoYCBzdGF0ZW1lbnQgaW4gYHVzZVJlc291cmNlJGAuIElmIHlvdSBjYXRjaCB0aGUgZXJyb3IgaW5zdGVhZCBvZiBwYXNzaW5nXG4gKiBpdCwgdGhlIHJlc291cmNlIHN0YXR1cyB3aWxsIG5ldmVyIGJlIGByZWplY3RlZGAuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBFeGFtcGxlIHNob3dpbmcgaG93IGB1c2VSZXNvdXJjZWAgdG8gcGVyZm9ybSBhIGZldGNoIHRvIHJlcXVlc3QgdGhlIHdlYXRoZXIsIHdoZW5ldmVyIHRoZSBpbnB1dFxuICogY2l0eSBuYW1lIGNoYW5nZXMuXG4gKlxuICogYGBgdHN4XG4gKiBjb25zdCBDbXAgPSBjb21wb25lbnQkKCgpID0+IHtcbiAqICAgY29uc3QgY2l0eVMgPSB1c2VTaWduYWwoJycpO1xuICpcbiAqICAgY29uc3Qgd2VhdGhlclJlc291cmNlID0gdXNlUmVzb3VyY2UkKGFzeW5jICh7IHRyYWNrLCBjbGVhbnVwIH0pID0+IHtcbiAqICAgICBjb25zdCBjaXR5TmFtZSA9IHRyYWNrKGNpdHlTKTtcbiAqICAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gKiAgICAgY2xlYW51cCgoKSA9PiBhYm9ydENvbnRyb2xsZXIuYWJvcnQoJ2NsZWFudXAnKSk7XG4gKiAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYGh0dHA6Ly93ZWF0aGVyZGF0YS5jb20/Y2l0eT0ke2NpdHlOYW1lfWAsIHtcbiAqICAgICAgIHNpZ25hbDogYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAqICAgICB9KTtcbiAqICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcbiAqICAgICByZXR1cm4gZGF0YSBhcyB7IHRlbXA6IG51bWJlciB9O1xuICogICB9KTtcbiAqXG4gKiAgIHJldHVybiAoXG4gKiAgICAgPGRpdj5cbiAqICAgICAgIDxpbnB1dCBuYW1lPVwiY2l0eVwiIGJpbmQ6dmFsdWU9e2NpdHlTfSAvPlxuICogICAgICAgPFJlc291cmNlXG4gKiAgICAgICAgIHZhbHVlPXt3ZWF0aGVyUmVzb3VyY2V9XG4gKiAgICAgICAgIG9uUmVzb2x2ZWQ9eyh3ZWF0aGVyKSA9PiB7XG4gKiAgICAgICAgICAgcmV0dXJuIDxkaXY+VGVtcGVyYXR1cmU6IHt3ZWF0aGVyLnRlbXB9PC9kaXY+O1xuICogICAgICAgICB9fVxuICogICAgICAgLz5cbiAqICAgICA8L2Rpdj5cbiAqICAgKTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHB1YmxpY1xuICogQHNlZSBSZXNvdXJjZVxuICogQHNlZSBSZXNvdXJjZVJldHVyblxuICovXG4vLyA8L2RvY3M+XG5leHBvcnQgY29uc3QgdXNlUmVzb3VyY2VRcmwgPSA8VD4oXG4gIHFybDogUVJMPFJlc291cmNlRm48VD4+LFxuICBvcHRzPzogUmVzb3VyY2VPcHRpb25zXG4pOiBSZXNvdXJjZVJldHVybjxUPiA9PiB7XG4gIGNvbnN0IHsgdmFsLCBzZXQsIGksIGlDdHgsIGVsQ3R4IH0gPSB1c2VTZXF1ZW50aWFsU2NvcGU8UmVzb3VyY2VSZXR1cm48VD4+KCk7XG4gIGlmICh2YWwgIT0gbnVsbCkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cbiAgYXNzZXJ0UXJsKHFybCk7XG5cbiAgY29uc3QgY29udGFpbmVyU3RhdGUgPSBpQ3R4LiRyZW5kZXJDdHgkLiRzdGF0aWMkLiRjb250YWluZXJTdGF0ZSQ7XG4gIGNvbnN0IHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2VSZXR1cm48VD4oY29udGFpbmVyU3RhdGUsIG9wdHMpO1xuICBjb25zdCBlbCA9IGVsQ3R4LiRlbGVtZW50JDtcbiAgY29uc3QgdGFzayA9IG5ldyBUYXNrKFxuICAgIFRhc2tGbGFnc0lzRGlydHkgfCBUYXNrRmxhZ3NJc1Jlc291cmNlLFxuICAgIGksXG4gICAgZWwsXG4gICAgcXJsLFxuICAgIHJlc291cmNlXG4gICkgYXMgUmVzb3VyY2VEZXNjcmlwdG9yPGFueT47XG4gIGNvbnN0IHByZXZpb3VzV2FpdCA9IFByb21pc2UuYWxsKGlDdHguJHdhaXRPbiQuc2xpY2UoKSk7XG4gIHJ1blJlc291cmNlKHRhc2ssIGNvbnRhaW5lclN0YXRlLCBpQ3R4LiRyZW5kZXJDdHgkLCBwcmV2aW91c1dhaXQpO1xuICBpZiAoIWVsQ3R4LiR0YXNrcyQpIHtcbiAgICBlbEN0eC4kdGFza3MkID0gW107XG4gIH1cbiAgZWxDdHguJHRhc2tzJC5wdXNoKHRhc2spO1xuICBzZXQocmVzb3VyY2UpO1xuXG4gIHJldHVybiByZXNvdXJjZTtcbn07XG5cbi8vIDxkb2NzIG1hcmtkb3duPVwiLi4vcmVhZG1lLm1kI3VzZVJlc291cmNlXCI+XG4vLyAhIURPIE5PVCBFRElUIFRISVMgQ09NTUVOVCBESVJFQ1RMWSEhIVxuLy8gKGVkaXQgLi4vcmVhZG1lLm1kI3VzZVJlc291cmNlIGluc3RlYWQpXG4vKipcbiAqIFRoaXMgbWV0aG9kIHdvcmtzIGxpa2UgYW4gYXN5bmMgbWVtb2l6ZWQgZnVuY3Rpb24gdGhhdCBydW5zIHdoZW5ldmVyIHNvbWUgdHJhY2tlZCB2YWx1ZSBjaGFuZ2VzXG4gKiBhbmQgcmV0dXJucyBzb21lIGRhdGEuXG4gKlxuICogYHVzZVJlc291cmNlYCBob3dldmVyIHJldHVybnMgaW1tZWRpYXRlIGEgYFJlc291cmNlUmV0dXJuYCBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgZGF0YSBhbmQgYVxuICogc3RhdGUgdGhhdCBpbmRpY2F0ZXMgaWYgdGhlIGRhdGEgaXMgYXZhaWxhYmxlIG9yIG5vdC5cbiAqXG4gKiBUaGUgc3RhdHVzIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzpcbiAqXG4gKiAtICdwZW5kaW5nJyAtIHRoZSBkYXRhIGlzIG5vdCB5ZXQgYXZhaWxhYmxlLlxuICogLSAncmVzb2x2ZWQnIC0gdGhlIGRhdGEgaXMgYXZhaWxhYmxlLlxuICogLSAncmVqZWN0ZWQnIC0gdGhlIGRhdGEgaXMgbm90IGF2YWlsYWJsZSBkdWUgdG8gYW4gZXJyb3Igb3IgdGltZW91dC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIEV4YW1wbGUgc2hvd2luZyBob3cgYHVzZVJlc291cmNlYCB0byBwZXJmb3JtIGEgZmV0Y2ggdG8gcmVxdWVzdCB0aGUgd2VhdGhlciwgd2hlbmV2ZXIgdGhlIGlucHV0XG4gKiBjaXR5IG5hbWUgY2hhbmdlcy5cbiAqXG4gKiBgYGB0c3hcbiAqIGNvbnN0IENtcCA9IGNvbXBvbmVudCQoKCkgPT4ge1xuICogICBjb25zdCBjaXR5UyA9IHVzZVNpZ25hbCgnJyk7XG4gKlxuICogICBjb25zdCB3ZWF0aGVyUmVzb3VyY2UgPSB1c2VSZXNvdXJjZSQoYXN5bmMgKHsgdHJhY2ssIGNsZWFudXAgfSkgPT4ge1xuICogICAgIGNvbnN0IGNpdHlOYW1lID0gdHJhY2soY2l0eVMpO1xuICogICAgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAqICAgICBjbGVhbnVwKCgpID0+IGFib3J0Q29udHJvbGxlci5hYm9ydCgnY2xlYW51cCcpKTtcbiAqICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChgaHR0cDovL3dlYXRoZXJkYXRhLmNvbT9jaXR5PSR7Y2l0eU5hbWV9YCwge1xuICogICAgICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICogICAgIH0pO1xuICogICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXMuanNvbigpO1xuICogICAgIHJldHVybiBkYXRhIGFzIHsgdGVtcDogbnVtYmVyIH07XG4gKiAgIH0pO1xuICpcbiAqICAgcmV0dXJuIChcbiAqICAgICA8ZGl2PlxuICogICAgICAgPGlucHV0IG5hbWU9XCJjaXR5XCIgYmluZDp2YWx1ZT17Y2l0eVN9IC8+XG4gKiAgICAgICA8UmVzb3VyY2VcbiAqICAgICAgICAgdmFsdWU9e3dlYXRoZXJSZXNvdXJjZX1cbiAqICAgICAgICAgb25SZXNvbHZlZD17KHdlYXRoZXIpID0+IHtcbiAqICAgICAgICAgICByZXR1cm4gPGRpdj5UZW1wZXJhdHVyZToge3dlYXRoZXIudGVtcH08L2Rpdj47XG4gKiAgICAgICAgIH19XG4gKiAgICAgICAvPlxuICogICAgIDwvZGl2PlxuICogICApO1xuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAcHVibGljXG4gKiBAc2VlIFJlc291cmNlXG4gKiBAc2VlIFJlc291cmNlUmV0dXJuXG4gKi9cbi8vIDwvZG9jcz5cbmV4cG9ydCBjb25zdCB1c2VSZXNvdXJjZSQgPSA8VD4oXG4gIGdlbmVyYXRvckZuOiBSZXNvdXJjZUZuPFQ+LFxuICBvcHRzPzogUmVzb3VyY2VPcHRpb25zXG4pOiBSZXNvdXJjZVJldHVybjxUPiA9PiB7XG4gIHJldHVybiB1c2VSZXNvdXJjZVFybDxUPigkKGdlbmVyYXRvckZuKSwgb3B0cyk7XG59O1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVByb3BzPFQ+IHtcbiAgcmVhZG9ubHkgdmFsdWU6IFJlc291cmNlUmV0dXJuPFQ+IHwgU2lnbmFsPFByb21pc2U8VD4gfCBUPiB8IFByb21pc2U8VD47XG4gIG9uUmVzb2x2ZWQ6ICh2YWx1ZTogVCkgPT4gSlNYT3V0cHV0IHwgUHJvbWlzZTxKU1hPdXRwdXQ+O1xuICBvblBlbmRpbmc/OiAoKSA9PiBKU1hPdXRwdXQgfCBQcm9taXNlPEpTWE91dHB1dD47XG4gIG9uUmVqZWN0ZWQ/OiAocmVhc29uOiBFcnJvcikgPT4gSlNYT3V0cHV0IHwgUHJvbWlzZTxKU1hPdXRwdXQ+O1xufVxuXG4vLyA8ZG9jcyBtYXJrZG93bj1cIi4uL3JlYWRtZS5tZCN1c2VSZXNvdXJjZVwiPlxuLy8gISFETyBOT1QgRURJVCBUSElTIENPTU1FTlQgRElSRUNUTFkhISFcbi8vIChlZGl0IC4uL3JlYWRtZS5tZCN1c2VSZXNvdXJjZSBpbnN0ZWFkKVxuLyoqXG4gKiBUaGlzIG1ldGhvZCB3b3JrcyBsaWtlIGFuIGFzeW5jIG1lbW9pemVkIGZ1bmN0aW9uIHRoYXQgcnVucyB3aGVuZXZlciBzb21lIHRyYWNrZWQgdmFsdWUgY2hhbmdlc1xuICogYW5kIHJldHVybnMgc29tZSBkYXRhLlxuICpcbiAqIGB1c2VSZXNvdXJjZWAgaG93ZXZlciByZXR1cm5zIGltbWVkaWF0ZSBhIGBSZXNvdXJjZVJldHVybmAgb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIGRhdGEgYW5kIGFcbiAqIHN0YXRlIHRoYXQgaW5kaWNhdGVzIGlmIHRoZSBkYXRhIGlzIGF2YWlsYWJsZSBvciBub3QuXG4gKlxuICogVGhlIHN0YXR1cyBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6XG4gKlxuICogLSAncGVuZGluZycgLSB0aGUgZGF0YSBpcyBub3QgeWV0IGF2YWlsYWJsZS5cbiAqIC0gJ3Jlc29sdmVkJyAtIHRoZSBkYXRhIGlzIGF2YWlsYWJsZS5cbiAqIC0gJ3JlamVjdGVkJyAtIHRoZSBkYXRhIGlzIG5vdCBhdmFpbGFibGUgZHVlIHRvIGFuIGVycm9yIG9yIHRpbWVvdXQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBFeGFtcGxlIHNob3dpbmcgaG93IGB1c2VSZXNvdXJjZWAgdG8gcGVyZm9ybSBhIGZldGNoIHRvIHJlcXVlc3QgdGhlIHdlYXRoZXIsIHdoZW5ldmVyIHRoZSBpbnB1dFxuICogY2l0eSBuYW1lIGNoYW5nZXMuXG4gKlxuICogYGBgdHN4XG4gKiBjb25zdCBDbXAgPSBjb21wb25lbnQkKCgpID0+IHtcbiAqICAgY29uc3QgY2l0eVMgPSB1c2VTaWduYWwoJycpO1xuICpcbiAqICAgY29uc3Qgd2VhdGhlclJlc291cmNlID0gdXNlUmVzb3VyY2UkKGFzeW5jICh7IHRyYWNrLCBjbGVhbnVwIH0pID0+IHtcbiAqICAgICBjb25zdCBjaXR5TmFtZSA9IHRyYWNrKGNpdHlTKTtcbiAqICAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gKiAgICAgY2xlYW51cCgoKSA9PiBhYm9ydENvbnRyb2xsZXIuYWJvcnQoJ2NsZWFudXAnKSk7XG4gKiAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYGh0dHA6Ly93ZWF0aGVyZGF0YS5jb20/Y2l0eT0ke2NpdHlOYW1lfWAsIHtcbiAqICAgICAgIHNpZ25hbDogYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAqICAgICB9KTtcbiAqICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcbiAqICAgICByZXR1cm4gZGF0YSBhcyB7IHRlbXA6IG51bWJlciB9O1xuICogICB9KTtcbiAqXG4gKiAgIHJldHVybiAoXG4gKiAgICAgPGRpdj5cbiAqICAgICAgIDxpbnB1dCBuYW1lPVwiY2l0eVwiIGJpbmQ6dmFsdWU9e2NpdHlTfSAvPlxuICogICAgICAgPFJlc291cmNlXG4gKiAgICAgICAgIHZhbHVlPXt3ZWF0aGVyUmVzb3VyY2V9XG4gKiAgICAgICAgIG9uUmVzb2x2ZWQ9eyh3ZWF0aGVyKSA9PiB7XG4gKiAgICAgICAgICAgcmV0dXJuIDxkaXY+VGVtcGVyYXR1cmU6IHt3ZWF0aGVyLnRlbXB9PC9kaXY+O1xuICogICAgICAgICB9fVxuICogICAgICAgLz5cbiAqICAgICA8L2Rpdj5cbiAqICAgKTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHB1YmxpY1xuICogQHNlZSBSZXNvdXJjZVxuICogQHNlZSBSZXNvdXJjZVJldHVyblxuICovXG4vLyA8L2RvY3M+XG5leHBvcnQgY29uc3QgUmVzb3VyY2UgPSA8VD4ocHJvcHM6IFJlc291cmNlUHJvcHM8VD4pOiBKU1hPdXRwdXQgPT4ge1xuICAvLyBSZXNvdXJjZSBwYXRoXG4gIHJldHVybiBqc3goRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogZ2V0UmVzb3VyY2VWYWx1ZUFzUHJvbWlzZShwcm9wcyksXG4gIH0pO1xufTtcbmZ1bmN0aW9uIGdldFJlc291cmNlVmFsdWVBc1Byb21pc2U8VD4ocHJvcHM6IFJlc291cmNlUHJvcHM8VD4pOiBQcm9taXNlPEpTWE91dHB1dD4gfCBKU1hPdXRwdXQge1xuICBjb25zdCByZXNvdXJjZSA9IHByb3BzLnZhbHVlIGFzIFJlc291cmNlUmV0dXJuSW50ZXJuYWw8VD4gfCBQcm9taXNlPFQ+IHwgU2lnbmFsPFQ+O1xuICBpZiAoaXNSZXNvdXJjZVJldHVybihyZXNvdXJjZSkpIHtcbiAgICBjb25zdCBpc0Jyb3dzZXIgPSAhaXNTZXJ2ZXJQbGF0Zm9ybSgpO1xuICAgIGlmIChpc0Jyb3dzZXIpIHtcbiAgICAgIGlmIChwcm9wcy5vblJlamVjdGVkKSB7XG4gICAgICAgIHJlc291cmNlLnZhbHVlLmNhdGNoKCgpID0+IHt9KTtcbiAgICAgICAgaWYgKHJlc291cmNlLl9zdGF0ZSA9PT0gJ3JlamVjdGVkJykge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzb3VyY2UuX2Vycm9yISkudGhlbih1c2VCaW5kSW52b2tlQ29udGV4dChwcm9wcy5vblJlamVjdGVkKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5vblBlbmRpbmcpIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSByZXNvdXJjZS5fc3RhdGU7XG4gICAgICAgIGlmIChzdGF0ZSA9PT0gJ3Jlc29sdmVkJykge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzb3VyY2UuX3Jlc29sdmVkISkudGhlbih1c2VCaW5kSW52b2tlQ29udGV4dChwcm9wcy5vblJlc29sdmVkKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09ICdwZW5kaW5nJykge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKHVzZUJpbmRJbnZva2VDb250ZXh0KHByb3BzLm9uUGVuZGluZykpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSAncmVqZWN0ZWQnKSB7XG4gICAgICAgICAgdGhyb3cgcmVzb3VyY2UuX2Vycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodW50cmFjaygoKSA9PiByZXNvdXJjZS5fcmVzb2x2ZWQpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNvdXJjZS5fcmVzb2x2ZWQhKS50aGVuKHVzZUJpbmRJbnZva2VDb250ZXh0KHByb3BzLm9uUmVzb2x2ZWQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSByZXNvdXJjZS52YWx1ZTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZS50aGVuKFxuICAgICAgICB1c2VCaW5kSW52b2tlQ29udGV4dChwcm9wcy5vblJlc29sdmVkKSxcbiAgICAgICAgdXNlQmluZEludm9rZUNvbnRleHQocHJvcHMub25SZWplY3RlZClcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoaXMgaXMgdGVtcG9yYXJ5IHZhbHVlIHVudGlsIHRoZSBgcnVuUmVzb3VyY2VgIGlzIGV4ZWN1dGVkIGFuZCBwcm9taXNlIGlzIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc1Byb21pc2UocmVzb3VyY2UpKSB7XG4gICAgcmV0dXJuIHJlc291cmNlLnRoZW4oXG4gICAgICB1c2VCaW5kSW52b2tlQ29udGV4dChwcm9wcy5vblJlc29sdmVkKSxcbiAgICAgIHVzZUJpbmRJbnZva2VDb250ZXh0KHByb3BzLm9uUmVqZWN0ZWQpXG4gICAgKTtcbiAgfSBlbHNlIGlmIChpc1NpZ25hbChyZXNvdXJjZSkpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc291cmNlLnZhbHVlKS50aGVuKFxuICAgICAgdXNlQmluZEludm9rZUNvbnRleHQocHJvcHMub25SZXNvbHZlZCksXG4gICAgICB1c2VCaW5kSW52b2tlQ29udGV4dChwcm9wcy5vblJlamVjdGVkKVxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNvdXJjZSBhcyBUKS50aGVuKFxuICAgICAgdXNlQmluZEludm9rZUNvbnRleHQocHJvcHMub25SZXNvbHZlZCksXG4gICAgICB1c2VCaW5kSW52b2tlQ29udGV4dChwcm9wcy5vblJlamVjdGVkKVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IF9jcmVhdGVSZXNvdXJjZVJldHVybiA9IDxUPihvcHRzPzogUmVzb3VyY2VPcHRpb25zKTogUmVzb3VyY2VSZXR1cm5JbnRlcm5hbDxUPiA9PiB7XG4gIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZVJldHVybkludGVybmFsPFQ+ID0ge1xuICAgIF9fYnJhbmQ6ICdyZXNvdXJjZScsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCBhcyBuZXZlcixcbiAgICBsb2FkaW5nOiBpc1NlcnZlclBsYXRmb3JtKCkgPyBmYWxzZSA6IHRydWUsXG4gICAgX3Jlc29sdmVkOiB1bmRlZmluZWQgYXMgbmV2ZXIsXG4gICAgX2Vycm9yOiB1bmRlZmluZWQgYXMgbmV2ZXIsXG4gICAgX3N0YXRlOiAncGVuZGluZycsXG4gICAgX3RpbWVvdXQ6IG9wdHM/LnRpbWVvdXQgPz8gLTEsXG4gICAgX2NhY2hlOiAwLFxuICB9O1xuICByZXR1cm4gcmVzb3VyY2U7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlUmVzb3VyY2VSZXR1cm4gPSA8VD4oXG4gIGNvbnRhaW5lclN0YXRlOiBDb250YWluZXJTdGF0ZSxcbiAgb3B0cz86IFJlc291cmNlT3B0aW9ucyxcbiAgaW5pdGlhbFByb21pc2U/OiBQcm9taXNlPFQ+XG4pOiBSZXNvdXJjZVJldHVybkludGVybmFsPFQ+ID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gX2NyZWF0ZVJlc291cmNlUmV0dXJuPFQ+KG9wdHMpO1xuICByZXN1bHQudmFsdWUgPSBpbml0aWFsUHJvbWlzZSBhcyBhbnk7XG4gIGNvbnN0IHJlc291cmNlID0gY3JlYXRlUHJveHkocmVzdWx0LCBjb250YWluZXJTdGF0ZSwgdW5kZWZpbmVkKTtcbiAgcmV0dXJuIHJlc291cmNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEludGVybmFsUmVzb3VyY2UgPSA8VD4ocmVzb3VyY2U6IFJlc291cmNlUmV0dXJuPFQ+KTogUmVzb3VyY2VSZXR1cm5JbnRlcm5hbDxUPiA9PiB7XG4gIHJldHVybiBnZXRQcm94eVRhcmdldChyZXNvdXJjZSkgYXMgYW55O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUmVzb3VyY2VSZXR1cm4gPSAob2JqOiBhbnkpOiBvYmogaXMgUmVzb3VyY2VSZXR1cm48dW5rbm93bj4gPT4ge1xuICByZXR1cm4gaXNPYmplY3Qob2JqKSAmJiAob2JqIGFzIGFueSkuX19icmFuZCA9PT0gJ3Jlc291cmNlJztcbn07XG5cbmV4cG9ydCBjb25zdCBzZXJpYWxpemVSZXNvdXJjZSA9IChcbiAgcmVzb3VyY2U6IFJlc291cmNlUmV0dXJuSW50ZXJuYWw8dW5rbm93bj4sXG4gIGdldE9iaklkOiBHZXRPYmpJRFxuKSA9PiB7XG4gIGNvbnN0IHN0YXRlID0gcmVzb3VyY2UuX3N0YXRlO1xuICBpZiAoc3RhdGUgPT09ICdyZXNvbHZlZCcpIHtcbiAgICByZXR1cm4gYDAgJHtnZXRPYmpJZChyZXNvdXJjZS5fcmVzb2x2ZWQpfWA7XG4gIH0gZWxzZSBpZiAoc3RhdGUgPT09ICdwZW5kaW5nJykge1xuICAgIHJldHVybiBgMWA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGAyICR7Z2V0T2JqSWQocmVzb3VyY2UuX2Vycm9yKX1gO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VSZXNvdXJjZVJldHVybiA9IDxUPihkYXRhOiBzdHJpbmcpOiBSZXNvdXJjZVJldHVybkludGVybmFsPFQ+ID0+IHtcbiAgY29uc3QgW2ZpcnN0LCBpZF0gPSBkYXRhLnNwbGl0KCcgJyk7XG4gIGNvbnN0IHJlc3VsdCA9IF9jcmVhdGVSZXNvdXJjZVJldHVybjxUPih1bmRlZmluZWQpO1xuICByZXN1bHQudmFsdWUgPSBQcm9taXNlLnJlc29sdmUoKSBhcyBhbnk7XG4gIGlmIChmaXJzdCA9PT0gJzAnKSB7XG4gICAgcmVzdWx0Ll9zdGF0ZSA9ICdyZXNvbHZlZCc7XG4gICAgcmVzdWx0Ll9yZXNvbHZlZCA9IGlkIGFzIGFueTtcbiAgICByZXN1bHQubG9hZGluZyA9IGZhbHNlO1xuICB9IGVsc2UgaWYgKGZpcnN0ID09PSAnMScpIHtcbiAgICByZXN1bHQuX3N0YXRlID0gJ3BlbmRpbmcnO1xuICAgIHJlc3VsdC52YWx1ZSA9IG5ldyBQcm9taXNlKCgpID0+IHt9KTtcbiAgICByZXN1bHQubG9hZGluZyA9IHRydWU7XG4gIH0gZWxzZSBpZiAoZmlyc3QgPT09ICcyJykge1xuICAgIHJlc3VsdC5fc3RhdGUgPSAncmVqZWN0ZWQnO1xuICAgIHJlc3VsdC5fZXJyb3IgPSBpZCBhcyBhbnk7XG4gICAgcmVzdWx0LmxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbiJdfQ==","import { QSlotS } from '../../util/markers';\nimport { Virtual, _jsxC } from './jsx-runtime';\n/**\n * Allows to project the children of the current component. `<Slot/>` can only be used within the\n * context of a component defined with `component$`.\n *\n * @public\n */\nexport const Slot = (props) => {\n    return _jsxC(Virtual, {\n        [QSlotS]: '',\n    }, 0, props.name ?? '');\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvdC5wdWJsaWMuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvcmVuZGVyL2pzeC9zbG90LnB1YmxpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0M7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBRVosQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUNiLE9BQU8sS0FBSyxDQUNWLE9BQU8sRUFDUDtRQUNFLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRTtLQUNiLEVBQ0QsQ0FBQyxFQUNELEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUNqQixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUVNsb3RTIH0gZnJvbSAnLi4vLi4vdXRpbC9tYXJrZXJzJztcbmltcG9ydCB7IFZpcnR1YWwsIF9qc3hDIH0gZnJvbSAnLi9qc3gtcnVudGltZSc7XG5pbXBvcnQgdHlwZSB7IEZ1bmN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi90eXBlcy9qc3gtbm9kZSc7XG5cbi8qKlxuICogQWxsb3dzIHRvIHByb2plY3QgdGhlIGNoaWxkcmVuIG9mIHRoZSBjdXJyZW50IGNvbXBvbmVudC4gYDxTbG90Lz5gIGNhbiBvbmx5IGJlIHVzZWQgd2l0aGluIHRoZVxuICogY29udGV4dCBvZiBhIGNvbXBvbmVudCBkZWZpbmVkIHdpdGggYGNvbXBvbmVudCRgLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IFNsb3Q6IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgbmFtZT86IHN0cmluZztcbn0+ID0gKHByb3BzKSA9PiB7XG4gIHJldHVybiBfanN4QyhcbiAgICBWaXJ0dWFsLFxuICAgIHtcbiAgICAgIFtRU2xvdFNdOiAnJyxcbiAgICB9LFxuICAgIDAsXG4gICAgcHJvcHMubmFtZSA/PyAnJ1xuICApO1xufTtcbiJdfQ==","import { componentQrl, isQwikComponent, } from '../component/component.public';\nimport { parseQRL, serializeQRL } from '../qrl/qrl';\nimport { isQrl } from '../qrl/qrl-class';\nimport { intToStr } from './container';\nimport { isResourceReturn, parseResourceReturn, serializeResource } from '../use/use-resource';\nimport { isSubscriberDescriptor, parseTask, serializeTask, } from '../use/use-task';\nimport { isDocument } from '../util/element';\nimport { QObjectSignalFlags, SIGNAL_IMMUTABLE, SignalDerived, SignalImpl, SignalWrapper, } from '../state/signal';\nimport { collectSubscriptions, collectValue, mapJoin } from './pause';\nimport { fastWeakSerialize, getSubscriptionManager, LocalSubscriptionManager, } from '../state/common';\nimport { getOrCreateProxy } from '../state/store';\nimport { QObjectManagerSymbol } from '../state/constants';\nimport { serializeDerivedSignalFunc } from '../qrl/inlined-fn';\nimport { assertString, assertTrue } from '../error/assert';\nimport { Fragment, JSXNodeImpl, isJSXNode } from '../render/jsx/jsx-runtime';\nimport { Slot } from '../render/jsx/slot.public';\n/**\n * - 0, 8, 9, A, B, C, D\n * - `\\0`: null character (U+0000 NULL) (only if the next character is not a decimal digit; else it’s\n *   an octal escape sequence)\n * - `\\b`: backspace (U+0008 BACKSPACE)\n * - `\\t`: horizontal tab (U+0009 CHARACTER TABULATION)\n * - `\\n`: line feed (U+000A LINE FEED)\n * - `\\v`: vertical tab (U+000B LINE TABULATION)\n * - `\\f`: form feed (U+000C FORM FEED)\n * - `\\r`: carriage return (U+000D CARRIAGE RETURN)\n * - `\\\"`: double quote (U+0022 QUOTATION MARK)\n * - `\\'`: single quote (U+0027 APOSTROPHE)\n * - `\\\\`: backslash (U+005C REVERSE SOLIDUS)\n */\nexport const UNDEFINED_PREFIX = '\\u0001';\n/**\n * Normalize the shape of the serializer for better inline-cache performance.\n *\n * @param serializer\n * @returns\n */\nfunction serializer(serializer) {\n    return {\n        $prefixCode$: serializer.$prefix$.charCodeAt(0),\n        $prefixChar$: serializer.$prefix$,\n        $test$: serializer.$test$,\n        $serialize$: serializer.$serialize$,\n        $prepare$: serializer.$prepare$,\n        $fill$: serializer.$fill$,\n        $collect$: serializer.$collect$,\n        $subs$: serializer.$subs$,\n    };\n}\nconst QRLSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u0002',\n    $test$: (v) => isQrl(v),\n    $collect$: (v, collector, leaks) => {\n        if (v.$captureRef$) {\n            for (const item of v.$captureRef$) {\n                collectValue(item, collector, leaks);\n            }\n        }\n        if (collector.$prefetch$ === 0) {\n            collector.$qrls$.push(v);\n        }\n    },\n    $serialize$: (obj, getObjId) => {\n        return serializeQRL(obj, {\n            $getObjId$: getObjId,\n        });\n    },\n    $prepare$: (data, containerState) => {\n        return parseQRL(data, containerState.$containerEl$);\n    },\n    $fill$: (qrl, getObject) => {\n        if (qrl.$capture$ && qrl.$capture$.length > 0) {\n            qrl.$captureRef$ = qrl.$capture$.map(getObject);\n            qrl.$capture$ = null;\n        }\n    },\n});\nconst TaskSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u0003',\n    $test$: (v) => isSubscriberDescriptor(v),\n    $collect$: (v, collector, leaks) => {\n        collectValue(v.$qrl$, collector, leaks);\n        if (v.$state$) {\n            collectValue(v.$state$, collector, leaks);\n            if (leaks === true && v.$state$ instanceof SignalImpl) {\n                collectSubscriptions(v.$state$[QObjectManagerSymbol], collector, true);\n            }\n        }\n    },\n    $serialize$: (obj, getObjId) => serializeTask(obj, getObjId),\n    $prepare$: (data) => parseTask(data),\n    $fill$: (task, getObject) => {\n        task.$el$ = getObject(task.$el$);\n        task.$qrl$ = getObject(task.$qrl$);\n        if (task.$state$) {\n            task.$state$ = getObject(task.$state$);\n        }\n    },\n});\nconst ResourceSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u0004',\n    $test$: (v) => isResourceReturn(v),\n    $collect$: (obj, collector, leaks) => {\n        collectValue(obj.value, collector, leaks);\n        collectValue(obj._resolved, collector, leaks);\n    },\n    $serialize$: (obj, getObjId) => {\n        return serializeResource(obj, getObjId);\n    },\n    $prepare$: (data) => {\n        return parseResourceReturn(data);\n    },\n    $fill$: (resource, getObject) => {\n        if (resource._state === 'resolved') {\n            resource._resolved = getObject(resource._resolved);\n            resource.value = Promise.resolve(resource._resolved);\n        }\n        else if (resource._state === 'rejected') {\n            const p = Promise.reject(resource._error);\n            p.catch(() => null);\n            resource._error = getObject(resource._error);\n            resource.value = p;\n        }\n    },\n});\nconst URLSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u0005',\n    $test$: (v) => v instanceof URL,\n    $serialize$: (obj) => obj.href,\n    $prepare$: (data) => new URL(data),\n});\nconst DateSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u0006',\n    $test$: (v) => v instanceof Date,\n    $serialize$: (obj) => obj.toISOString(),\n    $prepare$: (data) => new Date(data),\n});\nconst RegexSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u0007',\n    $test$: (v) => v instanceof RegExp,\n    $serialize$: (obj) => `${obj.flags} ${obj.source}`,\n    $prepare$: (data) => {\n        const space = data.indexOf(' ');\n        const source = data.slice(space + 1);\n        const flags = data.slice(0, space);\n        return new RegExp(source, flags);\n    },\n});\nconst ErrorSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u000E',\n    $test$: (v) => v instanceof Error,\n    $serialize$: (obj) => {\n        return obj.message;\n    },\n    $prepare$: (text) => {\n        const err = new Error(text);\n        err.stack = undefined;\n        return err;\n    },\n});\nconst DocumentSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u000F',\n    $test$: (v) => !!v && typeof v === 'object' && isDocument(v),\n    $prepare$: (_, _c, doc) => {\n        return doc;\n    },\n});\nexport const SERIALIZABLE_STATE = Symbol('serializable-data');\nconst ComponentSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u0010',\n    $test$: (obj) => isQwikComponent(obj),\n    $serialize$: (obj, getObjId) => {\n        const [qrl] = obj[SERIALIZABLE_STATE];\n        return serializeQRL(qrl, {\n            $getObjId$: getObjId,\n        });\n    },\n    $prepare$: (data, containerState) => {\n        const qrl = parseQRL(data, containerState.$containerEl$);\n        return componentQrl(qrl);\n    },\n    $fill$: (component, getObject) => {\n        const [qrl] = component[SERIALIZABLE_STATE];\n        if (qrl.$capture$?.length) {\n            qrl.$captureRef$ = qrl.$capture$.map(getObject);\n            qrl.$capture$ = null;\n        }\n    },\n});\nconst DerivedSignalSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u0011',\n    $test$: (obj) => obj instanceof SignalDerived,\n    $collect$: (obj, collector, leaks) => {\n        if (obj.$args$) {\n            for (const arg of obj.$args$) {\n                collectValue(arg, collector, leaks);\n            }\n        }\n    },\n    $serialize$: (signal, getObjID, collector) => {\n        const serialized = serializeDerivedSignalFunc(signal);\n        let index = collector.$inlinedFunctions$.indexOf(serialized);\n        if (index < 0) {\n            index = collector.$inlinedFunctions$.length;\n            collector.$inlinedFunctions$.push(serialized);\n        }\n        return mapJoin(signal.$args$, getObjID, ' ') + ' @' + intToStr(index);\n    },\n    $prepare$: (data) => {\n        const ids = data.split(' ');\n        const args = ids.slice(0, -1);\n        const fn = ids[ids.length - 1];\n        return new SignalDerived(fn, args, fn);\n    },\n    $fill$: (fn, getObject) => {\n        assertString(fn.$func$, 'fn.$func$ should be a string');\n        fn.$func$ = getObject(fn.$func$);\n        fn.$args$ = fn.$args$.map(getObject);\n    },\n});\nconst SignalSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u0012',\n    $test$: (v) => v instanceof SignalImpl,\n    $collect$: (obj, collector, leaks) => {\n        collectValue(obj.untrackedValue, collector, leaks);\n        const mutable = (obj[QObjectSignalFlags] & SIGNAL_IMMUTABLE) === 0;\n        if (leaks === true && mutable) {\n            collectSubscriptions(obj[QObjectManagerSymbol], collector, true);\n        }\n        return obj;\n    },\n    $serialize$: (obj, getObjId) => {\n        return getObjId(obj.untrackedValue);\n    },\n    $prepare$: (data, containerState) => {\n        return new SignalImpl(data, containerState?.$subsManager$?.$createManager$(), 0);\n    },\n    $subs$: (signal, subs) => {\n        signal[QObjectManagerSymbol].$addSubs$(subs);\n    },\n    $fill$: (signal, getObject) => {\n        signal.untrackedValue = getObject(signal.untrackedValue);\n    },\n});\nconst SignalWrapperSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u0013',\n    $test$: (v) => v instanceof SignalWrapper,\n    $collect$(obj, collector, leaks) {\n        collectValue(obj.ref, collector, leaks);\n        if (fastWeakSerialize(obj.ref)) {\n            const localManager = getSubscriptionManager(obj.ref);\n            if (isTreeShakeable(collector.$containerState$.$subsManager$, localManager, leaks)) {\n                collectValue(obj.ref[obj.prop], collector, leaks);\n            }\n        }\n        return obj;\n    },\n    $serialize$: (obj, getObjId) => {\n        return `${getObjId(obj.ref)} ${obj.prop}`;\n    },\n    $prepare$: (data) => {\n        const [id, prop] = data.split(' ');\n        return new SignalWrapper(id, prop);\n    },\n    $fill$: (signal, getObject) => {\n        signal.ref = getObject(signal.ref);\n    },\n});\nconst NoFiniteNumberSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u0014',\n    $test$: (v) => typeof v === 'number',\n    $serialize$: (v) => {\n        return String(v);\n    },\n    $prepare$: (data) => {\n        return Number(data);\n    },\n});\nconst URLSearchParamsSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u0015',\n    $test$: (v) => v instanceof URLSearchParams,\n    $serialize$: (obj) => obj.toString(),\n    $prepare$: (data) => new URLSearchParams(data),\n});\nconst FormDataSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u0016',\n    $test$: (v) => typeof FormData !== 'undefined' && v instanceof globalThis.FormData,\n    $serialize$: (formData) => {\n        const array = [];\n        formData.forEach((value, key) => {\n            if (typeof value === 'string') {\n                array.push([key, value]);\n            }\n            else {\n                array.push([key, value.name]);\n            }\n        });\n        return JSON.stringify(array);\n    },\n    $prepare$: (data) => {\n        const array = JSON.parse(data);\n        const formData = new FormData();\n        for (const [key, value] of array) {\n            formData.append(key, value);\n        }\n        return formData;\n    },\n});\nconst JSXNodeSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u0017',\n    $test$: (v) => isJSXNode(v),\n    $collect$: (node, collector, leaks) => {\n        collectValue(node.children, collector, leaks);\n        collectValue(node.props, collector, leaks);\n        collectValue(node.immutableProps, collector, leaks);\n        collectValue(node.key, collector, leaks);\n        let type = node.type;\n        if (type === Slot) {\n            type = ':slot';\n        }\n        else if (type === Fragment) {\n            type = ':fragment';\n        }\n        collectValue(type, collector, leaks);\n    },\n    $serialize$: (node, getObjID) => {\n        let type = node.type;\n        if (type === Slot) {\n            type = ':slot';\n        }\n        else if (type === Fragment) {\n            type = ':fragment';\n        }\n        return `${getObjID(type)} ${getObjID(node.props)} ${getObjID(node.immutableProps)} ${getObjID(node.key)} ${getObjID(node.children)} ${node.flags}`;\n    },\n    $prepare$: (data) => {\n        const [type, props, immutableProps, key, children, flags] = data.split(' ');\n        const node = new JSXNodeImpl(type, props, immutableProps, children, parseInt(flags, 10), key);\n        return node;\n    },\n    $fill$: (node, getObject) => {\n        node.type = getResolveJSXType(getObject(node.type));\n        node.props = getObject(node.props);\n        node.immutableProps = getObject(node.immutableProps);\n        node.key = getObject(node.key);\n        node.children = getObject(node.children);\n    },\n});\nconst BigIntSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u0018',\n    $test$: (v) => typeof v === 'bigint',\n    $serialize$: (v) => {\n        return v.toString();\n    },\n    $prepare$: (data) => {\n        return BigInt(data);\n    },\n});\nconst Uint8ArraySerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u001c',\n    $test$: (v) => v instanceof Uint8Array,\n    $serialize$: (v) => {\n        let buf = '';\n        for (const c of v) {\n            buf += String.fromCharCode(c);\n        }\n        return btoa(buf).replace(/=+$/, '');\n    },\n    $prepare$: (data) => {\n        const buf = atob(data);\n        const bytes = new Uint8Array(buf.length);\n        let i = 0;\n        for (const s of buf) {\n            bytes[i++] = s.charCodeAt(0);\n        }\n        return bytes;\n    },\n    $fill$: undefined,\n});\nconst DATA = Symbol();\nconst SetSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u0019',\n    $test$: (v) => v instanceof Set,\n    $collect$: (set, collector, leaks) => {\n        set.forEach((value) => collectValue(value, collector, leaks));\n    },\n    $serialize$: (v, getObjID) => {\n        return Array.from(v).map(getObjID).join(' ');\n    },\n    $prepare$: (data) => {\n        const set = new Set();\n        set[DATA] = data;\n        return set;\n    },\n    $fill$: (set, getObject) => {\n        const data = set[DATA];\n        set[DATA] = undefined;\n        assertString(data, 'SetSerializer should be defined');\n        const items = data.length === 0 ? [] : data.split(' ');\n        for (const id of items) {\n            set.add(getObject(id));\n        }\n    },\n});\nconst MapSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u001a',\n    $test$: (v) => v instanceof Map,\n    $collect$: (map, collector, leaks) => {\n        map.forEach((value, key) => {\n            collectValue(value, collector, leaks);\n            collectValue(key, collector, leaks);\n        });\n    },\n    $serialize$: (map, getObjID) => {\n        const result = [];\n        map.forEach((value, key) => {\n            result.push(getObjID(key) + ' ' + getObjID(value));\n        });\n        return result.join(' ');\n    },\n    $prepare$: (data) => {\n        const set = new Map();\n        set[DATA] = data;\n        return set;\n    },\n    $fill$: (set, getObject) => {\n        const data = set[DATA];\n        set[DATA] = undefined;\n        assertString(data, 'SetSerializer should be defined');\n        const items = data.length === 0 ? [] : data.split(' ');\n        assertTrue(items.length % 2 === 0, 'MapSerializer should have even number of items');\n        for (let i = 0; i < items.length; i += 2) {\n            set.set(getObject(items[i]), getObject(items[i + 1]));\n        }\n    },\n});\nconst StringSerializer = /*#__PURE__*/ serializer({\n    $prefix$: '\\u001b',\n    $test$: (v) => !!getSerializer(v) || v === UNDEFINED_PREFIX,\n    $serialize$: (v) => v,\n    $prepare$: (data) => data,\n});\nconst serializers = [\n    // NULL                       \\u0000\n    // UNDEFINED_PREFIX           \\u0001\n    QRLSerializer, ////////////// \\u0002\n    TaskSerializer, ///////////// \\u0003\n    ResourceSerializer, ///////// \\u0004\n    URLSerializer, ////////////// \\u0005\n    DateSerializer, ///////////// \\u0006\n    RegexSerializer, //////////// \\u0007\n    // BACKSPACE                  \\u0008\n    // HORIZONTAL TAB             \\u0009\n    // NEW LINE                   \\u000A\n    // VERTICAL TAB               \\u000B\n    // FORM FEED                  \\u000C\n    // CARRIAGE RETURN            \\u000D\n    ErrorSerializer, //////////// \\u000E\n    DocumentSerializer, ///////// \\u000F\n    ComponentSerializer, //////// \\u0010\n    DerivedSignalSerializer, //// \\u0011\n    SignalSerializer, /////////// \\u0012\n    SignalWrapperSerializer, //// \\u0013\n    NoFiniteNumberSerializer, /// \\u0014\n    URLSearchParamsSerializer, // \\u0015\n    FormDataSerializer, ///////// \\u0016\n    JSXNodeSerializer, ////////// \\u0017\n    BigIntSerializer, /////////// \\u0018\n    SetSerializer, ////////////// \\u0019\n    MapSerializer, ////////////// \\u001a\n    StringSerializer, /////////// \\u001b\n    Uint8ArraySerializer, /////// \\u001c\n];\nconst serializerByPrefix = /*#__PURE__*/ (() => {\n    const serializerByPrefix = [];\n    serializers.forEach((s) => {\n        const prefix = s.$prefixCode$;\n        while (serializerByPrefix.length < prefix) {\n            serializerByPrefix.push(undefined);\n        }\n        serializerByPrefix.push(s);\n    });\n    return serializerByPrefix;\n})();\nexport function getSerializer(obj) {\n    if (typeof obj === 'string') {\n        const prefix = obj.charCodeAt(0);\n        if (prefix < serializerByPrefix.length) {\n            return serializerByPrefix[prefix];\n        }\n    }\n    return undefined;\n}\nconst collectorSerializers = /*#__PURE__*/ serializers.filter((a) => a.$collect$);\nexport const canSerialize = (obj) => {\n    for (const s of serializers) {\n        if (s.$test$(obj)) {\n            return true;\n        }\n    }\n    return false;\n};\nexport const collectDeps = (obj, collector, leaks) => {\n    for (const s of collectorSerializers) {\n        if (s.$test$(obj)) {\n            s.$collect$(obj, collector, leaks);\n            return true;\n        }\n    }\n    return false;\n};\nexport const serializeValue = (obj, getObjID, collector, containerState) => {\n    for (const s of serializers) {\n        if (s.$test$(obj)) {\n            let value = s.$prefixChar$;\n            if (s.$serialize$) {\n                value += s.$serialize$(obj, getObjID, collector, containerState);\n            }\n            return value;\n        }\n    }\n    if (typeof obj === 'string') {\n        return obj;\n    }\n    return undefined;\n};\nexport const createParser = (containerState, doc) => {\n    const fillMap = new Map();\n    const subsMap = new Map();\n    return {\n        prepare(data) {\n            const serializer = getSerializer(data);\n            if (serializer) {\n                const value = serializer.$prepare$(data.slice(1), containerState, doc);\n                if (serializer.$fill$) {\n                    fillMap.set(value, serializer);\n                }\n                if (serializer.$subs$) {\n                    subsMap.set(value, serializer);\n                }\n                return value;\n            }\n            return data;\n        },\n        subs(obj, subs) {\n            const serializer = subsMap.get(obj);\n            if (serializer) {\n                serializer.$subs$(obj, subs, containerState);\n                return true;\n            }\n            return false;\n        },\n        fill(obj, getObject) {\n            const serializer = fillMap.get(obj);\n            if (serializer) {\n                serializer.$fill$(obj, getObject, containerState);\n                return true;\n            }\n            return false;\n        },\n    };\n};\nexport const OBJECT_TRANSFORMS = {\n    '!': (obj, containerState) => {\n        return containerState.$proxyMap$.get(obj) ?? getOrCreateProxy(obj, containerState);\n    },\n    '~': (obj) => {\n        return Promise.resolve(obj);\n    },\n    _: (obj) => {\n        return Promise.reject(obj);\n    },\n};\nconst isTreeShakeable = (manager, target, leaks) => {\n    if (typeof leaks === 'boolean') {\n        return leaks;\n    }\n    const localManager = manager.$groupToManagers$.get(leaks);\n    if (localManager && localManager.length > 0) {\n        if (localManager.length === 1) {\n            return localManager[0] !== target;\n        }\n        return true;\n    }\n    return false;\n};\nconst getResolveJSXType = (type) => {\n    if (type === ':slot') {\n        return Slot;\n    }\n    if (type === ':fragment') {\n        return Fragment;\n    }\n    return type;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplcnMuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvY29udGFpbmVyL3NlcmlhbGl6ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxZQUFZLEVBQ1osZUFBZSxHQUVoQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQW9CLE1BQU0sa0JBQWtCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBMEQsTUFBTSxhQUFhLENBQUM7QUFDL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0YsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixTQUFTLEVBRVQsYUFBYSxHQUVkLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixVQUFVLEVBQ1YsYUFBYSxHQUNkLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFrQixvQkFBb0IsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3RGLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLHdCQUF3QixHQUd6QixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRS9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxF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LElBQUksS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUN6QixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIENvbXBvbmVudCxcbiAgY29tcG9uZW50UXJsLFxuICBpc1F3aWtDb21wb25lbnQsXG4gIHR5cGUgT25SZW5kZXJGbixcbn0gZnJvbSAnLi4vY29tcG9uZW50L2NvbXBvbmVudC5wdWJsaWMnO1xuaW1wb3J0IHsgcGFyc2VRUkwsIHNlcmlhbGl6ZVFSTCB9IGZyb20gJy4uL3FybC9xcmwnO1xuaW1wb3J0IHsgaXNRcmwsIHR5cGUgUVJMSW50ZXJuYWwgfSBmcm9tICcuLi9xcmwvcXJsLWNsYXNzJztcbmltcG9ydCB7IGludFRvU3RyLCB0eXBlIENvbnRhaW5lclN0YXRlLCB0eXBlIEdldE9iamVjdCwgdHlwZSBNdXN0R2V0T2JqSUQgfSBmcm9tICcuL2NvbnRhaW5lcic7XG5pbXBvcnQgeyBpc1Jlc291cmNlUmV0dXJuLCBwYXJzZVJlc291cmNlUmV0dXJuLCBzZXJpYWxpemVSZXNvdXJjZSB9IGZyb20gJy4uL3VzZS91c2UtcmVzb3VyY2UnO1xuaW1wb3J0IHtcbiAgaXNTdWJzY3JpYmVyRGVzY3JpcHRvcixcbiAgcGFyc2VUYXNrLFxuICB0eXBlIFJlc291cmNlUmV0dXJuSW50ZXJuYWwsXG4gIHNlcmlhbGl6ZVRhc2ssXG4gIHR5cGUgU3Vic2NyaWJlckVmZmVjdCxcbn0gZnJvbSAnLi4vdXNlL3VzZS10YXNrJztcbmltcG9ydCB7IGlzRG9jdW1lbnQgfSBmcm9tICcuLi91dGlsL2VsZW1lbnQnO1xuaW1wb3J0IHtcbiAgUU9iamVjdFNpZ25hbEZsYWdzLFxuICBTSUdOQUxfSU1NVVRBQkxFLFxuICBTaWduYWxEZXJpdmVkLFxuICBTaWduYWxJbXBsLFxuICBTaWduYWxXcmFwcGVyLFxufSBmcm9tICcuLi9zdGF0ZS9zaWduYWwnO1xuaW1wb3J0IHsgdHlwZSBDb2xsZWN0b3IsIGNvbGxlY3RTdWJzY3JpcHRpb25zLCBjb2xsZWN0VmFsdWUsIG1hcEpvaW4gfSBmcm9tICcuL3BhdXNlJztcbmltcG9ydCB7XG4gIGZhc3RXZWFrU2VyaWFsaXplLFxuICBnZXRTdWJzY3JpcHRpb25NYW5hZ2VyLFxuICBMb2NhbFN1YnNjcmlwdGlvbk1hbmFnZXIsXG4gIHR5cGUgU3Vic2NyaXB0aW9uTWFuYWdlcixcbiAgdHlwZSBTdWJzY3JpcHRpb25zLFxufSBmcm9tICcuLi9zdGF0ZS9jb21tb24nO1xuaW1wb3J0IHsgZ2V0T3JDcmVhdGVQcm94eSB9IGZyb20gJy4uL3N0YXRlL3N0b3JlJztcbmltcG9ydCB7IFFPYmplY3RNYW5hZ2VyU3ltYm9sIH0gZnJvbSAnLi4vc3RhdGUvY29uc3RhbnRzJztcbmltcG9ydCB7IHNlcmlhbGl6ZURlcml2ZWRTaWduYWxGdW5jIH0gZnJvbSAnLi4vcXJsL2lubGluZWQtZm4nO1xuaW1wb3J0IHR5cGUgeyBRd2lrRWxlbWVudCB9IGZyb20gJy4uL3JlbmRlci9kb20vdmlydHVhbC1lbGVtZW50JztcbmltcG9ydCB7IGFzc2VydFN0cmluZywgYXNzZXJ0VHJ1ZSB9IGZyb20gJy4uL2Vycm9yL2Fzc2VydCc7XG5pbXBvcnQgeyBGcmFnbWVudCwgSlNYTm9kZUltcGwsIGlzSlNYTm9kZSB9IGZyb20gJy4uL3JlbmRlci9qc3gvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgU2xvdCB9IGZyb20gJy4uL3JlbmRlci9qc3gvc2xvdC5wdWJsaWMnO1xuaW1wb3J0IHR5cGUgeyBKU1hOb2RlSW50ZXJuYWwgfSBmcm9tICcuLi9yZW5kZXIvanN4L3R5cGVzL2pzeC1ub2RlJztcblxuLyoqXG4gKiAtIDAsIDgsIDksIEEsIEIsIEMsIERcbiAqIC0gYFxcMGA6IG51bGwgY2hhcmFjdGVyIChVKzAwMDAgTlVMTCkgKG9ubHkgaWYgdGhlIG5leHQgY2hhcmFjdGVyIGlzIG5vdCBhIGRlY2ltYWwgZGlnaXQ7IGVsc2UgaXTigJlzXG4gKiAgIGFuIG9jdGFsIGVzY2FwZSBzZXF1ZW5jZSlcbiAqIC0gYFxcYmA6IGJhY2tzcGFjZSAoVSswMDA4IEJBQ0tTUEFDRSlcbiAqIC0gYFxcdGA6IGhvcml6b250YWwgdGFiIChVKzAwMDkgQ0hBUkFDVEVSIFRBQlVMQVRJT04pXG4gKiAtIGBcXG5gOiBsaW5lIGZlZWQgKFUrMDAwQSBMSU5FIEZFRUQpXG4gKiAtIGBcXHZgOiB2ZXJ0aWNhbCB0YWIgKFUrMDAwQiBMSU5FIFRBQlVMQVRJT04pXG4gKiAtIGBcXGZgOiBmb3JtIGZlZWQgKFUrMDAwQyBGT1JNIEZFRUQpXG4gKiAtIGBcXHJgOiBjYXJyaWFnZSByZXR1cm4gKFUrMDAwRCBDQVJSSUFHRSBSRVRVUk4pXG4gKiAtIGBcXFwiYDogZG91YmxlIHF1b3RlIChVKzAwMjIgUVVPVEFUSU9OIE1BUkspXG4gKiAtIGBcXCdgOiBzaW5nbGUgcXVvdGUgKFUrMDAyNyBBUE9TVFJPUEhFKVxuICogLSBgXFxcXGA6IGJhY2tzbGFzaCAoVSswMDVDIFJFVkVSU0UgU09MSURVUylcbiAqL1xuZXhwb3J0IGNvbnN0IFVOREVGSU5FRF9QUkVGSVggPSAnXFx1MDAwMSc7XG5cbmludGVyZmFjZSBTZXJpYWxpemVySW5wdXQ8VD4ge1xuICAvKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgdHlwZSAqL1xuICAkcHJlZml4JDogc3RyaW5nO1xuICAvKiogQ2FuIHRoaXMgc2VyaWFsaXplciBjYW4gc2VyaWFsaXplIHRoZSBnaXZlbiBvYmplY3Q/ICovXG4gICR0ZXN0JDogKG9iajogdW5rbm93bikgPT4gYm9vbGVhbjtcbiAgLyoqIENvbnZlcnQgdGhlIG9iamVjdCB0byBhIHN0cmluZy4gKi9cbiAgJHNlcmlhbGl6ZSQ/OlxuICAgIHwgKChcbiAgICAgICAgb2JqOiBULFxuICAgICAgICBnZXRPYmpJRDogTXVzdEdldE9iaklELFxuICAgICAgICBjb2xsZWN0b3I6IENvbGxlY3RvcixcbiAgICAgICAgY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlXG4gICAgICApID0+IHN0cmluZylcbiAgICB8IHVuZGVmaW5lZDtcblxuICAvKiogQ29sbGVjdCBhbGwgcmVsZXZhbnQgdmFsdWVzIGJlZm9yZSBzZXJpYWxpemluZyAqL1xuICAkY29sbGVjdCQ/OiB1bmRlZmluZWQgfCAoKG9iajogVCwgY29sbGVjdG9yOiBDb2xsZWN0b3IsIGxlYWtzOiBib29sZWFuIHwgUXdpa0VsZW1lbnQpID0+IHZvaWQpO1xuXG4gIC8qKiBEZXNlcmlhbGl6ZSB0aGUgb2JqZWN0LCBmaXJzdCBwYXNzICovXG4gICRwcmVwYXJlJDogKGRhdGE6IHN0cmluZywgY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlLCBkb2M6IERvY3VtZW50KSA9PiBUO1xuICAvKiogQWZ0ZXIgJHByZXBhcmUkLCByZXN0b3JlIHN1YnNjcmliZXJzIG9mIHRoZSBvYmplY3QuICovXG4gICRzdWJzJD86IHVuZGVmaW5lZCB8ICgob2JqOiBULCBzdWJzOiBTdWJzY3JpcHRpb25zW10sIGNvbnRhaW5lclN0YXRlOiBDb250YWluZXJTdGF0ZSkgPT4gdm9pZCk7XG5cbiAgLyoqIEFmdGVyICRwcmVwYXJlJCwgZmlsbCBpbiB0aGUgb2JqZWN0LiAqL1xuICAkZmlsbCQ/OiAoKG9iajogVCwgZ2V0T2JqZWN0OiBHZXRPYmplY3QsIGNvbnRhaW5lclN0YXRlOiBDb250YWluZXJTdGF0ZSkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG59XG5cbmludGVyZmFjZSBTZXJpYWxpemVyPFQ+IGV4dGVuZHMgT21pdDxTZXJpYWxpemVySW5wdXQ8VD4sICckcHJlZml4JCcgfCAnJHRlc3QkJz4ge1xuICAvKiogVGhlIGlkZW50aWZpZXIgYXMgYSBjaGFyY29kZSAqL1xuICAkcHJlZml4Q29kZSQ6IG51bWJlcjtcbiAgLyoqIFRoZSBpZGVudGlmaWVyIGFzIGEgc3RyaW5nICovXG4gICRwcmVmaXhDaGFyJDogc3RyaW5nO1xuICAvKiogQ2FuIHRoaXMgc2VyaWFsaXplciBjYW4gc2VyaWFsaXplIHRoZSBnaXZlbiBvYmplY3Q/ICovXG4gICR0ZXN0JDogKG9iajogdW5rbm93bikgPT4gb2JqIGlzIFQ7XG59XG5cbi8qKlxuICogTm9ybWFsaXplIHRoZSBzaGFwZSBvZiB0aGUgc2VyaWFsaXplciBmb3IgYmV0dGVyIGlubGluZS1jYWNoZSBwZXJmb3JtYW5jZS5cbiAqXG4gKiBAcGFyYW0gc2VyaWFsaXplclxuICogQHJldHVybnNcbiAqL1xuZnVuY3Rpb24gc2VyaWFsaXplcjxUPihzZXJpYWxpemVyOiBTZXJpYWxpemVySW5wdXQ8VD4pOiBTZXJpYWxpemVyPFQ+IHtcbiAgcmV0dXJuIHtcbiAgICAkcHJlZml4Q29kZSQ6IHNlcmlhbGl6ZXIuJHByZWZpeCQuY2hhckNvZGVBdCgwKSxcbiAgICAkcHJlZml4Q2hhciQ6IHNlcmlhbGl6ZXIuJHByZWZpeCQsXG4gICAgJHRlc3QkOiBzZXJpYWxpemVyLiR0ZXN0JCBhcyBhbnksXG4gICAgJHNlcmlhbGl6ZSQ6IHNlcmlhbGl6ZXIuJHNlcmlhbGl6ZSQsXG4gICAgJHByZXBhcmUkOiBzZXJpYWxpemVyLiRwcmVwYXJlJCxcbiAgICAkZmlsbCQ6IHNlcmlhbGl6ZXIuJGZpbGwkLFxuICAgICRjb2xsZWN0JDogc2VyaWFsaXplci4kY29sbGVjdCQsXG4gICAgJHN1YnMkOiBzZXJpYWxpemVyLiRzdWJzJCxcbiAgfTtcbn1cblxuY29uc3QgUVJMU2VyaWFsaXplciA9IC8qI19fUFVSRV9fKi8gc2VyaWFsaXplcjxRUkxJbnRlcm5hbD4oe1xuICAkcHJlZml4JDogJ1xcdTAwMDInLFxuICAkdGVzdCQ6ICh2KSA9PiBpc1FybCh2KSxcbiAgJGNvbGxlY3QkOiAodiwgY29sbGVjdG9yLCBsZWFrcykgPT4ge1xuICAgIGlmICh2LiRjYXB0dXJlUmVmJCkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHYuJGNhcHR1cmVSZWYkKSB7XG4gICAgICAgIGNvbGxlY3RWYWx1ZShpdGVtLCBjb2xsZWN0b3IsIGxlYWtzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvbGxlY3Rvci4kcHJlZmV0Y2gkID09PSAwKSB7XG4gICAgICBjb2xsZWN0b3IuJHFybHMkLnB1c2godik7XG4gICAgfVxuICB9LFxuICAkc2VyaWFsaXplJDogKG9iaiwgZ2V0T2JqSWQpID0+IHtcbiAgICByZXR1cm4gc2VyaWFsaXplUVJMKG9iaiwge1xuICAgICAgJGdldE9iaklkJDogZ2V0T2JqSWQsXG4gICAgfSk7XG4gIH0sXG4gICRwcmVwYXJlJDogKGRhdGEsIGNvbnRhaW5lclN0YXRlKSA9PiB7XG4gICAgcmV0dXJuIHBhcnNlUVJMKGRhdGEsIGNvbnRhaW5lclN0YXRlLiRjb250YWluZXJFbCQpO1xuICB9LFxuICAkZmlsbCQ6IChxcmwsIGdldE9iamVjdCkgPT4ge1xuICAgIGlmIChxcmwuJGNhcHR1cmUkICYmIHFybC4kY2FwdHVyZSQubGVuZ3RoID4gMCkge1xuICAgICAgcXJsLiRjYXB0dXJlUmVmJCA9IHFybC4kY2FwdHVyZSQubWFwKGdldE9iamVjdCk7XG4gICAgICBxcmwuJGNhcHR1cmUkID0gbnVsbDtcbiAgICB9XG4gIH0sXG59KTtcblxuY29uc3QgVGFza1NlcmlhbGl6ZXIgPSAvKiNfX1BVUkVfXyovIHNlcmlhbGl6ZXI8U3Vic2NyaWJlckVmZmVjdD4oe1xuICAkcHJlZml4JDogJ1xcdTAwMDMnLFxuICAkdGVzdCQ6ICh2KSA9PiBpc1N1YnNjcmliZXJEZXNjcmlwdG9yKHYpLFxuICAkY29sbGVjdCQ6ICh2LCBjb2xsZWN0b3IsIGxlYWtzKSA9PiB7XG4gICAgY29sbGVjdFZhbHVlKHYuJHFybCQsIGNvbGxlY3RvciwgbGVha3MpO1xuICAgIGlmICh2LiRzdGF0ZSQpIHtcbiAgICAgIGNvbGxlY3RWYWx1ZSh2LiRzdGF0ZSQsIGNvbGxlY3RvciwgbGVha3MpO1xuICAgICAgaWYgKGxlYWtzID09PSB0cnVlICYmIHYuJHN0YXRlJCBpbnN0YW5jZW9mIFNpZ25hbEltcGwpIHtcbiAgICAgICAgY29sbGVjdFN1YnNjcmlwdGlvbnModi4kc3RhdGUkW1FPYmplY3RNYW5hZ2VyU3ltYm9sXSwgY29sbGVjdG9yLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gICRzZXJpYWxpemUkOiAob2JqLCBnZXRPYmpJZCkgPT4gc2VyaWFsaXplVGFzayhvYmosIGdldE9iaklkKSxcbiAgJHByZXBhcmUkOiAoZGF0YSkgPT4gcGFyc2VUYXNrKGRhdGEpIGFzIGFueSxcbiAgJGZpbGwkOiAodGFzaywgZ2V0T2JqZWN0KSA9PiB7XG4gICAgdGFzay4kZWwkID0gZ2V0T2JqZWN0KHRhc2suJGVsJCBhcyBhbnkpO1xuICAgIHRhc2suJHFybCQgPSBnZXRPYmplY3QodGFzay4kcXJsJCBhcyBhbnkpO1xuICAgIGlmICh0YXNrLiRzdGF0ZSQpIHtcbiAgICAgIHRhc2suJHN0YXRlJCA9IGdldE9iamVjdCh0YXNrLiRzdGF0ZSQgYXMgYW55KTtcbiAgICB9XG4gIH0sXG59KTtcblxuY29uc3QgUmVzb3VyY2VTZXJpYWxpemVyID0gLyojX19QVVJFX18qLyBzZXJpYWxpemVyPFJlc291cmNlUmV0dXJuSW50ZXJuYWw8YW55Pj4oe1xuICAkcHJlZml4JDogJ1xcdTAwMDQnLFxuICAkdGVzdCQ6ICh2KSA9PiBpc1Jlc291cmNlUmV0dXJuKHYpLFxuICAkY29sbGVjdCQ6IChvYmosIGNvbGxlY3RvciwgbGVha3MpID0+IHtcbiAgICBjb2xsZWN0VmFsdWUob2JqLnZhbHVlLCBjb2xsZWN0b3IsIGxlYWtzKTtcbiAgICBjb2xsZWN0VmFsdWUob2JqLl9yZXNvbHZlZCwgY29sbGVjdG9yLCBsZWFrcyk7XG4gIH0sXG4gICRzZXJpYWxpemUkOiAob2JqLCBnZXRPYmpJZCkgPT4ge1xuICAgIHJldHVybiBzZXJpYWxpemVSZXNvdXJjZShvYmosIGdldE9iaklkKTtcbiAgfSxcbiAgJHByZXBhcmUkOiAoZGF0YSkgPT4ge1xuICAgIHJldHVybiBwYXJzZVJlc291cmNlUmV0dXJuKGRhdGEpO1xuICB9LFxuICAkZmlsbCQ6IChyZXNvdXJjZSwgZ2V0T2JqZWN0KSA9PiB7XG4gICAgaWYgKHJlc291cmNlLl9zdGF0ZSA9PT0gJ3Jlc29sdmVkJykge1xuICAgICAgcmVzb3VyY2UuX3Jlc29sdmVkID0gZ2V0T2JqZWN0KHJlc291cmNlLl9yZXNvbHZlZCk7XG4gICAgICByZXNvdXJjZS52YWx1ZSA9IFByb21pc2UucmVzb2x2ZShyZXNvdXJjZS5fcmVzb2x2ZWQpO1xuICAgIH0gZWxzZSBpZiAocmVzb3VyY2UuX3N0YXRlID09PSAncmVqZWN0ZWQnKSB7XG4gICAgICBjb25zdCBwID0gUHJvbWlzZS5yZWplY3QocmVzb3VyY2UuX2Vycm9yKTtcbiAgICAgIHAuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICByZXNvdXJjZS5fZXJyb3IgPSBnZXRPYmplY3QocmVzb3VyY2UuX2Vycm9yIGFzIGFueSBhcyBzdHJpbmcpO1xuICAgICAgcmVzb3VyY2UudmFsdWUgPSBwO1xuICAgIH1cbiAgfSxcbn0pO1xuXG5jb25zdCBVUkxTZXJpYWxpemVyID0gLyojX19QVVJFX18qLyBzZXJpYWxpemVyPFVSTD4oe1xuICAkcHJlZml4JDogJ1xcdTAwMDUnLFxuICAkdGVzdCQ6ICh2KSA9PiB2IGluc3RhbmNlb2YgVVJMLFxuICAkc2VyaWFsaXplJDogKG9iaikgPT4gb2JqLmhyZWYsXG4gICRwcmVwYXJlJDogKGRhdGEpID0+IG5ldyBVUkwoZGF0YSksXG59KTtcblxuY29uc3QgRGF0ZVNlcmlhbGl6ZXIgPSAvKiNfX1BVUkVfXyovIHNlcmlhbGl6ZXI8RGF0ZT4oe1xuICAkcHJlZml4JDogJ1xcdTAwMDYnLFxuICAkdGVzdCQ6ICh2KSA9PiB2IGluc3RhbmNlb2YgRGF0ZSxcbiAgJHNlcmlhbGl6ZSQ6IChvYmopID0+IG9iai50b0lTT1N0cmluZygpLFxuICAkcHJlcGFyZSQ6IChkYXRhKSA9PiBuZXcgRGF0ZShkYXRhKSxcbn0pO1xuXG5jb25zdCBSZWdleFNlcmlhbGl6ZXIgPSAvKiNfX1BVUkVfXyovIHNlcmlhbGl6ZXI8UmVnRXhwPih7XG4gICRwcmVmaXgkOiAnXFx1MDAwNycsXG4gICR0ZXN0JDogKHYpID0+IHYgaW5zdGFuY2VvZiBSZWdFeHAsXG4gICRzZXJpYWxpemUkOiAob2JqKSA9PiBgJHtvYmouZmxhZ3N9ICR7b2JqLnNvdXJjZX1gLFxuICAkcHJlcGFyZSQ6IChkYXRhKSA9PiB7XG4gICAgY29uc3Qgc3BhY2UgPSBkYXRhLmluZGV4T2YoJyAnKTtcbiAgICBjb25zdCBzb3VyY2UgPSBkYXRhLnNsaWNlKHNwYWNlICsgMSk7XG4gICAgY29uc3QgZmxhZ3MgPSBkYXRhLnNsaWNlKDAsIHNwYWNlKTtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChzb3VyY2UsIGZsYWdzKTtcbiAgfSxcbn0pO1xuXG5jb25zdCBFcnJvclNlcmlhbGl6ZXIgPSAvKiNfX1BVUkVfXyovIHNlcmlhbGl6ZXI8RXJyb3I+KHtcbiAgJHByZWZpeCQ6ICdcXHUwMDBFJyxcbiAgJHRlc3QkOiAodikgPT4gdiBpbnN0YW5jZW9mIEVycm9yLFxuICAkc2VyaWFsaXplJDogKG9iaikgPT4ge1xuICAgIHJldHVybiBvYmoubWVzc2FnZTtcbiAgfSxcbiAgJHByZXBhcmUkOiAodGV4dCkgPT4ge1xuICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcih0ZXh0KTtcbiAgICBlcnIuc3RhY2sgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGVycjtcbiAgfSxcbn0pO1xuXG5jb25zdCBEb2N1bWVudFNlcmlhbGl6ZXIgPSAvKiNfX1BVUkVfXyovIHNlcmlhbGl6ZXI8RG9jdW1lbnQ+KHtcbiAgJHByZWZpeCQ6ICdcXHUwMDBGJyxcbiAgJHRlc3QkOiAodikgPT4gISF2ICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiBpc0RvY3VtZW50KHYgYXMgTm9kZSksXG4gICRwcmVwYXJlJDogKF8sIF9jLCBkb2MpID0+IHtcbiAgICByZXR1cm4gZG9jO1xuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBTRVJJQUxJWkFCTEVfU1RBVEUgPSBTeW1ib2woJ3NlcmlhbGl6YWJsZS1kYXRhJyk7XG5jb25zdCBDb21wb25lbnRTZXJpYWxpemVyID0gLyojX19QVVJFX18qLyBzZXJpYWxpemVyPENvbXBvbmVudD4oe1xuICAkcHJlZml4JDogJ1xcdTAwMTAnLFxuICAkdGVzdCQ6IChvYmopID0+IGlzUXdpa0NvbXBvbmVudChvYmopLFxuICAkc2VyaWFsaXplJDogKG9iaiwgZ2V0T2JqSWQpID0+IHtcbiAgICBjb25zdCBbcXJsXTogW1FSTEludGVybmFsXSA9IChvYmogYXMgYW55KVtTRVJJQUxJWkFCTEVfU1RBVEVdO1xuICAgIHJldHVybiBzZXJpYWxpemVRUkwocXJsLCB7XG4gICAgICAkZ2V0T2JqSWQkOiBnZXRPYmpJZCxcbiAgICB9KTtcbiAgfSxcbiAgJHByZXBhcmUkOiAoZGF0YSwgY29udGFpbmVyU3RhdGUpID0+IHtcbiAgICBjb25zdCBxcmwgPSBwYXJzZVFSTDxPblJlbmRlckZuPGFueT4+KGRhdGEsIGNvbnRhaW5lclN0YXRlLiRjb250YWluZXJFbCQpO1xuICAgIHJldHVybiBjb21wb25lbnRRcmwocXJsKTtcbiAgfSxcbiAgJGZpbGwkOiAoY29tcG9uZW50LCBnZXRPYmplY3QpID0+IHtcbiAgICBjb25zdCBbcXJsXTogW1FSTEludGVybmFsXSA9IChjb21wb25lbnQgYXMgYW55KVtTRVJJQUxJWkFCTEVfU1RBVEVdO1xuICAgIGlmIChxcmwuJGNhcHR1cmUkPy5sZW5ndGgpIHtcbiAgICAgIHFybC4kY2FwdHVyZVJlZiQgPSBxcmwuJGNhcHR1cmUkLm1hcChnZXRPYmplY3QpO1xuICAgICAgcXJsLiRjYXB0dXJlJCA9IG51bGw7XG4gICAgfVxuICB9LFxufSk7XG5cbmNvbnN0IERlcml2ZWRTaWduYWxTZXJpYWxpemVyID0gLyojX19QVVJFX18qLyBzZXJpYWxpemVyPFNpZ25hbERlcml2ZWQ+KHtcbiAgJHByZWZpeCQ6ICdcXHUwMDExJyxcbiAgJHRlc3QkOiAob2JqKSA9PiBvYmogaW5zdGFuY2VvZiBTaWduYWxEZXJpdmVkLFxuICAkY29sbGVjdCQ6IChvYmosIGNvbGxlY3RvciwgbGVha3MpID0+IHtcbiAgICBpZiAob2JqLiRhcmdzJCkge1xuICAgICAgZm9yIChjb25zdCBhcmcgb2Ygb2JqLiRhcmdzJCkge1xuICAgICAgICBjb2xsZWN0VmFsdWUoYXJnLCBjb2xsZWN0b3IsIGxlYWtzKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gICRzZXJpYWxpemUkOiAoc2lnbmFsLCBnZXRPYmpJRCwgY29sbGVjdG9yKSA9PiB7XG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZURlcml2ZWRTaWduYWxGdW5jKHNpZ25hbCk7XG4gICAgbGV0IGluZGV4ID0gY29sbGVjdG9yLiRpbmxpbmVkRnVuY3Rpb25zJC5pbmRleE9mKHNlcmlhbGl6ZWQpO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIGluZGV4ID0gY29sbGVjdG9yLiRpbmxpbmVkRnVuY3Rpb25zJC5sZW5ndGg7XG4gICAgICBjb2xsZWN0b3IuJGlubGluZWRGdW5jdGlvbnMkLnB1c2goc2VyaWFsaXplZCk7XG4gICAgfVxuICAgIHJldHVybiBtYXBKb2luKHNpZ25hbC4kYXJncyQsIGdldE9iaklELCAnICcpICsgJyBAJyArIGludFRvU3RyKGluZGV4KTtcbiAgfSxcbiAgJHByZXBhcmUkOiAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IGlkcyA9IGRhdGEuc3BsaXQoJyAnKTtcbiAgICBjb25zdCBhcmdzID0gaWRzLnNsaWNlKDAsIC0xKTtcbiAgICBjb25zdCBmbiA9IGlkc1tpZHMubGVuZ3RoIC0gMV07XG4gICAgcmV0dXJuIG5ldyBTaWduYWxEZXJpdmVkKGZuIGFzIGFueSwgYXJncyBhcyBhbnlbXSwgZm4pO1xuICB9LFxuICAkZmlsbCQ6IChmbiwgZ2V0T2JqZWN0KSA9PiB7XG4gICAgYXNzZXJ0U3RyaW5nKGZuLiRmdW5jJCwgJ2ZuLiRmdW5jJCBzaG91bGQgYmUgYSBzdHJpbmcnKTtcbiAgICBmbi4kZnVuYyQgPSBnZXRPYmplY3QoZm4uJGZ1bmMkKTtcbiAgICBmbi4kYXJncyQgPSAoZm4uJGFyZ3MkIGFzIHN0cmluZ1tdKS5tYXAoZ2V0T2JqZWN0KTtcbiAgfSxcbn0pO1xuXG5jb25zdCBTaWduYWxTZXJpYWxpemVyID0gLyojX19QVVJFX18qLyBzZXJpYWxpemVyPFNpZ25hbEltcGw8YW55Pj4oe1xuICAkcHJlZml4JDogJ1xcdTAwMTInLFxuICAkdGVzdCQ6ICh2KSA9PiB2IGluc3RhbmNlb2YgU2lnbmFsSW1wbCxcbiAgJGNvbGxlY3QkOiAob2JqLCBjb2xsZWN0b3IsIGxlYWtzKSA9PiB7XG4gICAgY29sbGVjdFZhbHVlKG9iai51bnRyYWNrZWRWYWx1ZSwgY29sbGVjdG9yLCBsZWFrcyk7XG4gICAgY29uc3QgbXV0YWJsZSA9IChvYmpbUU9iamVjdFNpZ25hbEZsYWdzXSAmIFNJR05BTF9JTU1VVEFCTEUpID09PSAwO1xuICAgIGlmIChsZWFrcyA9PT0gdHJ1ZSAmJiBtdXRhYmxlKSB7XG4gICAgICBjb2xsZWN0U3Vic2NyaXB0aW9ucyhvYmpbUU9iamVjdE1hbmFnZXJTeW1ib2xdLCBjb2xsZWN0b3IsIHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9LFxuICAkc2VyaWFsaXplJDogKG9iaiwgZ2V0T2JqSWQpID0+IHtcbiAgICByZXR1cm4gZ2V0T2JqSWQob2JqLnVudHJhY2tlZFZhbHVlKTtcbiAgfSxcbiAgJHByZXBhcmUkOiAoZGF0YSwgY29udGFpbmVyU3RhdGUpID0+IHtcbiAgICByZXR1cm4gbmV3IFNpZ25hbEltcGwoZGF0YSwgY29udGFpbmVyU3RhdGU/LiRzdWJzTWFuYWdlciQ/LiRjcmVhdGVNYW5hZ2VyJCgpLCAwKTtcbiAgfSxcbiAgJHN1YnMkOiAoc2lnbmFsLCBzdWJzKSA9PiB7XG4gICAgc2lnbmFsW1FPYmplY3RNYW5hZ2VyU3ltYm9sXS4kYWRkU3VicyQoc3Vicyk7XG4gIH0sXG4gICRmaWxsJDogKHNpZ25hbCwgZ2V0T2JqZWN0KSA9PiB7XG4gICAgc2lnbmFsLnVudHJhY2tlZFZhbHVlID0gZ2V0T2JqZWN0KHNpZ25hbC51bnRyYWNrZWRWYWx1ZSk7XG4gIH0sXG59KTtcblxuY29uc3QgU2lnbmFsV3JhcHBlclNlcmlhbGl6ZXIgPSAvKiNfX1BVUkVfXyovIHNlcmlhbGl6ZXI8U2lnbmFsV3JhcHBlcjxhbnksIGFueT4+KHtcbiAgJHByZWZpeCQ6ICdcXHUwMDEzJyxcbiAgJHRlc3QkOiAodikgPT4gdiBpbnN0YW5jZW9mIFNpZ25hbFdyYXBwZXIsXG4gICRjb2xsZWN0JChvYmosIGNvbGxlY3RvciwgbGVha3MpIHtcbiAgICBjb2xsZWN0VmFsdWUob2JqLnJlZiwgY29sbGVjdG9yLCBsZWFrcyk7XG4gICAgaWYgKGZhc3RXZWFrU2VyaWFsaXplKG9iai5yZWYpKSB7XG4gICAgICBjb25zdCBsb2NhbE1hbmFnZXIgPSBnZXRTdWJzY3JpcHRpb25NYW5hZ2VyKG9iai5yZWYpITtcbiAgICAgIGlmIChpc1RyZWVTaGFrZWFibGUoY29sbGVjdG9yLiRjb250YWluZXJTdGF0ZSQuJHN1YnNNYW5hZ2VyJCwgbG9jYWxNYW5hZ2VyLCBsZWFrcykpIHtcbiAgICAgICAgY29sbGVjdFZhbHVlKG9iai5yZWZbb2JqLnByb3BdLCBjb2xsZWN0b3IsIGxlYWtzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSxcbiAgJHNlcmlhbGl6ZSQ6IChvYmosIGdldE9iaklkKSA9PiB7XG4gICAgcmV0dXJuIGAke2dldE9iaklkKG9iai5yZWYpfSAke29iai5wcm9wfWA7XG4gIH0sXG4gICRwcmVwYXJlJDogKGRhdGEpID0+IHtcbiAgICBjb25zdCBbaWQsIHByb3BdID0gZGF0YS5zcGxpdCgnICcpO1xuICAgIHJldHVybiBuZXcgU2lnbmFsV3JhcHBlcihpZCBhcyBhbnksIHByb3ApO1xuICB9LFxuICAkZmlsbCQ6IChzaWduYWwsIGdldE9iamVjdCkgPT4ge1xuICAgIHNpZ25hbC5yZWYgPSBnZXRPYmplY3Qoc2lnbmFsLnJlZik7XG4gIH0sXG59KTtcblxuY29uc3QgTm9GaW5pdGVOdW1iZXJTZXJpYWxpemVyID0gLyojX19QVVJFX18qLyBzZXJpYWxpemVyPG51bWJlcj4oe1xuICAkcHJlZml4JDogJ1xcdTAwMTQnLFxuICAkdGVzdCQ6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ251bWJlcicsXG4gICRzZXJpYWxpemUkOiAodikgPT4ge1xuICAgIHJldHVybiBTdHJpbmcodik7XG4gIH0sXG4gICRwcmVwYXJlJDogKGRhdGEpID0+IHtcbiAgICByZXR1cm4gTnVtYmVyKGRhdGEpO1xuICB9LFxufSk7XG5cbmNvbnN0IFVSTFNlYXJjaFBhcmFtc1NlcmlhbGl6ZXIgPSAvKiNfX1BVUkVfXyovIHNlcmlhbGl6ZXI8VVJMU2VhcmNoUGFyYW1zPih7XG4gICRwcmVmaXgkOiAnXFx1MDAxNScsXG4gICR0ZXN0JDogKHYpID0+IHYgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXMsXG4gICRzZXJpYWxpemUkOiAob2JqKSA9PiBvYmoudG9TdHJpbmcoKSxcbiAgJHByZXBhcmUkOiAoZGF0YSkgPT4gbmV3IFVSTFNlYXJjaFBhcmFtcyhkYXRhKSxcbn0pO1xuXG5jb25zdCBGb3JtRGF0YVNlcmlhbGl6ZXIgPSAvKiNfX1BVUkVfXyovIHNlcmlhbGl6ZXI8Rm9ybURhdGE+KHtcbiAgJHByZWZpeCQ6ICdcXHUwMDE2JyxcbiAgJHRlc3QkOiAodikgPT4gdHlwZW9mIEZvcm1EYXRhICE9PSAndW5kZWZpbmVkJyAmJiB2IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5Gb3JtRGF0YSxcbiAgJHNlcmlhbGl6ZSQ6IChmb3JtRGF0YSkgPT4ge1xuICAgIGNvbnN0IGFycmF5OiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXTtcbiAgICBmb3JtRGF0YS5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBhcnJheS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheS5wdXNoKFtrZXksIHZhbHVlLm5hbWVdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXJyYXkpO1xuICB9LFxuICAkcHJlcGFyZSQ6IChkYXRhKSA9PiB7XG4gICAgY29uc3QgYXJyYXkgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgYXJyYXkpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1EYXRhO1xuICB9LFxufSk7XG5cbmNvbnN0IEpTWE5vZGVTZXJpYWxpemVyID0gLyojX19QVVJFX18qLyBzZXJpYWxpemVyPEpTWE5vZGVJbnRlcm5hbD4oe1xuICAkcHJlZml4JDogJ1xcdTAwMTcnLFxuICAkdGVzdCQ6ICh2KSA9PiBpc0pTWE5vZGUodiksXG4gICRjb2xsZWN0JDogKG5vZGUsIGNvbGxlY3RvciwgbGVha3MpID0+IHtcbiAgICBjb2xsZWN0VmFsdWUobm9kZS5jaGlsZHJlbiwgY29sbGVjdG9yLCBsZWFrcyk7XG4gICAgY29sbGVjdFZhbHVlKG5vZGUucHJvcHMsIGNvbGxlY3RvciwgbGVha3MpO1xuICAgIGNvbGxlY3RWYWx1ZShub2RlLmltbXV0YWJsZVByb3BzLCBjb2xsZWN0b3IsIGxlYWtzKTtcbiAgICBjb2xsZWN0VmFsdWUobm9kZS5rZXksIGNvbGxlY3RvciwgbGVha3MpO1xuICAgIGxldCB0eXBlID0gbm9kZS50eXBlO1xuICAgIGlmICh0eXBlID09PSBTbG90KSB7XG4gICAgICB0eXBlID0gJzpzbG90JztcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IEZyYWdtZW50KSB7XG4gICAgICB0eXBlID0gJzpmcmFnbWVudCc7XG4gICAgfVxuICAgIGNvbGxlY3RWYWx1ZSh0eXBlLCBjb2xsZWN0b3IsIGxlYWtzKTtcbiAgfSxcbiAgJHNlcmlhbGl6ZSQ6IChub2RlLCBnZXRPYmpJRCkgPT4ge1xuICAgIGxldCB0eXBlID0gbm9kZS50eXBlO1xuICAgIGlmICh0eXBlID09PSBTbG90KSB7XG4gICAgICB0eXBlID0gJzpzbG90JztcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IEZyYWdtZW50KSB7XG4gICAgICB0eXBlID0gJzpmcmFnbWVudCc7XG4gICAgfVxuICAgIHJldHVybiBgJHtnZXRPYmpJRCh0eXBlKX0gJHtnZXRPYmpJRChub2RlLnByb3BzKX0gJHtnZXRPYmpJRChub2RlLmltbXV0YWJsZVByb3BzKX0gJHtnZXRPYmpJRChcbiAgICAgIG5vZGUua2V5XG4gICAgKX0gJHtnZXRPYmpJRChub2RlLmNoaWxkcmVuKX0gJHtub2RlLmZsYWdzfWA7XG4gIH0sXG4gICRwcmVwYXJlJDogKGRhdGEpID0+IHtcbiAgICBjb25zdCBbdHlwZSwgcHJvcHMsIGltbXV0YWJsZVByb3BzLCBrZXksIGNoaWxkcmVuLCBmbGFnc10gPSBkYXRhLnNwbGl0KCcgJyk7XG4gICAgY29uc3Qgbm9kZSA9IG5ldyBKU1hOb2RlSW1wbChcbiAgICAgIHR5cGUgYXMgc3RyaW5nLFxuICAgICAgcHJvcHMgYXMgYW55LFxuICAgICAgaW1tdXRhYmxlUHJvcHMgYXMgYW55LFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBwYXJzZUludChmbGFncywgMTApLFxuICAgICAga2V5IGFzIHN0cmluZ1xuICAgICk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH0sXG4gICRmaWxsJDogKG5vZGUsIGdldE9iamVjdCkgPT4ge1xuICAgIG5vZGUudHlwZSA9IGdldFJlc29sdmVKU1hUeXBlKGdldE9iamVjdChub2RlLnR5cGUgYXMgc3RyaW5nKSk7XG4gICAgbm9kZS5wcm9wcyA9IGdldE9iamVjdChub2RlLnByb3BzIGFzIGFueSBhcyBzdHJpbmcpO1xuICAgIG5vZGUuaW1tdXRhYmxlUHJvcHMgPSBnZXRPYmplY3Qobm9kZS5pbW11dGFibGVQcm9wcyBhcyBhbnkgYXMgc3RyaW5nKTtcbiAgICBub2RlLmtleSA9IGdldE9iamVjdChub2RlLmtleSBhcyBzdHJpbmcpO1xuICAgIG5vZGUuY2hpbGRyZW4gPSBnZXRPYmplY3Qobm9kZS5jaGlsZHJlbiBhcyBzdHJpbmcpO1xuICB9LFxufSk7XG5cbmNvbnN0IEJpZ0ludFNlcmlhbGl6ZXIgPSAvKiNfX1BVUkVfXyovIHNlcmlhbGl6ZXI8YmlnaW50Pih7XG4gICRwcmVmaXgkOiAnXFx1MDAxOCcsXG4gICR0ZXN0JDogKHYpID0+IHR5cGVvZiB2ID09PSAnYmlnaW50JyxcbiAgJHNlcmlhbGl6ZSQ6ICh2KSA9PiB7XG4gICAgcmV0dXJuIHYudG9TdHJpbmcoKTtcbiAgfSxcbiAgJHByZXBhcmUkOiAoZGF0YSkgPT4ge1xuICAgIHJldHVybiBCaWdJbnQoZGF0YSk7XG4gIH0sXG59KTtcblxuY29uc3QgVWludDhBcnJheVNlcmlhbGl6ZXIgPSAvKiNfX1BVUkVfXyovIHNlcmlhbGl6ZXI8VWludDhBcnJheT4oe1xuICAkcHJlZml4JDogJ1xcdTAwMWMnLFxuICAkdGVzdCQ6ICh2KSA9PiB2IGluc3RhbmNlb2YgVWludDhBcnJheSxcbiAgJHNlcmlhbGl6ZSQ6ICh2KSA9PiB7XG4gICAgbGV0IGJ1ZiA9ICcnO1xuICAgIGZvciAoY29uc3QgYyBvZiB2KSB7XG4gICAgICBidWYgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ0b2EoYnVmKS5yZXBsYWNlKC89KyQvLCAnJyk7XG4gIH0sXG4gICRwcmVwYXJlJDogKGRhdGEpID0+IHtcbiAgICBjb25zdCBidWYgPSBhdG9iKGRhdGEpO1xuICAgIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYnVmLmxlbmd0aCk7XG4gICAgbGV0IGkgPSAwO1xuICAgIGZvciAoY29uc3QgcyBvZiBidWYpIHtcbiAgICAgIGJ5dGVzW2krK10gPSBzLmNoYXJDb2RlQXQoMCk7XG4gICAgfVxuICAgIHJldHVybiBieXRlcztcbiAgfSxcbiAgJGZpbGwkOiB1bmRlZmluZWQsXG59KTtcblxuY29uc3QgREFUQSA9IFN5bWJvbCgpO1xuY29uc3QgU2V0U2VyaWFsaXplciA9IC8qI19fUFVSRV9fKi8gc2VyaWFsaXplcjxTZXQ8YW55Pj4oe1xuICAkcHJlZml4JDogJ1xcdTAwMTknLFxuICAkdGVzdCQ6ICh2KSA9PiB2IGluc3RhbmNlb2YgU2V0LFxuICAkY29sbGVjdCQ6IChzZXQsIGNvbGxlY3RvciwgbGVha3MpID0+IHtcbiAgICBzZXQuZm9yRWFjaCgodmFsdWUpID0+IGNvbGxlY3RWYWx1ZSh2YWx1ZSwgY29sbGVjdG9yLCBsZWFrcykpO1xuICB9LFxuICAkc2VyaWFsaXplJDogKHYsIGdldE9iaklEKSA9PiB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odikubWFwKGdldE9iaklEKS5qb2luKCcgJyk7XG4gIH0sXG4gICRwcmVwYXJlJDogKGRhdGEpID0+IHtcbiAgICBjb25zdCBzZXQgPSBuZXcgU2V0KCk7XG4gICAgKHNldCBhcyBhbnkpW0RBVEFdID0gZGF0YTtcbiAgICByZXR1cm4gc2V0O1xuICB9LFxuICAkZmlsbCQ6IChzZXQsIGdldE9iamVjdCkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSAoc2V0IGFzIGFueSlbREFUQV07XG4gICAgKHNldCBhcyBhbnkpW0RBVEFdID0gdW5kZWZpbmVkO1xuICAgIGFzc2VydFN0cmluZyhkYXRhLCAnU2V0U2VyaWFsaXplciBzaG91bGQgYmUgZGVmaW5lZCcpO1xuICAgIGNvbnN0IGl0ZW1zID0gZGF0YS5sZW5ndGggPT09IDAgPyBbXSA6IGRhdGEuc3BsaXQoJyAnKTtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIGl0ZW1zKSB7XG4gICAgICBzZXQuYWRkKGdldE9iamVjdChpZCkpO1xuICAgIH1cbiAgfSxcbn0pO1xuXG5jb25zdCBNYXBTZXJpYWxpemVyID0gLyojX19QVVJFX18qLyBzZXJpYWxpemVyPE1hcDxhbnksIGFueT4+KHtcbiAgJHByZWZpeCQ6ICdcXHUwMDFhJyxcbiAgJHRlc3QkOiAodikgPT4gdiBpbnN0YW5jZW9mIE1hcCxcbiAgJGNvbGxlY3QkOiAobWFwLCBjb2xsZWN0b3IsIGxlYWtzKSA9PiB7XG4gICAgbWFwLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIGNvbGxlY3RWYWx1ZSh2YWx1ZSwgY29sbGVjdG9yLCBsZWFrcyk7XG4gICAgICBjb2xsZWN0VmFsdWUoa2V5LCBjb2xsZWN0b3IsIGxlYWtzKTtcbiAgICB9KTtcbiAgfSxcbiAgJHNlcmlhbGl6ZSQ6IChtYXAsIGdldE9iaklEKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICAgIG1hcC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICByZXN1bHQucHVzaChnZXRPYmpJRChrZXkpICsgJyAnICsgZ2V0T2JqSUQodmFsdWUpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0LmpvaW4oJyAnKTtcbiAgfSxcbiAgJHByZXBhcmUkOiAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IHNldCA9IG5ldyBNYXAoKTtcbiAgICAoc2V0IGFzIGFueSlbREFUQV0gPSBkYXRhO1xuICAgIHJldHVybiBzZXQ7XG4gIH0sXG4gICRmaWxsJDogKHNldCwgZ2V0T2JqZWN0KSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IChzZXQgYXMgYW55KVtEQVRBXTtcbiAgICAoc2V0IGFzIGFueSlbREFUQV0gPSB1bmRlZmluZWQ7XG4gICAgYXNzZXJ0U3RyaW5nKGRhdGEsICdTZXRTZXJpYWxpemVyIHNob3VsZCBiZSBkZWZpbmVkJyk7XG4gICAgY29uc3QgaXRlbXMgPSBkYXRhLmxlbmd0aCA9PT0gMCA/IFtdIDogZGF0YS5zcGxpdCgnICcpO1xuICAgIGFzc2VydFRydWUoaXRlbXMubGVuZ3RoICUgMiA9PT0gMCwgJ01hcFNlcmlhbGl6ZXIgc2hvdWxkIGhhdmUgZXZlbiBudW1iZXIgb2YgaXRlbXMnKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICBzZXQuc2V0KGdldE9iamVjdChpdGVtc1tpXSksIGdldE9iamVjdChpdGVtc1tpICsgMV0pKTtcbiAgICB9XG4gIH0sXG59KTtcblxuY29uc3QgU3RyaW5nU2VyaWFsaXplciA9IC8qI19fUFVSRV9fKi8gc2VyaWFsaXplcjxzdHJpbmc+KHtcbiAgJHByZWZpeCQ6ICdcXHUwMDFiJyxcbiAgJHRlc3QkOiAodikgPT4gISFnZXRTZXJpYWxpemVyKHYpIHx8IHYgPT09IFVOREVGSU5FRF9QUkVGSVgsXG4gICRzZXJpYWxpemUkOiAodikgPT4gdixcbiAgJHByZXBhcmUkOiAoZGF0YSkgPT4gZGF0YSxcbn0pO1xuXG5jb25zdCBzZXJpYWxpemVyczogU2VyaWFsaXplcjxhbnk+W10gPSBbXG4gIC8vIE5VTEwgICAgICAgICAgICAgICAgICAgICAgIFxcdTAwMDBcbiAgLy8gVU5ERUZJTkVEX1BSRUZJWCAgICAgICAgICAgXFx1MDAwMVxuICBRUkxTZXJpYWxpemVyLCAvLy8vLy8vLy8vLy8vLyBcXHUwMDAyXG4gIFRhc2tTZXJpYWxpemVyLCAvLy8vLy8vLy8vLy8vIFxcdTAwMDNcbiAgUmVzb3VyY2VTZXJpYWxpemVyLCAvLy8vLy8vLy8gXFx1MDAwNFxuICBVUkxTZXJpYWxpemVyLCAvLy8vLy8vLy8vLy8vLyBcXHUwMDA1XG4gIERhdGVTZXJpYWxpemVyLCAvLy8vLy8vLy8vLy8vIFxcdTAwMDZcbiAgUmVnZXhTZXJpYWxpemVyLCAvLy8vLy8vLy8vLy8gXFx1MDAwN1xuICAvLyBCQUNLU1BBQ0UgICAgICAgICAgICAgICAgICBcXHUwMDA4XG4gIC8vIEhPUklaT05UQUwgVEFCICAgICAgICAgICAgIFxcdTAwMDlcbiAgLy8gTkVXIExJTkUgICAgICAgICAgICAgICAgICAgXFx1MDAwQVxuICAvLyBWRVJUSUNBTCBUQUIgICAgICAgICAgICAgICBcXHUwMDBCXG4gIC8vIEZPUk0gRkVFRCAgICAgICAgICAgICAgICAgIFxcdTAwMENcbiAgLy8gQ0FSUklBR0UgUkVUVVJOICAgICAgICAgICAgXFx1MDAwRFxuICBFcnJvclNlcmlhbGl6ZXIsIC8vLy8vLy8vLy8vLyBcXHUwMDBFXG4gIERvY3VtZW50U2VyaWFsaXplciwgLy8vLy8vLy8vIFxcdTAwMEZcbiAgQ29tcG9uZW50U2VyaWFsaXplciwgLy8vLy8vLy8gXFx1MDAxMFxuICBEZXJpdmVkU2lnbmFsU2VyaWFsaXplciwgLy8vLyBcXHUwMDExXG4gIFNpZ25hbFNlcmlhbGl6ZXIsIC8vLy8vLy8vLy8vIFxcdTAwMTJcbiAgU2lnbmFsV3JhcHBlclNlcmlhbGl6ZXIsIC8vLy8gXFx1MDAxM1xuICBOb0Zpbml0ZU51bWJlclNlcmlhbGl6ZXIsIC8vLyBcXHUwMDE0XG4gIFVSTFNlYXJjaFBhcmFtc1NlcmlhbGl6ZXIsIC8vIFxcdTAwMTVcbiAgRm9ybURhdGFTZXJpYWxpemVyLCAvLy8vLy8vLy8gXFx1MDAxNlxuICBKU1hOb2RlU2VyaWFsaXplciwgLy8vLy8vLy8vLyBcXHUwMDE3XG4gIEJpZ0ludFNlcmlhbGl6ZXIsIC8vLy8vLy8vLy8vIFxcdTAwMThcbiAgU2V0U2VyaWFsaXplciwgLy8vLy8vLy8vLy8vLy8gXFx1MDAxOVxuICBNYXBTZXJpYWxpemVyLCAvLy8vLy8vLy8vLy8vLyBcXHUwMDFhXG4gIFN0cmluZ1NlcmlhbGl6ZXIsIC8vLy8vLy8vLy8vIFxcdTAwMWJcbiAgVWludDhBcnJheVNlcmlhbGl6ZXIsIC8vLy8vLy8gXFx1MDAxY1xuXTtcblxuY29uc3Qgc2VyaWFsaXplckJ5UHJlZml4OiAoU2VyaWFsaXplcjx1bmtub3duPiB8IHVuZGVmaW5lZClbXSA9IC8qI19fUFVSRV9fKi8gKCgpID0+IHtcbiAgY29uc3Qgc2VyaWFsaXplckJ5UHJlZml4OiAoU2VyaWFsaXplcjx1bmtub3duPiB8IHVuZGVmaW5lZClbXSA9IFtdO1xuICBzZXJpYWxpemVycy5mb3JFYWNoKChzKSA9PiB7XG4gICAgY29uc3QgcHJlZml4ID0gcy4kcHJlZml4Q29kZSQ7XG4gICAgd2hpbGUgKHNlcmlhbGl6ZXJCeVByZWZpeC5sZW5ndGggPCBwcmVmaXgpIHtcbiAgICAgIHNlcmlhbGl6ZXJCeVByZWZpeC5wdXNoKHVuZGVmaW5lZCk7XG4gICAgfVxuICAgIHNlcmlhbGl6ZXJCeVByZWZpeC5wdXNoKHMpO1xuICB9KTtcbiAgcmV0dXJuIHNlcmlhbGl6ZXJCeVByZWZpeDtcbn0pKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXJpYWxpemVyKG9iajogYW55KTogU2VyaWFsaXplcjx1bmtub3duPiB8IHVuZGVmaW5lZCB7XG4gIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IHByZWZpeCA9IG9iai5jaGFyQ29kZUF0KDApO1xuICAgIGlmIChwcmVmaXggPCBzZXJpYWxpemVyQnlQcmVmaXgubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplckJ5UHJlZml4W3ByZWZpeF07XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmNvbnN0IGNvbGxlY3RvclNlcmlhbGl6ZXJzID0gLyojX19QVVJFX18qLyBzZXJpYWxpemVycy5maWx0ZXIoKGEpID0+IGEuJGNvbGxlY3QkKTtcblxuZXhwb3J0IGNvbnN0IGNhblNlcmlhbGl6ZSA9IChvYmo6IGFueSk6IGJvb2xlYW4gPT4ge1xuICBmb3IgKGNvbnN0IHMgb2Ygc2VyaWFsaXplcnMpIHtcbiAgICBpZiAocy4kdGVzdCQob2JqKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb2xsZWN0RGVwcyA9IChvYmo6IHVua25vd24sIGNvbGxlY3RvcjogQ29sbGVjdG9yLCBsZWFrczogYm9vbGVhbiB8IFF3aWtFbGVtZW50KSA9PiB7XG4gIGZvciAoY29uc3QgcyBvZiBjb2xsZWN0b3JTZXJpYWxpemVycykge1xuICAgIGlmIChzLiR0ZXN0JChvYmopKSB7XG4gICAgICBzLiRjb2xsZWN0JCEob2JqLCBjb2xsZWN0b3IsIGxlYWtzKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VyaWFsaXplVmFsdWUgPSAoXG4gIG9iajogYW55LFxuICBnZXRPYmpJRDogTXVzdEdldE9iaklELFxuICBjb2xsZWN0b3I6IENvbGxlY3RvcixcbiAgY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlXG4pID0+IHtcbiAgZm9yIChjb25zdCBzIG9mIHNlcmlhbGl6ZXJzKSB7XG4gICAgaWYgKHMuJHRlc3QkKG9iaikpIHtcbiAgICAgIGxldCB2YWx1ZSA9IHMuJHByZWZpeENoYXIkO1xuICAgICAgaWYgKHMuJHNlcmlhbGl6ZSQpIHtcbiAgICAgICAgdmFsdWUgKz0gcy4kc2VyaWFsaXplJChvYmosIGdldE9iaklELCBjb2xsZWN0b3IsIGNvbnRhaW5lclN0YXRlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZXIge1xuICBwcmVwYXJlKGRhdGE6IHN0cmluZyk6IGFueTtcbiAgc3VicyhvYmo6IGFueSwgc3ViczogU3Vic2NyaXB0aW9uc1tdKTogYm9vbGVhbjtcbiAgZmlsbChvYmo6IGFueSwgZ2V0T2JqZWN0OiBHZXRPYmplY3QpOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlUGFyc2VyID0gKGNvbnRhaW5lclN0YXRlOiBDb250YWluZXJTdGF0ZSwgZG9jOiBEb2N1bWVudCk6IFBhcnNlciA9PiB7XG4gIGNvbnN0IGZpbGxNYXAgPSBuZXcgTWFwPGFueSwgU2VyaWFsaXplcjxhbnk+PigpO1xuICBjb25zdCBzdWJzTWFwID0gbmV3IE1hcDxhbnksIFNlcmlhbGl6ZXI8YW55Pj4oKTtcblxuICByZXR1cm4ge1xuICAgIHByZXBhcmUoZGF0YTogc3RyaW5nKSB7XG4gICAgICBjb25zdCBzZXJpYWxpemVyID0gZ2V0U2VyaWFsaXplcihkYXRhKTtcbiAgICAgIGlmIChzZXJpYWxpemVyKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gc2VyaWFsaXplci4kcHJlcGFyZSQoZGF0YS5zbGljZSgxKSwgY29udGFpbmVyU3RhdGUsIGRvYyk7XG4gICAgICAgIGlmIChzZXJpYWxpemVyLiRmaWxsJCkge1xuICAgICAgICAgIGZpbGxNYXAuc2V0KHZhbHVlLCBzZXJpYWxpemVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VyaWFsaXplci4kc3VicyQpIHtcbiAgICAgICAgICBzdWJzTWFwLnNldCh2YWx1ZSwgc2VyaWFsaXplcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSxcbiAgICBzdWJzKG9iajogYW55LCBzdWJzOiBTdWJzY3JpcHRpb25zW10pIHtcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZXIgPSBzdWJzTWFwLmdldChvYmopO1xuICAgICAgaWYgKHNlcmlhbGl6ZXIpIHtcbiAgICAgICAgc2VyaWFsaXplci4kc3VicyQhKG9iaiwgc3VicywgY29udGFpbmVyU3RhdGUpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIGZpbGwob2JqOiBhbnksIGdldE9iamVjdDogR2V0T2JqZWN0KSB7XG4gICAgICBjb25zdCBzZXJpYWxpemVyID0gZmlsbE1hcC5nZXQob2JqKTtcbiAgICAgIGlmIChzZXJpYWxpemVyKSB7XG4gICAgICAgIHNlcmlhbGl6ZXIuJGZpbGwkIShvYmosIGdldE9iamVjdCwgY29udGFpbmVyU3RhdGUpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IE9CSkVDVF9UUkFOU0ZPUk1TOiBSZWNvcmQ8c3RyaW5nLCAob2JqOiBhbnksIGNvbnRhaW5lclN0YXRlOiBDb250YWluZXJTdGF0ZSkgPT4gYW55PiA9XG4gIHtcbiAgICAnISc6IChvYmo6IGFueSwgY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gY29udGFpbmVyU3RhdGUuJHByb3h5TWFwJC5nZXQob2JqKSA/PyBnZXRPckNyZWF0ZVByb3h5KG9iaiwgY29udGFpbmVyU3RhdGUpO1xuICAgIH0sXG4gICAgJ34nOiAob2JqOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUob2JqKTtcbiAgICB9LFxuICAgIF86IChvYmo6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG9iaik7XG4gICAgfSxcbiAgfTtcblxuY29uc3QgaXNUcmVlU2hha2VhYmxlID0gKFxuICBtYW5hZ2VyOiBTdWJzY3JpcHRpb25NYW5hZ2VyLFxuICB0YXJnZXQ6IExvY2FsU3Vic2NyaXB0aW9uTWFuYWdlcixcbiAgbGVha3M6IFF3aWtFbGVtZW50IHwgYm9vbGVhblxuKSA9PiB7XG4gIGlmICh0eXBlb2YgbGVha3MgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBsZWFrcztcbiAgfVxuICBjb25zdCBsb2NhbE1hbmFnZXIgPSBtYW5hZ2VyLiRncm91cFRvTWFuYWdlcnMkLmdldChsZWFrcyk7XG4gIGlmIChsb2NhbE1hbmFnZXIgJiYgbG9jYWxNYW5hZ2VyLmxlbmd0aCA+IDApIHtcbiAgICBpZiAobG9jYWxNYW5hZ2VyLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIGxvY2FsTWFuYWdlclswXSAhPT0gdGFyZ2V0O1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5jb25zdCBnZXRSZXNvbHZlSlNYVHlwZSA9ICh0eXBlOiBhbnkpID0+IHtcbiAgaWYgKHR5cGUgPT09ICc6c2xvdCcpIHtcbiAgICByZXR1cm4gU2xvdDtcbiAgfVxuICBpZiAodHlwZSA9PT0gJzpmcmFnbWVudCcpIHtcbiAgICByZXR1cm4gRnJhZ21lbnQ7XG4gIH1cbiAgcmV0dXJuIHR5cGU7XG59O1xuIl19","import { assertFail, assertTrue } from '../error/assert';\nimport { qError, QError_verifySerializable } from '../error/error';\nimport { isNode } from '../util/element';\nimport { seal } from '../util/qdev';\nimport { isArray, isFunction, isObject, isSerializableObject } from '../util/types';\nimport { isPromise } from '../util/promises';\nimport { canSerialize } from '../container/serializers';\nimport { isSubscriberDescriptor, } from '../use/use-task';\nimport { notifyChange } from '../render/dom/notify-render';\nimport { logError, throwErrorAndStop } from '../util/log';\nimport { tryGetContext } from './context';\nimport { QObjectFlagsSymbol, QObjectManagerSymbol, QOjectTargetSymbol } from './constants';\n/** @internal */\nexport const verifySerializable = (value, preMessage) => {\n    const seen = new Set();\n    return _verifySerializable(value, seen, '_', preMessage);\n};\nconst _verifySerializable = (value, seen, ctx, preMessage) => {\n    const unwrapped = unwrapProxy(value);\n    if (unwrapped == null) {\n        return value;\n    }\n    if (shouldSerialize(unwrapped)) {\n        if (seen.has(unwrapped)) {\n            return value;\n        }\n        seen.add(unwrapped);\n        if (canSerialize(unwrapped)) {\n            return value;\n        }\n        const typeObj = typeof unwrapped;\n        switch (typeObj) {\n            case 'object':\n                if (isPromise(unwrapped)) {\n                    return value;\n                }\n                if (isNode(unwrapped)) {\n                    return value;\n                }\n                if (isArray(unwrapped)) {\n                    let expectIndex = 0;\n                    // Make sure the array has no holes\n                    unwrapped.forEach((v, i) => {\n                        if (i !== expectIndex) {\n                            throw qError(QError_verifySerializable, unwrapped);\n                        }\n                        _verifySerializable(v, seen, ctx + '[' + i + ']');\n                        expectIndex = i + 1;\n                    });\n                    return value;\n                }\n                if (isSerializableObject(unwrapped)) {\n                    for (const [key, item] of Object.entries(unwrapped)) {\n                        _verifySerializable(item, seen, ctx + '.' + key);\n                    }\n                    return value;\n                }\n                break;\n            case 'boolean':\n            case 'string':\n            case 'number':\n                return value;\n        }\n        let message = '';\n        if (preMessage) {\n            message = preMessage;\n        }\n        else {\n            message = 'Value cannot be serialized';\n        }\n        if (ctx !== '_') {\n            message += ` in ${ctx},`;\n        }\n        if (typeObj === 'object') {\n            message += ` because it's an instance of \"${value?.constructor.name}\". You might need to use 'noSerialize()' or use an object literal instead. Check out https://qwik.dev/docs/advanced/dollar/`;\n        }\n        else if (typeObj === 'function') {\n            const fnName = value.name;\n            message += ` because it's a function named \"${fnName}\". You might need to convert it to a QRL using $(fn):\\n\\nconst ${fnName} = $(${String(value)});\\n\\nPlease check out https://qwik.dev/docs/advanced/qrl/ for more information.`;\n        }\n        console.error('Trying to serialize', value);\n        throwErrorAndStop(message);\n    }\n    return value;\n};\nconst noSerializeSet = /*#__PURE__*/ new WeakSet();\nconst weakSerializeSet = /*#__PURE__*/ new WeakSet();\nexport const shouldSerialize = (obj) => {\n    if (isObject(obj) || isFunction(obj)) {\n        return !noSerializeSet.has(obj);\n    }\n    return true;\n};\nexport const fastSkipSerialize = (obj) => {\n    return noSerializeSet.has(obj);\n};\nexport const fastWeakSerialize = (obj) => {\n    return weakSerializeSet.has(obj);\n};\n// <docs markdown=\"../readme.md#noSerialize\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#noSerialize instead)\n/**\n * Marks a property on a store as non-serializable.\n *\n * At times it is necessary to store values on a store that are non-serializable. Normally this is a\n * runtime error as Store wants to eagerly report when a non-serializable property is assigned to\n * it.\n *\n * You can use `noSerialize()` to mark a value as non-serializable. The value is persisted in the\n * Store but does not survive serialization. The implication is that when your application is\n * resumed, the value of this object will be `undefined`. You will be responsible for recovering\n * from this.\n *\n * See: [noSerialize Tutorial](http://qwik.dev/tutorial/store/no-serialize)\n *\n * @public\n */\n// </docs>\nexport const noSerialize = (input) => {\n    // only add supported values to the noSerializeSet, prevent console errors\n    if ((typeof input === 'object' && input !== null) || typeof input === 'function') {\n        noSerializeSet.add(input);\n    }\n    return input;\n};\n/** @internal */\nexport const _weakSerialize = (input) => {\n    weakSerializeSet.add(input);\n    return input;\n};\nexport const isConnected = (sub) => {\n    if (isSubscriberDescriptor(sub)) {\n        return isConnected(sub.$el$);\n    }\n    else {\n        return !!tryGetContext(sub) || sub.isConnected;\n    }\n};\n/**\n * Get the target value of the Proxy. Useful if you want to clone a store (structureClone,\n * IndexedDB,...)\n *\n * @public\n */\nexport const unwrapProxy = (proxy) => {\n    return isObject(proxy) ? (getProxyTarget(proxy) ?? proxy) : proxy;\n};\nexport const getProxyTarget = (obj) => {\n    return obj[QOjectTargetSymbol];\n};\nexport const getSubscriptionManager = (obj) => {\n    return obj[QObjectManagerSymbol];\n};\nexport const getProxyFlags = (obj) => {\n    return obj[QObjectFlagsSymbol];\n};\nexport const serializeSubscription = (sub, getObjId) => {\n    const type = sub[0];\n    const host = typeof sub[1] === 'string' ? sub[1] : getObjId(sub[1]);\n    if (!host) {\n        return undefined;\n    }\n    let base = type + ' ' + host;\n    let key;\n    if (type === 0) {\n        key = sub[2];\n    }\n    else {\n        const signalID = getObjId(sub[2]);\n        if (!signalID) {\n            return undefined;\n        }\n        if (type <= 2) {\n            key = sub[5];\n            base += ` ${signalID} ${must(getObjId(sub[3]))} ${sub[4]}`;\n        }\n        else if (type <= 4) {\n            key = sub[4];\n            const nodeID = typeof sub[3] === 'string' ? sub[3] : must(getObjId(sub[3]));\n            base += ` ${signalID} ${nodeID}`;\n        }\n        else {\n            assertFail('Should not get here');\n        }\n    }\n    if (key) {\n        base += ` ${encodeURI(key)}`;\n    }\n    return base;\n};\nexport const parseSubscription = (sub, getObject) => {\n    const parts = sub.split(' ');\n    const type = parseInt(parts[0], 10);\n    assertTrue(parts.length >= 2, 'At least 2 parts');\n    const host = getObject(parts[1]);\n    if (!host) {\n        return undefined;\n    }\n    if (isSubscriberDescriptor(host) && !host.$el$) {\n        return undefined;\n    }\n    const subscription = [type, host];\n    if (type === 0) {\n        assertTrue(parts.length <= 3, 'Max 3 parts');\n        subscription.push(safeDecode(parts[2]));\n    }\n    else if (type <= 2) {\n        assertTrue(parts.length === 5 || parts.length === 6, 'Type 1 has 5');\n        subscription.push(getObject(parts[2]), getObject(parts[3]), parts[4], safeDecode(parts[5]));\n    }\n    else if (type <= 4) {\n        assertTrue(parts.length === 4 || parts.length === 5, 'Type 2 has 4');\n        subscription.push(getObject(parts[2]), getObject(parts[3]), safeDecode(parts[4]));\n    }\n    return subscription;\n};\nconst safeDecode = (str) => {\n    if (str !== undefined) {\n        return decodeURI(str);\n    }\n    return undefined;\n};\nexport const createSubscriptionManager = (containerState) => {\n    const groupToManagers = new Map();\n    const manager = {\n        $groupToManagers$: groupToManagers,\n        $createManager$: (initialMap) => {\n            return new LocalSubscriptionManager(groupToManagers, containerState, initialMap);\n        },\n        $clearSub$: (group) => {\n            const managers = groupToManagers.get(group);\n            if (managers) {\n                for (const manager of managers) {\n                    manager.$unsubGroup$(group);\n                }\n                groupToManagers.delete(group);\n                managers.length = 0;\n            }\n        },\n        $clearSignal$: (signal) => {\n            const managers = groupToManagers.get(signal[1]);\n            if (managers) {\n                for (const manager of managers) {\n                    manager.$unsubEntry$(signal);\n                }\n            }\n        },\n    };\n    seal(manager);\n    return manager;\n};\nexport class LocalSubscriptionManager {\n    $groupToManagers$;\n    $containerState$;\n    $subs$;\n    constructor($groupToManagers$, $containerState$, initialMap) {\n        this.$groupToManagers$ = $groupToManagers$;\n        this.$containerState$ = $containerState$;\n        this.$subs$ = [];\n        if (initialMap) {\n            this.$addSubs$(initialMap);\n        }\n        seal(this);\n    }\n    $addSubs$(subs) {\n        this.$subs$.push(...subs);\n        for (const sub of this.$subs$) {\n            this.$addToGroup$(sub[1], this);\n        }\n    }\n    $addToGroup$(group, manager) {\n        let managers = this.$groupToManagers$.get(group);\n        if (!managers) {\n            this.$groupToManagers$.set(group, (managers = []));\n        }\n        if (!managers.includes(manager)) {\n            managers.push(manager);\n        }\n    }\n    $unsubGroup$(group) {\n        const subs = this.$subs$;\n        for (let i = 0; i < subs.length; i++) {\n            const found = subs[i][1] === group;\n            if (found) {\n                subs.splice(i, 1);\n                i--;\n            }\n        }\n    }\n    $unsubEntry$(entry) {\n        const [type, group, signal, elm] = entry;\n        const subs = this.$subs$;\n        if (type === 1 || type === 2) {\n            const prop = entry[4];\n            for (let i = 0; i < subs.length; i++) {\n                const sub = subs[i];\n                const match = sub[0] === type &&\n                    sub[1] === group &&\n                    sub[2] === signal &&\n                    sub[3] === elm &&\n                    sub[4] === prop;\n                if (match) {\n                    subs.splice(i, 1);\n                    i--;\n                }\n            }\n        }\n        else if (type === 3 || type === 4) {\n            for (let i = 0; i < subs.length; i++) {\n                const sub = subs[i];\n                const match = sub[0] === type && sub[1] === group && sub[2] === signal && sub[3] === elm;\n                if (match) {\n                    subs.splice(i, 1);\n                    i--;\n                }\n            }\n        }\n    }\n    $addSub$(sub, key) {\n        const subs = this.$subs$;\n        const group = sub[1];\n        if (sub[0] === 0 &&\n            subs.some(([_type, _group, _key]) => _type === 0 && _group === group && _key === key)) {\n            return;\n        }\n        subs.push((__lastSubscription = [...sub, key]));\n        this.$addToGroup$(group, this);\n    }\n    $notifySubs$(key) {\n        const subs = this.$subs$;\n        for (const sub of subs) {\n            const compare = sub[sub.length - 1];\n            if (key && compare && compare !== key) {\n                continue;\n            }\n            notifyChange(sub, this.$containerState$);\n        }\n    }\n}\nlet __lastSubscription;\nexport function getLastSubscription() {\n    // HACK(misko): This is a hack to get the last subscription.\n    // It is used by `executeSignalOperation` to update the target element\n    // after the subscription has been created.\n    return __lastSubscription;\n}\nconst must = (a) => {\n    if (a == null) {\n        throw logError('must be non null', a);\n    }\n    return a;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3N0YXRlL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV4RCxPQUFPLEVBQ0wsc0JBQXNCLEdBR3ZCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFjM0YsZ0JBQWdCO0FBQ2hCLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUksS0FBUSxFQUFFLFVBQW1CLEVBQUssRUFBRTtJQUN4RSxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLE9BQU8sbUJBQW1CLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsVUFB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O0lBQzNDLE9BQU8sa0JBQWtCLENBQUM7QUFDNUIsQ0FBQztBQUVELE1BQU0sSUFBSSxHQUFHLENBQUksQ0FBSSxFQUFrQixFQUFFO0lBQ3ZDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2QsTUFBTSxRQUFRLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0RmFpbCwgYXNzZXJ0VHJ1ZSB9IGZyb20gJy4uL2Vycm9yL2Fzc2VydCc7XG5pbXBvcnQgeyBxRXJyb3IsIFFFcnJvcl92ZXJpZnlTZXJpYWxpemFibGUgfSBmcm9tICcuLi9lcnJvci9lcnJvcic7XG5pbXBvcnQgeyBpc05vZGUgfSBmcm9tICcuLi91dGlsL2VsZW1lbnQnO1xuaW1wb3J0IHsgc2VhbCB9IGZyb20gJy4uL3V0aWwvcWRldic7XG5pbXBvcnQgeyBpc0FycmF5LCBpc0Z1bmN0aW9uLCBpc09iamVjdCwgaXNTZXJpYWxpemFibGVPYmplY3QgfSBmcm9tICcuLi91dGlsL3R5cGVzJztcbmltcG9ydCB7IGlzUHJvbWlzZSB9IGZyb20gJy4uL3V0aWwvcHJvbWlzZXMnO1xuaW1wb3J0IHsgY2FuU2VyaWFsaXplIH0gZnJvbSAnLi4vY29udGFpbmVyL3NlcmlhbGl6ZXJzJztcbmltcG9ydCB0eXBlIHsgQ29udGFpbmVyU3RhdGUsIEdldE9iamVjdCwgR2V0T2JqSUQgfSBmcm9tICcuLi9jb250YWluZXIvY29udGFpbmVyJztcbmltcG9ydCB7XG4gIGlzU3Vic2NyaWJlckRlc2NyaXB0b3IsXG4gIHR5cGUgU3Vic2NyaWJlckVmZmVjdCxcbiAgdHlwZSBTdWJzY3JpYmVySG9zdCxcbn0gZnJvbSAnLi4vdXNlL3VzZS10YXNrJztcbmltcG9ydCB0eXBlIHsgUXdpa0VsZW1lbnQgfSBmcm9tICcuLi9yZW5kZXIvZG9tL3ZpcnR1YWwtZWxlbWVudCc7XG5pbXBvcnQgeyBub3RpZnlDaGFuZ2UgfSBmcm9tICcuLi9yZW5kZXIvZG9tL25vdGlmeS1yZW5kZXInO1xuaW1wb3J0IHsgbG9nRXJyb3IsIHRocm93RXJyb3JBbmRTdG9wIH0gZnJvbSAnLi4vdXRpbC9sb2cnO1xuaW1wb3J0IHsgdHJ5R2V0Q29udGV4dCB9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgeyBRT2JqZWN0RmxhZ3NTeW1ib2wsIFFPYmplY3RNYW5hZ2VyU3ltYm9sLCBRT2plY3RUYXJnZXRTeW1ib2wgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IFNpZ25hbCB9IGZyb20gJy4vc2lnbmFsJztcblxuZXhwb3J0IGludGVyZmFjZSBTdWJzY3JpcHRpb25NYW5hZ2VyIHtcbiAgJGdyb3VwVG9NYW5hZ2VycyQ6IEdyb3VwVG9NYW5hZ2Vyc01hcDtcbiAgJGNyZWF0ZU1hbmFnZXIkKG1hcD86IFN1YnNjcmlwdGlvbnNbXSk6IExvY2FsU3Vic2NyaXB0aW9uTWFuYWdlcjtcbiAgJGNsZWFyU3ViJDogKGdyb3VwOiBHcm91cCkgPT4gdm9pZDtcbiAgJGNsZWFyU2lnbmFsJDogKHNpZ25hbDogU3Vic2NyaWJlclNpZ25hbCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgUU9iamVjdDxUIGV4dGVuZHMge30+ID0gVCAmIHsgX19icmFuZF9fOiAnUU9iamVjdCcgfTtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0VHlwZSA9IFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIGFueT47XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjb25zdCB2ZXJpZnlTZXJpYWxpemFibGUgPSA8VD4odmFsdWU6IFQsIHByZU1lc3NhZ2U/OiBzdHJpbmcpOiBUID0+IHtcbiAgY29uc3Qgc2VlbiA9IG5ldyBTZXQoKTtcbiAgcmV0dXJuIF92ZXJpZnlTZXJpYWxpemFibGUodmFsdWUsIHNlZW4sICdfJywgcHJlTWVzc2FnZSk7XG59O1xuXG5jb25zdCBfdmVyaWZ5U2VyaWFsaXphYmxlID0gPFQ+KHZhbHVlOiBULCBzZWVuOiBTZXQ8YW55PiwgY3R4OiBzdHJpbmcsIHByZU1lc3NhZ2U/OiBzdHJpbmcpOiBUID0+IHtcbiAgY29uc3QgdW53cmFwcGVkID0gdW53cmFwUHJveHkodmFsdWUpO1xuICBpZiAodW53cmFwcGVkID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHNob3VsZFNlcmlhbGl6ZSh1bndyYXBwZWQpKSB7XG4gICAgaWYgKHNlZW4uaGFzKHVud3JhcHBlZCkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgc2Vlbi5hZGQodW53cmFwcGVkKTtcbiAgICBpZiAoY2FuU2VyaWFsaXplKHVud3JhcHBlZCkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgY29uc3QgdHlwZU9iaiA9IHR5cGVvZiB1bndyYXBwZWQ7XG4gICAgc3dpdGNoICh0eXBlT2JqKSB7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBpZiAoaXNQcm9taXNlKHVud3JhcHBlZCkpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTm9kZSh1bndyYXBwZWQpKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0FycmF5KHVud3JhcHBlZCkpIHtcbiAgICAgICAgICBsZXQgZXhwZWN0SW5kZXggPSAwO1xuICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyYXkgaGFzIG5vIGhvbGVzXG4gICAgICAgICAgdW53cmFwcGVkLmZvckVhY2goKHYsIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChpICE9PSBleHBlY3RJbmRleCkge1xuICAgICAgICAgICAgICB0aHJvdyBxRXJyb3IoUUVycm9yX3ZlcmlmeVNlcmlhbGl6YWJsZSwgdW53cmFwcGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF92ZXJpZnlTZXJpYWxpemFibGUodiwgc2VlbiwgY3R4ICsgJ1snICsgaSArICddJyk7XG4gICAgICAgICAgICBleHBlY3RJbmRleCA9IGkgKyAxO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNTZXJpYWxpemFibGVPYmplY3QodW53cmFwcGVkKSkge1xuICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgaXRlbV0gb2YgT2JqZWN0LmVudHJpZXModW53cmFwcGVkKSkge1xuICAgICAgICAgICAgX3ZlcmlmeVNlcmlhbGl6YWJsZShpdGVtLCBzZWVuLCBjdHggKyAnLicgKyBrZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGxldCBtZXNzYWdlID0gJyc7XG4gICAgaWYgKHByZU1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UgPSBwcmVNZXNzYWdlO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXNzYWdlID0gJ1ZhbHVlIGNhbm5vdCBiZSBzZXJpYWxpemVkJztcbiAgICB9XG4gICAgaWYgKGN0eCAhPT0gJ18nKSB7XG4gICAgICBtZXNzYWdlICs9IGAgaW4gJHtjdHh9LGA7XG4gICAgfVxuICAgIGlmICh0eXBlT2JqID09PSAnb2JqZWN0Jykge1xuICAgICAgbWVzc2FnZSArPSBgIGJlY2F1c2UgaXQncyBhbiBpbnN0YW5jZSBvZiBcIiR7dmFsdWU/LmNvbnN0cnVjdG9yLm5hbWV9XCIuIFlvdSBtaWdodCBuZWVkIHRvIHVzZSAnbm9TZXJpYWxpemUoKScgb3IgdXNlIGFuIG9iamVjdCBsaXRlcmFsIGluc3RlYWQuIENoZWNrIG91dCBodHRwczovL3F3aWsuZGV2L2RvY3MvYWR2YW5jZWQvZG9sbGFyL2A7XG4gICAgfSBlbHNlIGlmICh0eXBlT2JqID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zdCBmbk5hbWUgPSAodmFsdWUgYXMgRnVuY3Rpb24pLm5hbWU7XG4gICAgICBtZXNzYWdlICs9IGAgYmVjYXVzZSBpdCdzIGEgZnVuY3Rpb24gbmFtZWQgXCIke2ZuTmFtZX1cIi4gWW91IG1pZ2h0IG5lZWQgdG8gY29udmVydCBpdCB0byBhIFFSTCB1c2luZyAkKGZuKTpcXG5cXG5jb25zdCAke2ZuTmFtZX0gPSAkKCR7U3RyaW5nKFxuICAgICAgICB2YWx1ZVxuICAgICAgKX0pO1xcblxcblBsZWFzZSBjaGVjayBvdXQgaHR0cHM6Ly9xd2lrLmRldi9kb2NzL2FkdmFuY2VkL3FybC8gZm9yIG1vcmUgaW5mb3JtYXRpb24uYDtcbiAgICB9XG4gICAgY29uc29sZS5lcnJvcignVHJ5aW5nIHRvIHNlcmlhbGl6ZScsIHZhbHVlKTtcbiAgICB0aHJvd0Vycm9yQW5kU3RvcChtZXNzYWdlKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59O1xuY29uc3Qgbm9TZXJpYWxpemVTZXQgPSAvKiNfX1BVUkVfXyovIG5ldyBXZWFrU2V0PG9iamVjdD4oKTtcbmNvbnN0IHdlYWtTZXJpYWxpemVTZXQgPSAvKiNfX1BVUkVfXyovIG5ldyBXZWFrU2V0PG9iamVjdD4oKTtcblxuZXhwb3J0IGNvbnN0IHNob3VsZFNlcmlhbGl6ZSA9IChvYmo6IHVua25vd24pOiBib29sZWFuID0+IHtcbiAgaWYgKGlzT2JqZWN0KG9iaikgfHwgaXNGdW5jdGlvbihvYmopKSB7XG4gICAgcmV0dXJuICFub1NlcmlhbGl6ZVNldC5oYXMob2JqKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBmYXN0U2tpcFNlcmlhbGl6ZSA9IChvYmo6IG9iamVjdCk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gbm9TZXJpYWxpemVTZXQuaGFzKG9iaik7XG59O1xuXG5leHBvcnQgY29uc3QgZmFzdFdlYWtTZXJpYWxpemUgPSAob2JqOiBvYmplY3QpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIHdlYWtTZXJpYWxpemVTZXQuaGFzKG9iaik7XG59O1xuXG4vKipcbiAqIFJldHVybmVkIHR5cGUgb2YgdGhlIGBub1NlcmlhbGl6ZSgpYCBmdW5jdGlvbi4gSXQgd2lsbCBiZSBUWVBFIG9yIHVuZGVmaW5lZC5cbiAqXG4gKiBAcHVibGljXG4gKiBAc2VlIG5vU2VyaWFsaXplXG4gKi9cbmV4cG9ydCB0eXBlIE5vU2VyaWFsaXplPFQ+ID0gKFQgJiB7IF9fbm9fc2VyaWFsaXplX186IHRydWUgfSkgfCB1bmRlZmluZWQ7XG5cbi8vIDxkb2NzIG1hcmtkb3duPVwiLi4vcmVhZG1lLm1kI25vU2VyaWFsaXplXCI+XG4vLyAhIURPIE5PVCBFRElUIFRISVMgQ09NTUVOVCBESVJFQ1RMWSEhIVxuLy8gKGVkaXQgLi4vcmVhZG1lLm1kI25vU2VyaWFsaXplIGluc3RlYWQpXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgb24gYSBzdG9yZSBhcyBub24tc2VyaWFsaXphYmxlLlxuICpcbiAqIEF0IHRpbWVzIGl0IGlzIG5lY2Vzc2FyeSB0byBzdG9yZSB2YWx1ZXMgb24gYSBzdG9yZSB0aGF0IGFyZSBub24tc2VyaWFsaXphYmxlLiBOb3JtYWxseSB0aGlzIGlzIGFcbiAqIHJ1bnRpbWUgZXJyb3IgYXMgU3RvcmUgd2FudHMgdG8gZWFnZXJseSByZXBvcnQgd2hlbiBhIG5vbi1zZXJpYWxpemFibGUgcHJvcGVydHkgaXMgYXNzaWduZWQgdG9cbiAqIGl0LlxuICpcbiAqIFlvdSBjYW4gdXNlIGBub1NlcmlhbGl6ZSgpYCB0byBtYXJrIGEgdmFsdWUgYXMgbm9uLXNlcmlhbGl6YWJsZS4gVGhlIHZhbHVlIGlzIHBlcnNpc3RlZCBpbiB0aGVcbiAqIFN0b3JlIGJ1dCBkb2VzIG5vdCBzdXJ2aXZlIHNlcmlhbGl6YXRpb24uIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHdoZW4geW91ciBhcHBsaWNhdGlvbiBpc1xuICogcmVzdW1lZCwgdGhlIHZhbHVlIG9mIHRoaXMgb2JqZWN0IHdpbGwgYmUgYHVuZGVmaW5lZGAuIFlvdSB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciByZWNvdmVyaW5nXG4gKiBmcm9tIHRoaXMuXG4gKlxuICogU2VlOiBbbm9TZXJpYWxpemUgVHV0b3JpYWxdKGh0dHA6Ly9xd2lrLmRldi90dXRvcmlhbC9zdG9yZS9uby1zZXJpYWxpemUpXG4gKlxuICogQHB1YmxpY1xuICovXG4vLyA8L2RvY3M+XG5leHBvcnQgY29uc3Qgbm9TZXJpYWxpemUgPSA8VCBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZD4oaW5wdXQ6IFQpOiBOb1NlcmlhbGl6ZTxUPiA9PiB7XG4gIC8vIG9ubHkgYWRkIHN1cHBvcnRlZCB2YWx1ZXMgdG8gdGhlIG5vU2VyaWFsaXplU2V0LCBwcmV2ZW50IGNvbnNvbGUgZXJyb3JzXG4gIGlmICgodHlwZW9mIGlucHV0ID09PSAnb2JqZWN0JyAmJiBpbnB1dCAhPT0gbnVsbCkgfHwgdHlwZW9mIGlucHV0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgbm9TZXJpYWxpemVTZXQuYWRkKGlucHV0KTtcbiAgfVxuICByZXR1cm4gaW5wdXQgYXMgYW55O1xufTtcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IF93ZWFrU2VyaWFsaXplID0gPFQgZXh0ZW5kcyBvYmplY3Q+KGlucHV0OiBUKTogUGFydGlhbDxUPiA9PiB7XG4gIHdlYWtTZXJpYWxpemVTZXQuYWRkKGlucHV0KTtcbiAgcmV0dXJuIGlucHV0IGFzIGFueTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0Nvbm5lY3RlZCA9IChzdWI6IFN1YnNjcmliZXJFZmZlY3QgfCBTdWJzY3JpYmVySG9zdCk6IGJvb2xlYW4gPT4ge1xuICBpZiAoaXNTdWJzY3JpYmVyRGVzY3JpcHRvcihzdWIpKSB7XG4gICAgcmV0dXJuIGlzQ29ubmVjdGVkKHN1Yi4kZWwkKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gISF0cnlHZXRDb250ZXh0KHN1YikgfHwgc3ViLmlzQ29ubmVjdGVkO1xuICB9XG59O1xuXG4vKipcbiAqIEdldCB0aGUgdGFyZ2V0IHZhbHVlIG9mIHRoZSBQcm94eS4gVXNlZnVsIGlmIHlvdSB3YW50IHRvIGNsb25lIGEgc3RvcmUgKHN0cnVjdHVyZUNsb25lLFxuICogSW5kZXhlZERCLC4uLilcbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB1bndyYXBQcm94eSA9IDxUPihwcm94eTogVCk6IFQgPT4ge1xuICByZXR1cm4gaXNPYmplY3QocHJveHkpID8gKGdldFByb3h5VGFyZ2V0PGFueT4ocHJveHkpID8/IHByb3h5KSA6IHByb3h5O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFByb3h5VGFyZ2V0ID0gPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCk6IFQgfCB1bmRlZmluZWQgPT4ge1xuICByZXR1cm4gKG9iaiBhcyBhbnkpW1FPamVjdFRhcmdldFN5bWJvbF07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3Vic2NyaXB0aW9uTWFuYWdlciA9IChvYmo6IG9iamVjdCk6IExvY2FsU3Vic2NyaXB0aW9uTWFuYWdlciB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiAob2JqIGFzIGFueSlbUU9iamVjdE1hbmFnZXJTeW1ib2xdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFByb3h5RmxhZ3MgPSA8VCA9IG9iamVjdD4ob2JqOiBUKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgcmV0dXJuIChvYmogYXMgYW55KVtRT2JqZWN0RmxhZ3NTeW1ib2xdO1xufTtcblxudHlwZSBTdWJzY3JpYmVyQSA9IHJlYWRvbmx5IFt0eXBlOiAwLCBob3N0OiBTdWJzY3JpYmVyRWZmZWN0IHwgU3Vic2NyaWJlckhvc3RdO1xuXG50eXBlIFN1YnNjcmliZXJCID0gcmVhZG9ubHkgW1xuICB0eXBlOiAxIHwgMixcbiAgaG9zdDogU3Vic2NyaWJlckhvc3QsXG4gIHNpZ25hbDogU2lnbmFsLFxuICBlbG06IFF3aWtFbGVtZW50LFxuICBwcm9wOiBzdHJpbmcsXG5dO1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVyQyA9IHJlYWRvbmx5IFtcbiAgdHlwZTogMyB8IDQsXG4gIGhvc3Q6IFN1YnNjcmliZXJIb3N0IHwgVGV4dCxcbiAgc2lnbmFsOiBTaWduYWwsXG4gIGVsbTogTm9kZSB8IHN0cmluZyB8IFF3aWtFbGVtZW50LFxuXTtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlciA9IFN1YnNjcmliZXJBIHwgU3Vic2NyaWJlckIgfCBTdWJzY3JpYmVyQztcblxudHlwZSBBID0gW3R5cGU6IDAsIGhvc3Q6IFN1YnNjcmliZXJFZmZlY3QgfCBTdWJzY3JpYmVySG9zdCwga2V5OiBzdHJpbmcgfCB1bmRlZmluZWRdO1xudHlwZSBCID0gW1xuICB0eXBlOiAxIHwgMixcbiAgaG9zdDogU3Vic2NyaWJlckhvc3QsXG4gIHNpZ25hbDogU2lnbmFsLFxuICBlbG06IFF3aWtFbGVtZW50LFxuICBwcm9wOiBzdHJpbmcsXG4gIGtleTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXTtcbnR5cGUgQyA9IFtcbiAgdHlwZTogMyB8IDQsXG4gIGhvc3Q6IFN1YnNjcmliZXJIb3N0IHwgVGV4dCxcbiAgc2lnbmFsOiBTaWduYWwsXG4gIGVsbTogTm9kZSB8IFF3aWtFbGVtZW50LFxuICBrZXk6IHN0cmluZyB8IHVuZGVmaW5lZCxcbl07XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmliZXJTaWduYWwgPSBCIHwgQztcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9ucyA9IEEgfCBTdWJzY3JpYmVyU2lnbmFsO1xuXG50eXBlIEdyb3VwID0gU3Vic2NyaWJlckVmZmVjdCB8IFN1YnNjcmliZXJIb3N0IHwgTm9kZTtcblxuZXhwb3J0IHR5cGUgR3JvdXBUb01hbmFnZXJzTWFwID0gTWFwPEdyb3VwLCBMb2NhbFN1YnNjcmlwdGlvbk1hbmFnZXJbXT47XG5cbmV4cG9ydCBjb25zdCBzZXJpYWxpemVTdWJzY3JpcHRpb24gPSAoc3ViOiBTdWJzY3JpcHRpb25zLCBnZXRPYmpJZDogR2V0T2JqSUQpID0+IHtcbiAgY29uc3QgdHlwZSA9IHN1YlswXTtcbiAgY29uc3QgaG9zdCA9IHR5cGVvZiBzdWJbMV0gPT09ICdzdHJpbmcnID8gc3ViWzFdIDogZ2V0T2JqSWQoc3ViWzFdKTtcbiAgaWYgKCFob3N0KSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBsZXQgYmFzZSA9IHR5cGUgKyAnICcgKyBob3N0O1xuICBsZXQga2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmICh0eXBlID09PSAwKSB7XG4gICAga2V5ID0gc3ViWzJdO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHNpZ25hbElEID0gZ2V0T2JqSWQoc3ViWzJdKTtcbiAgICBpZiAoIXNpZ25hbElEKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodHlwZSA8PSAyKSB7XG4gICAgICBrZXkgPSBzdWJbNV07XG4gICAgICBiYXNlICs9IGAgJHtzaWduYWxJRH0gJHttdXN0KGdldE9iaklkKHN1YlszXSkpfSAke3N1Yls0XX1gO1xuICAgIH0gZWxzZSBpZiAodHlwZSA8PSA0KSB7XG4gICAgICBrZXkgPSBzdWJbNF07XG4gICAgICBjb25zdCBub2RlSUQgPSB0eXBlb2Ygc3ViWzNdID09PSAnc3RyaW5nJyA/IHN1YlszXSA6IG11c3QoZ2V0T2JqSWQoc3ViWzNdKSk7XG4gICAgICBiYXNlICs9IGAgJHtzaWduYWxJRH0gJHtub2RlSUR9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0RmFpbCgnU2hvdWxkIG5vdCBnZXQgaGVyZScpO1xuICAgIH1cbiAgfVxuICBpZiAoa2V5KSB7XG4gICAgYmFzZSArPSBgICR7ZW5jb2RlVVJJKGtleSl9YDtcbiAgfVxuICByZXR1cm4gYmFzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZVN1YnNjcmlwdGlvbiA9IChzdWI6IHN0cmluZywgZ2V0T2JqZWN0OiBHZXRPYmplY3QpOiBTdWJzY3JpcHRpb25zIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgcGFydHMgPSBzdWIuc3BsaXQoJyAnKTtcbiAgY29uc3QgdHlwZSA9IHBhcnNlSW50KHBhcnRzWzBdLCAxMCk7XG4gIGFzc2VydFRydWUocGFydHMubGVuZ3RoID49IDIsICdBdCBsZWFzdCAyIHBhcnRzJyk7XG4gIGNvbnN0IGhvc3QgPSBnZXRPYmplY3QocGFydHNbMV0pO1xuICBpZiAoIWhvc3QpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmIChpc1N1YnNjcmliZXJEZXNjcmlwdG9yKGhvc3QpICYmICFob3N0LiRlbCQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHN1YnNjcmlwdGlvbiA9IFt0eXBlLCBob3N0XTtcbiAgaWYgKHR5cGUgPT09IDApIHtcbiAgICBhc3NlcnRUcnVlKHBhcnRzLmxlbmd0aCA8PSAzLCAnTWF4IDMgcGFydHMnKTtcbiAgICBzdWJzY3JpcHRpb24ucHVzaChzYWZlRGVjb2RlKHBhcnRzWzJdKSk7XG4gIH0gZWxzZSBpZiAodHlwZSA8PSAyKSB7XG4gICAgYXNzZXJ0VHJ1ZShwYXJ0cy5sZW5ndGggPT09IDUgfHwgcGFydHMubGVuZ3RoID09PSA2LCAnVHlwZSAxIGhhcyA1Jyk7XG4gICAgc3Vic2NyaXB0aW9uLnB1c2goZ2V0T2JqZWN0KHBhcnRzWzJdKSwgZ2V0T2JqZWN0KHBhcnRzWzNdKSwgcGFydHNbNF0sIHNhZmVEZWNvZGUocGFydHNbNV0pKTtcbiAgfSBlbHNlIGlmICh0eXBlIDw9IDQpIHtcbiAgICBhc3NlcnRUcnVlKHBhcnRzLmxlbmd0aCA9PT0gNCB8fCBwYXJ0cy5sZW5ndGggPT09IDUsICdUeXBlIDIgaGFzIDQnKTtcbiAgICBzdWJzY3JpcHRpb24ucHVzaChnZXRPYmplY3QocGFydHNbMl0pLCBnZXRPYmplY3QocGFydHNbM10pLCBzYWZlRGVjb2RlKHBhcnRzWzRdKSk7XG4gIH1cbiAgcmV0dXJuIHN1YnNjcmlwdGlvbiBhcyBhbnk7XG59O1xuXG5jb25zdCBzYWZlRGVjb2RlID0gKHN0cjogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG4gIGlmIChzdHIgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBkZWNvZGVVUkkoc3RyKTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVN1YnNjcmlwdGlvbk1hbmFnZXIgPSAoY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlKTogU3Vic2NyaXB0aW9uTWFuYWdlciA9PiB7XG4gIGNvbnN0IGdyb3VwVG9NYW5hZ2VyczogR3JvdXBUb01hbmFnZXJzTWFwID0gbmV3IE1hcCgpO1xuICBjb25zdCBtYW5hZ2VyOiBTdWJzY3JpcHRpb25NYW5hZ2VyID0ge1xuICAgICRncm91cFRvTWFuYWdlcnMkOiBncm91cFRvTWFuYWdlcnMsXG4gICAgJGNyZWF0ZU1hbmFnZXIkOiAoaW5pdGlhbE1hcD86IFN1YnNjcmlwdGlvbnNbXSkgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBMb2NhbFN1YnNjcmlwdGlvbk1hbmFnZXIoZ3JvdXBUb01hbmFnZXJzLCBjb250YWluZXJTdGF0ZSwgaW5pdGlhbE1hcCk7XG4gICAgfSxcbiAgICAkY2xlYXJTdWIkOiAoZ3JvdXA6IEdyb3VwKSA9PiB7XG4gICAgICBjb25zdCBtYW5hZ2VycyA9IGdyb3VwVG9NYW5hZ2Vycy5nZXQoZ3JvdXApO1xuICAgICAgaWYgKG1hbmFnZXJzKSB7XG4gICAgICAgIGZvciAoY29uc3QgbWFuYWdlciBvZiBtYW5hZ2Vycykge1xuICAgICAgICAgIG1hbmFnZXIuJHVuc3ViR3JvdXAkKGdyb3VwKTtcbiAgICAgICAgfVxuICAgICAgICBncm91cFRvTWFuYWdlcnMuZGVsZXRlKGdyb3VwKTtcbiAgICAgICAgbWFuYWdlcnMubGVuZ3RoID0gMDtcbiAgICAgIH1cbiAgICB9LFxuICAgICRjbGVhclNpZ25hbCQ6IChzaWduYWw6IFN1YnNjcmliZXJTaWduYWwpID0+IHtcbiAgICAgIGNvbnN0IG1hbmFnZXJzID0gZ3JvdXBUb01hbmFnZXJzLmdldChzaWduYWxbMV0pO1xuICAgICAgaWYgKG1hbmFnZXJzKSB7XG4gICAgICAgIGZvciAoY29uc3QgbWFuYWdlciBvZiBtYW5hZ2Vycykge1xuICAgICAgICAgIG1hbmFnZXIuJHVuc3ViRW50cnkkKHNpZ25hbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9O1xuICBzZWFsKG1hbmFnZXIpO1xuICByZXR1cm4gbWFuYWdlcjtcbn07XG5cbmV4cG9ydCBjbGFzcyBMb2NhbFN1YnNjcmlwdGlvbk1hbmFnZXIge1xuICByZWFkb25seSAkc3VicyQ6IFN1YnNjcmlwdGlvbnNbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlICRncm91cFRvTWFuYWdlcnMkOiBHcm91cFRvTWFuYWdlcnNNYXAsXG4gICAgcHJpdmF0ZSAkY29udGFpbmVyU3RhdGUkOiBDb250YWluZXJTdGF0ZSxcbiAgICBpbml0aWFsTWFwPzogU3Vic2NyaXB0aW9uc1tdXG4gICkge1xuICAgIHRoaXMuJHN1YnMkID0gW107XG5cbiAgICBpZiAoaW5pdGlhbE1hcCkge1xuICAgICAgdGhpcy4kYWRkU3VicyQoaW5pdGlhbE1hcCk7XG4gICAgfVxuICAgIHNlYWwodGhpcyk7XG4gIH1cblxuICAkYWRkU3VicyQoc3ViczogU3Vic2NyaXB0aW9uc1tdKSB7XG4gICAgdGhpcy4kc3VicyQucHVzaCguLi5zdWJzKTtcbiAgICBmb3IgKGNvbnN0IHN1YiBvZiB0aGlzLiRzdWJzJCkge1xuICAgICAgdGhpcy4kYWRkVG9Hcm91cCQoc3ViWzFdLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICAkYWRkVG9Hcm91cCQoZ3JvdXA6IEdyb3VwLCBtYW5hZ2VyOiBMb2NhbFN1YnNjcmlwdGlvbk1hbmFnZXIpIHtcbiAgICBsZXQgbWFuYWdlcnMgPSB0aGlzLiRncm91cFRvTWFuYWdlcnMkLmdldChncm91cCk7XG4gICAgaWYgKCFtYW5hZ2Vycykge1xuICAgICAgdGhpcy4kZ3JvdXBUb01hbmFnZXJzJC5zZXQoZ3JvdXAsIChtYW5hZ2VycyA9IFtdKSk7XG4gICAgfVxuICAgIGlmICghbWFuYWdlcnMuaW5jbHVkZXMobWFuYWdlcikpIHtcbiAgICAgIG1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gICAgfVxuICB9XG5cbiAgJHVuc3ViR3JvdXAkKGdyb3VwOiBHcm91cCkge1xuICAgIGNvbnN0IHN1YnMgPSB0aGlzLiRzdWJzJDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN1YnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGZvdW5kID0gc3Vic1tpXVsxXSA9PT0gZ3JvdXA7XG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgc3Vicy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGktLTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAkdW5zdWJFbnRyeSQoZW50cnk6IFN1YnNjcmliZXJTaWduYWwpIHtcbiAgICBjb25zdCBbdHlwZSwgZ3JvdXAsIHNpZ25hbCwgZWxtXSA9IGVudHJ5O1xuICAgIGNvbnN0IHN1YnMgPSB0aGlzLiRzdWJzJDtcbiAgICBpZiAodHlwZSA9PT0gMSB8fCB0eXBlID09PSAyKSB7XG4gICAgICBjb25zdCBwcm9wID0gZW50cnlbNF07XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN1YnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qgc3ViID0gc3Vic1tpXTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPVxuICAgICAgICAgIHN1YlswXSA9PT0gdHlwZSAmJlxuICAgICAgICAgIHN1YlsxXSA9PT0gZ3JvdXAgJiZcbiAgICAgICAgICBzdWJbMl0gPT09IHNpZ25hbCAmJlxuICAgICAgICAgIHN1YlszXSA9PT0gZWxtICYmXG4gICAgICAgICAgc3ViWzRdID09PSBwcm9wO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICBzdWJzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IDMgfHwgdHlwZSA9PT0gNCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdWJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHN1YiA9IHN1YnNbaV07XG4gICAgICAgIGNvbnN0IG1hdGNoID0gc3ViWzBdID09PSB0eXBlICYmIHN1YlsxXSA9PT0gZ3JvdXAgJiYgc3ViWzJdID09PSBzaWduYWwgJiYgc3ViWzNdID09PSBlbG07XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIHN1YnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICRhZGRTdWIkKHN1YjogU3Vic2NyaWJlciwga2V5Pzogc3RyaW5nKSB7XG4gICAgY29uc3Qgc3VicyA9IHRoaXMuJHN1YnMkO1xuICAgIGNvbnN0IGdyb3VwID0gc3ViWzFdO1xuICAgIGlmIChcbiAgICAgIHN1YlswXSA9PT0gMCAmJlxuICAgICAgc3Vicy5zb21lKChbX3R5cGUsIF9ncm91cCwgX2tleV0pID0+IF90eXBlID09PSAwICYmIF9ncm91cCA9PT0gZ3JvdXAgJiYgX2tleSA9PT0ga2V5KVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdWJzLnB1c2goKF9fbGFzdFN1YnNjcmlwdGlvbiA9IFsuLi5zdWIsIGtleV0gYXMgYW55KSk7XG4gICAgdGhpcy4kYWRkVG9Hcm91cCQoZ3JvdXAsIHRoaXMpO1xuICB9XG5cbiAgJG5vdGlmeVN1YnMkKGtleT86IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHN1YnMgPSB0aGlzLiRzdWJzJDtcbiAgICBmb3IgKGNvbnN0IHN1YiBvZiBzdWJzKSB7XG4gICAgICBjb25zdCBjb21wYXJlID0gc3ViW3N1Yi5sZW5ndGggLSAxXTtcbiAgICAgIGlmIChrZXkgJiYgY29tcGFyZSAmJiBjb21wYXJlICE9PSBrZXkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBub3RpZnlDaGFuZ2Uoc3ViLCB0aGlzLiRjb250YWluZXJTdGF0ZSQpO1xuICAgIH1cbiAgfVxufVxuXG5sZXQgX19sYXN0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb25zIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGFzdFN1YnNjcmlwdGlvbigpOiBTdWJzY3JpcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgLy8gSEFDSyhtaXNrbyk6IFRoaXMgaXMgYSBoYWNrIHRvIGdldCB0aGUgbGFzdCBzdWJzY3JpcHRpb24uXG4gIC8vIEl0IGlzIHVzZWQgYnkgYGV4ZWN1dGVTaWduYWxPcGVyYXRpb25gIHRvIHVwZGF0ZSB0aGUgdGFyZ2V0IGVsZW1lbnRcbiAgLy8gYWZ0ZXIgdGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBjcmVhdGVkLlxuICByZXR1cm4gX19sYXN0U3Vic2NyaXB0aW9uO1xufVxuXG5jb25zdCBtdXN0ID0gPFQ+KGE6IFQpOiBOb25OdWxsYWJsZTxUPiA9PiB7XG4gIGlmIChhID09IG51bGwpIHtcbiAgICB0aHJvdyBsb2dFcnJvcignbXVzdCBiZSBub24gbnVsbCcsIGEpO1xuICB9XG4gIHJldHVybiBhO1xufTtcbiJdfQ==","import { assertDefined } from '../error/assert';\nimport { qError, QError_qrlIsNotFunction } from '../error/error';\nimport { getPlatform, isServerPlatform } from '../platform/platform';\nimport { verifySerializable } from '../state/common';\nimport { isSignal } from '../state/signal';\nimport { invoke, newInvokeContext, newInvokeContextFromTuple, tryGetInvokeContext, } from '../use/use-core';\nimport { getQFuncs, QInstance } from '../util/markers';\nimport { isPromise, maybeThen } from '../util/promises';\nimport { qDev, qSerialize, qTest, seal } from '../util/qdev';\nimport { isArray, isFunction } from '../util/types';\n// @ts-expect-error we don't have types for the preloader\nimport { p as preload } from '@builder.io/qwik/preloader';\nimport { isBrowser } from '@builder.io/qwik/build';\nexport const isQrl = (value) => {\n    return typeof value === 'function' && typeof value.getSymbol === 'function';\n};\n// Make sure this value is same as value in `platform.ts`\nexport const SYNC_QRL = '<sync>';\n/** Sync QRL is a function which is serialized into `<script q:func=\"qwik/json\">` tag. */\nexport const isSyncQrl = (value) => {\n    return isQrl(value) && value.$symbol$ == SYNC_QRL;\n};\nexport const createQRL = (chunk, symbol, symbolRef, symbolFn, capture, captureRef, refSymbol) => {\n    if (qDev && qSerialize) {\n        if (captureRef) {\n            for (const item of captureRef) {\n                verifySerializable(item, 'Captured variable in the closure can not be serialized');\n            }\n        }\n    }\n    let _containerEl;\n    const qrl = async function (...args) {\n        const fn = invokeFn.call(this, tryGetInvokeContext());\n        const result = await fn(...args);\n        return result;\n    };\n    const setContainer = (el) => {\n        if (!_containerEl) {\n            _containerEl = el;\n        }\n        return _containerEl;\n    };\n    // Wrap functions to provide their lexical scope\n    const wrapFn = (fn) => {\n        if (typeof fn !== 'function' || (!capture?.length && !captureRef?.length)) {\n            return fn;\n        }\n        return function (...args) {\n            let context = tryGetInvokeContext();\n            if (context) {\n                const prevQrl = context.$qrl$;\n                context.$qrl$ = qrl;\n                const prevEvent = context.$event$;\n                if (context.$event$ === undefined) {\n                    context.$event$ = this;\n                }\n                try {\n                    return fn.apply(this, args);\n                }\n                finally {\n                    context.$qrl$ = prevQrl;\n                    context.$event$ = prevEvent;\n                }\n            }\n            context = newInvokeContext();\n            context.$qrl$ = qrl;\n            context.$event$ = this;\n            return invoke.call(this, context, fn, ...args);\n        };\n    };\n    const resolve = async (containerEl) => {\n        if (symbolRef !== null) {\n            // Resolving (Promise) or already resolved (value)\n            return symbolRef;\n        }\n        if (containerEl) {\n            setContainer(containerEl);\n        }\n        if (chunk === '') {\n            // Sync QRL\n            assertDefined(_containerEl, 'Sync QRL must have container element');\n            const hash = _containerEl.getAttribute(QInstance);\n            const doc = _containerEl.ownerDocument;\n            const qFuncs = getQFuncs(doc, hash);\n            // No need to wrap, syncQRLs can't have captured scope\n            return (qrl.resolved = symbolRef = qFuncs[Number(symbol)]);\n        }\n        if (isBrowser && chunk) {\n            /** We run the QRL, so now the probability of the chunk is 100% */\n            preload(chunk, 1);\n        }\n        const start = now();\n        const ctx = tryGetInvokeContext();\n        if (symbolFn !== null) {\n            symbolRef = symbolFn().then((module) => (qrl.resolved = symbolRef = wrapFn(module[symbol])));\n        }\n        else {\n            const imported = getPlatform().importSymbol(_containerEl, chunk, symbol);\n            symbolRef = maybeThen(imported, (ref) => (qrl.resolved = symbolRef = wrapFn(ref)));\n        }\n        if (typeof symbolRef === 'object' && isPromise(symbolRef)) {\n            symbolRef.then(() => emitUsedSymbol(symbol, ctx?.$element$, start), (err) => {\n                console.error(`qrl ${symbol} failed to load`, err);\n                // We shouldn't cache rejections, we can try again later\n                symbolRef = null;\n            });\n        }\n        return symbolRef;\n    };\n    const resolveLazy = (containerEl) => {\n        return symbolRef !== null ? symbolRef : resolve(containerEl);\n    };\n    function invokeFn(currentCtx, beforeFn) {\n        // Note that we bind the current `this`\n        return (...args) => maybeThen(resolveLazy(), (f) => {\n            if (!isFunction(f)) {\n                throw qError(QError_qrlIsNotFunction);\n            }\n            if (beforeFn && beforeFn() === false) {\n                return;\n            }\n            const context = createOrReuseInvocationContext(currentCtx);\n            return invoke.call(this, context, f, ...args);\n        });\n    }\n    const createOrReuseInvocationContext = (invoke) => {\n        if (invoke == null) {\n            return newInvokeContext();\n        }\n        else if (isArray(invoke)) {\n            return newInvokeContextFromTuple(invoke);\n        }\n        else {\n            return invoke;\n        }\n    };\n    const resolvedSymbol = refSymbol ?? symbol;\n    const hash = getSymbolHash(resolvedSymbol);\n    Object.assign(qrl, {\n        getSymbol: () => resolvedSymbol,\n        getHash: () => hash,\n        getCaptured: () => captureRef,\n        resolve,\n        $resolveLazy$: resolveLazy,\n        $setContainer$: setContainer,\n        $chunk$: chunk,\n        $symbol$: symbol,\n        $refSymbol$: refSymbol,\n        $hash$: hash,\n        getFn: invokeFn,\n        $capture$: capture,\n        $captureRef$: captureRef,\n        dev: null,\n        resolved: undefined,\n    });\n    if (symbolRef) {\n        // Replace symbolRef with (a promise for) the value or wrapped function\n        symbolRef = maybeThen(symbolRef, (resolved) => (qrl.resolved = symbolRef = wrapFn(resolved)));\n    }\n    if (qDev) {\n        seal(qrl);\n    }\n    if (isBrowser && resolvedSymbol) {\n        /**\n         * Preloading the symbol instead of the chunk allows us to get probabilities for the bundle\n         * based on its contents.\n         */\n        preload(resolvedSymbol, 0.8);\n    }\n    return qrl;\n};\nexport const getSymbolHash = (symbolName) => {\n    const index = symbolName.lastIndexOf('_');\n    if (index > -1) {\n        return symbolName.slice(index + 1);\n    }\n    return symbolName;\n};\nexport function assertQrl(qrl) {\n    if (qDev) {\n        if (!isQrl(qrl)) {\n            throw new Error('Not a QRL');\n        }\n    }\n}\nexport function assertSignal(obj) {\n    if (qDev) {\n        if (!isSignal(obj)) {\n            throw new Error('Not a Signal');\n        }\n    }\n}\nconst EMITTED = /*#__PURE__*/ new Set();\nexport const emitUsedSymbol = (symbol, element, reqTime) => {\n    if (!EMITTED.has(symbol)) {\n        EMITTED.add(symbol);\n        emitEvent('qsymbol', {\n            symbol,\n            element,\n            reqTime,\n        });\n    }\n};\nexport const emitEvent = (eventName, detail) => {\n    if (!qTest && !isServerPlatform() && typeof document === 'object') {\n        document.dispatchEvent(new CustomEvent(eventName, {\n            bubbles: false,\n            detail,\n        }));\n    }\n};\nconst now = () => {\n    if (qTest || isServerPlatform()) {\n        return 0;\n    }\n    if (typeof performance === 'object') {\n        return performance.now();\n    }\n    return 0;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXJsLWNsYXNzLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3FybC9xcmwtY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsTUFBTSxFQUNOLGdCQUFnQixFQUNoQix5QkFBeUIsRUFDekIsbUJBQW1CLEdBR3BCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLHlEQUF5RDtBQUN6RCxPQUFPLEVBQUUsQ0FBQyxJQUFJLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBYyxLQUFjLEVBQTJCLEVBQUU7SUFDNUUsT0FBTyxPQUFPLEtBQUssS0FBSyxVQUFVLElBQUksT0FBUSxLQUFhLENBQUMsU0FBUyxL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QUM7UUFDaEMsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsSUFBSSxPQUFPLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNwQyxPQUFPLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnREZWZpbmVkIH0gZnJvbSAnLi4vZXJyb3IvYXNzZXJ0JztcbmltcG9ydCB7IHFFcnJvciwgUUVycm9yX3FybElzTm90RnVuY3Rpb24gfSBmcm9tICcuLi9lcnJvci9lcnJvcic7XG5pbXBvcnQgeyBnZXRQbGF0Zm9ybSwgaXNTZXJ2ZXJQbGF0Zm9ybSB9IGZyb20gJy4uL3BsYXRmb3JtL3BsYXRmb3JtJztcbmltcG9ydCB7IHZlcmlmeVNlcmlhbGl6YWJsZSB9IGZyb20gJy4uL3N0YXRlL2NvbW1vbic7XG5pbXBvcnQgeyBpc1NpZ25hbCwgdHlwZSBTaWduYWxJbnRlcm5hbCB9IGZyb20gJy4uL3N0YXRlL3NpZ25hbCc7XG5pbXBvcnQge1xuICBpbnZva2UsXG4gIG5ld0ludm9rZUNvbnRleHQsXG4gIG5ld0ludm9rZUNvbnRleHRGcm9tVHVwbGUsXG4gIHRyeUdldEludm9rZUNvbnRleHQsXG4gIHR5cGUgSW52b2tlQ29udGV4dCxcbiAgdHlwZSBJbnZva2VUdXBsZSxcbn0gZnJvbSAnLi4vdXNlL3VzZS1jb3JlJztcbmltcG9ydCB7IGdldFFGdW5jcywgUUluc3RhbmNlIH0gZnJvbSAnLi4vdXRpbC9tYXJrZXJzJztcbmltcG9ydCB7IGlzUHJvbWlzZSwgbWF5YmVUaGVuIH0gZnJvbSAnLi4vdXRpbC9wcm9taXNlcyc7XG5pbXBvcnQgeyBxRGV2LCBxU2VyaWFsaXplLCBxVGVzdCwgc2VhbCB9IGZyb20gJy4uL3V0aWwvcWRldic7XG5pbXBvcnQgeyBpc0FycmF5LCBpc0Z1bmN0aW9uLCB0eXBlIFZhbHVlT3JQcm9taXNlIH0gZnJvbSAnLi4vdXRpbC90eXBlcyc7XG4vLyBAdHMtZXhwZWN0LWVycm9yIHdlIGRvbid0IGhhdmUgdHlwZXMgZm9yIHRoZSBwcmVsb2FkZXJcbmltcG9ydCB7IHAgYXMgcHJlbG9hZCB9IGZyb20gJ0BidWlsZGVyLmlvL3F3aWsvcHJlbG9hZGVyJztcbmltcG9ydCB0eXBlIHsgUVJMRGV2IH0gZnJvbSAnLi9xcmwnO1xuaW1wb3J0IHR5cGUgeyBRUkwsIFFybEFyZ3MsIFFybFJldHVybiB9IGZyb20gJy4vcXJsLnB1YmxpYyc7XG5pbXBvcnQgeyBpc0Jyb3dzZXIgfSBmcm9tICdAYnVpbGRlci5pby9xd2lrL2J1aWxkJztcblxuZXhwb3J0IGNvbnN0IGlzUXJsID0gPFQgPSB1bmtub3duPih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFFSTEludGVybmFsPFQ+ID0+IHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgKHZhbHVlIGFzIGFueSkuZ2V0U3ltYm9sID09PSAnZnVuY3Rpb24nO1xufTtcblxuLy8gTWFrZSBzdXJlIHRoaXMgdmFsdWUgaXMgc2FtZSBhcyB2YWx1ZSBpbiBgcGxhdGZvcm0udHNgXG5leHBvcnQgY29uc3QgU1lOQ19RUkwgPSAnPHN5bmM+JztcblxuLyoqIFN5bmMgUVJMIGlzIGEgZnVuY3Rpb24gd2hpY2ggaXMgc2VyaWFsaXplZCBpbnRvIGA8c2NyaXB0IHE6ZnVuYz1cInF3aWsvanNvblwiPmAgdGFnLiAqL1xuZXhwb3J0IGNvbnN0IGlzU3luY1FybCA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgUVJMSW50ZXJuYWwgPT4ge1xuICByZXR1cm4gaXNRcmwodmFsdWUpICYmIHZhbHVlLiRzeW1ib2wkID09IFNZTkNfUVJMO1xufTtcblxuZXhwb3J0IHR5cGUgUVJMSW50ZXJuYWxNZXRob2RzPFRZUEU+ID0ge1xuICByZWFkb25seSAkY2h1bmskOiBzdHJpbmcgfCBudWxsO1xuICByZWFkb25seSAkc3ltYm9sJDogc3RyaW5nO1xuICByZWFkb25seSAkcmVmU3ltYm9sJDogc3RyaW5nIHwgbnVsbDtcbiAgcmVhZG9ubHkgJGhhc2gkOiBzdHJpbmc7XG5cbiAgJGNhcHR1cmUkOiBzdHJpbmdbXSB8IG51bGw7XG4gICRjYXB0dXJlUmVmJDogdW5rbm93bltdIHwgbnVsbDtcbiAgZGV2OiBRUkxEZXYgfCBudWxsO1xuXG4gIHJlc29sdmVkOiB1bmRlZmluZWQgfCBUWVBFO1xuXG4gIHJlc29sdmUoKTogUHJvbWlzZTxUWVBFPjtcbiAgZ2V0U3ltYm9sKCk6IHN0cmluZztcbiAgZ2V0SGFzaCgpOiBzdHJpbmc7XG4gIGdldENhcHR1cmVkKCk6IHVua25vd25bXSB8IG51bGw7XG4gIGdldEZuKFxuICAgIGN1cnJlbnRDdHg/OiBJbnZva2VDb250ZXh0IHwgSW52b2tlVHVwbGUsXG4gICAgYmVmb3JlRm4/OiAoKSA9PiB2b2lkXG4gICk6IFRZUEUgZXh0ZW5kcyAoLi4uYXJnczogYW55KSA9PiBhbnlcbiAgICA/ICguLi5hcmdzOiBQYXJhbWV0ZXJzPFRZUEU+KSA9PiBWYWx1ZU9yUHJvbWlzZTxSZXR1cm5UeXBlPFRZUEU+PlxuICAgIDogLy8gdW5rbm93biBzbyB3ZSBhbGxvdyBhc3NpZ25pbmcgZnVuY3Rpb24gUVJMcyB0byBhbnlcbiAgICAgIHVua25vd247XG5cbiAgJHNldENvbnRhaW5lciQoY29udGFpbmVyRWw6IEVsZW1lbnQgfCB1bmRlZmluZWQpOiBFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAkcmVzb2x2ZUxhenkkKGNvbnRhaW5lckVsOiBFbGVtZW50KTogVmFsdWVPclByb21pc2U8VFlQRT47XG59O1xuXG5leHBvcnQgdHlwZSBRUkxJbnRlcm5hbDxUWVBFID0gdW5rbm93bj4gPSBRUkw8VFlQRT4gJiBRUkxJbnRlcm5hbE1ldGhvZHM8VFlQRT47XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVRUkwgPSA8VFlQRT4oXG4gIGNodW5rOiBzdHJpbmcgfCBudWxsLFxuICBzeW1ib2w6IHN0cmluZyxcbiAgc3ltYm9sUmVmOiBudWxsIHwgVmFsdWVPclByb21pc2U8VFlQRT4sXG4gIHN5bWJvbEZuOiBudWxsIHwgKCgpID0+IFByb21pc2U8UmVjb3JkPHN0cmluZywgVFlQRT4+KSxcbiAgY2FwdHVyZTogbnVsbCB8IFJlYWRvbmx5PHN0cmluZ1tdPixcbiAgY2FwdHVyZVJlZjogUmVhZG9ubHk8dW5rbm93bltdPiB8IG51bGwsXG4gIHJlZlN5bWJvbDogc3RyaW5nIHwgbnVsbFxuKTogUVJMSW50ZXJuYWw8VFlQRT4gPT4ge1xuICBpZiAocURldiAmJiBxU2VyaWFsaXplKSB7XG4gICAgaWYgKGNhcHR1cmVSZWYpIHtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBjYXB0dXJlUmVmKSB7XG4gICAgICAgIHZlcmlmeVNlcmlhbGl6YWJsZShpdGVtLCAnQ2FwdHVyZWQgdmFyaWFibGUgaW4gdGhlIGNsb3N1cmUgY2FuIG5vdCBiZSBzZXJpYWxpemVkJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IF9jb250YWluZXJFbDogRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICBjb25zdCBxcmwgPSBhc3luYyBmdW5jdGlvbiAodGhpczogdW5rbm93biwgLi4uYXJnczogUXJsQXJnczxUWVBFPikge1xuICAgIGNvbnN0IGZuID0gaW52b2tlRm4uY2FsbCh0aGlzLCB0cnlHZXRJbnZva2VDb250ZXh0KCkpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZuKC4uLmFyZ3MpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gYXMgUVJMSW50ZXJuYWw8VFlQRT47XG5cbiAgY29uc3Qgc2V0Q29udGFpbmVyID0gKGVsOiBFbGVtZW50IHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgaWYgKCFfY29udGFpbmVyRWwpIHtcbiAgICAgIF9jb250YWluZXJFbCA9IGVsO1xuICAgIH1cbiAgICByZXR1cm4gX2NvbnRhaW5lckVsO1xuICB9O1xuXG4gIC8vIFdyYXAgZnVuY3Rpb25zIHRvIHByb3ZpZGUgdGhlaXIgbGV4aWNhbCBzY29wZVxuICBjb25zdCB3cmFwRm4gPSAoZm46IFRZUEUpOiBUWVBFID0+IHtcbiAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nIHx8ICghY2FwdHVyZT8ubGVuZ3RoICYmICFjYXB0dXJlUmVmPy5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gZm47XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogdW5rbm93biwgLi4uYXJnczogUXJsQXJnczxUWVBFPikge1xuICAgICAgbGV0IGNvbnRleHQgPSB0cnlHZXRJbnZva2VDb250ZXh0KCk7XG4gICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICBjb25zdCBwcmV2UXJsID0gY29udGV4dC4kcXJsJDtcbiAgICAgICAgY29udGV4dC4kcXJsJCA9IHFybDtcbiAgICAgICAgY29uc3QgcHJldkV2ZW50ID0gY29udGV4dC4kZXZlbnQkO1xuICAgICAgICBpZiAoY29udGV4dC4kZXZlbnQkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb250ZXh0LiRldmVudCQgPSB0aGlzIGFzIEV2ZW50O1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGNvbnRleHQuJHFybCQgPSBwcmV2UXJsO1xuICAgICAgICAgIGNvbnRleHQuJGV2ZW50JCA9IHByZXZFdmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29udGV4dCA9IG5ld0ludm9rZUNvbnRleHQoKTtcbiAgICAgIGNvbnRleHQuJHFybCQgPSBxcmw7XG4gICAgICBjb250ZXh0LiRldmVudCQgPSB0aGlzIGFzIEV2ZW50O1xuICAgICAgcmV0dXJuIGludm9rZS5jYWxsKHRoaXMsIGNvbnRleHQsIGZuIGFzIGFueSwgLi4uYXJncyk7XG4gICAgfSBhcyBUWVBFO1xuICB9O1xuXG4gIGNvbnN0IHJlc29sdmUgPSBhc3luYyAoY29udGFpbmVyRWw/OiBFbGVtZW50KTogUHJvbWlzZTxUWVBFPiA9PiB7XG4gICAgaWYgKHN5bWJvbFJlZiAhPT0gbnVsbCkge1xuICAgICAgLy8gUmVzb2x2aW5nIChQcm9taXNlKSBvciBhbHJlYWR5IHJlc29sdmVkICh2YWx1ZSlcbiAgICAgIHJldHVybiBzeW1ib2xSZWY7XG4gICAgfVxuICAgIGlmIChjb250YWluZXJFbCkge1xuICAgICAgc2V0Q29udGFpbmVyKGNvbnRhaW5lckVsKTtcbiAgICB9XG4gICAgaWYgKGNodW5rID09PSAnJykge1xuICAgICAgLy8gU3luYyBRUkxcbiAgICAgIGFzc2VydERlZmluZWQoX2NvbnRhaW5lckVsLCAnU3luYyBRUkwgbXVzdCBoYXZlIGNvbnRhaW5lciBlbGVtZW50Jyk7XG4gICAgICBjb25zdCBoYXNoID0gX2NvbnRhaW5lckVsLmdldEF0dHJpYnV0ZShRSW5zdGFuY2UpITtcbiAgICAgIGNvbnN0IGRvYyA9IF9jb250YWluZXJFbC5vd25lckRvY3VtZW50ITtcbiAgICAgIGNvbnN0IHFGdW5jcyA9IGdldFFGdW5jcyhkb2MsIGhhc2gpO1xuICAgICAgLy8gTm8gbmVlZCB0byB3cmFwLCBzeW5jUVJMcyBjYW4ndCBoYXZlIGNhcHR1cmVkIHNjb3BlXG4gICAgICByZXR1cm4gKHFybC5yZXNvbHZlZCA9IHN5bWJvbFJlZiA9IHFGdW5jc1tOdW1iZXIoc3ltYm9sKV0gYXMgVFlQRSk7XG4gICAgfVxuXG4gICAgaWYgKGlzQnJvd3NlciAmJiBjaHVuaykge1xuICAgICAgLyoqIFdlIHJ1biB0aGUgUVJMLCBzbyBub3cgdGhlIHByb2JhYmlsaXR5IG9mIHRoZSBjaHVuayBpcyAxMDAlICovXG4gICAgICBwcmVsb2FkKGNodW5rLCAxKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydCA9IG5vdygpO1xuICAgIGNvbnN0IGN0eCA9IHRyeUdldEludm9rZUNvbnRleHQoKTtcbiAgICBpZiAoc3ltYm9sRm4gIT09IG51bGwpIHtcbiAgICAgIHN5bWJvbFJlZiA9IHN5bWJvbEZuKCkudGhlbigobW9kdWxlKSA9PiAocXJsLnJlc29sdmVkID0gc3ltYm9sUmVmID0gd3JhcEZuKG1vZHVsZVtzeW1ib2xdKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpbXBvcnRlZCA9IGdldFBsYXRmb3JtKCkuaW1wb3J0U3ltYm9sKF9jb250YWluZXJFbCwgY2h1bmssIHN5bWJvbCk7XG4gICAgICBzeW1ib2xSZWYgPSBtYXliZVRoZW4oaW1wb3J0ZWQsIChyZWYpID0+IChxcmwucmVzb2x2ZWQgPSBzeW1ib2xSZWYgPSB3cmFwRm4ocmVmKSkpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHN5bWJvbFJlZiA9PT0gJ29iamVjdCcgJiYgaXNQcm9taXNlKHN5bWJvbFJlZikpIHtcbiAgICAgIHN5bWJvbFJlZi50aGVuKFxuICAgICAgICAoKSA9PiBlbWl0VXNlZFN5bWJvbChzeW1ib2wsIGN0eD8uJGVsZW1lbnQkLCBzdGFydCksXG4gICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBxcmwgJHtzeW1ib2x9IGZhaWxlZCB0byBsb2FkYCwgZXJyKTtcbiAgICAgICAgICAvLyBXZSBzaG91bGRuJ3QgY2FjaGUgcmVqZWN0aW9ucywgd2UgY2FuIHRyeSBhZ2FpbiBsYXRlclxuICAgICAgICAgIHN5bWJvbFJlZiA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBzeW1ib2xSZWY7XG4gIH07XG5cbiAgY29uc3QgcmVzb2x2ZUxhenkgPSAoY29udGFpbmVyRWw/OiBFbGVtZW50KTogVmFsdWVPclByb21pc2U8VFlQRT4gPT4ge1xuICAgIHJldHVybiBzeW1ib2xSZWYgIT09IG51bGwgPyBzeW1ib2xSZWYgOiByZXNvbHZlKGNvbnRhaW5lckVsKTtcbiAgfTtcblxuICBmdW5jdGlvbiBpbnZva2VGbihcbiAgICB0aGlzOiB1bmtub3duLFxuICAgIGN1cnJlbnRDdHg/OiBJbnZva2VDb250ZXh0IHwgSW52b2tlVHVwbGUsXG4gICAgYmVmb3JlRm4/OiAoKSA9PiB2b2lkIHwgYm9vbGVhblxuICApIHtcbiAgICAvLyBOb3RlIHRoYXQgd2UgYmluZCB0aGUgY3VycmVudCBgdGhpc2BcbiAgICByZXR1cm4gKC4uLmFyZ3M6IFFybEFyZ3M8VFlQRT4pOiBRcmxSZXR1cm48VFlQRT4gPT5cbiAgICAgIG1heWJlVGhlbihyZXNvbHZlTGF6eSgpLCAoZikgPT4ge1xuICAgICAgICBpZiAoIWlzRnVuY3Rpb24oZikpIHtcbiAgICAgICAgICB0aHJvdyBxRXJyb3IoUUVycm9yX3FybElzTm90RnVuY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiZWZvcmVGbiAmJiBiZWZvcmVGbigpID09PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb250ZXh0ID0gY3JlYXRlT3JSZXVzZUludm9jYXRpb25Db250ZXh0KGN1cnJlbnRDdHgpO1xuICAgICAgICByZXR1cm4gaW52b2tlLmNhbGwodGhpcywgY29udGV4dCwgZiwgLi4uKGFyZ3MgYXMgUGFyYW1ldGVyczx0eXBlb2YgZj4pKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlT3JSZXVzZUludm9jYXRpb25Db250ZXh0ID0gKGludm9rZTogSW52b2tlQ29udGV4dCB8IEludm9rZVR1cGxlIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgaWYgKGludm9rZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbmV3SW52b2tlQ29udGV4dCgpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShpbnZva2UpKSB7XG4gICAgICByZXR1cm4gbmV3SW52b2tlQ29udGV4dEZyb21UdXBsZShpbnZva2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaW52b2tlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCByZXNvbHZlZFN5bWJvbCA9IHJlZlN5bWJvbCA/PyBzeW1ib2w7XG4gIGNvbnN0IGhhc2ggPSBnZXRTeW1ib2xIYXNoKHJlc29sdmVkU3ltYm9sKTtcblxuICBPYmplY3QuYXNzaWduKHFybCwge1xuICAgIGdldFN5bWJvbDogKCkgPT4gcmVzb2x2ZWRTeW1ib2wsXG4gICAgZ2V0SGFzaDogKCkgPT4gaGFzaCxcbiAgICBnZXRDYXB0dXJlZDogKCkgPT4gY2FwdHVyZVJlZixcbiAgICByZXNvbHZlLFxuICAgICRyZXNvbHZlTGF6eSQ6IHJlc29sdmVMYXp5LFxuICAgICRzZXRDb250YWluZXIkOiBzZXRDb250YWluZXIsXG4gICAgJGNodW5rJDogY2h1bmssXG4gICAgJHN5bWJvbCQ6IHN5bWJvbCxcbiAgICAkcmVmU3ltYm9sJDogcmVmU3ltYm9sLFxuICAgICRoYXNoJDogaGFzaCxcbiAgICBnZXRGbjogaW52b2tlRm4sXG5cbiAgICAkY2FwdHVyZSQ6IGNhcHR1cmUsXG4gICAgJGNhcHR1cmVSZWYkOiBjYXB0dXJlUmVmLFxuICAgIGRldjogbnVsbCxcbiAgICByZXNvbHZlZDogdW5kZWZpbmVkLFxuICB9KTtcbiAgaWYgKHN5bWJvbFJlZikge1xuICAgIC8vIFJlcGxhY2Ugc3ltYm9sUmVmIHdpdGggKGEgcHJvbWlzZSBmb3IpIHRoZSB2YWx1ZSBvciB3cmFwcGVkIGZ1bmN0aW9uXG4gICAgc3ltYm9sUmVmID0gbWF5YmVUaGVuKHN5bWJvbFJlZiwgKHJlc29sdmVkKSA9PiAocXJsLnJlc29sdmVkID0gc3ltYm9sUmVmID0gd3JhcEZuKHJlc29sdmVkKSkpO1xuICB9XG4gIGlmIChxRGV2KSB7XG4gICAgc2VhbChxcmwpO1xuICB9XG4gIGlmIChpc0Jyb3dzZXIgJiYgcmVzb2x2ZWRTeW1ib2wpIHtcbiAgICAvKipcbiAgICAgKiBQcmVsb2FkaW5nIHRoZSBzeW1ib2wgaW5zdGVhZCBvZiB0aGUgY2h1bmsgYWxsb3dzIHVzIHRvIGdldCBwcm9iYWJpbGl0aWVzIGZvciB0aGUgYnVuZGxlXG4gICAgICogYmFzZWQgb24gaXRzIGNvbnRlbnRzLlxuICAgICAqL1xuICAgIHByZWxvYWQocmVzb2x2ZWRTeW1ib2wsIDAuOCk7XG4gIH1cbiAgcmV0dXJuIHFybDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTeW1ib2xIYXNoID0gKHN5bWJvbE5hbWU6IHN0cmluZykgPT4ge1xuICBjb25zdCBpbmRleCA9IHN5bWJvbE5hbWUubGFzdEluZGV4T2YoJ18nKTtcbiAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICByZXR1cm4gc3ltYm9sTmFtZS5zbGljZShpbmRleCArIDEpO1xuICB9XG4gIHJldHVybiBzeW1ib2xOYW1lO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFFybDxUPihxcmw6IFFSTDxUPik6IGFzc2VydHMgcXJsIGlzIFFSTEludGVybmFsPFQ+IHtcbiAgaWYgKHFEZXYpIHtcbiAgICBpZiAoIWlzUXJsKHFybCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGEgUVJMJyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRTaWduYWw8VD4ob2JqOiB1bmtub3duKTogYXNzZXJ0cyBvYmogaXMgU2lnbmFsSW50ZXJuYWw8VD4ge1xuICBpZiAocURldikge1xuICAgIGlmICghaXNTaWduYWwob2JqKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgYSBTaWduYWwnKTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgRU1JVFRFRCA9IC8qI19fUFVSRV9fKi8gbmV3IFNldCgpO1xuXG5leHBvcnQgY29uc3QgZW1pdFVzZWRTeW1ib2wgPSAoc3ltYm9sOiBzdHJpbmcsIGVsZW1lbnQ6IEVsZW1lbnQgfCB1bmRlZmluZWQsIHJlcVRpbWU6IG51bWJlcikgPT4ge1xuICBpZiAoIUVNSVRURUQuaGFzKHN5bWJvbCkpIHtcbiAgICBFTUlUVEVELmFkZChzeW1ib2wpO1xuICAgIGVtaXRFdmVudCgncXN5bWJvbCcsIHtcbiAgICAgIHN5bWJvbCxcbiAgICAgIGVsZW1lbnQsXG4gICAgICByZXFUaW1lLFxuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZW1pdEV2ZW50ID0gPFQgZXh0ZW5kcyBDdXN0b21FdmVudCA9IGFueT4oZXZlbnROYW1lOiBzdHJpbmcsIGRldGFpbDogVFsnZGV0YWlsJ10pID0+IHtcbiAgaWYgKCFxVGVzdCAmJiAhaXNTZXJ2ZXJQbGF0Zm9ybSgpICYmIHR5cGVvZiBkb2N1bWVudCA9PT0gJ29iamVjdCcpIHtcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IEN1c3RvbUV2ZW50KGV2ZW50TmFtZSwge1xuICAgICAgICBidWJibGVzOiBmYWxzZSxcbiAgICAgICAgZGV0YWlsLFxuICAgICAgfSkgYXMgVFxuICAgICk7XG4gIH1cbn07XG5cbmNvbnN0IG5vdyA9ICgpID0+IHtcbiAgaWYgKHFUZXN0IHx8IGlzU2VydmVyUGxhdGZvcm0oKSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmICh0eXBlb2YgcGVyZm9ybWFuY2UgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHBlcmZvcm1hbmNlLm5vdygpO1xuICB9XG4gIHJldHVybiAwO1xufTtcbiJdfQ==","import { implicit$FirstArg } from '../util/implicit_dollar';\nimport { qDev, qRuntimeQrl } from '../util/qdev';\nimport { SYNC_QRL, createQRL } from './qrl-class';\nlet runtimeSymbolId = 0;\n// <docs markdown=\"../readme.md#$\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#$ instead)\n/**\n * Qwik Optimizer marker function.\n *\n * Use `$(...)` to tell Qwik Optimizer to extract the expression in `$(...)` into a lazy-loadable\n * resource referenced by `QRL`.\n *\n * @param expression - Expression which should be lazy loaded\n * @public\n * @see `implicit$FirstArg` for additional `____$(...)` rules.\n *\n * In this example, `$(...)` is used to capture the callback function of `onmousemove` into a\n * lazy-loadable reference. This allows the code to refer to the function without actually\n * loading the function. In this example, the callback function does not get loaded until\n * `mousemove` event fires.\n *\n * ```tsx\n * useOnDocument(\n *   'mousemove',\n *   $((event) => console.log('mousemove', event))\n * );\n * ```\n *\n * In this code, the Qwik Optimizer detects `$(...)` and transforms the code into:\n *\n * ```tsx\n * // FILE: <current file>\n * useOnDocument('mousemove', qrl('./chunk-abc.js', 'onMousemove'));\n *\n * // FILE: chunk-abc.js\n * export const onMousemove = () => console.log('mousemove');\n * ```\n *\n * ## Special Rules\n *\n * The Qwik Optimizer places special rules on functions that can be lazy-loaded.\n *\n * 1. The expression of the `$(expression)` function must be importable by the system.\n * (expression shows up in `import` or has `export`)\n * 2. If inlined function, then all lexically captured values must be:\n *    - importable (vars show up in `import`s or `export`s)\n *    - const (The capturing process differs from JS capturing in that writing to captured\n * variables does not update them, and therefore writes are forbidden. The best practice is that\n * all captured variables are constants.)\n *    - Must be runtime serializable.\n *\n * ```tsx\n *\n * import { createContextId, useContext, useContextProvider } from './use/use-context';\n * import { Resource, useResource$ } from './use/use-resource';\n * import { useSignal } from './use/use-signal';\n *\n * export const greet = () => console.log('greet');\n * function topLevelFn() {}\n *\n * function myCode() {\n *   const store = useStore({});\n *   function localFn() {}\n *   // Valid Examples\n *   $(greet); // greet is importable\n *   $(() => greet()); // greet is importable;\n *   $(() => console.log(store)); // store is serializable.\n *\n *   // Compile time errors\n *   $(topLevelFn); // ERROR: `topLevelFn` not importable\n *   $(() => topLevelFn()); // ERROR: `topLevelFn` not importable\n *\n *   // Runtime errors\n *   $(localFn); // ERROR: `localFn` fails serialization\n *   $(() => localFn()); // ERROR: `localFn` fails serialization\n * }\n *\n * ```\n */\n// </docs>\nexport const $ = (expression) => {\n    if (!qRuntimeQrl && qDev) {\n        throw new Error('Optimizer should replace all usages of $() with some special syntax. If you need to create a QRL manually, use inlinedQrl() instead.');\n    }\n    return createQRL(null, 's' + runtimeSymbolId++, expression, null, null, null, null);\n};\n/** @public */\nexport const eventQrl = (qrl) => {\n    return qrl;\n};\n/** @public */\nexport const event$ = implicit$FirstArg(eventQrl);\n/**\n * Extract function into a synchronously loadable QRL.\n *\n * NOTE: Synchronous QRLs functions can't close over any variables, including exports.\n *\n * @param fn - Function to extract.\n * @returns\n * @alpha\n */\nexport const sync$ = (fn) => {\n    if (!qRuntimeQrl && qDev) {\n        throw new Error('Optimizer should replace all usages of sync$() with some special syntax. If you need to create a QRL manually, use inlinedSyncQrl() instead.');\n    }\n    if (qDev) {\n        // To make sure that in dev mode we don't accidentally capture context in `sync$()` we serialize and deserialize the function.\n        // eslint-disable-next-line no-new-func\n        fn = new Function('return ' + fn.toString())();\n    }\n    return createQRL('', SYNC_QRL, fn, null, null, null, null);\n};\n/**\n * Extract function into a synchronously loadable QRL.\n *\n * NOTE: Synchronous QRLs functions can't close over any variables, including exports.\n *\n * @param fn - Extracted function\n * @param serializedFn - Serialized function in string form.\n * @returns\n * @alpha\n */\nexport const _qrlSync = function (fn, serializedFn) {\n    if (serializedFn === undefined) {\n        serializedFn = fn.toString();\n    }\n    fn.serialized = serializedFn;\n    return createQRL('', SYNC_QRL, fn, null, null, null, null);\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXJsLnB1YmxpYy5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS9xcmwvcXJsLnB1YmxpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQXdLbEQsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0FBU3hCLG1DQUFtQztBQUNuQyx5Q0FBeUM7QUFDekMsZ0NBQWdDO0FBQ2hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3RUc7QUFDSCxVQUFVO0FBQ1YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUksVUFBYSxFQUFVLEVBQUU7SUFDNUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksS0FBSyxDQUNiLHNJQUFzSSxDQUN2SSxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFJLElBQUksRUFBRSxHQUFHLEdBQUcsZUFBZSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3pGLENBQUMsQ0FBQztBQUVGLGNBQWM7QUFDZCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBSSxHQUFXLEVBQVUsRUFBRTtJQUNqRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUVGLGNBQWM7QUFDZCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7QUFvQmxEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQXFCLEVBQUssRUFBYyxFQUFFO0lBQzdELElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxFQUFFLENBQUM7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FDYiw4SUFBOEksQ0FDL0ksQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1QsOEhBQThIO1FBQzlILHVDQUF1QztRQUN2QyxFQUFFLEdBQUcsSUFBSSxRQUFRLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFTLENBQUM7SUFDeEQsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBUSxDQUFDO0FBQ3ZFLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxVQUN0QixFQUFRLEVBQ1IsWUFBcUI7SUFFckIsSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDL0IsWUFBWSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBQ0EsRUFBVSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUM7SUFDdEMsT0FBTyxTQUFTLENBQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFRLENBQUM7QUFDMUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW1wbGljaXQkRmlyc3RBcmcgfSBmcm9tICcuLi91dGlsL2ltcGxpY2l0X2RvbGxhcic7XG5pbXBvcnQgeyBxRGV2LCBxUnVudGltZVFybCB9IGZyb20gJy4uL3V0aWwvcWRldic7XG5pbXBvcnQgdHlwZSB7IFFSTERldiB9IGZyb20gJy4vcXJsJztcbmltcG9ydCB7IFNZTkNfUVJMLCBjcmVhdGVRUkwgfSBmcm9tICcuL3FybC1jbGFzcyc7XG5cbi8vIFdlIHVzZSBgdW5rbm93bmAgaW5zdGVhZCBvZiBgbmV2ZXJgIHdoZW4gaXQncyBub3QgYSBmdW5jdGlvbiBzbyB3ZSBhbGxvdyBhc3NpZ25pbmcgUVJMPGZ1bmN0aW9uPiB0byBRUkw8YW55PlxuZXhwb3J0IHR5cGUgUXJsQXJnczxUPiA9IFQgZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgQVJHUykgPT4gYW55ID8gQVJHUyA6IHVua25vd25bXTtcbmV4cG9ydCB0eXBlIFFybFJldHVybjxUPiA9IFQgZXh0ZW5kcyAoLi4uYXJnczogYW55KSA9PiBpbmZlciBSID8gQXdhaXRlZDxSPiA6IHVua25vd247XG5cbi8vIDxkb2NzIG1hcmtkb3duPVwiLi4vcmVhZG1lLm1kI1FSTFwiPlxuLy8gISFETyBOT1QgRURJVCBUSElTIENPTU1FTlQgRElSRUNUTFkhISFcbi8vIChlZGl0IC4uL3JlYWRtZS5tZCNRUkwgaW5zdGVhZClcbi8qKlxuICogVGhlIGBRUkxgIHR5cGUgcmVwcmVzZW50cyBhIGxhenktbG9hZGFibGUgQU5EIHNlcmlhbGl6YWJsZSByZXNvdXJjZS5cbiAqXG4gKiBRUkwgc3RhbmRzIGZvciBRd2lrIFVSTC5cbiAqXG4gKiBVc2UgYFFSTGAgd2hlbiB5b3Ugd2FudCB0byByZWZlciB0byBhIGxhenktbG9hZGVkIHJlc291cmNlLiBgUVJMYHMgYXJlIG1vc3Qgb2Z0ZW4gdXNlZCBmb3IgY29kZVxuICogKGZ1bmN0aW9ucykgYnV0IGNhbiBhbHNvIGJlIHVzZWQgZm9yIG90aGVyIHJlc291cmNlcyBzdWNoIGFzIGBzdHJpbmdgcyBpbiB0aGUgY2FzZSBvZiBzdHlsZXMuXG4gKlxuICogYFFSTGAgaXMgYW4gb3BhcXVlIHRva2VuIHRoYXQgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBRd2lrIE9wdGltaXplci4gKERvIG5vdCByZWx5IG9uIGFueSBwcm9wZXJ0aWVzXG4gKiBpbiBgUVJMYCBhcyBpdCBtYXkgY2hhbmdlIGJldHdlZW4gdmVyc2lvbnMuKVxuICpcbiAqICMjIENyZWF0aW5nIGBRUkxgIHJlZmVyZW5jZXNcbiAqXG4gKiBDcmVhdGluZyBgUVJMYCBpcyBkb25lIHVzaW5nIGAkKC4uLilgIGZ1bmN0aW9uLiBgJCguLi4pYCBpcyBhIHNwZWNpYWwgbWFya2VyIGZvciB0aGUgUXdpa1xuICogT3B0aW1pemVyIHRoYXQgbWFya3MgdGhhdCB0aGUgY29kZSBzaG91bGQgYmUgZXh0cmFjdGVkIGludG8gYSBsYXp5LWxvYWRlZCBzeW1ib2wuXG4gKlxuICogYGBgdHN4XG4gKiB1c2VPbkRvY3VtZW50KFxuICogICAnbW91c2Vtb3ZlJyxcbiAqICAgJCgoZXZlbnQpID0+IGNvbnNvbGUubG9nKCdtb3VzZW1vdmUnLCBldmVudCkpXG4gKiApO1xuICogYGBgXG4gKlxuICogSW4gdGhlIGFib3ZlIGNvZGUsIHRoZSBRd2lrIE9wdGltaXplciBkZXRlY3RzIGAkKC4uLilgIGFuZCB0cmFuc2Zvcm1zIHRoZSBjb2RlIGFzIHNob3duIGJlbG93OlxuICpcbiAqIGBgYHRzeFxuICogLy8gRklMRTogPGN1cnJlbnQgZmlsZT5cbiAqIHVzZU9uRG9jdW1lbnQoJ21vdXNlbW92ZScsIHFybCgnLi9jaHVuay1hYmMuanMnLCAnb25Nb3VzZW1vdmUnKSk7XG4gKlxuICogLy8gRklMRTogY2h1bmstYWJjLmpzXG4gKiBleHBvcnQgY29uc3Qgb25Nb3VzZW1vdmUgPSAoKSA9PiBjb25zb2xlLmxvZygnbW91c2Vtb3ZlJyk7XG4gKiBgYGBcbiAqXG4gKiBOT1RFOiBgcXJsKC4uLilgIGlzIGEgcmVzdWx0IG9mIFF3aWsgT3B0aW1pemVyIHRyYW5zZm9ybWF0aW9uLiBZb3Ugc2hvdWxkIG5ldmVyIGhhdmUgdG8gaW52b2tlXG4gKiB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGluIHlvdXIgYXBwbGljYXRpb24uIFRoZSBgcXJsKC4uLilgIGZ1bmN0aW9uIHNob3VsZCBiZSBpbnZva2VkIG9ubHkgYWZ0ZXJcbiAqIHRoZSBRd2lrIE9wdGltaXplciB0cmFuc2Zvcm1hdGlvbi5cbiAqXG4gKiAjIyBVc2luZyBgUVJMYHNcbiAqXG4gKiBVc2UgYFFSTGAgdHlwZSBpbiB5b3VyIGFwcGxpY2F0aW9uIHdoZW4geW91IHdhbnQgdG8gZ2V0IGEgbGF6eS1sb2FkYWJsZSByZWZlcmVuY2UgdG8gYSByZXNvdXJjZVxuICogKG1vc3QgbGlrZWx5IGEgZnVuY3Rpb24pLlxuICpcbiAqIGBgYHRzeFxuICogLy8gRXhhbXBsZSBvZiBkZWNsYXJpbmcgYSBjdXN0b20gZnVuY3Rpb25zIHdoaWNoIHRha2VzIGNhbGxiYWNrIGFzIFFSTC5cbiAqIGV4cG9ydCBmdW5jdGlvbiB1c2VNeUZ1bmN0aW9uKGNhbGxiYWNrOiBRUkw8KCkgPT4gdm9pZD4pIHtcbiAqICAgZG9FeHRyYVN0dWZmKCk7XG4gKiAgIC8vIFRoZSBjYWxsYmFjayBwYXNzZWQgdG8gYG9uRG9jdW1lbnRgIHJlcXVpcmVzIGBRUkxgLlxuICogICB1c2VPbkRvY3VtZW50KCdtb3VzZW1vdmUnLCBjYWxsYmFjayk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgdGhlIHdheSB0byB0aGluayBhYm91dCB0aGUgY29kZSBpcyB0aGF0IHlvdSBhcmUgbm90IGFza2luZyBmb3IgYSBjYWxsYmFja1xuICogZnVuY3Rpb24gYnV0IHJhdGhlciBhIHJlZmVyZW5jZSB0byBhIGxhenktbG9hZGFibGUgY2FsbGJhY2sgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgdGhlIGZ1bmN0aW9uXG4gKiBsb2FkaW5nIHNob3VsZCBiZSBkZWxheWVkIHVudGlsIGl0IGlzIGFjdHVhbGx5IG5lZWRlZC4gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZSBmdW5jdGlvbiB3b3VsZFxuICogbm90IGxvYWQgdW50aWwgYWZ0ZXIgYSBgbW91c2Vtb3ZlYCBldmVudCBvbiBgZG9jdW1lbnRgIGZpcmVzLlxuICpcbiAqICMjIFJlc29sdmluZyBgUVJMYCByZWZlcmVuY2VzXG4gKlxuICogQXQgdGltZXMgaXQgbWF5IGJlIG5lY2Vzc2FyeSB0byByZXNvbHZlIGEgYFFSTGAgcmVmZXJlbmNlIHRvIHRoZSBhY3R1YWwgdmFsdWUuIFRoaXMgY2FuIGJlXG4gKiBwZXJmb3JtZWQgdXNpbmcgYFFSTC5yZXNvbHZlKC4uKWAgZnVuY3Rpb24uXG4gKlxuICogYGBgdHN4XG4gKiAvLyBBc3N1bWUgeW91IGhhdmUgUVJMIHJlZmVyZW5jZSB0byBhIGdyZWV0IGZ1bmN0aW9uXG4gKiBjb25zdCBsYXp5R3JlZXQ6IFFSTDwoKSA9PiB2b2lkPiA9ICQoKCkgPT4gY29uc29sZS5sb2coJ0hlbGxvIFdvcmxkIScpKTtcbiAqXG4gKiAvLyBVc2UgYHFybEltcG9ydGAgdG8gbG9hZCAvIHJlc29sdmUgdGhlIHJlZmVyZW5jZS5cbiAqIGNvbnN0IGdyZWV0OiAoKSA9PiB2b2lkID0gYXdhaXQgbGF6eUdyZWV0LnJlc29sdmUoKTtcbiAqXG4gKiAvLyAgSW52b2tlIGl0XG4gKiBncmVldCgpO1xuICogYGBgXG4gKlxuICogTk9URTogYGVsZW1lbnRgIGlzIG5lZWRlZCBiZWNhdXNlIGBRUkxgcyBhcmUgcmVsYXRpdmUgYW5kIG5lZWQgYSBiYXNlIGxvY2F0aW9uIHRvIHJlc29sdmVcbiAqIGFnYWluc3QuIFRoZSBiYXNlIGxvY2F0aW9uIGlzIGVuY29kZWQgaW4gdGhlIEhUTUwgaW4gdGhlIGZvcm0gb2YgYDxkaXYgcTpiYXNlPVwiL3VybFwiPmAuXG4gKlxuICogIyMgYFFSTC5yZXNvbHZlZGBcbiAqXG4gKiBPbmNlIGBRUkwucmVzb2x2ZSgpYCByZXR1cm5zLCB0aGUgdmFsdWUgaXMgc3RvcmVkIHVuZGVyIGBRUkwucmVzb2x2ZWRgLiBUaGlzIGFsbG93cyB0aGUgdmFsdWUgdG9cbiAqIGJlIHVzZWQgd2l0aG91dCBoYXZpbmcgdG8gYXdhaXQgYFFSTC5yZXNvbHZlKClgIGFnYWluLlxuICpcbiAqICMjIFF1ZXN0aW9uOiBXaHkgbm90IGp1c3QgdXNlIGBpbXBvcnQoKWA/XG4gKlxuICogQXQgZmlyc3QgZ2xhbmNlLCBgUVJMYCBzZXJ2ZXMgdGhlIHNhbWUgcHVycG9zZSBhcyBgaW1wb3J0KClgLiBIb3dldmVyLCB0aGVyZSBhcmUgdGhyZWUgc3VidGxlXG4gKiBkaWZmZXJlbmNlcyB0aGF0IG5lZWQgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50LlxuICpcbiAqIDEuIGBRUkxgcyBtdXN0IGJlIHNlcmlhbGl6YWJsZSBpbnRvIEhUTUwuXG4gKiAyLiBgUVJMYHMgbXVzdCBiZSByZXNvbHZlZCBieSBmcmFtZXdvcmsgcmVsYXRpdmUgdG8gYHE6YmFzZWAuXG4gKiAzLiBgUVJMYHMgbXVzdCBiZSBhYmxlIHRvIGNhcHR1cmUgbGV4aWNhbGx5IHNjb3BlZCB2YXJpYWJsZXMuXG4gKiA0LiBgUVJMYHMgZW5jYXBzdWxhdGUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBydW5uaW5nIHdpdGggYW5kIHdpdGhvdXQgUXdpayBPcHRpbWl6ZXIuXG4gKiA1LiBgUVJMYHMgYWxsb3cgZXhwcmVzc2luZyBsYXp5LWxvYWRlZCBib3VuZGFyaWVzIHdpdGhvdXQgdGhpbmtpbmcgYWJvdXQgY2h1bmsgYW5kIHN5bWJvbCBuYW1lcy5cbiAqXG4gKiBMZXQncyBhc3N1bWUgdGhhdCB5b3UgaW50ZW5kIHRvIHdyaXRlIGNvZGUgc3VjaCBhcyB0aGlzOlxuICpcbiAqIGBgYHRzeFxuICogcmV0dXJuIDxidXR0b24gb25DbGljaz17KCkgPT4gKGF3YWl0IGltcG9ydCgnLi9jaHVuay1hYmMuanMnKSkub25DbGlja30+XG4gKiBgYGBcbiAqXG4gKiBUaGUgYWJvdmUgY29kZSBuZWVkcyB0byBiZSBzZXJpYWxpemVkIGludG8gRE9NIHN1Y2ggYXM6XG4gKlxuICogYGBgXG4gKiA8ZGl2IHE6YmFzZT1cIi9idWlsZC9cIj5cbiAqICAgPGJ1dHRvbiBvbjpjbGljaz1cIi4vY2h1bmstYWJjLmpzI29uQ2xpY2tcIj4uLi48L2J1dHRvbj5cbiAqIDwvZGl2PlxuICogYGBgXG4gKlxuICogMS4gTm90aWNlIHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGV4dHJhY3QgY2h1bmsgKGAuL2NodW5rLWFiYy5qc2ApIGFuZCBzeW1ib2wgKGBvbkNsaWNrYCkgaW50byBIVE1MLlxuICogMi4gTm90aWNlIHRoYXQgZXZlbiBpZiB5b3UgY291bGQgZXh0cmFjdCBpdCwgdGhlIGBpbXBvcnQoJy4vY2h1bmstYWJjLmpzJylgIHdvdWxkIGJlY29tZSByZWxhdGl2ZSB0b1xuICogICAgd2hlcmUgdGhlIGBpbXBvcnQoKWAgZmlsZSBpcyBkZWNsYXJlZC4gQmVjYXVzZSBpdCBpcyBvdXIgZnJhbWV3b3JrIGRvaW5nIHRoZSBsb2FkLCB0aGVcbiAqICAgIGAuL2NodW5rLWFiYy5qc2Agd291bGQgYmVjb21lIHJlbGF0aXZlIHRvIHRoZSBmcmFtZXdvcmsgZmlsZS4gVGhpcyBpcyBub3QgY29ycmVjdCwgYXMgaXRcbiAqICAgIHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGUgb3JpZ2luYWwgZmlsZSBnZW5lcmF0ZWQgYnkgdGhlIGJ1bmRsZXIuXG4gKiAzLiBOZXh0LCB0aGUgZnJhbWV3b3JrIG5lZWRzIHRvIHJlc29sdmUgdGhlIGAuL2NodW5rLWFiYy5qc2AgYW5kIG5lZWRzIGEgYmFzZSBsb2NhdGlvbiB0aGF0IGlzXG4gKiAgICBlbmNvZGVkIGluIHRoZSBIVE1MLlxuICogNC4gVGhlIFFSTCBuZWVkcyB0byBiZSBhYmxlIHRvIGNhcHR1cmUgbGV4aWNhbGx5IHNjb3BlZCB2YXJpYWJsZXMuIChgaW1wb3J0KClgIG9ubHkgYWxsb3dzIGxvYWRpbmdcbiAqICAgIHRvcC1sZXZlbCBzeW1ib2xzIHdoaWNoIGRvbid0IGNhcHR1cmUgdmFyaWFibGVzLilcbiAqIDUuIEFzIGEgZGV2ZWxvcGVyLCB5b3UgZG9uJ3Qgd2FudCB0byB0aGluayBhYm91dCBgaW1wb3J0YCBhbmQgbmFtaW5nIHRoZSBjaHVua3MgYW5kIHN5bWJvbHMuIFlvdVxuICogICAganVzdCB3YW50IHRvIHNheTogXCJ0aGlzIHNob3VsZCBiZSBsYXp5LlwiXG4gKlxuICogVGhlc2UgYXJlIHRoZSBtYWluIHJlYXNvbnMgd2h5IFF3aWsgaW50cm9kdWNlcyBpdHMgb3duIGNvbmNlcHQgb2YgYFFSTGAuXG4gKlxuICogQHB1YmxpY1xuICogQHNlZSBgJGBcbiAqL1xuLy8gPC9kb2NzPlxuZXhwb3J0IHR5cGUgUVJMPFRZUEUgPSB1bmtub3duPiA9IHtcbiAgLy8gU3BlY2lhbCB0eXBlIGJyYW5kIHRvIGxldCBlc2xpbnQgdGhhdCB0aGUgVHlwZSBpcyBzZXJpYWxpemFibGVcbiAgX19xd2lrX3NlcmlhbGl6YWJsZV9fPzogYW55O1xuICBfX2JyYW5kX19RUkxfXzogVFlQRTtcblxuICAvKiogUmVzb2x2ZSB0aGUgUVJMIGFuZCByZXR1cm4gdGhlIGFjdHVhbCB2YWx1ZS4gKi9cbiAgcmVzb2x2ZSgpOiBQcm9taXNlPFRZUEU+O1xuICAvKiogVGhlIHJlc29sdmVkIHZhbHVlLCBvbmNlIGByZXNvbHZlKClgIHJldHVybnMuICovXG4gIHJlc29sdmVkOiB1bmRlZmluZWQgfCBUWVBFO1xuXG4gIGdldENhcHR1cmVkKCk6IHVua25vd25bXSB8IG51bGw7XG4gIGdldFN5bWJvbCgpOiBzdHJpbmc7XG4gIGdldEhhc2goKTogc3RyaW5nO1xuICBkZXY6IFFSTERldiB8IG51bGw7XG59ICYgQml2YXJpYW50UXJsRm48UXJsQXJnczxUWVBFPiwgUXJsUmV0dXJuPFRZUEU+PjtcblxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTI2Njc5NTkvd2hhdC1pcy10aGUtcHVycG9zZS1vZi1iaXZhcmlhbmNlaGFjay1pbi10eXBlc2NyaXB0LXR5cGVzLzUyNjY4MTMzIzUyNjY4MTMzXG50eXBlIEJpdmFyaWFudFFybEZuPEFSR1MgZXh0ZW5kcyBhbnlbXSwgUkVUVVJOPiA9IHtcbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIFFSTCBvZiBjbG9zdXJlIGFuZCBpbnZva2UgaXQuXG4gICAqXG4gICAqIEBwYXJhbSBhcmdzIC0gQ2xvc3VyZSBhcmd1bWVudHMuXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSBvZiB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBjbG9zdXJlLlxuICAgKi9cbiAgYml2YXJpYW5jZUhhY2soLi4uYXJnczogQVJHUyk6IFByb21pc2U8UkVUVVJOPjtcbn1bJ2JpdmFyaWFuY2VIYWNrJ107XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBRUkw8PmAgaW5zdGVhZFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBQcm9wRm5JbnRlcmZhY2U8QVJHUyBleHRlbmRzIGFueVtdLCBSRVQ+ID0ge1xuICBfX3F3aWtfc2VyaWFsaXphYmxlX18/OiBhbnk7XG4gICguLi5hcmdzOiBBUkdTKTogUHJvbWlzZTxSRVQ+O1xufTtcblxubGV0IHJ1bnRpbWVTeW1ib2xJZCA9IDA7XG5cbi8qKlxuICogQWxpYXMgZm9yIGBRUkw8VD5gLiBPZiBoaXN0b3JpYyByZWxldmFuY2Ugb25seS5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIFByb3BGdW5jdGlvbjxUPiA9IFFSTDxUPjtcblxuLy8gPGRvY3MgbWFya2Rvd249XCIuLi9yZWFkbWUubWQjJFwiPlxuLy8gISFETyBOT1QgRURJVCBUSElTIENPTU1FTlQgRElSRUNUTFkhISFcbi8vIChlZGl0IC4uL3JlYWRtZS5tZCMkIGluc3RlYWQpXG4vKipcbiAqIFF3aWsgT3B0aW1pemVyIG1hcmtlciBmdW5jdGlvbi5cbiAqXG4gKiBVc2UgYCQoLi4uKWAgdG8gdGVsbCBRd2lrIE9wdGltaXplciB0byBleHRyYWN0IHRoZSBleHByZXNzaW9uIGluIGAkKC4uLilgIGludG8gYSBsYXp5LWxvYWRhYmxlXG4gKiByZXNvdXJjZSByZWZlcmVuY2VkIGJ5IGBRUkxgLlxuICpcbiAqIEBwYXJhbSBleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB3aGljaCBzaG91bGQgYmUgbGF6eSBsb2FkZWRcbiAqIEBwdWJsaWNcbiAqIEBzZWUgYGltcGxpY2l0JEZpcnN0QXJnYCBmb3IgYWRkaXRpb25hbCBgX19fXyQoLi4uKWAgcnVsZXMuXG4gKlxuICogSW4gdGhpcyBleGFtcGxlLCBgJCguLi4pYCBpcyB1c2VkIHRvIGNhcHR1cmUgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIG9mIGBvbm1vdXNlbW92ZWAgaW50byBhXG4gKiBsYXp5LWxvYWRhYmxlIHJlZmVyZW5jZS4gVGhpcyBhbGxvd3MgdGhlIGNvZGUgdG8gcmVmZXIgdG8gdGhlIGZ1bmN0aW9uIHdpdGhvdXQgYWN0dWFsbHlcbiAqIGxvYWRpbmcgdGhlIGZ1bmN0aW9uLiBJbiB0aGlzIGV4YW1wbGUsIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBkb2VzIG5vdCBnZXQgbG9hZGVkIHVudGlsXG4gKiBgbW91c2Vtb3ZlYCBldmVudCBmaXJlcy5cbiAqXG4gKiBgYGB0c3hcbiAqIHVzZU9uRG9jdW1lbnQoXG4gKiAgICdtb3VzZW1vdmUnLFxuICogICAkKChldmVudCkgPT4gY29uc29sZS5sb2coJ21vdXNlbW92ZScsIGV2ZW50KSlcbiAqICk7XG4gKiBgYGBcbiAqXG4gKiBJbiB0aGlzIGNvZGUsIHRoZSBRd2lrIE9wdGltaXplciBkZXRlY3RzIGAkKC4uLilgIGFuZCB0cmFuc2Zvcm1zIHRoZSBjb2RlIGludG86XG4gKlxuICogYGBgdHN4XG4gKiAvLyBGSUxFOiA8Y3VycmVudCBmaWxlPlxuICogdXNlT25Eb2N1bWVudCgnbW91c2Vtb3ZlJywgcXJsKCcuL2NodW5rLWFiYy5qcycsICdvbk1vdXNlbW92ZScpKTtcbiAqXG4gKiAvLyBGSUxFOiBjaHVuay1hYmMuanNcbiAqIGV4cG9ydCBjb25zdCBvbk1vdXNlbW92ZSA9ICgpID0+IGNvbnNvbGUubG9nKCdtb3VzZW1vdmUnKTtcbiAqIGBgYFxuICpcbiAqICMjIFNwZWNpYWwgUnVsZXNcbiAqXG4gKiBUaGUgUXdpayBPcHRpbWl6ZXIgcGxhY2VzIHNwZWNpYWwgcnVsZXMgb24gZnVuY3Rpb25zIHRoYXQgY2FuIGJlIGxhenktbG9hZGVkLlxuICpcbiAqIDEuIFRoZSBleHByZXNzaW9uIG9mIHRoZSBgJChleHByZXNzaW9uKWAgZnVuY3Rpb24gbXVzdCBiZSBpbXBvcnRhYmxlIGJ5IHRoZSBzeXN0ZW0uXG4gKiAoZXhwcmVzc2lvbiBzaG93cyB1cCBpbiBgaW1wb3J0YCBvciBoYXMgYGV4cG9ydGApXG4gKiAyLiBJZiBpbmxpbmVkIGZ1bmN0aW9uLCB0aGVuIGFsbCBsZXhpY2FsbHkgY2FwdHVyZWQgdmFsdWVzIG11c3QgYmU6XG4gKiAgICAtIGltcG9ydGFibGUgKHZhcnMgc2hvdyB1cCBpbiBgaW1wb3J0YHMgb3IgYGV4cG9ydGBzKVxuICogICAgLSBjb25zdCAoVGhlIGNhcHR1cmluZyBwcm9jZXNzIGRpZmZlcnMgZnJvbSBKUyBjYXB0dXJpbmcgaW4gdGhhdCB3cml0aW5nIHRvIGNhcHR1cmVkXG4gKiB2YXJpYWJsZXMgZG9lcyBub3QgdXBkYXRlIHRoZW0sIGFuZCB0aGVyZWZvcmUgd3JpdGVzIGFyZSBmb3JiaWRkZW4uIFRoZSBiZXN0IHByYWN0aWNlIGlzIHRoYXRcbiAqIGFsbCBjYXB0dXJlZCB2YXJpYWJsZXMgYXJlIGNvbnN0YW50cy4pXG4gKiAgICAtIE11c3QgYmUgcnVudGltZSBzZXJpYWxpemFibGUuXG4gKlxuICogYGBgdHN4XG4gKlxuICogaW1wb3J0IHsgY3JlYXRlQ29udGV4dElkLCB1c2VDb250ZXh0LCB1c2VDb250ZXh0UHJvdmlkZXIgfSBmcm9tICcuL3VzZS91c2UtY29udGV4dCc7XG4gKiBpbXBvcnQgeyBSZXNvdXJjZSwgdXNlUmVzb3VyY2UkIH0gZnJvbSAnLi91c2UvdXNlLXJlc291cmNlJztcbiAqIGltcG9ydCB7IHVzZVNpZ25hbCB9IGZyb20gJy4vdXNlL3VzZS1zaWduYWwnO1xuICpcbiAqIGV4cG9ydCBjb25zdCBncmVldCA9ICgpID0+IGNvbnNvbGUubG9nKCdncmVldCcpO1xuICogZnVuY3Rpb24gdG9wTGV2ZWxGbigpIHt9XG4gKlxuICogZnVuY3Rpb24gbXlDb2RlKCkge1xuICogICBjb25zdCBzdG9yZSA9IHVzZVN0b3JlKHt9KTtcbiAqICAgZnVuY3Rpb24gbG9jYWxGbigpIHt9XG4gKiAgIC8vIFZhbGlkIEV4YW1wbGVzXG4gKiAgICQoZ3JlZXQpOyAvLyBncmVldCBpcyBpbXBvcnRhYmxlXG4gKiAgICQoKCkgPT4gZ3JlZXQoKSk7IC8vIGdyZWV0IGlzIGltcG9ydGFibGU7XG4gKiAgICQoKCkgPT4gY29uc29sZS5sb2coc3RvcmUpKTsgLy8gc3RvcmUgaXMgc2VyaWFsaXphYmxlLlxuICpcbiAqICAgLy8gQ29tcGlsZSB0aW1lIGVycm9yc1xuICogICAkKHRvcExldmVsRm4pOyAvLyBFUlJPUjogYHRvcExldmVsRm5gIG5vdCBpbXBvcnRhYmxlXG4gKiAgICQoKCkgPT4gdG9wTGV2ZWxGbigpKTsgLy8gRVJST1I6IGB0b3BMZXZlbEZuYCBub3QgaW1wb3J0YWJsZVxuICpcbiAqICAgLy8gUnVudGltZSBlcnJvcnNcbiAqICAgJChsb2NhbEZuKTsgLy8gRVJST1I6IGBsb2NhbEZuYCBmYWlscyBzZXJpYWxpemF0aW9uXG4gKiAgICQoKCkgPT4gbG9jYWxGbigpKTsgLy8gRVJST1I6IGBsb2NhbEZuYCBmYWlscyBzZXJpYWxpemF0aW9uXG4gKiB9XG4gKlxuICogYGBgXG4gKi9cbi8vIDwvZG9jcz5cbmV4cG9ydCBjb25zdCAkID0gPFQ+KGV4cHJlc3Npb246IFQpOiBRUkw8VD4gPT4ge1xuICBpZiAoIXFSdW50aW1lUXJsICYmIHFEZXYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnT3B0aW1pemVyIHNob3VsZCByZXBsYWNlIGFsbCB1c2FnZXMgb2YgJCgpIHdpdGggc29tZSBzcGVjaWFsIHN5bnRheC4gSWYgeW91IG5lZWQgdG8gY3JlYXRlIGEgUVJMIG1hbnVhbGx5LCB1c2UgaW5saW5lZFFybCgpIGluc3RlYWQuJ1xuICAgICk7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlUVJMPFQ+KG51bGwsICdzJyArIHJ1bnRpbWVTeW1ib2xJZCsrLCBleHByZXNzaW9uLCBudWxsLCBudWxsLCBudWxsLCBudWxsKTtcbn07XG5cbi8qKiBAcHVibGljICovXG5leHBvcnQgY29uc3QgZXZlbnRRcmwgPSA8VD4ocXJsOiBRUkw8VD4pOiBRUkw8VD4gPT4ge1xuICByZXR1cm4gcXJsO1xufTtcblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCBjb25zdCBldmVudCQgPSBpbXBsaWNpdCRGaXJzdEFyZyhldmVudFFybCk7XG5cbi8qKiBAYWxwaGEgKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3luY1FSTDxUWVBFIGV4dGVuZHMgRnVuY3Rpb24gPSBhbnk+IGV4dGVuZHMgUVJMPFRZUEU+IHtcbiAgX19icmFuZF9fU3luY1FSTF9fOiBUWVBFO1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlIHRoZSBRUkwgb2YgY2xvc3VyZSBhbmQgaW52b2tlIGl0LlxuICAgKlxuICAgKiBAcGFyYW0gYXJncyAtIENsb3N1cmUgYXJndW1lbnRzLlxuICAgKiBAcmV0dXJucyBBIHJldHVybiB2YWx1ZSBvZiB0aGUgY2xvc3VyZS5cbiAgICovXG4gIChcbiAgICAuLi5hcmdzOiBUWVBFIGV4dGVuZHMgKC4uLmFyZ3M6IGluZmVyIEFSR1MpID0+IGFueSA/IEFSR1MgOiBuZXZlclxuICApOiBUWVBFIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBpbmZlciBSRVRVUk4gPyBSRVRVUk4gOiBuZXZlcjtcblxuICByZXNvbHZlZDogVFlQRTtcbiAgZGV2OiBRUkxEZXYgfCBudWxsO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgZnVuY3Rpb24gaW50byBhIHN5bmNocm9ub3VzbHkgbG9hZGFibGUgUVJMLlxuICpcbiAqIE5PVEU6IFN5bmNocm9ub3VzIFFSTHMgZnVuY3Rpb25zIGNhbid0IGNsb3NlIG92ZXIgYW55IHZhcmlhYmxlcywgaW5jbHVkaW5nIGV4cG9ydHMuXG4gKlxuICogQHBhcmFtIGZuIC0gRnVuY3Rpb24gdG8gZXh0cmFjdC5cbiAqIEByZXR1cm5zXG4gKiBAYWxwaGFcbiAqL1xuZXhwb3J0IGNvbnN0IHN5bmMkID0gPFQgZXh0ZW5kcyBGdW5jdGlvbj4oZm46IFQpOiBTeW5jUVJMPFQ+ID0+IHtcbiAgaWYgKCFxUnVudGltZVFybCAmJiBxRGV2KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ09wdGltaXplciBzaG91bGQgcmVwbGFjZSBhbGwgdXNhZ2VzIG9mIHN5bmMkKCkgd2l0aCBzb21lIHNwZWNpYWwgc3ludGF4LiBJZiB5b3UgbmVlZCB0byBjcmVhdGUgYSBRUkwgbWFudWFsbHksIHVzZSBpbmxpbmVkU3luY1FybCgpIGluc3RlYWQuJ1xuICAgICk7XG4gIH1cbiAgaWYgKHFEZXYpIHtcbiAgICAvLyBUbyBtYWtlIHN1cmUgdGhhdCBpbiBkZXYgbW9kZSB3ZSBkb24ndCBhY2NpZGVudGFsbHkgY2FwdHVyZSBjb250ZXh0IGluIGBzeW5jJCgpYCB3ZSBzZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIHRoZSBmdW5jdGlvbi5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgICBmbiA9IG5ldyBGdW5jdGlvbigncmV0dXJuICcgKyBmbi50b1N0cmluZygpKSgpIGFzIGFueTtcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVRUkw8VD4oJycsIFNZTkNfUVJMLCBmbiwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCkgYXMgYW55O1xufTtcblxuLyoqXG4gKiBFeHRyYWN0IGZ1bmN0aW9uIGludG8gYSBzeW5jaHJvbm91c2x5IGxvYWRhYmxlIFFSTC5cbiAqXG4gKiBOT1RFOiBTeW5jaHJvbm91cyBRUkxzIGZ1bmN0aW9ucyBjYW4ndCBjbG9zZSBvdmVyIGFueSB2YXJpYWJsZXMsIGluY2x1ZGluZyBleHBvcnRzLlxuICpcbiAqIEBwYXJhbSBmbiAtIEV4dHJhY3RlZCBmdW5jdGlvblxuICogQHBhcmFtIHNlcmlhbGl6ZWRGbiAtIFNlcmlhbGl6ZWQgZnVuY3Rpb24gaW4gc3RyaW5nIGZvcm0uXG4gKiBAcmV0dXJuc1xuICogQGFscGhhXG4gKi9cbmV4cG9ydCBjb25zdCBfcXJsU3luYyA9IGZ1bmN0aW9uIDxUWVBFIGV4dGVuZHMgRnVuY3Rpb24+KFxuICBmbjogVFlQRSxcbiAgc2VyaWFsaXplZEZuPzogc3RyaW5nXG4pOiBTeW5jUVJMPFRZUEU+IHtcbiAgaWYgKHNlcmlhbGl6ZWRGbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgc2VyaWFsaXplZEZuID0gZm4udG9TdHJpbmcoKTtcbiAgfVxuICAoZm4gYXMgYW55KS5zZXJpYWxpemVkID0gc2VyaWFsaXplZEZuO1xuICByZXR1cm4gY3JlYXRlUVJMPFRZUEU+KCcnLCBTWU5DX1FSTCwgZm4sIG51bGwsIG51bGwsIG51bGwsIG51bGwpIGFzIGFueTtcbn07XG4iXX0=","import { $ } from '../qrl/qrl.public';\nimport { OnRenderProp, QSlot } from '../util/markers';\nimport { Virtual, _jsxC } from '../render/jsx/jsx-runtime';\nimport { SERIALIZABLE_STATE } from '../container/serializers';\nimport { qTest } from '../util/qdev';\nimport { assertQrl } from '../qrl/qrl-class';\nimport { _IMMUTABLE } from '../state/constants';\nimport { assertNumber } from '../error/assert';\n// <docs markdown=\"../readme.md#component\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#component instead)\n/**\n * Declare a Qwik component that can be used to create UI.\n *\n * Use `component$` to declare a Qwik component. A Qwik component is a special kind of component\n * that allows the Qwik framework to lazy load and execute the component independently of other Qwik\n * components as well as lazy load the component's life-cycle hooks and event handlers.\n *\n * Side note: You can also declare regular (standard JSX) components that will have standard\n * synchronous behavior.\n *\n * Qwik component is a facade that describes how the component should be used without forcing the\n * implementation of the component to be eagerly loaded. A minimum Qwik definition consists of:\n *\n * ### Example\n *\n * An example showing how to create a counter component:\n *\n * ```tsx\n * export interface CounterProps {\n *   initialValue?: number;\n *   step?: number;\n * }\n * export const Counter = component$((props: CounterProps) => {\n *   const state = useStore({ count: props.initialValue || 0 });\n *   return (\n *     <div>\n *       <span>{state.count}</span>\n *       <button onClick$={() => (state.count += props.step || 1)}>+</button>\n *     </div>\n *   );\n * });\n * ```\n *\n * - `component$` is how a component gets declared.\n * - `{ value?: number; step?: number }` declares the public (props) interface of the component.\n * - `{ count: number }` declares the private (state) interface of the component.\n *\n * The above can then be used like so:\n *\n * ```tsx\n * export const OtherComponent = component$(() => {\n *   return <Counter initialValue={100} />;\n * });\n * ```\n *\n * See also: `component`, `useCleanup`, `onResume`, `onPause`, `useOn`, `useOnDocument`,\n * `useOnWindow`, `useStyles`\n *\n * @public\n */\n// </docs>\nexport const componentQrl = (componentQrl) => {\n    // Return a QComponent Factory function.\n    function QwikComponent(props, key, flags) {\n        assertQrl(componentQrl);\n        assertNumber(flags, 'The Qwik Component was not invoked correctly');\n        const hash = qTest ? 'sX' : componentQrl.$hash$.slice(0, 4);\n        const finalKey = hash + ':' + (key ? key : '');\n        return _jsxC(Virtual, {\n            [OnRenderProp]: componentQrl,\n            [QSlot]: props[QSlot],\n            [_IMMUTABLE]: props[_IMMUTABLE],\n            children: props.children,\n            props,\n        }, flags, finalKey);\n    }\n    QwikComponent[SERIALIZABLE_STATE] = [componentQrl];\n    return QwikComponent;\n};\nexport const isQwikComponent = (component) => {\n    return typeof component == 'function' && component[SERIALIZABLE_STATE] !== undefined;\n};\n// <docs markdown=\"../readme.md#component\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#component instead)\n/**\n * Declare a Qwik component that can be used to create UI.\n *\n * Use `component$` to declare a Qwik component. A Qwik component is a special kind of component\n * that allows the Qwik framework to lazy load and execute the component independently of other Qwik\n * components as well as lazy load the component's life-cycle hooks and event handlers.\n *\n * Side note: You can also declare regular (standard JSX) components that will have standard\n * synchronous behavior.\n *\n * Qwik component is a facade that describes how the component should be used without forcing the\n * implementation of the component to be eagerly loaded. A minimum Qwik definition consists of:\n *\n * ### Example\n *\n * An example showing how to create a counter component:\n *\n * ```tsx\n * export interface CounterProps {\n *   initialValue?: number;\n *   step?: number;\n * }\n * export const Counter = component$((props: CounterProps) => {\n *   const state = useStore({ count: props.initialValue || 0 });\n *   return (\n *     <div>\n *       <span>{state.count}</span>\n *       <button onClick$={() => (state.count += props.step || 1)}>+</button>\n *     </div>\n *   );\n * });\n * ```\n *\n * - `component$` is how a component gets declared.\n * - `{ value?: number; step?: number }` declares the public (props) interface of the component.\n * - `{ count: number }` declares the private (state) interface of the component.\n *\n * The above can then be used like so:\n *\n * ```tsx\n * export const OtherComponent = component$(() => {\n *   return <Counter initialValue={100} />;\n * });\n * ```\n *\n * See also: `component`, `useCleanup`, `onResume`, `onPause`, `useOn`, `useOnDocument`,\n * `useOnWindow`, `useStyles`\n *\n * @public\n */\n// </docs>\nexport const component$ = (onMount) => {\n    return componentQrl($(onMount));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LnB1YmxpYy5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS9jb21wb25lbnQvY29tcG9uZW50LnB1YmxpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFrQyxNQUFNLG1CQUFtQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFRdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBbUgvQywyQ0FBMkM7QUFDM0MseUNBQXlDO0FBQ3pDLHdDQUF3QztBQUN4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlERztBQUNILFVBQVU7QUFDVixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FDMUIsWUFBb0MsRUFDbEIsRUFBRTtJQUNwQix3Q0FBd0M7SUFDeEMsU0FBUyxhQUFhLENBQUMsS0FBeUIsRUFBRSxHQUFrQixFQUFFLEtBQWE7UUFDakYsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hCLFlBQVksQ0FBQyxLQUFLLEVBQUUsOENBQThDLENBQUMsQ0FBQztRQUNwRSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0MsT0FBTyxLQUFLLENBQ1YsT0FBTyxFQUNQO1lBQ0UsQ0FBQyxZQUFZLENBQUMsRUFBRSxZQUFZO1lBQzVCLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNyQixDQUFDLFVBQVUsQ0FBQyxFQUFHLEtBQWEsQ0FBQyxVQUFVLENBQUM7WUFDeEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLEtBQUs7U0FDTixFQUNELEtBQUssRUFDTCxRQUFRLENBQ0YsQ0FBQztJQUNYLENBQUM7SUFDQSxhQUFxQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM1RCxPQUFPLGFBQW9CLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQTJCLFNBQWtCLEVBQWtCLEVBQUU7SUFDOUYsT0FBTyxPQUFPLFNBQVMsSUFBSSxVQUFVLElBQUssU0FBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLFNBQVMsQ0FBQztBQUNoRyxDQUFDLENBQUM7QUFXRiwyQ0FBMkM7QUFDM0MseUNBQXlDO0FBQ3pDLHdDQUF3QztBQUN4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlERztBQUNILFVBQVU7QUFDVixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBa0IsT0FBMEIsRUFBb0IsRUFBRTtJQUMxRixPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyAkLCB0eXBlIFByb3BGbkludGVyZmFjZSwgdHlwZSBRUkwgfSBmcm9tICcuLi9xcmwvcXJsLnB1YmxpYyc7XG5pbXBvcnQgdHlwZSB7IEpTWE5vZGUsIEpTWE91dHB1dCB9IGZyb20gJy4uL3JlbmRlci9qc3gvdHlwZXMvanN4LW5vZGUnO1xuaW1wb3J0IHsgT25SZW5kZXJQcm9wLCBRU2xvdCB9IGZyb20gJy4uL3V0aWwvbWFya2Vycyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvbXBvbmVudEJhc2VQcm9wcyxcbiAgRXZlbnRIYW5kbGVyLFxuICBKU1hDaGlsZHJlbixcbiAgUVJMRXZlbnRIYW5kbGVyTXVsdGksXG59IGZyb20gJy4uL3JlbmRlci9qc3gvdHlwZXMvanN4LXF3aWstYXR0cmlidXRlcyc7XG5pbXBvcnQgdHlwZSB7IEZ1bmN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVuZGVyL2pzeC90eXBlcy9qc3gtbm9kZSc7XG5pbXBvcnQgeyBWaXJ0dWFsLCBfanN4QyB9IGZyb20gJy4uL3JlbmRlci9qc3gvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgU0VSSUFMSVpBQkxFX1NUQVRFIH0gZnJvbSAnLi4vY29udGFpbmVyL3NlcmlhbGl6ZXJzJztcbmltcG9ydCB7IHFUZXN0IH0gZnJvbSAnLi4vdXRpbC9xZGV2JztcbmltcG9ydCB7IGFzc2VydFFybCB9IGZyb20gJy4uL3FybC9xcmwtY2xhc3MnO1xuaW1wb3J0IHsgX0lNTVVUQUJMRSB9IGZyb20gJy4uL3N0YXRlL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBhc3NlcnROdW1iZXIgfSBmcm9tICcuLi9lcnJvci9hc3NlcnQnO1xuaW1wb3J0IHR5cGUgeyBRd2lrSW50cmluc2ljRWxlbWVudHMgfSBmcm9tICcuLi9yZW5kZXIvanN4L3R5cGVzL2pzeC1xd2lrLWVsZW1lbnRzJztcblxuLy8gVFMgd2F5IHRvIGNoZWNrIGZvciBhbnlcbnR5cGUgSXNBbnk8VD4gPSAwIGV4dGVuZHMgVCAmIDEgPyB0cnVlIDogZmFsc2U7XG5cbnR5cGUgT2JqZWN0UHJvcHM8VD4gPVxuICBJc0FueTxUPiBleHRlbmRzIHRydWVcbiAgICA/IGFueVxuICAgIDogLy8gdW5rbm93biBtZWFucyB3ZSBkb24ndCBhY2NlcHQgYW55IHByb3BzXG4gICAgICB1bmtub3duIGV4dGVuZHMgVFxuICAgICAgPyBuZXZlclxuICAgICAgOiBUIGV4dGVuZHMgUmVjb3JkPGFueSwgYW55PlxuICAgICAgICA/IFRcbiAgICAgICAgOiBuZXZlcjtcblxuLyoqXG4gKiBJbmZlcnMgYFByb3BzYCBmcm9tIHRoZSBjb21wb25lbnQgb3IgdGFnLlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogYGBgdHN4XG4gKiBjb25zdCBEZXNjID0gY29tcG9uZW50JCgoe2Rlc2MsIC4uLnByb3BzfTogeyBkZXNjOiBzdHJpbmcgfSAmIFByb3BzT2Y8J2Rpdic+KSA9PiB7XG4gKiAgcmV0dXJuIDxkaXYgey4uLnByb3BzfT57ZGVzY308L2Rpdj47XG4gKiB9KTtcbiAqXG4gKiBjb25zdCBUaXRsZUJveCA9IGNvbXBvbmVudCQoKHt0aXRsZSwgLi4ucHJvcHN9OiB7IHRpdGxlOiBzdHJpbmcgfSAmIFByb3BzT2Y8Qm94PikgPT4ge1xuICogICByZXR1cm4gPEJveCB7Li4ucHJvcHN9PjxoMT57dGl0bGV9PC9oMT48L0JveD47XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuLy8gPC9kb2NzPlxuZXhwb3J0IHR5cGUgUHJvcHNPZjxDT01QPiA9IENPTVAgZXh0ZW5kcyBzdHJpbmdcbiAgPyBDT01QIGV4dGVuZHMga2V5b2YgUXdpa0ludHJpbnNpY0VsZW1lbnRzXG4gICAgPyBRd2lrSW50cmluc2ljRWxlbWVudHNbQ09NUF1cbiAgICA6IC8vIGA8c3Bhbi8+YCBoYXMgbm8gc3BlY2lhbCBhdHRyaWJ1dGVzXG4gICAgICBRd2lrSW50cmluc2ljRWxlbWVudHNbJ3NwYW4nXVxuICA6IE5vbk51bGxhYmxlPENPTVA+IGV4dGVuZHMgbmV2ZXJcbiAgICA/IG5ldmVyXG4gICAgOiBDT01QIGV4dGVuZHMgRnVuY3Rpb25Db21wb25lbnQ8aW5mZXIgUFJPUFM+XG4gICAgICA/IFBST1BTIGV4dGVuZHMgUmVjb3JkPGFueSwgaW5mZXIgVj5cbiAgICAgICAgPyBJc0FueTxWPiBleHRlbmRzIHRydWVcbiAgICAgICAgICA/IC8vIHdlIGNvdWxkbid0IGZpZ3VyZSBpdCBvdXRcbiAgICAgICAgICAgIG5ldmVyXG4gICAgICAgICAgOiBPYmplY3RQcm9wczxQUk9QUz5cbiAgICAgICAgOiBDT01QIGV4dGVuZHMgQ29tcG9uZW50PGluZmVyIE9yaWdQcm9wcz5cbiAgICAgICAgICA/IE9iamVjdFByb3BzPE9yaWdQcm9wcz5cbiAgICAgICAgICA6IC8vIHNvbWV0aGluZyBjb21wbGV4LCBqdXN0IHJldHVybiBhcy1pc1xuICAgICAgICAgICAgUFJPUFNcbiAgICAgIDogbmV2ZXI7XG5cbi8qKlxuICogVHlwZSByZXByZXNlbnRpbmcgdGhlIFF3aWsgY29tcG9uZW50LlxuICpcbiAqIGBDb21wb25lbnRgIGlzIHRoZSB0eXBlIHJldHVybmVkIGJ5IGludm9raW5nIGBjb21wb25lbnQkYC5cbiAqXG4gKiBgYGB0c3hcbiAqIGludGVyZmFjZSBNeUNvbXBvbmVudFByb3BzIHtcbiAqICAgc29tZVByb3A6IHN0cmluZztcbiAqIH1cbiAqIGNvbnN0IE15Q29tcG9uZW50OiBDb21wb25lbnQ8TXlDb21wb25lbnRQcm9wcz4gPSBjb21wb25lbnQkKChwcm9wczogTXlDb21wb25lbnRQcm9wcykgPT4ge1xuICogICByZXR1cm4gPHNwYW4+e3Byb3BzLnNvbWVQcm9wfTwvc3Bhbj47XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuLy8gSW4gcmVhbGl0eSwgQ29tcG9uZW50IGlzIGEgUVJMIGJ1dCB0aGF0IG1ha2VzIHRoZSB0eXBlcyB0b28gY29tcGxleFxuZXhwb3J0IHR5cGUgQ29tcG9uZW50PFBST1BTID0gdW5rbm93bj4gPSBGdW5jdGlvbkNvbXBvbmVudDxQdWJsaWNQcm9wczxQUk9QUz4+O1xuXG5leHBvcnQgdHlwZSBDb21wb25lbnRDaGlsZHJlbjxQUk9QUz4gPSBQUk9QUyBleHRlbmRzIHtcbiAgY2hpbGRyZW46IGFueTtcbn1cbiAgPyBuZXZlclxuICA6IHsgY2hpbGRyZW4/OiBKU1hDaGlsZHJlbiB9O1xuLyoqXG4gKiBFeHRlbmRzIHRoZSBkZWZpbmVkIGNvbXBvbmVudCBQUk9QUywgYWRkaW5nIHRoZSBkZWZhdWx0IG9uZXMgKGNoaWxkcmVuIGFuZCBxOnNsb3QpIGFuZCBhbGxvd2luZ1xuICogcGxhaW4gZnVuY3Rpb25zIHRvIFFSTCBhcmd1bWVudHMuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBQdWJsaWNQcm9wczxQUk9QUz4gPVxuICAvLyBVc2UgT21pdCArIF9Pbmx5JCBzbyB0aGF0IGluZmVycmluZyBwb2x5bW9ycGljIGNvbXBvbmVudHMgd29ya3NcbiAgLy8gTWFwcGluZyB0aGUgZW50aXJlIFBST1BTIGRvZXNuJ3Qgd29yaywgbWF5YmUgVFMgZG9lc24ndCBsaWtlIGluZmVycmluZyB0aHJvdWdoIGNvbmRpdGlvbmFsIHR5cGVzXG4gIChQUk9QUyBleHRlbmRzIFJlY29yZDxhbnksIGFueT5cbiAgICA/IE9taXQ8UFJPUFMsIGAke3N0cmluZ30kYD4gJiBfT25seSQ8UFJPUFM+XG4gICAgOiB1bmtub3duIGV4dGVuZHMgUFJPUFNcbiAgICAgID8ge31cbiAgICAgIDogUFJPUFMpICZcbiAgICBDb21wb25lbnRCYXNlUHJvcHMgJlxuICAgIENvbXBvbmVudENoaWxkcmVuPFBST1BTPjtcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IHR5cGUgX0FsbG93UGxhaW5Rcmw8UT4gPVxuICAvLyBRUkxFdmVudEhhbmRsZXJNdWx0aSBnZXRzIGEgc3BlY2lhbCBjYXNlIHRvIHNpbXBsaWZ5IHRoZSByZXN1bHRcbiAgLy8gSXQgbmVlZHMgdG8gYmUgaGFuZGxlZCBjYXJlZnVsbHkgYmVjYXVzZSBpdCBtYXRjaGVzIHJlZ3VsYXIgZnVuY3Rpb25zIHRvb1xuICBRUkxFdmVudEhhbmRsZXJNdWx0aTxhbnksIGFueT4gZXh0ZW5kcyBRXG4gICAgPyBRIGV4dGVuZHMgUVJMRXZlbnRIYW5kbGVyTXVsdGk8aW5mZXIgRVYsIGluZmVyIEVMPlxuICAgICAgP1xuICAgICAgICAgIHwgUVxuICAgICAgICAgIC8vIEl0IGNhbiBpbmZlciB1bmtub3duIGFuZCB0aGF0IGJyZWFrcyB0aGluZ3NcbiAgICAgICAgICB8IChFTCBleHRlbmRzIEVsZW1lbnQgPyBFdmVudEhhbmRsZXI8RVYsIEVMPiA6IG5ldmVyKVxuICAgICAgOiBRXG4gICAgOiBRIGV4dGVuZHMgUVJMPGluZmVyIFU+XG4gICAgICA/IFEgfCBVXG4gICAgICA6IE5vbk51bGxhYmxlPFE+IGV4dGVuZHMgbmV2ZXJcbiAgICAgICAgPyBRXG4gICAgICAgIDogUVJMPFE+IHwgUTtcbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCB0eXBlIF9Pbmx5JDxQPiA9IHtcbiAgW0sgaW4ga2V5b2YgUCBhcyBLIGV4dGVuZHMgYCR7c3RyaW5nfSRgID8gSyA6IG5ldmVyXTogX0FsbG93UGxhaW5Rcmw8UFtLXT47XG59O1xuXG4vLyA8ZG9jcyBtYXJrZG93bj1cIi4uL3JlYWRtZS5tZCNjb21wb25lbnRcIj5cbi8vICEhRE8gTk9UIEVESVQgVEhJUyBDT01NRU5UIERJUkVDVExZISEhXG4vLyAoZWRpdCAuLi9yZWFkbWUubWQjY29tcG9uZW50IGluc3RlYWQpXG4vKipcbiAqIERlY2xhcmUgYSBRd2lrIGNvbXBvbmVudCB0aGF0IGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBVSS5cbiAqXG4gKiBVc2UgYGNvbXBvbmVudCRgIHRvIGRlY2xhcmUgYSBRd2lrIGNvbXBvbmVudC4gQSBRd2lrIGNvbXBvbmVudCBpcyBhIHNwZWNpYWwga2luZCBvZiBjb21wb25lbnRcbiAqIHRoYXQgYWxsb3dzIHRoZSBRd2lrIGZyYW1ld29yayB0byBsYXp5IGxvYWQgYW5kIGV4ZWN1dGUgdGhlIGNvbXBvbmVudCBpbmRlcGVuZGVudGx5IG9mIG90aGVyIFF3aWtcbiAqIGNvbXBvbmVudHMgYXMgd2VsbCBhcyBsYXp5IGxvYWQgdGhlIGNvbXBvbmVudCdzIGxpZmUtY3ljbGUgaG9va3MgYW5kIGV2ZW50IGhhbmRsZXJzLlxuICpcbiAqIFNpZGUgbm90ZTogWW91IGNhbiBhbHNvIGRlY2xhcmUgcmVndWxhciAoc3RhbmRhcmQgSlNYKSBjb21wb25lbnRzIHRoYXQgd2lsbCBoYXZlIHN0YW5kYXJkXG4gKiBzeW5jaHJvbm91cyBiZWhhdmlvci5cbiAqXG4gKiBRd2lrIGNvbXBvbmVudCBpcyBhIGZhY2FkZSB0aGF0IGRlc2NyaWJlcyBob3cgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgdXNlZCB3aXRob3V0IGZvcmNpbmcgdGhlXG4gKiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY29tcG9uZW50IHRvIGJlIGVhZ2VybHkgbG9hZGVkLiBBIG1pbmltdW0gUXdpayBkZWZpbml0aW9uIGNvbnNpc3RzIG9mOlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogQW4gZXhhbXBsZSBzaG93aW5nIGhvdyB0byBjcmVhdGUgYSBjb3VudGVyIGNvbXBvbmVudDpcbiAqXG4gKiBgYGB0c3hcbiAqIGV4cG9ydCBpbnRlcmZhY2UgQ291bnRlclByb3BzIHtcbiAqICAgaW5pdGlhbFZhbHVlPzogbnVtYmVyO1xuICogICBzdGVwPzogbnVtYmVyO1xuICogfVxuICogZXhwb3J0IGNvbnN0IENvdW50ZXIgPSBjb21wb25lbnQkKChwcm9wczogQ291bnRlclByb3BzKSA9PiB7XG4gKiAgIGNvbnN0IHN0YXRlID0gdXNlU3RvcmUoeyBjb3VudDogcHJvcHMuaW5pdGlhbFZhbHVlIHx8IDAgfSk7XG4gKiAgIHJldHVybiAoXG4gKiAgICAgPGRpdj5cbiAqICAgICAgIDxzcGFuPntzdGF0ZS5jb3VudH08L3NwYW4+XG4gKiAgICAgICA8YnV0dG9uIG9uQ2xpY2skPXsoKSA9PiAoc3RhdGUuY291bnQgKz0gcHJvcHMuc3RlcCB8fCAxKX0+KzwvYnV0dG9uPlxuICogICAgIDwvZGl2PlxuICogICApO1xuICogfSk7XG4gKiBgYGBcbiAqXG4gKiAtIGBjb21wb25lbnQkYCBpcyBob3cgYSBjb21wb25lbnQgZ2V0cyBkZWNsYXJlZC5cbiAqIC0gYHsgdmFsdWU/OiBudW1iZXI7IHN0ZXA/OiBudW1iZXIgfWAgZGVjbGFyZXMgdGhlIHB1YmxpYyAocHJvcHMpIGludGVyZmFjZSBvZiB0aGUgY29tcG9uZW50LlxuICogLSBgeyBjb3VudDogbnVtYmVyIH1gIGRlY2xhcmVzIHRoZSBwcml2YXRlIChzdGF0ZSkgaW50ZXJmYWNlIG9mIHRoZSBjb21wb25lbnQuXG4gKlxuICogVGhlIGFib3ZlIGNhbiB0aGVuIGJlIHVzZWQgbGlrZSBzbzpcbiAqXG4gKiBgYGB0c3hcbiAqIGV4cG9ydCBjb25zdCBPdGhlckNvbXBvbmVudCA9IGNvbXBvbmVudCQoKCkgPT4ge1xuICogICByZXR1cm4gPENvdW50ZXIgaW5pdGlhbFZhbHVlPXsxMDB9IC8+O1xuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBTZWUgYWxzbzogYGNvbXBvbmVudGAsIGB1c2VDbGVhbnVwYCwgYG9uUmVzdW1lYCwgYG9uUGF1c2VgLCBgdXNlT25gLCBgdXNlT25Eb2N1bWVudGAsXG4gKiBgdXNlT25XaW5kb3dgLCBgdXNlU3R5bGVzYFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuLy8gPC9kb2NzPlxuZXhwb3J0IGNvbnN0IGNvbXBvbmVudFFybCA9IDxQUk9QUyBleHRlbmRzIFJlY29yZDxhbnksIGFueT4+KFxuICBjb21wb25lbnRRcmw6IFFSTDxPblJlbmRlckZuPFBST1BTPj5cbik6IENvbXBvbmVudDxQUk9QUz4gPT4ge1xuICAvLyBSZXR1cm4gYSBRQ29tcG9uZW50IEZhY3RvcnkgZnVuY3Rpb24uXG4gIGZ1bmN0aW9uIFF3aWtDb21wb25lbnQocHJvcHM6IFB1YmxpY1Byb3BzPFBST1BTPiwga2V5OiBzdHJpbmcgfCBudWxsLCBmbGFnczogbnVtYmVyKTogSlNYTm9kZSB7XG4gICAgYXNzZXJ0UXJsKGNvbXBvbmVudFFybCk7XG4gICAgYXNzZXJ0TnVtYmVyKGZsYWdzLCAnVGhlIFF3aWsgQ29tcG9uZW50IHdhcyBub3QgaW52b2tlZCBjb3JyZWN0bHknKTtcbiAgICBjb25zdCBoYXNoID0gcVRlc3QgPyAnc1gnIDogY29tcG9uZW50UXJsLiRoYXNoJC5zbGljZSgwLCA0KTtcbiAgICBjb25zdCBmaW5hbEtleSA9IGhhc2ggKyAnOicgKyAoa2V5ID8ga2V5IDogJycpO1xuICAgIHJldHVybiBfanN4QyhcbiAgICAgIFZpcnR1YWwsXG4gICAgICB7XG4gICAgICAgIFtPblJlbmRlclByb3BdOiBjb21wb25lbnRRcmwsXG4gICAgICAgIFtRU2xvdF06IHByb3BzW1FTbG90XSxcbiAgICAgICAgW19JTU1VVEFCTEVdOiAocHJvcHMgYXMgYW55KVtfSU1NVVRBQkxFXSxcbiAgICAgICAgY2hpbGRyZW46IHByb3BzLmNoaWxkcmVuLFxuICAgICAgICBwcm9wcyxcbiAgICAgIH0sXG4gICAgICBmbGFncyxcbiAgICAgIGZpbmFsS2V5XG4gICAgKSBhcyBhbnk7XG4gIH1cbiAgKFF3aWtDb21wb25lbnQgYXMgYW55KVtTRVJJQUxJWkFCTEVfU1RBVEVdID0gW2NvbXBvbmVudFFybF07XG4gIHJldHVybiBRd2lrQ29tcG9uZW50IGFzIGFueTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1F3aWtDb21wb25lbnQgPSA8VCBleHRlbmRzIENvbXBvbmVudDxhbnk+Pihjb21wb25lbnQ6IHVua25vd24pOiBjb21wb25lbnQgaXMgVCA9PiB7XG4gIHJldHVybiB0eXBlb2YgY29tcG9uZW50ID09ICdmdW5jdGlvbicgJiYgKGNvbXBvbmVudCBhcyBhbnkpW1NFUklBTElaQUJMRV9TVEFURV0gIT09IHVuZGVmaW5lZDtcbn07XG5cbi8qKiBAcHVibGljIEBkZXByZWNhdGVkIFVzZSBgUVJMPD5gIG9uIHlvdXIgZnVuY3Rpb24gcHJvcHMgaW5zdGVhZCAqL1xuZXhwb3J0IHR5cGUgUHJvcEZ1bmN0aW9uUHJvcHM8UFJPUFMgZXh0ZW5kcyBSZWNvcmQ8YW55LCBhbnk+PiA9IHtcbiAgW0sgaW4ga2V5b2YgUFJPUFNdOiBQUk9QU1tLXSBleHRlbmRzIHVuZGVmaW5lZFxuICAgID8gUFJPUFNbS11cbiAgICA6IFBST1BTW0tdIGV4dGVuZHMgKCguLi5hcmdzOiBpbmZlciBBUkdTKSA9PiBpbmZlciBSRVQpIHwgdW5kZWZpbmVkXG4gICAgICA/IFByb3BGbkludGVyZmFjZTxBUkdTLCBBd2FpdGVkPFJFVD4+XG4gICAgICA6IFBST1BTW0tdO1xufTtcblxuLy8gPGRvY3MgbWFya2Rvd249XCIuLi9yZWFkbWUubWQjY29tcG9uZW50XCI+XG4vLyAhIURPIE5PVCBFRElUIFRISVMgQ09NTUVOVCBESVJFQ1RMWSEhIVxuLy8gKGVkaXQgLi4vcmVhZG1lLm1kI2NvbXBvbmVudCBpbnN0ZWFkKVxuLyoqXG4gKiBEZWNsYXJlIGEgUXdpayBjb21wb25lbnQgdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgVUkuXG4gKlxuICogVXNlIGBjb21wb25lbnQkYCB0byBkZWNsYXJlIGEgUXdpayBjb21wb25lbnQuIEEgUXdpayBjb21wb25lbnQgaXMgYSBzcGVjaWFsIGtpbmQgb2YgY29tcG9uZW50XG4gKiB0aGF0IGFsbG93cyB0aGUgUXdpayBmcmFtZXdvcmsgdG8gbGF6eSBsb2FkIGFuZCBleGVjdXRlIHRoZSBjb21wb25lbnQgaW5kZXBlbmRlbnRseSBvZiBvdGhlciBRd2lrXG4gKiBjb21wb25lbnRzIGFzIHdlbGwgYXMgbGF6eSBsb2FkIHRoZSBjb21wb25lbnQncyBsaWZlLWN5Y2xlIGhvb2tzIGFuZCBldmVudCBoYW5kbGVycy5cbiAqXG4gKiBTaWRlIG5vdGU6IFlvdSBjYW4gYWxzbyBkZWNsYXJlIHJlZ3VsYXIgKHN0YW5kYXJkIEpTWCkgY29tcG9uZW50cyB0aGF0IHdpbGwgaGF2ZSBzdGFuZGFyZFxuICogc3luY2hyb25vdXMgYmVoYXZpb3IuXG4gKlxuICogUXdpayBjb21wb25lbnQgaXMgYSBmYWNhZGUgdGhhdCBkZXNjcmliZXMgaG93IHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHVzZWQgd2l0aG91dCBmb3JjaW5nIHRoZVxuICogaW1wbGVtZW50YXRpb24gb2YgdGhlIGNvbXBvbmVudCB0byBiZSBlYWdlcmx5IGxvYWRlZC4gQSBtaW5pbXVtIFF3aWsgZGVmaW5pdGlvbiBjb25zaXN0cyBvZjpcbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIEFuIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gY3JlYXRlIGEgY291bnRlciBjb21wb25lbnQ6XG4gKlxuICogYGBgdHN4XG4gKiBleHBvcnQgaW50ZXJmYWNlIENvdW50ZXJQcm9wcyB7XG4gKiAgIGluaXRpYWxWYWx1ZT86IG51bWJlcjtcbiAqICAgc3RlcD86IG51bWJlcjtcbiAqIH1cbiAqIGV4cG9ydCBjb25zdCBDb3VudGVyID0gY29tcG9uZW50JCgocHJvcHM6IENvdW50ZXJQcm9wcykgPT4ge1xuICogICBjb25zdCBzdGF0ZSA9IHVzZVN0b3JlKHsgY291bnQ6IHByb3BzLmluaXRpYWxWYWx1ZSB8fCAwIH0pO1xuICogICByZXR1cm4gKFxuICogICAgIDxkaXY+XG4gKiAgICAgICA8c3Bhbj57c3RhdGUuY291bnR9PC9zcGFuPlxuICogICAgICAgPGJ1dHRvbiBvbkNsaWNrJD17KCkgPT4gKHN0YXRlLmNvdW50ICs9IHByb3BzLnN0ZXAgfHwgMSl9Pis8L2J1dHRvbj5cbiAqICAgICA8L2Rpdj5cbiAqICAgKTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogLSBgY29tcG9uZW50JGAgaXMgaG93IGEgY29tcG9uZW50IGdldHMgZGVjbGFyZWQuXG4gKiAtIGB7IHZhbHVlPzogbnVtYmVyOyBzdGVwPzogbnVtYmVyIH1gIGRlY2xhcmVzIHRoZSBwdWJsaWMgKHByb3BzKSBpbnRlcmZhY2Ugb2YgdGhlIGNvbXBvbmVudC5cbiAqIC0gYHsgY291bnQ6IG51bWJlciB9YCBkZWNsYXJlcyB0aGUgcHJpdmF0ZSAoc3RhdGUpIGludGVyZmFjZSBvZiB0aGUgY29tcG9uZW50LlxuICpcbiAqIFRoZSBhYm92ZSBjYW4gdGhlbiBiZSB1c2VkIGxpa2Ugc286XG4gKlxuICogYGBgdHN4XG4gKiBleHBvcnQgY29uc3QgT3RoZXJDb21wb25lbnQgPSBjb21wb25lbnQkKCgpID0+IHtcbiAqICAgcmV0dXJuIDxDb3VudGVyIGluaXRpYWxWYWx1ZT17MTAwfSAvPjtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogU2VlIGFsc286IGBjb21wb25lbnRgLCBgdXNlQ2xlYW51cGAsIGBvblJlc3VtZWAsIGBvblBhdXNlYCwgYHVzZU9uYCwgYHVzZU9uRG9jdW1lbnRgLFxuICogYHVzZU9uV2luZG93YCwgYHVzZVN0eWxlc2BcbiAqXG4gKiBAcHVibGljXG4gKi9cbi8vIDwvZG9jcz5cbmV4cG9ydCBjb25zdCBjb21wb25lbnQkID0gPFBST1BTID0gdW5rbm93bj4ob25Nb3VudDogT25SZW5kZXJGbjxQUk9QUz4pOiBDb21wb25lbnQ8UFJPUFM+ID0+IHtcbiAgcmV0dXJuIGNvbXBvbmVudFFybCgkKG9uTW91bnQpKTtcbn07XG5cbi8qKiBAcHVibGljICovXG5leHBvcnQgdHlwZSBPblJlbmRlckZuPFBST1BTPiA9IChwcm9wczogUFJPUFMpID0+IEpTWE91dHB1dDtcblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJGYWN0b3J5T3V0cHV0PFBST1BTPiB7XG4gIHJlbmRlclFSTDogUVJMPE9uUmVuZGVyRm48UFJPUFM+PjtcbiAgd2FpdE9uOiBhbnlbXTtcbn1cbiJdfQ==","/* eslint-disable */\nimport { jsx } from './jsx-runtime';\nimport { isArray } from '../../util/types';\nexport const flattenArray = (array, dst) => {\n    // Yes this function is just Array.flat, but we need to run on old versions of Node.\n    if (!dst)\n        dst = [];\n    for (const item of array) {\n        if (isArray(item)) {\n            flattenArray(item, dst);\n        }\n        else {\n            dst.push(item);\n        }\n    }\n    return dst;\n};\n/** @public */\nexport function h(type, props, ...children) {\n    // Using legacy h() jsx transform and morphing it\n    // so it can use the modern vdom structure\n    // https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html\n    // https://www.typescriptlang.org/tsconfig#jsxImportSource\n    const normalizedProps = {\n        children: arguments.length > 2 ? flattenArray(children) : undefined,\n    };\n    let key;\n    let i;\n    for (i in props) {\n        if (i == 'key')\n            key = props[i];\n        else\n            normalizedProps[i] = props[i];\n    }\n    if (typeof type === 'string' && !key && 'dangerouslySetInnerHTML' in normalizedProps) {\n        key = 'innerhtml';\n    }\n    return jsx(type, normalizedProps, key);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS9yZW5kZXIvanN4L2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFJLEtBQWtCLEVBQUUsR0FBUyxFQUFPLEVBQUU7SUFDcEUsb0ZBQW9GO0lBQ3BGLElBQUksQ0FBQyxHQUFHO1FBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNuQixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbEIsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDO2FBQU0sQ0FBQztZQUNOLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUVGLGNBQWM7QUFDZCxNQUFNLFVBQVUsQ0FBQyxDQUNmLElBQVUsRUFDVixLQUFtQixFQUNuQixHQUFHLFFBQWU7SUFFbEIsaURBQWlEO0lBQ2pELDBDQUEwQztJQUMxQyw2RUFBNkU7SUFDN0UsMERBQTBEO0lBRTFELE1BQU0sZUFBZSxHQUFRO1FBQzNCLFFBQVEsRUFBRSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO0tBQ3BFLENBQUM7SUFFRixJQUFJLEdBQVEsQ0FBQztJQUNiLElBQUksQ0FBTSxDQUFDO0lBRVgsS0FBSyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLElBQUksS0FBSztZQUFFLEdBQUcsR0FBSSxLQUE2QixDQUFDLENBQUMsQ0FBQyxDQUFDOztZQUNuRCxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUksS0FBNkIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxHQUFHLElBQUkseUJBQXlCLElBQUksZUFBZSxFQUFFLENBQUM7UUFDckYsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUNwQixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IGpzeCB9IGZyb20gJy4vanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHR5cGUgeyBRd2lrSlNYIGFzIEpTWCB9IGZyb20gJy4vdHlwZXMvanN4LXF3aWsnO1xuaW1wb3J0IHR5cGUgeyBGdW5jdGlvbkNvbXBvbmVudCwgSlNYTm9kZSB9IGZyb20gJy4vdHlwZXMvanN4LW5vZGUnO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJy4uLy4uL3V0aWwvdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZmxhdHRlbkFycmF5ID0gPFQ+KGFycmF5OiAoVCB8IFRbXSlbXSwgZHN0PzogVFtdKTogVFtdID0+IHtcbiAgLy8gWWVzIHRoaXMgZnVuY3Rpb24gaXMganVzdCBBcnJheS5mbGF0LCBidXQgd2UgbmVlZCB0byBydW4gb24gb2xkIHZlcnNpb25zIG9mIE5vZGUuXG4gIGlmICghZHN0KSBkc3QgPSBbXTtcbiAgZm9yIChjb25zdCBpdGVtIG9mIGFycmF5KSB7XG4gICAgaWYgKGlzQXJyYXkoaXRlbSkpIHtcbiAgICAgIGZsYXR0ZW5BcnJheShpdGVtLCBkc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRzdDtcbn07XG5cbi8qKiBAcHVibGljICovXG5leHBvcnQgZnVuY3Rpb24gaDxUWVBFIGV4dGVuZHMgc3RyaW5nIHwgRnVuY3Rpb25Db21wb25lbnQ8UFJPUFM+LCBQUk9QUyBleHRlbmRzIHt9ID0ge30+KFxuICB0eXBlOiBUWVBFLFxuICBwcm9wczogUFJPUFMgfCBudWxsLFxuICAuLi5jaGlsZHJlbjogYW55W11cbik6IEpTWE5vZGU8VFlQRT4ge1xuICAvLyBVc2luZyBsZWdhY3kgaCgpIGpzeCB0cmFuc2Zvcm0gYW5kIG1vcnBoaW5nIGl0XG4gIC8vIHNvIGl0IGNhbiB1c2UgdGhlIG1vZGVybiB2ZG9tIHN0cnVjdHVyZVxuICAvLyBodHRwczovL3JlYWN0anMub3JnL2Jsb2cvMjAyMC8wOS8yMi9pbnRyb2R1Y2luZy10aGUtbmV3LWpzeC10cmFuc2Zvcm0uaHRtbFxuICAvLyBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjanN4SW1wb3J0U291cmNlXG5cbiAgY29uc3Qgbm9ybWFsaXplZFByb3BzOiBhbnkgPSB7XG4gICAgY2hpbGRyZW46IGFyZ3VtZW50cy5sZW5ndGggPiAyID8gZmxhdHRlbkFycmF5KGNoaWxkcmVuKSA6IHVuZGVmaW5lZCxcbiAgfTtcblxuICBsZXQga2V5OiBhbnk7XG4gIGxldCBpOiBhbnk7XG5cbiAgZm9yIChpIGluIHByb3BzKSB7XG4gICAgaWYgKGkgPT0gJ2tleScpIGtleSA9IChwcm9wcyBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtpXTtcbiAgICBlbHNlIG5vcm1hbGl6ZWRQcm9wc1tpXSA9IChwcm9wcyBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtpXTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgJiYgIWtleSAmJiAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnIGluIG5vcm1hbGl6ZWRQcm9wcykge1xuICAgIGtleSA9ICdpbm5lcmh0bWwnO1xuICB9XG4gIHJldHVybiBqc3godHlwZSwgbm9ybWFsaXplZFByb3BzLCBrZXkpO1xufVxuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGRlY2xhcmUgbmFtZXNwYWNlIGgge1xuICBleHBvcnQgZnVuY3Rpb24gaCh0eXBlOiBhbnkpOiBKU1hOb2RlPGFueT47XG4gIGV4cG9ydCBmdW5jdGlvbiBoKHR5cGU6IE5vZGUsIGRhdGE6IGFueSk6IEpTWE5vZGU8YW55PjtcbiAgZXhwb3J0IGZ1bmN0aW9uIGgodHlwZTogYW55LCB0ZXh0OiBzdHJpbmcpOiBKU1hOb2RlPGFueT47XG4gIGV4cG9ydCBmdW5jdGlvbiBoKHR5cGU6IGFueSwgY2hpbGRyZW46IEFycmF5PGFueT4pOiBKU1hOb2RlPGFueT47XG4gIGV4cG9ydCBmdW5jdGlvbiBoKHR5cGU6IGFueSwgZGF0YTogYW55LCB0ZXh0OiBzdHJpbmcpOiBKU1hOb2RlPGFueT47XG4gIGV4cG9ydCBmdW5jdGlvbiBoKFxuICAgIHR5cGU6IGFueSxcbiAgICBkYXRhOiBhbnksXG4gICAgY2hpbGRyZW46IEFycmF5PEpTWE5vZGU8YW55PiB8IHVuZGVmaW5lZCB8IG51bGw+XG4gICk6IEpTWE5vZGU8YW55PjtcbiAgZXhwb3J0IGZ1bmN0aW9uIGgoc2VsOiBhbnksIGRhdGE6IGFueSB8IG51bGwsIGNoaWxkcmVuOiBKU1hOb2RlPGFueT4pOiBKU1hOb2RlPGFueT47XG5cbiAgZXhwb3J0IHsgSlNYIH07XG59XG4iXX0=","import { isDocument } from '../../util/element';\nimport { jsx } from '../jsx/jsx-runtime';\nimport { cleanupTree, domToVnode, smartUpdateChildren } from './visitor';\nimport { getDocument } from '../../util/dom';\nimport { qDev } from '../../util/qdev';\nimport { version } from '../../version';\nimport { QContainerAttr } from '../../util/markers';\nimport { qError, QError_cannotRenderOverExistingContainer } from '../../error/error';\nimport { directRemoveAttribute, directSetAttribute } from '../fast-calls';\nimport { processData, wrapJSX } from './render-dom';\nimport { removeContainerState, _getContainerState, } from '../../container/container';\nimport { postRendering } from './notify-render';\nimport { createRenderContext } from '../execute-component';\nimport { executeDOMRender, printRenderStats } from './operations';\nimport { logError } from '../../util/log';\nimport { appendQwikDevTools } from '../../container/resume';\n/**\n * Render JSX.\n *\n * Use this method to render JSX. This function does reconciling which means it always tries to\n * reuse what is already in the DOM (rather then destroy and recreate content.) It returns a cleanup\n * function you could use for cleaning up subscriptions.\n *\n * @param parent - Element which will act as a parent to `jsxNode`. When possible the rendering will\n *   try to reuse existing nodes.\n * @param jsxOutput - JSX to render\n * @returns An object containing a cleanup function.\n * @public\n */\nexport const render = async (parent, jsxOutput, opts) => {\n    // If input is a component, convert it\n    if (typeof jsxOutput === 'function') {\n        jsxOutput = jsx(jsxOutput, null);\n    }\n    const doc = getDocument(parent);\n    const containerEl = getElement(parent);\n    if (qDev && containerEl.hasAttribute(QContainerAttr)) {\n        throw qError(QError_cannotRenderOverExistingContainer, containerEl);\n    }\n    // if (qDev) {\n    //   if (parent.childNodes.length > 0) {\n    //     throw new Error('Container must be empty before mounting anything inside');\n    //   }\n    // }\n    injectQContainer(containerEl);\n    const containerState = _getContainerState(containerEl);\n    const serverData = opts?.serverData;\n    if (serverData) {\n        Object.assign(containerState.$serverData$, serverData);\n    }\n    const rCtx = createRenderContext(doc, containerState);\n    containerState.$hostsRendering$ = new Set();\n    containerState.$styleMoved$ = true;\n    await renderRoot(rCtx, containerEl, jsxOutput, doc, containerState, containerEl);\n    await postRendering(containerState, rCtx);\n    return {\n        cleanup() {\n            cleanupContainer(rCtx, containerEl);\n        },\n    };\n};\nconst renderRoot = async (rCtx, parent, jsxOutput, doc, containerState, containerEl) => {\n    const staticCtx = rCtx.$static$;\n    try {\n        const processedNodes = await processData(jsxOutput);\n        // const rootJsx = getVdom(parent);\n        const rootJsx = domToVnode(parent);\n        await smartUpdateChildren(rCtx, rootJsx, wrapJSX(parent, processedNodes), 0);\n    }\n    catch (err) {\n        logError(err);\n    }\n    staticCtx.$operations$.push(...staticCtx.$postOperations$);\n    executeDOMRender(staticCtx);\n    if (qDev) {\n        appendQwikDevTools(containerEl);\n    }\n    printRenderStats(staticCtx);\n};\nexport const getElement = (docOrElm) => {\n    return isDocument(docOrElm) ? docOrElm.documentElement : docOrElm;\n};\nexport const injectQContainer = (containerEl) => {\n    directSetAttribute(containerEl, 'q:version', version ?? 'dev');\n    directSetAttribute(containerEl, QContainerAttr, 'resumed');\n    directSetAttribute(containerEl, 'q:render', qDev ? 'dom-dev' : 'dom');\n};\nfunction cleanupContainer(renderCtx, container) {\n    const subsManager = renderCtx.$static$.$containerState$.$subsManager$;\n    cleanupTree(container, renderCtx.$static$, subsManager, true, true);\n    removeContainerState(container);\n    // Clean up attributes\n    directRemoveAttribute(container, 'q:version');\n    directRemoveAttribute(container, QContainerAttr);\n    directRemoveAttribute(container, 'q:render');\n    // Remove children\n    container.replaceChildren();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLnB1YmxpYy5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS9yZW5kZXIvZG9tL3JlbmRlci5wdWJsaWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxFQUVMLG9CQUFvQixFQUNwQixrQkFBa0IsR0FDbkIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFB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bEUsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUNwRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFdBQW9CLEVBQUUsRUFBRTtJQUN2RCxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQztJQUMvRCxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNELGtCQUFrQixDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hFLENBQUMsQ0FBQztBQUVGLFNBQVMsZ0JBQWdCLENBQUMsU0FBd0IsRUFBRSxTQUFrQjtJQUNwRSxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztJQUN0RSxXQUFXLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUVwRSxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUVoQyxzQkFBc0I7SUFDdEIscUJBQXFCLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzlDLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNqRCxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFN0Msa0JBQWtCO0lBQ2xCLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNEb2N1bWVudCB9IGZyb20gJy4uLy4uL3V0aWwvZWxlbWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICcuLi9qc3gvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHR5cGUgeyBKU1hPdXRwdXQsIEZ1bmN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vanN4L3R5cGVzL2pzeC1ub2RlJztcbmltcG9ydCB7IGNsZWFudXBUcmVlLCBkb21Ub1Zub2RlLCBzbWFydFVwZGF0ZUNoaWxkcmVuIH0gZnJvbSAnLi92aXNpdG9yJztcbmltcG9ydCB7IGdldERvY3VtZW50IH0gZnJvbSAnLi4vLi4vdXRpbC9kb20nO1xuaW1wb3J0IHsgcURldiB9IGZyb20gJy4uLy4uL3V0aWwvcWRldic7XG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vLi4vdmVyc2lvbic7XG5pbXBvcnQgeyBRQ29udGFpbmVyQXR0ciB9IGZyb20gJy4uLy4uL3V0aWwvbWFya2Vycyc7XG5pbXBvcnQgeyBxRXJyb3IsIFFFcnJvcl9jYW5ub3RSZW5kZXJPdmVyRXhpc3RpbmdDb250YWluZXIgfSBmcm9tICcuLi8uLi9lcnJvci9lcnJvcic7XG5pbXBvcnQgeyBkaXJlY3RSZW1vdmVBdHRyaWJ1dGUsIGRpcmVjdFNldEF0dHJpYnV0ZSB9IGZyb20gJy4uL2Zhc3QtY2FsbHMnO1xuaW1wb3J0IHsgcHJvY2Vzc0RhdGEsIHdyYXBKU1ggfSBmcm9tICcuL3JlbmRlci1kb20nO1xuaW1wb3J0IHtcbiAgdHlwZSBDb250YWluZXJTdGF0ZSxcbiAgcmVtb3ZlQ29udGFpbmVyU3RhdGUsXG4gIF9nZXRDb250YWluZXJTdGF0ZSxcbn0gZnJvbSAnLi4vLi4vY29udGFpbmVyL2NvbnRhaW5lcic7XG5pbXBvcnQgeyBwb3N0UmVuZGVyaW5nIH0gZnJvbSAnLi9ub3RpZnktcmVuZGVyJztcbmltcG9ydCB7IGNyZWF0ZVJlbmRlckNvbnRleHQgfSBmcm9tICcuLi9leGVjdXRlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBleGVjdXRlRE9NUmVuZGVyLCBwcmludFJlbmRlclN0YXRzIH0gZnJvbSAnLi9vcGVyYXRpb25zJztcbmltcG9ydCB7IGxvZ0Vycm9yIH0gZnJvbSAnLi4vLi4vdXRpbC9sb2cnO1xuaW1wb3J0IHsgYXBwZW5kUXdpa0RldlRvb2xzIH0gZnJvbSAnLi4vLi4vY29udGFpbmVyL3Jlc3VtZSc7XG5pbXBvcnQgdHlwZSB7IFJlbmRlckNvbnRleHQgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKiBAcHVibGljICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlck9wdGlvbnMge1xuICBzZXJ2ZXJEYXRhPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUmVzdWx0IHtcbiAgY2xlYW51cCgpOiB2b2lkO1xufVxuXG4vKipcbiAqIFJlbmRlciBKU1guXG4gKlxuICogVXNlIHRoaXMgbWV0aG9kIHRvIHJlbmRlciBKU1guIFRoaXMgZnVuY3Rpb24gZG9lcyByZWNvbmNpbGluZyB3aGljaCBtZWFucyBpdCBhbHdheXMgdHJpZXMgdG9cbiAqIHJldXNlIHdoYXQgaXMgYWxyZWFkeSBpbiB0aGUgRE9NIChyYXRoZXIgdGhlbiBkZXN0cm95IGFuZCByZWNyZWF0ZSBjb250ZW50LikgSXQgcmV0dXJucyBhIGNsZWFudXBcbiAqIGZ1bmN0aW9uIHlvdSBjb3VsZCB1c2UgZm9yIGNsZWFuaW5nIHVwIHN1YnNjcmlwdGlvbnMuXG4gKlxuICogQHBhcmFtIHBhcmVudCAtIEVsZW1lbnQgd2hpY2ggd2lsbCBhY3QgYXMgYSBwYXJlbnQgdG8gYGpzeE5vZGVgLiBXaGVuIHBvc3NpYmxlIHRoZSByZW5kZXJpbmcgd2lsbFxuICogICB0cnkgdG8gcmV1c2UgZXhpc3Rpbmcgbm9kZXMuXG4gKiBAcGFyYW0ganN4T3V0cHV0IC0gSlNYIHRvIHJlbmRlclxuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgYSBjbGVhbnVwIGZ1bmN0aW9uLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVuZGVyID0gYXN5bmMgKFxuICBwYXJlbnQ6IEVsZW1lbnQgfCBEb2N1bWVudCxcbiAganN4T3V0cHV0OiBKU1hPdXRwdXQgfCBGdW5jdGlvbkNvbXBvbmVudDxhbnk+LFxuICBvcHRzPzogUmVuZGVyT3B0aW9uc1xuKTogUHJvbWlzZTxSZW5kZXJSZXN1bHQ+ID0+IHtcbiAgLy8gSWYgaW5wdXQgaXMgYSBjb21wb25lbnQsIGNvbnZlcnQgaXRcbiAgaWYgKHR5cGVvZiBqc3hPdXRwdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBqc3hPdXRwdXQgPSBqc3goanN4T3V0cHV0LCBudWxsKTtcbiAgfVxuICBjb25zdCBkb2MgPSBnZXREb2N1bWVudChwYXJlbnQpO1xuICBjb25zdCBjb250YWluZXJFbCA9IGdldEVsZW1lbnQocGFyZW50KTtcbiAgaWYgKHFEZXYgJiYgY29udGFpbmVyRWwuaGFzQXR0cmlidXRlKFFDb250YWluZXJBdHRyKSkge1xuICAgIHRocm93IHFFcnJvcihRRXJyb3JfY2Fubm90UmVuZGVyT3ZlckV4aXN0aW5nQ29udGFpbmVyLCBjb250YWluZXJFbCk7XG4gIH1cbiAgLy8gaWYgKHFEZXYpIHtcbiAgLy8gICBpZiAocGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoID4gMCkge1xuICAvLyAgICAgdGhyb3cgbmV3IEVycm9yKCdDb250YWluZXIgbXVzdCBiZSBlbXB0eSBiZWZvcmUgbW91bnRpbmcgYW55dGhpbmcgaW5zaWRlJyk7XG4gIC8vICAgfVxuICAvLyB9XG4gIGluamVjdFFDb250YWluZXIoY29udGFpbmVyRWwpO1xuXG4gIGNvbnN0IGNvbnRhaW5lclN0YXRlID0gX2dldENvbnRhaW5lclN0YXRlKGNvbnRhaW5lckVsKTtcbiAgY29uc3Qgc2VydmVyRGF0YSA9IG9wdHM/LnNlcnZlckRhdGE7XG4gIGlmIChzZXJ2ZXJEYXRhKSB7XG4gICAgT2JqZWN0LmFzc2lnbihjb250YWluZXJTdGF0ZS4kc2VydmVyRGF0YSQsIHNlcnZlckRhdGEpO1xuICB9XG4gIGNvbnN0IHJDdHggPSBjcmVhdGVSZW5kZXJDb250ZXh0KGRvYywgY29udGFpbmVyU3RhdGUpO1xuICBjb250YWluZXJTdGF0ZS4kaG9zdHNSZW5kZXJpbmckID0gbmV3IFNldCgpO1xuICBjb250YWluZXJTdGF0ZS4kc3R5bGVNb3ZlZCQgPSB0cnVlO1xuICBhd2FpdCByZW5kZXJSb290KHJDdHgsIGNvbnRhaW5lckVsLCBqc3hPdXRwdXQsIGRvYywgY29udGFpbmVyU3RhdGUsIGNvbnRhaW5lckVsKTtcblxuICBhd2FpdCBwb3N0UmVuZGVyaW5nKGNvbnRhaW5lclN0YXRlLCByQ3R4KTtcblxuICByZXR1cm4ge1xuICAgIGNsZWFudXAoKSB7XG4gICAgICBjbGVhbnVwQ29udGFpbmVyKHJDdHgsIGNvbnRhaW5lckVsKTtcbiAgICB9LFxuICB9O1xufTtcblxuY29uc3QgcmVuZGVyUm9vdCA9IGFzeW5jIChcbiAgckN0eDogUmVuZGVyQ29udGV4dCxcbiAgcGFyZW50OiBFbGVtZW50LFxuICBqc3hPdXRwdXQ6IEpTWE91dHB1dCxcbiAgZG9jOiBEb2N1bWVudCxcbiAgY29udGFpbmVyU3RhdGU6IENvbnRhaW5lclN0YXRlLFxuICBjb250YWluZXJFbDogRWxlbWVudFxuKSA9PiB7XG4gIGNvbnN0IHN0YXRpY0N0eCA9IHJDdHguJHN0YXRpYyQ7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBwcm9jZXNzZWROb2RlcyA9IGF3YWl0IHByb2Nlc3NEYXRhKGpzeE91dHB1dCk7XG4gICAgLy8gY29uc3Qgcm9vdEpzeCA9IGdldFZkb20ocGFyZW50KTtcbiAgICBjb25zdCByb290SnN4ID0gZG9tVG9Wbm9kZShwYXJlbnQpO1xuICAgIGF3YWl0IHNtYXJ0VXBkYXRlQ2hpbGRyZW4ockN0eCwgcm9vdEpzeCwgd3JhcEpTWChwYXJlbnQsIHByb2Nlc3NlZE5vZGVzKSwgMCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ0Vycm9yKGVycik7XG4gIH1cblxuICBzdGF0aWNDdHguJG9wZXJhdGlvbnMkLnB1c2goLi4uc3RhdGljQ3R4LiRwb3N0T3BlcmF0aW9ucyQpO1xuICBleGVjdXRlRE9NUmVuZGVyKHN0YXRpY0N0eCk7XG5cbiAgaWYgKHFEZXYpIHtcbiAgICBhcHBlbmRRd2lrRGV2VG9vbHMoY29udGFpbmVyRWwpO1xuICB9XG4gIHByaW50UmVuZGVyU3RhdHMoc3RhdGljQ3R4KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50ID0gKGRvY09yRWxtOiBEb2N1bWVudCB8IEVsZW1lbnQpOiBFbGVtZW50ID0+IHtcbiAgcmV0dXJuIGlzRG9jdW1lbnQoZG9jT3JFbG0pID8gZG9jT3JFbG0uZG9jdW1lbnRFbGVtZW50IDogZG9jT3JFbG07XG59O1xuXG5leHBvcnQgY29uc3QgaW5qZWN0UUNvbnRhaW5lciA9IChjb250YWluZXJFbDogRWxlbWVudCkgPT4ge1xuICBkaXJlY3RTZXRBdHRyaWJ1dGUoY29udGFpbmVyRWwsICdxOnZlcnNpb24nLCB2ZXJzaW9uID8/ICdkZXYnKTtcbiAgZGlyZWN0U2V0QXR0cmlidXRlKGNvbnRhaW5lckVsLCBRQ29udGFpbmVyQXR0ciwgJ3Jlc3VtZWQnKTtcbiAgZGlyZWN0U2V0QXR0cmlidXRlKGNvbnRhaW5lckVsLCAncTpyZW5kZXInLCBxRGV2ID8gJ2RvbS1kZXYnIDogJ2RvbScpO1xufTtcblxuZnVuY3Rpb24gY2xlYW51cENvbnRhaW5lcihyZW5kZXJDdHg6IFJlbmRlckNvbnRleHQsIGNvbnRhaW5lcjogRWxlbWVudCkge1xuICBjb25zdCBzdWJzTWFuYWdlciA9IHJlbmRlckN0eC4kc3RhdGljJC4kY29udGFpbmVyU3RhdGUkLiRzdWJzTWFuYWdlciQ7XG4gIGNsZWFudXBUcmVlKGNvbnRhaW5lciwgcmVuZGVyQ3R4LiRzdGF0aWMkLCBzdWJzTWFuYWdlciwgdHJ1ZSwgdHJ1ZSk7XG5cbiAgcmVtb3ZlQ29udGFpbmVyU3RhdGUoY29udGFpbmVyKTtcblxuICAvLyBDbGVhbiB1cCBhdHRyaWJ1dGVzXG4gIGRpcmVjdFJlbW92ZUF0dHJpYnV0ZShjb250YWluZXIsICdxOnZlcnNpb24nKTtcbiAgZGlyZWN0UmVtb3ZlQXR0cmlidXRlKGNvbnRhaW5lciwgUUNvbnRhaW5lckF0dHIpO1xuICBkaXJlY3RSZW1vdmVBdHRyaWJ1dGUoY29udGFpbmVyLCAncTpyZW5kZXInKTtcblxuICAvLyBSZW1vdmUgY2hpbGRyZW5cbiAgY29udGFpbmVyLnJlcGxhY2VDaGlsZHJlbigpO1xufVxuIl19","import { QObjectRecursive } from '../state/constants';\nimport { getOrCreateProxy } from '../state/store';\nimport { isFunction } from '../util/types';\nimport { invoke } from './use-core';\nimport { useSequentialScope } from './use-sequential-scope';\n// <docs markdown=\"../readme.md#useStore\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useStore instead)\n/**\n * Creates an object that Qwik can track across serializations.\n *\n * Use `useStore` to create a state for your application. The returned object is a proxy that has a\n * unique ID. The ID of the object is used in the `QRL`s to refer to the store.\n *\n * ### Example\n *\n * Example showing how `useStore` is used in Counter example to keep track of the count.\n *\n * ```tsx\n * const Stores = component$(() => {\n *   const counter = useCounter(1);\n *\n *   // Reactivity happens even for nested objects and arrays\n *   const userData = useStore({\n *     name: 'Manu',\n *     address: {\n *       address: '',\n *       city: '',\n *     },\n *     orgs: [],\n *   });\n *\n *   // useStore() can also accept a function to calculate the initial value\n *   const state = useStore(() => {\n *     return {\n *       value: expensiveInitialValue(),\n *     };\n *   });\n *\n *   return (\n *     <div>\n *       <div>Counter: {counter.value}</div>\n *       <Child userData={userData} state={state} />\n *     </div>\n *   );\n * });\n *\n * function useCounter(step: number) {\n *   // Multiple stores can be created in custom hooks for convenience and composability\n *   const counterStore = useStore({\n *     value: 0,\n *   });\n *   useVisibleTask$(() => {\n *     // Only runs in the client\n *     const timer = setInterval(() => {\n *       counterStore.value += step;\n *     }, 500);\n *     return () => {\n *       clearInterval(timer);\n *     };\n *   });\n *   return counterStore;\n * }\n * ```\n *\n * @public\n */\n// </docs>\nexport const useStore = (initialState, opts) => {\n    const { val, set, iCtx } = useSequentialScope();\n    if (val != null) {\n        return val;\n    }\n    const value = isFunction(initialState) ? invoke(undefined, initialState) : initialState;\n    if (opts?.reactive === false) {\n        set(value);\n        return value;\n    }\n    else {\n        const containerState = iCtx.$renderCtx$.$static$.$containerState$;\n        const recursive = opts?.deep ?? true;\n        const flags = recursive ? QObjectRecursive : 0;\n        const newStore = getOrCreateProxy(value, containerState, flags);\n        set(newStore);\n        return newStore;\n    }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXN0b3JlLnB1YmxpYy5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS91c2UvdXNlLXN0b3JlLnB1YmxpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFXNUQsMENBQTBDO0FBQzFDLHlDQUF5QztBQUN6Qyx1Q0FBdUM7QUFDdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwREc7QUFDSCxVQUFVO0FBQ1YsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQ3RCLFlBQW1DLEVBQ25DLElBQXNCLEVBQ2YsRUFBRTtJQUNULE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLGtCQUFrQixFQUFTLENBQUM7SUFDdkQsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDaEIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFDeEYsSUFBSSxJQUFJLEVBQUUsUUFBUSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQzdCLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNYLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNsRSxNQUFNLFNBQVMsR0FBRyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQztRQUNyQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0MsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDZCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUU9iamVjdFJlY3Vyc2l2ZSB9IGZyb20gJy4uL3N0YXRlL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXRPckNyZWF0ZVByb3h5IH0gZnJvbSAnLi4vc3RhdGUvc3RvcmUnO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWwvdHlwZXMnO1xuaW1wb3J0IHsgaW52b2tlIH0gZnJvbSAnLi91c2UtY29yZSc7XG5pbXBvcnQgeyB1c2VTZXF1ZW50aWFsU2NvcGUgfSBmcm9tICcuL3VzZS1zZXF1ZW50aWFsLXNjb3BlJztcblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlU3RvcmVPcHRpb25zIHtcbiAgLyoqIElmIGB0cnVlYCB0aGVuIGFsbCBuZXN0ZWQgb2JqZWN0cyBhbmQgYXJyYXlzIHdpbGwgYmUgdHJhY2tlZCBhcyB3ZWxsLiBEZWZhdWx0IGlzIGB0cnVlYC4gKi9cbiAgZGVlcD86IGJvb2xlYW47XG5cbiAgLyoqIElmIGBmYWxzZWAgdGhlbiB0aGUgb2JqZWN0IHdpbGwgbm90IGJlIHRyYWNrZWQgZm9yIGNoYW5nZXMuIERlZmF1bHQgaXMgYHRydWVgLiAqL1xuICByZWFjdGl2ZT86IGJvb2xlYW47XG59XG5cbi8vIDxkb2NzIG1hcmtkb3duPVwiLi4vcmVhZG1lLm1kI3VzZVN0b3JlXCI+XG4vLyAhIURPIE5PVCBFRElUIFRISVMgQ09NTUVOVCBESVJFQ1RMWSEhIVxuLy8gKGVkaXQgLi4vcmVhZG1lLm1kI3VzZVN0b3JlIGluc3RlYWQpXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHRoYXQgUXdpayBjYW4gdHJhY2sgYWNyb3NzIHNlcmlhbGl6YXRpb25zLlxuICpcbiAqIFVzZSBgdXNlU3RvcmVgIHRvIGNyZWF0ZSBhIHN0YXRlIGZvciB5b3VyIGFwcGxpY2F0aW9uLiBUaGUgcmV0dXJuZWQgb2JqZWN0IGlzIGEgcHJveHkgdGhhdCBoYXMgYVxuICogdW5pcXVlIElELiBUaGUgSUQgb2YgdGhlIG9iamVjdCBpcyB1c2VkIGluIHRoZSBgUVJMYHMgdG8gcmVmZXIgdG8gdGhlIHN0b3JlLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogRXhhbXBsZSBzaG93aW5nIGhvdyBgdXNlU3RvcmVgIGlzIHVzZWQgaW4gQ291bnRlciBleGFtcGxlIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGNvdW50LlxuICpcbiAqIGBgYHRzeFxuICogY29uc3QgU3RvcmVzID0gY29tcG9uZW50JCgoKSA9PiB7XG4gKiAgIGNvbnN0IGNvdW50ZXIgPSB1c2VDb3VudGVyKDEpO1xuICpcbiAqICAgLy8gUmVhY3Rpdml0eSBoYXBwZW5zIGV2ZW4gZm9yIG5lc3RlZCBvYmplY3RzIGFuZCBhcnJheXNcbiAqICAgY29uc3QgdXNlckRhdGEgPSB1c2VTdG9yZSh7XG4gKiAgICAgbmFtZTogJ01hbnUnLFxuICogICAgIGFkZHJlc3M6IHtcbiAqICAgICAgIGFkZHJlc3M6ICcnLFxuICogICAgICAgY2l0eTogJycsXG4gKiAgICAgfSxcbiAqICAgICBvcmdzOiBbXSxcbiAqICAgfSk7XG4gKlxuICogICAvLyB1c2VTdG9yZSgpIGNhbiBhbHNvIGFjY2VwdCBhIGZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgaW5pdGlhbCB2YWx1ZVxuICogICBjb25zdCBzdGF0ZSA9IHVzZVN0b3JlKCgpID0+IHtcbiAqICAgICByZXR1cm4ge1xuICogICAgICAgdmFsdWU6IGV4cGVuc2l2ZUluaXRpYWxWYWx1ZSgpLFxuICogICAgIH07XG4gKiAgIH0pO1xuICpcbiAqICAgcmV0dXJuIChcbiAqICAgICA8ZGl2PlxuICogICAgICAgPGRpdj5Db3VudGVyOiB7Y291bnRlci52YWx1ZX08L2Rpdj5cbiAqICAgICAgIDxDaGlsZCB1c2VyRGF0YT17dXNlckRhdGF9IHN0YXRlPXtzdGF0ZX0gLz5cbiAqICAgICA8L2Rpdj5cbiAqICAgKTtcbiAqIH0pO1xuICpcbiAqIGZ1bmN0aW9uIHVzZUNvdW50ZXIoc3RlcDogbnVtYmVyKSB7XG4gKiAgIC8vIE11bHRpcGxlIHN0b3JlcyBjYW4gYmUgY3JlYXRlZCBpbiBjdXN0b20gaG9va3MgZm9yIGNvbnZlbmllbmNlIGFuZCBjb21wb3NhYmlsaXR5XG4gKiAgIGNvbnN0IGNvdW50ZXJTdG9yZSA9IHVzZVN0b3JlKHtcbiAqICAgICB2YWx1ZTogMCxcbiAqICAgfSk7XG4gKiAgIHVzZVZpc2libGVUYXNrJCgoKSA9PiB7XG4gKiAgICAgLy8gT25seSBydW5zIGluIHRoZSBjbGllbnRcbiAqICAgICBjb25zdCB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAqICAgICAgIGNvdW50ZXJTdG9yZS52YWx1ZSArPSBzdGVwO1xuICogICAgIH0sIDUwMCk7XG4gKiAgICAgcmV0dXJuICgpID0+IHtcbiAqICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpO1xuICogICAgIH07XG4gKiAgIH0pO1xuICogICByZXR1cm4gY291bnRlclN0b3JlO1xuICogfVxuICogYGBgXG4gKlxuICogQHB1YmxpY1xuICovXG4vLyA8L2RvY3M+XG5leHBvcnQgY29uc3QgdXNlU3RvcmUgPSA8U1RBVEUgZXh0ZW5kcyBvYmplY3Q+KFxuICBpbml0aWFsU3RhdGU6IFNUQVRFIHwgKCgpID0+IFNUQVRFKSxcbiAgb3B0cz86IFVzZVN0b3JlT3B0aW9uc1xuKTogU1RBVEUgPT4ge1xuICBjb25zdCB7IHZhbCwgc2V0LCBpQ3R4IH0gPSB1c2VTZXF1ZW50aWFsU2NvcGU8U1RBVEU+KCk7XG4gIGlmICh2YWwgIT0gbnVsbCkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cbiAgY29uc3QgdmFsdWUgPSBpc0Z1bmN0aW9uKGluaXRpYWxTdGF0ZSkgPyBpbnZva2UodW5kZWZpbmVkLCBpbml0aWFsU3RhdGUpIDogaW5pdGlhbFN0YXRlO1xuICBpZiAob3B0cz8ucmVhY3RpdmUgPT09IGZhbHNlKSB7XG4gICAgc2V0KHZhbHVlKTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY29udGFpbmVyU3RhdGUgPSBpQ3R4LiRyZW5kZXJDdHgkLiRzdGF0aWMkLiRjb250YWluZXJTdGF0ZSQ7XG4gICAgY29uc3QgcmVjdXJzaXZlID0gb3B0cz8uZGVlcCA/PyB0cnVlO1xuICAgIGNvbnN0IGZsYWdzID0gcmVjdXJzaXZlID8gUU9iamVjdFJlY3Vyc2l2ZSA6IDA7XG4gICAgY29uc3QgbmV3U3RvcmUgPSBnZXRPckNyZWF0ZVByb3h5KHZhbHVlLCBjb250YWluZXJTdGF0ZSwgZmxhZ3MpO1xuICAgIHNldChuZXdTdG9yZSk7XG4gICAgcmV0dXJuIG5ld1N0b3JlO1xuICB9XG59O1xuIl19","import { getNextIndex } from '../render/execute-component';\nimport { hashCode } from '../util/hash_code';\nimport { useSequentialScope } from './use-sequential-scope';\n/** @public */\nexport const useId = () => {\n    const { val, set, elCtx, iCtx } = useSequentialScope();\n    if (val != null) {\n        return val;\n    }\n    const containerBase = iCtx.$renderCtx$?.$static$?.$containerState$?.$base$ || '';\n    const base = containerBase ? hashCode(containerBase) : '';\n    const hash = elCtx.$componentQrl$?.getHash() || '';\n    const counter = getNextIndex(iCtx.$renderCtx$) || '';\n    const id = `${base}-${hash}-${counter}`; // If no base and no hash, then \"--#\"\n    return set(id);\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWlkLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3VzZS91c2UtaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCxjQUFjO0FBQ2QsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLEdBQVcsRUFBRTtJQUNoQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsa0JBQWtCLEVBQVUsQ0FBQztJQUMvRCxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNoQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ2pGLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDMUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDbkQsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckQsTUFBTSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMscUNBQXFDO0lBQzlFLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE5leHRJbmRleCB9IGZyb20gJy4uL3JlbmRlci9leGVjdXRlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBoYXNoQ29kZSB9IGZyb20gJy4uL3V0aWwvaGFzaF9jb2RlJztcbmltcG9ydCB7IHVzZVNlcXVlbnRpYWxTY29wZSB9IGZyb20gJy4vdXNlLXNlcXVlbnRpYWwtc2NvcGUnO1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGNvbnN0IHVzZUlkID0gKCk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHsgdmFsLCBzZXQsIGVsQ3R4LCBpQ3R4IH0gPSB1c2VTZXF1ZW50aWFsU2NvcGU8c3RyaW5nPigpO1xuICBpZiAodmFsICE9IG51bGwpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgY29uc3QgY29udGFpbmVyQmFzZSA9IGlDdHguJHJlbmRlckN0eCQ/LiRzdGF0aWMkPy4kY29udGFpbmVyU3RhdGUkPy4kYmFzZSQgfHwgJyc7XG4gIGNvbnN0IGJhc2UgPSBjb250YWluZXJCYXNlID8gaGFzaENvZGUoY29udGFpbmVyQmFzZSkgOiAnJztcbiAgY29uc3QgaGFzaCA9IGVsQ3R4LiRjb21wb25lbnRRcmwkPy5nZXRIYXNoKCkgfHwgJyc7XG4gIGNvbnN0IGNvdW50ZXIgPSBnZXROZXh0SW5kZXgoaUN0eC4kcmVuZGVyQ3R4JCkgfHwgJyc7XG4gIGNvbnN0IGlkID0gYCR7YmFzZX0tJHtoYXNofS0ke2NvdW50ZXJ9YDsgLy8gSWYgbm8gYmFzZSBhbmQgbm8gaGFzaCwgdGhlbiBcIi0tI1wiXG4gIHJldHVybiBzZXQoaWQpO1xufTtcbiJdfQ==","import { tryGetInvokeContext } from './use-core';\n/** @public */\nexport function useServerData(key, defaultValue) {\n    const ctx = tryGetInvokeContext();\n    return ctx?.$renderCtx$?.$static$.$containerState$.$serverData$[key] ?? defaultValue;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWVudi1kYXRhLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3VzZS91c2UtZW52LWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBUWpELGNBQWM7QUFDZCxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQVcsRUFBRSxZQUFrQjtJQUMzRCxNQUFNLEdBQUcsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO0lBQ2xDLE9BQU8sR0FBRyxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksQ0FBQztBQUN2RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHJ5R2V0SW52b2tlQ29udGV4dCB9IGZyb20gJy4vdXNlLWNvcmUnO1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlcnZlckRhdGE8VD4oa2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkO1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlcnZlckRhdGE8VCwgQiA9IFQ+KGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IEIpOiBUIHwgQjtcblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTZXJ2ZXJEYXRhKGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBhbnkpIHtcbiAgY29uc3QgY3R4ID0gdHJ5R2V0SW52b2tlQ29udGV4dCgpO1xuICByZXR1cm4gY3R4Py4kcmVuZGVyQ3R4JD8uJHN0YXRpYyQuJGNvbnRhaW5lclN0YXRlJC4kc2VydmVyRGF0YSRba2V5XSA/PyBkZWZhdWx0VmFsdWU7XG59XG4iXX0=","/* eslint-disable no-console */\nimport { ComponentStylesPrefixContent } from '../util/markers';\nimport { qDev } from '../util/qdev';\n// Make sure this is always set to `false` in production, but it is useful to set for `true` in development for debugging.\nconst DEBUG = false;\nexport const STYLE_CACHE = /*#__PURE__*/ new Map();\nexport const getScopedStyles = (css, scopeId) => {\n    if (qDev) {\n        return scopeStylesheet(css, scopeId);\n    }\n    let styleCss = STYLE_CACHE.get(scopeId);\n    if (!styleCss) {\n        STYLE_CACHE.set(scopeId, (styleCss = scopeStylesheet(css, scopeId)));\n    }\n    return styleCss;\n};\nexport const scopeStylesheet = (css, scopeId) => {\n    const end = css.length;\n    const out = [];\n    const stack = [];\n    let idx = 0;\n    let lastIdx = idx;\n    let mode = rule;\n    let lastCh = 0;\n    DEBUG && console.log('--------------------------');\n    while (idx < end) {\n        DEBUG && console.log(css);\n        DEBUG && console.log(new Array(idx).fill(' ').join('') + '^');\n        DEBUG && console.log('MODE', ...stack.map(modeToString), modeToString(mode));\n        const chIdx = idx;\n        let ch = css.charCodeAt(idx++);\n        if (ch === BACKSLASH) {\n            idx++;\n            ch = A; // Pretend it's a letter\n        }\n        const arcs = STATE_MACHINE[mode];\n        for (let i = 0; i < arcs.length; i++) {\n            const arc = arcs[i];\n            const [expectLastCh, expectCh, newMode] = arc;\n            if (expectLastCh === lastCh ||\n                expectLastCh === ANY ||\n                (expectLastCh === IDENT && isIdent(lastCh)) ||\n                (expectLastCh === WHITESPACE && isWhiteSpace(lastCh))) {\n                if (expectCh === ch ||\n                    expectCh === ANY ||\n                    (expectCh === IDENT && isIdent(ch)) ||\n                    (expectCh === NOT_IDENT && !isIdent(ch) && ch !== DOT) ||\n                    (expectCh === WHITESPACE && isWhiteSpace(ch))) {\n                    if (arc.length == 3 || lookAhead(arc)) {\n                        if (arc.length > 3) {\n                            // If matched on lookAhead than we we have to update current `ch`\n                            ch = css.charCodeAt(idx - 1);\n                        }\n                        DEBUG &&\n                            console.log('MATCH', charToString(expectLastCh), charToString(expectCh), modeToString(newMode));\n                        // We found a match!\n                        if (newMode === EXIT || newMode == EXIT_INSERT_SCOPE) {\n                            if (newMode === EXIT_INSERT_SCOPE) {\n                                if (mode === starSelector && !shouldNotInsertScoping()) {\n                                    // Replace `*` with the scoping elementClassIdSelector.\n                                    if (isChainedSelector(ch)) {\n                                        // *foo\n                                        flush(idx - 2);\n                                    }\n                                    else {\n                                        // * (by itself)\n                                        insertScopingSelector(idx - 2);\n                                    }\n                                    lastIdx++;\n                                }\n                                else {\n                                    if (!isChainedSelector(ch)) {\n                                        // We are exiting one of the Selector so we may need to\n                                        const offset = expectCh == NOT_IDENT ? 1 : expectCh == CLOSE_PARENTHESIS ? 2 : 0;\n                                        insertScopingSelector(idx - offset);\n                                    }\n                                }\n                            }\n                            if (expectCh === NOT_IDENT) {\n                                // NOT_IDENT is not a real character more like lack of what we expected.\n                                // if pseudoGlobal we need to give it a chance to exit as well.\n                                // For this reason we need to reparse the last character again.\n                                idx--;\n                                ch = lastCh;\n                            }\n                            do {\n                                mode = stack.pop() || rule;\n                                if (mode === pseudoGlobal) {\n                                    // Skip over the `)` in `:global(...)`.\n                                    flush(idx - 1);\n                                    lastIdx++;\n                                }\n                            } while (isSelfClosingRule(mode));\n                        }\n                        else {\n                            stack.push(mode);\n                            if (mode === pseudoGlobal && newMode === rule) {\n                                flush(idx - 8); // `:global(`.length\n                                lastIdx = idx; // skip over \":global(\"\n                            }\n                            else if (newMode === pseudoElement) {\n                                // We are entering pseudoElement `::foo`; insert scoping in front of it.\n                                insertScopingSelector(chIdx);\n                            }\n                            mode = newMode;\n                            ch == SPACE; // Pretend not an identifier so that we don't flush again on elementClassIdSelector\n                        }\n                        break; // get out of the for loop as we found a match\n                    }\n                }\n            }\n        }\n        lastCh = ch;\n    }\n    flush(idx);\n    return out.join('');\n    function flush(idx) {\n        out.push(css.substring(lastIdx, idx));\n        DEBUG && console.log('FLUSH', out.join(''));\n        lastIdx = idx;\n    }\n    function insertScopingSelector(idx) {\n        if (mode === pseudoGlobal || shouldNotInsertScoping()) {\n            return;\n        }\n        flush(idx);\n        out.push('.', ComponentStylesPrefixContent, scopeId);\n        DEBUG && console.log('INSERT', out.join(''));\n    }\n    function lookAhead(arc) {\n        let prefix = 0; // Ignore vendor prefixes such as `-webkit-`.\n        if (css.charCodeAt(idx) === DASH) {\n            for (let i = 1; i < 10; i++) {\n                // give up after 10 characters\n                if (css.charCodeAt(idx + i) === DASH) {\n                    prefix = i + 1;\n                    break;\n                }\n            }\n        }\n        words: for (let arcIndx = 3; arcIndx < arc.length; arcIndx++) {\n            const txt = arc[arcIndx];\n            for (let i = 0; i < txt.length; i++) {\n                if ((css.charCodeAt(idx + i + prefix) | LOWERCASE) !== txt.charCodeAt(i)) {\n                    continue words;\n                }\n            }\n            // we found a match;\n            idx += txt.length + prefix;\n            return true;\n        }\n        return false;\n    }\n    function shouldNotInsertScoping() {\n        return stack.indexOf(pseudoGlobal) !== -1 || stack.indexOf(atRuleSelector) !== -1;\n    }\n};\nconst isIdent = (ch) => {\n    return ((ch >= _0 && ch <= _9) ||\n        (ch >= A && ch <= Z) ||\n        (ch >= a && ch <= z) ||\n        ch >= 0x80 ||\n        ch === UNDERSCORE ||\n        ch === DASH);\n};\nconst isChainedSelector = (ch) => {\n    return ch === COLON || ch === DOT || ch === OPEN_BRACKET || ch === HASH || isIdent(ch);\n};\nconst isSelfClosingRule = (mode) => {\n    return (mode === atRuleBlock || mode === atRuleSelector || mode === atRuleInert || mode === pseudoGlobal);\n};\nconst isWhiteSpace = (ch) => {\n    return ch === SPACE || ch === TAB || ch === NEWLINE || ch === CARRIAGE_RETURN;\n};\nconst modeToString = (mode) => {\n    return [\n        'rule',\n        'elementClassIdSelector',\n        'starSelector',\n        'pseudoClassWithSelector',\n        'pseudoClass',\n        'pseudoGlobal',\n        'pseudoElement',\n        'attrSelector',\n        'inertParenthesis',\n        'inertBlock',\n        'atRuleSelector',\n        'atRuleBlock',\n        'atInert',\n        'body',\n        'stringSingle',\n        'stringDouble',\n        'commentMultiline',\n        'EXIT',\n        'EXIT_INSERT_SCOPE',\n    ][mode];\n};\nconst charToString = (ch) => {\n    return ['ANY', 'IDENT', 'NOT_IDENT', 'WHITESPACE'][ch] || String.fromCharCode(ch);\n};\nconst rule = 0; // top level initial space.\nconst elementClassIdSelector = 1; // .elementClassIdSelector {}\nconst starSelector = 2; // * {}\nconst pseudoClassWithSelector = 3; // :pseudoClass(elementClassIdSelector) {}\nconst pseudoClass = 4; // :pseudoClass {}\nconst pseudoGlobal = 5; // :global(elementClassIdSelector)\nconst pseudoElement = 6; // ::pseudoElement {}\nconst attrSelector = 7; // [attr] {}\nconst inertParenthesis = 8; // (ignored)\nconst inertBlock = 9; // {ignored}\nconst atRuleSelector = 10; // @keyframe elementClassIdSelector {}\nconst atRuleBlock = 11; // @media {elementClassIdSelector {}}\nconst atRuleInert = 12; // @atRule something;\nconst body = 13; // .elementClassIdSelector {body}\nconst stringSingle = 14; // 'text'\nconst stringDouble = 15; // 'text'\nconst commentMultiline = 16; // /* ... */\n// NOT REAL MODES\nconst EXIT = 17; // Exit the mode\nconst EXIT_INSERT_SCOPE = 18; // Exit the mode INSERT SCOPE\nconst ANY = 0;\nconst IDENT = 1;\nconst NOT_IDENT = 2;\nconst WHITESPACE = 3;\nconst TAB = 9; // `\\t`.charCodeAt(0);\nconst NEWLINE = 10; // `\\n`.charCodeAt(0);\nconst CARRIAGE_RETURN = 13; // `\\r`.charCodeAt(0);\nconst SPACE = 32; // ` `.charCodeAt(0);\nconst DOUBLE_QUOTE = 34; // `\"`.charCodeAt(0);\nconst HASH = 35; // `#`.charCodeAt(0);\nconst SINGLE_QUOTE = 39; // `'`.charCodeAt(0);\nconst OPEN_PARENTHESIS = 40; // `(`.charCodeAt(0);\nconst CLOSE_PARENTHESIS = 41; // `)`.charCodeAt(0);\nconst STAR = 42; // `*`.charCodeAt(0);\n// const COMMA = 44; // `,`.charCodeAt(0);\nconst DASH = 45; // `-`.charCodeAt(0);\nconst DOT = 46; // `.`.charCodeAt(0);\nconst FORWARD_SLASH = 47; // `/`.charCodeAt(0);\nconst _0 = 48; // `0`.charCodeAt(0);\nconst _9 = 57; // `9`.charCodeAt(0);\nconst COLON = 58; // `:`.charCodeAt(0);\nconst SEMICOLON = 59; // `;`.charCodeAt(0);\n// const LESS_THAN = 60; // `<`.charCodeAt(0);\nconst AT = 64; // `@`.charCodeAt(0);\nconst A = 65; // `A`.charCodeAt(0);\nconst Z = 90; // `Z`.charCodeAt(0);\nconst OPEN_BRACKET = 91; // `[`.charCodeAt(0);\nconst CLOSE_BRACKET = 93; // `]`.charCodeAt(0);\nconst BACKSLASH = 92; // `\\\\`.charCodeAt(0);\nconst UNDERSCORE = 95; // `_`.charCodeAt(0);\nconst LOWERCASE = 0x20; // `a`.charCodeAt(0);\nconst a = 97; // `a`.charCodeAt(0);\n// const d = 100; // `d`.charCodeAt(0);\n// const g = 103; // 'g'.charCodeAt(0);\n// const h = 104; // `h`.charCodeAt(0);\n// const i = 105; // `i`.charCodeAt(0);\n// const l = 108; // `l`.charCodeAt(0);\n// const t = 116; // `t`.charCodeAt(0);\nconst z = 122; // `z`.charCodeAt(0);\nconst OPEN_BRACE = 123; // `{`.charCodeAt(0);\nconst CLOSE_BRACE = 125; // `}`.charCodeAt(0);\nconst STRINGS_COMMENTS = /*__PURE__*/ (() => [\n    [ANY, SINGLE_QUOTE, stringSingle],\n    [ANY, DOUBLE_QUOTE, stringDouble],\n    [ANY, FORWARD_SLASH, commentMultiline, '*'],\n])();\nconst STATE_MACHINE = /*__PURE__*/ (() => [\n    [\n        /// rule\n        [ANY, STAR, starSelector],\n        [ANY, OPEN_BRACKET, attrSelector],\n        [ANY, COLON, pseudoElement, ':', 'before', 'after', 'first-letter', 'first-line'],\n        [ANY, COLON, pseudoGlobal, 'global'],\n        [\n            ANY,\n            COLON,\n            pseudoClassWithSelector,\n            'has',\n            'host-context',\n            'not',\n            'where',\n            'is',\n            'matches',\n            'any',\n        ],\n        [ANY, COLON, pseudoClass],\n        [ANY, IDENT, elementClassIdSelector],\n        [ANY, DOT, elementClassIdSelector],\n        [ANY, HASH, elementClassIdSelector],\n        [ANY, AT, atRuleSelector, 'keyframe'],\n        [ANY, AT, atRuleBlock, 'media', 'supports', 'container'],\n        [ANY, AT, atRuleInert],\n        [ANY, OPEN_BRACE, body],\n        [FORWARD_SLASH, STAR, commentMultiline],\n        [ANY, SEMICOLON, EXIT],\n        [ANY, CLOSE_BRACE, EXIT],\n        [ANY, CLOSE_PARENTHESIS, EXIT],\n        ...STRINGS_COMMENTS,\n    ],\n    [\n        /// elementClassIdSelector\n        [ANY, NOT_IDENT, EXIT_INSERT_SCOPE],\n    ],\n    [\n        /// starSelector\n        [ANY, NOT_IDENT, EXIT_INSERT_SCOPE],\n    ],\n    [\n        /// pseudoClassWithSelector\n        [ANY, OPEN_PARENTHESIS, rule],\n        [ANY, NOT_IDENT, EXIT_INSERT_SCOPE],\n    ],\n    [\n        /// pseudoClass\n        [ANY, OPEN_PARENTHESIS, inertParenthesis],\n        [ANY, NOT_IDENT, EXIT_INSERT_SCOPE],\n    ],\n    [\n        /// pseudoGlobal\n        [ANY, OPEN_PARENTHESIS, rule],\n        [ANY, NOT_IDENT, EXIT],\n    ],\n    [\n        /// pseudoElement\n        [ANY, NOT_IDENT, EXIT],\n    ],\n    [\n        /// attrSelector\n        [ANY, CLOSE_BRACKET, EXIT_INSERT_SCOPE],\n        [ANY, SINGLE_QUOTE, stringSingle],\n        [ANY, DOUBLE_QUOTE, stringDouble],\n    ],\n    [\n        /// inertParenthesis\n        [ANY, CLOSE_PARENTHESIS, EXIT],\n        ...STRINGS_COMMENTS,\n    ],\n    [\n        /// inertBlock\n        [ANY, CLOSE_BRACE, EXIT],\n        ...STRINGS_COMMENTS,\n    ],\n    [\n        /// atRuleSelector\n        [ANY, CLOSE_BRACE, EXIT],\n        [WHITESPACE, IDENT, elementClassIdSelector],\n        [ANY, COLON, pseudoGlobal, 'global'],\n        [ANY, OPEN_BRACE, body],\n        ...STRINGS_COMMENTS,\n    ],\n    [\n        /// atRuleBlock\n        [ANY, OPEN_BRACE, rule],\n        [ANY, SEMICOLON, EXIT],\n        ...STRINGS_COMMENTS,\n    ],\n    [\n        /// atRuleInert\n        [ANY, SEMICOLON, EXIT],\n        [ANY, OPEN_BRACE, inertBlock],\n        ...STRINGS_COMMENTS,\n    ],\n    [\n        /// body\n        [ANY, CLOSE_BRACE, EXIT],\n        [ANY, OPEN_BRACE, body],\n        [ANY, OPEN_PARENTHESIS, inertParenthesis],\n        ...STRINGS_COMMENTS,\n    ],\n    [\n        /// stringSingle\n        [ANY, SINGLE_QUOTE, EXIT],\n    ],\n    [\n        /// stringDouble\n        [ANY, DOUBLE_QUOTE, EXIT],\n    ],\n    [\n        /// commentMultiline\n        [STAR, FORWARD_SLASH, EXIT],\n    ],\n])();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGVkLXN0eWxlc2hlZXQuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvc3R5bGUvc2NvcGVkLXN0eWxlc2hlZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFcEMsMEhBQTBIO0FBQzFILE1BQU0sS0FBSyxHQUFZLEtBQUssQ0FBQztBQUU3QixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7QUFFbkQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsR0FBVyxFQUFFLE9BQWUsRUFBVSxFQUFFO0lBQ3RFLElBQUksSUFBSSxFQUFFLENBQUM7UUFDVCxPQUFPLGVBQWUsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNELElBQUksUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQVcsRUFBRSxPQUFlLEVBQVUsRUFBRTtJQUN0RSxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLE1BQU0sR0FBRyxHQUFhLEVBQUUsQ0FBQztJQUN6QixNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7SUFDM0IsSUFBSSxHQUFH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QUFFLFNBQVMsRUFBRSxJQUFJLENBQUM7UUFDdEIsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQztRQUM3QixHQUFHLGdCQUFnQjtLQUNwQjtJQUNEO1FBQ0UsUUFBUTtRQUNSLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUM7UUFDeEIsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQztRQUN2QixDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQztRQUN6QyxHQUFHLGdCQUFnQjtLQUNwQjtJQUNEO1FBQ0UsZ0JBQWdCO1FBQ2hCLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUM7S0FDMUI7SUFDRDtRQUNFLGdCQUFnQjtRQUNoQixDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDO0tBQzFCO0lBQ0Q7UUFDRSxvQkFBb0I7UUFDcEIsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQztLQUM1QjtDQUNGLENBQUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgQ29tcG9uZW50U3R5bGVzUHJlZml4Q29udGVudCB9IGZyb20gJy4uL3V0aWwvbWFya2Vycyc7XG5pbXBvcnQgeyBxRGV2IH0gZnJvbSAnLi4vdXRpbC9xZGV2JztcblxuLy8gTWFrZSBzdXJlIHRoaXMgaXMgYWx3YXlzIHNldCB0byBgZmFsc2VgIGluIHByb2R1Y3Rpb24sIGJ1dCBpdCBpcyB1c2VmdWwgdG8gc2V0IGZvciBgdHJ1ZWAgaW4gZGV2ZWxvcG1lbnQgZm9yIGRlYnVnZ2luZy5cbmNvbnN0IERFQlVHOiBib29sZWFuID0gZmFsc2U7XG5cbmV4cG9ydCBjb25zdCBTVFlMRV9DQUNIRSA9IC8qI19fUFVSRV9fKi8gbmV3IE1hcCgpO1xuXG5leHBvcnQgY29uc3QgZ2V0U2NvcGVkU3R5bGVzID0gKGNzczogc3RyaW5nLCBzY29wZUlkOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZiAocURldikge1xuICAgIHJldHVybiBzY29wZVN0eWxlc2hlZXQoY3NzLCBzY29wZUlkKTtcbiAgfVxuICBsZXQgc3R5bGVDc3MgPSBTVFlMRV9DQUNIRS5nZXQoc2NvcGVJZCk7XG4gIGlmICghc3R5bGVDc3MpIHtcbiAgICBTVFlMRV9DQUNIRS5zZXQoc2NvcGVJZCwgKHN0eWxlQ3NzID0gc2NvcGVTdHlsZXNoZWV0KGNzcywgc2NvcGVJZCkpKTtcbiAgfVxuICByZXR1cm4gc3R5bGVDc3M7XG59O1xuXG5leHBvcnQgY29uc3Qgc2NvcGVTdHlsZXNoZWV0ID0gKGNzczogc3RyaW5nLCBzY29wZUlkOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBlbmQgPSBjc3MubGVuZ3RoO1xuICBjb25zdCBvdXQ6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHN0YWNrOiBudW1iZXJbXSA9IFtdO1xuICBsZXQgaWR4ID0gMDtcbiAgbGV0IGxhc3RJZHggPSBpZHg7XG4gIGxldCBtb2RlOiBudW1iZXIgPSBydWxlO1xuICBsZXQgbGFzdENoID0gMDtcbiAgREVCVUcgJiYgY29uc29sZS5sb2coJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJyk7XG4gIHdoaWxlIChpZHggPCBlbmQpIHtcbiAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhjc3MpO1xuICAgIERFQlVHICYmIGNvbnNvbGUubG9nKG5ldyBBcnJheShpZHgpLmZpbGwoJyAnKS5qb2luKCcnKSArICdeJyk7XG4gICAgREVCVUcgJiYgY29uc29sZS5sb2coJ01PREUnLCAuLi5zdGFjay5tYXAobW9kZVRvU3RyaW5nKSwgbW9kZVRvU3RyaW5nKG1vZGUpKTtcbiAgICBjb25zdCBjaElkeCA9IGlkeDtcbiAgICBsZXQgY2ggPSBjc3MuY2hhckNvZGVBdChpZHgrKyk7XG4gICAgaWYgKGNoID09PSBCQUNLU0xBU0gpIHtcbiAgICAgIGlkeCsrO1xuICAgICAgY2ggPSBBOyAvLyBQcmV0ZW5kIGl0J3MgYSBsZXR0ZXJcbiAgICB9XG4gICAgY29uc3QgYXJjcyA9IFNUQVRFX01BQ0hJTkVbbW9kZV07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmNzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBhcmMgPSBhcmNzW2ldO1xuICAgICAgY29uc3QgW2V4cGVjdExhc3RDaCwgZXhwZWN0Q2gsIG5ld01vZGVdID0gYXJjO1xuICAgICAgaWYgKFxuICAgICAgICBleHBlY3RMYXN0Q2ggPT09IGxhc3RDaCB8fFxuICAgICAgICBleHBlY3RMYXN0Q2ggPT09IEFOWSB8fFxuICAgICAgICAoZXhwZWN0TGFzdENoID09PSBJREVOVCAmJiBpc0lkZW50KGxhc3RDaCkpIHx8XG4gICAgICAgIChleHBlY3RMYXN0Q2ggPT09IFdISVRFU1BBQ0UgJiYgaXNXaGl0ZVNwYWNlKGxhc3RDaCkpXG4gICAgICApIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGV4cGVjdENoID09PSBjaCB8fFxuICAgICAgICAgIGV4cGVjdENoID09PSBBTlkgfHxcbiAgICAgICAgICAoZXhwZWN0Q2ggPT09IElERU5UICYmIGlzSWRlbnQoY2gpKSB8fFxuICAgICAgICAgIChleHBlY3RDaCA9PT0gTk9UX0lERU5UICYmICFpc0lkZW50KGNoKSAmJiBjaCAhPT0gRE9UKSB8fFxuICAgICAgICAgIChleHBlY3RDaCA9PT0gV0hJVEVTUEFDRSAmJiBpc1doaXRlU3BhY2UoY2gpKVxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoYXJjLmxlbmd0aCA9PSAzIHx8IGxvb2tBaGVhZChhcmMpKSB7XG4gICAgICAgICAgICBpZiAoYXJjLmxlbmd0aCA+IDMpIHtcbiAgICAgICAgICAgICAgLy8gSWYgbWF0Y2hlZCBvbiBsb29rQWhlYWQgdGhhbiB3ZSB3ZSBoYXZlIHRvIHVwZGF0ZSBjdXJyZW50IGBjaGBcbiAgICAgICAgICAgICAgY2ggPSBjc3MuY2hhckNvZGVBdChpZHggLSAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIERFQlVHICYmXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICdNQVRDSCcsXG4gICAgICAgICAgICAgICAgY2hhclRvU3RyaW5nKGV4cGVjdExhc3RDaCksXG4gICAgICAgICAgICAgICAgY2hhclRvU3RyaW5nKGV4cGVjdENoKSxcbiAgICAgICAgICAgICAgICBtb2RlVG9TdHJpbmcobmV3TW9kZSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgbWF0Y2ghXG4gICAgICAgICAgICBpZiAobmV3TW9kZSA9PT0gRVhJVCB8fCBuZXdNb2RlID09IEVYSVRfSU5TRVJUX1NDT1BFKSB7XG4gICAgICAgICAgICAgIGlmIChuZXdNb2RlID09PSBFWElUX0lOU0VSVF9TQ09QRSkge1xuICAgICAgICAgICAgICAgIGlmIChtb2RlID09PSBzdGFyU2VsZWN0b3IgJiYgIXNob3VsZE5vdEluc2VydFNjb3BpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSBgKmAgd2l0aCB0aGUgc2NvcGluZyBlbGVtZW50Q2xhc3NJZFNlbGVjdG9yLlxuICAgICAgICAgICAgICAgICAgaWYgKGlzQ2hhaW5lZFNlbGVjdG9yKGNoKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAqZm9vXG4gICAgICAgICAgICAgICAgICAgIGZsdXNoKGlkeCAtIDIpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gKiAoYnkgaXRzZWxmKVxuICAgICAgICAgICAgICAgICAgICBpbnNlcnRTY29waW5nU2VsZWN0b3IoaWR4IC0gMik7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYXN0SWR4Kys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGlmICghaXNDaGFpbmVkU2VsZWN0b3IoY2gpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBleGl0aW5nIG9uZSBvZiB0aGUgU2VsZWN0b3Igc28gd2UgbWF5IG5lZWQgdG9cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID1cbiAgICAgICAgICAgICAgICAgICAgICBleHBlY3RDaCA9PSBOT1RfSURFTlQgPyAxIDogZXhwZWN0Q2ggPT0gQ0xPU0VfUEFSRU5USEVTSVMgPyAyIDogMDtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0U2NvcGluZ1NlbGVjdG9yKGlkeCAtIG9mZnNldCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChleHBlY3RDaCA9PT0gTk9UX0lERU5UKSB7XG4gICAgICAgICAgICAgICAgLy8gTk9UX0lERU5UIGlzIG5vdCBhIHJlYWwgY2hhcmFjdGVyIG1vcmUgbGlrZSBsYWNrIG9mIHdoYXQgd2UgZXhwZWN0ZWQuXG4gICAgICAgICAgICAgICAgLy8gaWYgcHNldWRvR2xvYmFsIHdlIG5lZWQgdG8gZ2l2ZSBpdCBhIGNoYW5jZSB0byBleGl0IGFzIHdlbGwuXG4gICAgICAgICAgICAgICAgLy8gRm9yIHRoaXMgcmVhc29uIHdlIG5lZWQgdG8gcmVwYXJzZSB0aGUgbGFzdCBjaGFyYWN0ZXIgYWdhaW4uXG4gICAgICAgICAgICAgICAgaWR4LS07XG4gICAgICAgICAgICAgICAgY2ggPSBsYXN0Q2g7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIG1vZGUgPSBzdGFjay5wb3AoKSB8fCBydWxlO1xuICAgICAgICAgICAgICAgIGlmIChtb2RlID09PSBwc2V1ZG9HbG9iYWwpIHtcbiAgICAgICAgICAgICAgICAgIC8vIFNraXAgb3ZlciB0aGUgYClgIGluIGA6Z2xvYmFsKC4uLilgLlxuICAgICAgICAgICAgICAgICAgZmx1c2goaWR4IC0gMSk7XG4gICAgICAgICAgICAgICAgICBsYXN0SWR4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IHdoaWxlIChpc1NlbGZDbG9zaW5nUnVsZShtb2RlKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzdGFjay5wdXNoKG1vZGUpO1xuICAgICAgICAgICAgICBpZiAobW9kZSA9PT0gcHNldWRvR2xvYmFsICYmIG5ld01vZGUgPT09IHJ1bGUpIHtcbiAgICAgICAgICAgICAgICBmbHVzaChpZHggLSA4KTsgLy8gYDpnbG9iYWwoYC5sZW5ndGhcbiAgICAgICAgICAgICAgICBsYXN0SWR4ID0gaWR4OyAvLyBza2lwIG92ZXIgXCI6Z2xvYmFsKFwiXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3TW9kZSA9PT0gcHNldWRvRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBlbnRlcmluZyBwc2V1ZG9FbGVtZW50IGA6OmZvb2A7IGluc2VydCBzY29waW5nIGluIGZyb250IG9mIGl0LlxuICAgICAgICAgICAgICAgIGluc2VydFNjb3BpbmdTZWxlY3RvcihjaElkeCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbW9kZSA9IG5ld01vZGU7XG4gICAgICAgICAgICAgIGNoID09IFNQQUNFOyAvLyBQcmV0ZW5kIG5vdCBhbiBpZGVudGlmaWVyIHNvIHRoYXQgd2UgZG9uJ3QgZmx1c2ggYWdhaW4gb24gZWxlbWVudENsYXNzSWRTZWxlY3RvclxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7IC8vIGdldCBvdXQgb2YgdGhlIGZvciBsb29wIGFzIHdlIGZvdW5kIGEgbWF0Y2hcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgbGFzdENoID0gY2g7XG4gIH1cbiAgZmx1c2goaWR4KTtcbiAgcmV0dXJuIG91dC5qb2luKCcnKTtcblxuICBmdW5jdGlvbiBmbHVzaChpZHg6IG51bWJlcikge1xuICAgIG91dC5wdXNoKGNzcy5zdWJzdHJpbmcobGFzdElkeCwgaWR4KSk7XG4gICAgREVCVUcgJiYgY29uc29sZS5sb2coJ0ZMVVNIJywgb3V0LmpvaW4oJycpKTtcbiAgICBsYXN0SWR4ID0gaWR4O1xuICB9XG4gIGZ1bmN0aW9uIGluc2VydFNjb3BpbmdTZWxlY3RvcihpZHg6IG51bWJlcikge1xuICAgIGlmIChtb2RlID09PSBwc2V1ZG9HbG9iYWwgfHwgc2hvdWxkTm90SW5zZXJ0U2NvcGluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZmx1c2goaWR4KTtcbiAgICBvdXQucHVzaCgnLicsIENvbXBvbmVudFN0eWxlc1ByZWZpeENvbnRlbnQsIHNjb3BlSWQpO1xuICAgIERFQlVHICYmIGNvbnNvbGUubG9nKCdJTlNFUlQnLCBvdXQuam9pbignJykpO1xuICB9XG4gIGZ1bmN0aW9uIGxvb2tBaGVhZChhcmM6IFN0YXRlQXJjKTogYm9vbGVhbiB7XG4gICAgbGV0IHByZWZpeCA9IDA7IC8vIElnbm9yZSB2ZW5kb3IgcHJlZml4ZXMgc3VjaCBhcyBgLXdlYmtpdC1gLlxuICAgIGlmIChjc3MuY2hhckNvZGVBdChpZHgpID09PSBEQVNIKSB7XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IDEwOyBpKyspIHtcbiAgICAgICAgLy8gZ2l2ZSB1cCBhZnRlciAxMCBjaGFyYWN0ZXJzXG4gICAgICAgIGlmIChjc3MuY2hhckNvZGVBdChpZHggKyBpKSA9PT0gREFTSCkge1xuICAgICAgICAgIHByZWZpeCA9IGkgKyAxO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHdvcmRzOiBmb3IgKGxldCBhcmNJbmR4ID0gMzsgYXJjSW5keCA8IGFyYy5sZW5ndGg7IGFyY0luZHgrKykge1xuICAgICAgY29uc3QgdHh0ID0gYXJjW2FyY0luZHhdIGFzIHN0cmluZztcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICgoY3NzLmNoYXJDb2RlQXQoaWR4ICsgaSArIHByZWZpeCkgfCBMT1dFUkNBU0UpICE9PSB0eHQuY2hhckNvZGVBdChpKSkge1xuICAgICAgICAgIGNvbnRpbnVlIHdvcmRzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyB3ZSBmb3VuZCBhIG1hdGNoO1xuICAgICAgaWR4ICs9IHR4dC5sZW5ndGggKyBwcmVmaXg7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZnVuY3Rpb24gc2hvdWxkTm90SW5zZXJ0U2NvcGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhY2suaW5kZXhPZihwc2V1ZG9HbG9iYWwpICE9PSAtMSB8fCBzdGFjay5pbmRleE9mKGF0UnVsZVNlbGVjdG9yKSAhPT0gLTE7XG4gIH1cbn07XG5cbmNvbnN0IGlzSWRlbnQgPSAoY2g6IG51bWJlcik6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gKFxuICAgIChjaCA+PSBfMCAmJiBjaCA8PSBfOSkgfHxcbiAgICAoY2ggPj0gQSAmJiBjaCA8PSBaKSB8fFxuICAgIChjaCA+PSBhICYmIGNoIDw9IHopIHx8XG4gICAgY2ggPj0gMHg4MCB8fFxuICAgIGNoID09PSBVTkRFUlNDT1JFIHx8XG4gICAgY2ggPT09IERBU0hcbiAgKTtcbn07XG5cbmNvbnN0IGlzQ2hhaW5lZFNlbGVjdG9yID0gKGNoOiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIGNoID09PSBDT0xPTiB8fCBjaCA9PT0gRE9UIHx8IGNoID09PSBPUEVOX0JSQUNLRVQgfHwgY2ggPT09IEhBU0ggfHwgaXNJZGVudChjaCk7XG59O1xuXG5jb25zdCBpc1NlbGZDbG9zaW5nUnVsZSA9IChtb2RlOiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIChcbiAgICBtb2RlID09PSBhdFJ1bGVCbG9jayB8fCBtb2RlID09PSBhdFJ1bGVTZWxlY3RvciB8fCBtb2RlID09PSBhdFJ1bGVJbmVydCB8fCBtb2RlID09PSBwc2V1ZG9HbG9iYWxcbiAgKTtcbn07XG5cbmNvbnN0IGlzV2hpdGVTcGFjZSA9IChjaDogbnVtYmVyKTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiBjaCA9PT0gU1BBQ0UgfHwgY2ggPT09IFRBQiB8fCBjaCA9PT0gTkVXTElORSB8fCBjaCA9PT0gQ0FSUklBR0VfUkVUVVJOO1xufTtcblxuY29uc3QgbW9kZVRvU3RyaW5nID0gKG1vZGU6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gIHJldHVybiBbXG4gICAgJ3J1bGUnLFxuICAgICdlbGVtZW50Q2xhc3NJZFNlbGVjdG9yJyxcbiAgICAnc3RhclNlbGVjdG9yJyxcbiAgICAncHNldWRvQ2xhc3NXaXRoU2VsZWN0b3InLFxuICAgICdwc2V1ZG9DbGFzcycsXG4gICAgJ3BzZXVkb0dsb2JhbCcsXG4gICAgJ3BzZXVkb0VsZW1lbnQnLFxuICAgICdhdHRyU2VsZWN0b3InLFxuICAgICdpbmVydFBhcmVudGhlc2lzJyxcbiAgICAnaW5lcnRCbG9jaycsXG4gICAgJ2F0UnVsZVNlbGVjdG9yJyxcbiAgICAnYXRSdWxlQmxvY2snLFxuICAgICdhdEluZXJ0JyxcbiAgICAnYm9keScsXG4gICAgJ3N0cmluZ1NpbmdsZScsXG4gICAgJ3N0cmluZ0RvdWJsZScsXG4gICAgJ2NvbW1lbnRNdWx0aWxpbmUnLFxuICAgICdFWElUJyxcbiAgICAnRVhJVF9JTlNFUlRfU0NPUEUnLFxuICBdW21vZGVdO1xufTtcblxuY29uc3QgY2hhclRvU3RyaW5nID0gKGNoOiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gWydBTlknLCAnSURFTlQnLCAnTk9UX0lERU5UJywgJ1dISVRFU1BBQ0UnXVtjaF0gfHwgU3RyaW5nLmZyb21DaGFyQ29kZShjaCk7XG59O1xuXG5jb25zdCBydWxlID0gMDsgLy8gdG9wIGxldmVsIGluaXRpYWwgc3BhY2UuXG5jb25zdCBlbGVtZW50Q2xhc3NJZFNlbGVjdG9yID0gMTsgLy8gLmVsZW1lbnRDbGFzc0lkU2VsZWN0b3Ige31cbmNvbnN0IHN0YXJTZWxlY3RvciA9IDI7IC8vICoge31cbmNvbnN0IHBzZXVkb0NsYXNzV2l0aFNlbGVjdG9yID0gMzsgLy8gOnBzZXVkb0NsYXNzKGVsZW1lbnRDbGFzc0lkU2VsZWN0b3IpIHt9XG5jb25zdCBwc2V1ZG9DbGFzcyA9IDQ7IC8vIDpwc2V1ZG9DbGFzcyB7fVxuY29uc3QgcHNldWRvR2xvYmFsID0gNTsgLy8gOmdsb2JhbChlbGVtZW50Q2xhc3NJZFNlbGVjdG9yKVxuY29uc3QgcHNldWRvRWxlbWVudCA9IDY7IC8vIDo6cHNldWRvRWxlbWVudCB7fVxuY29uc3QgYXR0clNlbGVjdG9yID0gNzsgLy8gW2F0dHJdIHt9XG5jb25zdCBpbmVydFBhcmVudGhlc2lzID0gODsgLy8gKGlnbm9yZWQpXG5jb25zdCBpbmVydEJsb2NrID0gOTsgLy8ge2lnbm9yZWR9XG5jb25zdCBhdFJ1bGVTZWxlY3RvciA9IDEwOyAvLyBAa2V5ZnJhbWUgZWxlbWVudENsYXNzSWRTZWxlY3RvciB7fVxuY29uc3QgYXRSdWxlQmxvY2sgPSAxMTsgLy8gQG1lZGlhIHtlbGVtZW50Q2xhc3NJZFNlbGVjdG9yIHt9fVxuY29uc3QgYXRSdWxlSW5lcnQgPSAxMjsgLy8gQGF0UnVsZSBzb21ldGhpbmc7XG5jb25zdCBib2R5ID0gMTM7IC8vIC5lbGVtZW50Q2xhc3NJZFNlbGVjdG9yIHtib2R5fVxuY29uc3Qgc3RyaW5nU2luZ2xlID0gMTQ7IC8vICd0ZXh0J1xuY29uc3Qgc3RyaW5nRG91YmxlID0gMTU7IC8vICd0ZXh0J1xuY29uc3QgY29tbWVudE11bHRpbGluZSA9IDE2OyAvLyAvKiAuLi4gKi9cbi8vIE5PVCBSRUFMIE1PREVTXG5jb25zdCBFWElUID0gMTc7IC8vIEV4aXQgdGhlIG1vZGVcbmNvbnN0IEVYSVRfSU5TRVJUX1NDT1BFID0gMTg7IC8vIEV4aXQgdGhlIG1vZGUgSU5TRVJUIFNDT1BFXG5cbmNvbnN0IEFOWSA9IDA7XG5jb25zdCBJREVOVCA9IDE7XG5jb25zdCBOT1RfSURFTlQgPSAyO1xuY29uc3QgV0hJVEVTUEFDRSA9IDM7XG5jb25zdCBUQUIgPSA5OyAvLyBgXFx0YC5jaGFyQ29kZUF0KDApO1xuY29uc3QgTkVXTElORSA9IDEwOyAvLyBgXFxuYC5jaGFyQ29kZUF0KDApO1xuY29uc3QgQ0FSUklBR0VfUkVUVVJOID0gMTM7IC8vIGBcXHJgLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBTUEFDRSA9IDMyOyAvLyBgIGAuY2hhckNvZGVBdCgwKTtcbmNvbnN0IERPVUJMRV9RVU9URSA9IDM0OyAvLyBgXCJgLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBIQVNIID0gMzU7IC8vIGAjYC5jaGFyQ29kZUF0KDApO1xuY29uc3QgU0lOR0xFX1FVT1RFID0gMzk7IC8vIGAnYC5jaGFyQ29kZUF0KDApO1xuY29uc3QgT1BFTl9QQVJFTlRIRVNJUyA9IDQwOyAvLyBgKGAuY2hhckNvZGVBdCgwKTtcbmNvbnN0IENMT1NFX1BBUkVOVEhFU0lTID0gNDE7IC8vIGApYC5jaGFyQ29kZUF0KDApO1xuY29uc3QgU1RBUiA9IDQyOyAvLyBgKmAuY2hhckNvZGVBdCgwKTtcbi8vIGNvbnN0IENPTU1BID0gNDQ7IC8vIGAsYC5jaGFyQ29kZUF0KDApO1xuY29uc3QgREFTSCA9IDQ1OyAvLyBgLWAuY2hhckNvZGVBdCgwKTtcbmNvbnN0IERPVCA9IDQ2OyAvLyBgLmAuY2hhckNvZGVBdCgwKTtcbmNvbnN0IEZPUldBUkRfU0xBU0ggPSA0NzsgLy8gYC9gLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBfMCA9IDQ4OyAvLyBgMGAuY2hhckNvZGVBdCgwKTtcbmNvbnN0IF85ID0gNTc7IC8vIGA5YC5jaGFyQ29kZUF0KDApO1xuY29uc3QgQ09MT04gPSA1ODsgLy8gYDpgLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBTRU1JQ09MT04gPSA1OTsgLy8gYDtgLmNoYXJDb2RlQXQoMCk7XG4vLyBjb25zdCBMRVNTX1RIQU4gPSA2MDsgLy8gYDxgLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBBVCA9IDY0OyAvLyBgQGAuY2hhckNvZGVBdCgwKTtcbmNvbnN0IEEgPSA2NTsgLy8gYEFgLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBaID0gOTA7IC8vIGBaYC5jaGFyQ29kZUF0KDApO1xuY29uc3QgT1BFTl9CUkFDS0VUID0gOTE7IC8vIGBbYC5jaGFyQ29kZUF0KDApO1xuY29uc3QgQ0xPU0VfQlJBQ0tFVCA9IDkzOyAvLyBgXWAuY2hhckNvZGVBdCgwKTtcbmNvbnN0IEJBQ0tTTEFTSCA9IDkyOyAvLyBgXFxcXGAuY2hhckNvZGVBdCgwKTtcbmNvbnN0IFVOREVSU0NPUkUgPSA5NTsgLy8gYF9gLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBMT1dFUkNBU0UgPSAweDIwOyAvLyBgYWAuY2hhckNvZGVBdCgwKTtcbmNvbnN0IGEgPSA5NzsgLy8gYGFgLmNoYXJDb2RlQXQoMCk7XG4vLyBjb25zdCBkID0gMTAwOyAvLyBgZGAuY2hhckNvZGVBdCgwKTtcbi8vIGNvbnN0IGcgPSAxMDM7IC8vICdnJy5jaGFyQ29kZUF0KDApO1xuLy8gY29uc3QgaCA9IDEwNDsgLy8gYGhgLmNoYXJDb2RlQXQoMCk7XG4vLyBjb25zdCBpID0gMTA1OyAvLyBgaWAuY2hhckNvZGVBdCgwKTtcbi8vIGNvbnN0IGwgPSAxMDg7IC8vIGBsYC5jaGFyQ29kZUF0KDApO1xuLy8gY29uc3QgdCA9IDExNjsgLy8gYHRgLmNoYXJDb2RlQXQoMCk7XG5jb25zdCB6ID0gMTIyOyAvLyBgemAuY2hhckNvZGVBdCgwKTtcbmNvbnN0IE9QRU5fQlJBQ0UgPSAxMjM7IC8vIGB7YC5jaGFyQ29kZUF0KDApO1xuY29uc3QgQ0xPU0VfQlJBQ0UgPSAxMjU7IC8vIGB9YC5jaGFyQ29kZUF0KDApO1xuXG50eXBlIFN0YXRlQXJjID0gW1xuICAvLy8gSWYgdGhlIGxhc3QgY2hhcmFjdGVyIGlzIHRoaXM6XG4gIG51bWJlcixcbiAgLy8vIElmIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpcyB0aGlzOlxuICBudW1iZXIsXG4gIC8vLyBUaGVuIHRyYW5zaXRpb24gdG8gdGhpcyBzdGF0ZTpcbiAgbnVtYmVyLFxuICAvLy8gT3B0aW9uYWwgbG9vayBhaGVhZCBzdHJpbmdzXG4gIC4uLnN0cmluZ1tdLFxuXTtcblxuY29uc3QgU1RSSU5HU19DT01NRU5UUzogU3RhdGVBcmNbXSA9IC8qX19QVVJFX18qLyAoKCkgPT4gW1xuICBbQU5ZLCBTSU5HTEVfUVVPVEUsIHN0cmluZ1NpbmdsZV0sXG4gIFtBTlksIERPVUJMRV9RVU9URSwgc3RyaW5nRG91YmxlXSxcbiAgW0FOWSwgRk9SV0FSRF9TTEFTSCwgY29tbWVudE11bHRpbGluZSwgJyonXSxcbl0pKCk7XG5cbmNvbnN0IFNUQVRFX01BQ0hJTkU6IFN0YXRlQXJjW11bXSA9IC8qX19QVVJFX18qLyAoKCkgPT4gW1xuICBbXG4gICAgLy8vIHJ1bGVcbiAgICBbQU5ZLCBTVEFSLCBzdGFyU2VsZWN0b3JdLFxuICAgIFtBTlksIE9QRU5fQlJBQ0tFVCwgYXR0clNlbGVjdG9yXSxcbiAgICBbQU5ZLCBDT0xPTiwgcHNldWRvRWxlbWVudCwgJzonLCAnYmVmb3JlJywgJ2FmdGVyJywgJ2ZpcnN0LWxldHRlcicsICdmaXJzdC1saW5lJ10sXG4gICAgW0FOWSwgQ09MT04sIHBzZXVkb0dsb2JhbCwgJ2dsb2JhbCddLFxuICAgIFtcbiAgICAgIEFOWSxcbiAgICAgIENPTE9OLFxuICAgICAgcHNldWRvQ2xhc3NXaXRoU2VsZWN0b3IsXG4gICAgICAnaGFzJyxcbiAgICAgICdob3N0LWNvbnRleHQnLFxuICAgICAgJ25vdCcsXG4gICAgICAnd2hlcmUnLFxuICAgICAgJ2lzJyxcbiAgICAgICdtYXRjaGVzJyxcbiAgICAgICdhbnknLFxuICAgIF0sXG4gICAgW0FOWSwgQ09MT04sIHBzZXVkb0NsYXNzXSxcbiAgICBbQU5ZLCBJREVOVCwgZWxlbWVudENsYXNzSWRTZWxlY3Rvcl0sXG4gICAgW0FOWSwgRE9ULCBlbGVtZW50Q2xhc3NJZFNlbGVjdG9yXSxcbiAgICBbQU5ZLCBIQVNILCBlbGVtZW50Q2xhc3NJZFNlbGVjdG9yXSxcbiAgICBbQU5ZLCBBVCwgYXRSdWxlU2VsZWN0b3IsICdrZXlmcmFtZSddLFxuICAgIFtBTlksIEFULCBhdFJ1bGVCbG9jaywgJ21lZGlhJywgJ3N1cHBvcnRzJywgJ2NvbnRhaW5lciddLFxuICAgIFtBTlksIEFULCBhdFJ1bGVJbmVydF0sXG4gICAgW0FOWSwgT1BFTl9CUkFDRSwgYm9keV0sXG4gICAgW0ZPUldBUkRfU0xBU0gsIFNUQVIsIGNvbW1lbnRNdWx0aWxpbmVdLFxuICAgIFtBTlksIFNFTUlDT0xPTiwgRVhJVF0sXG4gICAgW0FOWSwgQ0xPU0VfQlJBQ0UsIEVYSVRdLFxuICAgIFtBTlksIENMT1NFX1BBUkVOVEhFU0lTLCBFWElUXSxcbiAgICAuLi5TVFJJTkdTX0NPTU1FTlRTLFxuICBdLFxuICBbXG4gICAgLy8vIGVsZW1lbnRDbGFzc0lkU2VsZWN0b3JcbiAgICBbQU5ZLCBOT1RfSURFTlQsIEVYSVRfSU5TRVJUX1NDT1BFXSxcbiAgXSxcbiAgW1xuICAgIC8vLyBzdGFyU2VsZWN0b3JcbiAgICBbQU5ZLCBOT1RfSURFTlQsIEVYSVRfSU5TRVJUX1NDT1BFXSxcbiAgXSxcbiAgW1xuICAgIC8vLyBwc2V1ZG9DbGFzc1dpdGhTZWxlY3RvclxuICAgIFtBTlksIE9QRU5fUEFSRU5USEVTSVMsIHJ1bGVdLFxuICAgIFtBTlksIE5PVF9JREVOVCwgRVhJVF9JTlNFUlRfU0NPUEVdLFxuICBdLFxuICBbXG4gICAgLy8vIHBzZXVkb0NsYXNzXG4gICAgW0FOWSwgT1BFTl9QQVJFTlRIRVNJUywgaW5lcnRQYXJlbnRoZXNpc10sXG4gICAgW0FOWSwgTk9UX0lERU5ULCBFWElUX0lOU0VSVF9TQ09QRV0sXG4gIF0sXG4gIFtcbiAgICAvLy8gcHNldWRvR2xvYmFsXG4gICAgW0FOWSwgT1BFTl9QQVJFTlRIRVNJUywgcnVsZV0sXG4gICAgW0FOWSwgTk9UX0lERU5ULCBFWElUXSxcbiAgXSxcbiAgW1xuICAgIC8vLyBwc2V1ZG9FbGVtZW50XG4gICAgW0FOWSwgTk9UX0lERU5ULCBFWElUXSxcbiAgXSxcbiAgW1xuICAgIC8vLyBhdHRyU2VsZWN0b3JcbiAgICBbQU5ZLCBDTE9TRV9CUkFDS0VULCBFWElUX0lOU0VSVF9TQ09QRV0sXG4gICAgW0FOWSwgU0lOR0xFX1FVT1RFLCBzdHJpbmdTaW5nbGVdLFxuICAgIFtBTlksIERPVUJMRV9RVU9URSwgc3RyaW5nRG91YmxlXSxcbiAgXSxcbiAgW1xuICAgIC8vLyBpbmVydFBhcmVudGhlc2lzXG4gICAgW0FOWSwgQ0xPU0VfUEFSRU5USEVTSVMsIEVYSVRdLFxuICAgIC4uLlNUUklOR1NfQ09NTUVOVFMsXG4gIF0sXG4gIFtcbiAgICAvLy8gaW5lcnRCbG9ja1xuICAgIFtBTlksIENMT1NFX0JSQUNFLCBFWElUXSxcbiAgICAuLi5TVFJJTkdTX0NPTU1FTlRTLFxuICBdLFxuICBbXG4gICAgLy8vIGF0UnVsZVNlbGVjdG9yXG4gICAgW0FOWSwgQ0xPU0VfQlJBQ0UsIEVYSVRdLFxuICAgIFtXSElURVNQQUNFLCBJREVOVCwgZWxlbWVudENsYXNzSWRTZWxlY3Rvcl0sXG4gICAgW0FOWSwgQ09MT04sIHBzZXVkb0dsb2JhbCwgJ2dsb2JhbCddLFxuICAgIFtBTlksIE9QRU5fQlJBQ0UsIGJvZHldLFxuICAgIC4uLlNUUklOR1NfQ09NTUVOVFMsXG4gIF0sXG4gIFtcbiAgICAvLy8gYXRSdWxlQmxvY2tcbiAgICBbQU5ZLCBPUEVOX0JSQUNFLCBydWxlXSxcbiAgICBbQU5ZLCBTRU1JQ09MT04sIEVYSVRdLFxuICAgIC4uLlNUUklOR1NfQ09NTUVOVFMsXG4gIF0sXG4gIFtcbiAgICAvLy8gYXRSdWxlSW5lcnRcbiAgICBbQU5ZLCBTRU1JQ09MT04sIEVYSVRdLFxuICAgIFtBTlksIE9QRU5fQlJBQ0UsIGluZXJ0QmxvY2tdLFxuICAgIC4uLlNUUklOR1NfQ09NTUVOVFMsXG4gIF0sXG4gIFtcbiAgICAvLy8gYm9keVxuICAgIFtBTlksIENMT1NFX0JSQUNFLCBFWElUXSxcbiAgICBbQU5ZLCBPUEVOX0JSQUNFLCBib2R5XSxcbiAgICBbQU5ZLCBPUEVOX1BBUkVOVEhFU0lTLCBpbmVydFBhcmVudGhlc2lzXSxcbiAgICAuLi5TVFJJTkdTX0NPTU1FTlRTLFxuICBdLFxuICBbXG4gICAgLy8vIHN0cmluZ1NpbmdsZVxuICAgIFtBTlksIFNJTkdMRV9RVU9URSwgRVhJVF0sXG4gIF0sXG4gIFtcbiAgICAvLy8gc3RyaW5nRG91YmxlXG4gICAgW0FOWSwgRE9VQkxFX1FVT1RFLCBFWElUXSxcbiAgXSxcbiAgW1xuICAgIC8vLyBjb21tZW50TXVsdGlsaW5lXG4gICAgW1NUQVIsIEZPUldBUkRfU0xBU0gsIEVYSVRdLFxuICBdLFxuXSkoKTtcbiJdfQ==","import { styleContent, styleKey } from '../style/qrl-styles';\nimport { implicit$FirstArg } from '../util/implicit_dollar';\nimport { getScopedStyles } from '../style/scoped-stylesheet';\nimport { useSequentialScope } from './use-sequential-scope';\nimport { assertQrl } from '../qrl/qrl-class';\nimport { isPromise } from '../util/promises';\nimport { assertDefined } from '../error/assert';\nimport { ComponentStylesPrefixContent } from '../util/markers';\n// <docs markdown=\"../readme.md#useStyles\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useStyles instead)\n/**\n * A lazy-loadable reference to a component's styles.\n *\n * Component styles allow Qwik to lazy load the style information for the component only when\n * needed. (And avoid double loading it in case of SSR hydration.)\n *\n * ```tsx\n * import styles from './code-block.css?inline';\n *\n * export const CmpStyles = component$(() => {\n *   useStyles$(styles);\n *\n *   return <div>Some text</div>;\n * });\n * ```\n *\n * @public\n * @see `useStylesScoped`\n */\n// </docs>\nexport const useStylesQrl = (styles) => {\n    _useStyles(styles, (str) => str, false);\n};\n// <docs markdown=\"../readme.md#useStyles\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useStyles instead)\n/**\n * A lazy-loadable reference to a component's styles.\n *\n * Component styles allow Qwik to lazy load the style information for the component only when\n * needed. (And avoid double loading it in case of SSR hydration.)\n *\n * ```tsx\n * import styles from './code-block.css?inline';\n *\n * export const CmpStyles = component$(() => {\n *   useStyles$(styles);\n *\n *   return <div>Some text</div>;\n * });\n * ```\n *\n * @public\n * @see `useStylesScoped`\n */\n// </docs>\nexport const useStyles$ = /*#__PURE__*/ implicit$FirstArg(useStylesQrl);\n// <docs markdown=\"../readme.md#useStylesScoped\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useStylesScoped instead)\n/**\n * A lazy-loadable reference to a component's styles, that is scoped to the component.\n *\n * Component styles allow Qwik to lazy load the style information for the component only when\n * needed. (And avoid double loading it in case of SSR hydration.)\n *\n * ```tsx\n * import scoped from './code-block.css?inline';\n *\n * export const CmpScopedStyles = component$(() => {\n *   useStylesScoped$(scoped);\n *\n *   return <div>Some text</div>;\n * });\n * ```\n *\n * @public\n * @see `useStyles`\n */\n// </docs>\nexport const useStylesScopedQrl = (styles) => {\n    return {\n        scopeId: ComponentStylesPrefixContent + _useStyles(styles, getScopedStyles, true),\n    };\n};\n// <docs markdown=\"../readme.md#useStylesScoped\">\n// !!DO NOT EDIT THIS COMMENT DIRECTLY!!!\n// (edit ../readme.md#useStylesScoped instead)\n/**\n * A lazy-loadable reference to a component's styles, that is scoped to the component.\n *\n * Component styles allow Qwik to lazy load the style information for the component only when\n * needed. (And avoid double loading it in case of SSR hydration.)\n *\n * ```tsx\n * import scoped from './code-block.css?inline';\n *\n * export const CmpScopedStyles = component$(() => {\n *   useStylesScoped$(scoped);\n *\n *   return <div>Some text</div>;\n * });\n * ```\n *\n * @public\n * @see `useStyles`\n */\n// </docs>\nexport const useStylesScoped$ = /*#__PURE__*/ implicit$FirstArg(useStylesScopedQrl);\nconst _useStyles = (styleQrl, transform, scoped) => {\n    assertQrl(styleQrl);\n    const { val, set, iCtx, i, elCtx } = useSequentialScope();\n    if (val) {\n        return val;\n    }\n    const styleId = styleKey(styleQrl, i);\n    const containerState = iCtx.$renderCtx$.$static$.$containerState$;\n    set(styleId);\n    if (!elCtx.$appendStyles$) {\n        elCtx.$appendStyles$ = [];\n    }\n    if (!elCtx.$scopeIds$) {\n        elCtx.$scopeIds$ = [];\n    }\n    if (scoped) {\n        elCtx.$scopeIds$.push(styleContent(styleId));\n    }\n    if (containerState.$styleIds$.has(styleId)) {\n        return styleId;\n    }\n    containerState.$styleIds$.add(styleId);\n    const value = styleQrl.$resolveLazy$(containerState.$containerEl$);\n    const appendStyle = (styleText) => {\n        assertDefined(elCtx.$appendStyles$, 'appendStyles must be defined');\n        elCtx.$appendStyles$.push({\n            styleId,\n            content: transform(styleText, styleId),\n        });\n    };\n    if (isPromise(value)) {\n        iCtx.$waitOn$.push(value.then(appendStyle));\n    }\n    else {\n        appendStyle(value);\n    }\n    return styleId;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXN0eWxlcy5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvcXdpay9zcmMvY29yZS91c2UvdXNlLXN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU8vRCwyQ0FBMkM7QUFDM0MseUNBQXlDO0FBQ3pDLHdDQUF3QztBQUN4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsVUFBVTtBQUNWLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLE1BQW1CLEVBQVEsRUFBRTtJQUN4RCxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDO0FBRUYsMkNBQTJDO0FBQzNDLHlDQUF5QztBQUN6Qyx3Q0FBd0M7QUFDeEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILFVBQVU7QUFDVixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBRXhFLGlEQUFpRDtBQUNqRCx5Q0FBeUM7QUFDekMsOENBQThDO0FBQzlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxVQUFVO0FBQ1YsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUFtQixFQUFtQixFQUFFO0lBQ3pFLE9BQU87UUFDTCxPQUFPLEVBQUUsNEJBQTRCLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDO0tBQ2xGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixpREFBaUQ7QUFDakQseUNBQXlDO0FBQ3pDLDhDQUE4QztBQUM5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsVUFBVTtBQUNWLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRXBGLE1BQU0sVUFBVSxHQUFHLENBQ2pCLFFBQXFCLEVBQ3JCLFNBQW1ELEVBQ25ELE1BQWUsRUFDUCxFQUFFO0lBQ1YsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXBCLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsa0JBQWtCLEVBQVUsQ0FBQztJQUNsRSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1IsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztJQUNsRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFYixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLEtBQUssQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNELElBQUksY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUMzQyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBQ0QsY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxTQUFpQixFQUFFLEVBQUU7UUFDeEMsYUFBYSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsOEJBQThCLENBQUMsQ0FBQztRQUNwRSxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUN4QixPQUFPO1lBQ1AsT0FBTyxFQUFFLFNBQVMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDO1NBQ3ZDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUNGLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7U0FBTSxDQUFDO1FBQ04sV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdHlsZUNvbnRlbnQsIHN0eWxlS2V5IH0gZnJvbSAnLi4vc3R5bGUvcXJsLXN0eWxlcyc7XG5pbXBvcnQgdHlwZSB7IFFSTCB9IGZyb20gJy4uL3FybC9xcmwucHVibGljJztcbmltcG9ydCB7IGltcGxpY2l0JEZpcnN0QXJnIH0gZnJvbSAnLi4vdXRpbC9pbXBsaWNpdF9kb2xsYXInO1xuaW1wb3J0IHsgZ2V0U2NvcGVkU3R5bGVzIH0gZnJvbSAnLi4vc3R5bGUvc2NvcGVkLXN0eWxlc2hlZXQnO1xuaW1wb3J0IHsgdXNlU2VxdWVudGlhbFNjb3BlIH0gZnJvbSAnLi91c2Utc2VxdWVudGlhbC1zY29wZSc7XG5pbXBvcnQgeyBhc3NlcnRRcmwgfSBmcm9tICcuLi9xcmwvcXJsLWNsYXNzJztcbmltcG9ydCB7IGlzUHJvbWlzZSB9IGZyb20gJy4uL3V0aWwvcHJvbWlzZXMnO1xuaW1wb3J0IHsgYXNzZXJ0RGVmaW5lZCB9IGZyb20gJy4uL2Vycm9yL2Fzc2VydCc7XG5pbXBvcnQgeyBDb21wb25lbnRTdHlsZXNQcmVmaXhDb250ZW50IH0gZnJvbSAnLi4vdXRpbC9tYXJrZXJzJztcblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlU3R5bGVzU2NvcGVkIHtcbiAgc2NvcGVJZDogc3RyaW5nO1xufVxuXG4vLyA8ZG9jcyBtYXJrZG93bj1cIi4uL3JlYWRtZS5tZCN1c2VTdHlsZXNcIj5cbi8vICEhRE8gTk9UIEVESVQgVEhJUyBDT01NRU5UIERJUkVDVExZISEhXG4vLyAoZWRpdCAuLi9yZWFkbWUubWQjdXNlU3R5bGVzIGluc3RlYWQpXG4vKipcbiAqIEEgbGF6eS1sb2FkYWJsZSByZWZlcmVuY2UgdG8gYSBjb21wb25lbnQncyBzdHlsZXMuXG4gKlxuICogQ29tcG9uZW50IHN0eWxlcyBhbGxvdyBRd2lrIHRvIGxhenkgbG9hZCB0aGUgc3R5bGUgaW5mb3JtYXRpb24gZm9yIHRoZSBjb21wb25lbnQgb25seSB3aGVuXG4gKiBuZWVkZWQuIChBbmQgYXZvaWQgZG91YmxlIGxvYWRpbmcgaXQgaW4gY2FzZSBvZiBTU1IgaHlkcmF0aW9uLilcbiAqXG4gKiBgYGB0c3hcbiAqIGltcG9ydCBzdHlsZXMgZnJvbSAnLi9jb2RlLWJsb2NrLmNzcz9pbmxpbmUnO1xuICpcbiAqIGV4cG9ydCBjb25zdCBDbXBTdHlsZXMgPSBjb21wb25lbnQkKCgpID0+IHtcbiAqICAgdXNlU3R5bGVzJChzdHlsZXMpO1xuICpcbiAqICAgcmV0dXJuIDxkaXY+U29tZSB0ZXh0PC9kaXY+O1xuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAcHVibGljXG4gKiBAc2VlIGB1c2VTdHlsZXNTY29wZWRgXG4gKi9cbi8vIDwvZG9jcz5cbmV4cG9ydCBjb25zdCB1c2VTdHlsZXNRcmwgPSAoc3R5bGVzOiBRUkw8c3RyaW5nPik6IHZvaWQgPT4ge1xuICBfdXNlU3R5bGVzKHN0eWxlcywgKHN0cikgPT4gc3RyLCBmYWxzZSk7XG59O1xuXG4vLyA8ZG9jcyBtYXJrZG93bj1cIi4uL3JlYWRtZS5tZCN1c2VTdHlsZXNcIj5cbi8vICEhRE8gTk9UIEVESVQgVEhJUyBDT01NRU5UIERJUkVDVExZISEhXG4vLyAoZWRpdCAuLi9yZWFkbWUubWQjdXNlU3R5bGVzIGluc3RlYWQpXG4vKipcbiAqIEEgbGF6eS1sb2FkYWJsZSByZWZlcmVuY2UgdG8gYSBjb21wb25lbnQncyBzdHlsZXMuXG4gKlxuICogQ29tcG9uZW50IHN0eWxlcyBhbGxvdyBRd2lrIHRvIGxhenkgbG9hZCB0aGUgc3R5bGUgaW5mb3JtYXRpb24gZm9yIHRoZSBjb21wb25lbnQgb25seSB3aGVuXG4gKiBuZWVkZWQuIChBbmQgYXZvaWQgZG91YmxlIGxvYWRpbmcgaXQgaW4gY2FzZSBvZiBTU1IgaHlkcmF0aW9uLilcbiAqXG4gKiBgYGB0c3hcbiAqIGltcG9ydCBzdHlsZXMgZnJvbSAnLi9jb2RlLWJsb2NrLmNzcz9pbmxpbmUnO1xuICpcbiAqIGV4cG9ydCBjb25zdCBDbXBTdHlsZXMgPSBjb21wb25lbnQkKCgpID0+IHtcbiAqICAgdXNlU3R5bGVzJChzdHlsZXMpO1xuICpcbiAqICAgcmV0dXJuIDxkaXY+U29tZSB0ZXh0PC9kaXY+O1xuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAcHVibGljXG4gKiBAc2VlIGB1c2VTdHlsZXNTY29wZWRgXG4gKi9cbi8vIDwvZG9jcz5cbmV4cG9ydCBjb25zdCB1c2VTdHlsZXMkID0gLyojX19QVVJFX18qLyBpbXBsaWNpdCRGaXJzdEFyZyh1c2VTdHlsZXNRcmwpO1xuXG4vLyA8ZG9jcyBtYXJrZG93bj1cIi4uL3JlYWRtZS5tZCN1c2VTdHlsZXNTY29wZWRcIj5cbi8vICEhRE8gTk9UIEVESVQgVEhJUyBDT01NRU5UIERJUkVDVExZISEhXG4vLyAoZWRpdCAuLi9yZWFkbWUubWQjdXNlU3R5bGVzU2NvcGVkIGluc3RlYWQpXG4vKipcbiAqIEEgbGF6eS1sb2FkYWJsZSByZWZlcmVuY2UgdG8gYSBjb21wb25lbnQncyBzdHlsZXMsIHRoYXQgaXMgc2NvcGVkIHRvIHRoZSBjb21wb25lbnQuXG4gKlxuICogQ29tcG9uZW50IHN0eWxlcyBhbGxvdyBRd2lrIHRvIGxhenkgbG9hZCB0aGUgc3R5bGUgaW5mb3JtYXRpb24gZm9yIHRoZSBjb21wb25lbnQgb25seSB3aGVuXG4gKiBuZWVkZWQuIChBbmQgYXZvaWQgZG91YmxlIGxvYWRpbmcgaXQgaW4gY2FzZSBvZiBTU1IgaHlkcmF0aW9uLilcbiAqXG4gKiBgYGB0c3hcbiAqIGltcG9ydCBzY29wZWQgZnJvbSAnLi9jb2RlLWJsb2NrLmNzcz9pbmxpbmUnO1xuICpcbiAqIGV4cG9ydCBjb25zdCBDbXBTY29wZWRTdHlsZXMgPSBjb21wb25lbnQkKCgpID0+IHtcbiAqICAgdXNlU3R5bGVzU2NvcGVkJChzY29wZWQpO1xuICpcbiAqICAgcmV0dXJuIDxkaXY+U29tZSB0ZXh0PC9kaXY+O1xuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAcHVibGljXG4gKiBAc2VlIGB1c2VTdHlsZXNgXG4gKi9cbi8vIDwvZG9jcz5cbmV4cG9ydCBjb25zdCB1c2VTdHlsZXNTY29wZWRRcmwgPSAoc3R5bGVzOiBRUkw8c3RyaW5nPik6IFVzZVN0eWxlc1Njb3BlZCA9PiB7XG4gIHJldHVybiB7XG4gICAgc2NvcGVJZDogQ29tcG9uZW50U3R5bGVzUHJlZml4Q29udGVudCArIF91c2VTdHlsZXMoc3R5bGVzLCBnZXRTY29wZWRTdHlsZXMsIHRydWUpLFxuICB9O1xufTtcblxuLy8gPGRvY3MgbWFya2Rvd249XCIuLi9yZWFkbWUubWQjdXNlU3R5bGVzU2NvcGVkXCI+XG4vLyAhIURPIE5PVCBFRElUIFRISVMgQ09NTUVOVCBESVJFQ1RMWSEhIVxuLy8gKGVkaXQgLi4vcmVhZG1lLm1kI3VzZVN0eWxlc1Njb3BlZCBpbnN0ZWFkKVxuLyoqXG4gKiBBIGxhenktbG9hZGFibGUgcmVmZXJlbmNlIHRvIGEgY29tcG9uZW50J3Mgc3R5bGVzLCB0aGF0IGlzIHNjb3BlZCB0byB0aGUgY29tcG9uZW50LlxuICpcbiAqIENvbXBvbmVudCBzdHlsZXMgYWxsb3cgUXdpayB0byBsYXp5IGxvYWQgdGhlIHN0eWxlIGluZm9ybWF0aW9uIGZvciB0aGUgY29tcG9uZW50IG9ubHkgd2hlblxuICogbmVlZGVkLiAoQW5kIGF2b2lkIGRvdWJsZSBsb2FkaW5nIGl0IGluIGNhc2Ugb2YgU1NSIGh5ZHJhdGlvbi4pXG4gKlxuICogYGBgdHN4XG4gKiBpbXBvcnQgc2NvcGVkIGZyb20gJy4vY29kZS1ibG9jay5jc3M/aW5saW5lJztcbiAqXG4gKiBleHBvcnQgY29uc3QgQ21wU2NvcGVkU3R5bGVzID0gY29tcG9uZW50JCgoKSA9PiB7XG4gKiAgIHVzZVN0eWxlc1Njb3BlZCQoc2NvcGVkKTtcbiAqXG4gKiAgIHJldHVybiA8ZGl2PlNvbWUgdGV4dDwvZGl2PjtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHB1YmxpY1xuICogQHNlZSBgdXNlU3R5bGVzYFxuICovXG4vLyA8L2RvY3M+XG5leHBvcnQgY29uc3QgdXNlU3R5bGVzU2NvcGVkJCA9IC8qI19fUFVSRV9fKi8gaW1wbGljaXQkRmlyc3RBcmcodXNlU3R5bGVzU2NvcGVkUXJsKTtcblxuY29uc3QgX3VzZVN0eWxlcyA9IChcbiAgc3R5bGVRcmw6IFFSTDxzdHJpbmc+LFxuICB0cmFuc2Zvcm06IChzdHI6IHN0cmluZywgc3R5bGVJZDogc3RyaW5nKSA9PiBzdHJpbmcsXG4gIHNjb3BlZDogYm9vbGVhblxuKTogc3RyaW5nID0+IHtcbiAgYXNzZXJ0UXJsKHN0eWxlUXJsKTtcblxuICBjb25zdCB7IHZhbCwgc2V0LCBpQ3R4LCBpLCBlbEN0eCB9ID0gdXNlU2VxdWVudGlhbFNjb3BlPHN0cmluZz4oKTtcbiAgaWYgKHZhbCkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cbiAgY29uc3Qgc3R5bGVJZCA9IHN0eWxlS2V5KHN0eWxlUXJsLCBpKTtcbiAgY29uc3QgY29udGFpbmVyU3RhdGUgPSBpQ3R4LiRyZW5kZXJDdHgkLiRzdGF0aWMkLiRjb250YWluZXJTdGF0ZSQ7XG4gIHNldChzdHlsZUlkKTtcblxuICBpZiAoIWVsQ3R4LiRhcHBlbmRTdHlsZXMkKSB7XG4gICAgZWxDdHguJGFwcGVuZFN0eWxlcyQgPSBbXTtcbiAgfVxuICBpZiAoIWVsQ3R4LiRzY29wZUlkcyQpIHtcbiAgICBlbEN0eC4kc2NvcGVJZHMkID0gW107XG4gIH1cbiAgaWYgKHNjb3BlZCkge1xuICAgIGVsQ3R4LiRzY29wZUlkcyQucHVzaChzdHlsZUNvbnRlbnQoc3R5bGVJZCkpO1xuICB9XG4gIGlmIChjb250YWluZXJTdGF0ZS4kc3R5bGVJZHMkLmhhcyhzdHlsZUlkKSkge1xuICAgIHJldHVybiBzdHlsZUlkO1xuICB9XG4gIGNvbnRhaW5lclN0YXRlLiRzdHlsZUlkcyQuYWRkKHN0eWxlSWQpO1xuICBjb25zdCB2YWx1ZSA9IHN0eWxlUXJsLiRyZXNvbHZlTGF6eSQoY29udGFpbmVyU3RhdGUuJGNvbnRhaW5lckVsJCk7XG4gIGNvbnN0IGFwcGVuZFN0eWxlID0gKHN0eWxlVGV4dDogc3RyaW5nKSA9PiB7XG4gICAgYXNzZXJ0RGVmaW5lZChlbEN0eC4kYXBwZW5kU3R5bGVzJCwgJ2FwcGVuZFN0eWxlcyBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICBlbEN0eC4kYXBwZW5kU3R5bGVzJC5wdXNoKHtcbiAgICAgIHN0eWxlSWQsXG4gICAgICBjb250ZW50OiB0cmFuc2Zvcm0oc3R5bGVUZXh0LCBzdHlsZUlkKSxcbiAgICB9KTtcbiAgfTtcbiAgaWYgKGlzUHJvbWlzZSh2YWx1ZSkpIHtcbiAgICBpQ3R4LiR3YWl0T24kLnB1c2godmFsdWUudGhlbihhcHBlbmRTdHlsZSkpO1xuICB9IGVsc2Uge1xuICAgIGFwcGVuZFN0eWxlKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gc3R5bGVJZDtcbn07XG4iXX0=","import { ERROR_CONTEXT } from '../render/error-handling';\nimport { useContextProvider } from './use-context';\nimport { useStore } from './use-store.public';\n/** @public */\nexport const useErrorBoundary = () => {\n    const error = useStore({ error: undefined });\n    useContextProvider(ERROR_CONTEXT, error);\n    return error;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWVycm9yLWJvdW5kYXJ5LmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9xd2lrL3NyYy9jb3JlL3VzZS91c2UtZXJyb3ItYm91bmRhcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEyQixhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLGNBQWM7QUFDZCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUU7SUFDbkMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFxQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUV6QyxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRXJyb3JCb3VuZGFyeVN0b3JlLCBFUlJPUl9DT05URVhUIH0gZnJvbSAnLi4vcmVuZGVyL2Vycm9yLWhhbmRsaW5nJztcbmltcG9ydCB7IHVzZUNvbnRleHRQcm92aWRlciB9IGZyb20gJy4vdXNlLWNvbnRleHQnO1xuaW1wb3J0IHsgdXNlU3RvcmUgfSBmcm9tICcuL3VzZS1zdG9yZS5wdWJsaWMnO1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IGNvbnN0IHVzZUVycm9yQm91bmRhcnkgPSAoKSA9PiB7XG4gIGNvbnN0IGVycm9yID0gdXNlU3RvcmU8RXJyb3JCb3VuZGFyeVN0b3JlPih7IGVycm9yOiB1bmRlZmluZWQgfSk7XG4gIHVzZUNvbnRleHRQcm92aWRlcihFUlJPUl9DT05URVhULCBlcnJvcik7XG5cbiAgcmV0dXJuIGVycm9yO1xufTtcbiJdfQ==","// keep this import from qwik/build so the cjs build works\nimport { isDev } from '@builder.io/qwik/build';\nimport { _jsxC } from '../internal';\n/**\n * @deprecated This is no longer needed as the preloading happens automatically in qrl-class.ts.\n *   Leave this in your app for a while so it uninstalls existing service workers, but don't use it\n *   for new projects.\n * @alpha\n */\nexport const PrefetchServiceWorker = (opts) => {\n    const isTest = import.meta.env.TEST;\n    if (isDev && !isTest) {\n        const props = {\n            dangerouslySetInnerHTML: '<!-- PrefetchServiceWorker is disabled in dev mode. -->',\n        };\n        return _jsxC('script', props, 0, 'prefetch-service-worker');\n    }\n    // if an MFE app has a custom BASE_URL then this will be the correct value\n    // if you're not using MFE from another codebase then you want to override this value to your custom setup\n    const baseUrl = import.meta.env.BASE_URL || '/';\n    const resolvedOpts = {\n        path: 'qwik-prefetch-service-worker.js',\n        ...opts,\n    };\n    if (opts?.path?.startsWith?.('/')) {\n        // allow different path and base\n        resolvedOpts.path = opts.path;\n    }\n    else {\n        // baseUrl: '/'\n        // path: 'qwik-prefetch-service-worker.js'\n        // the file 'qwik-prefetch-service-worker.js' is not located in /build/\n        resolvedOpts.path = baseUrl + resolvedOpts.path;\n    }\n    let code = PREFETCH_CODE.replace('\"_URL_\"', JSON.stringify(resolvedOpts.path.split('/').pop()));\n    if (!isDev) {\n        // consecutive spaces are indentation\n        code = code.replaceAll(/\\s\\s+/gm, '');\n    }\n    const props = {\n        dangerouslySetInnerHTML: [\n            '(' + code + ')(',\n            [\n                'navigator.serviceWorker', // Service worker container\n            ].join(','),\n            ');',\n        ].join(''),\n        nonce: resolvedOpts.nonce,\n    };\n    return _jsxC('script', props, 0, 'prefetch-service-worker');\n};\nconst PREFETCH_CODE = /*#__PURE__*/ ((c // Service worker container\n) => {\n    if ('getRegistrations' in c) {\n        c.getRegistrations().then((registrations) => {\n            registrations.forEach((registration) => {\n                if (registration.active) {\n                    if (registration.active.scriptURL.endsWith('_URL_')) {\n                        registration.unregister().catch(console.error);\n                    }\n                }\n            });\n        });\n    }\n    if ('caches' in window) {\n        caches\n            .keys()\n            .then((names) => {\n            const cacheName = names.find((name) => name.startsWith('QwikBundles'));\n            if (cacheName) {\n                caches.delete(cacheName).catch(console.error);\n            }\n        })\n            .catch(console.error);\n    }\n}).toString();\n/**\n * @deprecated This is no longer needed as the preloading happens automatically in qrl-class. You\n *   can remove this component from your app.\n * @alpha\n */\nexport const PrefetchGraph = (opts = {}) => null;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmV0Y2guanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL3F3aWsvc3JjL2NvcmUvY29tcG9uZW50cy9wcmVmZXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwREFBMEQ7QUFDMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRS9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHcEM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLElBT3JDLEVBQXFCLEVBQUU7SUFDdEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ3BDLElBQUksS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckIsTUFBTSxLQUFLLEdBQUc7WUFDWix1QkFBdUIsRUFBRSx5REFBeUQ7U0FDbkYsQ0FBQztRQUNGLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLHlCQUF5QixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELDBFQUEwRTtJQUMxRSwwR0FBMEc7SUFDMUcsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQztJQUNoRCxNQUFNLFlBQVksR0FBRztRQUNuQixJQUFJLEVBQUUsaUNBQWlDO1FBQ3ZDLEdBQUcsSUFBSTtLQUNSLENBQUM7SUFDRixJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxnQ0FBZ0M7UUFDaEMsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7U0FBTSxDQUFDO1FBQ04sZUFBZTtRQUNmLDBDQUEwQztRQUMxQyx1RUFBdUU7UUFDdkUsWUFBWSxDQUFDLElBQUksR0FBRyxPQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQztJQUNsRCxDQUFDO0lBQ0QsSUFBSSxJQUFJLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gscUNBQXFDO1FBQ3JDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUc7UUFDWix1QkFBdUIsRUFBRTtZQUN2QixHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUk7WUFDakI7Z0JBQ0UseUJBQXlCLEVBQUUsMkJBQTJCO2FBQ3ZELENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNYLElBQUk7U0FDTCxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDVixLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUs7S0FDMUIsQ0FBQztJQUNGLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLHlCQUF5QixDQUFDLENBQUM7QUFDOUQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FDbkMsQ0FBeUIsQ0FBQywyQkFBMkI7RUFDckQsRUFBRTtJQUNGLElBQUksa0JBQWtCLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDMUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO2dCQUNyQyxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDeEIsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQzt3QkFDcEQsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2pELENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsSUFBSSxRQUFRLElBQUksTUFBTSxFQUFFLENBQUM7UUFDdkIsTUFBTTthQUNILElBQUksRUFBRTthQUNOLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2QsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hELENBQUM7UUFDSCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUVkOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FDM0IsT0FBdUYsRUFBRSxFQUM5RSxFQUFFLENBQUMsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8ga2VlcCB0aGlzIGltcG9ydCBmcm9tIHF3aWsvYnVpbGQgc28gdGhlIGNqcyBidWlsZCB3b3Jrc1xuaW1wb3J0IHsgaXNEZXYgfSBmcm9tICdAYnVpbGRlci5pby9xd2lrL2J1aWxkJztcbmltcG9ydCB0eXBlIHsgSlNYTm9kZSB9IGZyb20gJ0BidWlsZGVyLmlvL3F3aWsvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgX2pzeEMgfSBmcm9tICcuLi9pbnRlcm5hbCc7XG5pbXBvcnQgdHlwZSB7IEpTWE91dHB1dCB9IGZyb20gJy4uL3JlbmRlci9qc3gvdHlwZXMvanN4LW5vZGUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFRoaXMgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhcyB0aGUgcHJlbG9hZGluZyBoYXBwZW5zIGF1dG9tYXRpY2FsbHkgaW4gcXJsLWNsYXNzLnRzLlxuICogICBMZWF2ZSB0aGlzIGluIHlvdXIgYXBwIGZvciBhIHdoaWxlIHNvIGl0IHVuaW5zdGFsbHMgZXhpc3Rpbmcgc2VydmljZSB3b3JrZXJzLCBidXQgZG9uJ3QgdXNlIGl0XG4gKiAgIGZvciBuZXcgcHJvamVjdHMuXG4gKiBAYWxwaGFcbiAqL1xuZXhwb3J0IGNvbnN0IFByZWZldGNoU2VydmljZVdvcmtlciA9IChvcHRzOiB7XG4gIGJhc2U/OiBzdHJpbmc7XG4gIHNjb3BlPzogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuICB2ZXJib3NlPzogYm9vbGVhbjtcbiAgZmV0Y2hCdW5kbGVHcmFwaD86IGJvb2xlYW47XG4gIG5vbmNlPzogc3RyaW5nO1xufSk6IEpTWE5vZGU8J3NjcmlwdCc+ID0+IHtcbiAgY29uc3QgaXNUZXN0ID0gaW1wb3J0Lm1ldGEuZW52LlRFU1Q7XG4gIGlmIChpc0RldiAmJiAhaXNUZXN0KSB7XG4gICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDogJzwhLS0gUHJlZmV0Y2hTZXJ2aWNlV29ya2VyIGlzIGRpc2FibGVkIGluIGRldiBtb2RlLiAtLT4nLFxuICAgIH07XG4gICAgcmV0dXJuIF9qc3hDKCdzY3JpcHQnLCBwcm9wcywgMCwgJ3ByZWZldGNoLXNlcnZpY2Utd29ya2VyJyk7XG4gIH1cblxuICAvLyBpZiBhbiBNRkUgYXBwIGhhcyBhIGN1c3RvbSBCQVNFX1VSTCB0aGVuIHRoaXMgd2lsbCBiZSB0aGUgY29ycmVjdCB2YWx1ZVxuICAvLyBpZiB5b3UncmUgbm90IHVzaW5nIE1GRSBmcm9tIGFub3RoZXIgY29kZWJhc2UgdGhlbiB5b3Ugd2FudCB0byBvdmVycmlkZSB0aGlzIHZhbHVlIHRvIHlvdXIgY3VzdG9tIHNldHVwXG4gIGNvbnN0IGJhc2VVcmwgPSBpbXBvcnQubWV0YS5lbnYuQkFTRV9VUkwgfHwgJy8nO1xuICBjb25zdCByZXNvbHZlZE9wdHMgPSB7XG4gICAgcGF0aDogJ3F3aWstcHJlZmV0Y2gtc2VydmljZS13b3JrZXIuanMnLFxuICAgIC4uLm9wdHMsXG4gIH07XG4gIGlmIChvcHRzPy5wYXRoPy5zdGFydHNXaXRoPy4oJy8nKSkge1xuICAgIC8vIGFsbG93IGRpZmZlcmVudCBwYXRoIGFuZCBiYXNlXG4gICAgcmVzb2x2ZWRPcHRzLnBhdGggPSBvcHRzLnBhdGg7XG4gIH0gZWxzZSB7XG4gICAgLy8gYmFzZVVybDogJy8nXG4gICAgLy8gcGF0aDogJ3F3aWstcHJlZmV0Y2gtc2VydmljZS13b3JrZXIuanMnXG4gICAgLy8gdGhlIGZpbGUgJ3F3aWstcHJlZmV0Y2gtc2VydmljZS13b3JrZXIuanMnIGlzIG5vdCBsb2NhdGVkIGluIC9idWlsZC9cbiAgICByZXNvbHZlZE9wdHMucGF0aCA9IGJhc2VVcmwgKyByZXNvbHZlZE9wdHMucGF0aDtcbiAgfVxuICBsZXQgY29kZSA9IFBSRUZFVENIX0NPREUucmVwbGFjZSgnXCJfVVJMX1wiJywgSlNPTi5zdHJpbmdpZnkocmVzb2x2ZWRPcHRzLnBhdGguc3BsaXQoJy8nKS5wb3AoKSkpO1xuICBpZiAoIWlzRGV2KSB7XG4gICAgLy8gY29uc2VjdXRpdmUgc3BhY2VzIGFyZSBpbmRlbnRhdGlvblxuICAgIGNvZGUgPSBjb2RlLnJlcGxhY2VBbGwoL1xcc1xccysvZ20sICcnKTtcbiAgfVxuICBjb25zdCBwcm9wcyA9IHtcbiAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDogW1xuICAgICAgJygnICsgY29kZSArICcpKCcsXG4gICAgICBbXG4gICAgICAgICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlcicsIC8vIFNlcnZpY2Ugd29ya2VyIGNvbnRhaW5lclxuICAgICAgXS5qb2luKCcsJyksXG4gICAgICAnKTsnLFxuICAgIF0uam9pbignJyksXG4gICAgbm9uY2U6IHJlc29sdmVkT3B0cy5ub25jZSxcbiAgfTtcbiAgcmV0dXJuIF9qc3hDKCdzY3JpcHQnLCBwcm9wcywgMCwgJ3ByZWZldGNoLXNlcnZpY2Utd29ya2VyJyk7XG59O1xuXG5jb25zdCBQUkVGRVRDSF9DT0RFID0gLyojX19QVVJFX18qLyAoKFxuICBjOiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyIC8vIFNlcnZpY2Ugd29ya2VyIGNvbnRhaW5lclxuKSA9PiB7XG4gIGlmICgnZ2V0UmVnaXN0cmF0aW9ucycgaW4gYykge1xuICAgIGMuZ2V0UmVnaXN0cmF0aW9ucygpLnRoZW4oKHJlZ2lzdHJhdGlvbnMpID0+IHtcbiAgICAgIHJlZ2lzdHJhdGlvbnMuZm9yRWFjaCgocmVnaXN0cmF0aW9uKSA9PiB7XG4gICAgICAgIGlmIChyZWdpc3RyYXRpb24uYWN0aXZlKSB7XG4gICAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbi5hY3RpdmUuc2NyaXB0VVJMLmVuZHNXaXRoKCdfVVJMXycpKSB7XG4gICAgICAgICAgICByZWdpc3RyYXRpb24udW5yZWdpc3RlcigpLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgaWYgKCdjYWNoZXMnIGluIHdpbmRvdykge1xuICAgIGNhY2hlc1xuICAgICAgLmtleXMoKVxuICAgICAgLnRoZW4oKG5hbWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGNhY2hlTmFtZSA9IG5hbWVzLmZpbmQoKG5hbWUpID0+IG5hbWUuc3RhcnRzV2l0aCgnUXdpa0J1bmRsZXMnKSk7XG4gICAgICAgIGlmIChjYWNoZU5hbWUpIHtcbiAgICAgICAgICBjYWNoZXMuZGVsZXRlKGNhY2hlTmFtZSkuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gIH1cbn0pLnRvU3RyaW5nKCk7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVGhpcyBpcyBubyBsb25nZXIgbmVlZGVkIGFzIHRoZSBwcmVsb2FkaW5nIGhhcHBlbnMgYXV0b21hdGljYWxseSBpbiBxcmwtY2xhc3MuIFlvdVxuICogICBjYW4gcmVtb3ZlIHRoaXMgY29tcG9uZW50IGZyb20geW91ciBhcHAuXG4gKiBAYWxwaGFcbiAqL1xuZXhwb3J0IGNvbnN0IFByZWZldGNoR3JhcGggPSAoXG4gIG9wdHM6IHsgYmFzZT86IHN0cmluZzsgbWFuaWZlc3RIYXNoPzogc3RyaW5nOyBtYW5pZmVzdFVSTD86IHN0cmluZzsgbm9uY2U/OiBzdHJpbmcgfSA9IHt9XG4pOiBKU1hPdXRwdXQgPT4gbnVsbDtcbiJdfQ=="],"names":["isNode","isElement","tryGetContext","emitEvent","IS_HEAD","IS_IMMUTABLE","renderRoot","processData","setComponentProps","registerQwikEvent","isContainer","SHOW_COMMENT","isResourceTask","unwrapStore","FILTER_REJECT","preload"],"mappings":"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,EAAE,YAAY,CAAC;AACrE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACxB,QAAQ,KAAK,CAAC,OAAO,GAAG,EAAE;AAC1B,IAAI;AACJ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5B,IAAI,GAAG,CAAC,QAAQ,CAAC;AACjB,IAAI,OAAO,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,YAAY,GAAG,CAAC,WAAW,EAAE,IAAI,KAAK;AACnD,IAAI,OAAO,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,QAAQ,GAAG,CAAC,KAAK,KAAK;AACnC;AACA,IAAI,OAAO,GAAG,CAAC,QAAQ,EAAE;AACzB,QAAQ,QAAQ,EAAE,yBAAyB,CAAC,KAAK,CAAC;AAClD,KAAK,CAAC;AACN;AACA,SAAS,yBAAyB,CAAC,KAAK,EAAE;AAC1C,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK;AAChC,IAAI,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE;AACpC,QAAQ,MAAM,SAAS,GAAG,CAAC,gBAAgB,EAAE;AAC7C,QAAQ,IAAI,SAAS,EAAE;A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"}