opengeometry 2.0.14 → 2.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/index.d.ts +1 -1
- package/index.js +365 -210
- package/index.js.map +1 -1
- package/opengeometry/pkg/opengeometry.d.ts +328 -317
- package/opengeometry/pkg/opengeometry.js +219 -148
- package/opengeometry/pkg/opengeometry_bg.wasm +0 -0
- package/opengeometry/pkg/opengeometry_bg.wasm.d.ts +302 -299
- package/opengeometry_bg.wasm +0 -0
- package/opengeometry_bg.wasm.d.ts +302 -299
- package/package.json +2 -4
- package/src/examples/index.d.ts +1 -1
- package/src/examples/{wall-from-offsets.d.ts → ribbon-from-offsets.d.ts} +6 -6
- package/src/operations/boolean-regions.d.ts +20 -0
- package/src/operations/index.d.ts +1 -0
- package/src/operations/offset-regions.d.ts +11 -12
- package/src/shapes/analytic-solid.d.ts +23 -7
- package/src/operations/boolean-errors.d.ts +0 -90
- package/src/shapes/boolean-subtract.d.ts +0 -21
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../main/opengeometry/pkg/opengeometry.js","../main/main/opengeometry-three/src/markup/spotMarker.ts","../main/main/opengeometry-three/src/base-types.ts","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/v4.js","../main/main/opengeometry-three/src/utils/randomizer.ts","../main/main/opengeometry-three/src/rendering/analytic-tessellation.ts","../main/main/opengeometry-three/src/rendering/analytic-lod.ts","../main/main/opengeometry-three/src/export/analytic-ifc.ts","../main/main/opengeometry-three/src/operations/analytic-errors.ts","../main/main/opengeometry-three/src/shapes/analytic-solid.ts","../main/main/opengeometry-three/src/shapes/analytic-pattern.ts","../main/main/opengeometry-three/src/editor/parametric.ts","../main/main/opengeometry-three/src/editor/freeform.ts","../main/main/opengeometry-three/src/freeform/geometry.ts","../main/main/opengeometry-three/src/primitives/line.ts","../main/main/opengeometry-three/src/primitives/polyline.ts","../main/main/opengeometry-three/src/primitives/analytic-curve.ts","../main/main/opengeometry-three/src/primitives/arc.ts","../main/main/opengeometry-three/src/primitives/rectangle.ts","../main/main/opengeometry-three/src/primitives/curve.ts","../main/main/opengeometry-three/src/primitives/elliptical_arc.ts","../main/main/opengeometry-three/src/shapes/outline-utils.ts","../main/main/opengeometry-three/src/operations/extrude.ts","../main/main/opengeometry-three/src/shapes/solid.ts","../main/main/opengeometry-three/src/operations/loft.ts","../main/main/opengeometry-three/src/shapes/polygon.ts","../main/main/opengeometry-three/src/shapes/cylinder.ts","../main/main/opengeometry-three/src/shapes/cuboid.ts","../main/main/opengeometry-three/src/shapes/opening.ts","../main/main/opengeometry-three/src/shapes/sphere.ts","../main/main/opengeometry-three/src/shapes/wedge.ts","../main/main/opengeometry-three/src/shapes/sweep.ts","../main/main/opengeometry-three/src/examples/primitives.ts","../main/main/opengeometry-three/src/examples/shapes.ts","../main/main/opengeometry-three/src/examples/sweep.ts","../main/main/opengeometry-three/src/examples/offset.ts","../main/main/opengeometry-three/src/operations/offset-regions.ts","../main/main/opengeometry-three/src/examples/offset-ring-variable.ts","../main/main/opengeometry-three/src/examples/wall-from-offsets.ts","../main/main/opengeometry-three/src/operations/boolean.ts","../main/main/opengeometry-three/src/examples/booleans.ts","../main/main/opengeometry-three/src/examples/editor-modes.ts","../main/main/opengeometry-three/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","let wasm;\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_export_2.set(idx, obj);\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_export_2.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n/**\n * @param {string} local_brep_serialized\n * @param {number} height\n * @returns {string}\n */\nexport function extrudeBrepFace(local_brep_serialized, height) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(local_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.extrudeBrepFace(ptr0, len0, height);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\nlet cachedFloat64ArrayMemory0 = null;\n\nfunction getFloat64ArrayMemory0() {\n if (cachedFloat64ArrayMemory0 === null || cachedFloat64ArrayMemory0.byteLength === 0) {\n cachedFloat64ArrayMemory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachedFloat64ArrayMemory0;\n}\n\nfunction passArrayF64ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 8, 8) >>> 0;\n getFloat64ArrayMemory0().set(arg, ptr / 8);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n * Wasm entry point for general extrude. `direction` is `[x,y,z]`; `extent_kind`\n * is `\"one_sided\" | \"symmetric\" | \"two_sided\"`; `d_plus`/`d_minus` are the\n * extent distances (`d_minus` ignored unless two-sided, `d_plus` is the\n * distance for one-sided/symmetric).\n * @param {string} local_brep_serialized\n * @param {Float64Array} direction\n * @param {string} extent_kind\n * @param {number} d_plus\n * @param {number} d_minus\n * @returns {string}\n */\nexport function extrudeBrepFaceDirectional(local_brep_serialized, direction, extent_kind, d_plus, d_minus) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(local_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayF64ToWasm0(direction, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(extent_kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.extrudeBrepFaceDirectional(ptr0, len0, ptr1, len1, ptr2, len2, d_plus, d_minus);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n}\n\n/**\n * Wasm entry point: analyze a flat `[x0,y0,z0,…]` loop, returning the report as\n * JSON (the corrected points are not returned here; use the kernel API).\n * @param {Float64Array} flat_points\n * @returns {string}\n */\nexport function analyzeProfile(flat_points) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passArrayF64ToWasm0(flat_points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.analyzeProfile(ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction getArrayF64FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat64ArrayMemory0().subarray(ptr / 8, ptr / 8 + len);\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction passArrayJsValueToWasm0(array, malloc) {\n const ptr = malloc(array.length * 4, 4) >>> 0;\n for (let i = 0; i < array.length; i++) {\n const add = addToExternrefTable0(array[i]);\n getDataViewMemory0().setUint32(ptr + 4 * i, add, true);\n }\n WASM_VECTOR_LEN = array.length;\n return ptr;\n}\n/**\n * Wasm entry point: offset a centreline by `width` into stroked regions via the\n * deterministic analytic offset. `centreline_flat` is `[x0,y0,z0, …]`. Returns\n * CW-outer / CCW-hole regions, canonicalised; empty (does NOT throw) when degenerate.\n * @param {Float64Array} centreline_flat\n * @param {number} width\n * @param {boolean} closed\n * @param {number} miter_limit\n * @returns {OGOffsetRegionsResult}\n */\nexport function offsetPolylineRegions(centreline_flat, width, closed, miter_limit) {\n const ptr0 = passArrayF64ToWasm0(centreline_flat, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.offsetPolylineRegions(ptr0, len0, width, closed, miter_limit);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGOffsetRegionsResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point: merge a GROUP of separate polylines (a crossing T / X / L\n * overlap) into one clean stroked region by nonzero-winding union of their mitered\n * bands. `polylines_json` is `[{centreline:[x,y,z,…], width, closed}, …]`. Returns\n * CW-outer / CCW-hole regions (one or more); empty when nothing is buildable.\n * @param {string} polylines_json\n * @returns {OGOffsetRegionsResult}\n */\nexport function offsetPolylineGroupRegions(polylines_json) {\n const ptr0 = passStringToWasm0(polylines_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.offsetPolylineGroupRegions(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGOffsetRegionsResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point: inset a CLOSED ring inward with one distance per edge\n * (edge i = ring[i] → ring[i+1]). `ring_flat` is `[x0,y0,z0, …]`;\n * `holes_json` is `[{ring:[x,y,z,…], distances:[…]}, …]` (`\"[]\"` = none) —\n * excluded interior rings, each grown outward by its own per-edge distances.\n * Returns CW-outer / CCW-hole regions, canonicalised; possibly several when a\n * deep inset (or a hole) splits the ring, and empty (does NOT throw) when the\n * inset collapses or the outer ring is degenerate. THROWS on malformed\n * arguments: a distance count that does not match an edge count, a negative /\n * non-finite distance, a degenerate hole, or unparsable `holes_json`. Corners\n * where distances differ are circumscribed clearance arcs (conservative), so\n * no output point is ever closer to an edge than that edge's distance —\n * there is no miter-limit knob because there are no miters.\n * @param {Float64Array} ring_flat\n * @param {Float64Array} distances\n * @param {string} holes_json\n * @returns {OGOffsetRegionsResult}\n */\nexport function offsetRingVariable(ring_flat, distances, holes_json) {\n const ptr0 = passArrayF64ToWasm0(ring_flat, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayF64ToWasm0(distances, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(holes_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.offsetRingVariable(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGOffsetRegionsResult.__wrap(ret[0]);\n}\n\n/**\n * @param {string} serialized\n * @returns {string}\n */\nexport function validateAnalyticBrep(serialized) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.validateAnalyticBrep(ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\n/**\n * @param {string} serialized\n * @param {number} deflection\n * @param {string | null} [options_json]\n * @returns {OGAnalyticTessellation}\n */\nexport function tessellate_brep(serialized, deflection, options_json) {\n const ptr0 = passStringToWasm0(serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.tessellate_brep(ptr0, len0, deflection, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGAnalyticTessellation.__wrap(ret[0]);\n}\n\nlet cachedFloat32ArrayMemory0 = null;\n\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getArrayF32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nlet cachedUint32ArrayMemory0 = null;\n\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayJsValueFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n const mem = getDataViewMemory0();\n const result = [];\n for (let i = ptr; i < ptr + 4 * len; i += 4) {\n result.push(wasm.__wbindgen_export_2.get(mem.getUint32(i, true)));\n }\n wasm.__externref_drop_slice(ptr, len);\n return result;\n}\n/**\n * Wasm entry point: check a serialized B-rep's geometric validity, returning\n * the [`ValidityReport`] as JSON.\n * @param {string} brep_json\n * @returns {string}\n */\nexport function checkBrepValidity(brep_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(brep_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.checkBrepValidity(ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\n/**\n * Wasm entry point: heal a serialized B-rep, returning JSON\n * `{ \"brep\": <healed brep>, \"report\": <heal report> }`.\n * @param {string} brep_json\n * @param {number} tolerance\n * @returns {string}\n */\nexport function healBrep(brep_json, tolerance) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(brep_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.healBrep(ptr0, len0, tolerance);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\nconst Matrix3Finalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_matrix3_free(ptr >>> 0, 1));\n\nexport class Matrix3 {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Matrix3.prototype);\n obj.__wbg_ptr = ptr;\n Matrix3Finalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n Matrix3Finalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_matrix3_free(ptr, 0);\n }\n /**\n *\n * * Create a new Matrix3 with identity elements.\n *\n */\n constructor() {\n const ret = wasm.matrix3_new();\n this.__wbg_ptr = ret >>> 0;\n Matrix3Finalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {number} m0\n * @param {number} m1\n * @param {number} m2\n * @param {number} m3\n * @param {number} m4\n * @param {number} m5\n * @param {number} m6\n * @param {number} m7\n * @param {number} m8\n * @returns {Matrix3}\n */\n set(m0, m1, m2, m3, m4, m5, m6, m7, m8) {\n const ret = wasm.matrix3_set(this.__wbg_ptr, m0, m1, m2, m3, m4, m5, m6, m7, m8);\n return Matrix3.__wrap(ret);\n }\n /**\n *\n * * Clone the Matrix3 instance and return a new one.\n *\n * @returns {Matrix3}\n */\n clone() {\n const ret = wasm.matrix3_clone(this.__wbg_ptr);\n return Matrix3.__wrap(ret);\n }\n /**\n *\n * * Sets the matrix element to create an identity matrix.\n *\n */\n identity() {\n wasm.matrix3_identity(this.__wbg_ptr);\n }\n /**\n *\n * * Determinant for a 3x3 matrix.\n * * https://en.wikipedia.org/wiki/Determinant\n *\n * @returns {number}\n */\n determinant() {\n const ret = wasm.matrix3_determinant(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {Matrix3}\n */\n adjucate() {\n const ret = wasm.matrix3_adjucate(this.__wbg_ptr);\n return Matrix3.__wrap(ret);\n }\n /**\n * @returns {Matrix3 | undefined}\n */\n inverse() {\n const ret = wasm.matrix3_inverse(this.__wbg_ptr);\n return ret === 0 ? undefined : Matrix3.__wrap(ret);\n }\n /**\n * @returns {Matrix3}\n */\n transpose() {\n const ret = wasm.matrix3_transpose(this.__wbg_ptr);\n return Matrix3.__wrap(ret);\n }\n}\n\nconst Matrix4Finalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_matrix4_free(ptr >>> 0, 1));\n/**\n *\n * * Matrix4 Module\n * * 2D Representation of a 4x4 Matrix\n * * It's a row-major matrix.\n *\n */\nexport class Matrix4 {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Matrix4.prototype);\n obj.__wbg_ptr = ptr;\n Matrix4Finalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n Matrix4Finalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_matrix4_free(ptr, 0);\n }\n /**\n * @returns {Float64Array}\n */\n get elements() {\n const ret = wasm.matrix4_elements(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n *\n * * Create a new Matrix4 with identity elements.\n *\n */\n constructor() {\n const ret = wasm.matrix4_new();\n this.__wbg_ptr = ret >>> 0;\n Matrix4Finalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {number} m0\n * @param {number} m1\n * @param {number} m2\n * @param {number} m3\n * @param {number} m4\n * @param {number} m5\n * @param {number} m6\n * @param {number} m7\n * @param {number} m8\n * @param {number} m9\n * @param {number} m10\n * @param {number} m11\n * @param {number} m12\n * @param {number} m13\n * @param {number} m14\n * @param {number} m15\n * @returns {Matrix4}\n */\n static set(m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) {\n const ret = wasm.matrix4_set(m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Clone the Matrix4 instance and return a new one.\n *\n * @returns {Matrix4}\n */\n clone() {\n const ret = wasm.matrix4_clone(this.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Sets the matrix element to create an identity matrix.\n *\n */\n identity() {\n wasm.matrix4_identity(this.__wbg_ptr);\n }\n /**\n *\n * * Determinant for a 4x4 matrix.\n * * https://en.wikipedia.org/wiki/Determinant\n *\n * @returns {number}\n */\n determinant() {\n const ret = wasm.matrix4_determinant(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {Matrix4}\n */\n adjucate() {\n const ret = wasm.matrix4_adjucate(this.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Inverse of a matrix\n * * Returns a new Matrix4 instance.\n * * If the determinant is zero, it returns a zero matrix.\n * * It can be checked with is_zero() method.\n *\n * @returns {Matrix4}\n */\n inverse() {\n const ret = wasm.matrix4_inverse(this.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Multiply this matrix with another Matrix4\n * * Returns a new Matrix4 instance\n *\n * @param {Matrix4} other\n * @returns {Matrix4}\n */\n multiply(other) {\n _assertClass(other, Matrix4);\n const ret = wasm.matrix4_multiply(this.__wbg_ptr, other.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Add another Matrix4 to this one.\n * * Returns a new Matrix4 instance with the result.\n *\n * @param {Matrix4} incoming\n * @returns {Matrix4}\n */\n add(incoming) {\n _assertClass(incoming, Matrix4);\n const ret = wasm.matrix4_add(this.__wbg_ptr, incoming.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Subtract another Matrix4 from this one.\n * * Returns a new Matrix4 instance with the result.\n *\n * @param {Matrix4} incoming\n * @returns {Matrix4}\n */\n subtract(incoming) {\n _assertClass(incoming, Matrix4);\n const ret = wasm.matrix4_subtract(this.__wbg_ptr, incoming.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Flatten the matrix into a vector of f64.\n *\n * @returns {Float64Array}\n */\n flatten() {\n const ret = wasm.matrix4_flatten(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n *\n * * Get the element at a specific index in the flattened matrix.\n *\n * @param {number} index\n * @returns {number | undefined}\n */\n get_element_at(index) {\n const ret = wasm.matrix4_get_element_at(this.__wbg_ptr, index);\n return ret[0] === 0 ? undefined : ret[1];\n }\n /**\n *\n * * Check if the matrix is a zero matrix.\n *\n * @returns {boolean}\n */\n is_zero() {\n const ret = wasm.matrix4_is_zero(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n *\n * * Check if the matrix is an identity matrix.\n *\n * @returns {boolean}\n */\n is_identity() {\n const ret = wasm.matrix4_is_identity(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n *\n * * Create a Transpose of the matrix.\n * * Returns a new Matrix4 instance.\n *\n * @returns {Matrix4}\n */\n transpose() {\n const ret = wasm.matrix4_transpose(this.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n}\n\nconst OGAnalyticBrepFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_oganalyticbrep_free(ptr >>> 0, 1));\n\nexport class OGAnalyticBrep {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGAnalyticBrep.prototype);\n obj.__wbg_ptr = ptr;\n OGAnalyticBrepFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGAnalyticBrepFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_oganalyticbrep_free(ptr, 0);\n }\n /**\n * @param {string} serialized\n */\n constructor(serialized) {\n const ptr0 = passStringToWasm0(serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_new(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0] >>> 0;\n OGAnalyticBrepFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {string} config_json\n * @returns {OGAnalyticBrep}\n */\n static from_primitive(config_json) {\n const ptr0 = passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_from_primitive(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGAnalyticBrep.__wrap(ret[0]);\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.oganalyticbrep_get_brep_serialized(this.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {string} length_unit\n * @returns {string}\n */\n export_step(length_unit) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(length_unit, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_export_step(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} frame_json\n * @param {number} scale\n * @returns {OGAnalyticBrep}\n */\n placed(frame_json, scale) {\n const ptr0 = passStringToWasm0(frame_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_placed(this.__wbg_ptr, ptr0, len0, scale);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGAnalyticBrep.__wrap(ret[0]);\n }\n /**\n * @returns {string}\n */\n prepare_ifc_exchange() {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.oganalyticbrep_prepare_ifc_exchange(this.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} face_id\n * @param {Float64Array} point\n * @returns {Float64Array}\n */\n face_normal_at(face_id, point) {\n const ptr0 = passArrayF64ToWasm0(point, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_face_normal_at(this.__wbg_ptr, face_id, ptr0, len0);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v2;\n }\n /**\n * @param {Float64Array} point\n * @returns {string}\n */\n classify_point(point) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passArrayF64ToWasm0(point, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_classify_point(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} camera_json\n * @param {string} hlr_json\n * @param {number} deflection\n * @returns {string}\n */\n project_to_2d_lines(camera_json, hlr_json, deflection) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_project_to_2d_lines(this.__wbg_ptr, ptr0, len0, ptr1, len1, deflection);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {OGAnalyticBrep} other\n * @param {string} operation\n * @param {string} id\n * @returns {OGAnalyticBrep}\n */\n boolean_brep(other, operation, id) {\n _assertClass(other, OGAnalyticBrep);\n const ptr0 = passStringToWasm0(operation, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_boolean_brep(this.__wbg_ptr, other.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGAnalyticBrep.__wrap(ret[0]);\n }\n /**\n * @param {number} thickness\n * @param {string} id\n * @returns {OGAnalyticBrep}\n */\n shell(thickness, id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_shell(this.__wbg_ptr, thickness, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGAnalyticBrep.__wrap(ret[0]);\n }\n /**\n * @returns {string | undefined}\n */\n get_boolean_report_serialized() {\n const ret = wasm.oganalyticbrep_get_boolean_report_serialized(this.__wbg_ptr);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @param {number} deflection\n * @returns {OGAnalyticTessellation}\n */\n tessellate(deflection) {\n const ret = wasm.oganalyticbrep_tessellate(this.__wbg_ptr, deflection);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGAnalyticTessellation.__wrap(ret[0]);\n }\n /**\n * @returns {number}\n */\n get_face_count() {\n const ret = wasm.oganalyticbrep_get_face_count(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get_edge_count() {\n const ret = wasm.oganalyticbrep_get_edge_count(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {string}\n */\n get_id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.oganalyticbrep_get_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_bounds() {\n const ret = wasm.oganalyticbrep_get_bounds(this.__wbg_ptr);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {number}\n */\n get_vertex_count() {\n const ret = wasm.oganalyticbrep_get_vertex_count(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {bigint}\n */\n get_revision() {\n const ret = wasm.oganalyticbrep_get_revision(this.__wbg_ptr);\n return BigInt.asUintN(64, ret);\n }\n}\n\nconst OGAnalyticTessellationFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_oganalytictessellation_free(ptr >>> 0, 1));\n\nexport class OGAnalyticTessellation {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGAnalyticTessellation.prototype);\n obj.__wbg_ptr = ptr;\n OGAnalyticTessellationFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGAnalyticTessellationFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_oganalytictessellation_free(ptr, 0);\n }\n /**\n * @returns {Float64Array}\n */\n positions() {\n const ret = wasm.oganalytictessellation_positions(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float32Array}\n */\n normals() {\n const ret = wasm.oganalytictessellation_normals(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Uint32Array}\n */\n indices() {\n const ret = wasm.oganalytictessellation_indices(this.__wbg_ptr);\n var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Uint32Array}\n */\n triangle_face_ids() {\n const ret = wasm.oganalytictessellation_triangle_face_ids(this.__wbg_ptr);\n var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n outline_positions() {\n const ret = wasm.oganalytictessellation_outline_positions(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Uint32Array}\n */\n outline_edge_ids() {\n const ret = wasm.oganalytictessellation_outline_edge_ids(this.__wbg_ptr);\n var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {bigint}\n */\n revision() {\n const ret = wasm.oganalytictessellation_revision(this.__wbg_ptr);\n return BigInt.asUintN(64, ret);\n }\n /**\n * @returns {number}\n */\n achieved_deflection() {\n const ret = wasm.oganalytictessellation_achieved_deflection(this.__wbg_ptr);\n return ret;\n }\n}\n\nconst OGArcFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogarc_free(ptr >>> 0, 1));\n\nexport class OGArc {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGArcFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogarc_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogarc_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogarc_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGArcFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} radius\n * @param {number} start_angle\n * @param {number} end_angle\n * @param {number} segments\n */\n set_config(center, radius, start_angle, end_angle, segments) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogarc_set_config(this.__wbg_ptr, ptr0, radius, start_angle, end_angle, segments);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogarc_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogarc_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogarc_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogarc_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogarc_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogarc_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n dispose_points() {\n wasm.ogarc_dispose_points(this.__wbg_ptr);\n }\n destroy() {\n wasm.ogarc_destroy(this.__wbg_ptr);\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogarc_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogarc_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogarc_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGCuboidFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogcuboid_free(ptr >>> 0, 1));\n\nexport class OGCuboid {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGCuboidFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogcuboid_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogcuboid_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogcuboid_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGCuboidFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} width\n * @param {number} height\n * @param {number} depth\n */\n set_config(center, width, height, depth) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogcuboid_set_config(this.__wbg_ptr, ptr0, width, height, depth);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogcuboid_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogcuboid_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogcuboid_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogcuboid_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogcuboid_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogcuboid_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogcuboid_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogcuboid_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogcuboid_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogcuboid_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogcuboid_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGCurveFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogcurve_free(ptr >>> 0, 1));\n\nexport class OGCurve {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGCurveFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogcurve_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogcurve_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogcurve_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGCurveFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3[]} control_points\n */\n set_config(control_points) {\n const ptr0 = passArrayJsValueToWasm0(control_points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogcurve_set_config(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogcurve_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogcurve_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogcurve_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogcurve_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogcurve_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogcurve_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogcurve_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogcurve_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogcurve_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogcurve_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {number} distance\n * @param {number} acute_threshold_degrees\n * @param {boolean} bevel\n * @returns {string}\n */\n get_offset_serialized(distance, acute_threshold_degrees, bevel) {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_offset_serialized(this.__wbg_ptr, distance, acute_threshold_degrees, bevel);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n dispose() {\n wasm.ogcurve_dispose(this.__wbg_ptr);\n }\n}\n\nconst OGCylinderFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogcylinder_free(ptr >>> 0, 1));\n\nexport class OGCylinder {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGCylinderFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogcylinder_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogcylinder_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogcylinder_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGCylinderFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} radius\n * @param {number} height\n * @param {number} angle\n * @param {number} segments\n */\n set_config(center, radius, height, angle, segments) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogcylinder_set_config(this.__wbg_ptr, ptr0, radius, height, angle, segments);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogcylinder_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogcylinder_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogcylinder_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogcylinder_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogcylinder_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_brep() {\n const ret = wasm.ogcylinder_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogcylinder_clean_geometry(this.__wbg_ptr);\n }\n generate_geometry() {\n const ret = wasm.ogcylinder_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogcylinder_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogcylinder_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogcylinder_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogcylinder_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogcylinder_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGEllipticalArcFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogellipticalarc_free(ptr >>> 0, 1));\n\nexport class OGEllipticalArc {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGEllipticalArcFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogellipticalarc_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogellipticalarc_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogellipticalarc_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogellipticalarc_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGEllipticalArcFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} radius_x\n * @param {number} radius_z\n * @param {number} start_angle\n * @param {number} end_angle\n * @param {number} segments\n */\n set_config(center, radius_x, radius_z, start_angle, end_angle, segments) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogellipticalarc_set_config(this.__wbg_ptr, ptr0, radius_x, radius_z, start_angle, end_angle, segments);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogellipticalarc_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogellipticalarc_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogellipticalarc_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogellipticalarc_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogellipticalarc_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogellipticalarc_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n dispose_points() {\n wasm.ogellipticalarc_dispose_points(this.__wbg_ptr);\n }\n destroy() {\n wasm.ogellipticalarc_destroy(this.__wbg_ptr);\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogellipticalarc_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogellipticalarc_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogellipticalarc_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogellipticalarc_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogellipticalarc_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogellipticalarc_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogellipticalarc_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGEntityRegistryFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogentityregistry_free(ptr >>> 0, 1));\n/**\n * Flat entity registry with a batched multi-view projection API.\n * Replaces the scene-centric OGSceneManager pattern for export use cases.\n */\nexport class OGEntityRegistry {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGEntityRegistryFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogentityregistry_free(ptr, 0);\n }\n constructor() {\n const ret = wasm.ogentityregistry_new();\n this.__wbg_ptr = ret >>> 0;\n OGEntityRegistryFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * Register (or replace) an entity. `kind` must be an OGEntityKind string.\n * @param {string} id\n * @param {string} kind\n * @param {string} brep_json\n */\n registerEntity(id, kind, brep_json) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(brep_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogentityregistry_registerEntity(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * Remove a previously registered entity.\n * @param {string} id\n * @returns {boolean}\n */\n unregisterEntity(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogentityregistry_unregisterEntity(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Remove all registered entities.\n */\n clearEntities() {\n wasm.ogentityregistry_clearEntities(this.__wbg_ptr);\n }\n /**\n * Batched multi-view projection.\n *\n * Input: JSON array of `{ id, camera, hlr?, section_plane? }` (ViewRequest).\n * Output: JSON map of `{ viewportId: Scene2D }`.\n *\n * All viewports are projected in a single WASM call, amortising\n * serialisation overhead and keeping BRep data in WASM memory.\n * @param {string} views_json\n * @returns {string}\n */\n projectCurrentToViews(views_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(views_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogentityregistry_projectCurrentToViews(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n}\n\nconst OGFreeformEditorFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogfreeformeditor_free(ptr >>> 0, 1));\n\nexport class OGFreeformEditor {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGFreeformEditorFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogfreeformeditor_free(ptr, 0);\n }\n constructor() {\n const ret = wasm.ogfreeformeditor_new();\n this.__wbg_ptr = ret >>> 0;\n OGFreeformEditorFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @returns {string}\n */\n getTopologyRenderData(geometry) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getTopologyRenderData(this.__wbg_ptr, geometry.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @returns {string}\n */\n getFaceInfo(geometry, face_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getFaceInfo(this.__wbg_ptr, geometry.__wbg_ptr, face_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @returns {string}\n */\n getEdgeInfo(geometry, edge_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getEdgeInfo(this.__wbg_ptr, geometry.__wbg_ptr, edge_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} vertex_id\n * @returns {string}\n */\n getVertexInfo(geometry, vertex_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getVertexInfo(this.__wbg_ptr, geometry.__wbg_ptr, vertex_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @returns {string}\n */\n getEditCapabilities(geometry) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getEditCapabilities(this.__wbg_ptr, geometry.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @returns {string}\n */\n getFaceEditCapabilities(geometry, face_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getFaceEditCapabilities(this.__wbg_ptr, geometry.__wbg_ptr, face_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @returns {string}\n */\n getEdgeEditCapabilities(geometry, edge_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getEdgeEditCapabilities(this.__wbg_ptr, geometry.__wbg_ptr, edge_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} vertex_id\n * @returns {string}\n */\n getVertexEditCapabilities(geometry, vertex_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getVertexEditCapabilities(this.__wbg_ptr, geometry.__wbg_ptr, vertex_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @param {number} distance\n * @param {string | null} [options_json]\n * @returns {string}\n */\n pushPullFace(geometry, face_id, distance, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_pushPullFace(this.__wbg_ptr, geometry.__wbg_ptr, face_id, distance, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @param {Vector3} translation\n * @param {string | null} [options_json]\n * @returns {string}\n */\n moveFace(geometry, face_id, translation, options_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n var ptr1 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_moveFace(this.__wbg_ptr, geometry.__wbg_ptr, face_id, ptr0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @param {Vector3} translation\n * @param {string | null} [options_json]\n * @returns {string}\n */\n moveEdge(geometry, edge_id, translation, options_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n var ptr1 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_moveEdge(this.__wbg_ptr, geometry.__wbg_ptr, edge_id, ptr0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} vertex_id\n * @param {Vector3} translation\n * @param {string | null} [options_json]\n * @returns {string}\n */\n moveVertex(geometry, vertex_id, translation, options_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n var ptr1 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_moveVertex(this.__wbg_ptr, geometry.__wbg_ptr, vertex_id, ptr0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @param {number} distance\n * @param {string | null} [options_json]\n * @returns {string}\n */\n extrudeFace(geometry, face_id, distance, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_extrudeFace(this.__wbg_ptr, geometry.__wbg_ptr, face_id, distance, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @param {number} start_edge_id\n * @param {number} start_t\n * @param {number} end_edge_id\n * @param {number} end_t\n * @param {string | null} [options_json]\n * @returns {string}\n */\n cutFace(geometry, face_id, start_edge_id, start_t, end_edge_id, end_t, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_cutFace(this.__wbg_ptr, geometry.__wbg_ptr, face_id, start_edge_id, start_t, end_edge_id, end_t, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @param {number} t\n * @param {string | null} [options_json]\n * @returns {string}\n */\n insertVertexOnEdge(geometry, edge_id, t, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_insertVertexOnEdge(this.__wbg_ptr, geometry.__wbg_ptr, edge_id, t, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @param {number} t\n * @param {string | null} [options_json]\n * @returns {string}\n */\n splitEdge(geometry, edge_id, t, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_splitEdge(this.__wbg_ptr, geometry.__wbg_ptr, edge_id, t, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @param {number} t\n * @param {string | null} [options_json]\n * @returns {string}\n */\n loopCut(geometry, edge_id, t, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_loopCut(this.__wbg_ptr, geometry.__wbg_ptr, edge_id, t, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} vertex_id\n * @param {string | null} [options_json]\n * @returns {string}\n */\n removeVertex(geometry, vertex_id, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_removeVertex(this.__wbg_ptr, geometry.__wbg_ptr, vertex_id, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n}\n\nconst OGFreeformGeometryFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogfreeformgeometry_free(ptr >>> 0, 1));\n\nexport class OGFreeformGeometry {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGFreeformGeometryFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogfreeformgeometry_free(ptr, 0);\n }\n /**\n * @param {string} id\n * @param {string} local_brep_serialized\n */\n constructor(id, local_brep_serialized) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(local_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformgeometry_new(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0] >>> 0;\n OGFreeformGeometryFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n getBrepSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getBrepSerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n getLocalBrepSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getLocalBrepSerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n getGeometrySerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getGeometrySerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n getGeometryBuffer() {\n const ret = wasm.ogfreeformgeometry_getGeometryBuffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n getLocalGeometryBuffer() {\n const ret = wasm.ogfreeformgeometry_getLocalGeometryBuffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n getOutlineGeometrySerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getOutlineGeometrySerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n getOutlineGeometryBuffer() {\n const ret = wasm.ogfreeformgeometry_getOutlineGeometryBuffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n getLocalOutlineGeometryBuffer() {\n const ret = wasm.ogfreeformgeometry_getLocalOutlineGeometryBuffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n getPlacementSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getPlacementSerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} placement_serialized\n */\n setPlacementSerialized(placement_serialized) {\n const ptr0 = passStringToWasm0(placement_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformgeometry_setPlacementSerialized(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n setTransform(translation, rotation, scale) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogfreeformgeometry_setTransform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n setTranslation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogfreeformgeometry_setTranslation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n setRotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogfreeformgeometry_setRotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n setScale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogfreeformgeometry_setScale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} anchor\n */\n setAnchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n wasm.ogfreeformgeometry_setAnchor(this.__wbg_ptr, ptr0);\n }\n}\n\nconst OGIfcExportResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogifcexportresult_free(ptr >>> 0, 1));\n\nexport class OGIfcExportResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGIfcExportResult.prototype);\n obj.__wbg_ptr = ptr;\n OGIfcExportResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGIfcExportResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogifcexportresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get text() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogifcexportresult_text(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get reportJson() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogifcexportresult_reportJson(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGLineFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogline_free(ptr >>> 0, 1));\n\nexport class OGLine {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGLineFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogline_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogline_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogline_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGLineFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} start\n * @param {Vector3} end\n */\n set_config(start, end) {\n _assertClass(start, Vector3);\n var ptr0 = start.__destroy_into_raw();\n _assertClass(end, Vector3);\n var ptr1 = end.__destroy_into_raw();\n const ret = wasm.ogline_set_config(this.__wbg_ptr, ptr0, ptr1);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogline_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogline_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogline_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogline_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogline_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n dispose_points() {\n wasm.ogline_dispose_points(this.__wbg_ptr);\n }\n destroy() {\n wasm.ogline_destroy(this.__wbg_ptr);\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogline_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogline_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogline_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogline_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogline_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {number} distance\n * @param {number} acute_threshold_degrees\n * @param {boolean} bevel\n * @returns {string}\n */\n get_offset_serialized(distance, acute_threshold_degrees, bevel) {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_offset_serialized(this.__wbg_ptr, distance, acute_threshold_degrees, bevel);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_dxf_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_dxf_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGOffsetRegionsResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogoffsetregionsresult_free(ptr >>> 0, 1));\n/**\n * Result payload for a polyline offset: a list of regions (each an outer ring +\n * inner-void holes). Normally one region; a self-crossing closed centreline (e.g.\n * a figure-8) yields one per simple sub-loop. The deterministic analytic offset —\n * no extrude/solid. Used to build the plan polygons + extruded base solids in JS.\n */\nexport class OGOffsetRegionsResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGOffsetRegionsResult.prototype);\n obj.__wbg_ptr = ptr;\n OGOffsetRegionsResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGOffsetRegionsResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogoffsetregionsresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get regionsSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogoffsetregionsresult_regionsSerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGPolygonFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogpolygon_free(ptr >>> 0, 1));\n\nexport class OGPolygon {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGPolygonFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogpolygon_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogpolygon_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolygon_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGPolygonFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3[]} points\n */\n set_config(points) {\n const ptr0 = passArrayJsValueToWasm0(points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolygon_set_config(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogpolygon_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogpolygon_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogpolygon_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogpolygon_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3[]} vertices\n */\n add_vertices(vertices) {\n const ptr0 = passArrayJsValueToWasm0(vertices, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolygon_add_vertices(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3[]} hole\n */\n add_holes(hole) {\n const ptr0 = passArrayJsValueToWasm0(hole, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolygon_add_holes(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogpolygon_clean_geometry(this.__wbg_ptr);\n }\n generate_brep() {\n const ret = wasm.ogpolygon_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogpolygon_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogpolygon_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogpolygon_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogpolygon_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogpolygon_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogpolygon_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogpolygon_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogpolygon_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\n\nconst OGPolylineFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogpolyline_free(ptr >>> 0, 1));\n\nexport class OGPolyline {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGPolyline.prototype);\n obj.__wbg_ptr = ptr;\n OGPolylineFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGPolylineFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogpolyline_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogpolyline_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolyline_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGPolylineFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @returns {OGPolyline}\n */\n clone() {\n const ret = wasm.ogpolyline_clone(this.__wbg_ptr);\n return OGPolyline.__wrap(ret);\n }\n /**\n * @param {Vector3[]} points\n */\n set_config(points) {\n const ptr0 = passArrayJsValueToWasm0(points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolyline_set_config(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogpolyline_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogpolyline_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogpolyline_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogpolyline_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogpolyline_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3[]} points\n */\n add_multiple_points(points) {\n const ptr0 = passArrayJsValueToWasm0(points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolyline_add_multiple_points(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} point\n */\n add_point(point) {\n _assertClass(point, Vector3);\n var ptr0 = point.__destroy_into_raw();\n const ret = wasm.ogpolyline_add_point(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_points() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_points(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Vector3[]}\n */\n get_raw_points() {\n const ret = wasm.ogpolyline_get_raw_points(this.__wbg_ptr);\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {boolean}\n */\n is_closed() {\n const ret = wasm.ogpolyline_is_closed(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {number} distance\n * @param {number} acute_threshold_degrees\n * @param {boolean} bevel\n * @returns {string}\n */\n get_offset_serialized(distance, acute_threshold_degrees, bevel) {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_offset_serialized(this.__wbg_ptr, distance, acute_threshold_degrees, bevel);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n check_closed_test() {\n wasm.ogpolyline_check_closed_test(this.__wbg_ptr);\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogpolyline_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogpolyline_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogline_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogpolyline_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogpolyline_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\n\nconst OGRectangleFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogrectangle_free(ptr >>> 0, 1));\n\nexport class OGRectangle {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGRectangleFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogrectangle_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogrectangle_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogrectangle_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGRectangleFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} width\n * @param {number} breadth\n */\n set_config(center, width, breadth) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogrectangle_set_config(this.__wbg_ptr, ptr0, width, breadth);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogrectangle_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogrectangle_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogrectangle_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogrectangle_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogrectangle_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogrectangle_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogrectangle_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogrectangle_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogrectangle_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {number} distance\n * @param {number} acute_threshold_degrees\n * @param {boolean} bevel\n * @returns {string}\n */\n get_offset_serialized(distance, acute_threshold_degrees, bevel) {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_offset_serialized(this.__wbg_ptr, distance, acute_threshold_degrees, bevel);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGSceneManagerFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogscenemanager_free(ptr >>> 0, 1));\n\nexport class OGSceneManager {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGSceneManagerFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogscenemanager_free(ptr, 0);\n }\n constructor() {\n const ret = wasm.ogscenemanager_new();\n this.__wbg_ptr = ret >>> 0;\n OGSceneManagerFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {string} name\n * @returns {string}\n */\n createScene(name) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_createScene(this.__wbg_ptr, ptr0, len0);\n deferred2_0 = ret[0];\n deferred2_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @returns {boolean}\n */\n removeScene(scene_id) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_removeScene(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * @param {string} scene_id\n */\n setCurrentScene(scene_id) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_setCurrentScene(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string | undefined}\n */\n getCurrentSceneId() {\n const ret = wasm.ogscenemanager_getCurrentSceneId(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {string}\n */\n listScenes() {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.ogscenemanager_listScenes(this.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @returns {string}\n */\n getSceneSerialized(scene_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_getSceneSerialized(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @returns {boolean}\n */\n removeEntityFromScene(scene_id, entity_id) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_removeEntityFromScene(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] !== 0;\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n addBrepEntityToScene(scene_id, entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_addBrepEntityToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n addBrepEntityToCurrentScene(entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_addBrepEntityToCurrentScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n replaceBrepEntityInScene(scene_id, entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_replaceBrepEntityInScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n replaceBrepEntityInCurrentScene(entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_replaceBrepEntityInCurrentScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n refreshBrepEntityInScene(scene_id, entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_refreshBrepEntityInScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n refreshBrepEntityInCurrentScene(entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_refreshBrepEntityInCurrentScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGLine} line\n */\n addLineToScene(scene_id, entity_id, line) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(line, OGLine);\n const ret = wasm.ogscenemanager_addLineToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, line.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGLine} line\n */\n addLineToCurrentScene(entity_id, line) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(line, OGLine);\n const ret = wasm.ogscenemanager_addLineToCurrentScene(this.__wbg_ptr, ptr0, len0, line.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGPolyline} polyline\n */\n addPolylineToScene(scene_id, entity_id, polyline) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(polyline, OGPolyline);\n const ret = wasm.ogscenemanager_addPolylineToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, polyline.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGPolyline} polyline\n */\n addPolylineToCurrentScene(entity_id, polyline) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(polyline, OGPolyline);\n const ret = wasm.ogscenemanager_addPolylineToCurrentScene(this.__wbg_ptr, ptr0, len0, polyline.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGArc} arc\n */\n addArcToScene(scene_id, entity_id, arc) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(arc, OGArc);\n const ret = wasm.ogscenemanager_addArcToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, arc.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGArc} arc\n */\n addArcToCurrentScene(entity_id, arc) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(arc, OGArc);\n const ret = wasm.ogscenemanager_addArcToCurrentScene(this.__wbg_ptr, ptr0, len0, arc.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGRectangle} rectangle\n */\n addRectangleToScene(scene_id, entity_id, rectangle) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(rectangle, OGRectangle);\n const ret = wasm.ogscenemanager_addRectangleToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, rectangle.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGRectangle} rectangle\n */\n addRectangleToCurrentScene(entity_id, rectangle) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(rectangle, OGRectangle);\n const ret = wasm.ogscenemanager_addRectangleToCurrentScene(this.__wbg_ptr, ptr0, len0, rectangle.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGPolygon} polygon\n */\n addPolygonToScene(scene_id, entity_id, polygon) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(polygon, OGPolygon);\n const ret = wasm.ogscenemanager_addPolygonToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, polygon.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGPolygon} polygon\n */\n addPolygonToCurrentScene(entity_id, polygon) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(polygon, OGPolygon);\n const ret = wasm.ogscenemanager_addPolygonToCurrentScene(this.__wbg_ptr, ptr0, len0, polygon.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGCuboid} cuboid\n */\n addCuboidToScene(scene_id, entity_id, cuboid) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(cuboid, OGCuboid);\n const ret = wasm.ogscenemanager_addCuboidToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, cuboid.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGCuboid} cuboid\n */\n addCuboidToCurrentScene(entity_id, cuboid) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(cuboid, OGCuboid);\n const ret = wasm.ogscenemanager_addCuboidToCurrentScene(this.__wbg_ptr, ptr0, len0, cuboid.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGCylinder} cylinder\n */\n addCylinderToScene(scene_id, entity_id, cylinder) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(cylinder, OGCylinder);\n const ret = wasm.ogscenemanager_addCylinderToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, cylinder.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGCylinder} cylinder\n */\n addCylinderToCurrentScene(entity_id, cylinder) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(cylinder, OGCylinder);\n const ret = wasm.ogscenemanager_addCylinderToCurrentScene(this.__wbg_ptr, ptr0, len0, cylinder.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGSphere} sphere\n */\n addSphereToScene(scene_id, entity_id, sphere) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(sphere, OGSphere);\n const ret = wasm.ogscenemanager_addSphereToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, sphere.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGSphere} sphere\n */\n addSphereToCurrentScene(entity_id, sphere) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(sphere, OGSphere);\n const ret = wasm.ogscenemanager_addSphereToCurrentScene(this.__wbg_ptr, ptr0, len0, sphere.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGWedge} wedge\n */\n addWedgeToScene(scene_id, entity_id, wedge) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(wedge, OGWedge);\n const ret = wasm.ogscenemanager_addWedgeToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, wedge.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGWedge} wedge\n */\n addWedgeToCurrentScene(entity_id, wedge) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(wedge, OGWedge);\n const ret = wasm.ogscenemanager_addWedgeToCurrentScene(this.__wbg_ptr, ptr0, len0, wedge.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectTo2DCamera(scene_id, camera_json, hlr_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectTo2DCamera(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectTo2DCameraPretty(scene_id, camera_json, hlr_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectTo2DCameraPretty(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectTo2DLines(scene_id, camera_json, hlr_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectTo2DLines(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectTo2DLinesPretty(scene_id, camera_json, hlr_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectTo2DLinesPretty(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectCurrentTo2DCamera(camera_json, hlr_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectCurrentTo2DCamera(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectCurrentTo2DLines(camera_json, hlr_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectCurrentTo2DLines(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {string} brep_serialized\n * @param {string | null} [config_json]\n * @returns {OGStlExportResult}\n */\n exportBrepToStl(brep_serialized, config_json) {\n const ptr0 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportBrepToStl(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStlExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} scene_id\n * @param {string | null} [config_json]\n * @returns {OGStlExportResult}\n */\n exportSceneToStl(scene_id, config_json) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportSceneToStl(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStlExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string | null} [config_json]\n * @returns {OGStlExportResult}\n */\n exportCurrentSceneToStl(config_json) {\n var ptr0 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportCurrentSceneToStl(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStlExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} brep_serialized\n * @param {string | null} [config_json]\n * @returns {OGStepExportResult}\n */\n exportBrepToStep(brep_serialized, config_json) {\n const ptr0 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportBrepToStep(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStepExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} scene_id\n * @param {string | null} [config_json]\n * @returns {OGStepExportResult}\n */\n exportSceneToStep(scene_id, config_json) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportSceneToStep(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStepExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string | null} [config_json]\n * @returns {OGStepExportResult}\n */\n exportCurrentSceneToStep(config_json) {\n var ptr0 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportCurrentSceneToStep(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStepExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} brep_serialized\n * @param {string | null} [config_json]\n * @returns {OGIfcExportResult}\n */\n exportBrepToIfc(brep_serialized, config_json) {\n const ptr0 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportBrepToIfc(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGIfcExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} scene_id\n * @param {string | null} [config_json]\n * @returns {OGIfcExportResult}\n */\n exportSceneToIfc(scene_id, config_json) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportSceneToIfc(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGIfcExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string | null} [config_json]\n * @returns {OGIfcExportResult}\n */\n exportCurrentSceneToIfc(config_json) {\n var ptr0 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportCurrentSceneToIfc(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGIfcExportResult.__wrap(ret[0]);\n }\n}\n\nconst OGSphereFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogsphere_free(ptr >>> 0, 1));\n\nexport class OGSphere {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGSphereFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogsphere_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogsphere_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogsphere_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGSphereFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} radius\n * @param {number} width_segments\n * @param {number} height_segments\n */\n set_config(center, radius, width_segments, height_segments) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogsphere_set_config(this.__wbg_ptr, ptr0, radius, width_segments, height_segments);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogsphere_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogsphere_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogsphere_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogsphere_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogsphere_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_brep() {\n const ret = wasm.ogsphere_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogsphere_clean_geometry(this.__wbg_ptr);\n }\n generate_geometry() {\n const ret = wasm.ogsphere_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogsphere_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogsphere_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogsphere_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogsphere_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogsphere_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGStepExportResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogstepexportresult_free(ptr >>> 0, 1));\n\nexport class OGStepExportResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGStepExportResult.prototype);\n obj.__wbg_ptr = ptr;\n OGStepExportResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGStepExportResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogstepexportresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get text() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogstepexportresult_text(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get reportJson() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogstepexportresult_reportJson(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGStlExportResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogstlexportresult_free(ptr >>> 0, 1));\n\nexport class OGStlExportResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGStlExportResult.prototype);\n obj.__wbg_ptr = ptr;\n OGStlExportResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGStlExportResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogstlexportresult_free(ptr, 0);\n }\n /**\n * @returns {Uint8Array}\n */\n get bytes() {\n const ret = wasm.ogstlexportresult_bytes(this.__wbg_ptr);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n }\n /**\n * @returns {string}\n */\n get reportJson() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogstlexportresult_reportJson(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGSweepFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogsweep_free(ptr >>> 0, 1));\n\nexport class OGSweep {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGSweepFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogsweep_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogsweep_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogsweep_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGSweepFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3[]} path_points\n * @param {Vector3[]} profile_points\n */\n set_config(path_points, profile_points) {\n const ptr0 = passArrayJsValueToWasm0(path_points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayJsValueToWasm0(profile_points, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogsweep_set_config(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3[]} path_points\n * @param {Vector3[]} profile_points\n * @param {boolean} cap_start\n * @param {boolean} cap_end\n */\n set_config_with_caps(path_points, profile_points, cap_start, cap_end) {\n const ptr0 = passArrayJsValueToWasm0(path_points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayJsValueToWasm0(profile_points, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogsweep_set_config_with_caps(this.__wbg_ptr, ptr0, len0, ptr1, len1, cap_start, cap_end);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {boolean} cap_start\n * @param {boolean} cap_end\n */\n set_caps(cap_start, cap_end) {\n const ret = wasm.ogsweep_set_caps(this.__wbg_ptr, cap_start, cap_end);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogsweep_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogsweep_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogsweep_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogsweep_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_brep() {\n const ret = wasm.ogsweep_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogsweep_clean_geometry(this.__wbg_ptr);\n }\n generate_geometry() {\n const ret = wasm.ogsweep_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogsweep_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogsweep_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogsweep_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogsweep_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogcurve_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogsweep_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogsweep_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\n\nconst OGWedgeFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogwedge_free(ptr >>> 0, 1));\n\nexport class OGWedge {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGWedgeFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogwedge_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogwedge_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogwedge_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGWedgeFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} width\n * @param {number} height\n * @param {number} depth\n */\n set_config(center, width, height, depth) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogwedge_set_config(this.__wbg_ptr, ptr0, width, height, depth);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogwedge_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogwedge_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogwedge_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogwedge_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogwedge_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_brep() {\n const ret = wasm.ogwedge_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogwedge_clean_geometry(this.__wbg_ptr);\n }\n generate_geometry() {\n const ret = wasm.ogwedge_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogwedge_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogwedge_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogwedge_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogwedge_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogellipticalarc_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst Vector3Finalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_vector3_free(ptr >>> 0, 1));\n\nexport class Vector3 {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Vector3.prototype);\n obj.__wbg_ptr = ptr;\n Vector3Finalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n static __unwrap(jsValue) {\n if (!(jsValue instanceof Vector3)) {\n return 0;\n }\n return jsValue.__destroy_into_raw();\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n Vector3Finalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_vector3_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get x() {\n const ret = wasm.__wbg_get_vector3_x(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set x(arg0) {\n wasm.__wbg_set_vector3_x(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get y() {\n const ret = wasm.__wbg_get_vector3_y(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set y(arg0) {\n wasm.__wbg_set_vector3_y(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get z() {\n const ret = wasm.__wbg_get_vector3_z(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set z(arg0) {\n wasm.__wbg_set_vector3_z(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} x\n * @param {number} y\n * @param {number} z\n */\n constructor(x, y, z) {\n const ret = wasm.vector3_new(x, y, z);\n this.__wbg_ptr = ret >>> 0;\n Vector3Finalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n *\n * * Add the elements of another vector to this one.\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n add(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_add(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Add a scalar value to each element of the vector.\n *\n * @param {number} scalar\n * @returns {Vector3}\n */\n add_scalar(scalar) {\n const ret = wasm.vector3_add_scalar(this.__wbg_ptr, scalar);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Subtract the elements of another vector from this one.\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n subtract(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_subtract(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Subtract a scalar value from each element of the vector.\n *\n * @param {number} scalar\n * @returns {Vector3}\n */\n subtract_scalar(scalar) {\n const ret = wasm.vector3_subtract_scalar(this.__wbg_ptr, scalar);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Clone the Vector3 instance and return a new one.\n *\n * @returns {Vector3}\n */\n clone() {\n const ret = wasm.vector3_clone(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Set the current vector elements to zero.\n *\n */\n zero() {\n wasm.vector3_zero(this.__wbg_ptr);\n }\n /**\n *\n * * Copy the elements from another Vector3 instance.\n *\n * @param {Vector3} other\n */\n copy(other) {\n _assertClass(other, Vector3);\n wasm.vector3_copy(this.__wbg_ptr, other.__wbg_ptr);\n }\n /**\n *\n * * Multiply the vector by a scalar value.\n *\n * @param {number} scalar\n * @returns {Vector3}\n */\n multiply_scalar(scalar) {\n const ret = wasm.vector3_multiply_scalar(this.__wbg_ptr, scalar);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Multiply the vector by another Vector3 instance element-wise.\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n multiply(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_multiply(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Divide the vector by another Vector3 instance element-wise.\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n divide(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_divide(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Divide the vector by a scalar value.\n *\n * @param {number} scalar\n * @returns {Vector3}\n */\n divide_scalar(scalar) {\n const ret = wasm.vector3_divide_scalar(this.__wbg_ptr, scalar);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Invert the vector by negating the vector elements.\n *\n * @returns {Vector3}\n */\n negate() {\n const ret = wasm.vector3_negate(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Calculate the dot product of this vector with another Vector3 instance.\n *\n * @param {Vector3} other\n * @returns {number}\n */\n dot(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_dot(this.__wbg_ptr, other.__wbg_ptr);\n return ret;\n }\n /**\n *\n * * Calculate the magnitude (length) of the vector.\n *\n * @returns {number}\n */\n magnitude() {\n const ret = wasm.vector3_magnitude(this.__wbg_ptr);\n return ret;\n }\n /**\n *\n * * Calculate the length of the vector.\n * * Since length is equivalent to magnitude, this method is an alias.\n *\n * @returns {number}\n */\n length() {\n const ret = wasm.vector3_length(this.__wbg_ptr);\n return ret;\n }\n /**\n *\n * * Normalize the vector\n *\n * @returns {Vector3}\n */\n normalize() {\n const ret = wasm.vector3_normalize(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Calculate the cross product and return the result as a new Vector3\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n cross(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_cross(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Calculate the distance between this vector and another Vector3 instance.\n * * Return the distance as a f64 value in Euclidean space.\n *\n * @param {Vector3} other\n * @returns {number}\n */\n distance(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_distance(this.__wbg_ptr, other.__wbg_ptr);\n return ret;\n }\n /**\n *\n * * Apply a transformation matrix to the vector.\n * * This method assumes the transformation matrix is a 4x4 matrix.\n *\n * @param {Matrix4} matrix\n */\n apply_matrix4(matrix) {\n _assertClass(matrix, Matrix4);\n var ptr0 = matrix.__destroy_into_raw();\n wasm.vector3_apply_matrix4(this.__wbg_ptr, ptr0);\n }\n}\n\nconst WorkPlaneFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_workplane_free(ptr >>> 0, 1));\n\nexport class WorkPlane {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(WorkPlane.prototype);\n obj.__wbg_ptr = ptr;\n WorkPlaneFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WorkPlaneFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_workplane_free(ptr, 0);\n }\n /**\n * Builds a work plane from an origin and normal, choosing a stable in-plane\n * `u` axis automatically (`v = normal × u`).\n * @param {Vector3} origin\n * @param {Vector3} normal\n * @returns {WorkPlane}\n */\n static fromOriginNormal(origin, normal) {\n _assertClass(origin, Vector3);\n var ptr0 = origin.__destroy_into_raw();\n _assertClass(normal, Vector3);\n var ptr1 = normal.__destroy_into_raw();\n const ret = wasm.workplane_fromOriginNormal(ptr0, ptr1);\n return WorkPlane.__wrap(ret);\n }\n /**\n * Builds a work plane from an origin, normal, and a preferred `u` axis. The\n * `u` axis is projected onto the plane and orthonormalized; `v = normal × u`.\n * @param {Vector3} origin\n * @param {Vector3} normal\n * @param {Vector3} u_hint\n */\n constructor(origin, normal, u_hint) {\n _assertClass(origin, Vector3);\n var ptr0 = origin.__destroy_into_raw();\n _assertClass(normal, Vector3);\n var ptr1 = normal.__destroy_into_raw();\n _assertClass(u_hint, Vector3);\n var ptr2 = u_hint.__destroy_into_raw();\n const ret = wasm.workplane_new(ptr0, ptr1, ptr2);\n this.__wbg_ptr = ret >>> 0;\n WorkPlaneFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * Lifts a single 2D in-plane coordinate to 3D world space.\n * @param {number} u\n * @param {number} v\n * @returns {Vector3}\n */\n liftPoint(u, v) {\n const ret = wasm.workplane_liftPoint(this.__wbg_ptr, u, v);\n return Vector3.__wrap(ret);\n }\n /**\n * Lifts a flat `[u0,v0,u1,v1,…]` buffer to a flat `[x0,y0,z0,…]` world buffer.\n * @param {Float64Array} uv\n * @returns {Float64Array}\n */\n liftPoints(uv) {\n const ptr0 = passArrayF64ToWasm0(uv, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.workplane_liftPoints(this.__wbg_ptr, ptr0, len0);\n var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v2;\n }\n /**\n * @returns {Vector3}\n */\n get origin() {\n const ret = wasm.ogline_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @returns {Vector3}\n */\n get normal() {\n const ret = wasm.workplane_normal(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_getRandomValues_38097e921c2494c3 = function() { return handleError(function (arg0, arg1) {\n globalThis.crypto.getRandomValues(getArrayU8FromWasm0(arg0, arg1));\n }, arguments) };\n imports.wbg.__wbg_vector3_new = function(arg0) {\n const ret = Vector3.__wrap(arg0);\n return ret;\n };\n imports.wbg.__wbg_vector3_unwrap = function(arg0) {\n const ret = Vector3.__unwrap(arg0);\n return ret;\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_2;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedFloat64ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('opengeometry_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","import { CSS2DObject } from \"three/examples/jsm/renderers/CSS2DRenderer.js\";\n\nfunction spotLabelElement() {\n const spotLabelElement = document.createElement(\"div\");\n spotLabelElement.style.position = \"absolute\";\n spotLabelElement.style.width = \"3px\";\n spotLabelElement.style.height = \"3px\";\n spotLabelElement.style.backgroundColor = \"blue\";\n spotLabelElement.style.pointerEvents = \"none\";\n // spotLabelElement.style.borderRadius = \"50%\";\n spotLabelElement.style.border = \"1px solid black\";\n return spotLabelElement;\n}\n\nexport class SpotLabel extends CSS2DObject {\n constructor() {\n const spotLabel = spotLabelElement();\n super(spotLabel);\n }\n}\n","/**\n * Version string exposed by the Three.js adapter at runtime.\n */\nexport const OPEN_GEOMETRY_THREE_VERSION = \"2.0.3\";\n\n/**\n * Options accepted when initializing the OpenGeometry runtime.\n * - `wasmURL`: Optional URL to the OpenGeometry wasm binary. If not provided, it defaults to a relative path.\n * - `debugMeshes`: Optional flag to enable debug meshes for visualizing geometry. Defaults to `false`.\n */\nexport interface OpenGeometryOptions {\n wasmURL?: string;\n debugMeshes?: boolean;\n}\n","import validate from './validate.js';\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n //\n // Note to future-self: No, you can't remove the `toLowerCase()` call.\n // REF: https://github.com/uuidjs/uuid/pull/677#issuecomment-1757351351\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n var uuid = unsafeStringify(arr, offset);\n // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n return getRandomValues(rnds8);\n}","var randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n offset = offset || 0;\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;","import { v4 as uuidv4 } from 'uuid';\n\nexport function getUUID() {\n const uuid = uuidv4();\n return uuid;\n}\n","export interface AnalyticTessellationData {\n positions: Float64Array;\n normals: Float32Array;\n indices: Uint32Array;\n triangleFaceIds: Uint32Array;\n outlinePositions: Float64Array;\n outlineEdgeIds: Uint32Array;\n revision: bigint;\n achievedDeflection: number;\n}\n\nexport const GEOMETRY_DEFLECTION_SHARE = 0.75;\n\nexport interface AnalyticWorkerOptions {\n workerURL: string | URL;\n kernelURL: string | URL;\n wasmURL: string | URL;\n}\n\ninterface Pending {\n resolve: (value: unknown) => void;\n reject: (reason: Error) => void;\n handle?: string;\n generation?: number;\n}\n\nexport class AnalyticTessellationWorker {\n private readonly worker: Worker;\n private readonly pending = new Map<number, Pending>();\n private readonly generations = new Map<string, number>();\n private readonly ready: Promise<unknown>;\n private serial = 0;\n private closed = false;\n\n constructor(options: AnalyticWorkerOptions) {\n const base = document.baseURI;\n this.worker = new Worker(new URL(options.workerURL, base), { type: \"module\" });\n this.worker.onmessage = (event: MessageEvent) => {\n const message = event.data;\n const pending = this.pending.get(message?.request);\n if (!pending) return;\n this.pending.delete(message.request);\n if (pending.handle && pending.generation !== this.generations.get(pending.handle)) {\n pending.reject(new DOMException(\"Superseded tessellation request\", \"AbortError\"));\n } else if (message.error) {\n pending.reject(new Error(typeof message.error === \"string\" ? message.error : JSON.stringify(message.error)));\n } else {\n pending.resolve(message.result);\n }\n };\n this.worker.onerror = (event) => this.fail(new Error(event.message || \"Analytic worker failed\"));\n this.worker.onmessageerror = () => this.fail(new Error(\"Analytic worker response could not be decoded\"));\n this.ready = this.send({\n kind: \"init\", kernelURL: new URL(options.kernelURL, base).href, wasmURL: new URL(options.wasmURL, base).href,\n });\n // Initialization errors remain observable through every public operation.\n void this.ready.catch(() => undefined);\n }\n\n async setModel(handle: string, serialized: string): Promise<void> {\n await this.ready;\n if (!handle || handle.length > 1024) throw new Error(\"Worker model handle must contain 1–1024 characters\");\n this.cancel(handle);\n await this.send({ kind: \"model\", handle, serialized });\n }\n\n async tessellate(handle: string, deflection: number): Promise<AnalyticTessellationData> {\n await this.ready;\n if (!Number.isFinite(deflection) || deflection <= 0) throw new Error(\"Deflection must be finite and positive\");\n const generation = this.cancel(handle);\n return await this.send({ kind: \"tessellate\", handle, generation, deflection }, handle, generation) as AnalyticTessellationData;\n }\n\n cancel(handle: string): number {\n const generation = (this.generations.get(handle) ?? 0) + 1;\n this.generations.set(handle, generation);\n return generation;\n }\n\n async removeModel(handle: string): Promise<void> {\n this.cancel(handle);\n await this.ready;\n await this.send({ kind: \"remove\", handle });\n this.generations.delete(handle);\n }\n\n dispose(): void {\n this.fail(new DOMException(\"Analytic worker disposed\", \"AbortError\"));\n }\n\n private send(message: Record<string, unknown>, handle?: string, generation?: number): Promise<unknown> {\n if (this.closed) return Promise.reject(new Error(\"Analytic worker is closed\"));\n if (this.pending.size >= 128) return Promise.reject(new Error(\"Analytic worker request limit exceeded; previous mesh retained\"));\n const request = ++this.serial;\n return new Promise((resolve, reject) => {\n this.pending.set(request, { resolve, reject, handle, generation });\n try { this.worker.postMessage({ ...message, request }); }\n catch (error) {\n this.pending.delete(request);\n reject(error instanceof Error ? error : new Error(String(error)));\n }\n });\n }\n\n private fail(error: Error): void {\n if (this.closed) return;\n this.closed = true;\n this.worker.terminate();\n for (const pending of this.pending.values()) pending.reject(error);\n this.pending.clear();\n this.generations.clear();\n }\n}\n","import * as THREE from \"three\";\nimport type { AnalyticSolid, AnalyticTessellationStats } from \"../shapes/analytic-solid\";\nimport { AnalyticTessellationWorker, GEOMETRY_DEFLECTION_SHARE } from \"./analytic-tessellation\";\nimport { getUUID } from \"../utils/randomizer\";\n\nexport function deflectionBucket(target: number, previous?: number): number {\n if (!Number.isFinite(target) || target <= 0) throw new Error(\"LOD target must be finite and positive\");\n if (previous && target >= previous * 0.75 && target <= previous * 2.5) return previous;\n const bucket = 2 ** Math.floor(Math.log2(target));\n if (!Number.isFinite(bucket) || bucket <= 0) throw new Error(\"LOD target is outside the representable range\");\n return bucket;\n}\n\nexport function worldUnitsPerPixel(camera: THREE.PerspectiveCamera | THREE.OrthographicCamera, depth: number, physicalHeight: number): number {\n if (!Number.isFinite(physicalHeight) || physicalHeight <= 0) throw new Error(\"Physical viewport height must be positive\");\n if (camera instanceof THREE.OrthographicCamera) return (camera.top - camera.bottom) / (camera.zoom * physicalHeight);\n if (!Number.isFinite(depth) || depth <= 0) throw new Error(\"Perspective depth must be positive\");\n return 2 * depth * Math.tan(THREE.MathUtils.degToRad(camera.getEffectiveFOV()) / 2) / physicalHeight;\n}\n\ninterface Entry {\n handle: string;\n solid: AnalyticSolid;\n bounds: THREE.Box3;\n ready: boolean;\n desired?: number;\n accepted?: number;\n generation: number;\n failed?: number;\n}\n\nexport interface AnalyticLodOptions {\n fixedDeflection?: number;\n onUpdate?: (solid: AnalyticSolid, statistics: AnalyticTessellationStats) => void;\n onError?: (solid: AnalyticSolid, error: Error) => void;\n}\n\n/** Register authored changes explicitly; camera meshes never refresh a scene's authored BRep snapshots. */\nexport class AnalyticLodController {\n private readonly entries = new Map<AnalyticSolid, Entry>();\n private readonly cameraState = new Float64Array(34);\n private lastMotion = -Infinity;\n private lastSchedule = -Infinity;\n private initialized = false;\n private closed = false;\n private refining = false;\n private fixedDeflection?: number;\n\n constructor(private readonly worker: AnalyticTessellationWorker, private readonly options: AnalyticLodOptions = {}) {\n this.setDeflection(options.fixedDeflection);\n }\n\n setDeflection(deflection?: number): void {\n if (deflection !== undefined && (!Number.isFinite(deflection) || deflection <= 0)) throw new Error(\"Deflection must be finite and positive\");\n this.fixedDeflection = deflection;\n for (const entry of this.entries.values()) {\n entry.generation++;\n entry.desired = entry.failed = undefined;\n this.worker.cancel(entry.handle);\n }\n }\n\n async register(solid: AnalyticSolid): Promise<void> {\n if (this.closed) throw new Error(\"LOD controller has been disposed\");\n await this.unregister(solid);\n if (this.entries.size >= 64) throw new Error(\"LOD body limit exceeded\");\n const entry: Entry = {\n handle: `lod-${getUUID()}`, solid, bounds: solid.getModelBounds(), ready: false, generation: 0,\n };\n this.entries.set(solid, entry);\n try {\n await this.worker.setModel(entry.handle, solid.getBrepSerialized());\n if (this.entries.get(solid) === entry) entry.ready = true;\n else await this.worker.removeModel(entry.handle);\n } catch (error) {\n if (this.entries.get(solid) === entry) this.entries.delete(solid);\n throw error;\n }\n }\n\n async unregister(solid: AnalyticSolid): Promise<void> {\n const entry = this.entries.get(solid);\n if (!entry) return;\n this.entries.delete(solid);\n entry.generation++;\n await this.worker.removeModel(entry.handle);\n }\n\n update(camera: THREE.PerspectiveCamera | THREE.OrthographicCamera, physicalHeight: number, now = performance.now(), motion = false): void {\n if (this.closed || this.refining) return;\n camera.updateMatrixWorld();\n let changed = !this.initialized || physicalHeight !== this.cameraState[32];\n for (let i = 0; i < 16; i++) {\n if (camera.matrixWorld.elements[i] !== this.cameraState[i] || camera.projectionMatrix.elements[i] !== this.cameraState[16 + i]) changed = true;\n this.cameraState[i] = camera.matrixWorld.elements[i];\n this.cameraState[16 + i] = camera.projectionMatrix.elements[i];\n }\n this.cameraState[32] = physicalHeight;\n if (this.initialized && (changed || motion)) this.lastMotion = now;\n this.initialized = true;\n const moving = now - this.lastMotion < 150;\n if (now - this.lastSchedule < 100) return;\n this.lastSchedule = now;\n const frustum = new THREE.Frustum().setFromProjectionMatrix(new THREE.Matrix4().multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse));\n const candidates: { entry: Entry; deflection: number; distance: number }[] = [];\n for (const entry of this.entries.values()) {\n if (!entry.ready || entry.solid.isDisposed || !visible(entry.solid.surface) || !entry.solid.surface.layers.test(camera.layers) || entry.bounds.isEmpty()) continue;\n entry.solid.updateWorldMatrix(true, false);\n const bounds = entry.bounds.clone().applyMatrix4(entry.solid.matrixWorld);\n if (!frustum.intersectsBox(bounds)) continue;\n try {\n const scale = uniformScale(entry.solid.matrixWorld);\n const cameraBounds = bounds.clone().applyMatrix4(camera.matrixWorldInverse);\n const depth = Math.max(camera.near, -cameraBounds.max.z);\n const target = (this.fixedDeflection ?? worldUnitsPerPixel(camera, depth, physicalHeight) * (moving ? 2 : 0.5)) / scale;\n const deflection = this.fixedDeflection === undefined ? deflectionBucket(target, entry.desired) : target;\n if (entry.desired === deflection || entry.failed === deflection) continue;\n candidates.push({ entry, deflection, distance: depth });\n } catch (error) { this.options.onError?.(entry.solid, asError(error)); }\n }\n candidates.sort((a, b) => a.distance - b.distance);\n for (const { entry, deflection } of candidates) {\n entry.desired = deflection;\n const generation = ++entry.generation;\n const revision = entry.solid.modelRevision;\n void this.worker.tessellate(entry.handle, deflection * GEOMETRY_DEFLECTION_SHARE).then((mesh) => {\n if (this.closed || this.entries.get(entry.solid) !== entry || generation !== entry.generation || entry.solid.modelRevision !== revision) return;\n const stats = entry.solid.applyTessellation(mesh, deflection);\n entry.accepted = deflection;\n entry.failed = undefined;\n this.options.onUpdate?.(entry.solid, stats);\n }).catch((error) => {\n if (this.closed || this.entries.get(entry.solid) !== entry || generation !== entry.generation || error?.name === \"AbortError\") return;\n entry.failed = deflection;\n entry.desired = entry.accepted;\n this.options.onError?.(entry.solid, asError(error));\n });\n }\n }\n\n /** Explicit export refinement; a resource or precision failure rejects and retains each body's prior mesh. */\n async refine(deflection: number): Promise<void> {\n if (!Number.isFinite(deflection) || deflection <= 0) throw new Error(\"Deflection must be finite and positive\");\n if (this.closed || this.refining) throw new Error(\"LOD controller is disposed or export refinement is already running\");\n this.refining = true;\n try {\n for (const entry of [...this.entries.values()]) {\n if (!visible(entry.solid.surface)) continue;\n if (!entry.ready) throw new Error(\"Await model registration before export refinement\");\n entry.solid.updateWorldMatrix(true, false);\n const local = deflection / uniformScale(entry.solid.matrixWorld);\n const generation = ++entry.generation;\n const mesh = await this.worker.tessellate(entry.handle, local * GEOMETRY_DEFLECTION_SHARE);\n if (this.closed || this.entries.get(entry.solid) !== entry || generation !== entry.generation) throw new DOMException(\"Export refinement superseded\", \"AbortError\");\n const stats = entry.solid.applyTessellation(mesh, local);\n entry.desired = entry.accepted = local;\n entry.failed = undefined;\n this.options.onUpdate?.(entry.solid, stats);\n }\n } finally { this.refining = false; }\n }\n\n dispose(): void {\n if (this.closed) return;\n this.closed = true;\n for (const entry of this.entries.values()) {\n entry.generation++;\n void this.worker.removeModel(entry.handle).catch((error) => {\n if (error?.name !== \"AbortError\") this.options.onError?.(entry.solid, asError(error));\n });\n }\n this.entries.clear();\n }\n}\n\nfunction visible(object: THREE.Object3D): boolean {\n for (let current: THREE.Object3D | null = object; current; current = current.parent) if (!current.visible) return false;\n return true;\n}\nfunction asError(error: unknown): Error { return error instanceof Error ? error : new Error(String(error)); }\nexport function uniformScale(matrix: THREE.Matrix4): number {\n const x = new THREE.Vector3().setFromMatrixColumn(matrix, 0);\n const y = new THREE.Vector3().setFromMatrixColumn(matrix, 1);\n const z = new THREE.Vector3().setFromMatrixColumn(matrix, 2);\n const scale = x.length();\n if (!Number.isFinite(scale) || scale <= 0 || Math.abs(y.length() / scale - 1) > 1e-9 || Math.abs(z.length() / scale - 1) > 1e-9\n || Math.abs(x.dot(y) / scale ** 2) > 1e-9 || Math.abs(x.dot(z) / scale ** 2) > 1e-9 || Math.abs(y.dot(z) / scale ** 2) > 1e-9\n || matrix.determinant() <= 0) throw new Error(\"Analytic placement requires positive uniform scale and a rigid frame\");\n return scale;\n}\n","import { getUUID } from \"../utils/randomizer\";\n\nexport type IfcPreparedValue =\n | { kind: \"Ref\"; id: number }\n | { kind: \"List\"; values: IfcPreparedValue[] }\n | { kind: \"Real\"; value: number }\n | { kind: \"Integer\"; value: number }\n | { kind: \"Text\" | \"Enum\"; value: string }\n | { kind: \"Bool\"; value: boolean }\n | { kind: \"Null\" | \"Derived\" };\n\nexport interface AnalyticExchangeBodyV2 {\n schema_version: 2;\n revision: string;\n length_unit: \"metre\";\n up_axis: \"Z\";\n coordinate_space: \"world\";\n representation_type: \"AdvancedBrep\" | \"CSG\";\n quality: { kind: \"Analytic\" } | { kind: \"Approximate\"; max_error: number };\n geometric_tolerance: number;\n exchange_error_bound: number;\n validation_level: string;\n entities: { id: number; entity_type: string; attributes: IfcPreparedValue[] }[];\n solids: number[];\n faces: {\n face: number; key: string; entity: number;\n provenance: {\n sources: { entity: string; body: string; key: string; face: number }[];\n role: \"Authored\" | \"Preserved\" | \"Split\" | \"Cut\" | \"Coincident\"; reversed: boolean;\n };\n }[];\n}\n\nfunction quoted(text: string): string {\n let escaped = \"\";\n for (const character of text) {\n const code = character.charCodeAt(0);\n if (character === \"'\") escaped += \"''\";\n else if (code === 92) escaped += \"\\\\\\\\\";\n else if (code >= 32 && code <= 126) escaped += character;\n else {\n const utf16 = Array.from({ length: character.length }, (_, i) => (\"0000\" + character.charCodeAt(i).toString(16).toUpperCase()).slice(-4)).join(\"\");\n escaped += \"\\\\X2\\\\\" + utf16 + \"\\\\X0\\\\\";\n }\n }\n return \"'\" + escaped + \"'\";\n}\nfunction guid(): string {\n const alphabet = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_$\";\n const uuid = getUUID().replace(/-/g, \"\");\n const first = parseInt(uuid.slice(0, 2), 16);\n let value = alphabet[Math.floor(first / 64)] + alphabet[first % 64];\n for (let i = 2; i < 32; i += 6) {\n let block = parseInt(uuid.slice(i, i + 6), 16);\n let digits = \"\";\n for (let j = 0; j < 4; j++) { digits = alphabet[block % 64] + digits; block = Math.floor(block / 64); }\n value += digits;\n }\n return value;\n}\n\n/** Serializes Rust-prepared geometry; this function does not fit curves or tessellate surfaces. */\nexport function analyticIfcText(body: AnalyticExchangeBodyV2, name = \"Analytic body\"): string {\n if (body.schema_version !== 2 || body.length_unit !== \"metre\" || body.up_axis !== \"Z\" || body.coordinate_space !== \"world\"\n || !Array.isArray(body.entities) || !body.entities.length || body.entities.length > 100_000\n || !Array.isArray(body.solids) || !body.solids.length || !Array.isArray(body.faces)\n || !/^(0|[1-9][0-9]{0,19})$/.test(body.revision) || (body.revision.length === 20 && body.revision > \"18446744073709551615\")\n || !Number.isFinite(body.geometric_tolerance) || body.geometric_tolerance <= 0\n || !Number.isFinite(body.exchange_error_bound) || body.exchange_error_bound < body.geometric_tolerance\n || typeof name !== \"string\" || name.length > 4096) throw new Error(\"Invalid analytic IFC exchange contract\");\n const entities: string[] = [];\n let budget = 500_000;\n function encode(value: IfcPreparedValue, before: number, depth = 0): string {\n if (--budget < 0 || depth > 16 || !value || typeof value !== \"object\") throw new Error(\"IFC aggregate resource limit exceeded\");\n switch (value.kind) {\n case \"Ref\":\n if (!Number.isInteger(value.id) || value.id <= 0 || value.id >= before) throw new Error(\"Invalid IFC entity reference\");\n return \"#\" + value.id;\n case \"List\":\n if (!Array.isArray(value.values)) throw new Error(\"IFC aggregate must be an array\");\n return \"(\" + value.values.map(v => encode(v, before, depth + 1)).join(\",\") + \")\";\n case \"Real\":\n if (!Number.isFinite(value.value)) throw new Error(\"Non-finite IFC real value\");\n return value.value.toExponential(17);\n case \"Integer\":\n if (!Number.isSafeInteger(value.value)) throw new Error(\"Invalid IFC integer value\");\n return String(value.value);\n case \"Text\":\n if (typeof value.value !== \"string\" || value.value.length > 4096) throw new Error(\"Invalid IFC string\");\n return quoted(value.value);\n case \"Enum\":\n if (!/^[A-Z][A-Z0-9_]*$/.test(value.value)) throw new Error(\"Invalid IFC enumeration\");\n return \".\" + value.value + \".\";\n case \"Bool\":\n if (typeof value.value !== \"boolean\") throw new Error(\"IFC logical value must be boolean\");\n return value.value ? \".T.\" : \".F.\";\n case \"Null\": return \"$\";\n case \"Derived\": return \"*\";\n default: throw new Error(\"Unsupported IFC prepared value\");\n }\n }\n for (const entity of body.entities) {\n if (entity.id !== entities.length + 1 || !/^Ifc[A-Za-z0-9]+$/.test(entity.entity_type)\n || !Array.isArray(entity.attributes) || entity.attributes.length > 16) throw new Error(\"Invalid IFC prepared entity\");\n entities.push(\"#\" + entity.id + \"=\" + entity.entity_type.toUpperCase() + \"(\" + entity.attributes.map(value => encode(value, entity.id)).join(\",\") + \");\");\n }\n const add = (expression: string) => { const id = entities.length + 1; entities.push(\"#\" + id + \"=\" + expression + \";\"); return id; };\n const origin = add(\"IFCCARTESIANPOINT((0.,0.,0.))\");\n const z = add(\"IFCDIRECTION((0.,0.,1.))\");\n const x = add(\"IFCDIRECTION((1.,0.,0.))\");\n const placement = add(\"IFCAXIS2PLACEMENT3D(#\" + origin + \",#\" + z + \",#\" + x + \")\");\n const context = add(\"IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,\" + body.exchange_error_bound.toExponential(17) + \",#\" + placement + \",$)\");\n const length = add(\"IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.)\");\n const units = add(\"IFCUNITASSIGNMENT((#\" + length + \"))\");\n add(\"IFCPROJECT(\" + quoted(guid()) + \",$,\" + quoted(name) + \",$,$,$,$,(#\" + context + \"),#\" + units + \")\");\n const solidRefs = body.solids.map(id => {\n const expected = body.representation_type === \"AdvancedBrep\" ? \"IfcAdvancedBrep\" : \"IfcBooleanResult\";\n if (!Number.isInteger(id) || body.entities[id - 1]?.entity_type !== expected) throw new Error(\"Invalid IFC solid reference\");\n return \"#\" + id;\n }).join(\",\");\n if ([\"AdvancedBrep\", \"CSG\"].indexOf(body.representation_type) < 0) throw new Error(\"Invalid IFC representation type\");\n const representation = add(\"IFCSHAPEREPRESENTATION(#\" + context + \",'Body',\" + quoted(body.representation_type) + \",(\" + solidRefs + \"))\");\n const productShape = add(\"IFCPRODUCTDEFINITIONSHAPE($,$,(#\" + representation + \"))\");\n const objectPlacement = add(\"IFCLOCALPLACEMENT($,#\" + placement + \")\");\n add(\"IFCBUILDINGELEMENTPROXY(\" + quoted(guid()) + \",$,\" + quoted(name) + \",$,$,#\" + objectPlacement + \",#\" + productShape + \",$,.NOTDEFINED.)\");\n return [\n \"ISO-10303-21;\", \"HEADER;\", \"FILE_DESCRIPTION(('OpenGeometry analytic BRep v2'),'2;1');\",\n \"FILE_NAME(\" + quoted(name + \".ifc\") + \",'1970-01-01T00:00:00',(''),(''),'OpenGeometry','OpenGeometry','');\",\n \"FILE_SCHEMA(('IFC4'));\", \"ENDSEC;\", \"DATA;\", ...entities, \"ENDSEC;\", \"END-ISO-10303-21;\", \"\",\n ].join(\"\\n\");\n}\n","export type AnalyticGeometryErrorCode =\n | \"math\"\n | \"invalid_geometry\"\n | \"invalid_topology\"\n | \"unsupported_geometry\"\n | \"ambiguous_profile_alignment\"\n | \"coverage_gap\"\n | \"singular_parameterization\"\n | \"missing_reference\"\n | \"unsupported_schema\"\n | \"unresolved_intersection\"\n | \"unresolved_tessellation\"\n | \"limit_exceeded\"\n | \"unknown\";\n\nexport class AnalyticGeometryError extends Error {\n readonly code: AnalyticGeometryErrorCode;\n readonly detail: unknown;\n readonly families?: readonly [string, string];\n\n constructor(code: AnalyticGeometryErrorCode, message: string, detail?: unknown) {\n super(message);\n this.name = \"AnalyticGeometryError\";\n this.code = code;\n this.detail = detail;\n if (code === \"coverage_gap\" && isRecord(detail) && isStringPair(detail.families)) {\n this.families = detail.families;\n }\n }\n}\n\nexport function parseAnalyticGeometryError(raw: unknown): AnalyticGeometryError {\n const serialized = extractMessage(raw);\n try {\n const payload = JSON.parse(serialized) as unknown;\n if (typeof payload === \"string\") {\n const code = errorCode(payload);\n return new AnalyticGeometryError(code, messageFor(code));\n }\n if (isRecord(payload)) {\n const variant = Object.keys(payload)[0];\n if (variant) {\n const detail = payload[variant];\n const code = errorCode(variant);\n return new AnalyticGeometryError(code, messageFor(code, detail), detail);\n }\n }\n } catch {\n // The fallback below preserves non-kernel JavaScript failures.\n }\n return new AnalyticGeometryError(\"unknown\", serialized || \"Unknown analytic geometry error\", raw);\n}\n\nfunction messageFor(code: AnalyticGeometryErrorCode, detail?: unknown): string {\n if (code === \"coverage_gap\" && isRecord(detail) && isStringPair(detail.families)) {\n return `Analytic boolean coverage is unavailable for ${detail.families[0]} and ${detail.families[1]}.`;\n }\n if (code === \"missing_reference\" && isRecord(detail)) {\n return `Missing ${String(detail.kind ?? \"geometry\")} reference ${String(detail.index ?? \"\")}.`.trim();\n }\n if (code === \"unsupported_schema\" && isRecord(detail)) {\n return `Unsupported BRep schema version ${String(detail.found ?? \"unknown\")}; schema version 2 is required.`;\n }\n if (typeof detail === \"string\" && detail.length > 0) return detail;\n return code.replace(/_/g, \" \");\n}\n\nfunction errorCode(variant: string): AnalyticGeometryErrorCode {\n const code = variant.replace(/([a-z0-9])([A-Z])/g, \"$1_$2\").toLowerCase();\n switch (code) {\n case \"math\":\n case \"invalid_geometry\":\n case \"invalid_topology\":\n case \"unsupported_geometry\":\n case \"ambiguous_profile_alignment\":\n case \"coverage_gap\":\n case \"singular_parameterization\":\n case \"missing_reference\":\n case \"unsupported_schema\":\n case \"unresolved_intersection\":\n case \"unresolved_tessellation\":\n case \"limit_exceeded\":\n return code;\n default:\n return \"unknown\";\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isStringPair(value: unknown): value is [string, string] {\n return Array.isArray(value) && value.length === 2 && value.every((item) => typeof item === \"string\");\n}\n\nfunction extractMessage(raw: unknown): string {\n if (typeof raw === \"string\") return raw;\n if (raw instanceof Error) return raw.message;\n if (isRecord(raw) && typeof raw.message === \"string\") return raw.message;\n try {\n return String(raw ?? \"\");\n } catch {\n return \"Unknown analytic geometry error\";\n }\n}\n","import * as THREE from \"three\";\nimport { OGAnalyticBrep, tessellate_brep } from \"../../../opengeometry/pkg/opengeometry\";\nimport { getUUID } from \"../utils/randomizer\";\nimport { GEOMETRY_DEFLECTION_SHARE, type AnalyticTessellationData } from \"../rendering/analytic-tessellation\";\nimport { uniformScale } from \"../rendering/analytic-lod\";\nimport { analyticIfcText, AnalyticExchangeBodyV2 } from \"../export/analytic-ifc\";\nimport { parseAnalyticGeometryError } from \"../operations/analytic-errors\";\n\nexport interface AnalyticFrame {\n origin: [number, number, number];\n x: [number, number, number];\n y: [number, number, number];\n z: [number, number, number];\n}\n\nexport interface AnalyticAccuracy {\n geometric: number;\n intersection: number;\n tessellation: number;\n exchange: number;\n}\n\nexport interface AnalyticCircularWallOpening {\n id: string;\n angle: number;\n width: number;\n bottom: number;\n height: number;\n}\n\nexport type AnalyticPolygonLoftAlignment = \"auto\" | {\n upperStartIndex: number;\n reverseUpper?: boolean;\n};\n\nexport interface AnalyticProjectionCamera {\n position: { x: number; y: number; z: number };\n target: { x: number; y: number; z: number };\n up: { x: number; y: number; z: number };\n near: number;\n projection_mode: \"Orthographic\" | \"Perspective\";\n}\n\nexport interface AnalyticProjectionHlr {\n hide_hidden_edges: boolean;\n}\n\ninterface AnalyticOptions {\n ogid?: string;\n frame?: AnalyticFrame;\n accuracy?: AnalyticAccuracy;\n deflection?: number;\n color?: THREE.ColorRepresentation;\n}\n\nexport type AnalyticPrimitiveOptions = AnalyticOptions & (\n | { kind: \"cuboid\"; width: number; depth: number; height: number }\n | { kind: \"linearExtrusion\"; outer: [number, number][]; holes: [number, number][][]; height: number }\n | { kind: \"polygonLoft\"; lower: [number, number, number][]; upper: [number, number, number][]; alignment?: AnalyticPolygonLoftAlignment }\n | { kind: \"straightWallWithArchedOpening\"; width: number; depth: number; height: number; opening: { id: string; station: number; width: number; bottom: number; height: number } }\n | { kind: \"planarPolyhedron\"; vertices: [number, number, number][]; faces: number[][] }\n | { kind: \"cylinder\" | \"cone\"; radius: number; height: number }\n | { kind: \"cylinderSector\"; radius: number; height: number; startAngle: number; sweepAngle: number }\n | { kind: \"sphere\"; radius: number }\n | { kind: \"frustum\"; lowerRadius: number; upperRadius: number; height: number }\n | { kind: \"torus\"; majorRadius: number; minorRadius: number }\n | { kind: \"circularWall\"; radius: number; thickness: number; height: number; startAngle: number; sweepAngle: number }\n | { kind: \"circularWallWithOpenings\"; radius: number; thickness: number; height: number; startAngle: number; sweepAngle: number; openings: AnalyticCircularWallOpening[] }\n | { kind: \"circularWallWithArchedOpening\"; radius: number; thickness: number; height: number; startAngle: number; sweepAngle: number; opening: AnalyticCircularWallOpening }\n | { kind: \"coaxialCircleLoft\"; lowerRadius: number; upperRadius: number; height: number }\n | { kind: \"revolvedRectangle\"; innerRadius: number; outerRadius: number; height: number }\n | { kind: \"chamferedCuboid\"; width: number; depth: number; height: number; chamfer: number }\n | { kind: \"filletedCylinder\"; radius: number; height: number; filletRadius: number }\n);\n\nexport type AnalyticBooleanOp = \"union\" | \"intersection\" | \"subtraction\";\nexport type AnalyticPointClassification = \"inside\" | \"outside\" | \"boundary\" | \"unknown\";\n\nexport interface AnalyticBooleanReport {\n operation: AnalyticBooleanOp;\n quality: { kind: \"Analytic\" };\n contacts: [number, number, number][];\n coincident: boolean;\n face_mappings: {\n source: { entity: string; body: string; key: string; face: number };\n result_faces: number[];\n }[];\n}\n\nexport interface AnalyticBrepOptions extends Omit<AnalyticOptions, \"ogid\" | \"frame\" | \"accuracy\"> {\n kind: \"brep\";\n serialized: string;\n}\n\nexport interface AnalyticTessellationStats {\n requestedDeflection: number;\n achievedDeflection: number;\n triangleCount: number;\n faceCount: number;\n revision: bigint;\n}\n\nexport interface AnalyticTessellationOptions {\n maxTriangles?: number;\n}\n\nexport interface AnalyticStepExport {\n text: string;\n report: {\n schema_version: 2;\n revision: string;\n length_unit: \"metre\" | \"millimetre\";\n quality: { kind: string };\n faces: number;\n edges: number;\n solids: number;\n cavity_shells: number;\n collapsed_chart_uses: number;\n geometric_tolerance: number;\n exchange_error_bound: number;\n validation_level: string;\n };\n}\n\nexport interface AnalyticStlExport {\n bytes: Uint8Array;\n report: {\n schema_version: 2;\n revision: string;\n triangle_count: number;\n requested_deflection: number;\n achieved_deflection: number;\n float32_encoding_error: number;\n quality: \"tessellated_from_analytic_brep\";\n };\n}\n\nexport class AnalyticSolid extends THREE.Group {\n readonly ogid: string;\n readonly surface: THREE.Mesh<THREE.BufferGeometry, THREE.MeshStandardMaterial>;\n readonly featureOutline: THREE.LineSegments<THREE.BufferGeometry, THREE.LineBasicMaterial>;\n private kernel: OGAnalyticBrep;\n private triangleFaces = new Uint32Array(0);\n private outlineEdges = new Uint32Array(0);\n private disposed = false;\n private lastDeflection = 0.001;\n private booleanReport?: AnalyticBooleanReport;\n\n get report(): AnalyticBooleanReport | undefined { return this.booleanReport; }\n get isDisposed(): boolean { return this.disposed; }\n get modelRevision(): bigint { this.checkActive(); return this.kernel.get_revision(); }\n get deflection(): number { return this.lastDeflection; }\n get color(): THREE.Color { return this.surface.material.color; }\n set color(value: THREE.ColorRepresentation) {\n this.checkActive();\n this.surface.material.color.set(value);\n this.surface.material.needsUpdate = true;\n }\n get outline(): boolean { return this.featureOutline.visible; }\n set outline(value: boolean) {\n this.checkActive();\n this.featureOutline.visible = value;\n this.surface.material.polygonOffset = value;\n this.surface.material.polygonOffsetFactor = 1;\n this.surface.material.polygonOffsetUnits = 1;\n }\n\n constructor(options: AnalyticPrimitiveOptions | AnalyticBrepOptions) {\n super();\n const id = options.kind === \"brep\" ? \"\" : options.ogid ?? getUUID();\n this.kernel = options.kind === \"brep\"\n ? new OGAnalyticBrep(options.serialized)\n : createPrimitiveKernel(options, id);\n this.ogid = this.kernel.get_id();\n this.surface = new THREE.Mesh(\n new THREE.BufferGeometry(),\n new THREE.MeshStandardMaterial({ color: options.color ?? 0x6699dd }),\n );\n this.surface.userData.ogid = this.ogid;\n this.featureOutline = new THREE.LineSegments(new THREE.BufferGeometry(), new THREE.LineBasicMaterial({ color: 0x243040 }));\n this.featureOutline.visible = false;\n this.featureOutline.userData.ogid = this.ogid;\n this.add(this.surface, this.featureOutline);\n try {\n this.retessellate(options.deflection ?? (options.kind === \"brep\" ? 0.001 : options.accuracy?.tessellation ?? 0.001));\n } catch (error) {\n this.dispose();\n throw error;\n }\n }\n\n static fromBrep(serialized: string, options: Omit<AnalyticBrepOptions, \"kind\" | \"serialized\"> = {}): AnalyticSolid {\n return new AnalyticSolid({ ...options, kind: \"brep\", serialized });\n }\n\n boolean(other: AnalyticSolid, operation: AnalyticBooleanOp, options: { deflection?: number; color?: THREE.ColorRepresentation } = {}): AnalyticSolid {\n this.checkActive();\n other.checkActive();\n const host = this.worldKernel();\n let cutter: OGAnalyticBrep | undefined;\n let result: OGAnalyticBrep | undefined;\n try {\n cutter = other.worldKernel();\n result = host.boolean_brep(cutter, operation, getUUID());\n const report = result.get_boolean_report_serialized();\n const solid = AnalyticSolid.fromBrep(result.get_brep_serialized(), {\n deflection: options.deflection ?? this.lastDeflection,\n color: options.color ?? this.surface.material.color,\n });\n solid.booleanReport = report ? JSON.parse(report) as AnalyticBooleanReport : undefined;\n solid.name = this.name;\n solid.userData = { ...this.userData };\n solid.outline = this.outline;\n return solid;\n } catch (error) {\n throw parseAnalyticGeometryError(error);\n } finally {\n result?.free();\n cutter?.free();\n host.free();\n }\n }\n\n union(other: AnalyticSolid, options: { deflection?: number; color?: THREE.ColorRepresentation } = {}): AnalyticSolid {\n return this.boolean(other, \"union\", options);\n }\n\n intersection(other: AnalyticSolid, options: { deflection?: number; color?: THREE.ColorRepresentation } = {}): AnalyticSolid {\n return this.boolean(other, \"intersection\", options);\n }\n\n subtract(cutters: AnalyticSolid[], options: { deflection?: number; color?: THREE.ColorRepresentation } = {}): AnalyticSolid {\n if (!Array.isArray(cutters) || cutters.length === 0 || cutters.some((cutter) => !(cutter instanceof AnalyticSolid))) {\n throw new Error(\"Analytic subtraction requires a nonempty AnalyticSolid array\");\n }\n let result = this.boolean(cutters[0], \"subtraction\", options);\n for (const cutter of cutters.slice(1)) {\n const next = result.boolean(cutter, \"subtraction\", options);\n result.dispose();\n result = next;\n }\n return result;\n }\n\n shell(thickness: number, options: { deflection?: number; color?: THREE.ColorRepresentation } = {}): AnalyticSolid {\n this.checkActive();\n if (!Number.isFinite(thickness) || thickness <= 0) throw new Error(\"Shell thickness must be finite and positive\");\n const host = this.worldKernel();\n let result: OGAnalyticBrep | undefined;\n try {\n result = host.shell(thickness, getUUID());\n const report = result.get_boolean_report_serialized();\n const solid = AnalyticSolid.fromBrep(result.get_brep_serialized(), {\n deflection: options.deflection ?? this.lastDeflection,\n color: options.color ?? this.surface.material.color,\n });\n solid.booleanReport = report ? JSON.parse(report) as AnalyticBooleanReport : undefined;\n solid.name = this.name;\n solid.userData = { ...this.userData };\n solid.outline = this.outline;\n return solid;\n } catch (error) {\n throw parseAnalyticGeometryError(error);\n } finally {\n result?.free();\n host.free();\n }\n }\n\n getBrepSerialized(): string {\n this.checkActive();\n return this.kernel.get_brep_serialized();\n }\n\n getBrepData(): Record<string, unknown> {\n return JSON.parse(this.getBrepSerialized()) as Record<string, unknown>;\n }\n\n /** Rebuilds authored analytic geometry while preserving the wrapper and placement. */\n protected replaceDefinition(options: AnalyticPrimitiveOptions): AnalyticTessellationStats {\n this.checkActive();\n const next = createPrimitiveKernel(options, this.ogid);\n const previous = this.kernel;\n this.kernel = next;\n try {\n const stats = this.retessellate(options.deflection ?? this.lastDeflection);\n previous.free();\n this.booleanReport = undefined;\n return stats;\n } catch (error) {\n this.kernel = previous;\n next.free();\n throw error;\n }\n }\n\n getWorldBrepSerialized(): string {\n const placed = this.worldKernel();\n try { return placed.get_brep_serialized(); }\n finally { placed.free(); }\n }\n\n prepareIfcExchange(): AnalyticExchangeBodyV2 {\n const placed = this.worldKernel();\n try { return JSON.parse(placed.prepare_ifc_exchange()) as AnalyticExchangeBodyV2; }\n finally { placed.free(); }\n }\n\n exportIfc(): { text: string; report: AnalyticExchangeBodyV2 } {\n const report = this.prepareIfcExchange();\n return { text: analyticIfcText(report, this.ogid), report };\n }\n\n /** Exports world placement and authored metre geometry, converted once to the selected STEP unit. */\n exportStep(lengthUnit: \"metre\" | \"millimetre\" = \"metre\"): AnalyticStepExport {\n const placed = this.worldKernel();\n try { return JSON.parse(placed.export_step(lengthUnit)) as AnalyticStepExport; }\n finally { placed.free(); }\n }\n\n /** Exports a binary STL tessellated from the placed analytic BRep at an explicit error budget. */\n exportStl(deflection = this.lastDeflection): AnalyticStlExport {\n if (!Number.isFinite(deflection) || deflection <= 0) {\n throw new Error(\"STL deflection must be finite and positive\");\n }\n const placed = this.worldKernel();\n const result = tessellate_brep(\n placed.get_brep_serialized(),\n deflection * GEOMETRY_DEFLECTION_SHARE,\n );\n try {\n const positions = result.positions();\n const indices = result.indices();\n const triangleCount = indices.length / 3;\n if (!Number.isSafeInteger(triangleCount) || triangleCount > 0xffffffff) {\n throw new Error(\"STL triangle count exceeds the binary format limit\");\n }\n const bytes = new Uint8Array(84 + triangleCount * 50);\n const header = \"OpenGeometry BRep v2 analytic tessellation\";\n for (let index = 0; index < Math.min(header.length, 80); index += 1) {\n bytes[index] = header.charCodeAt(index);\n }\n const view = new DataView(bytes.buffer);\n view.setUint32(80, triangleCount, true);\n let encodingError = 0;\n const writeFloat = (offset: number, value: number): void => {\n view.setFloat32(offset, value, true);\n encodingError = Math.max(encodingError, Math.abs(value - view.getFloat32(offset, true)));\n };\n for (let triangle = 0; triangle < triangleCount; triangle += 1) {\n const ids = [indices[triangle * 3], indices[triangle * 3 + 1], indices[triangle * 3 + 2]];\n const points = ids.map((id) => [\n positions[id * 3], positions[id * 3 + 1], positions[id * 3 + 2],\n ] as [number, number, number]);\n const ab = points[1].map((value, axis) => value - points[0][axis]);\n const ac = points[2].map((value, axis) => value - points[0][axis]);\n const cross = [\n ab[1] * ac[2] - ab[2] * ac[1],\n ab[2] * ac[0] - ab[0] * ac[2],\n ab[0] * ac[1] - ab[1] * ac[0],\n ];\n const length = Math.hypot(...cross);\n if (!Number.isFinite(length) || length === 0) {\n throw new Error(\"Analytic tessellation produced a degenerate STL triangle\");\n }\n const offset = 84 + triangle * 50;\n cross.forEach((value, axis) => writeFloat(offset + axis * 4, value / length));\n points.forEach((point, vertex) => point.forEach((value, axis) => {\n writeFloat(offset + 12 + (vertex * 3 + axis) * 4, value);\n }));\n view.setUint16(offset + 48, 0, true);\n }\n const achievedDeflection = result.achieved_deflection() + encodingError;\n if (achievedDeflection > deflection) {\n throw new Error(\"Binary STL precision cannot represent the requested deflection\");\n }\n return {\n bytes,\n report: {\n schema_version: 2,\n revision: result.revision().toString(),\n triangle_count: triangleCount,\n requested_deflection: deflection,\n achieved_deflection: achievedDeflection,\n float32_encoding_error: encodingError,\n quality: \"tessellated_from_analytic_brep\",\n },\n };\n } finally {\n result.free();\n placed.free();\n }\n }\n\n faceIdForTriangle(triangle: number): number | undefined {\n if (!Number.isInteger(triangle) || triangle < 0) return undefined;\n return this.triangleFaces[triangle];\n }\n\n edgeIdForOutlineSegment(segment: number): number | undefined {\n if (!Number.isInteger(segment) || segment < 0) return undefined;\n return this.outlineEdges[segment];\n }\n\n /** Evaluates the oriented support normal at a projected model-space point; this does not classify trim membership. */\n normalAtFace(faceId: number, modelPoint: THREE.Vector3): THREE.Vector3 {\n this.checkActive();\n if (!Number.isInteger(faceId) || faceId < 0 || faceId > 0xffffffff) throw new Error(\"Face ID must be an unsigned integer\");\n const normal = this.kernel.face_normal_at(faceId, new Float64Array(modelPoint.toArray()));\n return new THREE.Vector3(normal[0], normal[1], normal[2]);\n }\n\n /** Classifies a world-space point against the regularized material represented by this solid. */\n classifyPoint(worldPoint: THREE.Vector3): AnalyticPointClassification {\n if (![worldPoint.x, worldPoint.y, worldPoint.z].every(Number.isFinite)) {\n throw new Error(\"Point coordinates must be finite\");\n }\n const placed = this.worldKernel();\n try {\n return placed.classify_point(new Float64Array(worldPoint.toArray())) as AnalyticPointClassification;\n } finally {\n placed.free();\n }\n }\n\n projectTo2DLines(\n camera: AnalyticProjectionCamera,\n hlr: AnalyticProjectionHlr,\n deflection = this.lastDeflection,\n ): string {\n if (!Number.isFinite(deflection) || deflection <= 0) {\n throw new Error(\"Projection deflection must be finite and positive\");\n }\n const placed = this.worldKernel();\n try {\n return placed.project_to_2d_lines(JSON.stringify(camera), JSON.stringify(hlr), deflection);\n } finally {\n placed.free();\n }\n }\n\n getModelBounds(): THREE.Box3 {\n this.checkActive();\n const bounds = this.kernel.get_bounds();\n if (bounds.length === 0) return new THREE.Box3();\n return new THREE.Box3(\n new THREE.Vector3(bounds[0], bounds[1], bounds[2]),\n new THREE.Vector3(bounds[3], bounds[4], bounds[5]),\n );\n }\n\n retessellate(deflection: number): AnalyticTessellationStats {\n this.checkActive();\n return this.applyTessellation(this.tessellate(deflection * GEOMETRY_DEFLECTION_SHARE), deflection);\n }\n\n tessellate(deflection: number, options: AnalyticTessellationOptions = {}): AnalyticTessellationData {\n this.checkActive();\n if (!Number.isFinite(deflection) || deflection <= 0) throw new Error(\"Deflection must be finite and positive\");\n if (options.maxTriangles !== undefined\n && (!Number.isSafeInteger(options.maxTriangles) || options.maxTriangles <= 0 || options.maxTriangles > 2_000_000)) {\n throw new Error(\"maxTriangles must be an integer between 1 and 2000000\");\n }\n const result = tessellate_brep(\n this.kernel.get_brep_serialized(),\n deflection,\n options.maxTriangles === undefined ? undefined : JSON.stringify({ max_triangles: options.maxTriangles }),\n );\n try {\n return {\n positions: result.positions(), normals: result.normals(), indices: result.indices(),\n triangleFaceIds: result.triangle_face_ids(), outlinePositions: result.outline_positions(),\n outlineEdgeIds: result.outline_edge_ids(), revision: result.revision(), achievedDeflection: result.achieved_deflection(),\n };\n } finally {\n result.free();\n }\n }\n\n /** Applies a transient worker mesh only when it still matches this authored model revision. */\n applyTessellation(result: AnalyticTessellationData, deflection: number): AnalyticTessellationStats {\n this.checkActive();\n if (!Number.isFinite(deflection) || deflection <= 0 || !Number.isFinite(result.achievedDeflection)\n || result.achievedDeflection < 0 || result.achievedDeflection > deflection || result.revision !== this.modelRevision) {\n throw new Error(\"Tessellation does not match the model revision or requested deflection\");\n }\n const positions = result.positions;\n const indices = result.indices;\n const faceIds = result.triangleFaceIds;\n const outline = result.outlinePositions;\n const edgeIds = result.outlineEdgeIds;\n if (!(positions instanceof Float64Array) || !(result.normals instanceof Float32Array)\n || !(indices instanceof Uint32Array) || !(faceIds instanceof Uint32Array)\n || positions.length % 3 || result.normals.length !== positions.length || indices.length % 3\n || indices.length > 6_000_000 || faceIds.length !== indices.length / 3\n || !(outline instanceof Float64Array) || !(edgeIds instanceof Uint32Array)\n || outline.length % 6 || outline.length > 12_000_000 || edgeIds.length !== outline.length / 6) {\n throw new Error(\"Invalid or oversized tessellation buffers\");\n }\n const faceCount = this.kernel.get_face_count();\n const edgeCount = this.kernel.get_edge_count();\n if (indices.some((index) => index >= positions.length / 3) || faceIds.some((id) => id >= faceCount)\n || positions.some((value) => !Number.isFinite(value)) || result.normals.some((value) => !Number.isFinite(value))\n || outline.some((value) => !Number.isFinite(value)) || edgeIds.some((id) => id >= edgeCount)) {\n throw new Error(\"Invalid tessellation coordinates or topology mappings\");\n }\n const min = [Infinity, Infinity, Infinity];\n const max = [-Infinity, -Infinity, -Infinity];\n for (let i = 0; i < positions.length; i++) {\n min[i % 3] = Math.min(min[i % 3], positions[i]);\n max[i % 3] = Math.max(max[i % 3], positions[i]);\n }\n const origin = positions.length\n ? min.map((value, i) => value / 2 + max[i] / 2)\n : [0, 0, 0];\n let encodingError = 0;\n const encode = (coordinates: Float64Array): Float32Array => {\n const encoded = new Float32Array(coordinates.length);\n for (let i = 0; i < coordinates.length; i += 3) {\n const errors = [0, 0, 0];\n for (let j = 0; j < 3; j++) {\n const local = coordinates[i + j] - origin[j];\n encoded[i + j] = local;\n errors[j] = Math.abs(local - encoded[i + j]);\n }\n encodingError = Math.max(encodingError, Math.hypot(...errors));\n }\n return encoded;\n };\n const gpuPositions = encode(positions);\n const gpuOutline = encode(outline);\n if (!Number.isFinite(encodingError) || encodingError > deflection / 4) {\n throw new Error(\"GPU coordinate precision cannot represent the requested deflection\");\n }\n if (result.achievedDeflection + encodingError > deflection) {\n throw new Error(\"Combined tessellation and GPU encoding error exceeds requested deflection\");\n }\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(gpuPositions, 3));\n geometry.setAttribute(\"normal\", new THREE.BufferAttribute(result.normals, 3));\n geometry.setIndex(new THREE.BufferAttribute(indices, 1));\n geometry.computeBoundingBox();\n geometry.computeBoundingSphere();\n const outlineGeometry = new THREE.BufferGeometry();\n outlineGeometry.setAttribute(\"position\", new THREE.BufferAttribute(gpuOutline, 3));\n if (gpuOutline.length) { outlineGeometry.computeBoundingBox(); outlineGeometry.computeBoundingSphere(); }\n const previous = this.surface.geometry;\n const previousOutline = this.featureOutline.geometry;\n this.surface.geometry = geometry;\n this.surface.position.set(origin[0], origin[1], origin[2]);\n this.featureOutline.geometry = outlineGeometry;\n this.featureOutline.position.copy(this.surface.position);\n this.triangleFaces = faceIds;\n this.outlineEdges = edgeIds;\n previous.dispose();\n previousOutline.dispose();\n this.lastDeflection = deflection;\n return {\n requestedDeflection: deflection,\n achievedDeflection: result.achievedDeflection + encodingError,\n triangleCount: indices.length / 3,\n faceCount,\n revision: result.revision,\n };\n }\n\n dispose(): void {\n if (this.disposed) return;\n this.disposed = true;\n this.surface.geometry.dispose();\n this.surface.material.dispose();\n this.featureOutline.geometry.dispose();\n this.featureOutline.material.dispose();\n this.kernel.free();\n }\n\n private checkActive(): void {\n if (this.disposed) throw new Error(\"AnalyticSolid has been disposed\");\n }\n\n private worldKernel(): OGAnalyticBrep {\n this.checkActive();\n this.updateWorldMatrix(true, false);\n const elements = this.matrixWorld.elements;\n if (elements.every((value, index) => value === (index % 5 === 0 ? 1 : 0))) {\n return new OGAnalyticBrep(this.kernel.get_brep_serialized());\n }\n const scale = uniformScale(this.matrixWorld);\n const axis = (column: number): [number, number, number] => [\n elements[column * 4] / scale, elements[column * 4 + 1] / scale, elements[column * 4 + 2] / scale,\n ];\n const frame: AnalyticFrame = {\n origin: [elements[12], elements[13], elements[14]], x: axis(0), y: axis(1), z: axis(2),\n };\n return this.kernel.placed(JSON.stringify(frame), scale);\n }\n}\n\nfunction createPrimitiveKernel(options: AnalyticPrimitiveOptions, ogid: string): OGAnalyticBrep {\n const frame = options.frame ?? (options.kind === \"planarPolyhedron\" || options.kind === \"polygonLoft\"\n ? { origin: [0, 0, 0], x: [1, 0, 0], y: [0, 1, 0], z: [0, 0, 1] }\n : { origin: [0, 0, 0], x: [1, 0, 0], y: [0, 0, -1], z: [0, 1, 0] });\n const profileExtent = options.kind === \"linearExtrusion\"\n ? [options.outer, ...options.holes].reduce((extent, loop) => (\n loop.reduce((loopExtent, point) => Math.max(loopExtent, Math.abs(point[0]), Math.abs(point[1])), extent)\n ), 0)\n : 0;\n const loftExtent = options.kind === \"polygonLoft\"\n ? [...options.lower, ...options.upper].reduce((extent, point) => Math.max(extent, ...point.map(Math.abs)), 0)\n : 0;\n const polyhedronExtent = options.kind === \"planarPolyhedron\"\n ? options.vertices.reduce((extent, point) => Math.max(extent, Math.abs(point[0]), Math.abs(point[1]), Math.abs(point[2])), 0)\n : 0;\n const size = options.kind === \"torus\"\n ? 2 * (options.majorRadius + options.minorRadius)\n : options.kind === \"coaxialCircleLoft\"\n ? Math.max(2 * options.lowerRadius, 2 * options.upperRadius, options.height)\n : options.kind === \"revolvedRectangle\"\n ? Math.max(2 * options.outerRadius, options.height)\n : options.kind === \"chamferedCuboid\"\n ? Math.max(options.width, options.depth, options.height)\n : options.kind === \"linearExtrusion\"\n ? Math.max(options.height, profileExtent)\n : options.kind === \"polygonLoft\"\n ? loftExtent\n : options.kind === \"straightWallWithArchedOpening\"\n ? Math.max(options.width, options.depth, options.height)\n : options.kind === \"planarPolyhedron\"\n ? polyhedronExtent\n : options.kind === \"frustum\"\n ? Math.max(2 * options.lowerRadius, 2 * options.upperRadius, options.height)\n : options.kind === \"circularWall\" || options.kind === \"circularWallWithOpenings\" || options.kind === \"circularWallWithArchedOpening\"\n ? Math.max(2 * options.radius + options.thickness, options.height)\n : options.kind === \"cuboid\"\n ? Math.max(options.width, options.depth, options.height)\n : options.kind === \"sphere\"\n ? 2 * options.radius\n : Math.max(2 * options.radius, options.height);\n const coordinateFloor = Math.max(...frame.origin.map(Math.abs)) * 64 * Number.EPSILON;\n const geometric = Math.max(1e-9, size * 1e-8, coordinateFloor);\n const accuracy = options.accuracy ?? {\n geometric, intersection: geometric / 4, tessellation: 0.001, exchange: 0.00001,\n };\n const dimensions = options.kind === \"torus\"\n ? { major_radius: options.majorRadius, minor_radius: options.minorRadius }\n : options.kind === \"coaxialCircleLoft\"\n ? { lower_radius: options.lowerRadius, upper_radius: options.upperRadius, height: options.height }\n : options.kind === \"revolvedRectangle\"\n ? { inner_radius: options.innerRadius, outer_radius: options.outerRadius, height: options.height }\n : options.kind === \"chamferedCuboid\"\n ? { size: [options.width, options.depth, options.height], chamfer: options.chamfer }\n : options.kind === \"filletedCylinder\"\n ? { radius: options.radius, height: options.height, fillet_radius: options.filletRadius }\n : options.kind === \"linearExtrusion\"\n ? { outer: options.outer, holes: options.holes, height: options.height }\n : options.kind === \"polygonLoft\"\n ? {\n lower: options.lower,\n upper: options.upper,\n alignment: options.alignment === undefined || options.alignment === \"auto\"\n ? { kind: \"auto\" }\n : {\n kind: \"indexed\",\n upper_start: options.alignment.upperStartIndex,\n reverse_upper: options.alignment.reverseUpper ?? false,\n },\n }\n : options.kind === \"straightWallWithArchedOpening\"\n ? { width: options.width, depth: options.depth, height: options.height, opening: options.opening }\n : options.kind === \"planarPolyhedron\"\n ? { vertices: options.vertices, faces: options.faces }\n : options.kind === \"frustum\"\n ? { lower_radius: options.lowerRadius, upper_radius: options.upperRadius, height: options.height }\n : options.kind === \"circularWall\" || options.kind === \"circularWallWithOpenings\" || options.kind === \"circularWallWithArchedOpening\"\n ? { radius: options.radius, thickness: options.thickness, height: options.height, start_angle: options.startAngle, sweep_angle: options.sweepAngle, ...(options.kind === \"circularWallWithOpenings\" ? { openings: options.openings.map((opening) => ({ id: opening.id, angle: opening.angle, width: opening.width, bottom: opening.bottom, height: opening.height })) } : options.kind === \"circularWallWithArchedOpening\" ? { opening: { id: options.opening.id, angle: options.opening.angle, width: options.opening.width, bottom: options.opening.bottom, height: options.opening.height } } : {}) }\n : options.kind === \"cylinderSector\"\n ? { radius: options.radius, height: options.height, start_angle: options.startAngle, sweep_angle: options.sweepAngle }\n : options.kind === \"cuboid\"\n ? { size: [options.width, options.depth, options.height] }\n : options.kind === \"sphere\"\n ? { radius: options.radius }\n : { radius: options.radius, height: options.height };\n return OGAnalyticBrep.from_primitive(JSON.stringify({\n kind: options.kind === \"circularWall\"\n ? \"circular_wall\"\n : options.kind === \"circularWallWithOpenings\"\n ? \"circular_wall_with_openings\"\n : options.kind === \"circularWallWithArchedOpening\"\n ? \"circular_wall_with_arched_opening\"\n : options.kind === \"coaxialCircleLoft\"\n ? \"coaxial_circle_loft\"\n : options.kind === \"revolvedRectangle\"\n ? \"revolved_rectangle\"\n : options.kind === \"chamferedCuboid\"\n ? \"chamfered_cuboid\"\n : options.kind === \"filletedCylinder\"\n ? \"filleted_cylinder\"\n : options.kind === \"linearExtrusion\"\n ? \"linear_extrusion\"\n : options.kind === \"polygonLoft\"\n ? \"polygon_loft\"\n : options.kind === \"straightWallWithArchedOpening\"\n ? \"straight_wall_with_arched_opening\"\n : options.kind === \"planarPolyhedron\"\n ? \"planar_polyhedron\"\n : options.kind === \"cylinderSector\"\n ? \"cylinder_sector\"\n : options.kind,\n id: ogid, frame, accuracy, ...dimensions,\n }));\n}\n","import * as THREE from \"three\";\nimport { AnalyticSolid } from \"./analytic-solid\";\n\nexport interface AnalyticPatternInstance {\n id?: string;\n matrix: THREE.Matrix4;\n}\n\nexport interface AnalyticPatternHit {\n pattern: AnalyticPattern;\n instanceIndex: number;\n instanceId: string;\n source: AnalyticSolid;\n faceId?: number;\n}\n\nfunction finiteMatrix(matrix: THREE.Matrix4): boolean {\n return matrix.elements.every(Number.isFinite);\n}\n\n/**\n * Renders many rigid placements of one authoritative analytic body. The source\n * owns the BRep; instances own only identity and placement matrices.\n */\nexport class AnalyticPattern extends THREE.Group {\n readonly source: AnalyticSolid;\n readonly surface: THREE.InstancedMesh<THREE.BufferGeometry, THREE.Material>;\n readonly instanceIds: readonly string[];\n private disposed = false;\n\n constructor(source: AnalyticSolid, instances: readonly AnalyticPatternInstance[]) {\n super();\n if (!(source instanceof AnalyticSolid) || source.isDisposed) {\n throw new Error(\"Analytic patterns require an active AnalyticSolid source\");\n }\n if (instances.length === 0 || instances.length > 100_000) {\n throw new Error(\"Analytic patterns require 1–100,000 instances\");\n }\n if (instances.some(({ matrix }) => !(matrix instanceof THREE.Matrix4) || !finiteMatrix(matrix))) {\n throw new Error(\"Analytic pattern placements must be finite Matrix4 values\");\n }\n const ids = instances.map((instance, index) => instance.id ?? `${source.ogid}:instance-${index}`);\n if (ids.some((id) => !id) || new Set(ids).size !== ids.length) {\n throw new Error(\"Analytic pattern instance identities must be nonempty and unique\");\n }\n this.source = source;\n this.instanceIds = ids;\n this.surface = new THREE.InstancedMesh(\n source.surface.geometry,\n source.surface.material,\n instances.length,\n );\n this.surface.name = `${source.name || source.ogid} pattern`;\n this.surface.userData.ogid = source.ogid;\n this.surface.userData.analyticPattern = this;\n instances.forEach((instance, index) => this.surface.setMatrixAt(index, instance.matrix));\n this.surface.instanceMatrix.needsUpdate = true;\n this.add(this.surface);\n }\n\n get count(): number { return this.instanceIds.length; }\n\n setInstanceMatrix(index: number, matrix: THREE.Matrix4): void {\n this.checkActive();\n if (!Number.isInteger(index) || index < 0 || index >= this.count) {\n throw new Error(\"Analytic pattern instance index is outside the pattern\");\n }\n if (!(matrix instanceof THREE.Matrix4) || !finiteMatrix(matrix)) {\n throw new Error(\"Analytic pattern placement must be a finite Matrix4\");\n }\n this.surface.setMatrixAt(index, matrix);\n this.surface.instanceMatrix.needsUpdate = true;\n this.surface.computeBoundingBox();\n this.surface.computeBoundingSphere();\n }\n\n resolveIntersection(intersection: THREE.Intersection): AnalyticPatternHit | undefined {\n if (intersection.object !== this.surface || intersection.instanceId === undefined) return undefined;\n const instanceIndex = intersection.instanceId;\n if (instanceIndex < 0 || instanceIndex >= this.count) return undefined;\n const triangleIndex = intersection.faceIndex;\n const faceId = triangleIndex === undefined ? undefined : this.source.faceIdForTriangle(triangleIndex);\n return {\n pattern: this,\n instanceIndex,\n instanceId: this.instanceIds[instanceIndex],\n source: this.source,\n faceId,\n };\n }\n\n dispose(): void {\n if (this.disposed) return;\n this.disposed = true;\n this.remove(this.surface);\n this.surface.dispose();\n }\n\n private checkActive(): void {\n if (this.disposed) throw new Error(\"Analytic pattern has been disposed\");\n if (this.source.isDisposed) throw new Error(\"Analytic pattern source has been disposed\");\n }\n}\n\nexport function linearPattern(\n source: AnalyticSolid,\n count: number,\n spacing: THREE.Vector3,\n): AnalyticPattern {\n if (!Number.isInteger(count) || count < 1 || count > 100_000) {\n throw new Error(\"Linear pattern count must be an integer from 1 to 100,000\");\n }\n if (!(spacing instanceof THREE.Vector3) || ![spacing.x, spacing.y, spacing.z].every(Number.isFinite)) {\n throw new Error(\"Linear pattern spacing must be a finite Vector3\");\n }\n return new AnalyticPattern(source, Array.from({ length: count }, (_, index) => ({\n matrix: new THREE.Matrix4().makeTranslation(spacing.x * index, spacing.y * index, spacing.z * index),\n })));\n}\n\nexport function rectangularPattern(\n source: AnalyticSolid,\n counts: readonly [number, number],\n spacing: readonly [THREE.Vector3, THREE.Vector3],\n): AnalyticPattern {\n if (counts.some((count) => !Number.isInteger(count) || count < 1) || counts[0] * counts[1] > 100_000) {\n throw new Error(\"Rectangular pattern counts must be positive integers with at most 100,000 instances\");\n }\n if (spacing.some((vector) => !(vector instanceof THREE.Vector3)\n || ![vector.x, vector.y, vector.z].every(Number.isFinite))) {\n throw new Error(\"Rectangular pattern spacing vectors must be finite\");\n }\n const instances: AnalyticPatternInstance[] = [];\n for (let row = 0; row < counts[1]; row += 1) {\n for (let column = 0; column < counts[0]; column += 1) {\n instances.push({\n id: `${source.ogid}:instance-${column}-${row}`,\n matrix: new THREE.Matrix4().makeTranslation(\n spacing[0].x * column + spacing[1].x * row,\n spacing[0].y * column + spacing[1].y * row,\n spacing[0].z * column + spacing[1].z * row,\n ),\n });\n }\n }\n return new AnalyticPattern(source, instances);\n}\n\nexport function circularPattern(\n source: AnalyticSolid,\n count: number,\n radius: number,\n options: { startAngle?: number; sweepAngle?: number; rotateInstances?: boolean } = {},\n): AnalyticPattern {\n if (!Number.isInteger(count) || count < 1 || count > 100_000) {\n throw new Error(\"Circular pattern count must be an integer from 1 to 100,000\");\n }\n if (!Number.isFinite(radius) || radius < 0) throw new Error(\"Circular pattern radius must be finite and nonnegative\");\n const start = options.startAngle ?? 0;\n const sweep = options.sweepAngle ?? Math.PI * 2;\n if (![start, sweep].every(Number.isFinite) || sweep === 0) {\n throw new Error(\"Circular pattern angles must be finite with a nonzero sweep\");\n }\n const closed = Math.abs(Math.abs(sweep) - Math.PI * 2) <= 64 * Number.EPSILON;\n const denominator = closed ? count : Math.max(1, count - 1);\n const instances = Array.from({ length: count }, (_, index) => {\n const angle = start + sweep * index / denominator;\n const matrix = new THREE.Matrix4().makeTranslation(radius * Math.cos(angle), 0, radius * Math.sin(angle));\n if (options.rotateInstances ?? true) matrix.multiply(new THREE.Matrix4().makeRotationY(-angle));\n return { id: `${source.ogid}:instance-${index}`, matrix };\n });\n return new AnalyticPattern(source, instances);\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\n\nimport type {\n ParametricEditCapabilities,\n ParametricEditFamily,\n ParametricEntityType,\n ParametricPlacement,\n} from \"./types\";\nimport type { ObjectTransformation } from \"../freeform/types\";\n\nfunction cloneVector(\n vector: Vector3 | undefined,\n fallback: [number, number, number]\n): Vector3 {\n return vector?.clone() ?? new Vector3(...fallback);\n}\n\n/**\n * Returns the canonical capability payload exposed by parametric wrappers.\n */\nexport function createParametricEditCapabilities(\n entityType: ParametricEntityType,\n editFamily: ParametricEditFamily\n): ParametricEditCapabilities {\n return {\n editingMode: \"parametric\",\n entityType,\n editFamily,\n canEditConfig: true,\n canEditPlacement: true,\n canConvertToFreeform: true,\n };\n}\n\n/**\n * Normalizes optional placement fields into concrete vectors.\n */\nexport function clonePlacement(\n placement: Partial<ParametricPlacement>\n): ParametricPlacement {\n return {\n translation: cloneVector(placement.translation, [0, 0, 0]),\n rotation: cloneVector(placement.rotation, [0, 0, 0]),\n scale: cloneVector(placement.scale, [1, 1, 1]),\n };\n}\n\n/**\n * Converts a parametric placement payload into the freeform/object transform\n * structure expected by BRep-backed helpers.\n */\nexport function toObjectTransformation(\n placement: ParametricPlacement | ObjectTransformation\n): ObjectTransformation {\n if (\"anchor\" in placement) {\n return {\n anchor: cloneVector(placement.anchor, [0, 0, 0]),\n translation: cloneVector(placement.translation, [0, 0, 0]),\n rotation: cloneVector(placement.rotation, [0, 0, 0]),\n scale: cloneVector(placement.scale, [1, 1, 1]),\n };\n }\n\n return {\n anchor: new Vector3(0, 0, 0),\n translation: cloneVector(placement.translation, [0, 0, 0]),\n rotation: cloneVector(placement.rotation, [0, 0, 0]),\n scale: cloneVector(placement.scale, [1, 1, 1]),\n };\n}\n","import {\n OGFreeformEditor as KernelFreeformEditor,\n Vector3,\n} from \"../../../opengeometry/pkg/opengeometry\";\n\nimport { FreeformGeometry } from \"../freeform\";\nimport type { ObjectTransformation } from \"../freeform/types\";\nimport type {\n EdgeInfo,\n EditOperationOptions,\n FaceInfo,\n FreeformEditCapabilities,\n FreeformEditResult,\n FreeformFeatureEditCapabilities,\n TopologyId,\n TopologyRenderData,\n TopologyVertexRenderData,\n VertexInfo,\n} from \"./types\";\n\ntype RawFreeformOperationCapabilities = {\n can_push_pull_face: boolean;\n can_move_face: boolean;\n can_extrude_face: boolean;\n can_cut_face: boolean;\n can_move_edge: boolean;\n can_move_vertex: boolean;\n can_insert_vertex_on_edge: boolean;\n can_remove_vertex: boolean;\n can_split_edge: boolean;\n can_loop_cut: boolean;\n reasons?: string[];\n};\n\ntype RawFreeformFeatureEditCapabilities = RawFreeformOperationCapabilities & {\n domain: \"face\" | \"edge\" | \"vertex\";\n topology_id: TopologyId;\n};\n\nfunction parseJson<T>(payload: string): T {\n return JSON.parse(payload) as T;\n}\n\nfunction toVector3(value: { x: number; y: number; z: number }): Vector3 {\n return new Vector3(value.x, value.y, value.z);\n}\n\nfunction toPlainVector3(value: { x: number; y: number; z: number }) {\n return {\n x: value.x,\n y: value.y,\n z: value.z,\n };\n}\n\nfunction normalizePlacement(\n placement: ObjectTransformation\n): ObjectTransformation {\n return {\n anchor: toVector3(placement.anchor),\n translation: toVector3(placement.translation),\n rotation: toVector3(placement.rotation),\n scale: toVector3(placement.scale),\n };\n}\n\nfunction normalizeFaceInfo(face: FaceInfo): FaceInfo {\n return {\n ...face,\n centroid: toVector3(face.centroid),\n normal: toVector3(face.normal),\n };\n}\n\nfunction normalizeEdgeInfo(edge: EdgeInfo): EdgeInfo {\n return {\n ...edge,\n start: toVector3(edge.start),\n end: toVector3(edge.end),\n };\n}\n\nfunction normalizeVertexInfo(vertex: VertexInfo): VertexInfo {\n return {\n ...vertex,\n position: toVector3(vertex.position),\n };\n}\n\nfunction normalizeTopologyRenderData(\n topology: TopologyRenderData\n): TopologyRenderData {\n return {\n ...topology,\n vertices: topology.vertices.map((vertex) =>\n normalizeTopologyVertex(vertex)\n ),\n };\n}\n\nfunction normalizeTopologyVertex(\n vertex: TopologyVertexRenderData\n): TopologyVertexRenderData {\n return {\n ...vertex,\n position: toVector3(vertex.position),\n };\n}\n\nfunction normalizeFeatureCapabilities(\n raw: RawFreeformFeatureEditCapabilities\n): FreeformFeatureEditCapabilities {\n return {\n domain: raw.domain,\n topologyId: raw.topology_id,\n canPushPullFace: raw.can_push_pull_face,\n canMoveFace: raw.can_move_face,\n canExtrudeFace: raw.can_extrude_face,\n canCutFace: raw.can_cut_face,\n canMoveEdge: raw.can_move_edge,\n canMoveVertex: raw.can_move_vertex,\n canInsertVertexOnEdge: raw.can_insert_vertex_on_edge,\n canRemoveVertex: raw.can_remove_vertex,\n canSplitEdge: raw.can_split_edge,\n canLoopCut: raw.can_loop_cut,\n reasons: raw.reasons,\n };\n}\n\nfunction normalizeFreeformCapabilities(\n raw: RawFreeformOperationCapabilities\n): FreeformEditCapabilities {\n return {\n editingMode: \"freeform\",\n entityType: \"freeform\",\n editFamily: \"freeform\",\n canEditConfig: false,\n canEditPlacement: false,\n canConvertToFreeform: false,\n canPushPullFace: raw.can_push_pull_face,\n canMoveFace: raw.can_move_face,\n canExtrudeFace: raw.can_extrude_face,\n canCutFace: raw.can_cut_face,\n canMoveEdge: raw.can_move_edge,\n canMoveVertex: raw.can_move_vertex,\n canInsertVertexOnEdge: raw.can_insert_vertex_on_edge,\n canRemoveVertex: raw.can_remove_vertex,\n canSplitEdge: raw.can_split_edge,\n canLoopCut: raw.can_loop_cut,\n reasons: raw.reasons,\n };\n}\n\nfunction parseEditResult(payload: string): FreeformEditResult {\n const result = parseJson<FreeformEditResult>(payload);\n return {\n ...result,\n placement: normalizePlacement(result.placement),\n };\n}\n\nfunction serializeOptions(options?: EditOperationOptions): string | undefined {\n if (!options) {\n return undefined;\n }\n\n return JSON.stringify({\n ...options,\n constraintAxis: options.constraintAxis\n ? toPlainVector3(options.constraintAxis)\n : undefined,\n constraintPlaneNormal: options.constraintPlaneNormal\n ? toPlainVector3(options.constraintPlaneNormal)\n : undefined,\n });\n}\n\n/**\n * High-level editor facade over the kernel freeform editing API.\n */\nexport class FreeformEditor {\n private readonly geometry: FreeformGeometry;\n private readonly editor: KernelFreeformEditor;\n\n constructor(\n geometry: FreeformGeometry,\n editor: KernelFreeformEditor = new KernelFreeformEditor()\n ) {\n this.geometry = geometry;\n this.editor = editor;\n }\n\n /**\n * Returns the freeform geometry currently managed by this editor.\n */\n getFreeformGeometry(): FreeformGeometry {\n return this.geometry;\n }\n\n /**\n * Returns renderable topology buffers for faces, edges, and vertices.\n */\n getTopologyRenderData(): TopologyRenderData {\n return normalizeTopologyRenderData(\n parseJson<TopologyRenderData>(\n this.editor.getTopologyRenderData(this.geometry.getKernelGeometry())\n )\n );\n }\n\n /**\n * Returns semantic and topological information for a face id.\n */\n getFaceInfo(faceId: TopologyId): FaceInfo {\n return normalizeFaceInfo(\n parseJson<FaceInfo>(\n this.editor.getFaceInfo(this.geometry.getKernelGeometry(), faceId)\n )\n );\n }\n\n /**\n * Returns semantic and topological information for an edge id.\n */\n getEdgeInfo(edgeId: TopologyId): EdgeInfo {\n return normalizeEdgeInfo(\n parseJson<EdgeInfo>(\n this.editor.getEdgeInfo(this.geometry.getKernelGeometry(), edgeId)\n )\n );\n }\n\n /**\n * Returns semantic and topological information for a vertex id.\n */\n getVertexInfo(vertexId: TopologyId): VertexInfo {\n return normalizeVertexInfo(\n parseJson<VertexInfo>(\n this.editor.getVertexInfo(this.geometry.getKernelGeometry(), vertexId)\n )\n );\n }\n\n /**\n * Returns global edit capabilities for the current freeform model.\n */\n getEditCapabilities(): FreeformEditCapabilities {\n return normalizeFreeformCapabilities(\n parseJson<RawFreeformOperationCapabilities>(\n this.editor.getEditCapabilities(this.geometry.getKernelGeometry())\n )\n );\n }\n\n /**\n * Returns edit capabilities scoped to a single face.\n */\n getFaceEditCapabilities(faceId: TopologyId): FreeformFeatureEditCapabilities {\n return normalizeFeatureCapabilities(\n parseJson<RawFreeformFeatureEditCapabilities>(\n this.editor.getFaceEditCapabilities(this.geometry.getKernelGeometry(), faceId)\n )\n );\n }\n\n /**\n * Returns edit capabilities scoped to a single edge.\n */\n getEdgeEditCapabilities(edgeId: TopologyId): FreeformFeatureEditCapabilities {\n return normalizeFeatureCapabilities(\n parseJson<RawFreeformFeatureEditCapabilities>(\n this.editor.getEdgeEditCapabilities(this.geometry.getKernelGeometry(), edgeId)\n )\n );\n }\n\n /**\n * Returns edit capabilities scoped to a single vertex.\n */\n getVertexEditCapabilities(\n vertexId: TopologyId\n ): FreeformFeatureEditCapabilities {\n return normalizeFeatureCapabilities(\n parseJson<RawFreeformFeatureEditCapabilities>(\n this.editor.getVertexEditCapabilities(\n this.geometry.getKernelGeometry(),\n vertexId\n )\n )\n );\n }\n\n /**\n * Offset a face along its editable normal direction.\n */\n pushPullFace(\n faceId: TopologyId,\n distance: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.pushPullFace(\n this.geometry.getKernelGeometry(),\n faceId,\n distance,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Creates new side faces by extruding a face region.\n */\n extrudeFace(\n faceId: TopologyId,\n distance: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.extrudeFace(\n this.geometry.getKernelGeometry(),\n faceId,\n distance,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Splits a face by connecting two points sampled on its boundary edges.\n */\n cutFace(\n faceId: TopologyId,\n startEdgeId: TopologyId,\n startT: number,\n endEdgeId: TopologyId,\n endT: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.cutFace(\n this.geometry.getKernelGeometry(),\n faceId,\n startEdgeId,\n startT,\n endEdgeId,\n endT,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Moves a face by a translation vector, subject to kernel constraints.\n */\n moveFace(\n faceId: TopologyId,\n translation: Vector3,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.moveFace(\n this.geometry.getKernelGeometry(),\n faceId,\n translation,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Moves an edge by a translation vector, subject to kernel constraints.\n */\n moveEdge(\n edgeId: TopologyId,\n translation: Vector3,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.moveEdge(\n this.geometry.getKernelGeometry(),\n edgeId,\n translation,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Moves a vertex by a translation vector, subject to kernel constraints.\n */\n moveVertex(\n vertexId: TopologyId,\n translation: Vector3,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.moveVertex(\n this.geometry.getKernelGeometry(),\n vertexId,\n translation,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Inserts a vertex at parametric position `t` along an edge.\n */\n insertVertexOnEdge(\n edgeId: TopologyId,\n t: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.insertVertexOnEdge(\n this.geometry.getKernelGeometry(),\n edgeId,\n t,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Splits an edge at parametric position `t`.\n */\n splitEdge(\n edgeId: TopologyId,\n t: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.splitEdge(\n this.geometry.getKernelGeometry(),\n edgeId,\n t,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Creates a loop cut that propagates from the selected edge when possible.\n */\n loopCut(\n edgeId: TopologyId,\n t: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.loopCut(\n this.geometry.getKernelGeometry(),\n edgeId,\n t,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Removes a vertex when the current topology allows the edit.\n */\n removeVertex(\n vertexId: TopologyId,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.removeVertex(\n this.geometry.getKernelGeometry(),\n vertexId,\n serializeOptions(options)\n )\n );\n }\n}\n\n/**\n * Convenience factory for creating a freeform editor around a geometry wrapper.\n */\nexport function createFreeformEditor(\n geometry: FreeformGeometry\n): FreeformEditor {\n return new FreeformEditor(geometry);\n}\n","import {\n OGFreeformGeometry,\n Vector3,\n} from \"../../../opengeometry/pkg/opengeometry\";\n\nimport type {\n CreateFreeformGeometryOptions,\n FreeformSource,\n ObjectTransformation,\n} from \"./types\";\n\nfunction parseJson<T>(payload: string): T {\n return JSON.parse(payload) as T;\n}\n\nfunction toVector3(value: { x: number; y: number; z: number }): Vector3 {\n return new Vector3(value.x, value.y, value.z);\n}\n\nfunction toPlainVector3(value: { x: number; y: number; z: number }) {\n return {\n x: value.x,\n y: value.y,\n z: value.z,\n };\n}\n\nfunction cloneVector(\n vector: Vector3 | undefined,\n fallback: [number, number, number]\n): Vector3 {\n return vector?.clone() ?? new Vector3(...fallback);\n}\n\nfunction normalizePlacement(\n placement: ObjectTransformation\n): ObjectTransformation {\n return {\n anchor: toVector3(placement.anchor),\n translation: toVector3(placement.translation),\n rotation: toVector3(placement.rotation),\n scale: toVector3(placement.scale),\n };\n}\n\nfunction toObjectTransformation(\n placement: NonNullable<CreateFreeformGeometryOptions[\"placement\"]>\n): ObjectTransformation {\n return {\n anchor: cloneVector(placement.anchor, [0, 0, 0]),\n translation: cloneVector(placement.translation, [0, 0, 0]),\n rotation: cloneVector(placement.rotation, [0, 0, 0]),\n scale: cloneVector(placement.scale, [1, 1, 1]),\n };\n}\n\nfunction toPlainObjectTransformation(transform: ObjectTransformation) {\n return {\n anchor: toPlainVector3(transform.anchor),\n translation: toPlainVector3(transform.translation),\n rotation: toPlainVector3(transform.rotation),\n scale: toPlainVector3(transform.scale),\n };\n}\n\nfunction serializeBrepLike(value: unknown): string {\n return typeof value === \"string\" ? value : JSON.stringify(value);\n}\n\nfunction normalizeFreeformSerialized(source: FreeformSource): string {\n if (typeof source === \"string\") {\n return source;\n }\n\n if (typeof source.getLocalBrepSerialized === \"function\") {\n return source.getLocalBrepSerialized();\n }\n\n if (typeof source.getLocalBrepData === \"function\") {\n return serializeBrepLike(source.getLocalBrepData());\n }\n\n if (typeof source.getBrepSerialized === \"function\") {\n return source.getBrepSerialized();\n }\n\n if (typeof source.getBrepData === \"function\") {\n return serializeBrepLike(source.getBrepData());\n }\n\n if (typeof source.getBrep === \"function\") {\n return serializeBrepLike(source.getBrep());\n }\n\n return JSON.stringify(source);\n}\n\n/**\n * Thin client-side wrapper around the kernel `OGFreeformGeometry` object.\n */\nexport class FreeformGeometry {\n private readonly geometry: OGFreeformGeometry;\n\n constructor(geometry: OGFreeformGeometry) {\n this.geometry = geometry;\n }\n\n /**\n * Returns the stable kernel-side id for this freeform geometry object.\n */\n getId(): string {\n return this.geometry.id;\n }\n\n /**\n * Returns the world-space serialized BRep payload.\n */\n getBrepSerialized(): string {\n return this.geometry.getBrepSerialized();\n }\n\n /**\n * Returns the local-space serialized BRep payload.\n */\n getLocalBrepSerialized(): string {\n return this.geometry.getLocalBrepSerialized();\n }\n\n /**\n * Returns the serialized triangle position buffer emitted by the kernel.\n */\n getGeometrySerialized(): string {\n return this.geometry.getGeometrySerialized();\n }\n\n /**\n * Returns world-space triangle positions as a plain number array.\n */\n getGeometryBuffer(): number[] {\n return Array.from(this.geometry.getGeometryBuffer());\n }\n\n /**\n * Returns local-space triangle positions as a plain number array.\n */\n getLocalGeometryBuffer(): number[] {\n return Array.from(this.geometry.getLocalGeometryBuffer());\n }\n\n /**\n * Returns the serialized outline buffer emitted by the kernel.\n */\n getOutlineGeometrySerialized(): string {\n return this.geometry.getOutlineGeometrySerialized();\n }\n\n /**\n * Returns world-space outline segment positions as a plain number array.\n */\n getOutlineGeometryBuffer(): number[] {\n return Array.from(this.geometry.getOutlineGeometryBuffer());\n }\n\n /**\n * Returns local-space outline segment positions as a plain number array.\n */\n getLocalOutlineGeometryBuffer(): number[] {\n return Array.from(this.geometry.getLocalOutlineGeometryBuffer());\n }\n\n /**\n * Returns the current normalized placement for this freeform geometry.\n */\n getPlacement(): ObjectTransformation {\n return normalizePlacement(\n parseJson<ObjectTransformation>(this.geometry.getPlacementSerialized())\n );\n }\n\n /**\n * Replaces the full placement transform in one call.\n */\n setPlacement(transform: ObjectTransformation): void {\n this.geometry.setPlacementSerialized(\n JSON.stringify(toPlainObjectTransformation(transform))\n );\n }\n\n /**\n * Sets translation, rotation, and scale without changing the current anchor.\n */\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3): void {\n this.geometry.setTransform(translation, rotation, scale);\n }\n\n /**\n * Updates only the translation component of the placement.\n */\n setTranslation(translation: Vector3): void {\n this.geometry.setTranslation(translation);\n }\n\n /**\n * Updates only the rotation component of the placement.\n */\n setRotation(rotation: Vector3): void {\n this.geometry.setRotation(rotation);\n }\n\n /**\n * Updates only the scale component of the placement.\n */\n setScale(scale: Vector3): void {\n this.geometry.setScale(scale);\n }\n\n /**\n * Updates the explicit modeling anchor used by downstream transforms.\n */\n setAnchor(anchor: Vector3): void {\n this.geometry.setAnchor(anchor);\n }\n\n /** @internal */\n getKernelGeometry(): OGFreeformGeometry {\n return this.geometry;\n }\n}\n\n/**\n * Creates a `FreeformGeometry` wrapper from serialized BRep JSON, a parsed\n * BRep object, or another wrapper exposing BRep accessors.\n */\nexport function createFreeformGeometry(\n source: FreeformSource,\n options?: CreateFreeformGeometryOptions\n): FreeformGeometry {\n const id = options?.id ?? `freeform-${Date.now()}`;\n const localBrepSerialized = normalizeFreeformSerialized(source);\n const geometry = new FreeformGeometry(\n new OGFreeformGeometry(id, localBrepSerialized)\n );\n\n if (options?.placement) {\n geometry.setPlacement(toObjectTransformation(options.placement));\n }\n\n return geometry;\n}\n\n/** Triangulates an explicitly faceted BRep, including its planar face holes. */\nexport function tessellateFacetedBrep(serialized: string): Float64Array {\n if (typeof serialized !== \"string\" || serialized.length > 64 * 1024 * 1024) {\n throw new Error(\"Faceted BRep must be serialized JSON within the 64 MiB limit\");\n }\n const data = JSON.parse(serialized) as Record<string, unknown>;\n if (data === null || typeof data !== \"object\" || \"schema_version\" in data) {\n throw new Error(\"Use analytic tessellation for a versioned analytic BRep\");\n }\n for (const name of [\"vertices\", \"edges\", \"halfedges\", \"loops\", \"faces\", \"wires\", \"shells\"]) {\n const table = data[name];\n if (!Array.isArray(table) || table.length > 2_000_000) {\n throw new Error(`Faceted BRep requires a bounded ${name} table`);\n }\n }\n const geometry = new OGFreeformGeometry(\"faceted-tessellation\", serialized);\n try {\n const positions = geometry.getLocalGeometryBuffer();\n if (!positions.length || positions.length % 9 !== 0 || positions.length > 18_000_000\n || positions.some(value => !Number.isFinite(value))) {\n throw new Error(\"Faceted BRep triangulation did not produce a finite mesh within the triangle limit\");\n }\n return positions;\n } finally {\n geometry.free();\n }\n}\n","import { OGLine, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { getUUID } from \"../utils/randomizer\";\nimport { Line2 } from 'three/examples/jsm/lines/Line2.js';\nimport { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry.js';\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for a line segment wrapper.\n */\nexport interface ILineOptions {\n ogid?: string;\n start: Vector3;\n end: Vector3;\n color: number;\n fatLines?: boolean;\n width?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Line`.\n */\nexport interface LinePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Line.setConfig(...)`.\n */\nexport type LineConfigUpdate = Partial<\n Omit<ILineOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Line` placement updates.\n */\nexport type LinePlacementUpdate = LinePlacementOptions;\n\n/**\n * Offset result returned by `Line.offset(...)`.\n */\nexport interface ILineOffsetResult {\n points: Vector3[];\n beveledVertexIndices: number[];\n isClosed: boolean;\n}\n\ntype OffsetKernelOutput = {\n points: Array<{ x: number; y: number; z: number }>;\n beveled_vertex_indices: number[];\n is_closed: boolean;\n};\n\n\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n\n\n/**\n * Simple Line defined by Two Points\n */\nexport class Line extends THREE.Line {\n ogid: string;\n options: ILineOptions = {\n start: new Vector3(0, 0, 0.5),\n end: new Vector3(1, 0, 0.5),\n color: 0x000000,\n fatLines: false,\n width: 20,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private line: OGLine;\n private fatLine: Line2 | null = null;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n if (this.fatLine && this.fatLine.material instanceof LineMaterial) {\n this.fatLine.material.color.set(color);\n }\n }\n\n constructor(options?: ILineOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n this.line = new OGLine(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n start: this.options.start.clone(),\n end: this.options.end.clone(),\n color: this.options.color,\n fatLines: this.options.fatLines,\n width: this.options.width,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Line\");\n }\n }\n\n setConfig(options: LineConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged = \"start\" in options || \"end\" in options;\n const renderChanged =\n \"color\" in options ||\n \"fatLines\" in options ||\n \"width\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.line.set_config(\n nextOptions.start.clone(),\n nextOptions.end.clone()\n );\n this.generateGeometry();\n return;\n }\n\n if (renderChanged) {\n this.updateRenderStyle();\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.line.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.line.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.line.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: LinePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.line.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"line\", \"profile\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.line.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n /**\n * Every time there are property changes, geometry needs to be discarded and regenerated.\n * This is to ensure that the geometry is always up-to-date with the current state.\n */\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private getCurrentPositions() {\n const attribute = this.geometry.getAttribute(\"position\");\n if (!attribute || attribute.itemSize !== 3) {\n return [];\n }\n\n const positions = [];\n for (let index = 0; index < attribute.count; index += 1) {\n positions.push(\n attribute.getX(index),\n attribute.getY(index),\n attribute.getZ(index)\n );\n }\n\n return positions;\n }\n\n private updateRenderStyle(bufferData?: number[]) {\n const positions = bufferData ?? this.getCurrentPositions();\n\n if (this.options.fatLines) {\n if (!this.fatLine) {\n this.fatLine = new Line2(\n new LineGeometry(),\n new LineMaterial({\n color: this.options.color,\n linewidth: this.options.width,\n resolution: new THREE.Vector2(window.innerWidth, window.innerHeight),\n })\n );\n this.add(this.fatLine);\n }\n\n this.fatLine.geometry.setPositions(positions);\n (this.fatLine.material as LineMaterial).color.set(this.options.color);\n (this.fatLine.material as LineMaterial).linewidth = this.options.width ?? 5;\n (this.fatLine.material as LineMaterial).resolution.set(\n window.innerWidth,\n window.innerHeight\n );\n this.fatLine.visible = true;\n } else if (this.fatLine) {\n this.fatLine.visible = false;\n }\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.visible = !this.options.fatLines;\n }\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.line.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n\n this.updateRenderStyle(bufferData);\n }\n\n getDXF() {\n const dxfData = this.line.get_dxf_serialized();\n return dxfData;\n }\n\n getOffset(\n distance: number,\n acuteThresholdDegrees: number = 35.0,\n bevel: boolean = true\n ): ILineOffsetResult {\n const kernel = this.line as unknown as {\n get_offset_serialized?: OffsetKernelFn;\n };\n if (typeof kernel.get_offset_serialized !== \"function\") {\n throw new Error(\n \"Offset API is not available in OGLine. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const serialized = kernel.get_offset_serialized(\n distance,\n acuteThresholdDegrees,\n bevel\n );\n\n const parsed = JSON.parse(serialized) as OffsetKernelOutput;\n return {\n points: parsed.points.map((point) => new Vector3(point.x, point.y, point.z)),\n beveledVertexIndices: parsed.beveled_vertex_indices ?? [],\n isClosed: Boolean(parsed.is_closed),\n };\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from 'three';\nimport { OGPolyline, Vector3 } from '../../../opengeometry/pkg/opengeometry';\nimport { getUUID } from \"../utils/randomizer\";\nimport { Line2 } from 'three/examples/jsm/lines/Line2.js';\nimport { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry.js';\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for an ordered polyline wrapper.\n */\nexport interface IPolylineOptions {\n ogid?: string;\n color: number;\n points: Vector3[];\n fatLines?: boolean;\n width?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Polyline`.\n */\nexport interface PolylinePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Polyline.setConfig(...)`.\n */\nexport type PolylineConfigUpdate = Partial<\n Omit<IPolylineOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Polyline` placement updates.\n */\nexport type PolylinePlacementUpdate = PolylinePlacementOptions;\n\n/**\n * Offset result returned by `Polyline.offset(...)`.\n */\nexport interface IOffsetResult {\n points: Vector3[];\n beveledVertexIndices: number[];\n isClosed: boolean;\n}\n\ntype OffsetKernelOutput = {\n points: Array<{ x: number; y: number; z: number }>;\n beveled_vertex_indices: number[];\n is_closed: boolean;\n};\n\n\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n\n\n/**\n * Polyline wrapper backed by the kernel OGPolyline primitive.\n */\nexport class Polyline extends THREE.Line {\n ogid: string;\n options: IPolylineOptions = {\n points: [],\n color: 0x00ff00,\n fatLines: false,\n width: 20,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n isClosed: boolean = false;\n\n private polyline: OGPolyline;\n private fatLine: Line2 | null = null;\n\n transformationMatrix: THREE.Matrix4 = new THREE.Matrix4();\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n if (this.fatLine && this.fatLine.material instanceof LineMaterial) {\n this.fatLine.material.color.set(color);\n }\n }\n\n constructor(options?: IPolylineOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n this.polyline = new OGPolyline(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n points: this.options.points.map((point) => point.clone()),\n color: this.options.color,\n fatLines: this.options.fatLines,\n width: this.options.width,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Polyline\");\n }\n }\n\n setConfig(options: PolylineConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged = \"points\" in options;\n const renderChanged =\n \"color\" in options ||\n \"fatLines\" in options ||\n \"width\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.polyline.set_config(nextOptions.points.map((point) => point.clone()));\n this.generateGeometry();\n return;\n }\n\n if (renderChanged) {\n this.updateRenderStyle();\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.polyline.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.polyline.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.polyline.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: PolylinePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.polyline.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"polyline\", \"profile\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.polyline.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n addPoint(point: Vector3) {\n if (!this.polyline) return;\n\n const { points } = this.options;\n points.push(point);\n\n if (this.options.points.length < 2) return;\n this.setConfig({\n points: this.options.points.map((currentPoint) => currentPoint.clone()),\n });\n }\n\n /**\n * Every time there are property changes, geometry needs to be discarded and regenerated.\n * This is to ensure that the geometry is always up-to-date with the current state.\n */\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private getCurrentPositions() {\n const attribute = this.geometry.getAttribute(\"position\");\n if (!attribute || attribute.itemSize !== 3) {\n return [];\n }\n\n const positions = [];\n for (let index = 0; index < attribute.count; index += 1) {\n positions.push(\n attribute.getX(index),\n attribute.getY(index),\n attribute.getZ(index)\n );\n }\n\n return positions;\n }\n\n private updateRenderStyle(bufferData?: number[]) {\n const positions = bufferData ?? this.getCurrentPositions();\n\n if (this.options.fatLines) {\n if (!this.fatLine) {\n this.fatLine = new Line2(\n new LineGeometry(),\n new LineMaterial({\n color: this.options.color,\n linewidth: this.options.width,\n resolution: new THREE.Vector2(window.innerWidth, window.innerHeight),\n })\n );\n this.add(this.fatLine);\n }\n\n this.fatLine.geometry.setPositions(positions);\n (this.fatLine.material as LineMaterial).color.set(this.options.color);\n (this.fatLine.material as LineMaterial).linewidth = this.options.width ?? 5;\n (this.fatLine.material as LineMaterial).resolution.set(\n window.innerWidth,\n window.innerHeight\n );\n this.fatLine.visible = true;\n } else if (this.fatLine) {\n this.fatLine.visible = false;\n }\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.visible = !this.options.fatLines;\n }\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.polyline.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n\n this.updateRenderStyle(bufferData);\n\n this.isClosed = this.polyline.is_closed();\n }\n\n getOffset(\n distance: number,\n acuteThresholdDegrees: number = 35.0,\n bevel: boolean = true\n ): IOffsetResult {\n const kernel = this.polyline as unknown as {\n get_offset_serialized?: OffsetKernelFn;\n };\n if (typeof kernel.get_offset_serialized !== \"function\") {\n throw new Error(\n \"Offset API is not available in OGPolyline. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const serialized = kernel.get_offset_serialized(\n distance,\n acuteThresholdDegrees,\n bevel\n );\n\n const parsed = JSON.parse(serialized) as OffsetKernelOutput;\n return {\n points: parsed.points.map((point) => new Vector3(point.x, point.y, point.z)),\n beveledVertexIndices: parsed.beveled_vertex_indices ?? [],\n isClosed: Boolean(parsed.is_closed),\n };\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from \"three\";\nimport { OGAnalyticBrep } from \"../../../opengeometry/pkg/opengeometry\";\nimport type { AnalyticAccuracy, AnalyticFrame } from \"../shapes/analytic-solid\";\nimport { getUUID } from \"../utils/randomizer\";\nimport { GEOMETRY_DEFLECTION_SHARE } from \"../rendering/analytic-tessellation\";\n\nexport type AnalyticCurveOptions = {\n ogid?: string;\n frame?: AnalyticFrame;\n accuracy?: AnalyticAccuracy;\n startAngle: number;\n sweepAngle: number;\n deflection?: number;\n color?: THREE.ColorRepresentation;\n} & (\n | { kind: \"arc\"; radius: number }\n | { kind: \"ellipticalArc\"; majorRadius: number; minorRadius: number }\n);\n\nexport interface AnalyticCurveStats {\n requestedDeflection: number;\n achievedDeflection: number;\n segmentCount: number;\n revision: bigint;\n}\n\nexport class AnalyticCurve extends THREE.Group {\n readonly ogid: string;\n readonly line: THREE.LineSegments<THREE.BufferGeometry, THREE.LineBasicMaterial>;\n protected kernel: OGAnalyticBrep;\n private segmentEdges = new Uint32Array(0);\n private disposed = false;\n\n get color(): THREE.Color { return this.line.material.color; }\n set color(value: THREE.ColorRepresentation) {\n this.checkActive();\n this.line.material.color.set(value);\n this.line.material.needsUpdate = true;\n }\n\n constructor(options: AnalyticCurveOptions) {\n super();\n this.ogid = options.ogid ?? getUUID();\n const frame = options.frame ?? {\n origin: [0, 0, 0], x: [1, 0, 0], y: [0, 0, -1], z: [0, 1, 0],\n };\n const radius = options.kind === \"arc\" ? options.radius : options.majorRadius;\n const geometric = Math.max(1e-9, 2 * radius * 1e-8, ...frame.origin.map(value => Math.abs(value) * 64 * Number.EPSILON));\n const accuracy = options.accuracy ?? { geometric, intersection: geometric / 4, tessellation: 0.001, exchange: 0.00001 };\n this.kernel = createKernel(options, this.ogid, frame, accuracy);\n this.line = new THREE.LineSegments(new THREE.BufferGeometry(), new THREE.LineBasicMaterial({ color: options.color ?? 0x2563eb }));\n this.line.userData.ogid = this.ogid;\n this.add(this.line);\n try { this.retessellate(options.deflection ?? accuracy.tessellation); }\n catch (error) { this.dispose(); throw error; }\n }\n\n getBrepSerialized(): string {\n this.checkActive();\n return this.kernel.get_brep_serialized();\n }\n\n getBrepData(): Record<string, unknown> {\n return JSON.parse(this.getBrepSerialized()) as Record<string, unknown>;\n }\n\n protected replaceDefinition(options: AnalyticCurveOptions): AnalyticCurveStats {\n this.checkActive();\n const frame = options.frame ?? {\n origin: [0, 0, 0], x: [1, 0, 0], y: [0, 0, -1], z: [0, 1, 0],\n };\n const radius = options.kind === \"arc\" ? options.radius : options.majorRadius;\n const geometric = Math.max(1e-9, 2 * radius * 1e-8, ...frame.origin.map(value => Math.abs(value) * 64 * Number.EPSILON));\n const accuracy = options.accuracy ?? { geometric, intersection: geometric / 4, tessellation: 0.001, exchange: 0.00001 };\n const next = createKernel(options, this.ogid, frame, accuracy);\n const previous = this.kernel;\n this.kernel = next;\n try {\n const statistics = this.retessellate(options.deflection ?? accuracy.tessellation);\n if (options.color !== undefined) this.color = options.color;\n previous.free();\n return statistics;\n } catch (error) {\n this.kernel = previous;\n next.free();\n throw error;\n }\n }\n\n edgeIdForSegment(segment: number): number | undefined {\n if (!Number.isInteger(segment) || segment < 0) return undefined;\n return this.segmentEdges[segment];\n }\n\n retessellate(deflection: number): AnalyticCurveStats {\n this.checkActive();\n if (!Number.isFinite(deflection) || deflection <= 0) throw new Error(\"Deflection must be finite and positive\");\n const result = this.kernel.tessellate(deflection * GEOMETRY_DEFLECTION_SHARE);\n try {\n const bounds = this.kernel.get_bounds();\n const origin = [0, 1, 2].map(i => bounds[i] / 2 + bounds[i + 3] / 2);\n const positions = result.outline_positions();\n const packed = new Float32Array(positions.length);\n let encodingError = 0;\n for (let i = 0; i < positions.length; i += 3) {\n const errors = [0, 0, 0];\n for (let j = 0; j < 3; j++) {\n const local = positions[i + j] - origin[j]; packed[i + j] = local;\n errors[j] = Math.abs(local - packed[i + j]);\n }\n encodingError = Math.max(encodingError, Math.hypot(...errors));\n }\n if (!Number.isFinite(encodingError) || encodingError > deflection / 4) throw new Error(\"GPU coordinate precision cannot represent the requested deflection\");\n const edgeIds = result.outline_edge_ids();\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(packed, 3));\n geometry.computeBoundingBox(); geometry.computeBoundingSphere();\n const previous = this.line.geometry;\n this.line.geometry = geometry; this.line.position.set(origin[0], origin[1], origin[2]);\n this.segmentEdges = edgeIds; previous.dispose();\n return { requestedDeflection: deflection, achievedDeflection: result.achieved_deflection() + encodingError, segmentCount: edgeIds.length, revision: result.revision() };\n } finally { result.free(); }\n }\n\n dispose(): void {\n if (this.disposed) return;\n this.disposed = true;\n this.line.geometry.dispose(); this.line.material.dispose(); this.kernel.free();\n }\n private checkActive(): void { if (this.disposed) throw new Error(\"AnalyticCurve has been disposed\"); }\n}\n\nfunction createKernel(\n options: AnalyticCurveOptions,\n id: string,\n frame: AnalyticFrame,\n accuracy: AnalyticAccuracy,\n): OGAnalyticBrep {\n return OGAnalyticBrep.from_primitive(JSON.stringify({\n kind: options.kind === \"arc\" ? \"arc\" : \"elliptical_arc\", id, frame, accuracy,\n start_angle: options.startAngle, sweep_angle: options.sweepAngle,\n ...(options.kind === \"arc\"\n ? { radius: options.radius }\n : { major_radius: options.majorRadius, minor_radius: options.minorRadius }),\n }));\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\n\nimport { AnalyticCurve, type AnalyticCurveStats } from \"./analytic-curve\";\nimport type { AnalyticAccuracy, AnalyticFrame } from \"../shapes/analytic-solid\";\n\nexport interface IArcOptions {\n ogid?: string;\n center?: Vector3;\n radius?: number;\n startAngle?: number;\n sweepAngle?: number;\n deflection?: number;\n accuracy?: AnalyticAccuracy;\n color?: THREE.ColorRepresentation;\n}\n\nexport type ArcConfigUpdate = Partial<Omit<IArcOptions, \"ogid\">>;\n\ninterface NormalizedArcOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n startAngle: number;\n sweepAngle: number;\n deflection: number;\n accuracy?: AnalyticAccuracy;\n color: THREE.ColorRepresentation;\n}\n\n/** Authoritative circular edge with transient deflection tessellation. */\nexport class Arc extends AnalyticCurve {\n options: Readonly<NormalizedArcOptions>;\n\n constructor(options: IArcOptions = {}) {\n const normalized = normalizeOptions(options);\n super({\n kind: \"arc\",\n ogid: normalized.ogid,\n frame: curveFrame(normalized.center),\n accuracy: normalized.accuracy,\n radius: normalized.radius,\n startAngle: normalized.startAngle,\n sweepAngle: normalized.sweepAngle,\n deflection: normalized.deflection,\n color: normalized.color,\n });\n this.options = normalized;\n }\n\n getAnchor(): Vector3 {\n return this.options.center.clone();\n }\n\n getConfig(): Readonly<NormalizedArcOptions> {\n return this.options;\n }\n\n setConfig(update: ArcConfigUpdate): AnalyticCurveStats {\n const next = normalizeOptions({ ...this.options, ...update, ogid: this.ogid });\n const statistics = this.replaceDefinition({\n kind: \"arc\",\n ogid: this.ogid,\n frame: curveFrame(next.center),\n accuracy: next.accuracy,\n radius: next.radius,\n startAngle: next.startAngle,\n sweepAngle: next.sweepAngle,\n deflection: next.deflection,\n color: next.color,\n });\n this.options = next;\n return statistics;\n }\n\n getBrep(): Record<string, unknown> {\n return this.getBrepData();\n }\n\n retessellate(deflection: number): AnalyticCurveStats {\n return super.retessellate(deflection);\n }\n}\n\nfunction normalizeOptions(options: IArcOptions): NormalizedArcOptions {\n return {\n ogid: options.ogid,\n center: options.center ?? new Vector3(0, 0, 0),\n radius: options.radius ?? 1,\n startAngle: options.startAngle ?? 0,\n sweepAngle: options.sweepAngle ?? Math.PI * 2,\n deflection: options.deflection ?? 0.01,\n accuracy: options.accuracy,\n color: options.color ?? 0x00ff00,\n };\n}\n\nfunction curveFrame(center: Vector3): AnalyticFrame {\n return {\n origin: [center.x, center.y, center.z],\n x: [1, 0, 0],\n y: [0, 0, -1],\n z: [0, 1, 0],\n };\n}\n","import { OGRectangle, Vector3 } from \"./../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { getUUID } from \"../utils/randomizer\";\nimport { Line2 } from 'three/examples/jsm/lines/Line2.js';\nimport { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry.js';\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for a rectangle profile wrapper.\n */\nexport interface IRectangleOptions {\n ogid?: string;\n center: Vector3;\n width: number;\n breadth: number;\n color: number;\n fatLines?: boolean;\n lineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Rectangle`.\n */\nexport interface RectanglePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Rectangle.setConfig(...)`.\n */\nexport type RectangleConfigUpdate = Partial<\n Omit<IRectangleOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Rectangle` placement updates.\n */\nexport type RectanglePlacementUpdate = RectanglePlacementOptions;\n\n/**\n * Offset result returned by `Rectangle.offset(...)`.\n */\nexport interface IRectangleOffsetResult {\n points: Vector3[];\n beveledVertexIndices: number[];\n isClosed: boolean;\n}\n\ntype OffsetKernelOutput = {\n points: Array<{ x: number; y: number; z: number }>;\n beveled_vertex_indices: number[];\n is_closed: boolean;\n};\n\n\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n\n\n/**\n * Rectangle wrapper backed by the kernel OGRectangle primitive.\n */\nexport class Rectangle extends THREE.Line {\n ogid: string;\n options: IRectangleOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n breadth: 1,\n color: 0x00ff00,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private polyLineRectangle: OGRectangle;\n private fatLine: Line2 | null = null;\n\n // set width(width: number) {\n // this.options.width = width;\n // this.polyLineRectangle.update_width(width);\n // this.generateGeometry();\n // }\n\n // set breadth(breadth: number) {\n // this.options.breadth = breadth;\n // this.polyLineRectangle.update_breadth(breadth);\n // this.generateGeometry();\n // }\n\n // set center(center: Vector3) {\n // this.options.center = center;\n // this.polyLineRectangle.update_center(center);\n // this.generateGeometry();\n // }\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n if (this.fatLine && this.fatLine.material instanceof LineMaterial) {\n this.fatLine.material.color.set(color);\n }\n }\n\n // set lineWidth(lineWidth: number) {\n // this.options.lineWidth = lineWidth;\n // if (this.material instanceof THREE.LineBasicMaterial) {\n // (this.material as THREE.LineBasicMaterial).linewidth = lineWidth;\n // }\n // }\n\n // FINAL: This flow should be used for other primitives\n constructor(options?: IRectangleOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.polyLineRectangle = new OGRectangle(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n width: this.options.width,\n breadth: this.options.breadth,\n color: this.options.color,\n fatLines: this.options.fatLines,\n lineWidth: this.options.lineWidth,\n });\n \n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Rectangle\");\n }\n }\n\n setConfig(options: RectangleConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"width\" in options ||\n \"breadth\" in options;\n const renderChanged =\n \"color\" in options ||\n \"fatLines\" in options ||\n \"lineWidth\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.polyLineRectangle.set_config(\n nextOptions.center.clone(),\n nextOptions.width,\n nextOptions.breadth,\n );\n this.generateGeometry();\n return;\n }\n\n if (renderChanged) {\n this.updateRenderStyle();\n }\n }\n\n getAnchor() {\n const anchor = this.polyLineRectangle.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: RectanglePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.polyLineRectangle.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getConfig() {\n return this.options;\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"rectangle\", \"profile\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(\n this.polyLineRectangle.get_local_brep_serialized(),\n {\n id,\n placement: this.getPlacement(),\n }\n );\n }\n\n private getCurrentPositions() {\n const attribute = this.geometry.getAttribute(\"position\");\n if (!attribute || attribute.itemSize !== 3) {\n return [];\n }\n\n const positions = [];\n for (let index = 0; index < attribute.count; index += 1) {\n positions.push(\n attribute.getX(index),\n attribute.getY(index),\n attribute.getZ(index)\n );\n }\n\n return positions;\n }\n\n private updateRenderStyle(bufferData?: number[]) {\n const positions = bufferData ?? this.getCurrentPositions();\n\n if (this.options.fatLines) {\n if (!this.fatLine) {\n this.fatLine = new Line2(\n new LineGeometry(),\n new LineMaterial({\n color: this.options.color,\n linewidth: this.options.lineWidth,\n resolution: new THREE.Vector2(window.innerWidth, window.innerHeight),\n })\n );\n this.add(this.fatLine);\n }\n\n this.fatLine.geometry.setPositions(positions);\n (this.fatLine.material as LineMaterial).color.set(this.options.color);\n (this.fatLine.material as LineMaterial).linewidth = this.options.lineWidth ?? 1;\n (this.fatLine.material as LineMaterial).resolution.set(\n window.innerWidth,\n window.innerHeight\n );\n this.fatLine.visible = true;\n } else if (this.fatLine) {\n this.fatLine.visible = false;\n }\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.visible = !this.options.fatLines;\n }\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.polyLineRectangle.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n\n this.updateRenderStyle(bufferData);\n }\n\n getBrep() {\n const brepData = this.polyLineRectangle.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for Rectangle\");\n }\n return JSON.parse(brepData);\n }\n\n getOffset(\n distance: number,\n acuteThresholdDegrees: number = 35.0,\n bevel: boolean = true\n ): IRectangleOffsetResult {\n const kernel = this.polyLineRectangle as unknown as {\n get_offset_serialized?: OffsetKernelFn;\n };\n if (typeof kernel.get_offset_serialized !== \"function\") {\n throw new Error(\n \"Offset API is not available in OGRectangle. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const serialized = kernel.get_offset_serialized(\n distance,\n acuteThresholdDegrees,\n bevel\n );\n const parsed = JSON.parse(serialized) as OffsetKernelOutput;\n\n return {\n points: parsed.points.map((point) => new Vector3(point.x, point.y, point.z)),\n beveledVertexIndices: parsed.beveled_vertex_indices ?? [],\n isClosed: Boolean(parsed.is_closed),\n };\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from \"three\";\nimport { OGCurve, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for a control-point-driven curve.\n */\nexport interface ICurveOptions {\n ogid?: string;\n controlPoints: Vector3[];\n color: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Curve`.\n */\nexport interface CurvePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Curve.setConfig(...)`.\n */\nexport type CurveConfigUpdate = Partial<\n Omit<ICurveOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Curve` placement updates.\n */\nexport type CurvePlacementUpdate = CurvePlacementOptions;\n\n/**\n * Offset result returned by `Curve.offset(...)`.\n */\nexport interface ICurveOffsetResult {\n points: Vector3[];\n beveledVertexIndices: number[];\n isClosed: boolean;\n}\n\ntype OffsetKernelOutput = {\n points: Array<{ x: number; y: number; z: number }>;\n beveled_vertex_indices: number[];\n is_closed: boolean;\n};\n\n\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n\n\n/**\n * Curve wrapper backed by the kernel OGCurve primitive.\n */\nexport class Curve extends THREE.Line {\n ogid: string;\n options: ICurveOptions = {\n controlPoints: [],\n color: 0x00aa55,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private curve: OGCurve;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: ICurveOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n this.curve = new OGCurve(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n controlPoints: this.options.controlPoints.map((point) => point.clone()),\n color: this.options.color,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n setConfig(options: CurveConfigUpdate) {\n const nextOptions = { ...this.options, ...options };\n const geometryChanged = \"controlPoints\" in options;\n const colorChanged = \"color\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.curve.set_config(\n nextOptions.controlPoints.map((point) => point.clone())\n );\n this.generateGeometry();\n return;\n }\n\n if (colorChanged && this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.curve.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.curve.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.curve.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: CurvePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.curve.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"curve\", \"curve\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.curve.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.curve.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n }\n\n getOffset(\n distance: number,\n acuteThresholdDegrees: number = 35.0,\n bevel: boolean = true\n ): ICurveOffsetResult {\n const kernel = this.curve as unknown as {\n get_offset_serialized?: OffsetKernelFn;\n };\n if (typeof kernel.get_offset_serialized !== \"function\") {\n throw new Error(\n \"Offset API is not available in OGCurve. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const serialized = kernel.get_offset_serialized(\n distance,\n acuteThresholdDegrees,\n bevel\n );\n const parsed = JSON.parse(serialized) as OffsetKernelOutput;\n\n return {\n points: parsed.points.map((point) => new Vector3(point.x, point.y, point.z)),\n beveledVertexIndices: parsed.beveled_vertex_indices ?? [],\n isClosed: Boolean(parsed.is_closed),\n };\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\n\nimport { AnalyticCurve, type AnalyticCurveStats } from \"./analytic-curve\";\nimport type { AnalyticAccuracy, AnalyticFrame } from \"../shapes/analytic-solid\";\n\nexport interface IEllipticalArcOptions {\n ogid?: string;\n center?: Vector3;\n majorRadius?: number;\n minorRadius?: number;\n startAngle?: number;\n sweepAngle?: number;\n deflection?: number;\n accuracy?: AnalyticAccuracy;\n color?: THREE.ColorRepresentation;\n}\n\nexport type EllipticalArcConfigUpdate = Partial<Omit<IEllipticalArcOptions, \"ogid\">>;\n\ninterface NormalizedEllipticalArcOptions {\n ogid?: string;\n center: Vector3;\n majorRadius: number;\n minorRadius: number;\n startAngle: number;\n sweepAngle: number;\n deflection: number;\n accuracy?: AnalyticAccuracy;\n color: THREE.ColorRepresentation;\n}\n\n/** Authoritative elliptical edge with transient deflection tessellation. */\nexport class EllipticalArc extends AnalyticCurve {\n options: Readonly<NormalizedEllipticalArcOptions>;\n\n constructor(options: IEllipticalArcOptions = {}) {\n const normalized = normalizeOptions(options);\n super({\n kind: \"ellipticalArc\",\n ogid: normalized.ogid,\n frame: curveFrame(normalized.center),\n accuracy: normalized.accuracy,\n majorRadius: normalized.majorRadius,\n minorRadius: normalized.minorRadius,\n startAngle: normalized.startAngle,\n sweepAngle: normalized.sweepAngle,\n deflection: normalized.deflection,\n color: normalized.color,\n });\n this.options = normalized;\n }\n\n getAnchor(): Vector3 {\n return this.options.center.clone();\n }\n\n getConfig(): Readonly<NormalizedEllipticalArcOptions> {\n return this.options;\n }\n\n setConfig(update: EllipticalArcConfigUpdate): AnalyticCurveStats {\n const next = normalizeOptions({ ...this.options, ...update, ogid: this.ogid });\n const statistics = this.replaceDefinition({\n kind: \"ellipticalArc\",\n ogid: this.ogid,\n frame: curveFrame(next.center),\n accuracy: next.accuracy,\n majorRadius: next.majorRadius,\n minorRadius: next.minorRadius,\n startAngle: next.startAngle,\n sweepAngle: next.sweepAngle,\n deflection: next.deflection,\n color: next.color,\n });\n this.options = next;\n return statistics;\n }\n\n getBrep(): Record<string, unknown> {\n return this.getBrepData();\n }\n\n retessellate(deflection: number): AnalyticCurveStats {\n return super.retessellate(deflection);\n }\n}\n\nfunction normalizeOptions(options: IEllipticalArcOptions): NormalizedEllipticalArcOptions {\n return {\n ogid: options.ogid,\n center: options.center ?? new Vector3(0, 0, 0),\n majorRadius: options.majorRadius ?? 1,\n minorRadius: options.minorRadius ?? 0.5,\n startAngle: options.startAngle ?? 0,\n sweepAngle: options.sweepAngle ?? Math.PI * 2,\n deflection: options.deflection ?? 0.01,\n accuracy: options.accuracy,\n color: options.color ?? 0x00ff00,\n };\n}\n\nfunction curveFrame(center: Vector3): AnalyticFrame {\n return {\n origin: [center.x, center.y, center.z],\n x: [1, 0, 0],\n y: [0, 0, -1],\n z: [0, 1, 0],\n };\n}\n","import * as THREE from \"three\";\nimport { LineMaterial } from \"three/examples/jsm/lines/LineMaterial.js\";\nimport { LineSegments2 } from \"three/examples/jsm/lines/LineSegments2.js\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\n\n/**\n * Outline mesh variants used by shape wrappers.\n */\nexport type ShapeOutlineMesh = THREE.LineSegments | LineSegments2;\n\n/**\n * Options for building a shape outline mesh.\n */\nexport interface ShapeOutlineMeshOptions {\n positions: number[];\n color?: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n}\n\nconst DEFAULT_OUTLINE_COLOR = 0x000000;\nconst DEFAULT_OUTLINE_WIDTH = 1;\n\nfunction getOutlineResolution() {\n if (typeof window === \"undefined\") {\n return new THREE.Vector2(1, 1);\n }\n return new THREE.Vector2(window.innerWidth, window.innerHeight);\n}\n\n/**\n * Clamps outline width inputs to the supported positive finite range.\n */\nexport function sanitizeOutlineWidth(width?: number) {\n if (!Number.isFinite(width) || typeof width !== \"number\" || width <= 0) {\n return DEFAULT_OUTLINE_WIDTH;\n }\n return width;\n}\n\n/**\n * Creates either a thin or fat outline mesh from line segment positions.\n */\nexport function createShapeOutlineMesh({\n positions,\n color = DEFAULT_OUTLINE_COLOR,\n fatOutlines = false,\n outlineWidth = DEFAULT_OUTLINE_WIDTH,\n}: ShapeOutlineMeshOptions): ShapeOutlineMesh {\n if (fatOutlines) {\n const fatGeometry = new LineSegmentsGeometry();\n fatGeometry.setPositions(positions);\n const fatMaterial = new LineMaterial({\n color,\n linewidth: sanitizeOutlineWidth(outlineWidth),\n resolution: getOutlineResolution(),\n });\n const fatMesh = new LineSegments2(fatGeometry, fatMaterial);\n fatMesh.computeLineDistances();\n return fatMesh;\n }\n\n const outlineGeometry = new THREE.BufferGeometry();\n outlineGeometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n\n const outlineMaterial = new THREE.LineBasicMaterial({ color });\n return new THREE.LineSegments(outlineGeometry, outlineMaterial);\n}\n\n/**\n * Disposes the geometry and material owned by an outline mesh.\n */\nexport function disposeShapeOutlineMesh(mesh: ShapeOutlineMesh | null) {\n if (!mesh) {\n return;\n }\n\n mesh.geometry.dispose();\n if (Array.isArray(mesh.material)) {\n mesh.material.forEach((material) => material.dispose());\n return;\n }\n mesh.material.dispose();\n}\n\n/**\n * Updates the color of an existing outline mesh in place.\n */\nexport function setShapeOutlineColor(mesh: ShapeOutlineMesh | null, color: number) {\n if (!mesh) {\n return;\n }\n\n if (mesh.material instanceof THREE.LineBasicMaterial) {\n mesh.material.color.set(color);\n return;\n }\n\n if (mesh.material instanceof LineMaterial) {\n mesh.material.color.set(color);\n }\n}\n\n/**\n * Reads the current outline color, falling back when no outline exists.\n */\nexport function getShapeOutlineColor(\n mesh: ShapeOutlineMesh | null,\n fallback: number = DEFAULT_OUTLINE_COLOR\n) {\n if (!mesh) {\n return fallback;\n }\n\n if (mesh.material instanceof THREE.LineBasicMaterial) {\n return mesh.material.color.getHex();\n }\n\n if (mesh.material instanceof LineMaterial) {\n return mesh.material.color.getHex();\n }\n\n return fallback;\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\n\nimport type { FreeformSource } from \"../freeform\";\n\n\ntype KernelExtrudeBrepFace = (...args: [string, number]) => string;\n\n\n/**\n * Sources accepted by the BRep-face extrusion helper.\n */\nexport type ExtrudeBrepSource = FreeformSource;\n\n/**\n * Extrudes the first face or wire in a local BRep payload into a closed solid BRep.\n */\nexport function extrudeBrepFace(\n source: ExtrudeBrepSource,\n height: number\n): string {\n const extrudeExport = (OGKernel as Record<string, unknown>).extrudeBrepFace;\n if (typeof extrudeExport !== \"function\") {\n throw new Error(\n \"extrudeBrepFace is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const kernelFunction = extrudeExport as KernelExtrudeBrepFace;\n return kernelFunction(resolveLocalBrepSerialized(source), height);\n}\n\nfunction resolveLocalBrepSerialized(source: ExtrudeBrepSource): string {\n if (typeof source === \"string\") {\n return source;\n }\n\n if (typeof source.getLocalBrepSerialized === \"function\") {\n return source.getLocalBrepSerialized();\n }\n\n if (typeof source.getLocalBrepData === \"function\") {\n return serializeBrepLike(source.getLocalBrepData());\n }\n\n if (typeof source.getBrepSerialized === \"function\") {\n return source.getBrepSerialized();\n }\n\n if (typeof source.getBrepData === \"function\") {\n return serializeBrepLike(source.getBrepData());\n }\n\n if (typeof source.getBrep === \"function\") {\n return serializeBrepLike(source.getBrep());\n }\n\n return JSON.stringify(source);\n}\n\nfunction serializeBrepLike(value: unknown): string {\n return typeof value === \"string\" ? value : JSON.stringify(value);\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\n\nimport { clonePlacement, toObjectTransformation } from \"../editor\";\nimport { createFreeformGeometry, type FreeformGeometry } from \"../freeform\";\nimport type { FreeformSource, ObjectTransformation } from \"../freeform/types\";\nimport { extrudeBrepFace } from \"../operations/extrude\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n getShapeOutlineColor,\n sanitizeOutlineWidth,\n setShapeOutlineColor,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\n\n/**\n * Construction options for a generic BRep-backed solid.\n */\nexport interface ISolidOptions {\n ogid?: string;\n brep: FreeformSource;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n anchor?: Vector3;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Solid`.\n */\nexport interface SolidPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Additional options accepted when creating a `Solid` through face extrusion.\n */\nexport interface ExtrudeSolidOptions\n extends Omit<ISolidOptions, \"brep\" | \"ogid\" | \"anchor\" | \"translation\" | \"rotation\" | \"scale\"> {\n ogid?: string;\n anchor?: Vector3;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Generic renderable BRep-backed solid used for extrusion outputs and other\n * kernel results that are not dedicated parametric shapes.\n */\nexport class Solid extends THREE.Mesh {\n ogid: string;\n options: ISolidOptions = {\n brep: \"{}\",\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n anchor: new Vector3(0, 0, 0),\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private solid: FreeformGeometry;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n private _outlineColor = 0x000000;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n get color() {\n return this.options.color;\n }\n\n constructor(options: ISolidOptions) {\n super();\n\n this.ogid = options.ogid ?? getUUID();\n this.options = {\n ...this.options,\n ...options,\n ogid: this.ogid,\n anchor: cloneVector(options.anchor, [0, 0, 0]),\n translation: cloneVector(options.translation, [0, 0, 0]),\n rotation: cloneVector(options.rotation, [0, 0, 0]),\n scale: cloneVector(options.scale, [1, 1, 1]),\n };\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n this.solid = createFreeformGeometry(this.options.brep, {\n id: this.ogid,\n placement: this.getPlacementTransform(),\n });\n this.generateGeometry();\n }\n\n /**\n * Extrudes a face-like BRep source and wraps the result as a renderable solid.\n *\n * Prefer `polygon.extrude(height)` when the source is already a `Polygon`.\n */\n static extrude(\n source: FreeformSource,\n height: number,\n options: ExtrudeSolidOptions\n ) {\n return new Solid({\n ...options,\n brep: extrudeBrepFace(source, height),\n });\n }\n\n /**\n * Returns the current placement values as cloned vectors.\n */\n getPlacement() {\n return clonePlacement(this.getPlacementTransform());\n }\n\n /**\n * Applies translation, rotation, and scale updates to the wrapped BRep.\n */\n setPlacement(placement: SolidPlacementOptions) {\n this.options.translation = cloneVector(\n placement.translation ?? this.options.translation,\n [0, 0, 0]\n );\n this.options.rotation = cloneVector(\n placement.rotation ?? this.options.rotation,\n [0, 0, 0]\n );\n this.options.scale = cloneVector(\n placement.scale ?? this.options.scale,\n [1, 1, 1]\n );\n\n this.solid.setPlacement(this.getPlacementTransform());\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getAnchor() {\n return this.getPlacementTransform().anchor.clone();\n }\n\n setAnchor(anchor: Vector3) {\n this.options.anchor = anchor.clone();\n this.solid.setPlacement(this.getPlacementTransform());\n this.generateGeometry();\n }\n\n /**\n * Solid is always convertible back to the freeform editing wrapper.\n */\n canConvertToFreeform() {\n return true;\n }\n\n /**\n * Returns a freeform wrapper for direct editing of this solid's BRep.\n */\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.getLocalBrepSerialized(), {\n id,\n placement: this.getPlacementTransform(),\n });\n }\n\n /**\n * Returns the world-space serialized BRep payload for this solid.\n */\n getBrepSerialized() {\n return this.solid.getBrepSerialized();\n }\n\n /**\n * Returns the local-space serialized BRep payload for this solid.\n */\n getLocalBrepSerialized() {\n return this.solid.getLocalBrepSerialized();\n }\n\n /**\n * Returns the parsed world-space BRep object for this solid.\n */\n getBrepData() {\n const brepSerialized = this.getBrepSerialized();\n if (!brepSerialized) {\n throw new Error(\"Brep data is not available for this solid.\");\n }\n return JSON.parse(brepSerialized);\n }\n\n /**\n * Rebuilds the visible mesh and outline from the current freeform geometry.\n */\n generateGeometry() {\n const bufferData = this.solid.getGeometryBuffer();\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n let material: THREE.MeshStandardMaterial;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n material = this.material;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n transparent: false,\n opacity: 1,\n depthWrite: true,\n side: THREE.FrontSide,\n });\n this.material = material;\n }\n\n material.color.set(this.options.color);\n material.transparent = false;\n material.opacity = 1;\n material.depthWrite = true;\n material.side = THREE.FrontSide;\n material.needsUpdate = true;\n\n if (bufferData.length > 0) {\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n } else {\n this.geometry.deleteAttribute(\"normal\");\n this.geometry.boundingBox = null;\n this.geometry.boundingSphere = null;\n }\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = this.solid.getOutlineGeometryBuffer();\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n set outlineColor(color: number) {\n this._outlineColor = color;\n setShapeOutlineColor(this.#outlineMesh, color);\n }\n\n get outlineColor() {\n return getShapeOutlineColor(this.#outlineMesh, this._outlineColor);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n this.#outlineMesh = createShapeOutlineMesh({\n positions: this.solid.getOutlineGeometryBuffer(),\n color: this._outlineColor,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n private getPlacementTransform(): ObjectTransformation {\n return toObjectTransformation({\n anchor: cloneVector(this.options.anchor, [0, 0, 0]),\n translation: cloneVector(this.options.translation, [0, 0, 0]),\n rotation: cloneVector(this.options.rotation, [0, 0, 0]),\n scale: cloneVector(this.options.scale, [1, 1, 1]),\n });\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const attribute = geometry.getAttribute(\"position\");\n if (\n !(attribute instanceof THREE.BufferAttribute) ||\n attribute.itemSize !== 3 ||\n attribute.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n (attribute.array as Float32Array).set(positions);\n attribute.needsUpdate = true;\n }\n}\n\nfunction cloneVector(\n vector: Vector3 | undefined,\n fallback: [number, number, number]\n): Vector3 {\n return vector?.clone() ?? new Vector3(...fallback);\n}\n","import * as THREE from \"three\";\n\nimport {\n AnalyticSolid,\n type AnalyticPolygonLoftAlignment,\n} from \"../shapes/analytic-solid\";\n\nexport type PolygonLoftPoint = readonly [number, number, number];\n\nexport interface PolygonLoftOptions {\n alignment?: AnalyticPolygonLoftAlignment;\n deflection?: number;\n color?: THREE.ColorRepresentation;\n}\n\n/**\n * Creates a capped ruled solid between two planar polygon sections.\n * Sections must have equal vertex counts and produce planar side faces.\n */\nexport function loftPolygonSections(\n sections: readonly [readonly PolygonLoftPoint[], readonly PolygonLoftPoint[]],\n options: PolygonLoftOptions = {},\n): AnalyticSolid {\n const [lower, upper] = sections;\n return new AnalyticSolid({\n kind: \"polygonLoft\",\n lower: copySection(lower, \"lower\"),\n upper: copySection(upper, \"upper\"),\n alignment: options.alignment ?? \"auto\",\n deflection: options.deflection,\n color: options.color,\n });\n}\n\nfunction copySection(\n section: readonly PolygonLoftPoint[],\n label: string,\n): [number, number, number][] {\n if (section.length < 3) throw new Error(`${label} loft section requires at least three points`);\n return section.map((point) => {\n if (point.length !== 3 || !point.every(Number.isFinite)) {\n throw new Error(`${label} loft section points must contain three finite coordinates`);\n }\n return [point[0], point[1], point[2]];\n });\n}\n","import * as THREE from \"three\";\nimport { OGPolygon, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n getShapeOutlineColor,\n sanitizeOutlineWidth,\n setShapeOutlineColor,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { Solid } from \"./solid\";\nimport { extrudeBrepFace } from \"../operations/extrude\";\nimport {\n loftPolygonSections,\n type PolygonLoftOptions,\n type PolygonLoftPoint,\n} from \"../operations/loft\";\n\n/**\n * Construction options for a planar polygon.\n */\nexport interface IPolygonOptions {\n ogid?: string;\n vertices: Vector3[];\n holes?: Vector3[][];\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport interface PolygonPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial polygon config updates that regenerate the profile when geometry changes.\n */\nexport type PolygonConfigUpdate = Partial<\n Omit<IPolygonOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Placement updates accepted by `Polygon`.\n */\nexport type PolygonPlacementUpdate = PolygonPlacementOptions;\n\n/**\n * Planar polygon mesh with support for holes, booleans, and extrusion to `Solid`.\n */\nexport class Polygon extends THREE.Mesh {\n ogid: string;\n options: IPolygonOptions = {\n vertices: [],\n holes: [],\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n polygon: OGPolygon;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n private _outlineColor = 0x000000;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshBasicMaterial) {\n this.material.color.set(color);\n }\n }\n\n get color() {\n return this.options.color;\n }\n\n constructor(options?: IPolygonOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.polygon = new OGPolygon(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n vertices: this.options.vertices.map((vertex) => vertex.clone()),\n holes: (this.options.holes ?? []).map((hole) =>\n hole.map((vertex) => vertex.clone())\n ),\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Polygon\");\n }\n }\n\n setConfig(options: PolygonConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"vertices\" in options ||\n \"holes\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n this.polygon.set_config(this.options.vertices.map((vertex) => vertex.clone()));\n (this.options.holes ?? []).forEach((hole) => {\n this.polygon.add_holes(hole.map((vertex) => vertex.clone()));\n });\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.polygon.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.polygon.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.polygon.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: PolygonPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.polygon.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n /**\n * Returns the editing capability payload advertised by parametric wrappers.\n */\n getEditCapabilities() {\n return createParametricEditCapabilities(\"polygon\", \"profile\");\n }\n\n /**\n * Polygon always supports conversion into the freeform editing wrapper.\n */\n canConvertToFreeform() {\n return true;\n }\n\n /**\n * Returns a freeform wrapper for direct BRep editing of this polygon.\n */\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.polygon.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.disposeResources();\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.polygon.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.side = THREE.DoubleSide;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshBasicMaterial({\n color: this.options.color,\n side: THREE.DoubleSide,\n });\n }\n\n if (bufferData.length > 0) {\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n } else {\n this.geometry.deleteAttribute(\"normal\");\n this.geometry.boundingBox = null;\n this.geometry.boundingSphere = null;\n }\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.polygon.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n addVertices(vertices: Vector3[]) {\n if (!this.polygon) return;\n this.setConfig({\n vertices: vertices.map((vertex) => vertex.clone()),\n });\n }\n\n addHole(holeVertices: Vector3[]) {\n if (!this.polygon) return;\n this.options.holes = [\n ...(this.options.holes ?? []),\n holeVertices.map((vertex) => vertex.clone()),\n ];\n this.setConfig({\n holes: (this.options.holes ?? []).map((hole) =>\n hole.map((vertex) => vertex.clone())\n ),\n });\n }\n\n /**\n * Builds a kernel-backed `Solid` by extruding this polygon face by `height`.\n *\n * This is the recommended public path when a browser CAD or AEC workflow\n * starts from a planar profile and needs a boolean-ready solid.\n */\n extrude(height: number) {\n const config = this.getConfig();\n const placement = this.getPlacement();\n const solid = new Solid({\n brep: extrudeBrepFace(this.polygon.get_local_brep_serialized(), height),\n color: config.color,\n fatOutlines: config.fatOutlines,\n outlineWidth: config.outlineWidth,\n anchor: this.getAnchor(),\n translation: placement.translation.clone(),\n rotation: placement.rotation.clone(),\n scale: placement.scale.clone(),\n });\n\n solid.outline = this.outline;\n solid.outlineColor = this.outlineColor;\n return solid;\n }\n\n /** Builds a capped analytic ruled loft from this profile to `other`. */\n loftTo(other: Polygon, options: PolygonLoftOptions = {}) {\n if (!(other instanceof Polygon)) throw new Error(\"Polygon.loftTo requires another Polygon\");\n if ((this.options.holes?.length ?? 0) > 0 || (other.options.holes?.length ?? 0) > 0) {\n throw new Error(\"Polygon loft holes are not supported yet\");\n }\n return loftPolygonSections(\n [this.worldProfilePoints(), other.worldProfilePoints()],\n { color: this.options.color, ...options },\n );\n }\n\n /**\n * Returns the serialized BRep payload for this polygon.\n */\n getBrepData() {\n if (!this.polygon) return null;\n const brepData = this.polygon.get_brep_serialized();\n return brepData;\n }\n\n private worldProfilePoints(): PolygonLoftPoint[] {\n const anchor = this.getAnchor();\n const placement = this.getPlacement();\n const matrix = new THREE.Matrix4().compose(\n new THREE.Vector3(\n anchor.x + placement.translation.x,\n anchor.y + placement.translation.y,\n anchor.z + placement.translation.z,\n ),\n new THREE.Quaternion().setFromEuler(new THREE.Euler(\n placement.rotation.x,\n placement.rotation.y,\n placement.rotation.z,\n \"XYZ\",\n )),\n new THREE.Vector3(placement.scale.x, placement.scale.y, placement.scale.z),\n );\n return this.options.vertices.map((point) => {\n const transformed = new THREE.Vector3(\n point.x - anchor.x,\n point.y - anchor.y,\n point.z - anchor.z,\n ).applyMatrix4(matrix);\n return [transformed.x, transformed.y, transformed.z] as const;\n });\n }\n\n set outlineColor(color: number) {\n this._outlineColor = color;\n setShapeOutlineColor(this.#outlineMesh, color);\n }\n\n get outlineColor() {\n return getShapeOutlineColor(this.#outlineMesh, this._outlineColor);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.polygon.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\n color: this._outlineColor,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n disposeGeometryMaterial() {\n this.disposeResources();\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n dispose() {\n this.disposeResources();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n\n private disposeResources() {\n if (this.geometry) {\n this.geometry.dispose();\n }\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else if (this.material instanceof THREE.Material) {\n this.material.dispose();\n }\n this.clearOutlineMesh();\n }\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\n\nimport {\n AnalyticSolid,\n type AnalyticAccuracy,\n type AnalyticPrimitiveOptions,\n} from \"./analytic-solid\";\n\nexport interface ICylinderOptions {\n ogid?: string;\n center?: Vector3;\n radius?: number;\n height?: number;\n startAngle?: number;\n sweepAngle?: number;\n deflection?: number;\n accuracy?: AnalyticAccuracy;\n color?: THREE.ColorRepresentation;\n}\n\ninterface NormalizedCylinderOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n height: number;\n startAngle: number;\n sweepAngle: number;\n deflection: number;\n accuracy?: AnalyticAccuracy;\n color: THREE.ColorRepresentation;\n}\n\n/** Authoritative Plane/Cylinder BRep with transient deflection tessellation. */\nexport class Cylinder extends AnalyticSolid {\n readonly options: Readonly<NormalizedCylinderOptions>;\n\n constructor(options: ICylinderOptions = {}) {\n const normalized = normalizeOptions(options);\n super(primitiveOptions(normalized));\n this.options = normalized;\n this.position.set(normalized.center.x, normalized.center.y, normalized.center.z);\n }\n\n get radius(): number { return this.options.radius; }\n get height(): number { return this.options.height; }\n get startAngle(): number { return this.options.startAngle; }\n get sweepAngle(): number { return this.options.sweepAngle; }\n\n getAnchor(): THREE.Vector3 {\n return this.position.clone();\n }\n}\n\nfunction normalizeOptions(options: ICylinderOptions): NormalizedCylinderOptions {\n return {\n ogid: options.ogid,\n center: options.center ?? new Vector3(0, 0, 0),\n radius: options.radius ?? 1,\n height: options.height ?? 1,\n startAngle: options.startAngle ?? 0,\n sweepAngle: options.sweepAngle ?? Math.PI * 2,\n deflection: options.deflection ?? 0.01,\n accuracy: options.accuracy,\n color: options.color ?? 0x00ff00,\n };\n}\n\nfunction primitiveOptions(options: NormalizedCylinderOptions): AnalyticPrimitiveOptions {\n const frame = {\n origin: [0, -options.height / 2, 0] as [number, number, number],\n x: [1, 0, 0] as [number, number, number],\n y: [0, 0, -1] as [number, number, number],\n z: [0, 1, 0] as [number, number, number],\n };\n const common = {\n ogid: options.ogid,\n frame,\n accuracy: options.accuracy,\n deflection: options.deflection,\n color: options.color,\n radius: options.radius,\n height: options.height,\n };\n return Math.abs(Math.abs(options.sweepAngle) - Math.PI * 2) <= 64 * Number.EPSILON\n ? { ...common, kind: \"cylinder\" }\n : {\n ...common,\n kind: \"cylinderSector\",\n startAngle: options.startAngle,\n sweepAngle: options.sweepAngle,\n };\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\n\nimport { createParametricEditCapabilities } from \"../editor\";\nimport {\n AnalyticSolid,\n type AnalyticAccuracy,\n type AnalyticPrimitiveOptions,\n} from \"./analytic-solid\";\n\nexport interface CuboidPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport interface ICuboidOptions extends CuboidPlacementOptions {\n ogid?: string;\n center?: Vector3;\n width?: number;\n height?: number;\n depth?: number;\n color?: THREE.ColorRepresentation;\n deflection?: number;\n accuracy?: AnalyticAccuracy;\n}\n\nexport type CuboidConfigUpdate = Partial<\n Omit<ICuboidOptions, \"ogid\" | \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type CuboidPlacementUpdate = CuboidPlacementOptions;\n\ninterface NormalizedCuboidOptions {\n ogid?: string;\n center: Vector3;\n width: number;\n height: number;\n depth: number;\n color: THREE.ColorRepresentation;\n deflection: number;\n accuracy?: AnalyticAccuracy;\n translation: Vector3;\n rotation: Vector3;\n scale: Vector3;\n}\n\n/** Authoritative six-plane BRep with transient tessellation. */\nexport class Cuboid extends AnalyticSolid {\n options: NormalizedCuboidOptions;\n\n constructor(options: ICuboidOptions = {}) {\n const normalized = normalizeOptions(options);\n super(primitiveOptions(normalized));\n this.options = normalized;\n this.applyPlacement();\n }\n\n set width(value: number) { this.setConfig({ width: value }); }\n get width(): number { return this.options.width; }\n set height(value: number) { this.setConfig({ height: value }); }\n get height(): number { return this.options.height; }\n set depth(value: number) { this.setConfig({ depth: value }); }\n get depth(): number { return this.options.depth; }\n override set color(value: THREE.ColorRepresentation) {\n this.options.color = value;\n this.surface.material.color.set(value);\n this.surface.material.needsUpdate = true;\n }\n override get color(): THREE.Color { return this.surface.material.color; }\n\n setConfig(update: CuboidConfigUpdate): void {\n const geometryChanged = [\"center\", \"width\", \"height\", \"depth\", \"accuracy\"]\n .some((key) => key in update);\n const next = {\n ...this.options,\n ...update,\n center: update.center?.clone() ?? this.options.center,\n };\n if (geometryChanged) this.replaceDefinition(primitiveOptions(next));\n else if (update.deflection !== undefined) this.retessellate(update.deflection);\n this.options = next;\n if (update.color !== undefined) this.color = update.color;\n }\n\n getConfig(): Readonly<NormalizedCuboidOptions> {\n return this.options;\n }\n\n setPlacement(update: CuboidPlacementUpdate): void {\n this.options.translation = update.translation?.clone() ?? this.options.translation;\n this.options.rotation = update.rotation?.clone() ?? this.options.rotation;\n this.options.scale = update.scale?.clone() ?? this.options.scale;\n this.applyPlacement();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3): void {\n this.setPlacement({ translation, rotation, scale });\n }\n\n setTranslation(translation: Vector3): void { this.setPlacement({ translation }); }\n setRotation(rotation: Vector3): void { this.setPlacement({ rotation }); }\n setScale(scale: Vector3): void { this.setPlacement({ scale }); }\n\n getPlacement(): Required<CuboidPlacementOptions> {\n return {\n translation: this.options.translation.clone(),\n rotation: this.options.rotation.clone(),\n scale: this.options.scale.clone(),\n };\n }\n\n getAnchor(): Vector3 {\n return this.options.center.clone();\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"cuboid\", \"box\");\n }\n\n canConvertToFreeform(): false { return false; }\n\n toFreeform(): never {\n throw new Error(\"UnsupportedAnalyticEdit: BRep v2 freeform conversion is not implemented\");\n }\n\n cleanGeometry(): void { this.dispose(); }\n discardGeometry(): void { this.surface.geometry.dispose(); }\n\n private applyPlacement(): void {\n this.position.copy(this.options.translation);\n this.rotation.set(\n this.options.rotation.x,\n this.options.rotation.y,\n this.options.rotation.z,\n );\n this.scale.copy(this.options.scale);\n this.updateMatrix();\n }\n}\n\nfunction normalizeOptions(options: ICuboidOptions): NormalizedCuboidOptions {\n return {\n ogid: options.ogid,\n center: options.center?.clone() ?? new Vector3(0, 0, 0),\n width: options.width ?? 1,\n height: options.height ?? 1,\n depth: options.depth ?? 1,\n color: options.color ?? 0x00ff00,\n deflection: options.deflection ?? 0.01,\n accuracy: options.accuracy,\n translation: options.translation?.clone() ?? new Vector3(0, 0, 0),\n rotation: options.rotation?.clone() ?? new Vector3(0, 0, 0),\n scale: options.scale?.clone() ?? new Vector3(1, 1, 1),\n };\n}\n\nfunction primitiveOptions(options: NormalizedCuboidOptions): AnalyticPrimitiveOptions {\n return {\n kind: \"cuboid\",\n ogid: options.ogid,\n width: options.width,\n depth: options.depth,\n height: options.height,\n frame: {\n origin: [\n options.center.x - options.width / 2,\n options.center.y - options.height / 2,\n options.center.z + options.depth / 2,\n ],\n x: [1, 0, 0],\n y: [0, 0, -1],\n z: [0, 1, 0],\n },\n accuracy: options.accuracy,\n deflection: options.deflection,\n color: options.color,\n };\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\n\nimport { createParametricEditCapabilities } from \"../editor\";\nimport { AnalyticSolid, type AnalyticAccuracy } from \"./analytic-solid\";\nimport {\n Cuboid,\n type CuboidConfigUpdate,\n type CuboidPlacementOptions,\n type ICuboidOptions,\n} from \"./cuboid\";\n\nexport interface IOpeningOptions extends CuboidPlacementOptions {\n ogid?: string;\n center?: Vector3;\n width?: number;\n height?: number;\n depth?: number;\n color?: THREE.ColorRepresentation;\n deflection?: number;\n accuracy?: AnalyticAccuracy;\n}\n\nexport type OpeningPlacementOptions = CuboidPlacementOptions;\nexport type OpeningConfigUpdate = CuboidConfigUpdate;\nexport type OpeningPlacementUpdate = OpeningPlacementOptions;\n\n/** Strict BRep v2 subtractive box. */\nexport class Opening extends Cuboid {\n constructor(options: IOpeningOptions = {}) {\n const normalized: ICuboidOptions = {\n center: options.center ?? new Vector3(0, 0, 0),\n width: options.width ?? 1,\n height: options.height ?? 1,\n depth: options.depth ?? 0.2,\n color: options.color ?? 0xdad7cd,\n ...options,\n };\n super(normalized);\n this.surface.material.transparent = true;\n this.surface.material.opacity = 0;\n this.surface.material.depthWrite = false;\n this.surface.material.needsUpdate = true;\n }\n\n get dimensions() {\n return { width: this.width, height: this.height, depth: this.depth };\n }\n\n override getEditCapabilities() {\n return createParametricEditCapabilities(\"opening\", \"box\");\n }\n\n subtractFrom(\n host: AnalyticSolid,\n options: { deflection?: number; color?: THREE.ColorRepresentation } = {},\n ): AnalyticSolid {\n if (!(host instanceof AnalyticSolid)) {\n throw new Error(\"Opening subtraction requires a strict analytic BRep v2 host\");\n }\n return host.subtract([this], options);\n }\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\n\nimport { AnalyticSolid, type AnalyticAccuracy } from \"./analytic-solid\";\n\nexport interface ISphereOptions {\n ogid?: string;\n center?: Vector3;\n radius?: number;\n deflection?: number;\n accuracy?: AnalyticAccuracy;\n color?: THREE.ColorRepresentation;\n}\n\ninterface NormalizedSphereOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n deflection: number;\n accuracy?: AnalyticAccuracy;\n color: THREE.ColorRepresentation;\n}\n\n/** Authoritative spherical BRep with explicit poles and transient deflection tessellation. */\nexport class Sphere extends AnalyticSolid {\n readonly options: Readonly<NormalizedSphereOptions>;\n\n constructor(options: ISphereOptions = {}) {\n const normalized = normalizeOptions(options);\n super({\n kind: \"sphere\",\n ogid: normalized.ogid,\n radius: normalized.radius,\n accuracy: normalized.accuracy,\n deflection: normalized.deflection,\n color: normalized.color,\n });\n this.options = normalized;\n this.position.set(normalized.center.x, normalized.center.y, normalized.center.z);\n }\n\n get radius(): number { return this.options.radius; }\n\n getAnchor(): THREE.Vector3 {\n return this.position.clone();\n }\n}\n\nfunction normalizeOptions(options: ISphereOptions): NormalizedSphereOptions {\n return {\n ogid: options.ogid,\n center: options.center ?? new Vector3(0, 0, 0),\n radius: options.radius ?? 1,\n deflection: options.deflection ?? 0.01,\n accuracy: options.accuracy,\n color: options.color ?? 0x00ff00,\n };\n}\n","import { OGWedge, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for a wedge/prism shape.\n */\nexport interface IWedgeOptions {\n ogid?: string;\n center: Vector3;\n width: number;\n height: number;\n depth: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Wedge`.\n */\nexport interface WedgePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Wedge.setConfig(...)`.\n */\nexport type WedgeConfigUpdate = Partial<\n Omit<IWedgeOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Wedge` placement updates.\n */\nexport type WedgePlacementUpdate = WedgePlacementOptions;\n\n/**\n * Wedge wrapper backed by the kernel wedge primitive.\n */\nexport class Wedge extends THREE.Mesh {\n ogid: string;\n options: IWedgeOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n height: 1,\n depth: 1,\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private wedge: OGWedge;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: IWedgeOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.wedge = new OGWedge(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n width: this.options.width,\n height: this.options.height,\n depth: this.options.depth,\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Wedge\");\n }\n }\n\n setConfig(options: WedgeConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"width\" in options ||\n \"height\" in options ||\n \"depth\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n const { width, height, depth, center } = this.options;\n this.wedge.set_config(center.clone(), width, height, depth);\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.wedge.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: WedgePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.wedge.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"wedge\", \"wedge\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.wedge.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach((mat) => mat.dispose());\n } else {\n this.material.dispose();\n }\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.wedge.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n // this.material.transparent = true;\n // this.material.opacity = 0.6;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n // transparent: true,\n // opacity: 0.6,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.wedge.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrepData() {\n const brepData = this.wedge.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this wedge.\");\n }\n return JSON.parse(brepData);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outlineData = Array.from(this.wedge.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outlineData,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n get outlineMesh() {\n return this.#outlineMesh;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for a swept solid.\n */\nexport interface ISweepOptions {\n ogid?: string;\n path: Vector3[];\n profile: Vector3[];\n color: number;\n capStart?: boolean;\n capEnd?: boolean;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Sweep`.\n */\nexport interface SweepPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Sweep.setConfig(...)`.\n */\nexport type SweepConfigUpdate = Partial<\n Omit<ISweepOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Sweep` placement updates.\n */\nexport type SweepPlacementUpdate = SweepPlacementOptions;\n\n\ninterface ISweepKernelInstance {\n set_config_with_caps: (\n ..._args: [Vector3[], Vector3[], boolean, boolean]\n ) => void;\n set_transform: (..._args: [Vector3, Vector3, Vector3]) => void;\n set_anchor: (..._args: [Vector3]) => void;\n reset_anchor: () => void;\n get_geometry_buffer(): Float64Array;\n get_brep_serialized(): string;\n get_local_brep_serialized(): string;\n get_outline_geometry_buffer(): Float64Array;\n get_anchor(): Vector3;\n}\n\ntype SweepKernelConstructor = new (..._args: [string]) => ISweepKernelInstance;\n\n\n/**\n * Sweep wrapper backed by the kernel sweep primitive.\n */\nexport class Sweep extends THREE.Mesh {\n ogid: string;\n options: ISweepOptions = {\n path: [\n new Vector3(0, 0, 0),\n new Vector3(0, 1, 0),\n ],\n profile: [\n new Vector3(-0.25, 0, -0.25),\n new Vector3(0.25, 0, -0.25),\n new Vector3(0.25, 0, 0.25),\n new Vector3(-0.25, 0, 0.25),\n ],\n color: 0x00ff00,\n capStart: true,\n capEnd: true,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private sweep: ISweepKernelInstance;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: ISweepOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n const sweepExport = (OGKernel as Record<string, unknown>)[\"OGSweep\"];\n if (typeof sweepExport !== \"function\") {\n throw new Error(\n \"OGSweep is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\"\n );\n }\n const SweepKernel = sweepExport as SweepKernelConstructor;\n this.sweep = new SweepKernel(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n path: this.options.path.map((point) => point.clone()),\n profile: this.options.profile.map((point) => point.clone()),\n color: this.options.color,\n capStart: this.options.capStart,\n capEnd: this.options.capEnd,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Sweep\");\n }\n\n if (this.options.path.length < 2) {\n throw new Error(\"Sweep path requires at least 2 points.\");\n }\n\n if (this.options.profile.length < 3) {\n throw new Error(\"Sweep profile requires at least 3 points.\");\n }\n }\n\n setConfig(options: SweepConfigUpdate) {\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"path\" in options ||\n \"profile\" in options ||\n \"capStart\" in options ||\n \"capEnd\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n this.validateOptions();\n\n const path = this.options.path.map((point) => point.clone());\n const profile = this.options.profile.map((point) => point.clone());\n const capStart = this.options.capStart ?? true;\n const capEnd = this.options.capEnd ?? true;\n\n this.sweep.set_config_with_caps(path, profile, capStart, capEnd);\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.sweep.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.sweep.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.sweep.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: SweepPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.sweep.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"sweep\", \"sweep\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.sweep.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach((mat) => mat.dispose());\n } else {\n this.material.dispose();\n }\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.sweep.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n // this.material.transparent = true;\n // this.material.opacity = 0.6;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n // transparent: true,\n // opacity: 0.6,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.sweep.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrep() {\n const brepData = this.sweep.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for Sweep.\");\n }\n return JSON.parse(brepData);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outlineData = Array.from(this.sweep.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outlineData,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Arc } from \"../primitives/arc\";\nimport { Curve } from \"../primitives/curve\";\nimport { Line } from \"../primitives/line\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { Rectangle } from \"../primitives/rectangle\";\n\n/**\n * Adds a basic primitives showcase to the provided scene.\n */\nexport function createPrimitivesExample(scene: THREE.Scene) {\n const line = new Line({\n start: new Vector3(-3.0, 0.0, -2.0),\n end: new Vector3(-1.0, 0.0, -1.0),\n color: 0x111827,\n });\n\n const polyline = new Polyline({\n points: [\n new Vector3(-2.0, 0.0, 1.6),\n new Vector3(-1.4, 0.0, 2.4),\n new Vector3(-0.7, 0.0, 1.8),\n new Vector3(-0.2, 0.0, 2.6),\n ],\n color: 0x0284c7,\n });\n\n const arc = new Arc({\n center: new Vector3(1.0, 0.0, -1.0),\n radius: 1.0,\n startAngle: 0.0,\n sweepAngle: Math.PI * 1.5,\n deflection: 0.01,\n color: 0xb91c1c,\n });\n\n const rectangle = new Rectangle({\n center: new Vector3(2.0, 0.0, 1.8),\n width: 1.5,\n breadth: 0.9,\n color: 0x1d4ed8,\n });\n\n const curve = new Curve({\n controlPoints: [\n new Vector3(-0.8, 0.0, -2.2),\n new Vector3(0.0, 0.0, -2.4),\n new Vector3(0.9, 0.0, -1.8),\n new Vector3(1.6, 0.0, -2.0),\n ],\n color: 0x7c3aed,\n });\n\n scene.add(line);\n scene.add(polyline);\n scene.add(arc);\n scene.add(rectangle);\n scene.add(curve);\n\n return { line, polyline, arc, rectangle, curve };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Cuboid } from \"../shapes/cuboid\";\nimport { Cylinder } from \"../shapes/cylinder\";\nimport { Opening } from \"../shapes/opening\";\nimport { Polygon } from \"../shapes/polygon\";\nimport { Sweep } from \"../shapes/sweep\";\nimport { Sphere } from \"../shapes/sphere\";\nimport { Wedge } from \"../shapes/wedge\";\n\n/**\n * Adds a basic shapes showcase to the provided scene.\n */\nexport function createShapesExample(scene: THREE.Scene) {\n const fatOutlineWidth = 4;\n\n const polygon = new Polygon({\n vertices: [\n new Vector3(-3.0, 0.0, -0.5),\n new Vector3(-2.2, 0.0, 0.5),\n new Vector3(-1.2, 0.0, 0.2),\n new Vector3(-1.5, 0.0, -0.8),\n ],\n color: 0x2563eb,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n polygon.outline = true;\n\n const cuboid = new Cuboid({\n center: new Vector3(0.0, 0.8, -1.2),\n width: 1.2,\n height: 1.6,\n depth: 1.0,\n color: 0x10b981,\n deflection: 0.01,\n });\n cuboid.outline = true;\n\n const cylinder = new Cylinder({\n center: new Vector3(1.8, 0.8, -0.8),\n radius: 0.6,\n height: 1.6,\n color: 0xf97316,\n deflection: 0.01,\n });\n cylinder.outline = true;\n\n const wedge = new Wedge({\n center: new Vector3(3.4, 0.8, -1.0),\n width: 1.2,\n height: 1.4,\n depth: 1.0,\n color: 0x7c3aed,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n wedge.outline = true;\n\n const sphere = new Sphere({\n center: new Vector3(0.6, 1, 1.2),\n radius: 0.9,\n color: 0x0ea5e9,\n deflection: 0.01,\n });\n sphere.outline = true;\n\n const opening = new Opening({\n center: new Vector3(2.4, 0.9, 1.2),\n width: 1.0,\n height: 1.8,\n depth: 0.3,\n color: 0x9ca3af,\n deflection: 0.01,\n });\n opening.outline = true;\n\n const sweep = new Sweep({\n path: [\n new Vector3(-2.8, 0.0, 2.4),\n new Vector3(-2.2, 0.6, 2.8),\n new Vector3(-1.4, 1.2, 2.4),\n new Vector3(-0.8, 1.7, 1.8),\n ],\n profile: [\n new Vector3(-0.2, 0.0, -0.2),\n new Vector3(0.2, 0.0, -0.2),\n new Vector3(0.2, 0.0, 0.2),\n new Vector3(-0.2, 0.0, 0.2),\n ],\n color: 0x14b8a6,\n capStart: true,\n capEnd: true,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n sweep.outline = true;\n\n scene.add(polygon);\n scene.add(cuboid);\n scene.add(cylinder);\n scene.add(wedge);\n scene.add(sphere);\n scene.add(opening);\n scene.add(sweep);\n\n return { polygon, cuboid, cylinder, wedge, sphere, opening, sweep };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { Rectangle } from \"../primitives/rectangle\";\nimport { Sweep } from \"../shapes/sweep\";\n\ntype KernelVertex = {\n position: {\n x: number;\n y: number;\n z: number;\n };\n};\n\ntype KernelBrep = {\n vertices: KernelVertex[];\n};\n\nfunction toVector3List(vertices: KernelVertex[]): Vector3[] {\n return vertices.map((vertex) => {\n const { x, y, z } = vertex.position;\n return new Vector3(x, y, z);\n });\n}\n\nexport function createSweepExample(scene: THREE.Scene) {\n const pathPrimitive = new Polyline({\n points: [\n new Vector3(-2.0, 0.0, -1.0),\n new Vector3(-1.2, 0.5, 0.2),\n new Vector3(0.0, 1.1, 0.9),\n new Vector3(1.1, 1.7, 0.3),\n new Vector3(2.0, 2.2, -0.8),\n ],\n color: 0x444444,\n });\n\n const profilePrimitive = new Rectangle({\n center: new Vector3(0, 0, 0),\n width: 0.7,\n breadth: 0.4,\n color: 0x1f77b4,\n });\n\n // const profilePrimitive = new Arc();\n\n const profileBrep = profilePrimitive.getBrep() as KernelBrep;\n const profilePoints = toVector3List(profileBrep.vertices);\n\n const sweep = new Sweep({\n path: pathPrimitive.options.points.map((point) => point.clone()),\n profile: profilePoints,\n color: 0x2a9d8f,\n capStart: true,\n capEnd: false,\n fatOutlines: true,\n outlineWidth: 4,\n });\n\n scene.add(pathPrimitive);\n scene.add(profilePrimitive);\n scene.add(sweep);\n\n return {\n pathPrimitive,\n profilePrimitive,\n sweep,\n };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Line } from \"../primitives/line\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { Rectangle } from \"../primitives/rectangle\";\nimport { Curve } from \"../primitives/curve\";\n\nconst EPSILON = 1.0e-9;\n\nfunction areClose(a: Vector3, b: Vector3): boolean {\n const dx = a.x - b.x;\n const dy = a.y - b.y;\n const dz = a.z - b.z;\n return (dx * dx + dy * dy + dz * dz) <= EPSILON * EPSILON;\n}\n\nfunction toRenderableOffsetPoints(points: Vector3[], isClosed: boolean): Vector3[] {\n const output = points.map((point) => point.clone());\n if (!isClosed || output.length === 0) {\n return output;\n }\n\n if (!areClose(output[0], output[output.length - 1])) {\n output.push(output[0].clone());\n }\n\n return output;\n}\n\nexport function createOffsetExample(scene: THREE.Scene) {\n const baseLine = new Line({\n start: new Vector3(-3.0, 0.0, -2.2),\n end: new Vector3(-0.7, 0.0, -1.1),\n color: 0x1f2937,\n });\n\n const lineOffset = baseLine.getOffset(0.35, 35.0, true);\n const lineOffsetPrimitive = new Line({\n start: lineOffset.points[0],\n end: lineOffset.points[1],\n color: 0xef4444,\n });\n\n const basePolyline = new Polyline({\n points: [\n new Vector3(-1.2, 0.0, -2.4),\n new Vector3(0.2, 0.0, -1.6),\n new Vector3(0.8, 0.0, -0.4),\n new Vector3(0.0, 0.0, -0.2),\n new Vector3(2.5, 0.0, 1.2),\n ],\n color: 0x0f172a,\n });\n\n const polylineOffset = basePolyline.getOffset(0.45, 35.0, true);\n const polylineOffsetPrimitive = new Polyline({\n points: polylineOffset.points,\n color: 0xdc2626,\n });\n\n const baseRectangle = new Rectangle({\n center: new Vector3(1.2, 0.0, -2.1),\n width: 1.6,\n breadth: 1.0,\n color: 0x1d4ed8,\n });\n\n const rectangleOffset = baseRectangle.getOffset(0.25, 40.0, true);\n const rectangleOffsetPrimitive = new Polyline({\n points: toRenderableOffsetPoints(rectangleOffset.points, rectangleOffset.isClosed),\n color: 0xf97316,\n });\n\n const baseCurve = new Curve({\n controlPoints: [\n new Vector3(-3.0, 0.0, 1.3),\n new Vector3(-2.0, 0.0, 1.7),\n new Vector3(-1.1, 0.0, 1.6),\n new Vector3(-0.4, 0.0, 2.0),\n ],\n color: 0x0ea5e9,\n });\n\n const curveOffset = baseCurve.getOffset(0.3, 45.0, true);\n const curveOffsetPrimitive = new Polyline({\n points: curveOffset.points,\n color: 0xbe123c,\n });\n\n scene.add(baseLine);\n scene.add(lineOffsetPrimitive);\n scene.add(basePolyline);\n scene.add(polylineOffsetPrimitive);\n scene.add(baseRectangle);\n scene.add(rectangleOffsetPrimitive);\n scene.add(baseCurve);\n scene.add(curveOffsetPrimitive);\n\n return {\n baseLine,\n lineOffsetPrimitive,\n basePolyline,\n polylineOffsetPrimitive,\n baseRectangle,\n rectangleOffsetPrimitive,\n baseCurve,\n curveOffsetPrimitive,\n polylineOffset,\n rectangleOffset,\n curveOffset,\n };\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\n\n/** A point of a returned offset region ring (kernel `Vector3` shape). */\nexport interface OffsetRegionPoint {\n x: number;\n y: number;\n z: number;\n}\n\n/** One offset region: a CW outer ring + its CCW inner-void hole rings. */\nexport interface OffsetRegion {\n /** Outer ring (CW, canonical start). */\n outer: OffsetRegionPoint[];\n /** Inner-void hole rings (CCW), e.g. the interior void of a closed loop. */\n holes: OffsetRegionPoint[][];\n}\n\ntype KernelOffsetRegionsResult = {\n regionsSerialized: string;\n};\n\ntype KernelOffsetPolylineRegions = (\n centreline: Float64Array,\n width: number,\n closed: boolean,\n miterLimit: number,\n) => KernelOffsetRegionsResult;\n\n/**\n * Offset a centreline by ±half-width into one or more filled REGIONS, via the\n * deterministic analytic offset — miters / flat bevels at `miterLimit`, concave\n * trims, and nonzero-winding resolution of reflex / closed loops. NO boolean union\n * (so it is deterministic, unlike the 3D-mesh CSG path). A simple centreline returns\n * one region; a self-crossing closed centreline (e.g. a figure-8) returns one per\n * simple sub-loop. Returns an EMPTY array for a genuinely unbuildable input (does\n * not throw, so it never looks like a kernel crash). Rings are CW-outer / CCW-holes.\n *\n * @param centrelineFlat centreline points as `[x,y,z, …]`.\n * @param width full stroke width (offset ±width/2 on each side).\n * @param miterLimit SVG stroke-miterlimit; corners sharper than this bevel. Default 4.\n */\nexport function offsetPolylineRegions(\n centrelineFlat: number[] | Float64Array,\n width: number,\n closed: boolean,\n miterLimit = 4,\n): OffsetRegion[] {\n const buildExport = (OGKernel as Record<string, unknown>).offsetPolylineRegions;\n if (typeof buildExport !== \"function\") {\n throw new Error(\n \"offsetPolylineRegions is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\",\n );\n }\n const flat =\n centrelineFlat instanceof Float64Array ? centrelineFlat : new Float64Array(centrelineFlat);\n const result = (buildExport as KernelOffsetPolylineRegions)(flat, width, closed, miterLimit);\n return JSON.parse(result.regionsSerialized);\n}\n\ntype KernelOffsetRingVariable = (\n ringFlat: Float64Array,\n distances: Float64Array,\n holesJson: string,\n) => KernelOffsetRegionsResult;\n\n/** An excluded interior ring of a variable inset (an easement island, a\n * protected tree pit): its closed ring `[x,y,z, …]` plus one clearance\n * distance per hole edge. The inset GROWS the hole by its distances. */\nexport interface OffsetHole {\n ring: number[] | Float64Array;\n distances: number[] | Float64Array;\n}\n\n/**\n * Inset a CLOSED ring inward with one distance per edge (edge i =\n * `ring[i] → ring[i+1]`; an explicit closing duplicate point is accepted and\n * stripped, the distance count stays one per unique edge). Built for setback\n * envelopes: the result is the CLEARANCE-EXACT buildable region — the ring's\n * interior minus every point within `distances[i]` of edge i's SEGMENT, so\n * distant lot lines are honoured across notches and corners where distances\n * differ become circumscribed clearance arcs (conservative). There is no\n * `miterLimit` parameter, deliberately: miters and bevels only approximate the\n * clearance arc, and a bevel would claim points inside the required distance.\n *\n * `holes` are excluded interior rings, each grown outward by its own per-edge\n * distances — the region keeps clear of a hole's edges exactly as it keeps\n * clear of the lot lines, so a hole can split the region or swallow it.\n *\n * Returns CW-outer / CCW-hole regions (canonical start vertex), possibly\n * SEVERAL when a deep inset (or a hole) splits a waisted ring into disjoint\n * lobes, and an EMPTY array when the inset collapses or the outer ring is\n * degenerate (< 3 unique points, zero area, self-intersecting). THROWS on\n * malformed arguments: a distance count that does not match an edge count, a\n * negative / non-finite distance, or a degenerate hole — those are caller\n * bugs, not geometry.\n *\n * @param ring closed ring points as `[x,y,z, …]` (Y is carried through).\n * @param distances inward inset distance per edge, metres, each >= 0\n * (0 = the edge stays in place, e.g. lot-line construction).\n * @param holes excluded interior rings with their own per-edge distances.\n */\nexport function offsetRingVariable(\n ring: number[] | Float64Array,\n distances: number[] | Float64Array,\n holes: OffsetHole[] = [],\n): OffsetRegion[] {\n const buildExport = (OGKernel as Record<string, unknown>).offsetRingVariable;\n if (typeof buildExport !== \"function\") {\n throw new Error(\n \"offsetRingVariable is not available in the loaded wasm package. It requires opengeometry >= 2.0.12 — rebuild or upgrade the opengeometry wasm bindings.\",\n );\n }\n const flatRing = ring instanceof Float64Array ? ring : new Float64Array(ring);\n const flatDistances =\n distances instanceof Float64Array ? distances : new Float64Array(distances);\n const holesJson = JSON.stringify(\n holes.map((hole) => ({ ring: Array.from(hole.ring), distances: Array.from(hole.distances) })),\n );\n const result = (buildExport as KernelOffsetRingVariable)(flatRing, flatDistances, holesJson);\n return JSON.parse(result.regionsSerialized);\n}\n\n/** One polyline in an offset group: centreline `[x,y,z, …]`, stroke width, closed flag. */\nexport interface OffsetPolyline {\n centreline: number[];\n width: number;\n closed: boolean;\n}\n\ntype KernelOffsetPolylineGroupRegions = (polylinesJson: string) => KernelOffsetRegionsResult;\n\n/**\n * Merge a GROUP of separate polylines (a crossing T / X / L overlap) into one clean\n * region by nonzero-winding union of their mitered bands — the overlapping strokes\n * merge into a single region with mitered/bevelled corners, no internal edges.\n * Returns CW-outer / CCW-hole regions (one or more); empty if nothing is buildable.\n * No CSG. Used to render/extrude an overlapping crossing as one joined mass.\n */\nexport function offsetPolylineGroupRegions(polylines: OffsetPolyline[]): OffsetRegion[] {\n const buildExport = (OGKernel as Record<string, unknown>).offsetPolylineGroupRegions;\n if (typeof buildExport !== \"function\") {\n throw new Error(\n \"offsetPolylineGroupRegions is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\",\n );\n }\n const result = (buildExport as KernelOffsetPolylineGroupRegions)(JSON.stringify(polylines));\n return JSON.parse(result.regionsSerialized);\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { offsetRingVariable } from \"../operations/offset-regions\";\n\n/** Close a kernel ring for Polyline rendering (repeat the first point). */\nfunction closedRingPoints(ring: { x: number; y: number; z: number }[]): Vector3[] {\n const points = ring.map((point) => new Vector3(point.x, point.y, point.z));\n if (points.length > 0) {\n const first = ring[0];\n points.push(new Vector3(first.x, first.y, first.z));\n }\n return points;\n}\n\n/**\n * Variable (per-edge) ring inset: a rectangular \"parcel\" inset by front 6 /\n * side 1.5 / rear 3 setbacks, and a waisted (dumbbell) parcel whose uniform\n * 3 m inset SPLITS into two disjoint buildable envelopes — the case a uniform\n * offset cannot express.\n */\nexport function createOffsetRingVariableExample(scene: THREE.Scene) {\n const scale = 0.2; // metres → scene units, keeps both parcels in frame\n\n const parcel = [0, 0, 0, 20, 0, 0, 20, 0, 30, 0, 0, 30].map((v) => v * scale);\n const parcelSetbacks = [6, 1.5, 3, 1.5].map((v) => v * scale);\n\n const dumbbell = [\n 0, 0, 0, 20, 0, 0, 20, 0, 14, 12, 0, 14, 12, 0, 26, 20, 0, 26, 20, 0, 40, 0, 0, 40, 0, 0, 26,\n 8, 0, 26, 8, 0, 14, 0, 0, 14,\n ].map((v, index) => (index % 3 === 0 ? v * scale + 6 : v * scale)); // shifted +x\n const dumbbellSetbacks = new Array(12).fill(3 * scale);\n\n const parcelOutline = new Polyline({\n points: closedRingPoints(\n Array.from({ length: parcel.length / 3 }, (_, i) => ({\n x: parcel[i * 3],\n y: parcel[i * 3 + 1],\n z: parcel[i * 3 + 2],\n })),\n ),\n color: 0x1f2937,\n });\n scene.add(parcelOutline);\n\n const dumbbellOutline = new Polyline({\n points: closedRingPoints(\n Array.from({ length: dumbbell.length / 3 }, (_, i) => ({\n x: dumbbell[i * 3],\n y: dumbbell[i * 3 + 1],\n z: dumbbell[i * 3 + 2],\n })),\n ),\n color: 0x1f2937,\n });\n scene.add(dumbbellOutline);\n\n const envelopes: Polyline[] = [];\n for (const region of offsetRingVariable(parcel, parcelSetbacks)) {\n const envelope = new Polyline({ points: closedRingPoints(region.outer), color: 0x16a34a });\n envelopes.push(envelope);\n scene.add(envelope);\n }\n for (const region of offsetRingVariable(dumbbell, dumbbellSetbacks)) {\n const envelope = new Polyline({ points: closedRingPoints(region.outer), color: 0xdc2626 });\n envelopes.push(envelope);\n scene.add(envelope);\n }\n\n return { parcelOutline, dumbbellOutline, envelopes };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { AnalyticSolid } from \"../shapes/analytic-solid\";\nimport { Polygon } from \"../shapes/polygon\";\n\nconst EPSILON = 1.0e-9;\n\nfunction areClose(a: Vector3, b: Vector3): boolean {\n const dx = a.x - b.x;\n const dy = a.y - b.y;\n const dz = a.z - b.z;\n return (dx * dx + dy * dy + dz * dz) <= EPSILON * EPSILON;\n}\n\nfunction buildWallOutline(left: Vector3[], right: Vector3[]): Vector3[] {\n if (left.length === 0 || right.length === 0) {\n return [];\n }\n\n const outline = [...left.map((point) => point.clone())];\n const rightReversed = [...right.map((point) => point.clone())].reverse();\n outline.push(...rightReversed);\n\n if (outline.length > 2 && areClose(outline[0], outline[outline.length - 1])) {\n outline.pop();\n }\n\n return outline;\n}\n\nexport interface WallFromOffsetsOptions {\n /** Subtract one exact coextensive through slot. Default `false`. */\n cutThroughSlot?: boolean;\n /** Width of the through slot along its centerline segment. Default `0.6`. */\n slotWidth?: number;\n /**\n * Wall extrusion height in meters. Default `2.6` to match the example HTML.\n */\n height?: number;\n}\n\nfunction midpoint(a: Vector3, b: Vector3): Vector3 {\n return new Vector3((a.x + b.x) * 0.5, (a.y + b.y) * 0.5, (a.z + b.z) * 0.5);\n}\n\nfunction buildThroughSlot(\n centerlinePoints: Vector3[],\n wallThickness: number,\n height: number,\n width: number,\n): AnalyticSolid {\n const a = centerlinePoints[2];\n const b = centerlinePoints[3];\n const mid = midpoint(a, b);\n const length = Math.hypot(b.x - a.x, b.z - a.z);\n const tangent = [(b.x - a.x) / length, (b.z - a.z) / length];\n const normal = [-tangent[1], tangent[0]];\n const halfWidth = width * 0.5;\n const halfDepth = wallThickness * 0.5 + 0.1;\n const point = (along: number, across: number): [number, number] => [\n mid.x + tangent[0] * along + normal[0] * across,\n -(mid.z + tangent[1] * along + normal[1] * across),\n ];\n return new AnalyticSolid({\n kind: \"linearExtrusion\",\n outer: [\n point(-halfWidth, -halfDepth),\n point(halfWidth, -halfDepth),\n point(halfWidth, halfDepth),\n point(-halfWidth, halfDepth),\n ],\n holes: [],\n height,\n color: 0xef4444,\n deflection: 0.01,\n });\n}\n\n/**\n * Renders a human-readable description for an analytic geometry error (or any\n * other thrown value). Used by the example HTML to surface kernel failures\n * in a status panel without losing the structured payload.\n */\nexport function describeWallSubtractError(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n return String(error);\n}\n\nexport function createWallFromOffsetsExample(\n scene: THREE.Scene,\n options: WallFromOffsetsOptions = {}\n) {\n const centerline = new Polyline({\n points: [\n new Vector3(-2.6, 0.0, -1.9),\n new Vector3(-1.2, 0.0, -1.0),\n new Vector3(-0.2, 0.0, 0.1),\n new Vector3(0.6, 0.0, 0.2),\n new Vector3(0.1, 0.0, 1.0),\n new Vector3(2.6, 0.0, 2.0),\n ],\n color: 0x1f2937,\n });\n\n const wallThickness = 0.45;\n const half = wallThickness * 0.5;\n const acuteThreshold = 35.0;\n const bevel = true;\n const wallHeight = options.height ?? 2.6;\n\n const leftOffset = centerline.getOffset(half, acuteThreshold, bevel);\n const rightOffset = centerline.getOffset(-half, acuteThreshold, bevel);\n\n const leftOffsetPolyline = new Polyline({\n points: leftOffset.points,\n color: 0x22c55e,\n });\n\n const rightOffsetPolyline = new Polyline({\n points: rightOffset.points,\n color: 0xf97316,\n });\n\n const wallOutline = buildWallOutline(leftOffset.points, rightOffset.points);\n if (wallOutline.length < 3) {\n throw new Error(\"Failed to create wall polygon from offsets.\");\n }\n\n const wallPolygon = new Polygon({\n vertices: wallOutline,\n color: 0x3b82f6,\n });\n\n wallPolygon.position.y = 0.01;\n\n scene.add(centerline);\n scene.add(leftOffsetPolyline);\n scene.add(rightOffsetPolyline);\n scene.add(wallPolygon);\n\n let cutResult: { wall: THREE.Object3D; cutters: AnalyticSolid[] } | null = null;\n let cutError: unknown = null;\n\n if (options.cutThroughSlot ?? false) {\n const wallSolid = new AnalyticSolid({\n kind: \"linearExtrusion\",\n outer: wallOutline.map((point) => [point.x, -point.z]),\n holes: [],\n height: wallHeight,\n color: 0x3b82f6,\n deflection: 0.01,\n });\n const cutter = buildThroughSlot(\n [\n new Vector3(-2.6, 0.0, -1.9),\n new Vector3(-1.2, 0.0, -1.0),\n new Vector3(-0.2, 0.0, 0.1),\n new Vector3(0.6, 0.0, 0.2),\n new Vector3(0.1, 0.0, 1.0),\n new Vector3(2.6, 0.0, 2.0),\n ],\n wallThickness,\n wallHeight,\n options.slotWidth ?? 0.6,\n );\n const cutters = [cutter];\n\n try {\n const cutWall = wallSolid.subtract(cutters, { color: 0x3b82f6 });\n scene.add(cutWall);\n cutResult = { wall: cutWall, cutters };\n } catch (error) {\n cutError = error;\n scene.add(wallSolid);\n cutResult = { wall: wallSolid, cutters };\n }\n }\n\n return {\n centerline,\n leftOffsetPolyline,\n rightOffsetPolyline,\n wallPolygon,\n leftOffset,\n rightOffset,\n cutResult,\n cutError,\n };\n}\n","import * as THREE from \"three\";\n\nimport { AnalyticSolid, type AnalyticBooleanOp } from \"../shapes/analytic-solid\";\n\n/** Rendering and tessellation options applied to an analytic boolean result. */\nexport interface BooleanExecutionOptions {\n deflection?: number;\n color?: THREE.ColorRepresentation;\n opacity?: number;\n transparent?: boolean;\n side?: THREE.Side;\n outline?: boolean;\n}\n\nexport type BooleanOperand = AnalyticSolid;\n\nexport function booleanUnion(\n lhs: AnalyticSolid,\n rhs: AnalyticSolid,\n options?: BooleanExecutionOptions,\n): AnalyticSolid {\n return executeBoolean(lhs, rhs, \"union\", options);\n}\n\nexport function booleanIntersection(\n lhs: AnalyticSolid,\n rhs: AnalyticSolid,\n options?: BooleanExecutionOptions,\n): AnalyticSolid {\n return executeBoolean(lhs, rhs, \"intersection\", options);\n}\n\nexport function booleanSubtraction(\n lhs: AnalyticSolid,\n rhs: AnalyticSolid,\n options?: BooleanExecutionOptions,\n): AnalyticSolid {\n return executeBoolean(lhs, rhs, \"subtraction\", options);\n}\n\nexport function executeBooleanSubtractionMany(\n lhs: BooleanOperand,\n cutters: BooleanOperand[],\n options?: BooleanExecutionOptions,\n): AnalyticSolid {\n const host = analyticOperand(lhs);\n if (!Array.isArray(cutters) || cutters.length === 0) {\n throw new Error(\"Analytic subtraction requires a nonempty operand array.\");\n }\n const analyticCutters = cutters.map(analyticOperand);\n let result = host.boolean(analyticCutters[0], \"subtraction\", {\n deflection: options?.deflection ?? host.deflection,\n color: options?.color,\n });\n try {\n for (const cutter of analyticCutters.slice(1)) {\n const next = result.boolean(cutter, \"subtraction\", {\n deflection: options?.deflection ?? result.deflection,\n color: options?.color,\n });\n result.dispose();\n result = next;\n }\n } catch (error) {\n result.dispose();\n throw error;\n }\n applyRenderOptions(result, options);\n return result;\n}\n\nfunction executeBoolean(\n lhs: AnalyticSolid,\n rhs: AnalyticSolid,\n operation: AnalyticBooleanOp,\n options?: BooleanExecutionOptions,\n): AnalyticSolid {\n const host = analyticOperand(lhs);\n const tool = analyticOperand(rhs);\n const result = host.boolean(tool, operation, {\n deflection: options?.deflection ?? host.deflection,\n color: options?.color,\n });\n applyRenderOptions(result, options);\n return result;\n}\n\nfunction analyticOperand(operand: BooleanOperand): AnalyticSolid {\n if (!(operand instanceof AnalyticSolid)) {\n throw new Error(\n \"Boolean operations require strict analytic BRep v2 operands; faceted BRep operands are unsupported.\",\n );\n }\n return operand;\n}\n\nfunction applyRenderOptions(result: AnalyticSolid, options?: BooleanExecutionOptions): void {\n const material = result.surface.material;\n if (options?.color !== undefined) material.color.set(options.color);\n if (options?.opacity !== undefined) {\n material.opacity = options.opacity;\n material.transparent = options.opacity < 1 || material.transparent;\n }\n if (options?.transparent !== undefined) material.transparent = options.transparent;\n if (options?.side !== undefined) material.side = options.side;\n material.needsUpdate = true;\n result.outline = options?.outline ?? true;\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\n\nimport {\n BooleanExecutionOptions,\n booleanIntersection,\n booleanSubtraction,\n booleanUnion,\n} from \"../operations/boolean\";\nimport { AnalyticSolid } from \"../shapes/analytic-solid\";\n\nexport type BooleanExampleOperation = \"union\" | \"intersection\" | \"subtraction\";\nexport type BooleanExampleMode = \"solid\" | \"polygon\" | \"extruded\";\n\nexport interface BooleanExampleBuildOptions extends BooleanExecutionOptions {\n mode: BooleanExampleMode;\n sphereCenter?: Vector3;\n polygonOffset?: Vector3;\n extrudedOffset?: Vector3;\n}\n\nexport interface BooleanExampleBuildResult {\n group: THREE.Group;\n lhs: THREE.Object3D;\n rhs: THREE.Object3D;\n result: AnalyticSolid;\n title: string;\n description: string;\n}\n\n/**\n * Builds a complete operand/result scene group for a boolean example page.\n */\nexport function createBooleanExample(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n): BooleanExampleBuildResult {\n const preset = createPreset(operation, options);\n\n const execute = getBooleanExecutor(operation);\n const result = execute(preset.lhsOperand, preset.rhsOperand, options);\n\n const group = new THREE.Group();\n group.add(preset.lhsVisual);\n group.add(preset.rhsVisual);\n group.add(result);\n\n return {\n group,\n lhs: preset.lhsVisual,\n rhs: preset.rhsVisual,\n result,\n title: preset.title,\n description: preset.description,\n };\n}\n\nfunction createPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n switch (options.mode) {\n case \"solid\":\n return createSolidPreset(operation, options);\n case \"polygon\":\n return createPolygonPreset(operation, options);\n case \"extruded\":\n return createExtrudedPreset(operation, options);\n }\n}\n\n/**\n * Builds the solid-operand preset used by the example pages.\n */\nfunction createSolidPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n const base = new AnalyticSolid({\n kind: \"sphere\",\n radius: 1,\n color: 0x60a5fa,\n deflection: 0.01,\n });\n base.position.set(-0.45, 1, 0);\n\n const tool = new AnalyticSolid({\n kind: \"sphere\",\n radius: operation === \"intersection\" ? 0.95 : 0.85,\n color: 0xf97316,\n deflection: 0.01,\n });\n const center = options.sphereCenter ?? new Vector3(0.45, 1, 0.1);\n tool.position.set(center.x, center.y, center.z);\n\n base.outline = options.outline ?? true;\n tool.outline = options.outline ?? true;\n\n return {\n title: `${capitalize(operation)} Analytic Spheres`,\n description: \"Two exact spheres exercise the in-house analytic boolean path and retain face ancestry.\",\n lhsOperand: base,\n rhsOperand: tool,\n lhsVisual: base,\n rhsVisual: tool,\n };\n}\n\n/**\n * Builds the thin planar-profile solid preset used by the example pages.\n */\nfunction createPolygonPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n const polygonOffset = options.polygonOffset ?? new Vector3(0.0, 0.0, 0.0);\n const lhsVertices = [\n new Vector3(-1.8, 0.0, -0.8),\n new Vector3(0.4, 0.0, -0.8),\n new Vector3(0.4, 0.0, 1.0),\n new Vector3(-1.8, 0.0, 1.0),\n ];\n const rhsVertices = translateVertices(\n operation === \"subtraction\"\n ? [\n new Vector3(-0.55, 0.0, -0.35),\n new Vector3(1.2, 0.0, -0.35),\n new Vector3(1.2, 0.0, 0.65),\n new Vector3(-0.55, 0.0, 0.65),\n ]\n : [\n new Vector3(-0.4, 0.0, -1.1),\n new Vector3(1.55, 0.0, -1.1),\n new Vector3(1.55, 0.0, 0.7),\n new Vector3(-0.4, 0.0, 0.7),\n ],\n polygonOffset\n );\n\n const lhs = new AnalyticSolid({\n kind: \"linearExtrusion\",\n outer: lhsVertices.map((point) => [point.x, -point.z]),\n holes: [],\n height: 0.12,\n color: 0x60a5fa,\n deflection: 0.01,\n });\n const rhs = new AnalyticSolid({\n kind: \"linearExtrusion\",\n outer: rhsVertices.map((point) => [point.x, -point.z]),\n holes: [],\n height: 0.12,\n color: 0xf97316,\n deflection: 0.01,\n });\n\n lhs.outline = options.outline ?? true;\n rhs.outline = options.outline ?? true;\n\n return {\n title: `${capitalize(operation)} Planar Profile Solids`,\n description: \"Two authoritative line-profile extrusions exercise planar imprint, classify, select, and sew.\",\n lhsOperand: lhs,\n rhsOperand: rhs,\n lhsVisual: lhs,\n rhsVisual: rhs,\n };\n}\n\n/**\n * Builds a strict-v2 line-profile extrusion preset with a coextensive slab.\n */\nfunction createExtrudedPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n const extrudedOffset = options.extrudedOffset ?? new Vector3(0.0, 0.0, 0.0);\n\n const wall = new AnalyticSolid({\n kind: \"linearExtrusion\",\n outer: [[-2.2, -0.18], [2.2, -0.18], [2.2, 0.18], [-2.2, 0.18]],\n holes: [],\n height: 2.8,\n color: 0x60a5fa,\n deflection: 0.01,\n });\n const opening = new AnalyticSolid({\n kind: \"linearExtrusion\",\n outer: [[-0.7, -0.34], [0.9, -0.34], [0.9, 0.34], [-0.7, 0.34]],\n holes: [],\n height: 2.8,\n color: 0xf97316,\n deflection: 0.01,\n });\n opening.position.set(extrudedOffset.x, 0, extrudedOffset.z);\n\n wall.outline = options.outline ?? true;\n opening.outline = options.outline ?? true;\n\n return {\n title: `${capitalize(operation)} Extruded Solid`,\n description:\n \"Two coextensive authoritative line-profile extrusions use the in-house planar arrangement.\",\n lhsOperand: wall,\n rhsOperand: opening,\n lhsVisual: wall,\n rhsVisual: opening,\n };\n}\n\n/**\n * Selects the exported boolean helper that matches the current example mode.\n */\nfunction getBooleanExecutor(operation: BooleanExampleOperation) {\n switch (operation) {\n case \"union\":\n return booleanUnion;\n case \"intersection\":\n return booleanIntersection;\n case \"subtraction\":\n return booleanSubtraction;\n }\n}\n\n/**\n * Formats the operation name for example titles.\n */\nfunction capitalize(value: string) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\n/**\n * Applies a uniform translation to the polygon operand so examples can move it\n * interactively without mutating the base preset coordinates.\n */\nfunction translateVertices(vertices: Vector3[], offset: Vector3) {\n return vertices.map(\n (vertex) =>\n new Vector3(\n vertex.x + offset.x,\n vertex.y + offset.y,\n vertex.z + offset.z\n )\n );\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { FreeformEditResult, createFreeformEditor } from \"../editor\";\nimport { Line } from \"../primitives/line\";\nimport { Polygon } from \"../shapes/polygon\";\nimport { Cuboid } from \"../shapes/cuboid\";\n\n/**\n * Demonstrates strict v2 parametric solid edits and the separate sampled-wire\n * freeform editor. Analytic solid freeform conversion is intentionally unsupported.\n */\nexport function createEditorModesExample(scene: THREE.Scene) {\n const polygon = new Polygon({\n vertices: [\n new Vector3(-3.2, 0.0, -0.8),\n new Vector3(-2.2, 0.0, 0.4),\n new Vector3(-1.0, 0.0, 0.0),\n new Vector3(-1.5, 0.0, -1.2),\n ],\n color: 0x2563eb,\n fatOutlines: true,\n outlineWidth: 4,\n });\n polygon.outline = true;\n\n const polygonCapabilities = polygon.getEditCapabilities();\n polygon.setConfig({\n vertices: [\n new Vector3(-3.4, 0.0, -0.9),\n new Vector3(-2.0, 0.0, 0.6),\n new Vector3(-0.8, 0.0, -0.1),\n new Vector3(-1.6, 0.0, -1.4),\n ],\n });\n polygon.setPlacement({\n translation: new Vector3(0.0, 0.0, -0.2),\n });\n\n const cuboid = new Cuboid({\n center: new Vector3(1.2, 0.8, 0.0),\n width: 1.2,\n height: 1.4,\n depth: 1.0,\n color: 0x10b981,\n deflection: 0.01,\n });\n cuboid.outline = true;\n\n const cuboidCapabilities = cuboid.getEditCapabilities();\n cuboid.setConfig({\n width: 1.6,\n height: 1.8,\n });\n cuboid.setPlacement({\n translation: new Vector3(0.2, 0.0, 0.0),\n rotation: new Vector3(0.0, Math.PI / 9.0, 0.0),\n });\n\n const guideLine = new Line({\n start: new Vector3(-3.4, 0.0, 1.6),\n end: new Vector3(-0.8, 0.0, 1.6),\n color: 0x475569,\n fatLines: true,\n width: 4,\n });\n guideLine.setPlacement({\n translation: new Vector3(0.0, 0.0, 0.2),\n });\n\n const guideLineCapabilities = guideLine.getEditCapabilities();\n const guideLineFreeform = guideLine.toFreeform(`${guideLine.ogid}-freeform`);\n const guideLineEditor = createFreeformEditor(guideLineFreeform);\n const guideLineEdge =\n guideLineEditor.getTopologyRenderData().edges[0]?.edge_id ?? null;\n let guideLineSplitResult: FreeformEditResult | null = null;\n\n if (guideLineEdge !== null) {\n guideLineSplitResult = guideLineEditor.splitEdge(guideLineEdge, 0.5, {\n includeTopologyRemap: true,\n });\n }\n\n scene.add(polygon);\n scene.add(cuboid);\n scene.add(guideLine);\n\n return {\n polygon,\n cuboid,\n guideLine,\n polygonCapabilities,\n cuboidCapabilities,\n guideLineCapabilities,\n guideLineFreeform,\n guideLineEditor,\n guideLineSplitResult,\n };\n}\n","/**\n * Public OpenGeometry JavaScript entrypoint.\n */\nimport init, {\n OGAnalyticBrep,\n OGAnalyticTessellation,\n OGSceneManager,\n WorkPlane,\n analyzeProfile,\n extrudeBrepFaceDirectional,\n validateAnalyticBrep,\n tessellate_brep,\n Vector3,\n} from \"../opengeometry/pkg/opengeometry\";\nimport { SpotLabel } from \"./src/markup/spotMarker\";\nimport { OPEN_GEOMETRY_THREE_VERSION, OpenGeometryOptions } from \"./src/base-types\";\n\nexport type OUTLINE_TYPE = \"front\" | \"side\" | \"top\";\n\n/**\n * Binary STL export payload returned by export helpers.\n */\nexport interface OGStlExportResult {\n bytes: Uint8Array;\n reportJson: string;\n}\n\n/**\n * STEP text export payload returned by export helpers.\n */\nexport interface OGStepExportResult {\n text: string;\n reportJson: string;\n}\n\n/**\n * IFC text export payload returned by export helpers.\n */\nexport interface OGIfcExportResult {\n text: string;\n reportJson: string;\n}\n\n/**\n * Shared runtime entrypoint used to initialize the OpenGeometry wasm module.\n */\nexport class OpenGeometry {\n static version = OPEN_GEOMETRY_THREE_VERSION;\n static instance: OpenGeometry | null = null;\n\n private _enableDebug: boolean = false;\n\n get enableDebug() {\n return this._enableDebug;\n }\n\n /**\n * Enables or disables debug mode for OpenGeometry.\n * When enabled, it logs debug information to the console.\n * Addtionally,\n * 1. The geometry will be rendered with a semi-transparent material.\n * 2. The faces will be rendered with a random color.\n * 3. The normals will be rendered for better visualization.\n * @param value - A boolean indicating whether to enable or disable debug mode.\n */\n set enableDebug(value: boolean) {\n this._enableDebug = value;\n if (this._enableDebug) {\n console.log(\"OpenGeometry Debug Mode Enabled\");\n }\n }\n\n constructor() {}\n\n /**\n * Asynchronously initializes the OpenGeometry wasm runtime and returns a\n * cached singleton instance on subsequent calls.\n *\n * Call this before constructing `Vector3` or any kernel-backed wrapper.\n *\n * @param options - Configuration object for initializing OpenGeometry.\n * @returns A promise that resolves to a fully initialized OpenGeometry instance.\n *\n * @example\n * ```ts\n * await OpenGeometry.create({\n * wasmURL: \"/opengeometry_bg.wasm\",\n * });\n * ```\n */\n static async create(options: OpenGeometryOptions) {\n if (!OpenGeometry.instance) {\n const og = new OpenGeometry();\n await og.setup(options.wasmURL);\n OpenGeometry.instance = og;\n }\n return OpenGeometry.instance;\n }\n\n private async setup(wasmURL?: string) {\n if (wasmURL) {\n await init({ module_or_path: wasmURL });\n return;\n }\n\n await init();\n }\n}\n\n/**\n * Scene manager that stores serialized BRep snapshots in wasm for projection,\n * export, and other scene-level workflows.\n */\nexport { OGSceneManager };\nexport { OGAnalyticBrep, OGAnalyticTessellation };\nexport { WorkPlane, analyzeProfile, extrudeBrepFaceDirectional, validateAnalyticBrep };\nexport { tessellate_brep };\nexport { AnalyticSolid } from \"./src/shapes/analytic-solid\";\nexport { AnalyticPattern, circularPattern, linearPattern, rectangularPattern } from \"./src/shapes/analytic-pattern\";\nexport type { AnalyticPatternHit, AnalyticPatternInstance } from \"./src/shapes/analytic-pattern\";\nexport type {\n AnalyticBooleanOp, AnalyticBooleanReport, AnalyticBrepOptions, AnalyticFrame, AnalyticAccuracy, AnalyticCircularWallOpening, AnalyticPolygonLoftAlignment, AnalyticProjectionCamera, AnalyticProjectionHlr, AnalyticPrimitiveOptions, AnalyticTessellationStats, AnalyticTessellationOptions, AnalyticStepExport, AnalyticStlExport,\n} from \"./src/shapes/analytic-solid\";\n\n/**\n * Shared wasm-backed vector type used throughout the public API.\n *\n * Initialize `OpenGeometry.create(...)` before constructing `Vector3`.\n */\nexport { Vector3 };\n\nexport { SpotLabel };\n\n/**\n * Primitive wrappers (line/polyline/arc/rectangle/curve).\n */\nexport * from \"./src/primitives/index\";\n/**\n * Shape wrappers (polygon/cuboid/cylinder/wedge/opening/sweep/sphere).\n */\nexport * from \"./src/shapes/index\";\n/**\n * Reusable example builders for quickly wiring demo scenes.\n */\nexport * from \"./src/examples/index\";\n/**\n * First-class freeform geometry wrapper around the kernel OGFreeformGeometry API.\n */\nexport * from \"./src/freeform/index\";\n/**\n * Editing helpers that operate on parametric entities and freeform geometry.\n */\nexport * from \"./src/editor/index\";\n/**\n * Kernel-backed modeling operations (incl. analytic polyline offset → regions).\n */\nexport * from \"./src/operations/index\";\n\nexport { AnalyticCurve } from \"./src/primitives/analytic-curve\";\nexport type { AnalyticCurveOptions, AnalyticCurveStats } from \"./src/primitives/analytic-curve\";\nexport { AnalyticTessellationWorker } from \"./src/rendering/analytic-tessellation\";\nexport type { AnalyticWorkerOptions, AnalyticTessellationData } from \"./src/rendering/analytic-tessellation\";\nexport { AnalyticLodController, deflectionBucket, worldUnitsPerPixel, uniformScale } from \"./src/rendering/analytic-lod\";\nexport type { AnalyticLodOptions } from \"./src/rendering/analytic-lod\";\nexport { analyticIfcText } from \"./src/export/analytic-ifc\";\nexport type { AnalyticExchangeBodyV2, IfcPreparedValue } from \"./src/export/analytic-ifc\";\n"],"names":["wasm","cachedUint8ArrayMemory0","getUint8ArrayMemory0","byteLength","Uint8Array","memory","buffer","getArrayU8FromWasm0","ptr","len","subarray","addToExternrefTable0","obj","idx","__externref_table_alloc","__wbindgen_export_2","set","handleError","f","args","apply","e","__wbindgen_exn_store","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","Error","getStringFromWasm0","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encode","encodeString","encodeInto","arg","view","buf","read","length","written","passStringToWasm0","malloc","realloc","undefined","mem","offset","code","charCodeAt","slice","ret","takeFromExternrefTable0","value","get","__externref_table_dealloc","extrudeBrepFace","local_brep_serialized","height","deferred3_0","deferred3_1","ptr0","__wbindgen_malloc","__wbindgen_realloc","len0","ptr2","len2","__wbindgen_free","cachedFloat64ArrayMemory0","getFloat64ArrayMemory0","Float64Array","passArrayF64ToWasm0","extrudeBrepFaceDirectional","direction","extent_kind","d_plus","d_minus","deferred5_0","deferred5_1","ptr1","len1","ptr4","len4","analyzeProfile","flat_points","_assertClass","instance","klass","name","isLikeNone","x","getArrayF64FromWasm0","cachedDataViewMemory0","getDataViewMemory0","detached","DataView","passArrayJsValueToWasm0","array","i","add","setUint32","offsetPolylineRegions","centreline_flat","width","closed","miter_limit","OGOffsetRegionsResult","__wrap","offsetPolylineGroupRegions","polylines_json","offsetRingVariable","ring_flat","distances","holes_json","validateAnalyticBrep","serialized","tessellate_brep","deflection","options_json","OGAnalyticTessellation","cachedFloat32ArrayMemory0","getFloat32ArrayMemory0","Float32Array","getArrayF32FromWasm0","cachedUint32ArrayMemory0","getUint32ArrayMemory0","Uint32Array","getArrayU32FromWasm0","getArrayJsValueFromWasm0","result","push","getUint32","__externref_drop_slice","FinalizationRegistry","register","__wbg_matrix3_free","Matrix4Finalization","unregister","__wbg_matrix4_free","Matrix4","Object","create","prototype","__wbg_ptr","__destroy_into_raw","free","elements","matrix4_elements","v1","constructor","matrix4_new","m0","m1","m2","m3","m4","m5","m6","m7","m8","m9","m10","m11","m12","m13","m14","m15","matrix4_set","clone","matrix4_clone","identity","matrix4_identity","determinant","matrix4_determinant","adjucate","matrix4_adjucate","inverse","matrix4_inverse","multiply","other","matrix4_multiply","incoming","matrix4_add","subtract","matrix4_subtract","flatten","matrix4_flatten","get_element_at","index","matrix4_get_element_at","is_zero","matrix4_is_zero","is_identity","matrix4_is_identity","transpose","matrix4_transpose","OGAnalyticBrepFinalization","__wbg_oganalyticbrep_free","OGAnalyticBrep","oganalyticbrep_new","from_primitive","config_json","oganalyticbrep_from_primitive","get_brep_serialized","deferred2_0","deferred2_1","oganalyticbrep_get_brep_serialized","export_step","length_unit","oganalyticbrep_export_step","placed","frame_json","scale","oganalyticbrep_placed","prepare_ifc_exchange","oganalyticbrep_prepare_ifc_exchange","face_normal_at","face_id","point","oganalyticbrep_face_normal_at","v2","classify_point","oganalyticbrep_classify_point","project_to_2d_lines","camera_json","hlr_json","deferred4_0","deferred4_1","oganalyticbrep_project_to_2d_lines","ptr3","len3","boolean_brep","operation","id","oganalyticbrep_boolean_brep","shell","thickness","oganalyticbrep_shell","get_boolean_report_serialized","oganalyticbrep_get_boolean_report_serialized","tessellate","oganalyticbrep_tessellate","get_face_count","oganalyticbrep_get_face_count","get_edge_count","oganalyticbrep_get_edge_count","get_id","deferred1_0","deferred1_1","oganalyticbrep_get_id","get_bounds","oganalyticbrep_get_bounds","get_vertex_count","oganalyticbrep_get_vertex_count","get_revision","oganalyticbrep_get_revision","BigInt","asUintN","OGAnalyticTessellationFinalization","__wbg_oganalytictessellation_free","positions","oganalytictessellation_positions","normals","oganalytictessellation_normals","indices","oganalytictessellation_indices","triangle_face_ids","oganalytictessellation_triangle_face_ids","outline_positions","oganalytictessellation_outline_positions","outline_edge_ids","oganalytictessellation_outline_edge_ids","revision","oganalytictessellation_revision","achieved_deflection","oganalytictessellation_achieved_deflection","OGArcFinalization","__wbg_ogarc_free","OGArc","ogarc_set_id","ogarc_id","ogarc_new","set_config","center","radius","start_angle","end_angle","segments","Vector3","ogarc_set_config","set_center","ogarc_set_center","set_transform","position","rotation","ogarc_set_transform","set_translation","translation","ogarc_set_translation","set_rotation","ogarc_set_rotation","set_scale","ogarc_set_scale","generate_geometry","ogarc_generate_geometry","dispose_points","ogarc_dispose_points","destroy","ogarc_destroy","ogarc_get_brep_serialized","get_local_brep_serialized","ogarc_get_local_brep_serialized","get_geometry_serialized","ogarc_get_geometry_serialized","get_local_geometry_serialized","ogarc_get_local_geometry_serialized","get_geometry_buffer","ogarc_get_geometry_buffer","get_local_geometry_buffer","ogarc_get_local_geometry_buffer","get_anchor","ogarc_get_anchor","OGCuboidFinalization","__wbg_ogcuboid_free","OGCuboid","ogcuboid_set_id","ogcuboid_id","ogcuboid_new","depth","ogcuboid_set_config","ogcuboid_set_center","ogcuboid_set_transform","ogcuboid_set_translation","ogcuboid_set_rotation","ogcuboid_set_scale","ogcuboid_generate_geometry","ogcuboid_get_brep_serialized","ogcuboid_get_local_brep_serialized","ogcuboid_get_geometry_serialized","ogcuboid_get_local_geometry_serialized","ogcuboid_get_geometry_buffer","ogcuboid_get_local_geometry_buffer","get_outline_geometry_serialized","ogcuboid_get_outline_geometry_serialized","get_local_outline_geometry_serialized","ogcuboid_get_local_outline_geometry_serialized","get_outline_geometry_buffer","ogcuboid_get_outline_geometry_buffer","get_local_outline_geometry_buffer","ogcuboid_get_local_outline_geometry_buffer","ogcuboid_get_anchor","OGCurveFinalization","__wbg_ogcurve_free","OGCurve","ogcurve_set_id","ogcurve_id","ogcurve_new","control_points","ogcurve_set_config","ogcurve_set_transform","ogcurve_set_translation","ogcurve_set_rotation","ogcurve_set_scale","ogcurve_generate_geometry","ogcurve_get_brep_serialized","ogcurve_get_local_brep_serialized","ogcurve_get_geometry_serialized","ogcurve_get_local_geometry_serialized","ogcurve_get_geometry_buffer","ogcurve_get_local_geometry_buffer","ogcurve_get_anchor","set_anchor","anchor","ogcurve_set_anchor","reset_anchor","ogcurve_reset_anchor","get_offset_serialized","distance","acute_threshold_degrees","bevel","ogcurve_get_offset_serialized","dispose","ogcurve_dispose","OGCylinderFinalization","__wbg_ogcylinder_free","OGCylinder","ogcylinder_set_id","ogcylinder_id","ogcylinder_new","angle","ogcylinder_set_config","ogcylinder_set_center","ogcylinder_set_transform","ogcylinder_set_translation","ogcylinder_set_rotation","ogcylinder_set_scale","generate_brep","ogcylinder_generate_brep","clean_geometry","ogcylinder_clean_geometry","ogcylinder_generate_geometry","ogcylinder_get_brep_serialized","ogcylinder_get_local_brep_serialized","ogcylinder_get_geometry_serialized","ogcylinder_get_local_geometry_serialized","ogcylinder_get_geometry_buffer","ogcylinder_get_local_geometry_buffer","ogcylinder_get_outline_geometry_serialized","ogcylinder_get_local_outline_geometry_serialized","ogcylinder_get_outline_geometry_buffer","ogcylinder_get_local_outline_geometry_buffer","ogcylinder_get_anchor","__wbg_ogellipticalarc_free","__wbg_ogentityregistry_free","OGFreeformEditorFinalization","__wbg_ogfreeformeditor_free","OGFreeformEditor","ogfreeformeditor_new","getTopologyRenderData","geometry","OGFreeformGeometry","ogfreeformeditor_getTopologyRenderData","getFaceInfo","ogfreeformeditor_getFaceInfo","getEdgeInfo","edge_id","ogfreeformeditor_getEdgeInfo","getVertexInfo","vertex_id","ogfreeformeditor_getVertexInfo","getEditCapabilities","ogfreeformeditor_getEditCapabilities","getFaceEditCapabilities","ogfreeformeditor_getFaceEditCapabilities","getEdgeEditCapabilities","ogfreeformeditor_getEdgeEditCapabilities","getVertexEditCapabilities","ogfreeformeditor_getVertexEditCapabilities","pushPullFace","ogfreeformeditor_pushPullFace","moveFace","ogfreeformeditor_moveFace","moveEdge","ogfreeformeditor_moveEdge","moveVertex","ogfreeformeditor_moveVertex","extrudeFace","ogfreeformeditor_extrudeFace","cutFace","start_edge_id","start_t","end_edge_id","end_t","ogfreeformeditor_cutFace","insertVertexOnEdge","t","ogfreeformeditor_insertVertexOnEdge","splitEdge","ogfreeformeditor_splitEdge","loopCut","ogfreeformeditor_loopCut","removeVertex","ogfreeformeditor_removeVertex","OGFreeformGeometryFinalization","__wbg_ogfreeformgeometry_free","ogfreeformgeometry_new","ogfreeformgeometry_id","getBrepSerialized","ogfreeformgeometry_getBrepSerialized","getLocalBrepSerialized","ogfreeformgeometry_getLocalBrepSerialized","getGeometrySerialized","ogfreeformgeometry_getGeometrySerialized","getGeometryBuffer","ogfreeformgeometry_getGeometryBuffer","getLocalGeometryBuffer","ogfreeformgeometry_getLocalGeometryBuffer","getOutlineGeometrySerialized","ogfreeformgeometry_getOutlineGeometrySerialized","getOutlineGeometryBuffer","ogfreeformgeometry_getOutlineGeometryBuffer","getLocalOutlineGeometryBuffer","ogfreeformgeometry_getLocalOutlineGeometryBuffer","getPlacementSerialized","ogfreeformgeometry_getPlacementSerialized","setPlacementSerialized","placement_serialized","ogfreeformgeometry_setPlacementSerialized","setTransform","ogfreeformgeometry_setTransform","setTranslation","ogfreeformgeometry_setTranslation","setRotation","ogfreeformgeometry_setRotation","setScale","ogfreeformgeometry_setScale","setAnchor","ogfreeformgeometry_setAnchor","OGIfcExportResultFinalization","__wbg_ogifcexportresult_free","OGIfcExportResult","text","ogifcexportresult_text","reportJson","ogifcexportresult_reportJson","OGLineFinalization","__wbg_ogline_free","OGLine","ogline_set_id","ogline_id","ogline_new","start","end","ogline_set_config","ogline_set_transform","ogline_set_translation","ogline_set_rotation","ogline_set_scale","ogline_generate_geometry","ogline_dispose_points","ogline_destroy","ogline_get_brep_serialized","ogline_get_local_brep_serialized","ogline_get_geometry_serialized","ogline_get_local_geometry_serialized","ogline_get_geometry_buffer","ogline_get_local_geometry_buffer","ogline_get_anchor","ogline_set_anchor","ogline_reset_anchor","ogline_get_offset_serialized","get_dxf_serialized","ogline_get_dxf_serialized","OGOffsetRegionsResultFinalization","__wbg_ogoffsetregionsresult_free","regionsSerialized","ogoffsetregionsresult_regionsSerialized","OGPolygonFinalization","__wbg_ogpolygon_free","OGPolygon","ogpolygon_set_id","ogpolygon_id","ogpolygon_new","points","ogpolygon_set_config","ogpolygon_set_transform","ogpolygon_set_translation","ogpolygon_set_rotation","ogpolygon_set_scale","add_vertices","vertices","ogpolygon_add_vertices","add_holes","hole","ogpolygon_add_holes","ogpolygon_clean_geometry","ogpolygon_generate_brep","ogpolygon_generate_geometry","ogpolygon_get_brep_serialized","ogpolygon_get_local_brep_serialized","ogpolygon_get_geometry_serialized","ogpolygon_get_local_geometry_serialized","ogpolygon_get_geometry_buffer","ogpolygon_get_local_geometry_buffer","ogpolygon_get_outline_geometry_serialized","ogpolygon_get_local_outline_geometry_serialized","ogpolygon_get_outline_geometry_buffer","ogpolygon_get_local_outline_geometry_buffer","ogpolygon_get_anchor","ogpolygon_set_anchor","ogpolygon_reset_anchor","OGPolylineFinalization","__wbg_ogpolyline_free","OGPolyline","ogpolyline_set_id","ogpolyline_id","ogpolyline_new","ogpolyline_clone","ogpolyline_set_config","ogpolyline_set_transform","ogpolyline_set_translation","ogpolyline_set_rotation","ogpolyline_set_scale","ogpolyline_generate_geometry","add_multiple_points","ogpolyline_add_multiple_points","add_point","ogpolyline_add_point","get_points","ogpolyline_get_points","get_raw_points","ogpolyline_get_raw_points","is_closed","ogpolyline_is_closed","ogpolyline_get_offset_serialized","check_closed_test","ogpolyline_check_closed_test","ogpolyline_get_brep_serialized","ogpolyline_get_local_brep_serialized","ogpolyline_get_geometry_serialized","ogpolyline_get_local_geometry_serialized","ogpolyline_get_geometry_buffer","ogpolyline_get_local_geometry_buffer","ogpolyline_set_anchor","ogpolyline_reset_anchor","OGRectangleFinalization","__wbg_ogrectangle_free","OGRectangle","ogrectangle_set_id","ogrectangle_id","ogrectangle_new","breadth","ogrectangle_set_config","ogrectangle_set_center","ogrectangle_set_transform","ogrectangle_set_translation","ogrectangle_set_rotation","ogrectangle_set_scale","ogrectangle_generate_geometry","ogrectangle_get_brep_serialized","ogrectangle_get_local_brep_serialized","ogrectangle_get_geometry_serialized","ogrectangle_get_local_geometry_serialized","ogrectangle_get_geometry_buffer","ogrectangle_get_local_geometry_buffer","ogrectangle_get_anchor","ogrectangle_get_offset_serialized","OGSceneManagerFinalization","__wbg_ogscenemanager_free","OGSceneManager","ogscenemanager_new","createScene","ogscenemanager_createScene","removeScene","scene_id","ogscenemanager_removeScene","setCurrentScene","ogscenemanager_setCurrentScene","getCurrentSceneId","ogscenemanager_getCurrentSceneId","listScenes","ogscenemanager_listScenes","getSceneSerialized","ogscenemanager_getSceneSerialized","removeEntityFromScene","entity_id","ogscenemanager_removeEntityFromScene","addBrepEntityToScene","kind","brep_serialized","ogscenemanager_addBrepEntityToScene","addBrepEntityToCurrentScene","ogscenemanager_addBrepEntityToCurrentScene","replaceBrepEntityInScene","ogscenemanager_replaceBrepEntityInScene","replaceBrepEntityInCurrentScene","ogscenemanager_replaceBrepEntityInCurrentScene","refreshBrepEntityInScene","ogscenemanager_refreshBrepEntityInScene","refreshBrepEntityInCurrentScene","ogscenemanager_refreshBrepEntityInCurrentScene","addLineToScene","line","ogscenemanager_addLineToScene","addLineToCurrentScene","ogscenemanager_addLineToCurrentScene","addPolylineToScene","polyline","ogscenemanager_addPolylineToScene","addPolylineToCurrentScene","ogscenemanager_addPolylineToCurrentScene","addArcToScene","arc","ogscenemanager_addArcToScene","addArcToCurrentScene","ogscenemanager_addArcToCurrentScene","addRectangleToScene","rectangle","ogscenemanager_addRectangleToScene","addRectangleToCurrentScene","ogscenemanager_addRectangleToCurrentScene","addPolygonToScene","polygon","ogscenemanager_addPolygonToScene","addPolygonToCurrentScene","ogscenemanager_addPolygonToCurrentScene","addCuboidToScene","cuboid","ogscenemanager_addCuboidToScene","addCuboidToCurrentScene","ogscenemanager_addCuboidToCurrentScene","addCylinderToScene","cylinder","ogscenemanager_addCylinderToScene","addCylinderToCurrentScene","ogscenemanager_addCylinderToCurrentScene","addSphereToScene","sphere","OGSphere","ogscenemanager_addSphereToScene","addSphereToCurrentScene","ogscenemanager_addSphereToCurrentScene","addWedgeToScene","wedge","OGWedge","ogscenemanager_addWedgeToScene","addWedgeToCurrentScene","ogscenemanager_addWedgeToCurrentScene","projectTo2DCamera","ogscenemanager_projectTo2DCamera","projectTo2DCameraPretty","ogscenemanager_projectTo2DCameraPretty","projectTo2DLines","ogscenemanager_projectTo2DLines","projectTo2DLinesPretty","ogscenemanager_projectTo2DLinesPretty","projectCurrentTo2DCamera","ogscenemanager_projectCurrentTo2DCamera","projectCurrentTo2DLines","ogscenemanager_projectCurrentTo2DLines","exportBrepToStl","ogscenemanager_exportBrepToStl","OGStlExportResult","exportSceneToStl","ogscenemanager_exportSceneToStl","exportCurrentSceneToStl","ogscenemanager_exportCurrentSceneToStl","exportBrepToStep","ogscenemanager_exportBrepToStep","OGStepExportResult","exportSceneToStep","ogscenemanager_exportSceneToStep","exportCurrentSceneToStep","ogscenemanager_exportCurrentSceneToStep","exportBrepToIfc","ogscenemanager_exportBrepToIfc","exportSceneToIfc","ogscenemanager_exportSceneToIfc","exportCurrentSceneToIfc","ogscenemanager_exportCurrentSceneToIfc","OGSphereFinalization","__wbg_ogsphere_free","ogsphere_set_id","ogsphere_id","ogsphere_new","width_segments","height_segments","ogsphere_set_config","ogsphere_set_center","ogsphere_set_transform","ogsphere_set_translation","ogsphere_set_rotation","ogsphere_set_scale","ogsphere_generate_brep","ogsphere_clean_geometry","ogsphere_generate_geometry","ogsphere_get_brep_serialized","ogsphere_get_local_brep_serialized","ogsphere_get_geometry_serialized","ogsphere_get_local_geometry_serialized","ogsphere_get_geometry_buffer","ogsphere_get_local_geometry_buffer","ogsphere_get_outline_geometry_serialized","ogsphere_get_local_outline_geometry_serialized","ogsphere_get_outline_geometry_buffer","ogsphere_get_local_outline_geometry_buffer","ogsphere_get_anchor","OGStepExportResultFinalization","__wbg_ogstepexportresult_free","ogstepexportresult_text","ogstepexportresult_reportJson","OGStlExportResultFinalization","__wbg_ogstlexportresult_free","bytes","ogstlexportresult_bytes","ogstlexportresult_reportJson","OGSweepFinalization","__wbg_ogsweep_free","OGSweep","ogsweep_set_id","ogsweep_id","ogsweep_new","path_points","profile_points","ogsweep_set_config","set_config_with_caps","cap_start","cap_end","ogsweep_set_config_with_caps","set_caps","ogsweep_set_caps","ogsweep_set_transform","ogsweep_set_translation","ogsweep_set_rotation","ogsweep_set_scale","ogsweep_generate_brep","ogsweep_clean_geometry","ogsweep_generate_geometry","ogsweep_get_brep_serialized","ogsweep_get_local_brep_serialized","ogsweep_get_geometry_serialized","ogsweep_get_local_geometry_serialized","ogsweep_get_geometry_buffer","ogsweep_get_local_geometry_buffer","ogsweep_get_outline_geometry_serialized","ogsweep_get_local_outline_geometry_serialized","ogsweep_get_outline_geometry_buffer","ogsweep_get_local_outline_geometry_buffer","ogsweep_set_anchor","ogsweep_reset_anchor","OGWedgeFinalization","__wbg_ogwedge_free","ogwedge_set_id","ogwedge_id","ogwedge_new","ogwedge_set_config","ogwedge_set_center","ogwedge_set_transform","ogwedge_set_translation","ogwedge_set_rotation","ogwedge_set_scale","ogwedge_generate_brep","ogwedge_clean_geometry","ogwedge_generate_geometry","ogwedge_get_brep_serialized","ogwedge_get_local_brep_serialized","ogwedge_get_geometry_serialized","ogwedge_get_local_geometry_serialized","ogwedge_get_geometry_buffer","ogwedge_get_local_geometry_buffer","ogwedge_get_outline_geometry_serialized","ogwedge_get_local_outline_geometry_serialized","ogwedge_get_outline_geometry_buffer","ogwedge_get_local_outline_geometry_buffer","ogellipticalarc_get_anchor","Vector3Finalization","__wbg_vector3_free","__unwrap","jsValue","__wbg_get_vector3_x","arg0","__wbg_set_vector3_x","y","__wbg_get_vector3_y","__wbg_set_vector3_y","z","__wbg_get_vector3_z","__wbg_set_vector3_z","vector3_new","vector3_add","add_scalar","scalar","vector3_add_scalar","vector3_subtract","subtract_scalar","vector3_subtract_scalar","vector3_clone","zero","vector3_zero","copy","vector3_copy","multiply_scalar","vector3_multiply_scalar","vector3_multiply","divide","vector3_divide","divide_scalar","vector3_divide_scalar","negate","vector3_negate","dot","vector3_dot","magnitude","vector3_magnitude","vector3_length","normalize","vector3_normalize","cross","vector3_cross","vector3_distance","apply_matrix4","matrix","vector3_apply_matrix4","WorkPlaneFinalization","__wbg_workplane_free","WorkPlane","fromOriginNormal","origin","normal","workplane_fromOriginNormal","u_hint","workplane_new","liftPoint","u","v","workplane_liftPoint","liftPoints","uv","workplane_liftPoints","workplane_normal","__wbg_load","module","imports","Response","WebAssembly","instantiateStreaming","headers","console","warn","arrayBuffer","instantiate","Instance","__wbg_get_imports","wbg","__wbg_getRandomValues_38097e921c2494c3","arg1","globalThis","crypto","getRandomValues","arguments","__wbg_vector3_new","__wbg_vector3_unwrap","__wbindgen_init_externref_table","table","grow","__wbindgen_string_new","__wbindgen_throw","__wbg_finalize_init","exports","__wbg_init","__wbindgen_wasm_module","__wbindgen_start","module_or_path","getPrototypeOf","URL","import","meta","url","Request","fetch","uuidv4","cloneVector","toObjectTransformation","parseJson","toVector3","toPlainVector3","normalizePlacement","KernelFreeformEditor","serializeBrepLike","normalizeOptions","curveFrame","OGKernel.extrudeBrepFace","primitiveOptions","OGKernel[\"OGSweep\"]","EPSILON","areClose","OGKernel.offsetPolylineRegions","OGKernel.offsetRingVariable","OGKernel.offsetPolylineGroupRegions","init"],"mappings":"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","x_google_ignoreList":[0,4,5,6,7]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../main/opengeometry/pkg/opengeometry.js","../main/main/opengeometry-three/src/markup/spotMarker.ts","../main/main/opengeometry-three/src/base-types.ts","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/v4.js","../main/main/opengeometry-three/src/utils/randomizer.ts","../main/main/opengeometry-three/src/rendering/analytic-tessellation.ts","../main/main/opengeometry-three/src/rendering/analytic-lod.ts","../main/main/opengeometry-three/src/export/analytic-ifc.ts","../main/main/opengeometry-three/src/operations/analytic-errors.ts","../main/main/opengeometry-three/src/shapes/analytic-solid.ts","../main/main/opengeometry-three/src/shapes/analytic-pattern.ts","../main/main/opengeometry-three/src/editor/parametric.ts","../main/main/opengeometry-three/src/editor/freeform.ts","../main/main/opengeometry-three/src/freeform/geometry.ts","../main/main/opengeometry-three/src/primitives/line.ts","../main/main/opengeometry-three/src/primitives/polyline.ts","../main/main/opengeometry-three/src/primitives/analytic-curve.ts","../main/main/opengeometry-three/src/primitives/arc.ts","../main/main/opengeometry-three/src/primitives/rectangle.ts","../main/main/opengeometry-three/src/primitives/curve.ts","../main/main/opengeometry-three/src/primitives/elliptical_arc.ts","../main/main/opengeometry-three/src/shapes/outline-utils.ts","../main/main/opengeometry-three/src/operations/extrude.ts","../main/main/opengeometry-three/src/shapes/solid.ts","../main/main/opengeometry-three/src/operations/loft.ts","../main/main/opengeometry-three/src/shapes/polygon.ts","../main/main/opengeometry-three/src/shapes/cylinder.ts","../main/main/opengeometry-three/src/shapes/cuboid.ts","../main/main/opengeometry-three/src/shapes/opening.ts","../main/main/opengeometry-three/src/shapes/sphere.ts","../main/main/opengeometry-three/src/shapes/wedge.ts","../main/main/opengeometry-three/src/shapes/sweep.ts","../main/main/opengeometry-three/src/examples/primitives.ts","../main/main/opengeometry-three/src/examples/shapes.ts","../main/main/opengeometry-three/src/examples/sweep.ts","../main/main/opengeometry-three/src/examples/offset.ts","../main/main/opengeometry-three/src/operations/offset-regions.ts","../main/main/opengeometry-three/src/examples/offset-ring-variable.ts","../main/main/opengeometry-three/src/examples/ribbon-from-offsets.ts","../main/main/opengeometry-three/src/operations/boolean.ts","../main/main/opengeometry-three/src/examples/booleans.ts","../main/main/opengeometry-three/src/examples/editor-modes.ts","../main/main/opengeometry-three/src/operations/boolean-regions.ts","../main/main/opengeometry-three/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","let wasm;\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_export_2.set(idx, obj);\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_export_2.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedFloat64ArrayMemory0 = null;\n\nfunction getFloat64ArrayMemory0() {\n if (cachedFloat64ArrayMemory0 === null || cachedFloat64ArrayMemory0.byteLength === 0) {\n cachedFloat64ArrayMemory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachedFloat64ArrayMemory0;\n}\n\nfunction getArrayF64FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat64ArrayMemory0().subarray(ptr / 8, ptr / 8 + len);\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction passArrayJsValueToWasm0(array, malloc) {\n const ptr = malloc(array.length * 4, 4) >>> 0;\n for (let i = 0; i < array.length; i++) {\n const add = addToExternrefTable0(array[i]);\n getDataViewMemory0().setUint32(ptr + 4 * i, add, true);\n }\n WASM_VECTOR_LEN = array.length;\n return ptr;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n/**\n * @param {string} a_json\n * @param {string} b_json\n * @param {string} operation\n * @returns {OGOffsetRegionsResult}\n */\nexport function booleanRegions2D(a_json, b_json, operation) {\n const ptr0 = passStringToWasm0(a_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(b_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(operation, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanRegions2D(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGOffsetRegionsResult.__wrap(ret[0]);\n}\n\n/**\n * Exact line/arc region Boolean. The JSON rings contain analytic edges rather\n * than vertices, and the result keeps arcs as arcs. As with booleanRegions2D,\n * outer rings are CW in XZ and holes are CCW.\n * @param {string} a_json\n * @param {string} b_json\n * @param {string} operation\n * @returns {string}\n */\nexport function booleanCurvedRegions2D(a_json, b_json, operation) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(a_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(b_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(operation, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanCurvedRegions2D(ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n}\n\nfunction passArrayF64ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 8, 8) >>> 0;\n getFloat64ArrayMemory0().set(arg, ptr / 8);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n * Wasm entry point: offset a centreline by `width` into stroked regions via the\n * deterministic analytic offset. `centreline_flat` is `[x0,y0,z0, …]`. Returns\n * CW-outer / CCW-hole regions, canonicalised; empty (does NOT throw) when degenerate.\n * @param {Float64Array} centreline_flat\n * @param {number} width\n * @param {boolean} closed\n * @param {number} miter_limit\n * @returns {OGOffsetRegionsResult}\n */\nexport function offsetPolylineRegions(centreline_flat, width, closed, miter_limit) {\n const ptr0 = passArrayF64ToWasm0(centreline_flat, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.offsetPolylineRegions(ptr0, len0, width, closed, miter_limit);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGOffsetRegionsResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point: merge a GROUP of separate polylines (a crossing T / X / L\n * overlap) into one clean stroked region by nonzero-winding union of their mitered\n * bands. `polylines_json` is `[{centreline:[x,y,z,…], width, closed}, …]`. Returns\n * CW-outer / CCW-hole regions (one or more); empty when no region remains.\n * @param {string} polylines_json\n * @returns {OGOffsetRegionsResult}\n */\nexport function offsetPolylineGroupRegions(polylines_json) {\n const ptr0 = passStringToWasm0(polylines_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.offsetPolylineGroupRegions(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGOffsetRegionsResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point: inset a CLOSED ring inward with one distance per edge\n * (edge i = ring[i] → ring[i+1]). `ring_flat` is `[x0,y0,z0, …]`;\n * `holes_json` is `[{ring:[x,y,z,…], distances:[…]}, …]` (`\"[]\"` = none) —\n * excluded interior rings, each grown outward by its own per-edge distances.\n * Returns CW-outer / CCW-hole regions, canonicalised; possibly several when a\n * deep inset (or a hole) splits the ring, and empty (does NOT throw) when the\n * inset collapses or the outer ring is degenerate. THROWS on malformed\n * arguments: a distance count that does not match an edge count, a negative /\n * non-finite distance, a degenerate hole, or unparsable `holes_json`. Corners\n * where distances differ are circumscribed clearance arcs (conservative), so\n * no output point is ever closer to an edge than that edge's distance —\n * there is no miter-limit knob because there are no miters.\n * @param {Float64Array} ring_flat\n * @param {Float64Array} distances\n * @param {string} holes_json\n * @returns {OGOffsetRegionsResult}\n */\nexport function offsetRingVariable(ring_flat, distances, holes_json) {\n const ptr0 = passArrayF64ToWasm0(ring_flat, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayF64ToWasm0(distances, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(holes_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.offsetRingVariable(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGOffsetRegionsResult.__wrap(ret[0]);\n}\n\n/**\n * @param {string} local_brep_serialized\n * @param {number} height\n * @returns {string}\n */\nexport function extrudeBrepFace(local_brep_serialized, height) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(local_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.extrudeBrepFace(ptr0, len0, height);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\n/**\n * Wasm entry point for general extrude. `direction` is `[x,y,z]`; `extent_kind`\n * is `\"one_sided\" | \"symmetric\" | \"two_sided\"`; `d_plus`/`d_minus` are the\n * extent distances (`d_minus` ignored unless two-sided, `d_plus` is the\n * distance for one-sided/symmetric).\n * @param {string} local_brep_serialized\n * @param {Float64Array} direction\n * @param {string} extent_kind\n * @param {number} d_plus\n * @param {number} d_minus\n * @returns {string}\n */\nexport function extrudeBrepFaceDirectional(local_brep_serialized, direction, extent_kind, d_plus, d_minus) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(local_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayF64ToWasm0(direction, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(extent_kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.extrudeBrepFaceDirectional(ptr0, len0, ptr1, len1, ptr2, len2, d_plus, d_minus);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n}\n\n/**\n * Wasm entry point: analyze a flat `[x0,y0,z0,…]` loop, returning the report as\n * JSON (the corrected points are not returned here; use the kernel API).\n * @param {Float64Array} flat_points\n * @returns {string}\n */\nexport function analyzeProfile(flat_points) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passArrayF64ToWasm0(flat_points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.analyzeProfile(ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\nfunction getArrayJsValueFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n const mem = getDataViewMemory0();\n const result = [];\n for (let i = ptr; i < ptr + 4 * len; i += 4) {\n result.push(wasm.__wbindgen_export_2.get(mem.getUint32(i, true)));\n }\n wasm.__externref_drop_slice(ptr, len);\n return result;\n}\n/**\n * Wasm entry point: check a serialized B-rep's geometric validity, returning\n * the [`ValidityReport`] as JSON.\n * @param {string} brep_json\n * @returns {string}\n */\nexport function checkBrepValidity(brep_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(brep_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.checkBrepValidity(ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\n/**\n * Wasm entry point: heal a serialized B-rep, returning JSON\n * `{ \"brep\": <healed brep>, \"report\": <heal report> }`.\n * @param {string} brep_json\n * @param {number} tolerance\n * @returns {string}\n */\nexport function healBrep(brep_json, tolerance) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(brep_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.healBrep(ptr0, len0, tolerance);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\n/**\n * @param {string} serialized\n * @returns {string}\n */\nexport function validateAnalyticBrep(serialized) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.validateAnalyticBrep(ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\n/**\n * @param {string} serialized\n * @param {number} deflection\n * @param {string | null} [options_json]\n * @returns {OGAnalyticTessellation}\n */\nexport function tessellate_brep(serialized, deflection, options_json) {\n const ptr0 = passStringToWasm0(serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.tessellate_brep(ptr0, len0, deflection, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGAnalyticTessellation.__wrap(ret[0]);\n}\n\nlet cachedFloat32ArrayMemory0 = null;\n\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getArrayF32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nlet cachedUint32ArrayMemory0 = null;\n\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nconst Matrix3Finalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_matrix3_free(ptr >>> 0, 1));\n\nexport class Matrix3 {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Matrix3.prototype);\n obj.__wbg_ptr = ptr;\n Matrix3Finalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n Matrix3Finalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_matrix3_free(ptr, 0);\n }\n /**\n *\n * * Create a new Matrix3 with identity elements.\n *\n */\n constructor() {\n const ret = wasm.matrix3_new();\n this.__wbg_ptr = ret >>> 0;\n Matrix3Finalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {number} m0\n * @param {number} m1\n * @param {number} m2\n * @param {number} m3\n * @param {number} m4\n * @param {number} m5\n * @param {number} m6\n * @param {number} m7\n * @param {number} m8\n * @returns {Matrix3}\n */\n set(m0, m1, m2, m3, m4, m5, m6, m7, m8) {\n const ret = wasm.matrix3_set(this.__wbg_ptr, m0, m1, m2, m3, m4, m5, m6, m7, m8);\n return Matrix3.__wrap(ret);\n }\n /**\n *\n * * Clone the Matrix3 instance and return a new one.\n *\n * @returns {Matrix3}\n */\n clone() {\n const ret = wasm.matrix3_clone(this.__wbg_ptr);\n return Matrix3.__wrap(ret);\n }\n /**\n *\n * * Sets the matrix element to create an identity matrix.\n *\n */\n identity() {\n wasm.matrix3_identity(this.__wbg_ptr);\n }\n /**\n *\n * * Determinant for a 3x3 matrix.\n * * https://en.wikipedia.org/wiki/Determinant\n *\n * @returns {number}\n */\n determinant() {\n const ret = wasm.matrix3_determinant(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {Matrix3}\n */\n adjucate() {\n const ret = wasm.matrix3_adjucate(this.__wbg_ptr);\n return Matrix3.__wrap(ret);\n }\n /**\n * @returns {Matrix3 | undefined}\n */\n inverse() {\n const ret = wasm.matrix3_inverse(this.__wbg_ptr);\n return ret === 0 ? undefined : Matrix3.__wrap(ret);\n }\n /**\n * @returns {Matrix3}\n */\n transpose() {\n const ret = wasm.matrix3_transpose(this.__wbg_ptr);\n return Matrix3.__wrap(ret);\n }\n}\n\nconst Matrix4Finalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_matrix4_free(ptr >>> 0, 1));\n/**\n *\n * * Matrix4 Module\n * * 2D Representation of a 4x4 Matrix\n * * It's a row-major matrix.\n *\n */\nexport class Matrix4 {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Matrix4.prototype);\n obj.__wbg_ptr = ptr;\n Matrix4Finalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n Matrix4Finalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_matrix4_free(ptr, 0);\n }\n /**\n * @returns {Float64Array}\n */\n get elements() {\n const ret = wasm.matrix4_elements(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n *\n * * Create a new Matrix4 with identity elements.\n *\n */\n constructor() {\n const ret = wasm.matrix4_new();\n this.__wbg_ptr = ret >>> 0;\n Matrix4Finalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {number} m0\n * @param {number} m1\n * @param {number} m2\n * @param {number} m3\n * @param {number} m4\n * @param {number} m5\n * @param {number} m6\n * @param {number} m7\n * @param {number} m8\n * @param {number} m9\n * @param {number} m10\n * @param {number} m11\n * @param {number} m12\n * @param {number} m13\n * @param {number} m14\n * @param {number} m15\n * @returns {Matrix4}\n */\n static set(m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) {\n const ret = wasm.matrix4_set(m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Clone the Matrix4 instance and return a new one.\n *\n * @returns {Matrix4}\n */\n clone() {\n const ret = wasm.matrix4_clone(this.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Sets the matrix element to create an identity matrix.\n *\n */\n identity() {\n wasm.matrix4_identity(this.__wbg_ptr);\n }\n /**\n *\n * * Determinant for a 4x4 matrix.\n * * https://en.wikipedia.org/wiki/Determinant\n *\n * @returns {number}\n */\n determinant() {\n const ret = wasm.matrix4_determinant(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {Matrix4}\n */\n adjucate() {\n const ret = wasm.matrix4_adjucate(this.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Inverse of a matrix\n * * Returns a new Matrix4 instance.\n * * If the determinant is zero, it returns a zero matrix.\n * * It can be checked with is_zero() method.\n *\n * @returns {Matrix4}\n */\n inverse() {\n const ret = wasm.matrix4_inverse(this.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Multiply this matrix with another Matrix4\n * * Returns a new Matrix4 instance\n *\n * @param {Matrix4} other\n * @returns {Matrix4}\n */\n multiply(other) {\n _assertClass(other, Matrix4);\n const ret = wasm.matrix4_multiply(this.__wbg_ptr, other.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Add another Matrix4 to this one.\n * * Returns a new Matrix4 instance with the result.\n *\n * @param {Matrix4} incoming\n * @returns {Matrix4}\n */\n add(incoming) {\n _assertClass(incoming, Matrix4);\n const ret = wasm.matrix4_add(this.__wbg_ptr, incoming.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Subtract another Matrix4 from this one.\n * * Returns a new Matrix4 instance with the result.\n *\n * @param {Matrix4} incoming\n * @returns {Matrix4}\n */\n subtract(incoming) {\n _assertClass(incoming, Matrix4);\n const ret = wasm.matrix4_subtract(this.__wbg_ptr, incoming.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Flatten the matrix into a vector of f64.\n *\n * @returns {Float64Array}\n */\n flatten() {\n const ret = wasm.matrix4_flatten(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n *\n * * Get the element at a specific index in the flattened matrix.\n *\n * @param {number} index\n * @returns {number | undefined}\n */\n get_element_at(index) {\n const ret = wasm.matrix4_get_element_at(this.__wbg_ptr, index);\n return ret[0] === 0 ? undefined : ret[1];\n }\n /**\n *\n * * Check if the matrix is a zero matrix.\n *\n * @returns {boolean}\n */\n is_zero() {\n const ret = wasm.matrix4_is_zero(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n *\n * * Check if the matrix is an identity matrix.\n *\n * @returns {boolean}\n */\n is_identity() {\n const ret = wasm.matrix4_is_identity(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n *\n * * Create a Transpose of the matrix.\n * * Returns a new Matrix4 instance.\n *\n * @returns {Matrix4}\n */\n transpose() {\n const ret = wasm.matrix4_transpose(this.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n}\n\nconst OGAnalyticBrepFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_oganalyticbrep_free(ptr >>> 0, 1));\n\nexport class OGAnalyticBrep {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGAnalyticBrep.prototype);\n obj.__wbg_ptr = ptr;\n OGAnalyticBrepFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGAnalyticBrepFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_oganalyticbrep_free(ptr, 0);\n }\n /**\n * @param {string} serialized\n */\n constructor(serialized) {\n const ptr0 = passStringToWasm0(serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_new(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0] >>> 0;\n OGAnalyticBrepFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {string} config_json\n * @returns {OGAnalyticBrep}\n */\n static from_primitive(config_json) {\n const ptr0 = passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_from_primitive(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGAnalyticBrep.__wrap(ret[0]);\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.oganalyticbrep_get_brep_serialized(this.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {string} length_unit\n * @returns {string}\n */\n export_step(length_unit) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(length_unit, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_export_step(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} frame_json\n * @param {number} scale\n * @returns {OGAnalyticBrep}\n */\n placed(frame_json, scale) {\n const ptr0 = passStringToWasm0(frame_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_placed(this.__wbg_ptr, ptr0, len0, scale);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGAnalyticBrep.__wrap(ret[0]);\n }\n /**\n * @returns {string}\n */\n prepare_ifc_exchange() {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.oganalyticbrep_prepare_ifc_exchange(this.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} face_id\n * @param {Float64Array} point\n * @returns {Float64Array}\n */\n face_normal_at(face_id, point) {\n const ptr0 = passArrayF64ToWasm0(point, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_face_normal_at(this.__wbg_ptr, face_id, ptr0, len0);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v2;\n }\n /**\n * @param {Float64Array} point\n * @returns {string}\n */\n classify_point(point) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passArrayF64ToWasm0(point, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_classify_point(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} camera_json\n * @param {string} hlr_json\n * @param {number} deflection\n * @returns {string}\n */\n project_to_2d_lines(camera_json, hlr_json, deflection) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_project_to_2d_lines(this.__wbg_ptr, ptr0, len0, ptr1, len1, deflection);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {OGAnalyticBrep} other\n * @param {string} operation\n * @param {string} id\n * @returns {OGAnalyticBrep}\n */\n boolean_brep(other, operation, id) {\n _assertClass(other, OGAnalyticBrep);\n const ptr0 = passStringToWasm0(operation, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_boolean_brep(this.__wbg_ptr, other.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGAnalyticBrep.__wrap(ret[0]);\n }\n /**\n * @param {string} cutters_json\n * @param {string} id\n * @returns {OGAnalyticBrep}\n */\n subtract_planar_cutters(cutters_json, id) {\n const ptr0 = passStringToWasm0(cutters_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_subtract_planar_cutters(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGAnalyticBrep.__wrap(ret[0]);\n }\n /**\n * @param {number} thickness\n * @param {string} id\n * @returns {OGAnalyticBrep}\n */\n shell(thickness, id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.oganalyticbrep_shell(this.__wbg_ptr, thickness, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGAnalyticBrep.__wrap(ret[0]);\n }\n /**\n * @returns {string | undefined}\n */\n get_boolean_report_serialized() {\n const ret = wasm.oganalyticbrep_get_boolean_report_serialized(this.__wbg_ptr);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @param {number} deflection\n * @returns {OGAnalyticTessellation}\n */\n tessellate(deflection) {\n const ret = wasm.oganalyticbrep_tessellate(this.__wbg_ptr, deflection);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGAnalyticTessellation.__wrap(ret[0]);\n }\n /**\n * @returns {number}\n */\n get_face_count() {\n const ret = wasm.oganalyticbrep_get_face_count(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get_edge_count() {\n const ret = wasm.oganalyticbrep_get_edge_count(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {string}\n */\n get_id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.oganalyticbrep_get_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_bounds() {\n const ret = wasm.oganalyticbrep_get_bounds(this.__wbg_ptr);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {number}\n */\n get_vertex_count() {\n const ret = wasm.oganalyticbrep_get_vertex_count(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {bigint}\n */\n get_revision() {\n const ret = wasm.oganalyticbrep_get_revision(this.__wbg_ptr);\n return BigInt.asUintN(64, ret);\n }\n}\n\nconst OGAnalyticTessellationFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_oganalytictessellation_free(ptr >>> 0, 1));\n\nexport class OGAnalyticTessellation {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGAnalyticTessellation.prototype);\n obj.__wbg_ptr = ptr;\n OGAnalyticTessellationFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGAnalyticTessellationFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_oganalytictessellation_free(ptr, 0);\n }\n /**\n * @returns {Float64Array}\n */\n positions() {\n const ret = wasm.oganalytictessellation_positions(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float32Array}\n */\n normals() {\n const ret = wasm.oganalytictessellation_normals(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Uint32Array}\n */\n indices() {\n const ret = wasm.oganalytictessellation_indices(this.__wbg_ptr);\n var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Uint32Array}\n */\n triangle_face_ids() {\n const ret = wasm.oganalytictessellation_triangle_face_ids(this.__wbg_ptr);\n var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n outline_positions() {\n const ret = wasm.oganalytictessellation_outline_positions(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Uint32Array}\n */\n outline_edge_ids() {\n const ret = wasm.oganalytictessellation_outline_edge_ids(this.__wbg_ptr);\n var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {bigint}\n */\n revision() {\n const ret = wasm.oganalytictessellation_revision(this.__wbg_ptr);\n return BigInt.asUintN(64, ret);\n }\n /**\n * @returns {number}\n */\n achieved_deflection() {\n const ret = wasm.oganalytictessellation_achieved_deflection(this.__wbg_ptr);\n return ret;\n }\n}\n\nconst OGArcFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogarc_free(ptr >>> 0, 1));\n\nexport class OGArc {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGArcFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogarc_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogarc_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogarc_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGArcFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} radius\n * @param {number} start_angle\n * @param {number} end_angle\n * @param {number} segments\n */\n set_config(center, radius, start_angle, end_angle, segments) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogarc_set_config(this.__wbg_ptr, ptr0, radius, start_angle, end_angle, segments);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogarc_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogarc_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogarc_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogarc_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogarc_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogarc_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n dispose_points() {\n wasm.ogarc_dispose_points(this.__wbg_ptr);\n }\n destroy() {\n wasm.ogarc_destroy(this.__wbg_ptr);\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogarc_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogarc_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogarc_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGCuboidFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogcuboid_free(ptr >>> 0, 1));\n\nexport class OGCuboid {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGCuboidFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogcuboid_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogcuboid_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogcuboid_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGCuboidFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} width\n * @param {number} height\n * @param {number} depth\n */\n set_config(center, width, height, depth) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogcuboid_set_config(this.__wbg_ptr, ptr0, width, height, depth);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogcuboid_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogcuboid_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogcuboid_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogcuboid_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogcuboid_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogcuboid_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogcuboid_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogcuboid_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogcuboid_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogcuboid_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogcuboid_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGCurveFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogcurve_free(ptr >>> 0, 1));\n\nexport class OGCurve {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGCurveFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogcurve_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogcurve_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogcurve_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGCurveFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3[]} control_points\n */\n set_config(control_points) {\n const ptr0 = passArrayJsValueToWasm0(control_points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogcurve_set_config(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogcurve_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogcurve_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogcurve_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogcurve_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogcurve_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogcurve_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogcurve_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogcurve_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogcurve_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogcurve_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {number} distance\n * @param {number} acute_threshold_degrees\n * @param {boolean} bevel\n * @returns {string}\n */\n get_offset_serialized(distance, acute_threshold_degrees, bevel) {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_offset_serialized(this.__wbg_ptr, distance, acute_threshold_degrees, bevel);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n dispose() {\n wasm.ogcurve_dispose(this.__wbg_ptr);\n }\n}\n\nconst OGCylinderFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogcylinder_free(ptr >>> 0, 1));\n\nexport class OGCylinder {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGCylinderFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogcylinder_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogcylinder_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogcylinder_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGCylinderFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} radius\n * @param {number} height\n * @param {number} angle\n * @param {number} segments\n */\n set_config(center, radius, height, angle, segments) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogcylinder_set_config(this.__wbg_ptr, ptr0, radius, height, angle, segments);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogcylinder_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogcylinder_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogcylinder_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogcylinder_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogcylinder_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_brep() {\n const ret = wasm.ogcylinder_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogcylinder_clean_geometry(this.__wbg_ptr);\n }\n generate_geometry() {\n const ret = wasm.ogcylinder_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogcylinder_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogcylinder_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogcylinder_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogcylinder_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogcylinder_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGEllipticalArcFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogellipticalarc_free(ptr >>> 0, 1));\n\nexport class OGEllipticalArc {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGEllipticalArcFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogellipticalarc_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogellipticalarc_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogellipticalarc_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogellipticalarc_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGEllipticalArcFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} radius_x\n * @param {number} radius_z\n * @param {number} start_angle\n * @param {number} end_angle\n * @param {number} segments\n */\n set_config(center, radius_x, radius_z, start_angle, end_angle, segments) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogellipticalarc_set_config(this.__wbg_ptr, ptr0, radius_x, radius_z, start_angle, end_angle, segments);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogellipticalarc_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogellipticalarc_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogellipticalarc_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogellipticalarc_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogellipticalarc_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogellipticalarc_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n dispose_points() {\n wasm.ogellipticalarc_dispose_points(this.__wbg_ptr);\n }\n destroy() {\n wasm.ogellipticalarc_destroy(this.__wbg_ptr);\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogellipticalarc_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogellipticalarc_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogellipticalarc_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogellipticalarc_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogellipticalarc_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogellipticalarc_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogellipticalarc_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGEntityRegistryFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogentityregistry_free(ptr >>> 0, 1));\n/**\n * Flat entity registry with a batched multi-view projection API.\n * Replaces the scene-centric OGSceneManager pattern for export use cases.\n */\nexport class OGEntityRegistry {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGEntityRegistryFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogentityregistry_free(ptr, 0);\n }\n constructor() {\n const ret = wasm.ogentityregistry_new();\n this.__wbg_ptr = ret >>> 0;\n OGEntityRegistryFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * Register (or replace) an entity. `kind` must be an OGEntityKind string.\n * @param {string} id\n * @param {string} kind\n * @param {string} brep_json\n */\n registerEntity(id, kind, brep_json) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(brep_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogentityregistry_registerEntity(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * Remove a previously registered entity.\n * @param {string} id\n * @returns {boolean}\n */\n unregisterEntity(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogentityregistry_unregisterEntity(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Remove all registered entities.\n */\n clearEntities() {\n wasm.ogentityregistry_clearEntities(this.__wbg_ptr);\n }\n /**\n * Batched multi-view projection.\n *\n * Input: JSON array of `{ id, camera, hlr?, section_plane? }` (ViewRequest).\n * Output: JSON map of `{ viewportId: Scene2D }`.\n *\n * All viewports are projected in a single WASM call, amortising\n * serialisation overhead and keeping BRep data in WASM memory.\n * @param {string} views_json\n * @returns {string}\n */\n projectCurrentToViews(views_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(views_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogentityregistry_projectCurrentToViews(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n}\n\nconst OGFreeformEditorFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogfreeformeditor_free(ptr >>> 0, 1));\n\nexport class OGFreeformEditor {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGFreeformEditorFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogfreeformeditor_free(ptr, 0);\n }\n constructor() {\n const ret = wasm.ogfreeformeditor_new();\n this.__wbg_ptr = ret >>> 0;\n OGFreeformEditorFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @returns {string}\n */\n getTopologyRenderData(geometry) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getTopologyRenderData(this.__wbg_ptr, geometry.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @returns {string}\n */\n getFaceInfo(geometry, face_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getFaceInfo(this.__wbg_ptr, geometry.__wbg_ptr, face_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @returns {string}\n */\n getEdgeInfo(geometry, edge_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getEdgeInfo(this.__wbg_ptr, geometry.__wbg_ptr, edge_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} vertex_id\n * @returns {string}\n */\n getVertexInfo(geometry, vertex_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getVertexInfo(this.__wbg_ptr, geometry.__wbg_ptr, vertex_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @returns {string}\n */\n getEditCapabilities(geometry) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getEditCapabilities(this.__wbg_ptr, geometry.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @returns {string}\n */\n getFaceEditCapabilities(geometry, face_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getFaceEditCapabilities(this.__wbg_ptr, geometry.__wbg_ptr, face_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @returns {string}\n */\n getEdgeEditCapabilities(geometry, edge_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getEdgeEditCapabilities(this.__wbg_ptr, geometry.__wbg_ptr, edge_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} vertex_id\n * @returns {string}\n */\n getVertexEditCapabilities(geometry, vertex_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getVertexEditCapabilities(this.__wbg_ptr, geometry.__wbg_ptr, vertex_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @param {number} distance\n * @param {string | null} [options_json]\n * @returns {string}\n */\n pushPullFace(geometry, face_id, distance, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_pushPullFace(this.__wbg_ptr, geometry.__wbg_ptr, face_id, distance, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @param {Vector3} translation\n * @param {string | null} [options_json]\n * @returns {string}\n */\n moveFace(geometry, face_id, translation, options_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n var ptr1 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_moveFace(this.__wbg_ptr, geometry.__wbg_ptr, face_id, ptr0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @param {Vector3} translation\n * @param {string | null} [options_json]\n * @returns {string}\n */\n moveEdge(geometry, edge_id, translation, options_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n var ptr1 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_moveEdge(this.__wbg_ptr, geometry.__wbg_ptr, edge_id, ptr0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} vertex_id\n * @param {Vector3} translation\n * @param {string | null} [options_json]\n * @returns {string}\n */\n moveVertex(geometry, vertex_id, translation, options_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n var ptr1 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_moveVertex(this.__wbg_ptr, geometry.__wbg_ptr, vertex_id, ptr0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @param {number} distance\n * @param {string | null} [options_json]\n * @returns {string}\n */\n extrudeFace(geometry, face_id, distance, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_extrudeFace(this.__wbg_ptr, geometry.__wbg_ptr, face_id, distance, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @param {number} start_edge_id\n * @param {number} start_t\n * @param {number} end_edge_id\n * @param {number} end_t\n * @param {string | null} [options_json]\n * @returns {string}\n */\n cutFace(geometry, face_id, start_edge_id, start_t, end_edge_id, end_t, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_cutFace(this.__wbg_ptr, geometry.__wbg_ptr, face_id, start_edge_id, start_t, end_edge_id, end_t, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @param {number} t\n * @param {string | null} [options_json]\n * @returns {string}\n */\n insertVertexOnEdge(geometry, edge_id, t, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_insertVertexOnEdge(this.__wbg_ptr, geometry.__wbg_ptr, edge_id, t, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @param {number} t\n * @param {string | null} [options_json]\n * @returns {string}\n */\n splitEdge(geometry, edge_id, t, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_splitEdge(this.__wbg_ptr, geometry.__wbg_ptr, edge_id, t, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @param {number} t\n * @param {string | null} [options_json]\n * @returns {string}\n */\n loopCut(geometry, edge_id, t, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_loopCut(this.__wbg_ptr, geometry.__wbg_ptr, edge_id, t, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} vertex_id\n * @param {string | null} [options_json]\n * @returns {string}\n */\n removeVertex(geometry, vertex_id, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_removeVertex(this.__wbg_ptr, geometry.__wbg_ptr, vertex_id, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n}\n\nconst OGFreeformGeometryFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogfreeformgeometry_free(ptr >>> 0, 1));\n\nexport class OGFreeformGeometry {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGFreeformGeometryFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogfreeformgeometry_free(ptr, 0);\n }\n /**\n * @param {string} id\n * @param {string} local_brep_serialized\n */\n constructor(id, local_brep_serialized) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(local_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformgeometry_new(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0] >>> 0;\n OGFreeformGeometryFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n getBrepSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getBrepSerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n getLocalBrepSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getLocalBrepSerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n getGeometrySerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getGeometrySerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n getGeometryBuffer() {\n const ret = wasm.ogfreeformgeometry_getGeometryBuffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n getLocalGeometryBuffer() {\n const ret = wasm.ogfreeformgeometry_getLocalGeometryBuffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n getOutlineGeometrySerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getOutlineGeometrySerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n getOutlineGeometryBuffer() {\n const ret = wasm.ogfreeformgeometry_getOutlineGeometryBuffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n getLocalOutlineGeometryBuffer() {\n const ret = wasm.ogfreeformgeometry_getLocalOutlineGeometryBuffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n getPlacementSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getPlacementSerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} placement_serialized\n */\n setPlacementSerialized(placement_serialized) {\n const ptr0 = passStringToWasm0(placement_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformgeometry_setPlacementSerialized(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n setTransform(translation, rotation, scale) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogfreeformgeometry_setTransform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n setTranslation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogfreeformgeometry_setTranslation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n setRotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogfreeformgeometry_setRotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n setScale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogfreeformgeometry_setScale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} anchor\n */\n setAnchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n wasm.ogfreeformgeometry_setAnchor(this.__wbg_ptr, ptr0);\n }\n}\n\nconst OGIfcExportResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogifcexportresult_free(ptr >>> 0, 1));\n\nexport class OGIfcExportResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGIfcExportResult.prototype);\n obj.__wbg_ptr = ptr;\n OGIfcExportResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGIfcExportResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogifcexportresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get text() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogifcexportresult_text(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get reportJson() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogifcexportresult_reportJson(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGLineFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogline_free(ptr >>> 0, 1));\n\nexport class OGLine {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGLineFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogline_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogline_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogline_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGLineFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} start\n * @param {Vector3} end\n */\n set_config(start, end) {\n _assertClass(start, Vector3);\n var ptr0 = start.__destroy_into_raw();\n _assertClass(end, Vector3);\n var ptr1 = end.__destroy_into_raw();\n const ret = wasm.ogline_set_config(this.__wbg_ptr, ptr0, ptr1);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogline_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogline_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogline_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogline_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogline_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n dispose_points() {\n wasm.ogline_dispose_points(this.__wbg_ptr);\n }\n destroy() {\n wasm.ogline_destroy(this.__wbg_ptr);\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogline_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogline_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogline_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogline_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogline_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {number} distance\n * @param {number} acute_threshold_degrees\n * @param {boolean} bevel\n * @returns {string}\n */\n get_offset_serialized(distance, acute_threshold_degrees, bevel) {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_offset_serialized(this.__wbg_ptr, distance, acute_threshold_degrees, bevel);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_dxf_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_dxf_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGOffsetRegionsResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogoffsetregionsresult_free(ptr >>> 0, 1));\n/**\n * Result payload for a polyline offset: a list of regions (each an outer ring +\n * inner-void holes). Normally one region; a self-crossing closed centreline (e.g.\n * a figure-8) yields one per simple sub-loop. The deterministic analytic offset —\n * no extrude/solid. Used to build the plan polygons + extruded base solids in JS.\n */\nexport class OGOffsetRegionsResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGOffsetRegionsResult.prototype);\n obj.__wbg_ptr = ptr;\n OGOffsetRegionsResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGOffsetRegionsResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogoffsetregionsresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get regionsSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogoffsetregionsresult_regionsSerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGPolygonFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogpolygon_free(ptr >>> 0, 1));\n\nexport class OGPolygon {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGPolygonFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogpolygon_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogpolygon_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolygon_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGPolygonFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3[]} points\n */\n set_config(points) {\n const ptr0 = passArrayJsValueToWasm0(points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolygon_set_config(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogpolygon_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogpolygon_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogpolygon_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogpolygon_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3[]} vertices\n */\n add_vertices(vertices) {\n const ptr0 = passArrayJsValueToWasm0(vertices, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolygon_add_vertices(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3[]} hole\n */\n add_holes(hole) {\n const ptr0 = passArrayJsValueToWasm0(hole, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolygon_add_holes(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogpolygon_clean_geometry(this.__wbg_ptr);\n }\n generate_brep() {\n const ret = wasm.ogpolygon_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogpolygon_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogpolygon_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogpolygon_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogpolygon_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogpolygon_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogpolygon_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogpolygon_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogpolygon_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\n\nconst OGPolylineFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogpolyline_free(ptr >>> 0, 1));\n\nexport class OGPolyline {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGPolyline.prototype);\n obj.__wbg_ptr = ptr;\n OGPolylineFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGPolylineFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogpolyline_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogpolyline_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolyline_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGPolylineFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @returns {OGPolyline}\n */\n clone() {\n const ret = wasm.ogpolyline_clone(this.__wbg_ptr);\n return OGPolyline.__wrap(ret);\n }\n /**\n * @param {Vector3[]} points\n */\n set_config(points) {\n const ptr0 = passArrayJsValueToWasm0(points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolyline_set_config(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogpolyline_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogpolyline_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogpolyline_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogpolyline_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogpolyline_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3[]} points\n */\n add_multiple_points(points) {\n const ptr0 = passArrayJsValueToWasm0(points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolyline_add_multiple_points(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} point\n */\n add_point(point) {\n _assertClass(point, Vector3);\n var ptr0 = point.__destroy_into_raw();\n const ret = wasm.ogpolyline_add_point(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_points() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_points(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Vector3[]}\n */\n get_raw_points() {\n const ret = wasm.ogpolyline_get_raw_points(this.__wbg_ptr);\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {boolean}\n */\n is_closed() {\n const ret = wasm.ogpolyline_is_closed(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {number} distance\n * @param {number} acute_threshold_degrees\n * @param {boolean} bevel\n * @returns {string}\n */\n get_offset_serialized(distance, acute_threshold_degrees, bevel) {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_offset_serialized(this.__wbg_ptr, distance, acute_threshold_degrees, bevel);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n check_closed_test() {\n wasm.ogpolyline_check_closed_test(this.__wbg_ptr);\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogpolyline_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogpolyline_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogline_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogpolyline_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogpolyline_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\n\nconst OGRectangleFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogrectangle_free(ptr >>> 0, 1));\n\nexport class OGRectangle {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGRectangleFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogrectangle_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogrectangle_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogrectangle_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGRectangleFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} width\n * @param {number} breadth\n */\n set_config(center, width, breadth) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogrectangle_set_config(this.__wbg_ptr, ptr0, width, breadth);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogrectangle_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogrectangle_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogrectangle_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogrectangle_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogrectangle_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogrectangle_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogrectangle_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogrectangle_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogrectangle_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {number} distance\n * @param {number} acute_threshold_degrees\n * @param {boolean} bevel\n * @returns {string}\n */\n get_offset_serialized(distance, acute_threshold_degrees, bevel) {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_offset_serialized(this.__wbg_ptr, distance, acute_threshold_degrees, bevel);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGSceneManagerFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogscenemanager_free(ptr >>> 0, 1));\n\nexport class OGSceneManager {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGSceneManagerFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogscenemanager_free(ptr, 0);\n }\n constructor() {\n const ret = wasm.ogscenemanager_new();\n this.__wbg_ptr = ret >>> 0;\n OGSceneManagerFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {string} name\n * @returns {string}\n */\n createScene(name) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_createScene(this.__wbg_ptr, ptr0, len0);\n deferred2_0 = ret[0];\n deferred2_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @returns {boolean}\n */\n removeScene(scene_id) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_removeScene(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * @param {string} scene_id\n */\n setCurrentScene(scene_id) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_setCurrentScene(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string | undefined}\n */\n getCurrentSceneId() {\n const ret = wasm.ogscenemanager_getCurrentSceneId(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {string}\n */\n listScenes() {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.ogscenemanager_listScenes(this.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @returns {string}\n */\n getSceneSerialized(scene_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_getSceneSerialized(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @returns {boolean}\n */\n removeEntityFromScene(scene_id, entity_id) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_removeEntityFromScene(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] !== 0;\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n addBrepEntityToScene(scene_id, entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_addBrepEntityToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n addBrepEntityToCurrentScene(entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_addBrepEntityToCurrentScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n replaceBrepEntityInScene(scene_id, entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_replaceBrepEntityInScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n replaceBrepEntityInCurrentScene(entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_replaceBrepEntityInCurrentScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n refreshBrepEntityInScene(scene_id, entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_refreshBrepEntityInScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n refreshBrepEntityInCurrentScene(entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_refreshBrepEntityInCurrentScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGLine} line\n */\n addLineToScene(scene_id, entity_id, line) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(line, OGLine);\n const ret = wasm.ogscenemanager_addLineToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, line.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGLine} line\n */\n addLineToCurrentScene(entity_id, line) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(line, OGLine);\n const ret = wasm.ogscenemanager_addLineToCurrentScene(this.__wbg_ptr, ptr0, len0, line.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGPolyline} polyline\n */\n addPolylineToScene(scene_id, entity_id, polyline) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(polyline, OGPolyline);\n const ret = wasm.ogscenemanager_addPolylineToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, polyline.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGPolyline} polyline\n */\n addPolylineToCurrentScene(entity_id, polyline) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(polyline, OGPolyline);\n const ret = wasm.ogscenemanager_addPolylineToCurrentScene(this.__wbg_ptr, ptr0, len0, polyline.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGArc} arc\n */\n addArcToScene(scene_id, entity_id, arc) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(arc, OGArc);\n const ret = wasm.ogscenemanager_addArcToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, arc.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGArc} arc\n */\n addArcToCurrentScene(entity_id, arc) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(arc, OGArc);\n const ret = wasm.ogscenemanager_addArcToCurrentScene(this.__wbg_ptr, ptr0, len0, arc.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGRectangle} rectangle\n */\n addRectangleToScene(scene_id, entity_id, rectangle) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(rectangle, OGRectangle);\n const ret = wasm.ogscenemanager_addRectangleToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, rectangle.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGRectangle} rectangle\n */\n addRectangleToCurrentScene(entity_id, rectangle) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(rectangle, OGRectangle);\n const ret = wasm.ogscenemanager_addRectangleToCurrentScene(this.__wbg_ptr, ptr0, len0, rectangle.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGPolygon} polygon\n */\n addPolygonToScene(scene_id, entity_id, polygon) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(polygon, OGPolygon);\n const ret = wasm.ogscenemanager_addPolygonToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, polygon.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGPolygon} polygon\n */\n addPolygonToCurrentScene(entity_id, polygon) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(polygon, OGPolygon);\n const ret = wasm.ogscenemanager_addPolygonToCurrentScene(this.__wbg_ptr, ptr0, len0, polygon.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGCuboid} cuboid\n */\n addCuboidToScene(scene_id, entity_id, cuboid) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(cuboid, OGCuboid);\n const ret = wasm.ogscenemanager_addCuboidToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, cuboid.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGCuboid} cuboid\n */\n addCuboidToCurrentScene(entity_id, cuboid) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(cuboid, OGCuboid);\n const ret = wasm.ogscenemanager_addCuboidToCurrentScene(this.__wbg_ptr, ptr0, len0, cuboid.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGCylinder} cylinder\n */\n addCylinderToScene(scene_id, entity_id, cylinder) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(cylinder, OGCylinder);\n const ret = wasm.ogscenemanager_addCylinderToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, cylinder.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGCylinder} cylinder\n */\n addCylinderToCurrentScene(entity_id, cylinder) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(cylinder, OGCylinder);\n const ret = wasm.ogscenemanager_addCylinderToCurrentScene(this.__wbg_ptr, ptr0, len0, cylinder.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGSphere} sphere\n */\n addSphereToScene(scene_id, entity_id, sphere) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(sphere, OGSphere);\n const ret = wasm.ogscenemanager_addSphereToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, sphere.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGSphere} sphere\n */\n addSphereToCurrentScene(entity_id, sphere) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(sphere, OGSphere);\n const ret = wasm.ogscenemanager_addSphereToCurrentScene(this.__wbg_ptr, ptr0, len0, sphere.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGWedge} wedge\n */\n addWedgeToScene(scene_id, entity_id, wedge) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(wedge, OGWedge);\n const ret = wasm.ogscenemanager_addWedgeToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, wedge.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGWedge} wedge\n */\n addWedgeToCurrentScene(entity_id, wedge) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(wedge, OGWedge);\n const ret = wasm.ogscenemanager_addWedgeToCurrentScene(this.__wbg_ptr, ptr0, len0, wedge.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectTo2DCamera(scene_id, camera_json, hlr_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectTo2DCamera(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectTo2DCameraPretty(scene_id, camera_json, hlr_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectTo2DCameraPretty(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectTo2DLines(scene_id, camera_json, hlr_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectTo2DLines(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectTo2DLinesPretty(scene_id, camera_json, hlr_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectTo2DLinesPretty(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectCurrentTo2DCamera(camera_json, hlr_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectCurrentTo2DCamera(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectCurrentTo2DLines(camera_json, hlr_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectCurrentTo2DLines(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {string} brep_serialized\n * @param {string | null} [config_json]\n * @returns {OGStlExportResult}\n */\n exportBrepToStl(brep_serialized, config_json) {\n const ptr0 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportBrepToStl(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStlExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} scene_id\n * @param {string | null} [config_json]\n * @returns {OGStlExportResult}\n */\n exportSceneToStl(scene_id, config_json) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportSceneToStl(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStlExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string | null} [config_json]\n * @returns {OGStlExportResult}\n */\n exportCurrentSceneToStl(config_json) {\n var ptr0 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportCurrentSceneToStl(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStlExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} brep_serialized\n * @param {string | null} [config_json]\n * @returns {OGStepExportResult}\n */\n exportBrepToStep(brep_serialized, config_json) {\n const ptr0 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportBrepToStep(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStepExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} scene_id\n * @param {string | null} [config_json]\n * @returns {OGStepExportResult}\n */\n exportSceneToStep(scene_id, config_json) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportSceneToStep(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStepExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string | null} [config_json]\n * @returns {OGStepExportResult}\n */\n exportCurrentSceneToStep(config_json) {\n var ptr0 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportCurrentSceneToStep(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStepExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} brep_serialized\n * @param {string | null} [config_json]\n * @returns {OGIfcExportResult}\n */\n exportBrepToIfc(brep_serialized, config_json) {\n const ptr0 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportBrepToIfc(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGIfcExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} scene_id\n * @param {string | null} [config_json]\n * @returns {OGIfcExportResult}\n */\n exportSceneToIfc(scene_id, config_json) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportSceneToIfc(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGIfcExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string | null} [config_json]\n * @returns {OGIfcExportResult}\n */\n exportCurrentSceneToIfc(config_json) {\n var ptr0 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportCurrentSceneToIfc(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGIfcExportResult.__wrap(ret[0]);\n }\n}\n\nconst OGSphereFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogsphere_free(ptr >>> 0, 1));\n\nexport class OGSphere {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGSphereFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogsphere_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogsphere_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogsphere_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGSphereFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} radius\n * @param {number} width_segments\n * @param {number} height_segments\n */\n set_config(center, radius, width_segments, height_segments) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogsphere_set_config(this.__wbg_ptr, ptr0, radius, width_segments, height_segments);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogsphere_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogsphere_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogsphere_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogsphere_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogsphere_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_brep() {\n const ret = wasm.ogsphere_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogsphere_clean_geometry(this.__wbg_ptr);\n }\n generate_geometry() {\n const ret = wasm.ogsphere_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogsphere_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogsphere_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogsphere_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogsphere_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogcurve_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGStepExportResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogstepexportresult_free(ptr >>> 0, 1));\n\nexport class OGStepExportResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGStepExportResult.prototype);\n obj.__wbg_ptr = ptr;\n OGStepExportResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGStepExportResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogstepexportresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get text() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogstepexportresult_text(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get reportJson() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogstepexportresult_reportJson(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGStlExportResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogstlexportresult_free(ptr >>> 0, 1));\n\nexport class OGStlExportResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGStlExportResult.prototype);\n obj.__wbg_ptr = ptr;\n OGStlExportResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGStlExportResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogstlexportresult_free(ptr, 0);\n }\n /**\n * @returns {Uint8Array}\n */\n get bytes() {\n const ret = wasm.ogstlexportresult_bytes(this.__wbg_ptr);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n }\n /**\n * @returns {string}\n */\n get reportJson() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogstlexportresult_reportJson(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGSweepFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogsweep_free(ptr >>> 0, 1));\n\nexport class OGSweep {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGSweepFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogsweep_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogsweep_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogsweep_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGSweepFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3[]} path_points\n * @param {Vector3[]} profile_points\n */\n set_config(path_points, profile_points) {\n const ptr0 = passArrayJsValueToWasm0(path_points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayJsValueToWasm0(profile_points, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogsweep_set_config(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3[]} path_points\n * @param {Vector3[]} profile_points\n * @param {boolean} cap_start\n * @param {boolean} cap_end\n */\n set_config_with_caps(path_points, profile_points, cap_start, cap_end) {\n const ptr0 = passArrayJsValueToWasm0(path_points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayJsValueToWasm0(profile_points, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogsweep_set_config_with_caps(this.__wbg_ptr, ptr0, len0, ptr1, len1, cap_start, cap_end);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {boolean} cap_start\n * @param {boolean} cap_end\n */\n set_caps(cap_start, cap_end) {\n const ret = wasm.ogsweep_set_caps(this.__wbg_ptr, cap_start, cap_end);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogsweep_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogsweep_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogsweep_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogsweep_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_brep() {\n const ret = wasm.ogsweep_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogsweep_clean_geometry(this.__wbg_ptr);\n }\n generate_geometry() {\n const ret = wasm.ogsweep_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogsweep_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogsweep_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogsweep_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogsweep_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogsweep_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogsweep_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogsweep_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\n\nconst OGWedgeFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogwedge_free(ptr >>> 0, 1));\n\nexport class OGWedge {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGWedgeFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogwedge_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogwedge_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogwedge_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGWedgeFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} width\n * @param {number} height\n * @param {number} depth\n */\n set_config(center, width, height, depth) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogwedge_set_config(this.__wbg_ptr, ptr0, width, height, depth);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogwedge_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogwedge_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogwedge_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogwedge_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogwedge_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_brep() {\n const ret = wasm.ogwedge_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogwedge_clean_geometry(this.__wbg_ptr);\n }\n generate_geometry() {\n const ret = wasm.ogwedge_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogwedge_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogwedge_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogwedge_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogwedge_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogwedge_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst Vector3Finalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_vector3_free(ptr >>> 0, 1));\n\nexport class Vector3 {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Vector3.prototype);\n obj.__wbg_ptr = ptr;\n Vector3Finalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n static __unwrap(jsValue) {\n if (!(jsValue instanceof Vector3)) {\n return 0;\n }\n return jsValue.__destroy_into_raw();\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n Vector3Finalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_vector3_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get x() {\n const ret = wasm.__wbg_get_vector3_x(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set x(arg0) {\n wasm.__wbg_set_vector3_x(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get y() {\n const ret = wasm.__wbg_get_vector3_y(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set y(arg0) {\n wasm.__wbg_set_vector3_y(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get z() {\n const ret = wasm.__wbg_get_vector3_z(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set z(arg0) {\n wasm.__wbg_set_vector3_z(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} x\n * @param {number} y\n * @param {number} z\n */\n constructor(x, y, z) {\n const ret = wasm.vector3_new(x, y, z);\n this.__wbg_ptr = ret >>> 0;\n Vector3Finalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n *\n * * Add the elements of another vector to this one.\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n add(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_add(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Add a scalar value to each element of the vector.\n *\n * @param {number} scalar\n * @returns {Vector3}\n */\n add_scalar(scalar) {\n const ret = wasm.vector3_add_scalar(this.__wbg_ptr, scalar);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Subtract the elements of another vector from this one.\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n subtract(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_subtract(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Subtract a scalar value from each element of the vector.\n *\n * @param {number} scalar\n * @returns {Vector3}\n */\n subtract_scalar(scalar) {\n const ret = wasm.vector3_subtract_scalar(this.__wbg_ptr, scalar);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Clone the Vector3 instance and return a new one.\n *\n * @returns {Vector3}\n */\n clone() {\n const ret = wasm.vector3_clone(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Set the current vector elements to zero.\n *\n */\n zero() {\n wasm.vector3_zero(this.__wbg_ptr);\n }\n /**\n *\n * * Copy the elements from another Vector3 instance.\n *\n * @param {Vector3} other\n */\n copy(other) {\n _assertClass(other, Vector3);\n wasm.vector3_copy(this.__wbg_ptr, other.__wbg_ptr);\n }\n /**\n *\n * * Multiply the vector by a scalar value.\n *\n * @param {number} scalar\n * @returns {Vector3}\n */\n multiply_scalar(scalar) {\n const ret = wasm.vector3_multiply_scalar(this.__wbg_ptr, scalar);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Multiply the vector by another Vector3 instance element-wise.\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n multiply(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_multiply(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Divide the vector by another Vector3 instance element-wise.\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n divide(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_divide(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Divide the vector by a scalar value.\n *\n * @param {number} scalar\n * @returns {Vector3}\n */\n divide_scalar(scalar) {\n const ret = wasm.vector3_divide_scalar(this.__wbg_ptr, scalar);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Invert the vector by negating the vector elements.\n *\n * @returns {Vector3}\n */\n negate() {\n const ret = wasm.vector3_negate(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Calculate the dot product of this vector with another Vector3 instance.\n *\n * @param {Vector3} other\n * @returns {number}\n */\n dot(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_dot(this.__wbg_ptr, other.__wbg_ptr);\n return ret;\n }\n /**\n *\n * * Calculate the magnitude (length) of the vector.\n *\n * @returns {number}\n */\n magnitude() {\n const ret = wasm.vector3_magnitude(this.__wbg_ptr);\n return ret;\n }\n /**\n *\n * * Calculate the length of the vector.\n * * Since length is equivalent to magnitude, this method is an alias.\n *\n * @returns {number}\n */\n length() {\n const ret = wasm.vector3_length(this.__wbg_ptr);\n return ret;\n }\n /**\n *\n * * Normalize the vector\n *\n * @returns {Vector3}\n */\n normalize() {\n const ret = wasm.vector3_normalize(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Calculate the cross product and return the result as a new Vector3\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n cross(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_cross(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Calculate the distance between this vector and another Vector3 instance.\n * * Return the distance as a f64 value in Euclidean space.\n *\n * @param {Vector3} other\n * @returns {number}\n */\n distance(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_distance(this.__wbg_ptr, other.__wbg_ptr);\n return ret;\n }\n /**\n *\n * * Apply a transformation matrix to the vector.\n * * This method assumes the transformation matrix is a 4x4 matrix.\n *\n * @param {Matrix4} matrix\n */\n apply_matrix4(matrix) {\n _assertClass(matrix, Matrix4);\n var ptr0 = matrix.__destroy_into_raw();\n wasm.vector3_apply_matrix4(this.__wbg_ptr, ptr0);\n }\n}\n\nconst WorkPlaneFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_workplane_free(ptr >>> 0, 1));\n\nexport class WorkPlane {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(WorkPlane.prototype);\n obj.__wbg_ptr = ptr;\n WorkPlaneFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WorkPlaneFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_workplane_free(ptr, 0);\n }\n /**\n * Builds a work plane from an origin and normal, choosing a stable in-plane\n * `u` axis automatically (`v = normal × u`).\n * @param {Vector3} origin\n * @param {Vector3} normal\n * @returns {WorkPlane}\n */\n static fromOriginNormal(origin, normal) {\n _assertClass(origin, Vector3);\n var ptr0 = origin.__destroy_into_raw();\n _assertClass(normal, Vector3);\n var ptr1 = normal.__destroy_into_raw();\n const ret = wasm.workplane_fromOriginNormal(ptr0, ptr1);\n return WorkPlane.__wrap(ret);\n }\n /**\n * Builds a work plane from an origin, normal, and a preferred `u` axis. The\n * `u` axis is projected onto the plane and orthonormalized; `v = normal × u`.\n * @param {Vector3} origin\n * @param {Vector3} normal\n * @param {Vector3} u_hint\n */\n constructor(origin, normal, u_hint) {\n _assertClass(origin, Vector3);\n var ptr0 = origin.__destroy_into_raw();\n _assertClass(normal, Vector3);\n var ptr1 = normal.__destroy_into_raw();\n _assertClass(u_hint, Vector3);\n var ptr2 = u_hint.__destroy_into_raw();\n const ret = wasm.workplane_new(ptr0, ptr1, ptr2);\n this.__wbg_ptr = ret >>> 0;\n WorkPlaneFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * Lifts a single 2D in-plane coordinate to 3D world space.\n * @param {number} u\n * @param {number} v\n * @returns {Vector3}\n */\n liftPoint(u, v) {\n const ret = wasm.workplane_liftPoint(this.__wbg_ptr, u, v);\n return Vector3.__wrap(ret);\n }\n /**\n * Lifts a flat `[u0,v0,u1,v1,…]` buffer to a flat `[x0,y0,z0,…]` world buffer.\n * @param {Float64Array} uv\n * @returns {Float64Array}\n */\n liftPoints(uv) {\n const ptr0 = passArrayF64ToWasm0(uv, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.workplane_liftPoints(this.__wbg_ptr, ptr0, len0);\n var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v2;\n }\n /**\n * @returns {Vector3}\n */\n get origin() {\n const ret = wasm.workplane_origin(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @returns {Vector3}\n */\n get normal() {\n const ret = wasm.workplane_normal(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_getRandomValues_38097e921c2494c3 = function() { return handleError(function (arg0, arg1) {\n globalThis.crypto.getRandomValues(getArrayU8FromWasm0(arg0, arg1));\n }, arguments) };\n imports.wbg.__wbg_vector3_new = function(arg0) {\n const ret = Vector3.__wrap(arg0);\n return ret;\n };\n imports.wbg.__wbg_vector3_unwrap = function(arg0) {\n const ret = Vector3.__unwrap(arg0);\n return ret;\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_2;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedFloat64ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('opengeometry_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","import { CSS2DObject } from \"three/examples/jsm/renderers/CSS2DRenderer.js\";\n\nfunction spotLabelElement() {\n const spotLabelElement = document.createElement(\"div\");\n spotLabelElement.style.position = \"absolute\";\n spotLabelElement.style.width = \"3px\";\n spotLabelElement.style.height = \"3px\";\n spotLabelElement.style.backgroundColor = \"blue\";\n spotLabelElement.style.pointerEvents = \"none\";\n // spotLabelElement.style.borderRadius = \"50%\";\n spotLabelElement.style.border = \"1px solid black\";\n return spotLabelElement;\n}\n\nexport class SpotLabel extends CSS2DObject {\n constructor() {\n const spotLabel = spotLabelElement();\n super(spotLabel);\n }\n}\n","/**\n * Version string exposed by the Three.js adapter at runtime.\n */\nexport const OPEN_GEOMETRY_THREE_VERSION = \"2.0.3\";\n\n/**\n * Options accepted when initializing the OpenGeometry runtime.\n * - `wasmURL`: Optional URL to the OpenGeometry wasm binary. If not provided, it defaults to a relative path.\n * - `debugMeshes`: Optional flag to enable debug meshes for visualizing geometry. Defaults to `false`.\n */\nexport interface OpenGeometryOptions {\n wasmURL?: string;\n debugMeshes?: boolean;\n}\n","import validate from './validate.js';\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n //\n // Note to future-self: No, you can't remove the `toLowerCase()` call.\n // REF: https://github.com/uuidjs/uuid/pull/677#issuecomment-1757351351\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n var uuid = unsafeStringify(arr, offset);\n // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n return getRandomValues(rnds8);\n}","var randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n offset = offset || 0;\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;","import { v4 as uuidv4 } from 'uuid';\n\nexport function getUUID() {\n const uuid = uuidv4();\n return uuid;\n}\n","export interface AnalyticTessellationData {\n positions: Float64Array;\n normals: Float32Array;\n indices: Uint32Array;\n triangleFaceIds: Uint32Array;\n outlinePositions: Float64Array;\n outlineEdgeIds: Uint32Array;\n revision: bigint;\n achievedDeflection: number;\n}\n\nexport const GEOMETRY_DEFLECTION_SHARE = 0.75;\n\nexport interface AnalyticWorkerOptions {\n workerURL: string | URL;\n kernelURL: string | URL;\n wasmURL: string | URL;\n}\n\ninterface Pending {\n resolve: (value: unknown) => void;\n reject: (reason: Error) => void;\n handle?: string;\n generation?: number;\n}\n\nexport class AnalyticTessellationWorker {\n private readonly worker: Worker;\n private readonly pending = new Map<number, Pending>();\n private readonly generations = new Map<string, number>();\n private readonly ready: Promise<unknown>;\n private serial = 0;\n private closed = false;\n\n constructor(options: AnalyticWorkerOptions) {\n const base = document.baseURI;\n this.worker = new Worker(new URL(options.workerURL, base), { type: \"module\" });\n this.worker.onmessage = (event: MessageEvent) => {\n const message = event.data;\n const pending = this.pending.get(message?.request);\n if (!pending) return;\n this.pending.delete(message.request);\n if (pending.handle && pending.generation !== this.generations.get(pending.handle)) {\n pending.reject(new DOMException(\"Superseded tessellation request\", \"AbortError\"));\n } else if (message.error) {\n pending.reject(new Error(typeof message.error === \"string\" ? message.error : JSON.stringify(message.error)));\n } else {\n pending.resolve(message.result);\n }\n };\n this.worker.onerror = (event) => this.fail(new Error(event.message || \"Analytic worker failed\"));\n this.worker.onmessageerror = () => this.fail(new Error(\"Analytic worker response could not be decoded\"));\n this.ready = this.send({\n kind: \"init\", kernelURL: new URL(options.kernelURL, base).href, wasmURL: new URL(options.wasmURL, base).href,\n });\n // Initialization errors remain observable through every public operation.\n void this.ready.catch(() => undefined);\n }\n\n async setModel(handle: string, serialized: string): Promise<void> {\n await this.ready;\n if (!handle || handle.length > 1024) throw new Error(\"Worker model handle must contain 1–1024 characters\");\n this.cancel(handle);\n await this.send({ kind: \"model\", handle, serialized });\n }\n\n async tessellate(handle: string, deflection: number): Promise<AnalyticTessellationData> {\n await this.ready;\n if (!Number.isFinite(deflection) || deflection <= 0) throw new Error(\"Deflection must be finite and positive\");\n const generation = this.cancel(handle);\n return await this.send({ kind: \"tessellate\", handle, generation, deflection }, handle, generation) as AnalyticTessellationData;\n }\n\n cancel(handle: string): number {\n const generation = (this.generations.get(handle) ?? 0) + 1;\n this.generations.set(handle, generation);\n return generation;\n }\n\n async removeModel(handle: string): Promise<void> {\n this.cancel(handle);\n await this.ready;\n await this.send({ kind: \"remove\", handle });\n this.generations.delete(handle);\n }\n\n dispose(): void {\n this.fail(new DOMException(\"Analytic worker disposed\", \"AbortError\"));\n }\n\n private send(message: Record<string, unknown>, handle?: string, generation?: number): Promise<unknown> {\n if (this.closed) return Promise.reject(new Error(\"Analytic worker is closed\"));\n if (this.pending.size >= 128) return Promise.reject(new Error(\"Analytic worker request limit exceeded; previous mesh retained\"));\n const request = ++this.serial;\n return new Promise((resolve, reject) => {\n this.pending.set(request, { resolve, reject, handle, generation });\n try { this.worker.postMessage({ ...message, request }); }\n catch (error) {\n this.pending.delete(request);\n reject(error instanceof Error ? error : new Error(String(error)));\n }\n });\n }\n\n private fail(error: Error): void {\n if (this.closed) return;\n this.closed = true;\n this.worker.terminate();\n for (const pending of this.pending.values()) pending.reject(error);\n this.pending.clear();\n this.generations.clear();\n }\n}\n","import * as THREE from \"three\";\nimport type { AnalyticSolid, AnalyticTessellationStats } from \"../shapes/analytic-solid\";\nimport { AnalyticTessellationWorker, GEOMETRY_DEFLECTION_SHARE } from \"./analytic-tessellation\";\nimport { getUUID } from \"../utils/randomizer\";\n\nexport function deflectionBucket(target: number, previous?: number): number {\n if (!Number.isFinite(target) || target <= 0) throw new Error(\"LOD target must be finite and positive\");\n if (previous && target >= previous * 0.75 && target <= previous * 2.5) return previous;\n const bucket = 2 ** Math.floor(Math.log2(target));\n if (!Number.isFinite(bucket) || bucket <= 0) throw new Error(\"LOD target is outside the representable range\");\n return bucket;\n}\n\nexport function worldUnitsPerPixel(camera: THREE.PerspectiveCamera | THREE.OrthographicCamera, depth: number, physicalHeight: number): number {\n if (!Number.isFinite(physicalHeight) || physicalHeight <= 0) throw new Error(\"Physical viewport height must be positive\");\n if (camera instanceof THREE.OrthographicCamera) return (camera.top - camera.bottom) / (camera.zoom * physicalHeight);\n if (!Number.isFinite(depth) || depth <= 0) throw new Error(\"Perspective depth must be positive\");\n return 2 * depth * Math.tan(THREE.MathUtils.degToRad(camera.getEffectiveFOV()) / 2) / physicalHeight;\n}\n\ninterface Entry {\n handle: string;\n solid: AnalyticSolid;\n bounds: THREE.Box3;\n ready: boolean;\n desired?: number;\n accepted?: number;\n generation: number;\n failed?: number;\n}\n\nexport interface AnalyticLodOptions {\n fixedDeflection?: number;\n onUpdate?: (solid: AnalyticSolid, statistics: AnalyticTessellationStats) => void;\n onError?: (solid: AnalyticSolid, error: Error) => void;\n}\n\n/** Register authored changes explicitly; camera meshes never refresh a scene's authored BRep snapshots. */\nexport class AnalyticLodController {\n private readonly entries = new Map<AnalyticSolid, Entry>();\n private readonly cameraState = new Float64Array(34);\n private lastMotion = -Infinity;\n private lastSchedule = -Infinity;\n private initialized = false;\n private closed = false;\n private refining = false;\n private fixedDeflection?: number;\n\n constructor(private readonly worker: AnalyticTessellationWorker, private readonly options: AnalyticLodOptions = {}) {\n this.setDeflection(options.fixedDeflection);\n }\n\n setDeflection(deflection?: number): void {\n if (deflection !== undefined && (!Number.isFinite(deflection) || deflection <= 0)) throw new Error(\"Deflection must be finite and positive\");\n this.fixedDeflection = deflection;\n for (const entry of this.entries.values()) {\n entry.generation++;\n entry.desired = entry.failed = undefined;\n this.worker.cancel(entry.handle);\n }\n }\n\n async register(solid: AnalyticSolid): Promise<void> {\n if (this.closed) throw new Error(\"LOD controller has been disposed\");\n await this.unregister(solid);\n if (this.entries.size >= 64) throw new Error(\"LOD body limit exceeded\");\n const entry: Entry = {\n handle: `lod-${getUUID()}`, solid, bounds: solid.getModelBounds(), ready: false, generation: 0,\n };\n this.entries.set(solid, entry);\n try {\n await this.worker.setModel(entry.handle, solid.getBrepSerialized());\n if (this.entries.get(solid) === entry) entry.ready = true;\n else await this.worker.removeModel(entry.handle);\n } catch (error) {\n if (this.entries.get(solid) === entry) this.entries.delete(solid);\n throw error;\n }\n }\n\n async unregister(solid: AnalyticSolid): Promise<void> {\n const entry = this.entries.get(solid);\n if (!entry) return;\n this.entries.delete(solid);\n entry.generation++;\n await this.worker.removeModel(entry.handle);\n }\n\n update(camera: THREE.PerspectiveCamera | THREE.OrthographicCamera, physicalHeight: number, now = performance.now(), motion = false): void {\n if (this.closed || this.refining) return;\n camera.updateMatrixWorld();\n let changed = !this.initialized || physicalHeight !== this.cameraState[32];\n for (let i = 0; i < 16; i++) {\n if (camera.matrixWorld.elements[i] !== this.cameraState[i] || camera.projectionMatrix.elements[i] !== this.cameraState[16 + i]) changed = true;\n this.cameraState[i] = camera.matrixWorld.elements[i];\n this.cameraState[16 + i] = camera.projectionMatrix.elements[i];\n }\n this.cameraState[32] = physicalHeight;\n if (this.initialized && (changed || motion)) this.lastMotion = now;\n this.initialized = true;\n const moving = now - this.lastMotion < 150;\n if (now - this.lastSchedule < 100) return;\n this.lastSchedule = now;\n const frustum = new THREE.Frustum().setFromProjectionMatrix(new THREE.Matrix4().multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse));\n const candidates: { entry: Entry; deflection: number; distance: number }[] = [];\n for (const entry of this.entries.values()) {\n if (!entry.ready || entry.solid.isDisposed || !visible(entry.solid.surface) || !entry.solid.surface.layers.test(camera.layers) || entry.bounds.isEmpty()) continue;\n entry.solid.updateWorldMatrix(true, false);\n const bounds = entry.bounds.clone().applyMatrix4(entry.solid.matrixWorld);\n if (!frustum.intersectsBox(bounds)) continue;\n try {\n const scale = uniformScale(entry.solid.matrixWorld);\n const cameraBounds = bounds.clone().applyMatrix4(camera.matrixWorldInverse);\n const depth = Math.max(camera.near, -cameraBounds.max.z);\n const target = (this.fixedDeflection ?? worldUnitsPerPixel(camera, depth, physicalHeight) * (moving ? 2 : 0.5)) / scale;\n const deflection = this.fixedDeflection === undefined ? deflectionBucket(target, entry.desired) : target;\n if (entry.desired === deflection || entry.failed === deflection) continue;\n candidates.push({ entry, deflection, distance: depth });\n } catch (error) { this.options.onError?.(entry.solid, asError(error)); }\n }\n candidates.sort((a, b) => a.distance - b.distance);\n for (const { entry, deflection } of candidates) {\n entry.desired = deflection;\n const generation = ++entry.generation;\n const revision = entry.solid.modelRevision;\n void this.worker.tessellate(entry.handle, deflection * GEOMETRY_DEFLECTION_SHARE).then((mesh) => {\n if (this.closed || this.entries.get(entry.solid) !== entry || generation !== entry.generation || entry.solid.modelRevision !== revision) return;\n const stats = entry.solid.applyTessellation(mesh, deflection);\n entry.accepted = deflection;\n entry.failed = undefined;\n this.options.onUpdate?.(entry.solid, stats);\n }).catch((error) => {\n if (this.closed || this.entries.get(entry.solid) !== entry || generation !== entry.generation || error?.name === \"AbortError\") return;\n entry.failed = deflection;\n entry.desired = entry.accepted;\n this.options.onError?.(entry.solid, asError(error));\n });\n }\n }\n\n /** Explicit export refinement; a resource or precision failure rejects and retains each body's prior mesh. */\n async refine(deflection: number): Promise<void> {\n if (!Number.isFinite(deflection) || deflection <= 0) throw new Error(\"Deflection must be finite and positive\");\n if (this.closed || this.refining) throw new Error(\"LOD controller is disposed or export refinement is already running\");\n this.refining = true;\n try {\n for (const entry of [...this.entries.values()]) {\n if (!visible(entry.solid.surface)) continue;\n if (!entry.ready) throw new Error(\"Await model registration before export refinement\");\n entry.solid.updateWorldMatrix(true, false);\n const local = deflection / uniformScale(entry.solid.matrixWorld);\n const generation = ++entry.generation;\n const mesh = await this.worker.tessellate(entry.handle, local * GEOMETRY_DEFLECTION_SHARE);\n if (this.closed || this.entries.get(entry.solid) !== entry || generation !== entry.generation) throw new DOMException(\"Export refinement superseded\", \"AbortError\");\n const stats = entry.solid.applyTessellation(mesh, local);\n entry.desired = entry.accepted = local;\n entry.failed = undefined;\n this.options.onUpdate?.(entry.solid, stats);\n }\n } finally { this.refining = false; }\n }\n\n dispose(): void {\n if (this.closed) return;\n this.closed = true;\n for (const entry of this.entries.values()) {\n entry.generation++;\n void this.worker.removeModel(entry.handle).catch((error) => {\n if (error?.name !== \"AbortError\") this.options.onError?.(entry.solid, asError(error));\n });\n }\n this.entries.clear();\n }\n}\n\nfunction visible(object: THREE.Object3D): boolean {\n for (let current: THREE.Object3D | null = object; current; current = current.parent) if (!current.visible) return false;\n return true;\n}\nfunction asError(error: unknown): Error { return error instanceof Error ? error : new Error(String(error)); }\nexport function uniformScale(matrix: THREE.Matrix4): number {\n const x = new THREE.Vector3().setFromMatrixColumn(matrix, 0);\n const y = new THREE.Vector3().setFromMatrixColumn(matrix, 1);\n const z = new THREE.Vector3().setFromMatrixColumn(matrix, 2);\n const scale = x.length();\n if (!Number.isFinite(scale) || scale <= 0 || Math.abs(y.length() / scale - 1) > 1e-9 || Math.abs(z.length() / scale - 1) > 1e-9\n || Math.abs(x.dot(y) / scale ** 2) > 1e-9 || Math.abs(x.dot(z) / scale ** 2) > 1e-9 || Math.abs(y.dot(z) / scale ** 2) > 1e-9\n || matrix.determinant() <= 0) throw new Error(\"Analytic placement requires positive uniform scale and a rigid frame\");\n return scale;\n}\n","import { getUUID } from \"../utils/randomizer\";\n\nexport type IfcPreparedValue =\n | { kind: \"Ref\"; id: number }\n | { kind: \"List\"; values: IfcPreparedValue[] }\n | { kind: \"Real\"; value: number }\n | { kind: \"Integer\"; value: number }\n | { kind: \"Text\" | \"Enum\"; value: string }\n | { kind: \"Bool\"; value: boolean }\n | { kind: \"Null\" | \"Derived\" };\n\nexport interface AnalyticExchangeBodyV2 {\n schema_version: 2;\n revision: string;\n length_unit: \"metre\";\n up_axis: \"Z\";\n coordinate_space: \"world\";\n representation_type: \"AdvancedBrep\" | \"CSG\";\n quality: { kind: \"Analytic\" } | { kind: \"Approximate\"; max_error: number };\n geometric_tolerance: number;\n exchange_error_bound: number;\n validation_level: string;\n entities: { id: number; entity_type: string; attributes: IfcPreparedValue[] }[];\n solids: number[];\n faces: {\n face: number; key: string; entity: number;\n provenance: {\n sources: { entity: string; body: string; key: string; face: number }[];\n role: \"Authored\" | \"Preserved\" | \"Split\" | \"Cut\" | \"Coincident\"; reversed: boolean;\n };\n }[];\n}\n\nfunction quoted(text: string): string {\n let escaped = \"\";\n for (const character of text) {\n const code = character.charCodeAt(0);\n if (character === \"'\") escaped += \"''\";\n else if (code === 92) escaped += \"\\\\\\\\\";\n else if (code >= 32 && code <= 126) escaped += character;\n else {\n const utf16 = Array.from({ length: character.length }, (_, i) => (\"0000\" + character.charCodeAt(i).toString(16).toUpperCase()).slice(-4)).join(\"\");\n escaped += \"\\\\X2\\\\\" + utf16 + \"\\\\X0\\\\\";\n }\n }\n return \"'\" + escaped + \"'\";\n}\nfunction guid(): string {\n const alphabet = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_$\";\n const uuid = getUUID().replace(/-/g, \"\");\n const first = parseInt(uuid.slice(0, 2), 16);\n let value = alphabet[Math.floor(first / 64)] + alphabet[first % 64];\n for (let i = 2; i < 32; i += 6) {\n let block = parseInt(uuid.slice(i, i + 6), 16);\n let digits = \"\";\n for (let j = 0; j < 4; j++) { digits = alphabet[block % 64] + digits; block = Math.floor(block / 64); }\n value += digits;\n }\n return value;\n}\n\n/** Serializes Rust-prepared geometry; this function does not fit curves or tessellate surfaces. */\nexport function analyticIfcText(body: AnalyticExchangeBodyV2, name = \"Analytic body\"): string {\n if (body.schema_version !== 2 || body.length_unit !== \"metre\" || body.up_axis !== \"Z\" || body.coordinate_space !== \"world\"\n || !Array.isArray(body.entities) || !body.entities.length || body.entities.length > 100_000\n || !Array.isArray(body.solids) || !body.solids.length || !Array.isArray(body.faces)\n || !/^(0|[1-9][0-9]{0,19})$/.test(body.revision) || (body.revision.length === 20 && body.revision > \"18446744073709551615\")\n || !Number.isFinite(body.geometric_tolerance) || body.geometric_tolerance <= 0\n || !Number.isFinite(body.exchange_error_bound) || body.exchange_error_bound < body.geometric_tolerance\n || typeof name !== \"string\" || name.length > 4096) throw new Error(\"Invalid analytic IFC exchange contract\");\n const entities: string[] = [];\n let budget = 500_000;\n function encode(value: IfcPreparedValue, before: number, depth = 0): string {\n if (--budget < 0 || depth > 16 || !value || typeof value !== \"object\") throw new Error(\"IFC aggregate resource limit exceeded\");\n switch (value.kind) {\n case \"Ref\":\n if (!Number.isInteger(value.id) || value.id <= 0 || value.id >= before) throw new Error(\"Invalid IFC entity reference\");\n return \"#\" + value.id;\n case \"List\":\n if (!Array.isArray(value.values)) throw new Error(\"IFC aggregate must be an array\");\n return \"(\" + value.values.map(v => encode(v, before, depth + 1)).join(\",\") + \")\";\n case \"Real\":\n if (!Number.isFinite(value.value)) throw new Error(\"Non-finite IFC real value\");\n return value.value.toExponential(17);\n case \"Integer\":\n if (!Number.isSafeInteger(value.value)) throw new Error(\"Invalid IFC integer value\");\n return String(value.value);\n case \"Text\":\n if (typeof value.value !== \"string\" || value.value.length > 4096) throw new Error(\"Invalid IFC string\");\n return quoted(value.value);\n case \"Enum\":\n if (!/^[A-Z][A-Z0-9_]*$/.test(value.value)) throw new Error(\"Invalid IFC enumeration\");\n return \".\" + value.value + \".\";\n case \"Bool\":\n if (typeof value.value !== \"boolean\") throw new Error(\"IFC logical value must be boolean\");\n return value.value ? \".T.\" : \".F.\";\n case \"Null\": return \"$\";\n case \"Derived\": return \"*\";\n default: throw new Error(\"Unsupported IFC prepared value\");\n }\n }\n for (const entity of body.entities) {\n if (entity.id !== entities.length + 1 || !/^Ifc[A-Za-z0-9]+$/.test(entity.entity_type)\n || !Array.isArray(entity.attributes) || entity.attributes.length > 16) throw new Error(\"Invalid IFC prepared entity\");\n entities.push(\"#\" + entity.id + \"=\" + entity.entity_type.toUpperCase() + \"(\" + entity.attributes.map(value => encode(value, entity.id)).join(\",\") + \");\");\n }\n const add = (expression: string) => { const id = entities.length + 1; entities.push(\"#\" + id + \"=\" + expression + \";\"); return id; };\n const origin = add(\"IFCCARTESIANPOINT((0.,0.,0.))\");\n const z = add(\"IFCDIRECTION((0.,0.,1.))\");\n const x = add(\"IFCDIRECTION((1.,0.,0.))\");\n const placement = add(\"IFCAXIS2PLACEMENT3D(#\" + origin + \",#\" + z + \",#\" + x + \")\");\n const context = add(\"IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,\" + body.exchange_error_bound.toExponential(17) + \",#\" + placement + \",$)\");\n const length = add(\"IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.)\");\n const units = add(\"IFCUNITASSIGNMENT((#\" + length + \"))\");\n add(\"IFCPROJECT(\" + quoted(guid()) + \",$,\" + quoted(name) + \",$,$,$,$,(#\" + context + \"),#\" + units + \")\");\n const solidRefs = body.solids.map(id => {\n const expected = body.representation_type === \"AdvancedBrep\" ? \"IfcAdvancedBrep\" : \"IfcBooleanResult\";\n if (!Number.isInteger(id) || body.entities[id - 1]?.entity_type !== expected) throw new Error(\"Invalid IFC solid reference\");\n return \"#\" + id;\n }).join(\",\");\n if ([\"AdvancedBrep\", \"CSG\"].indexOf(body.representation_type) < 0) throw new Error(\"Invalid IFC representation type\");\n const representation = add(\"IFCSHAPEREPRESENTATION(#\" + context + \",'Body',\" + quoted(body.representation_type) + \",(\" + solidRefs + \"))\");\n const productShape = add(\"IFCPRODUCTDEFINITIONSHAPE($,$,(#\" + representation + \"))\");\n const objectPlacement = add(\"IFCLOCALPLACEMENT($,#\" + placement + \")\");\n add(\"IFCBUILDINGELEMENTPROXY(\" + quoted(guid()) + \",$,\" + quoted(name) + \",$,$,#\" + objectPlacement + \",#\" + productShape + \",$,.NOTDEFINED.)\");\n return [\n \"ISO-10303-21;\", \"HEADER;\", \"FILE_DESCRIPTION(('OpenGeometry analytic BRep v2'),'2;1');\",\n \"FILE_NAME(\" + quoted(name + \".ifc\") + \",'1970-01-01T00:00:00',(''),(''),'OpenGeometry','OpenGeometry','');\",\n \"FILE_SCHEMA(('IFC4'));\", \"ENDSEC;\", \"DATA;\", ...entities, \"ENDSEC;\", \"END-ISO-10303-21;\", \"\",\n ].join(\"\\n\");\n}\n","export type AnalyticGeometryErrorCode =\n | \"math\"\n | \"invalid_geometry\"\n | \"invalid_topology\"\n | \"unsupported_geometry\"\n | \"ambiguous_profile_alignment\"\n | \"coverage_gap\"\n | \"singular_parameterization\"\n | \"missing_reference\"\n | \"unsupported_schema\"\n | \"unresolved_intersection\"\n | \"unresolved_tessellation\"\n | \"limit_exceeded\"\n | \"unknown\";\n\nexport class AnalyticGeometryError extends Error {\n readonly code: AnalyticGeometryErrorCode;\n readonly detail: unknown;\n readonly families?: readonly [string, string];\n\n constructor(code: AnalyticGeometryErrorCode, message: string, detail?: unknown) {\n super(message);\n this.name = \"AnalyticGeometryError\";\n this.code = code;\n this.detail = detail;\n if (code === \"coverage_gap\" && isRecord(detail) && isStringPair(detail.families)) {\n this.families = detail.families;\n }\n }\n}\n\nexport function parseAnalyticGeometryError(raw: unknown): AnalyticGeometryError {\n const serialized = extractMessage(raw);\n try {\n const payload = JSON.parse(serialized) as unknown;\n if (typeof payload === \"string\") {\n const code = errorCode(payload);\n return new AnalyticGeometryError(code, messageFor(code));\n }\n if (isRecord(payload)) {\n const variant = Object.keys(payload)[0];\n if (variant) {\n const detail = payload[variant];\n const code = errorCode(variant);\n return new AnalyticGeometryError(code, messageFor(code, detail), detail);\n }\n }\n } catch {\n // The fallback below preserves non-kernel JavaScript failures.\n }\n return new AnalyticGeometryError(\"unknown\", serialized || \"Unknown analytic geometry error\", raw);\n}\n\nfunction messageFor(code: AnalyticGeometryErrorCode, detail?: unknown): string {\n if (code === \"coverage_gap\" && isRecord(detail) && isStringPair(detail.families)) {\n return `Analytic boolean coverage is unavailable for ${detail.families[0]} and ${detail.families[1]}.`;\n }\n if (code === \"missing_reference\" && isRecord(detail)) {\n return `Missing ${String(detail.kind ?? \"geometry\")} reference ${String(detail.index ?? \"\")}.`.trim();\n }\n if (code === \"unsupported_schema\" && isRecord(detail)) {\n return `Unsupported BRep schema version ${String(detail.found ?? \"unknown\")}; schema version 2 is required.`;\n }\n if (typeof detail === \"string\" && detail.length > 0) return detail;\n return code.replace(/_/g, \" \");\n}\n\nfunction errorCode(variant: string): AnalyticGeometryErrorCode {\n const code = variant.replace(/([a-z0-9])([A-Z])/g, \"$1_$2\").toLowerCase();\n switch (code) {\n case \"math\":\n case \"invalid_geometry\":\n case \"invalid_topology\":\n case \"unsupported_geometry\":\n case \"ambiguous_profile_alignment\":\n case \"coverage_gap\":\n case \"singular_parameterization\":\n case \"missing_reference\":\n case \"unsupported_schema\":\n case \"unresolved_intersection\":\n case \"unresolved_tessellation\":\n case \"limit_exceeded\":\n return code;\n default:\n return \"unknown\";\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isStringPair(value: unknown): value is [string, string] {\n return Array.isArray(value) && value.length === 2 && value.every((item) => typeof item === \"string\");\n}\n\nfunction extractMessage(raw: unknown): string {\n if (typeof raw === \"string\") return raw;\n if (raw instanceof Error) return raw.message;\n if (isRecord(raw) && typeof raw.message === \"string\") return raw.message;\n try {\n return String(raw ?? \"\");\n } catch {\n return \"Unknown analytic geometry error\";\n }\n}\n","import * as THREE from \"three\";\nimport { OGAnalyticBrep, tessellate_brep } from \"../../../opengeometry/pkg/opengeometry\";\nimport { getUUID } from \"../utils/randomizer\";\nimport { GEOMETRY_DEFLECTION_SHARE, type AnalyticTessellationData } from \"../rendering/analytic-tessellation\";\nimport { uniformScale } from \"../rendering/analytic-lod\";\nimport { analyticIfcText, AnalyticExchangeBodyV2 } from \"../export/analytic-ifc\";\nimport { parseAnalyticGeometryError } from \"../operations/analytic-errors\";\n\nexport interface AnalyticFrame {\n origin: [number, number, number];\n x: [number, number, number];\n y: [number, number, number];\n z: [number, number, number];\n}\n\nexport interface AnalyticAccuracy {\n geometric: number;\n intersection: number;\n tessellation: number;\n exchange: number;\n}\n\nexport interface AnalyticAnnularSectorOpening {\n id: string;\n angle: number;\n width: number;\n bottom: number;\n height: number;\n}\n\nexport type AnalyticProfileEdge =\n | { kind: \"line\"; from: [number, number]; to: [number, number] }\n | { kind: \"arc\"; center: [number, number]; radius: number; startAngle: number; sweepAngle: number };\n\nexport type AnalyticPolygonLoftAlignment = \"auto\" | {\n upperStartIndex: number;\n reverseUpper?: boolean;\n};\n\nexport interface AnalyticProjectionCamera {\n position: { x: number; y: number; z: number };\n target: { x: number; y: number; z: number };\n up: { x: number; y: number; z: number };\n near: number;\n projection_mode: \"Orthographic\" | \"Perspective\";\n}\n\nexport interface AnalyticProjectionHlr {\n hide_hidden_edges: boolean;\n}\n\ninterface AnalyticOptions {\n ogid?: string;\n frame?: AnalyticFrame;\n accuracy?: AnalyticAccuracy;\n deflection?: number;\n color?: THREE.ColorRepresentation;\n}\n\nexport type AnalyticPrimitiveOptions = AnalyticOptions & (\n | { kind: \"cuboid\"; width: number; depth: number; height: number }\n | { kind: \"linearExtrusion\"; outer: [number, number][]; holes: [number, number][][]; height: number }\n | { kind: \"arcEdgedExtrusion\"; outer: AnalyticProfileEdge[]; holes?: AnalyticProfileEdge[][]; height: number }\n | { kind: \"polygonLoft\"; lower: [number, number, number][]; upper: [number, number, number][]; alignment?: AnalyticPolygonLoftAlignment }\n | { kind: \"boxWithArchedOpening\"; width: number; depth: number; height: number; opening: { id: string; station: number; width: number; bottom: number; height: number } }\n | { kind: \"planarPolyhedron\"; vertices: [number, number, number][]; faces: number[][] }\n | { kind: \"cylinder\" | \"cone\"; radius: number; height: number }\n | { kind: \"cylinderSector\"; radius: number; height: number; startAngle: number; sweepAngle: number }\n | { kind: \"sphere\"; radius: number }\n | { kind: \"frustum\"; lowerRadius: number; upperRadius: number; height: number }\n | { kind: \"torus\"; majorRadius: number; minorRadius: number }\n | { kind: \"annularSectorExtrusion\"; radius: number; thickness: number; height: number; startAngle: number; sweepAngle: number }\n | { kind: \"annularSectorExtrusionWithOpenings\"; radius: number; thickness: number; height: number; startAngle: number; sweepAngle: number; openings: AnalyticAnnularSectorOpening[] }\n | { kind: \"annularSectorExtrusionWithArchedOpening\"; radius: number; thickness: number; height: number; startAngle: number; sweepAngle: number; opening: AnalyticAnnularSectorOpening }\n | { kind: \"coaxialCircleLoft\"; lowerRadius: number; upperRadius: number; height: number }\n | { kind: \"revolvedRectangle\"; innerRadius: number; outerRadius: number; height: number }\n | { kind: \"chamferedCuboid\"; width: number; depth: number; height: number; chamfer: number }\n | { kind: \"filletedCylinder\"; radius: number; height: number; filletRadius: number }\n);\n\nexport type AnalyticBooleanOp = \"union\" | \"intersection\" | \"subtraction\";\nexport type AnalyticPointClassification = \"inside\" | \"outside\" | \"boundary\" | \"unknown\";\n\nexport interface AnalyticBooleanReport {\n operation: AnalyticBooleanOp;\n quality: { kind: \"Analytic\" };\n contacts: [number, number, number][];\n coincident: boolean;\n face_mappings: {\n source: { entity: string; body: string; key: string; face: number };\n result_faces: number[];\n }[];\n}\n\nexport interface AnalyticBrepOptions extends Omit<AnalyticOptions, \"ogid\" | \"frame\" | \"accuracy\"> {\n kind: \"brep\";\n serialized: string;\n}\n\nexport interface AnalyticTessellationStats {\n requestedDeflection: number;\n achievedDeflection: number;\n triangleCount: number;\n faceCount: number;\n revision: bigint;\n}\n\nexport interface AnalyticTessellationOptions {\n maxTriangles?: number;\n}\n\nexport interface AnalyticStepExport {\n text: string;\n report: {\n schema_version: 2;\n revision: string;\n length_unit: \"metre\" | \"millimetre\";\n quality: { kind: string };\n faces: number;\n edges: number;\n solids: number;\n cavity_shells: number;\n collapsed_chart_uses: number;\n geometric_tolerance: number;\n exchange_error_bound: number;\n validation_level: string;\n };\n}\n\nexport interface AnalyticStlExport {\n bytes: Uint8Array;\n report: {\n schema_version: 2;\n revision: string;\n triangle_count: number;\n requested_deflection: number;\n achieved_deflection: number;\n float32_encoding_error: number;\n quality: \"tessellated_from_analytic_brep\";\n };\n}\n\nexport class AnalyticSolid extends THREE.Group {\n readonly ogid: string;\n readonly surface: THREE.Mesh<THREE.BufferGeometry, THREE.MeshStandardMaterial>;\n readonly featureOutline: THREE.LineSegments<THREE.BufferGeometry, THREE.LineBasicMaterial>;\n private kernel: OGAnalyticBrep;\n private triangleFaces = new Uint32Array(0);\n private outlineEdges = new Uint32Array(0);\n private disposed = false;\n private lastDeflection = 0.001;\n private booleanReport?: AnalyticBooleanReport;\n\n get report(): AnalyticBooleanReport | undefined { return this.booleanReport; }\n get isDisposed(): boolean { return this.disposed; }\n get modelRevision(): bigint { this.checkActive(); return this.kernel.get_revision(); }\n get deflection(): number { return this.lastDeflection; }\n get color(): THREE.Color { return this.surface.material.color; }\n set color(value: THREE.ColorRepresentation) {\n this.checkActive();\n this.surface.material.color.set(value);\n this.surface.material.needsUpdate = true;\n }\n get outline(): boolean { return this.featureOutline.visible; }\n set outline(value: boolean) {\n this.checkActive();\n this.featureOutline.visible = value;\n this.surface.material.polygonOffset = value;\n this.surface.material.polygonOffsetFactor = 1;\n this.surface.material.polygonOffsetUnits = 1;\n }\n\n constructor(options: AnalyticPrimitiveOptions | AnalyticBrepOptions) {\n super();\n const id = options.kind === \"brep\" ? \"\" : options.ogid ?? getUUID();\n this.kernel = options.kind === \"brep\"\n ? new OGAnalyticBrep(options.serialized)\n : createPrimitiveKernel(options, id);\n this.ogid = this.kernel.get_id();\n this.surface = new THREE.Mesh(\n new THREE.BufferGeometry(),\n new THREE.MeshStandardMaterial({ color: options.color ?? 0x6699dd }),\n );\n this.surface.userData.ogid = this.ogid;\n this.featureOutline = new THREE.LineSegments(new THREE.BufferGeometry(), new THREE.LineBasicMaterial({ color: 0x243040 }));\n this.featureOutline.visible = false;\n this.featureOutline.userData.ogid = this.ogid;\n this.add(this.surface, this.featureOutline);\n try {\n this.retessellate(options.deflection ?? (options.kind === \"brep\" ? 0.001 : options.accuracy?.tessellation ?? 0.001));\n } catch (error) {\n this.dispose();\n throw error;\n }\n }\n\n static fromBrep(serialized: string, options: Omit<AnalyticBrepOptions, \"kind\" | \"serialized\"> = {}): AnalyticSolid {\n return new AnalyticSolid({ ...options, kind: \"brep\", serialized });\n }\n\n boolean(other: AnalyticSolid, operation: AnalyticBooleanOp, options: { deflection?: number; color?: THREE.ColorRepresentation } = {}): AnalyticSolid {\n this.checkActive();\n other.checkActive();\n const host = this.worldKernel();\n let cutter: OGAnalyticBrep | undefined;\n let result: OGAnalyticBrep | undefined;\n try {\n cutter = other.worldKernel();\n result = host.boolean_brep(cutter, operation, getUUID());\n const report = result.get_boolean_report_serialized();\n const solid = AnalyticSolid.fromBrep(result.get_brep_serialized(), {\n deflection: options.deflection ?? this.lastDeflection,\n color: options.color ?? this.surface.material.color,\n });\n solid.booleanReport = report ? JSON.parse(report) as AnalyticBooleanReport : undefined;\n solid.name = this.name;\n solid.userData = { ...this.userData };\n solid.outline = this.outline;\n return solid;\n } catch (error) {\n throw parseAnalyticGeometryError(error);\n } finally {\n result?.free();\n cutter?.free();\n host.free();\n }\n }\n\n union(other: AnalyticSolid, options: { deflection?: number; color?: THREE.ColorRepresentation } = {}): AnalyticSolid {\n return this.boolean(other, \"union\", options);\n }\n\n intersection(other: AnalyticSolid, options: { deflection?: number; color?: THREE.ColorRepresentation } = {}): AnalyticSolid {\n return this.boolean(other, \"intersection\", options);\n }\n\n subtract(cutters: AnalyticSolid[], options: { deflection?: number; color?: THREE.ColorRepresentation } = {}): AnalyticSolid {\n if (!Array.isArray(cutters) || cutters.length === 0 || cutters.some((cutter) => !(cutter instanceof AnalyticSolid))) {\n throw new Error(\"Analytic subtraction requires a nonempty AnalyticSolid array\");\n }\n if (cutters.length > 1) {\n const host = this.worldKernel();\n const cutterKernels: OGAnalyticBrep[] = [];\n let result: OGAnalyticBrep | undefined;\n try {\n for (const cutter of cutters) cutterKernels.push(cutter.worldKernel());\n const payload = `[${cutterKernels.map((cutter) => cutter.get_brep_serialized()).join(\",\")}]`;\n result = host.subtract_planar_cutters(payload, getUUID());\n const report = result.get_boolean_report_serialized();\n const solid = AnalyticSolid.fromBrep(result.get_brep_serialized(), {\n deflection: options.deflection ?? this.lastDeflection,\n color: options.color ?? this.surface.material.color,\n });\n solid.booleanReport = report ? JSON.parse(report) as AnalyticBooleanReport : undefined;\n solid.name = this.name;\n solid.userData = { ...this.userData };\n solid.outline = this.outline;\n return solid;\n } catch (error) {\n const parsed = parseAnalyticGeometryError(error);\n // The native mixed-cutter path already chose a safe cutter order and\n // checked spatial overlap. A serial fallback may drop an earlier\n // cylindrical void or accept an invalid arched profile.\n if (parsed.code !== \"coverage_gap\"\n || parsed.families?.[0]?.includes(\"mixed cutter batch\")) throw parsed;\n } finally {\n result?.free();\n cutterKernels.forEach((cutter) => cutter.free());\n host.free();\n }\n }\n let result: AnalyticSolid | undefined;\n try {\n for (const cutter of cutters) {\n const next = (result ?? this).boolean(cutter, \"subtraction\", options);\n result?.dispose();\n result = next;\n }\n return result!;\n } catch (error) {\n result?.dispose();\n throw error;\n }\n }\n\n shell(thickness: number, options: { deflection?: number; color?: THREE.ColorRepresentation } = {}): AnalyticSolid {\n this.checkActive();\n if (!Number.isFinite(thickness) || thickness <= 0) throw new Error(\"Shell thickness must be finite and positive\");\n const host = this.worldKernel();\n let result: OGAnalyticBrep | undefined;\n try {\n result = host.shell(thickness, getUUID());\n const report = result.get_boolean_report_serialized();\n const solid = AnalyticSolid.fromBrep(result.get_brep_serialized(), {\n deflection: options.deflection ?? this.lastDeflection,\n color: options.color ?? this.surface.material.color,\n });\n solid.booleanReport = report ? JSON.parse(report) as AnalyticBooleanReport : undefined;\n solid.name = this.name;\n solid.userData = { ...this.userData };\n solid.outline = this.outline;\n return solid;\n } catch (error) {\n throw parseAnalyticGeometryError(error);\n } finally {\n result?.free();\n host.free();\n }\n }\n\n getBrepSerialized(): string {\n this.checkActive();\n return this.kernel.get_brep_serialized();\n }\n\n getBrepData(): Record<string, unknown> {\n return JSON.parse(this.getBrepSerialized()) as Record<string, unknown>;\n }\n\n /** Rebuilds authored analytic geometry while preserving the wrapper and placement. */\n protected replaceDefinition(options: AnalyticPrimitiveOptions): AnalyticTessellationStats {\n this.checkActive();\n const next = createPrimitiveKernel(options, this.ogid);\n const previous = this.kernel;\n this.kernel = next;\n try {\n const stats = this.retessellate(options.deflection ?? this.lastDeflection);\n previous.free();\n this.booleanReport = undefined;\n return stats;\n } catch (error) {\n this.kernel = previous;\n next.free();\n throw error;\n }\n }\n\n getWorldBrepSerialized(): string {\n const placed = this.worldKernel();\n try { return placed.get_brep_serialized(); }\n finally { placed.free(); }\n }\n\n prepareIfcExchange(): AnalyticExchangeBodyV2 {\n const placed = this.worldKernel();\n try { return JSON.parse(placed.prepare_ifc_exchange()) as AnalyticExchangeBodyV2; }\n finally { placed.free(); }\n }\n\n exportIfc(): { text: string; report: AnalyticExchangeBodyV2 } {\n const report = this.prepareIfcExchange();\n return { text: analyticIfcText(report, this.ogid), report };\n }\n\n /** Exports world placement and authored metre geometry, converted once to the selected STEP unit. */\n exportStep(lengthUnit: \"metre\" | \"millimetre\" = \"metre\"): AnalyticStepExport {\n const placed = this.worldKernel();\n try { return JSON.parse(placed.export_step(lengthUnit)) as AnalyticStepExport; }\n finally { placed.free(); }\n }\n\n /** Exports a binary STL tessellated from the placed analytic BRep at an explicit error budget. */\n exportStl(deflection = this.lastDeflection): AnalyticStlExport {\n if (!Number.isFinite(deflection) || deflection <= 0) {\n throw new Error(\"STL deflection must be finite and positive\");\n }\n const placed = this.worldKernel();\n const result = tessellate_brep(\n placed.get_brep_serialized(),\n deflection * GEOMETRY_DEFLECTION_SHARE,\n );\n try {\n const positions = result.positions();\n const indices = result.indices();\n const triangleCount = indices.length / 3;\n if (!Number.isSafeInteger(triangleCount) || triangleCount > 0xffffffff) {\n throw new Error(\"STL triangle count exceeds the binary format limit\");\n }\n const bytes = new Uint8Array(84 + triangleCount * 50);\n const header = \"OpenGeometry BRep v2 analytic tessellation\";\n for (let index = 0; index < Math.min(header.length, 80); index += 1) {\n bytes[index] = header.charCodeAt(index);\n }\n const view = new DataView(bytes.buffer);\n view.setUint32(80, triangleCount, true);\n let encodingError = 0;\n const writeFloat = (offset: number, value: number): void => {\n view.setFloat32(offset, value, true);\n encodingError = Math.max(encodingError, Math.abs(value - view.getFloat32(offset, true)));\n };\n for (let triangle = 0; triangle < triangleCount; triangle += 1) {\n const ids = [indices[triangle * 3], indices[triangle * 3 + 1], indices[triangle * 3 + 2]];\n const points = ids.map((id) => [\n positions[id * 3], positions[id * 3 + 1], positions[id * 3 + 2],\n ] as [number, number, number]);\n const ab = points[1].map((value, axis) => value - points[0][axis]);\n const ac = points[2].map((value, axis) => value - points[0][axis]);\n const cross = [\n ab[1] * ac[2] - ab[2] * ac[1],\n ab[2] * ac[0] - ab[0] * ac[2],\n ab[0] * ac[1] - ab[1] * ac[0],\n ];\n const length = Math.hypot(...cross);\n if (!Number.isFinite(length) || length === 0) {\n throw new Error(\"Analytic tessellation produced a degenerate STL triangle\");\n }\n const offset = 84 + triangle * 50;\n cross.forEach((value, axis) => writeFloat(offset + axis * 4, value / length));\n points.forEach((point, vertex) => point.forEach((value, axis) => {\n writeFloat(offset + 12 + (vertex * 3 + axis) * 4, value);\n }));\n view.setUint16(offset + 48, 0, true);\n }\n const achievedDeflection = result.achieved_deflection() + encodingError;\n if (achievedDeflection > deflection) {\n throw new Error(\"Binary STL precision cannot represent the requested deflection\");\n }\n return {\n bytes,\n report: {\n schema_version: 2,\n revision: result.revision().toString(),\n triangle_count: triangleCount,\n requested_deflection: deflection,\n achieved_deflection: achievedDeflection,\n float32_encoding_error: encodingError,\n quality: \"tessellated_from_analytic_brep\",\n },\n };\n } finally {\n result.free();\n placed.free();\n }\n }\n\n faceIdForTriangle(triangle: number): number | undefined {\n if (!Number.isInteger(triangle) || triangle < 0) return undefined;\n return this.triangleFaces[triangle];\n }\n\n edgeIdForOutlineSegment(segment: number): number | undefined {\n if (!Number.isInteger(segment) || segment < 0) return undefined;\n return this.outlineEdges[segment];\n }\n\n /** Evaluates the oriented support normal at a projected model-space point; this does not classify trim membership. */\n normalAtFace(faceId: number, modelPoint: THREE.Vector3): THREE.Vector3 {\n this.checkActive();\n if (!Number.isInteger(faceId) || faceId < 0 || faceId > 0xffffffff) throw new Error(\"Face ID must be an unsigned integer\");\n const normal = this.kernel.face_normal_at(faceId, new Float64Array(modelPoint.toArray()));\n return new THREE.Vector3(normal[0], normal[1], normal[2]);\n }\n\n /** Classifies a world-space point against the regularized material represented by this solid. */\n classifyPoint(worldPoint: THREE.Vector3): AnalyticPointClassification {\n if (![worldPoint.x, worldPoint.y, worldPoint.z].every(Number.isFinite)) {\n throw new Error(\"Point coordinates must be finite\");\n }\n const placed = this.worldKernel();\n try {\n return placed.classify_point(new Float64Array(worldPoint.toArray())) as AnalyticPointClassification;\n } finally {\n placed.free();\n }\n }\n\n projectTo2DLines(\n camera: AnalyticProjectionCamera,\n hlr: AnalyticProjectionHlr,\n deflection = this.lastDeflection,\n ): string {\n if (!Number.isFinite(deflection) || deflection <= 0) {\n throw new Error(\"Projection deflection must be finite and positive\");\n }\n const placed = this.worldKernel();\n try {\n return placed.project_to_2d_lines(JSON.stringify(camera), JSON.stringify(hlr), deflection);\n } finally {\n placed.free();\n }\n }\n\n getModelBounds(): THREE.Box3 {\n this.checkActive();\n const bounds = this.kernel.get_bounds();\n if (bounds.length === 0) return new THREE.Box3();\n return new THREE.Box3(\n new THREE.Vector3(bounds[0], bounds[1], bounds[2]),\n new THREE.Vector3(bounds[3], bounds[4], bounds[5]),\n );\n }\n\n retessellate(deflection: number): AnalyticTessellationStats {\n this.checkActive();\n return this.applyTessellation(this.tessellate(deflection * GEOMETRY_DEFLECTION_SHARE), deflection);\n }\n\n tessellate(deflection: number, options: AnalyticTessellationOptions = {}): AnalyticTessellationData {\n this.checkActive();\n if (!Number.isFinite(deflection) || deflection <= 0) throw new Error(\"Deflection must be finite and positive\");\n if (options.maxTriangles !== undefined\n && (!Number.isSafeInteger(options.maxTriangles) || options.maxTriangles <= 0 || options.maxTriangles > 2_000_000)) {\n throw new Error(\"maxTriangles must be an integer between 1 and 2000000\");\n }\n const result = tessellate_brep(\n this.kernel.get_brep_serialized(),\n deflection,\n options.maxTriangles === undefined ? undefined : JSON.stringify({ max_triangles: options.maxTriangles }),\n );\n try {\n return {\n positions: result.positions(), normals: result.normals(), indices: result.indices(),\n triangleFaceIds: result.triangle_face_ids(), outlinePositions: result.outline_positions(),\n outlineEdgeIds: result.outline_edge_ids(), revision: result.revision(), achievedDeflection: result.achieved_deflection(),\n };\n } finally {\n result.free();\n }\n }\n\n /** Applies a transient worker mesh only when it still matches this authored model revision. */\n applyTessellation(result: AnalyticTessellationData, deflection: number): AnalyticTessellationStats {\n this.checkActive();\n if (!Number.isFinite(deflection) || deflection <= 0 || !Number.isFinite(result.achievedDeflection)\n || result.achievedDeflection < 0 || result.achievedDeflection > deflection || result.revision !== this.modelRevision) {\n throw new Error(\"Tessellation does not match the model revision or requested deflection\");\n }\n const positions = result.positions;\n const indices = result.indices;\n const faceIds = result.triangleFaceIds;\n const outline = result.outlinePositions;\n const edgeIds = result.outlineEdgeIds;\n if (!(positions instanceof Float64Array) || !(result.normals instanceof Float32Array)\n || !(indices instanceof Uint32Array) || !(faceIds instanceof Uint32Array)\n || positions.length % 3 || result.normals.length !== positions.length || indices.length % 3\n || indices.length > 6_000_000 || faceIds.length !== indices.length / 3\n || !(outline instanceof Float64Array) || !(edgeIds instanceof Uint32Array)\n || outline.length % 6 || outline.length > 12_000_000 || edgeIds.length !== outline.length / 6) {\n throw new Error(\"Invalid or oversized tessellation buffers\");\n }\n const faceCount = this.kernel.get_face_count();\n const edgeCount = this.kernel.get_edge_count();\n if (indices.some((index) => index >= positions.length / 3) || faceIds.some((id) => id >= faceCount)\n || positions.some((value) => !Number.isFinite(value)) || result.normals.some((value) => !Number.isFinite(value))\n || outline.some((value) => !Number.isFinite(value)) || edgeIds.some((id) => id >= edgeCount)) {\n throw new Error(\"Invalid tessellation coordinates or topology mappings\");\n }\n const min = [Infinity, Infinity, Infinity];\n const max = [-Infinity, -Infinity, -Infinity];\n for (let i = 0; i < positions.length; i++) {\n min[i % 3] = Math.min(min[i % 3], positions[i]);\n max[i % 3] = Math.max(max[i % 3], positions[i]);\n }\n const origin = positions.length\n ? min.map((value, i) => value / 2 + max[i] / 2)\n : [0, 0, 0];\n let encodingError = 0;\n const encode = (coordinates: Float64Array): Float32Array => {\n const encoded = new Float32Array(coordinates.length);\n for (let i = 0; i < coordinates.length; i += 3) {\n const errors = [0, 0, 0];\n for (let j = 0; j < 3; j++) {\n const local = coordinates[i + j] - origin[j];\n encoded[i + j] = local;\n errors[j] = Math.abs(local - encoded[i + j]);\n }\n encodingError = Math.max(encodingError, Math.hypot(...errors));\n }\n return encoded;\n };\n const gpuPositions = encode(positions);\n const gpuOutline = encode(outline);\n if (!Number.isFinite(encodingError) || encodingError > deflection / 4) {\n throw new Error(\"GPU coordinate precision cannot represent the requested deflection\");\n }\n if (result.achievedDeflection + encodingError > deflection) {\n throw new Error(\"Combined tessellation and GPU encoding error exceeds requested deflection\");\n }\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(gpuPositions, 3));\n geometry.setAttribute(\"normal\", new THREE.BufferAttribute(result.normals, 3));\n geometry.setIndex(new THREE.BufferAttribute(indices, 1));\n geometry.computeBoundingBox();\n geometry.computeBoundingSphere();\n const outlineGeometry = new THREE.BufferGeometry();\n outlineGeometry.setAttribute(\"position\", new THREE.BufferAttribute(gpuOutline, 3));\n if (gpuOutline.length) { outlineGeometry.computeBoundingBox(); outlineGeometry.computeBoundingSphere(); }\n const previous = this.surface.geometry;\n const previousOutline = this.featureOutline.geometry;\n this.surface.geometry = geometry;\n this.surface.position.set(origin[0], origin[1], origin[2]);\n this.featureOutline.geometry = outlineGeometry;\n this.featureOutline.position.copy(this.surface.position);\n this.triangleFaces = faceIds;\n this.outlineEdges = edgeIds;\n previous.dispose();\n previousOutline.dispose();\n this.lastDeflection = deflection;\n return {\n requestedDeflection: deflection,\n achievedDeflection: result.achievedDeflection + encodingError,\n triangleCount: indices.length / 3,\n faceCount,\n revision: result.revision,\n };\n }\n\n dispose(): void {\n if (this.disposed) return;\n this.disposed = true;\n this.surface.geometry.dispose();\n this.surface.material.dispose();\n this.featureOutline.geometry.dispose();\n this.featureOutline.material.dispose();\n this.kernel.free();\n }\n\n private checkActive(): void {\n if (this.disposed) throw new Error(\"AnalyticSolid has been disposed\");\n }\n\n private worldKernel(): OGAnalyticBrep {\n this.checkActive();\n this.updateWorldMatrix(true, false);\n const elements = this.matrixWorld.elements;\n if (elements.every((value, index) => value === (index % 5 === 0 ? 1 : 0))) {\n return new OGAnalyticBrep(this.kernel.get_brep_serialized());\n }\n const scale = uniformScale(this.matrixWorld);\n const axis = (column: number): [number, number, number] => [\n elements[column * 4] / scale, elements[column * 4 + 1] / scale, elements[column * 4 + 2] / scale,\n ];\n const frame: AnalyticFrame = {\n origin: [elements[12], elements[13], elements[14]], x: axis(0), y: axis(1), z: axis(2),\n };\n return this.kernel.placed(JSON.stringify(frame), scale);\n }\n}\n\nfunction createPrimitiveKernel(options: AnalyticPrimitiveOptions, ogid: string): OGAnalyticBrep {\n const frame = options.frame ?? (options.kind === \"planarPolyhedron\" || options.kind === \"polygonLoft\"\n ? { origin: [0, 0, 0], x: [1, 0, 0], y: [0, 1, 0], z: [0, 0, 1] }\n : { origin: [0, 0, 0], x: [1, 0, 0], y: [0, 0, -1], z: [0, 1, 0] });\n const profileExtent = options.kind === \"linearExtrusion\"\n ? [options.outer, ...options.holes].reduce((extent, loop) => (\n loop.reduce((loopExtent, point) => Math.max(loopExtent, Math.abs(point[0]), Math.abs(point[1])), extent)\n ), 0)\n : options.kind === \"arcEdgedExtrusion\"\n ? [options.outer, ...(options.holes ?? [])].reduce((extent, ring) => ring.reduce((loopExtent, edge) => edge.kind === \"line\"\n ? Math.max(loopExtent, ...edge.from.map(Math.abs), ...edge.to.map(Math.abs))\n : Math.max(loopExtent, Math.abs(edge.center[0]) + edge.radius, Math.abs(edge.center[1]) + edge.radius), extent), 0)\n : 0;\n const loftExtent = options.kind === \"polygonLoft\"\n ? [...options.lower, ...options.upper].reduce((extent, point) => Math.max(extent, ...point.map(Math.abs)), 0)\n : 0;\n const polyhedronExtent = options.kind === \"planarPolyhedron\"\n ? options.vertices.reduce((extent, point) => Math.max(extent, Math.abs(point[0]), Math.abs(point[1]), Math.abs(point[2])), 0)\n : 0;\n const size = options.kind === \"torus\"\n ? 2 * (options.majorRadius + options.minorRadius)\n : options.kind === \"coaxialCircleLoft\"\n ? Math.max(2 * options.lowerRadius, 2 * options.upperRadius, options.height)\n : options.kind === \"revolvedRectangle\"\n ? Math.max(2 * options.outerRadius, options.height)\n : options.kind === \"chamferedCuboid\"\n ? Math.max(options.width, options.depth, options.height)\n : options.kind === \"linearExtrusion\" || options.kind === \"arcEdgedExtrusion\"\n ? Math.max(options.height, profileExtent)\n : options.kind === \"polygonLoft\"\n ? loftExtent\n : options.kind === \"boxWithArchedOpening\"\n ? Math.max(options.width, options.depth, options.height)\n : options.kind === \"planarPolyhedron\"\n ? polyhedronExtent\n : options.kind === \"frustum\"\n ? Math.max(2 * options.lowerRadius, 2 * options.upperRadius, options.height)\n : options.kind === \"annularSectorExtrusion\" || options.kind === \"annularSectorExtrusionWithOpenings\" || options.kind === \"annularSectorExtrusionWithArchedOpening\"\n ? Math.max(2 * options.radius + options.thickness, options.height)\n : options.kind === \"cuboid\"\n ? Math.max(options.width, options.depth, options.height)\n : options.kind === \"sphere\"\n ? 2 * options.radius\n : Math.max(2 * options.radius, options.height);\n const coordinateFloor = Math.max(...frame.origin.map(Math.abs)) * 64 * Number.EPSILON;\n const geometric = Math.max(1e-9, size * 1e-8, coordinateFloor);\n const accuracy = options.accuracy ?? {\n geometric, intersection: geometric / 4, tessellation: 0.001, exchange: 0.00001,\n };\n const dimensions = options.kind === \"torus\"\n ? { major_radius: options.majorRadius, minor_radius: options.minorRadius }\n : options.kind === \"coaxialCircleLoft\"\n ? { lower_radius: options.lowerRadius, upper_radius: options.upperRadius, height: options.height }\n : options.kind === \"revolvedRectangle\"\n ? { inner_radius: options.innerRadius, outer_radius: options.outerRadius, height: options.height }\n : options.kind === \"chamferedCuboid\"\n ? { size: [options.width, options.depth, options.height], chamfer: options.chamfer }\n : options.kind === \"filletedCylinder\"\n ? { radius: options.radius, height: options.height, fillet_radius: options.filletRadius }\n : options.kind === \"linearExtrusion\"\n ? { outer: options.outer, holes: options.holes, height: options.height }\n : options.kind === \"arcEdgedExtrusion\"\n ? { outer: options.outer.map((edge) => edge.kind === \"line\" ? edge : {\n kind: \"arc\", center: edge.center, radius: edge.radius,\n start_angle: edge.startAngle, sweep_angle: edge.sweepAngle,\n }), holes: (options.holes ?? []).map((ring) => ring.map((edge) => edge.kind === \"line\" ? edge : {\n kind: \"arc\", center: edge.center, radius: edge.radius,\n start_angle: edge.startAngle, sweep_angle: edge.sweepAngle,\n })), height: options.height }\n : options.kind === \"polygonLoft\"\n ? {\n lower: options.lower,\n upper: options.upper,\n alignment: options.alignment === undefined || options.alignment === \"auto\"\n ? { kind: \"auto\" }\n : {\n kind: \"indexed\",\n upper_start: options.alignment.upperStartIndex,\n reverse_upper: options.alignment.reverseUpper ?? false,\n },\n }\n : options.kind === \"boxWithArchedOpening\"\n ? { width: options.width, depth: options.depth, height: options.height, opening: options.opening }\n : options.kind === \"planarPolyhedron\"\n ? { vertices: options.vertices, faces: options.faces }\n : options.kind === \"frustum\"\n ? { lower_radius: options.lowerRadius, upper_radius: options.upperRadius, height: options.height }\n : options.kind === \"annularSectorExtrusion\" || options.kind === \"annularSectorExtrusionWithOpenings\" || options.kind === \"annularSectorExtrusionWithArchedOpening\"\n ? { radius: options.radius, thickness: options.thickness, height: options.height, start_angle: options.startAngle, sweep_angle: options.sweepAngle, ...(options.kind === \"annularSectorExtrusionWithOpenings\" ? { openings: options.openings.map((opening) => ({ id: opening.id, angle: opening.angle, width: opening.width, bottom: opening.bottom, height: opening.height })) } : options.kind === \"annularSectorExtrusionWithArchedOpening\" ? { opening: { id: options.opening.id, angle: options.opening.angle, width: options.opening.width, bottom: options.opening.bottom, height: options.opening.height } } : {}) }\n : options.kind === \"cylinderSector\"\n ? { radius: options.radius, height: options.height, start_angle: options.startAngle, sweep_angle: options.sweepAngle }\n : options.kind === \"cuboid\"\n ? { size: [options.width, options.depth, options.height] }\n : options.kind === \"sphere\"\n ? { radius: options.radius }\n : { radius: options.radius, height: options.height };\n return OGAnalyticBrep.from_primitive(JSON.stringify({\n kind: options.kind === \"annularSectorExtrusion\"\n ? \"annular_sector_extrusion\"\n : options.kind === \"annularSectorExtrusionWithOpenings\"\n ? \"annular_sector_extrusion_with_openings\"\n : options.kind === \"annularSectorExtrusionWithArchedOpening\"\n ? \"annular_sector_extrusion_with_arched_opening\"\n : options.kind === \"coaxialCircleLoft\"\n ? \"coaxial_circle_loft\"\n : options.kind === \"revolvedRectangle\"\n ? \"revolved_rectangle\"\n : options.kind === \"chamferedCuboid\"\n ? \"chamfered_cuboid\"\n : options.kind === \"filletedCylinder\"\n ? \"filleted_cylinder\"\n : options.kind === \"linearExtrusion\"\n ? \"linear_extrusion\"\n : options.kind === \"arcEdgedExtrusion\"\n ? \"arc_edged_extrusion\"\n : options.kind === \"polygonLoft\"\n ? \"polygon_loft\"\n : options.kind === \"boxWithArchedOpening\"\n ? \"box_with_arched_opening\"\n : options.kind === \"planarPolyhedron\"\n ? \"planar_polyhedron\"\n : options.kind === \"cylinderSector\"\n ? \"cylinder_sector\"\n : options.kind,\n id: ogid, frame, accuracy, ...dimensions,\n }));\n}\n","import * as THREE from \"three\";\nimport { AnalyticSolid } from \"./analytic-solid\";\n\nexport interface AnalyticPatternInstance {\n id?: string;\n matrix: THREE.Matrix4;\n}\n\nexport interface AnalyticPatternHit {\n pattern: AnalyticPattern;\n instanceIndex: number;\n instanceId: string;\n source: AnalyticSolid;\n faceId?: number;\n}\n\nfunction finiteMatrix(matrix: THREE.Matrix4): boolean {\n return matrix.elements.every(Number.isFinite);\n}\n\n/**\n * Renders many rigid placements of one authoritative analytic body. The source\n * owns the BRep; instances own only identity and placement matrices.\n */\nexport class AnalyticPattern extends THREE.Group {\n readonly source: AnalyticSolid;\n readonly surface: THREE.InstancedMesh<THREE.BufferGeometry, THREE.Material>;\n readonly instanceIds: readonly string[];\n private disposed = false;\n\n constructor(source: AnalyticSolid, instances: readonly AnalyticPatternInstance[]) {\n super();\n if (!(source instanceof AnalyticSolid) || source.isDisposed) {\n throw new Error(\"Analytic patterns require an active AnalyticSolid source\");\n }\n if (instances.length === 0 || instances.length > 100_000) {\n throw new Error(\"Analytic patterns require 1–100,000 instances\");\n }\n if (instances.some(({ matrix }) => !(matrix instanceof THREE.Matrix4) || !finiteMatrix(matrix))) {\n throw new Error(\"Analytic pattern placements must be finite Matrix4 values\");\n }\n const ids = instances.map((instance, index) => instance.id ?? `${source.ogid}:instance-${index}`);\n if (ids.some((id) => !id) || new Set(ids).size !== ids.length) {\n throw new Error(\"Analytic pattern instance identities must be nonempty and unique\");\n }\n this.source = source;\n this.instanceIds = ids;\n this.surface = new THREE.InstancedMesh(\n source.surface.geometry,\n source.surface.material,\n instances.length,\n );\n this.surface.name = `${source.name || source.ogid} pattern`;\n this.surface.userData.ogid = source.ogid;\n this.surface.userData.analyticPattern = this;\n instances.forEach((instance, index) => this.surface.setMatrixAt(index, instance.matrix));\n this.surface.instanceMatrix.needsUpdate = true;\n this.add(this.surface);\n }\n\n get count(): number { return this.instanceIds.length; }\n\n setInstanceMatrix(index: number, matrix: THREE.Matrix4): void {\n this.checkActive();\n if (!Number.isInteger(index) || index < 0 || index >= this.count) {\n throw new Error(\"Analytic pattern instance index is outside the pattern\");\n }\n if (!(matrix instanceof THREE.Matrix4) || !finiteMatrix(matrix)) {\n throw new Error(\"Analytic pattern placement must be a finite Matrix4\");\n }\n this.surface.setMatrixAt(index, matrix);\n this.surface.instanceMatrix.needsUpdate = true;\n this.surface.computeBoundingBox();\n this.surface.computeBoundingSphere();\n }\n\n resolveIntersection(intersection: THREE.Intersection): AnalyticPatternHit | undefined {\n if (intersection.object !== this.surface || intersection.instanceId === undefined) return undefined;\n const instanceIndex = intersection.instanceId;\n if (instanceIndex < 0 || instanceIndex >= this.count) return undefined;\n const triangleIndex = intersection.faceIndex;\n const faceId = triangleIndex === undefined ? undefined : this.source.faceIdForTriangle(triangleIndex);\n return {\n pattern: this,\n instanceIndex,\n instanceId: this.instanceIds[instanceIndex],\n source: this.source,\n faceId,\n };\n }\n\n dispose(): void {\n if (this.disposed) return;\n this.disposed = true;\n this.remove(this.surface);\n this.surface.dispose();\n }\n\n private checkActive(): void {\n if (this.disposed) throw new Error(\"Analytic pattern has been disposed\");\n if (this.source.isDisposed) throw new Error(\"Analytic pattern source has been disposed\");\n }\n}\n\nexport function linearPattern(\n source: AnalyticSolid,\n count: number,\n spacing: THREE.Vector3,\n): AnalyticPattern {\n if (!Number.isInteger(count) || count < 1 || count > 100_000) {\n throw new Error(\"Linear pattern count must be an integer from 1 to 100,000\");\n }\n if (!(spacing instanceof THREE.Vector3) || ![spacing.x, spacing.y, spacing.z].every(Number.isFinite)) {\n throw new Error(\"Linear pattern spacing must be a finite Vector3\");\n }\n return new AnalyticPattern(source, Array.from({ length: count }, (_, index) => ({\n matrix: new THREE.Matrix4().makeTranslation(spacing.x * index, spacing.y * index, spacing.z * index),\n })));\n}\n\nexport function rectangularPattern(\n source: AnalyticSolid,\n counts: readonly [number, number],\n spacing: readonly [THREE.Vector3, THREE.Vector3],\n): AnalyticPattern {\n if (counts.some((count) => !Number.isInteger(count) || count < 1) || counts[0] * counts[1] > 100_000) {\n throw new Error(\"Rectangular pattern counts must be positive integers with at most 100,000 instances\");\n }\n if (spacing.some((vector) => !(vector instanceof THREE.Vector3)\n || ![vector.x, vector.y, vector.z].every(Number.isFinite))) {\n throw new Error(\"Rectangular pattern spacing vectors must be finite\");\n }\n const instances: AnalyticPatternInstance[] = [];\n for (let row = 0; row < counts[1]; row += 1) {\n for (let column = 0; column < counts[0]; column += 1) {\n instances.push({\n id: `${source.ogid}:instance-${column}-${row}`,\n matrix: new THREE.Matrix4().makeTranslation(\n spacing[0].x * column + spacing[1].x * row,\n spacing[0].y * column + spacing[1].y * row,\n spacing[0].z * column + spacing[1].z * row,\n ),\n });\n }\n }\n return new AnalyticPattern(source, instances);\n}\n\nexport function circularPattern(\n source: AnalyticSolid,\n count: number,\n radius: number,\n options: { startAngle?: number; sweepAngle?: number; rotateInstances?: boolean } = {},\n): AnalyticPattern {\n if (!Number.isInteger(count) || count < 1 || count > 100_000) {\n throw new Error(\"Circular pattern count must be an integer from 1 to 100,000\");\n }\n if (!Number.isFinite(radius) || radius < 0) throw new Error(\"Circular pattern radius must be finite and nonnegative\");\n const start = options.startAngle ?? 0;\n const sweep = options.sweepAngle ?? Math.PI * 2;\n if (![start, sweep].every(Number.isFinite) || sweep === 0) {\n throw new Error(\"Circular pattern angles must be finite with a nonzero sweep\");\n }\n const closed = Math.abs(Math.abs(sweep) - Math.PI * 2) <= 64 * Number.EPSILON;\n const denominator = closed ? count : Math.max(1, count - 1);\n const instances = Array.from({ length: count }, (_, index) => {\n const angle = start + sweep * index / denominator;\n const matrix = new THREE.Matrix4().makeTranslation(radius * Math.cos(angle), 0, radius * Math.sin(angle));\n if (options.rotateInstances ?? true) matrix.multiply(new THREE.Matrix4().makeRotationY(-angle));\n return { id: `${source.ogid}:instance-${index}`, matrix };\n });\n return new AnalyticPattern(source, instances);\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\n\nimport type {\n ParametricEditCapabilities,\n ParametricEditFamily,\n ParametricEntityType,\n ParametricPlacement,\n} from \"./types\";\nimport type { ObjectTransformation } from \"../freeform/types\";\n\nfunction cloneVector(\n vector: Vector3 | undefined,\n fallback: [number, number, number]\n): Vector3 {\n return vector?.clone() ?? new Vector3(...fallback);\n}\n\n/**\n * Returns the canonical capability payload exposed by parametric wrappers.\n */\nexport function createParametricEditCapabilities(\n entityType: ParametricEntityType,\n editFamily: ParametricEditFamily\n): ParametricEditCapabilities {\n return {\n editingMode: \"parametric\",\n entityType,\n editFamily,\n canEditConfig: true,\n canEditPlacement: true,\n canConvertToFreeform: true,\n };\n}\n\n/**\n * Normalizes optional placement fields into concrete vectors.\n */\nexport function clonePlacement(\n placement: Partial<ParametricPlacement>\n): ParametricPlacement {\n return {\n translation: cloneVector(placement.translation, [0, 0, 0]),\n rotation: cloneVector(placement.rotation, [0, 0, 0]),\n scale: cloneVector(placement.scale, [1, 1, 1]),\n };\n}\n\n/**\n * Converts a parametric placement payload into the freeform/object transform\n * structure expected by BRep-backed helpers.\n */\nexport function toObjectTransformation(\n placement: ParametricPlacement | ObjectTransformation\n): ObjectTransformation {\n if (\"anchor\" in placement) {\n return {\n anchor: cloneVector(placement.anchor, [0, 0, 0]),\n translation: cloneVector(placement.translation, [0, 0, 0]),\n rotation: cloneVector(placement.rotation, [0, 0, 0]),\n scale: cloneVector(placement.scale, [1, 1, 1]),\n };\n }\n\n return {\n anchor: new Vector3(0, 0, 0),\n translation: cloneVector(placement.translation, [0, 0, 0]),\n rotation: cloneVector(placement.rotation, [0, 0, 0]),\n scale: cloneVector(placement.scale, [1, 1, 1]),\n };\n}\n","import {\n OGFreeformEditor as KernelFreeformEditor,\n Vector3,\n} from \"../../../opengeometry/pkg/opengeometry\";\n\nimport { FreeformGeometry } from \"../freeform\";\nimport type { ObjectTransformation } from \"../freeform/types\";\nimport type {\n EdgeInfo,\n EditOperationOptions,\n FaceInfo,\n FreeformEditCapabilities,\n FreeformEditResult,\n FreeformFeatureEditCapabilities,\n TopologyId,\n TopologyRenderData,\n TopologyVertexRenderData,\n VertexInfo,\n} from \"./types\";\n\ntype RawFreeformOperationCapabilities = {\n can_push_pull_face: boolean;\n can_move_face: boolean;\n can_extrude_face: boolean;\n can_cut_face: boolean;\n can_move_edge: boolean;\n can_move_vertex: boolean;\n can_insert_vertex_on_edge: boolean;\n can_remove_vertex: boolean;\n can_split_edge: boolean;\n can_loop_cut: boolean;\n reasons?: string[];\n};\n\ntype RawFreeformFeatureEditCapabilities = RawFreeformOperationCapabilities & {\n domain: \"face\" | \"edge\" | \"vertex\";\n topology_id: TopologyId;\n};\n\nfunction parseJson<T>(payload: string): T {\n return JSON.parse(payload) as T;\n}\n\nfunction toVector3(value: { x: number; y: number; z: number }): Vector3 {\n return new Vector3(value.x, value.y, value.z);\n}\n\nfunction toPlainVector3(value: { x: number; y: number; z: number }) {\n return {\n x: value.x,\n y: value.y,\n z: value.z,\n };\n}\n\nfunction normalizePlacement(\n placement: ObjectTransformation\n): ObjectTransformation {\n return {\n anchor: toVector3(placement.anchor),\n translation: toVector3(placement.translation),\n rotation: toVector3(placement.rotation),\n scale: toVector3(placement.scale),\n };\n}\n\nfunction normalizeFaceInfo(face: FaceInfo): FaceInfo {\n return {\n ...face,\n centroid: toVector3(face.centroid),\n normal: toVector3(face.normal),\n };\n}\n\nfunction normalizeEdgeInfo(edge: EdgeInfo): EdgeInfo {\n return {\n ...edge,\n start: toVector3(edge.start),\n end: toVector3(edge.end),\n };\n}\n\nfunction normalizeVertexInfo(vertex: VertexInfo): VertexInfo {\n return {\n ...vertex,\n position: toVector3(vertex.position),\n };\n}\n\nfunction normalizeTopologyRenderData(\n topology: TopologyRenderData\n): TopologyRenderData {\n return {\n ...topology,\n vertices: topology.vertices.map((vertex) =>\n normalizeTopologyVertex(vertex)\n ),\n };\n}\n\nfunction normalizeTopologyVertex(\n vertex: TopologyVertexRenderData\n): TopologyVertexRenderData {\n return {\n ...vertex,\n position: toVector3(vertex.position),\n };\n}\n\nfunction normalizeFeatureCapabilities(\n raw: RawFreeformFeatureEditCapabilities\n): FreeformFeatureEditCapabilities {\n return {\n domain: raw.domain,\n topologyId: raw.topology_id,\n canPushPullFace: raw.can_push_pull_face,\n canMoveFace: raw.can_move_face,\n canExtrudeFace: raw.can_extrude_face,\n canCutFace: raw.can_cut_face,\n canMoveEdge: raw.can_move_edge,\n canMoveVertex: raw.can_move_vertex,\n canInsertVertexOnEdge: raw.can_insert_vertex_on_edge,\n canRemoveVertex: raw.can_remove_vertex,\n canSplitEdge: raw.can_split_edge,\n canLoopCut: raw.can_loop_cut,\n reasons: raw.reasons,\n };\n}\n\nfunction normalizeFreeformCapabilities(\n raw: RawFreeformOperationCapabilities\n): FreeformEditCapabilities {\n return {\n editingMode: \"freeform\",\n entityType: \"freeform\",\n editFamily: \"freeform\",\n canEditConfig: false,\n canEditPlacement: false,\n canConvertToFreeform: false,\n canPushPullFace: raw.can_push_pull_face,\n canMoveFace: raw.can_move_face,\n canExtrudeFace: raw.can_extrude_face,\n canCutFace: raw.can_cut_face,\n canMoveEdge: raw.can_move_edge,\n canMoveVertex: raw.can_move_vertex,\n canInsertVertexOnEdge: raw.can_insert_vertex_on_edge,\n canRemoveVertex: raw.can_remove_vertex,\n canSplitEdge: raw.can_split_edge,\n canLoopCut: raw.can_loop_cut,\n reasons: raw.reasons,\n };\n}\n\nfunction parseEditResult(payload: string): FreeformEditResult {\n const result = parseJson<FreeformEditResult>(payload);\n return {\n ...result,\n placement: normalizePlacement(result.placement),\n };\n}\n\nfunction serializeOptions(options?: EditOperationOptions): string | undefined {\n if (!options) {\n return undefined;\n }\n\n return JSON.stringify({\n ...options,\n constraintAxis: options.constraintAxis\n ? toPlainVector3(options.constraintAxis)\n : undefined,\n constraintPlaneNormal: options.constraintPlaneNormal\n ? toPlainVector3(options.constraintPlaneNormal)\n : undefined,\n });\n}\n\n/**\n * High-level editor facade over the kernel freeform editing API.\n */\nexport class FreeformEditor {\n private readonly geometry: FreeformGeometry;\n private readonly editor: KernelFreeformEditor;\n\n constructor(\n geometry: FreeformGeometry,\n editor: KernelFreeformEditor = new KernelFreeformEditor()\n ) {\n this.geometry = geometry;\n this.editor = editor;\n }\n\n /**\n * Returns the freeform geometry currently managed by this editor.\n */\n getFreeformGeometry(): FreeformGeometry {\n return this.geometry;\n }\n\n /**\n * Returns renderable topology buffers for faces, edges, and vertices.\n */\n getTopologyRenderData(): TopologyRenderData {\n return normalizeTopologyRenderData(\n parseJson<TopologyRenderData>(\n this.editor.getTopologyRenderData(this.geometry.getKernelGeometry())\n )\n );\n }\n\n /**\n * Returns semantic and topological information for a face id.\n */\n getFaceInfo(faceId: TopologyId): FaceInfo {\n return normalizeFaceInfo(\n parseJson<FaceInfo>(\n this.editor.getFaceInfo(this.geometry.getKernelGeometry(), faceId)\n )\n );\n }\n\n /**\n * Returns semantic and topological information for an edge id.\n */\n getEdgeInfo(edgeId: TopologyId): EdgeInfo {\n return normalizeEdgeInfo(\n parseJson<EdgeInfo>(\n this.editor.getEdgeInfo(this.geometry.getKernelGeometry(), edgeId)\n )\n );\n }\n\n /**\n * Returns semantic and topological information for a vertex id.\n */\n getVertexInfo(vertexId: TopologyId): VertexInfo {\n return normalizeVertexInfo(\n parseJson<VertexInfo>(\n this.editor.getVertexInfo(this.geometry.getKernelGeometry(), vertexId)\n )\n );\n }\n\n /**\n * Returns global edit capabilities for the current freeform model.\n */\n getEditCapabilities(): FreeformEditCapabilities {\n return normalizeFreeformCapabilities(\n parseJson<RawFreeformOperationCapabilities>(\n this.editor.getEditCapabilities(this.geometry.getKernelGeometry())\n )\n );\n }\n\n /**\n * Returns edit capabilities scoped to a single face.\n */\n getFaceEditCapabilities(faceId: TopologyId): FreeformFeatureEditCapabilities {\n return normalizeFeatureCapabilities(\n parseJson<RawFreeformFeatureEditCapabilities>(\n this.editor.getFaceEditCapabilities(this.geometry.getKernelGeometry(), faceId)\n )\n );\n }\n\n /**\n * Returns edit capabilities scoped to a single edge.\n */\n getEdgeEditCapabilities(edgeId: TopologyId): FreeformFeatureEditCapabilities {\n return normalizeFeatureCapabilities(\n parseJson<RawFreeformFeatureEditCapabilities>(\n this.editor.getEdgeEditCapabilities(this.geometry.getKernelGeometry(), edgeId)\n )\n );\n }\n\n /**\n * Returns edit capabilities scoped to a single vertex.\n */\n getVertexEditCapabilities(\n vertexId: TopologyId\n ): FreeformFeatureEditCapabilities {\n return normalizeFeatureCapabilities(\n parseJson<RawFreeformFeatureEditCapabilities>(\n this.editor.getVertexEditCapabilities(\n this.geometry.getKernelGeometry(),\n vertexId\n )\n )\n );\n }\n\n /**\n * Offset a face along its editable normal direction.\n */\n pushPullFace(\n faceId: TopologyId,\n distance: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.pushPullFace(\n this.geometry.getKernelGeometry(),\n faceId,\n distance,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Creates new side faces by extruding a face region.\n */\n extrudeFace(\n faceId: TopologyId,\n distance: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.extrudeFace(\n this.geometry.getKernelGeometry(),\n faceId,\n distance,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Splits a face by connecting two points sampled on its boundary edges.\n */\n cutFace(\n faceId: TopologyId,\n startEdgeId: TopologyId,\n startT: number,\n endEdgeId: TopologyId,\n endT: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.cutFace(\n this.geometry.getKernelGeometry(),\n faceId,\n startEdgeId,\n startT,\n endEdgeId,\n endT,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Moves a face by a translation vector, subject to kernel constraints.\n */\n moveFace(\n faceId: TopologyId,\n translation: Vector3,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.moveFace(\n this.geometry.getKernelGeometry(),\n faceId,\n translation,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Moves an edge by a translation vector, subject to kernel constraints.\n */\n moveEdge(\n edgeId: TopologyId,\n translation: Vector3,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.moveEdge(\n this.geometry.getKernelGeometry(),\n edgeId,\n translation,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Moves a vertex by a translation vector, subject to kernel constraints.\n */\n moveVertex(\n vertexId: TopologyId,\n translation: Vector3,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.moveVertex(\n this.geometry.getKernelGeometry(),\n vertexId,\n translation,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Inserts a vertex at parametric position `t` along an edge.\n */\n insertVertexOnEdge(\n edgeId: TopologyId,\n t: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.insertVertexOnEdge(\n this.geometry.getKernelGeometry(),\n edgeId,\n t,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Splits an edge at parametric position `t`.\n */\n splitEdge(\n edgeId: TopologyId,\n t: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.splitEdge(\n this.geometry.getKernelGeometry(),\n edgeId,\n t,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Creates a loop cut that propagates from the selected edge when possible.\n */\n loopCut(\n edgeId: TopologyId,\n t: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.loopCut(\n this.geometry.getKernelGeometry(),\n edgeId,\n t,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Removes a vertex when the current topology allows the edit.\n */\n removeVertex(\n vertexId: TopologyId,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.removeVertex(\n this.geometry.getKernelGeometry(),\n vertexId,\n serializeOptions(options)\n )\n );\n }\n}\n\n/**\n * Convenience factory for creating a freeform editor around a geometry wrapper.\n */\nexport function createFreeformEditor(\n geometry: FreeformGeometry\n): FreeformEditor {\n return new FreeformEditor(geometry);\n}\n","import {\n OGFreeformGeometry,\n Vector3,\n} from \"../../../opengeometry/pkg/opengeometry\";\n\nimport type {\n CreateFreeformGeometryOptions,\n FreeformSource,\n ObjectTransformation,\n} from \"./types\";\n\nfunction parseJson<T>(payload: string): T {\n return JSON.parse(payload) as T;\n}\n\nfunction toVector3(value: { x: number; y: number; z: number }): Vector3 {\n return new Vector3(value.x, value.y, value.z);\n}\n\nfunction toPlainVector3(value: { x: number; y: number; z: number }) {\n return {\n x: value.x,\n y: value.y,\n z: value.z,\n };\n}\n\nfunction cloneVector(\n vector: Vector3 | undefined,\n fallback: [number, number, number]\n): Vector3 {\n return vector?.clone() ?? new Vector3(...fallback);\n}\n\nfunction normalizePlacement(\n placement: ObjectTransformation\n): ObjectTransformation {\n return {\n anchor: toVector3(placement.anchor),\n translation: toVector3(placement.translation),\n rotation: toVector3(placement.rotation),\n scale: toVector3(placement.scale),\n };\n}\n\nfunction toObjectTransformation(\n placement: NonNullable<CreateFreeformGeometryOptions[\"placement\"]>\n): ObjectTransformation {\n return {\n anchor: cloneVector(placement.anchor, [0, 0, 0]),\n translation: cloneVector(placement.translation, [0, 0, 0]),\n rotation: cloneVector(placement.rotation, [0, 0, 0]),\n scale: cloneVector(placement.scale, [1, 1, 1]),\n };\n}\n\nfunction toPlainObjectTransformation(transform: ObjectTransformation) {\n return {\n anchor: toPlainVector3(transform.anchor),\n translation: toPlainVector3(transform.translation),\n rotation: toPlainVector3(transform.rotation),\n scale: toPlainVector3(transform.scale),\n };\n}\n\nfunction serializeBrepLike(value: unknown): string {\n return typeof value === \"string\" ? value : JSON.stringify(value);\n}\n\nfunction normalizeFreeformSerialized(source: FreeformSource): string {\n if (typeof source === \"string\") {\n return source;\n }\n\n if (typeof source.getLocalBrepSerialized === \"function\") {\n return source.getLocalBrepSerialized();\n }\n\n if (typeof source.getLocalBrepData === \"function\") {\n return serializeBrepLike(source.getLocalBrepData());\n }\n\n if (typeof source.getBrepSerialized === \"function\") {\n return source.getBrepSerialized();\n }\n\n if (typeof source.getBrepData === \"function\") {\n return serializeBrepLike(source.getBrepData());\n }\n\n if (typeof source.getBrep === \"function\") {\n return serializeBrepLike(source.getBrep());\n }\n\n return JSON.stringify(source);\n}\n\n/**\n * Thin client-side wrapper around the kernel `OGFreeformGeometry` object.\n */\nexport class FreeformGeometry {\n private readonly geometry: OGFreeformGeometry;\n\n constructor(geometry: OGFreeformGeometry) {\n this.geometry = geometry;\n }\n\n /**\n * Returns the stable kernel-side id for this freeform geometry object.\n */\n getId(): string {\n return this.geometry.id;\n }\n\n /**\n * Returns the world-space serialized BRep payload.\n */\n getBrepSerialized(): string {\n return this.geometry.getBrepSerialized();\n }\n\n /**\n * Returns the local-space serialized BRep payload.\n */\n getLocalBrepSerialized(): string {\n return this.geometry.getLocalBrepSerialized();\n }\n\n /**\n * Returns the serialized triangle position buffer emitted by the kernel.\n */\n getGeometrySerialized(): string {\n return this.geometry.getGeometrySerialized();\n }\n\n /**\n * Returns world-space triangle positions as a plain number array.\n */\n getGeometryBuffer(): number[] {\n return Array.from(this.geometry.getGeometryBuffer());\n }\n\n /**\n * Returns local-space triangle positions as a plain number array.\n */\n getLocalGeometryBuffer(): number[] {\n return Array.from(this.geometry.getLocalGeometryBuffer());\n }\n\n /**\n * Returns the serialized outline buffer emitted by the kernel.\n */\n getOutlineGeometrySerialized(): string {\n return this.geometry.getOutlineGeometrySerialized();\n }\n\n /**\n * Returns world-space outline segment positions as a plain number array.\n */\n getOutlineGeometryBuffer(): number[] {\n return Array.from(this.geometry.getOutlineGeometryBuffer());\n }\n\n /**\n * Returns local-space outline segment positions as a plain number array.\n */\n getLocalOutlineGeometryBuffer(): number[] {\n return Array.from(this.geometry.getLocalOutlineGeometryBuffer());\n }\n\n /**\n * Returns the current normalized placement for this freeform geometry.\n */\n getPlacement(): ObjectTransformation {\n return normalizePlacement(\n parseJson<ObjectTransformation>(this.geometry.getPlacementSerialized())\n );\n }\n\n /**\n * Replaces the full placement transform in one call.\n */\n setPlacement(transform: ObjectTransformation): void {\n this.geometry.setPlacementSerialized(\n JSON.stringify(toPlainObjectTransformation(transform))\n );\n }\n\n /**\n * Sets translation, rotation, and scale without changing the current anchor.\n */\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3): void {\n this.geometry.setTransform(translation, rotation, scale);\n }\n\n /**\n * Updates only the translation component of the placement.\n */\n setTranslation(translation: Vector3): void {\n this.geometry.setTranslation(translation);\n }\n\n /**\n * Updates only the rotation component of the placement.\n */\n setRotation(rotation: Vector3): void {\n this.geometry.setRotation(rotation);\n }\n\n /**\n * Updates only the scale component of the placement.\n */\n setScale(scale: Vector3): void {\n this.geometry.setScale(scale);\n }\n\n /**\n * Updates the explicit modeling anchor used by downstream transforms.\n */\n setAnchor(anchor: Vector3): void {\n this.geometry.setAnchor(anchor);\n }\n\n /** @internal */\n getKernelGeometry(): OGFreeformGeometry {\n return this.geometry;\n }\n}\n\n/**\n * Creates a `FreeformGeometry` wrapper from serialized BRep JSON, a parsed\n * BRep object, or another wrapper exposing BRep accessors.\n */\nexport function createFreeformGeometry(\n source: FreeformSource,\n options?: CreateFreeformGeometryOptions\n): FreeformGeometry {\n const id = options?.id ?? `freeform-${Date.now()}`;\n const localBrepSerialized = normalizeFreeformSerialized(source);\n const geometry = new FreeformGeometry(\n new OGFreeformGeometry(id, localBrepSerialized)\n );\n\n if (options?.placement) {\n geometry.setPlacement(toObjectTransformation(options.placement));\n }\n\n return geometry;\n}\n\n/** Triangulates an explicitly faceted BRep, including its planar face holes. */\nexport function tessellateFacetedBrep(serialized: string): Float64Array {\n if (typeof serialized !== \"string\" || serialized.length > 64 * 1024 * 1024) {\n throw new Error(\"Faceted BRep must be serialized JSON within the 64 MiB limit\");\n }\n const data = JSON.parse(serialized) as Record<string, unknown>;\n if (data === null || typeof data !== \"object\" || \"schema_version\" in data) {\n throw new Error(\"Use analytic tessellation for a versioned analytic BRep\");\n }\n for (const name of [\"vertices\", \"edges\", \"halfedges\", \"loops\", \"faces\", \"wires\", \"shells\"]) {\n const table = data[name];\n if (!Array.isArray(table) || table.length > 2_000_000) {\n throw new Error(`Faceted BRep requires a bounded ${name} table`);\n }\n }\n const geometry = new OGFreeformGeometry(\"faceted-tessellation\", serialized);\n try {\n const positions = geometry.getLocalGeometryBuffer();\n if (!positions.length || positions.length % 9 !== 0 || positions.length > 18_000_000\n || positions.some(value => !Number.isFinite(value))) {\n throw new Error(\"Faceted BRep triangulation did not produce a finite mesh within the triangle limit\");\n }\n return positions;\n } finally {\n geometry.free();\n }\n}\n","import { OGLine, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { getUUID } from \"../utils/randomizer\";\nimport { Line2 } from 'three/examples/jsm/lines/Line2.js';\nimport { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry.js';\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for a line segment wrapper.\n */\nexport interface ILineOptions {\n ogid?: string;\n start: Vector3;\n end: Vector3;\n color: number;\n fatLines?: boolean;\n width?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Line`.\n */\nexport interface LinePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Line.setConfig(...)`.\n */\nexport type LineConfigUpdate = Partial<\n Omit<ILineOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Line` placement updates.\n */\nexport type LinePlacementUpdate = LinePlacementOptions;\n\n/**\n * Offset result returned by `Line.offset(...)`.\n */\nexport interface ILineOffsetResult {\n points: Vector3[];\n beveledVertexIndices: number[];\n isClosed: boolean;\n}\n\ntype OffsetKernelOutput = {\n points: Array<{ x: number; y: number; z: number }>;\n beveled_vertex_indices: number[];\n is_closed: boolean;\n};\n\n\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n\n\n/**\n * Simple Line defined by Two Points\n */\nexport class Line extends THREE.Line {\n ogid: string;\n options: ILineOptions = {\n start: new Vector3(0, 0, 0.5),\n end: new Vector3(1, 0, 0.5),\n color: 0x000000,\n fatLines: false,\n width: 20,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private line: OGLine;\n private fatLine: Line2 | null = null;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n if (this.fatLine && this.fatLine.material instanceof LineMaterial) {\n this.fatLine.material.color.set(color);\n }\n }\n\n constructor(options?: ILineOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n this.line = new OGLine(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n start: this.options.start.clone(),\n end: this.options.end.clone(),\n color: this.options.color,\n fatLines: this.options.fatLines,\n width: this.options.width,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Line\");\n }\n }\n\n setConfig(options: LineConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged = \"start\" in options || \"end\" in options;\n const renderChanged =\n \"color\" in options ||\n \"fatLines\" in options ||\n \"width\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.line.set_config(\n nextOptions.start.clone(),\n nextOptions.end.clone()\n );\n this.generateGeometry();\n return;\n }\n\n if (renderChanged) {\n this.updateRenderStyle();\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.line.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.line.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.line.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: LinePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.line.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"line\", \"profile\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.line.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n /**\n * Every time there are property changes, geometry needs to be discarded and regenerated.\n * This is to ensure that the geometry is always up-to-date with the current state.\n */\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private getCurrentPositions() {\n const attribute = this.geometry.getAttribute(\"position\");\n if (!attribute || attribute.itemSize !== 3) {\n return [];\n }\n\n const positions = [];\n for (let index = 0; index < attribute.count; index += 1) {\n positions.push(\n attribute.getX(index),\n attribute.getY(index),\n attribute.getZ(index)\n );\n }\n\n return positions;\n }\n\n private updateRenderStyle(bufferData?: number[]) {\n const positions = bufferData ?? this.getCurrentPositions();\n\n if (this.options.fatLines) {\n if (!this.fatLine) {\n this.fatLine = new Line2(\n new LineGeometry(),\n new LineMaterial({\n color: this.options.color,\n linewidth: this.options.width,\n resolution: new THREE.Vector2(window.innerWidth, window.innerHeight),\n })\n );\n this.add(this.fatLine);\n }\n\n this.fatLine.geometry.setPositions(positions);\n (this.fatLine.material as LineMaterial).color.set(this.options.color);\n (this.fatLine.material as LineMaterial).linewidth = this.options.width ?? 5;\n (this.fatLine.material as LineMaterial).resolution.set(\n window.innerWidth,\n window.innerHeight\n );\n this.fatLine.visible = true;\n } else if (this.fatLine) {\n this.fatLine.visible = false;\n }\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.visible = !this.options.fatLines;\n }\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.line.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n\n this.updateRenderStyle(bufferData);\n }\n\n getDXF() {\n const dxfData = this.line.get_dxf_serialized();\n return dxfData;\n }\n\n getOffset(\n distance: number,\n acuteThresholdDegrees: number = 35.0,\n bevel: boolean = true\n ): ILineOffsetResult {\n const kernel = this.line as unknown as {\n get_offset_serialized?: OffsetKernelFn;\n };\n if (typeof kernel.get_offset_serialized !== \"function\") {\n throw new Error(\n \"Offset API is not available in OGLine. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const serialized = kernel.get_offset_serialized(\n distance,\n acuteThresholdDegrees,\n bevel\n );\n\n const parsed = JSON.parse(serialized) as OffsetKernelOutput;\n return {\n points: parsed.points.map((point) => new Vector3(point.x, point.y, point.z)),\n beveledVertexIndices: parsed.beveled_vertex_indices ?? [],\n isClosed: Boolean(parsed.is_closed),\n };\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from 'three';\nimport { OGPolyline, Vector3 } from '../../../opengeometry/pkg/opengeometry';\nimport { getUUID } from \"../utils/randomizer\";\nimport { Line2 } from 'three/examples/jsm/lines/Line2.js';\nimport { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry.js';\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for an ordered polyline wrapper.\n */\nexport interface IPolylineOptions {\n ogid?: string;\n color: number;\n points: Vector3[];\n fatLines?: boolean;\n width?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Polyline`.\n */\nexport interface PolylinePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Polyline.setConfig(...)`.\n */\nexport type PolylineConfigUpdate = Partial<\n Omit<IPolylineOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Polyline` placement updates.\n */\nexport type PolylinePlacementUpdate = PolylinePlacementOptions;\n\n/**\n * Offset result returned by `Polyline.offset(...)`.\n */\nexport interface IOffsetResult {\n points: Vector3[];\n beveledVertexIndices: number[];\n isClosed: boolean;\n}\n\ntype OffsetKernelOutput = {\n points: Array<{ x: number; y: number; z: number }>;\n beveled_vertex_indices: number[];\n is_closed: boolean;\n};\n\n\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n\n\n/**\n * Polyline wrapper backed by the kernel OGPolyline primitive.\n */\nexport class Polyline extends THREE.Line {\n ogid: string;\n options: IPolylineOptions = {\n points: [],\n color: 0x00ff00,\n fatLines: false,\n width: 20,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n isClosed: boolean = false;\n\n private polyline: OGPolyline;\n private fatLine: Line2 | null = null;\n\n transformationMatrix: THREE.Matrix4 = new THREE.Matrix4();\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n if (this.fatLine && this.fatLine.material instanceof LineMaterial) {\n this.fatLine.material.color.set(color);\n }\n }\n\n constructor(options?: IPolylineOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n this.polyline = new OGPolyline(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n points: this.options.points.map((point) => point.clone()),\n color: this.options.color,\n fatLines: this.options.fatLines,\n width: this.options.width,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Polyline\");\n }\n }\n\n setConfig(options: PolylineConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged = \"points\" in options;\n const renderChanged =\n \"color\" in options ||\n \"fatLines\" in options ||\n \"width\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.polyline.set_config(nextOptions.points.map((point) => point.clone()));\n this.generateGeometry();\n return;\n }\n\n if (renderChanged) {\n this.updateRenderStyle();\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.polyline.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.polyline.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.polyline.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: PolylinePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.polyline.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"polyline\", \"profile\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.polyline.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n addPoint(point: Vector3) {\n if (!this.polyline) return;\n\n const { points } = this.options;\n points.push(point);\n\n if (this.options.points.length < 2) return;\n this.setConfig({\n points: this.options.points.map((currentPoint) => currentPoint.clone()),\n });\n }\n\n /**\n * Every time there are property changes, geometry needs to be discarded and regenerated.\n * This is to ensure that the geometry is always up-to-date with the current state.\n */\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private getCurrentPositions() {\n const attribute = this.geometry.getAttribute(\"position\");\n if (!attribute || attribute.itemSize !== 3) {\n return [];\n }\n\n const positions = [];\n for (let index = 0; index < attribute.count; index += 1) {\n positions.push(\n attribute.getX(index),\n attribute.getY(index),\n attribute.getZ(index)\n );\n }\n\n return positions;\n }\n\n private updateRenderStyle(bufferData?: number[]) {\n const positions = bufferData ?? this.getCurrentPositions();\n\n if (this.options.fatLines) {\n if (!this.fatLine) {\n this.fatLine = new Line2(\n new LineGeometry(),\n new LineMaterial({\n color: this.options.color,\n linewidth: this.options.width,\n resolution: new THREE.Vector2(window.innerWidth, window.innerHeight),\n })\n );\n this.add(this.fatLine);\n }\n\n this.fatLine.geometry.setPositions(positions);\n (this.fatLine.material as LineMaterial).color.set(this.options.color);\n (this.fatLine.material as LineMaterial).linewidth = this.options.width ?? 5;\n (this.fatLine.material as LineMaterial).resolution.set(\n window.innerWidth,\n window.innerHeight\n );\n this.fatLine.visible = true;\n } else if (this.fatLine) {\n this.fatLine.visible = false;\n }\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.visible = !this.options.fatLines;\n }\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.polyline.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n\n this.updateRenderStyle(bufferData);\n\n this.isClosed = this.polyline.is_closed();\n }\n\n getOffset(\n distance: number,\n acuteThresholdDegrees: number = 35.0,\n bevel: boolean = true\n ): IOffsetResult {\n const kernel = this.polyline as unknown as {\n get_offset_serialized?: OffsetKernelFn;\n };\n if (typeof kernel.get_offset_serialized !== \"function\") {\n throw new Error(\n \"Offset API is not available in OGPolyline. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const serialized = kernel.get_offset_serialized(\n distance,\n acuteThresholdDegrees,\n bevel\n );\n\n const parsed = JSON.parse(serialized) as OffsetKernelOutput;\n return {\n points: parsed.points.map((point) => new Vector3(point.x, point.y, point.z)),\n beveledVertexIndices: parsed.beveled_vertex_indices ?? [],\n isClosed: Boolean(parsed.is_closed),\n };\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from \"three\";\nimport { OGAnalyticBrep } from \"../../../opengeometry/pkg/opengeometry\";\nimport type { AnalyticAccuracy, AnalyticFrame } from \"../shapes/analytic-solid\";\nimport { getUUID } from \"../utils/randomizer\";\nimport { GEOMETRY_DEFLECTION_SHARE } from \"../rendering/analytic-tessellation\";\n\nexport type AnalyticCurveOptions = {\n ogid?: string;\n frame?: AnalyticFrame;\n accuracy?: AnalyticAccuracy;\n startAngle: number;\n sweepAngle: number;\n deflection?: number;\n color?: THREE.ColorRepresentation;\n} & (\n | { kind: \"arc\"; radius: number }\n | { kind: \"ellipticalArc\"; majorRadius: number; minorRadius: number }\n);\n\nexport interface AnalyticCurveStats {\n requestedDeflection: number;\n achievedDeflection: number;\n segmentCount: number;\n revision: bigint;\n}\n\nexport class AnalyticCurve extends THREE.Group {\n readonly ogid: string;\n readonly line: THREE.LineSegments<THREE.BufferGeometry, THREE.LineBasicMaterial>;\n protected kernel: OGAnalyticBrep;\n private segmentEdges = new Uint32Array(0);\n private disposed = false;\n\n get color(): THREE.Color { return this.line.material.color; }\n set color(value: THREE.ColorRepresentation) {\n this.checkActive();\n this.line.material.color.set(value);\n this.line.material.needsUpdate = true;\n }\n\n constructor(options: AnalyticCurveOptions) {\n super();\n this.ogid = options.ogid ?? getUUID();\n const frame = options.frame ?? {\n origin: [0, 0, 0], x: [1, 0, 0], y: [0, 0, -1], z: [0, 1, 0],\n };\n const radius = options.kind === \"arc\" ? options.radius : options.majorRadius;\n const geometric = Math.max(1e-9, 2 * radius * 1e-8, ...frame.origin.map(value => Math.abs(value) * 64 * Number.EPSILON));\n const accuracy = options.accuracy ?? { geometric, intersection: geometric / 4, tessellation: 0.001, exchange: 0.00001 };\n this.kernel = createKernel(options, this.ogid, frame, accuracy);\n this.line = new THREE.LineSegments(new THREE.BufferGeometry(), new THREE.LineBasicMaterial({ color: options.color ?? 0x2563eb }));\n this.line.userData.ogid = this.ogid;\n this.add(this.line);\n try { this.retessellate(options.deflection ?? accuracy.tessellation); }\n catch (error) { this.dispose(); throw error; }\n }\n\n getBrepSerialized(): string {\n this.checkActive();\n return this.kernel.get_brep_serialized();\n }\n\n getBrepData(): Record<string, unknown> {\n return JSON.parse(this.getBrepSerialized()) as Record<string, unknown>;\n }\n\n protected replaceDefinition(options: AnalyticCurveOptions): AnalyticCurveStats {\n this.checkActive();\n const frame = options.frame ?? {\n origin: [0, 0, 0], x: [1, 0, 0], y: [0, 0, -1], z: [0, 1, 0],\n };\n const radius = options.kind === \"arc\" ? options.radius : options.majorRadius;\n const geometric = Math.max(1e-9, 2 * radius * 1e-8, ...frame.origin.map(value => Math.abs(value) * 64 * Number.EPSILON));\n const accuracy = options.accuracy ?? { geometric, intersection: geometric / 4, tessellation: 0.001, exchange: 0.00001 };\n const next = createKernel(options, this.ogid, frame, accuracy);\n const previous = this.kernel;\n this.kernel = next;\n try {\n const statistics = this.retessellate(options.deflection ?? accuracy.tessellation);\n if (options.color !== undefined) this.color = options.color;\n previous.free();\n return statistics;\n } catch (error) {\n this.kernel = previous;\n next.free();\n throw error;\n }\n }\n\n edgeIdForSegment(segment: number): number | undefined {\n if (!Number.isInteger(segment) || segment < 0) return undefined;\n return this.segmentEdges[segment];\n }\n\n retessellate(deflection: number): AnalyticCurveStats {\n this.checkActive();\n if (!Number.isFinite(deflection) || deflection <= 0) throw new Error(\"Deflection must be finite and positive\");\n const result = this.kernel.tessellate(deflection * GEOMETRY_DEFLECTION_SHARE);\n try {\n const bounds = this.kernel.get_bounds();\n const origin = [0, 1, 2].map(i => bounds[i] / 2 + bounds[i + 3] / 2);\n const positions = result.outline_positions();\n const packed = new Float32Array(positions.length);\n let encodingError = 0;\n for (let i = 0; i < positions.length; i += 3) {\n const errors = [0, 0, 0];\n for (let j = 0; j < 3; j++) {\n const local = positions[i + j] - origin[j]; packed[i + j] = local;\n errors[j] = Math.abs(local - packed[i + j]);\n }\n encodingError = Math.max(encodingError, Math.hypot(...errors));\n }\n if (!Number.isFinite(encodingError) || encodingError > deflection / 4) throw new Error(\"GPU coordinate precision cannot represent the requested deflection\");\n const edgeIds = result.outline_edge_ids();\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(packed, 3));\n geometry.computeBoundingBox(); geometry.computeBoundingSphere();\n const previous = this.line.geometry;\n this.line.geometry = geometry; this.line.position.set(origin[0], origin[1], origin[2]);\n this.segmentEdges = edgeIds; previous.dispose();\n return { requestedDeflection: deflection, achievedDeflection: result.achieved_deflection() + encodingError, segmentCount: edgeIds.length, revision: result.revision() };\n } finally { result.free(); }\n }\n\n dispose(): void {\n if (this.disposed) return;\n this.disposed = true;\n this.line.geometry.dispose(); this.line.material.dispose(); this.kernel.free();\n }\n private checkActive(): void { if (this.disposed) throw new Error(\"AnalyticCurve has been disposed\"); }\n}\n\nfunction createKernel(\n options: AnalyticCurveOptions,\n id: string,\n frame: AnalyticFrame,\n accuracy: AnalyticAccuracy,\n): OGAnalyticBrep {\n return OGAnalyticBrep.from_primitive(JSON.stringify({\n kind: options.kind === \"arc\" ? \"arc\" : \"elliptical_arc\", id, frame, accuracy,\n start_angle: options.startAngle, sweep_angle: options.sweepAngle,\n ...(options.kind === \"arc\"\n ? { radius: options.radius }\n : { major_radius: options.majorRadius, minor_radius: options.minorRadius }),\n }));\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\n\nimport { AnalyticCurve, type AnalyticCurveStats } from \"./analytic-curve\";\nimport type { AnalyticAccuracy, AnalyticFrame } from \"../shapes/analytic-solid\";\n\nexport interface IArcOptions {\n ogid?: string;\n center?: Vector3;\n radius?: number;\n startAngle?: number;\n sweepAngle?: number;\n deflection?: number;\n accuracy?: AnalyticAccuracy;\n color?: THREE.ColorRepresentation;\n}\n\nexport type ArcConfigUpdate = Partial<Omit<IArcOptions, \"ogid\">>;\n\ninterface NormalizedArcOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n startAngle: number;\n sweepAngle: number;\n deflection: number;\n accuracy?: AnalyticAccuracy;\n color: THREE.ColorRepresentation;\n}\n\n/** Authoritative circular edge with transient deflection tessellation. */\nexport class Arc extends AnalyticCurve {\n options: Readonly<NormalizedArcOptions>;\n\n constructor(options: IArcOptions = {}) {\n const normalized = normalizeOptions(options);\n super({\n kind: \"arc\",\n ogid: normalized.ogid,\n frame: curveFrame(normalized.center),\n accuracy: normalized.accuracy,\n radius: normalized.radius,\n startAngle: normalized.startAngle,\n sweepAngle: normalized.sweepAngle,\n deflection: normalized.deflection,\n color: normalized.color,\n });\n this.options = normalized;\n }\n\n getAnchor(): Vector3 {\n return this.options.center.clone();\n }\n\n getConfig(): Readonly<NormalizedArcOptions> {\n return this.options;\n }\n\n setConfig(update: ArcConfigUpdate): AnalyticCurveStats {\n const next = normalizeOptions({ ...this.options, ...update, ogid: this.ogid });\n const statistics = this.replaceDefinition({\n kind: \"arc\",\n ogid: this.ogid,\n frame: curveFrame(next.center),\n accuracy: next.accuracy,\n radius: next.radius,\n startAngle: next.startAngle,\n sweepAngle: next.sweepAngle,\n deflection: next.deflection,\n color: next.color,\n });\n this.options = next;\n return statistics;\n }\n\n getBrep(): Record<string, unknown> {\n return this.getBrepData();\n }\n\n retessellate(deflection: number): AnalyticCurveStats {\n return super.retessellate(deflection);\n }\n}\n\nfunction normalizeOptions(options: IArcOptions): NormalizedArcOptions {\n return {\n ogid: options.ogid,\n center: options.center ?? new Vector3(0, 0, 0),\n radius: options.radius ?? 1,\n startAngle: options.startAngle ?? 0,\n sweepAngle: options.sweepAngle ?? Math.PI * 2,\n deflection: options.deflection ?? 0.01,\n accuracy: options.accuracy,\n color: options.color ?? 0x00ff00,\n };\n}\n\nfunction curveFrame(center: Vector3): AnalyticFrame {\n return {\n origin: [center.x, center.y, center.z],\n x: [1, 0, 0],\n y: [0, 0, -1],\n z: [0, 1, 0],\n };\n}\n","import { OGRectangle, Vector3 } from \"./../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { getUUID } from \"../utils/randomizer\";\nimport { Line2 } from 'three/examples/jsm/lines/Line2.js';\nimport { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry.js';\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for a rectangle profile wrapper.\n */\nexport interface IRectangleOptions {\n ogid?: string;\n center: Vector3;\n width: number;\n breadth: number;\n color: number;\n fatLines?: boolean;\n lineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Rectangle`.\n */\nexport interface RectanglePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Rectangle.setConfig(...)`.\n */\nexport type RectangleConfigUpdate = Partial<\n Omit<IRectangleOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Rectangle` placement updates.\n */\nexport type RectanglePlacementUpdate = RectanglePlacementOptions;\n\n/**\n * Offset result returned by `Rectangle.offset(...)`.\n */\nexport interface IRectangleOffsetResult {\n points: Vector3[];\n beveledVertexIndices: number[];\n isClosed: boolean;\n}\n\ntype OffsetKernelOutput = {\n points: Array<{ x: number; y: number; z: number }>;\n beveled_vertex_indices: number[];\n is_closed: boolean;\n};\n\n\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n\n\n/**\n * Rectangle wrapper backed by the kernel OGRectangle primitive.\n */\nexport class Rectangle extends THREE.Line {\n ogid: string;\n options: IRectangleOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n breadth: 1,\n color: 0x00ff00,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private polyLineRectangle: OGRectangle;\n private fatLine: Line2 | null = null;\n\n // set width(width: number) {\n // this.options.width = width;\n // this.polyLineRectangle.update_width(width);\n // this.generateGeometry();\n // }\n\n // set breadth(breadth: number) {\n // this.options.breadth = breadth;\n // this.polyLineRectangle.update_breadth(breadth);\n // this.generateGeometry();\n // }\n\n // set center(center: Vector3) {\n // this.options.center = center;\n // this.polyLineRectangle.update_center(center);\n // this.generateGeometry();\n // }\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n if (this.fatLine && this.fatLine.material instanceof LineMaterial) {\n this.fatLine.material.color.set(color);\n }\n }\n\n // set lineWidth(lineWidth: number) {\n // this.options.lineWidth = lineWidth;\n // if (this.material instanceof THREE.LineBasicMaterial) {\n // (this.material as THREE.LineBasicMaterial).linewidth = lineWidth;\n // }\n // }\n\n // FINAL: This flow should be used for other primitives\n constructor(options?: IRectangleOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.polyLineRectangle = new OGRectangle(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n width: this.options.width,\n breadth: this.options.breadth,\n color: this.options.color,\n fatLines: this.options.fatLines,\n lineWidth: this.options.lineWidth,\n });\n \n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Rectangle\");\n }\n }\n\n setConfig(options: RectangleConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"width\" in options ||\n \"breadth\" in options;\n const renderChanged =\n \"color\" in options ||\n \"fatLines\" in options ||\n \"lineWidth\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.polyLineRectangle.set_config(\n nextOptions.center.clone(),\n nextOptions.width,\n nextOptions.breadth,\n );\n this.generateGeometry();\n return;\n }\n\n if (renderChanged) {\n this.updateRenderStyle();\n }\n }\n\n getAnchor() {\n const anchor = this.polyLineRectangle.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: RectanglePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.polyLineRectangle.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getConfig() {\n return this.options;\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"rectangle\", \"profile\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(\n this.polyLineRectangle.get_local_brep_serialized(),\n {\n id,\n placement: this.getPlacement(),\n }\n );\n }\n\n private getCurrentPositions() {\n const attribute = this.geometry.getAttribute(\"position\");\n if (!attribute || attribute.itemSize !== 3) {\n return [];\n }\n\n const positions = [];\n for (let index = 0; index < attribute.count; index += 1) {\n positions.push(\n attribute.getX(index),\n attribute.getY(index),\n attribute.getZ(index)\n );\n }\n\n return positions;\n }\n\n private updateRenderStyle(bufferData?: number[]) {\n const positions = bufferData ?? this.getCurrentPositions();\n\n if (this.options.fatLines) {\n if (!this.fatLine) {\n this.fatLine = new Line2(\n new LineGeometry(),\n new LineMaterial({\n color: this.options.color,\n linewidth: this.options.lineWidth,\n resolution: new THREE.Vector2(window.innerWidth, window.innerHeight),\n })\n );\n this.add(this.fatLine);\n }\n\n this.fatLine.geometry.setPositions(positions);\n (this.fatLine.material as LineMaterial).color.set(this.options.color);\n (this.fatLine.material as LineMaterial).linewidth = this.options.lineWidth ?? 1;\n (this.fatLine.material as LineMaterial).resolution.set(\n window.innerWidth,\n window.innerHeight\n );\n this.fatLine.visible = true;\n } else if (this.fatLine) {\n this.fatLine.visible = false;\n }\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.visible = !this.options.fatLines;\n }\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.polyLineRectangle.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n\n this.updateRenderStyle(bufferData);\n }\n\n getBrep() {\n const brepData = this.polyLineRectangle.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for Rectangle\");\n }\n return JSON.parse(brepData);\n }\n\n getOffset(\n distance: number,\n acuteThresholdDegrees: number = 35.0,\n bevel: boolean = true\n ): IRectangleOffsetResult {\n const kernel = this.polyLineRectangle as unknown as {\n get_offset_serialized?: OffsetKernelFn;\n };\n if (typeof kernel.get_offset_serialized !== \"function\") {\n throw new Error(\n \"Offset API is not available in OGRectangle. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const serialized = kernel.get_offset_serialized(\n distance,\n acuteThresholdDegrees,\n bevel\n );\n const parsed = JSON.parse(serialized) as OffsetKernelOutput;\n\n return {\n points: parsed.points.map((point) => new Vector3(point.x, point.y, point.z)),\n beveledVertexIndices: parsed.beveled_vertex_indices ?? [],\n isClosed: Boolean(parsed.is_closed),\n };\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from \"three\";\nimport { OGCurve, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for a control-point-driven curve.\n */\nexport interface ICurveOptions {\n ogid?: string;\n controlPoints: Vector3[];\n color: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Curve`.\n */\nexport interface CurvePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Curve.setConfig(...)`.\n */\nexport type CurveConfigUpdate = Partial<\n Omit<ICurveOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Curve` placement updates.\n */\nexport type CurvePlacementUpdate = CurvePlacementOptions;\n\n/**\n * Offset result returned by `Curve.offset(...)`.\n */\nexport interface ICurveOffsetResult {\n points: Vector3[];\n beveledVertexIndices: number[];\n isClosed: boolean;\n}\n\ntype OffsetKernelOutput = {\n points: Array<{ x: number; y: number; z: number }>;\n beveled_vertex_indices: number[];\n is_closed: boolean;\n};\n\n\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n\n\n/**\n * Curve wrapper backed by the kernel OGCurve primitive.\n */\nexport class Curve extends THREE.Line {\n ogid: string;\n options: ICurveOptions = {\n controlPoints: [],\n color: 0x00aa55,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private curve: OGCurve;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: ICurveOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n this.curve = new OGCurve(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n controlPoints: this.options.controlPoints.map((point) => point.clone()),\n color: this.options.color,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n setConfig(options: CurveConfigUpdate) {\n const nextOptions = { ...this.options, ...options };\n const geometryChanged = \"controlPoints\" in options;\n const colorChanged = \"color\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.curve.set_config(\n nextOptions.controlPoints.map((point) => point.clone())\n );\n this.generateGeometry();\n return;\n }\n\n if (colorChanged && this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.curve.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.curve.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.curve.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: CurvePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.curve.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"curve\", \"curve\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.curve.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.curve.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n }\n\n getOffset(\n distance: number,\n acuteThresholdDegrees: number = 35.0,\n bevel: boolean = true\n ): ICurveOffsetResult {\n const kernel = this.curve as unknown as {\n get_offset_serialized?: OffsetKernelFn;\n };\n if (typeof kernel.get_offset_serialized !== \"function\") {\n throw new Error(\n \"Offset API is not available in OGCurve. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const serialized = kernel.get_offset_serialized(\n distance,\n acuteThresholdDegrees,\n bevel\n );\n const parsed = JSON.parse(serialized) as OffsetKernelOutput;\n\n return {\n points: parsed.points.map((point) => new Vector3(point.x, point.y, point.z)),\n beveledVertexIndices: parsed.beveled_vertex_indices ?? [],\n isClosed: Boolean(parsed.is_closed),\n };\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\n\nimport { AnalyticCurve, type AnalyticCurveStats } from \"./analytic-curve\";\nimport type { AnalyticAccuracy, AnalyticFrame } from \"../shapes/analytic-solid\";\n\nexport interface IEllipticalArcOptions {\n ogid?: string;\n center?: Vector3;\n majorRadius?: number;\n minorRadius?: number;\n startAngle?: number;\n sweepAngle?: number;\n deflection?: number;\n accuracy?: AnalyticAccuracy;\n color?: THREE.ColorRepresentation;\n}\n\nexport type EllipticalArcConfigUpdate = Partial<Omit<IEllipticalArcOptions, \"ogid\">>;\n\ninterface NormalizedEllipticalArcOptions {\n ogid?: string;\n center: Vector3;\n majorRadius: number;\n minorRadius: number;\n startAngle: number;\n sweepAngle: number;\n deflection: number;\n accuracy?: AnalyticAccuracy;\n color: THREE.ColorRepresentation;\n}\n\n/** Authoritative elliptical edge with transient deflection tessellation. */\nexport class EllipticalArc extends AnalyticCurve {\n options: Readonly<NormalizedEllipticalArcOptions>;\n\n constructor(options: IEllipticalArcOptions = {}) {\n const normalized = normalizeOptions(options);\n super({\n kind: \"ellipticalArc\",\n ogid: normalized.ogid,\n frame: curveFrame(normalized.center),\n accuracy: normalized.accuracy,\n majorRadius: normalized.majorRadius,\n minorRadius: normalized.minorRadius,\n startAngle: normalized.startAngle,\n sweepAngle: normalized.sweepAngle,\n deflection: normalized.deflection,\n color: normalized.color,\n });\n this.options = normalized;\n }\n\n getAnchor(): Vector3 {\n return this.options.center.clone();\n }\n\n getConfig(): Readonly<NormalizedEllipticalArcOptions> {\n return this.options;\n }\n\n setConfig(update: EllipticalArcConfigUpdate): AnalyticCurveStats {\n const next = normalizeOptions({ ...this.options, ...update, ogid: this.ogid });\n const statistics = this.replaceDefinition({\n kind: \"ellipticalArc\",\n ogid: this.ogid,\n frame: curveFrame(next.center),\n accuracy: next.accuracy,\n majorRadius: next.majorRadius,\n minorRadius: next.minorRadius,\n startAngle: next.startAngle,\n sweepAngle: next.sweepAngle,\n deflection: next.deflection,\n color: next.color,\n });\n this.options = next;\n return statistics;\n }\n\n getBrep(): Record<string, unknown> {\n return this.getBrepData();\n }\n\n retessellate(deflection: number): AnalyticCurveStats {\n return super.retessellate(deflection);\n }\n}\n\nfunction normalizeOptions(options: IEllipticalArcOptions): NormalizedEllipticalArcOptions {\n return {\n ogid: options.ogid,\n center: options.center ?? new Vector3(0, 0, 0),\n majorRadius: options.majorRadius ?? 1,\n minorRadius: options.minorRadius ?? 0.5,\n startAngle: options.startAngle ?? 0,\n sweepAngle: options.sweepAngle ?? Math.PI * 2,\n deflection: options.deflection ?? 0.01,\n accuracy: options.accuracy,\n color: options.color ?? 0x00ff00,\n };\n}\n\nfunction curveFrame(center: Vector3): AnalyticFrame {\n return {\n origin: [center.x, center.y, center.z],\n x: [1, 0, 0],\n y: [0, 0, -1],\n z: [0, 1, 0],\n };\n}\n","import * as THREE from \"three\";\nimport { LineMaterial } from \"three/examples/jsm/lines/LineMaterial.js\";\nimport { LineSegments2 } from \"three/examples/jsm/lines/LineSegments2.js\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\n\n/**\n * Outline mesh variants used by shape wrappers.\n */\nexport type ShapeOutlineMesh = THREE.LineSegments | LineSegments2;\n\n/**\n * Options for building a shape outline mesh.\n */\nexport interface ShapeOutlineMeshOptions {\n positions: number[];\n color?: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n}\n\nconst DEFAULT_OUTLINE_COLOR = 0x000000;\nconst DEFAULT_OUTLINE_WIDTH = 1;\n\nfunction getOutlineResolution() {\n if (typeof window === \"undefined\") {\n return new THREE.Vector2(1, 1);\n }\n return new THREE.Vector2(window.innerWidth, window.innerHeight);\n}\n\n/**\n * Clamps outline width inputs to the supported positive finite range.\n */\nexport function sanitizeOutlineWidth(width?: number) {\n if (!Number.isFinite(width) || typeof width !== \"number\" || width <= 0) {\n return DEFAULT_OUTLINE_WIDTH;\n }\n return width;\n}\n\n/**\n * Creates either a thin or fat outline mesh from line segment positions.\n */\nexport function createShapeOutlineMesh({\n positions,\n color = DEFAULT_OUTLINE_COLOR,\n fatOutlines = false,\n outlineWidth = DEFAULT_OUTLINE_WIDTH,\n}: ShapeOutlineMeshOptions): ShapeOutlineMesh {\n if (fatOutlines) {\n const fatGeometry = new LineSegmentsGeometry();\n fatGeometry.setPositions(positions);\n const fatMaterial = new LineMaterial({\n color,\n linewidth: sanitizeOutlineWidth(outlineWidth),\n resolution: getOutlineResolution(),\n });\n const fatMesh = new LineSegments2(fatGeometry, fatMaterial);\n fatMesh.computeLineDistances();\n return fatMesh;\n }\n\n const outlineGeometry = new THREE.BufferGeometry();\n outlineGeometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n\n const outlineMaterial = new THREE.LineBasicMaterial({ color });\n return new THREE.LineSegments(outlineGeometry, outlineMaterial);\n}\n\n/**\n * Disposes the geometry and material owned by an outline mesh.\n */\nexport function disposeShapeOutlineMesh(mesh: ShapeOutlineMesh | null) {\n if (!mesh) {\n return;\n }\n\n mesh.geometry.dispose();\n if (Array.isArray(mesh.material)) {\n mesh.material.forEach((material) => material.dispose());\n return;\n }\n mesh.material.dispose();\n}\n\n/**\n * Updates the color of an existing outline mesh in place.\n */\nexport function setShapeOutlineColor(mesh: ShapeOutlineMesh | null, color: number) {\n if (!mesh) {\n return;\n }\n\n if (mesh.material instanceof THREE.LineBasicMaterial) {\n mesh.material.color.set(color);\n return;\n }\n\n if (mesh.material instanceof LineMaterial) {\n mesh.material.color.set(color);\n }\n}\n\n/**\n * Reads the current outline color, falling back when no outline exists.\n */\nexport function getShapeOutlineColor(\n mesh: ShapeOutlineMesh | null,\n fallback: number = DEFAULT_OUTLINE_COLOR\n) {\n if (!mesh) {\n return fallback;\n }\n\n if (mesh.material instanceof THREE.LineBasicMaterial) {\n return mesh.material.color.getHex();\n }\n\n if (mesh.material instanceof LineMaterial) {\n return mesh.material.color.getHex();\n }\n\n return fallback;\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\n\nimport type { FreeformSource } from \"../freeform\";\n\n\ntype KernelExtrudeBrepFace = (...args: [string, number]) => string;\n\n\n/**\n * Sources accepted by the BRep-face extrusion helper.\n */\nexport type ExtrudeBrepSource = FreeformSource;\n\n/**\n * Extrudes the first face or wire in a local BRep payload into a closed solid BRep.\n */\nexport function extrudeBrepFace(\n source: ExtrudeBrepSource,\n height: number\n): string {\n const extrudeExport = (OGKernel as Record<string, unknown>).extrudeBrepFace;\n if (typeof extrudeExport !== \"function\") {\n throw new Error(\n \"extrudeBrepFace is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const kernelFunction = extrudeExport as KernelExtrudeBrepFace;\n return kernelFunction(resolveLocalBrepSerialized(source), height);\n}\n\nfunction resolveLocalBrepSerialized(source: ExtrudeBrepSource): string {\n if (typeof source === \"string\") {\n return source;\n }\n\n if (typeof source.getLocalBrepSerialized === \"function\") {\n return source.getLocalBrepSerialized();\n }\n\n if (typeof source.getLocalBrepData === \"function\") {\n return serializeBrepLike(source.getLocalBrepData());\n }\n\n if (typeof source.getBrepSerialized === \"function\") {\n return source.getBrepSerialized();\n }\n\n if (typeof source.getBrepData === \"function\") {\n return serializeBrepLike(source.getBrepData());\n }\n\n if (typeof source.getBrep === \"function\") {\n return serializeBrepLike(source.getBrep());\n }\n\n return JSON.stringify(source);\n}\n\nfunction serializeBrepLike(value: unknown): string {\n return typeof value === \"string\" ? value : JSON.stringify(value);\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\n\nimport { clonePlacement, toObjectTransformation } from \"../editor\";\nimport { createFreeformGeometry, type FreeformGeometry } from \"../freeform\";\nimport type { FreeformSource, ObjectTransformation } from \"../freeform/types\";\nimport { extrudeBrepFace } from \"../operations/extrude\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n getShapeOutlineColor,\n sanitizeOutlineWidth,\n setShapeOutlineColor,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\n\n/**\n * Construction options for a generic BRep-backed solid.\n */\nexport interface ISolidOptions {\n ogid?: string;\n brep: FreeformSource;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n anchor?: Vector3;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Solid`.\n */\nexport interface SolidPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Additional options accepted when creating a `Solid` through face extrusion.\n */\nexport interface ExtrudeSolidOptions\n extends Omit<ISolidOptions, \"brep\" | \"ogid\" | \"anchor\" | \"translation\" | \"rotation\" | \"scale\"> {\n ogid?: string;\n anchor?: Vector3;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Generic renderable BRep-backed solid used for extrusion outputs and other\n * kernel results that are not dedicated parametric shapes.\n */\nexport class Solid extends THREE.Mesh {\n ogid: string;\n options: ISolidOptions = {\n brep: \"{}\",\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n anchor: new Vector3(0, 0, 0),\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private solid: FreeformGeometry;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n private _outlineColor = 0x000000;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n get color() {\n return this.options.color;\n }\n\n constructor(options: ISolidOptions) {\n super();\n\n this.ogid = options.ogid ?? getUUID();\n this.options = {\n ...this.options,\n ...options,\n ogid: this.ogid,\n anchor: cloneVector(options.anchor, [0, 0, 0]),\n translation: cloneVector(options.translation, [0, 0, 0]),\n rotation: cloneVector(options.rotation, [0, 0, 0]),\n scale: cloneVector(options.scale, [1, 1, 1]),\n };\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n this.solid = createFreeformGeometry(this.options.brep, {\n id: this.ogid,\n placement: this.getPlacementTransform(),\n });\n this.generateGeometry();\n }\n\n /**\n * Extrudes a face-like BRep source and wraps the result as a renderable solid.\n *\n * Prefer `polygon.extrude(height)` when the source is already a `Polygon`.\n */\n static extrude(\n source: FreeformSource,\n height: number,\n options: ExtrudeSolidOptions\n ) {\n return new Solid({\n ...options,\n brep: extrudeBrepFace(source, height),\n });\n }\n\n /**\n * Returns the current placement values as cloned vectors.\n */\n getPlacement() {\n return clonePlacement(this.getPlacementTransform());\n }\n\n /**\n * Applies translation, rotation, and scale updates to the wrapped BRep.\n */\n setPlacement(placement: SolidPlacementOptions) {\n this.options.translation = cloneVector(\n placement.translation ?? this.options.translation,\n [0, 0, 0]\n );\n this.options.rotation = cloneVector(\n placement.rotation ?? this.options.rotation,\n [0, 0, 0]\n );\n this.options.scale = cloneVector(\n placement.scale ?? this.options.scale,\n [1, 1, 1]\n );\n\n this.solid.setPlacement(this.getPlacementTransform());\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getAnchor() {\n return this.getPlacementTransform().anchor.clone();\n }\n\n setAnchor(anchor: Vector3) {\n this.options.anchor = anchor.clone();\n this.solid.setPlacement(this.getPlacementTransform());\n this.generateGeometry();\n }\n\n /**\n * Solid is always convertible back to the freeform editing wrapper.\n */\n canConvertToFreeform() {\n return true;\n }\n\n /**\n * Returns a freeform wrapper for direct editing of this solid's BRep.\n */\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.getLocalBrepSerialized(), {\n id,\n placement: this.getPlacementTransform(),\n });\n }\n\n /**\n * Returns the world-space serialized BRep payload for this solid.\n */\n getBrepSerialized() {\n return this.solid.getBrepSerialized();\n }\n\n /**\n * Returns the local-space serialized BRep payload for this solid.\n */\n getLocalBrepSerialized() {\n return this.solid.getLocalBrepSerialized();\n }\n\n /**\n * Returns the parsed world-space BRep object for this solid.\n */\n getBrepData() {\n const brepSerialized = this.getBrepSerialized();\n if (!brepSerialized) {\n throw new Error(\"Brep data is not available for this solid.\");\n }\n return JSON.parse(brepSerialized);\n }\n\n /**\n * Rebuilds the visible mesh and outline from the current freeform geometry.\n */\n generateGeometry() {\n const bufferData = this.solid.getGeometryBuffer();\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n let material: THREE.MeshStandardMaterial;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n material = this.material;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n transparent: false,\n opacity: 1,\n depthWrite: true,\n side: THREE.FrontSide,\n });\n this.material = material;\n }\n\n material.color.set(this.options.color);\n material.transparent = false;\n material.opacity = 1;\n material.depthWrite = true;\n material.side = THREE.FrontSide;\n material.needsUpdate = true;\n\n if (bufferData.length > 0) {\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n } else {\n this.geometry.deleteAttribute(\"normal\");\n this.geometry.boundingBox = null;\n this.geometry.boundingSphere = null;\n }\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = this.solid.getOutlineGeometryBuffer();\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n set outlineColor(color: number) {\n this._outlineColor = color;\n setShapeOutlineColor(this.#outlineMesh, color);\n }\n\n get outlineColor() {\n return getShapeOutlineColor(this.#outlineMesh, this._outlineColor);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n this.#outlineMesh = createShapeOutlineMesh({\n positions: this.solid.getOutlineGeometryBuffer(),\n color: this._outlineColor,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n private getPlacementTransform(): ObjectTransformation {\n return toObjectTransformation({\n anchor: cloneVector(this.options.anchor, [0, 0, 0]),\n translation: cloneVector(this.options.translation, [0, 0, 0]),\n rotation: cloneVector(this.options.rotation, [0, 0, 0]),\n scale: cloneVector(this.options.scale, [1, 1, 1]),\n });\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const attribute = geometry.getAttribute(\"position\");\n if (\n !(attribute instanceof THREE.BufferAttribute) ||\n attribute.itemSize !== 3 ||\n attribute.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n (attribute.array as Float32Array).set(positions);\n attribute.needsUpdate = true;\n }\n}\n\nfunction cloneVector(\n vector: Vector3 | undefined,\n fallback: [number, number, number]\n): Vector3 {\n return vector?.clone() ?? new Vector3(...fallback);\n}\n","import * as THREE from \"three\";\n\nimport {\n AnalyticSolid,\n type AnalyticPolygonLoftAlignment,\n} from \"../shapes/analytic-solid\";\n\nexport type PolygonLoftPoint = readonly [number, number, number];\n\nexport interface PolygonLoftOptions {\n alignment?: AnalyticPolygonLoftAlignment;\n deflection?: number;\n color?: THREE.ColorRepresentation;\n}\n\n/**\n * Creates a capped ruled solid between two planar polygon sections.\n * Sections must have equal vertex counts and produce planar side faces.\n */\nexport function loftPolygonSections(\n sections: readonly [readonly PolygonLoftPoint[], readonly PolygonLoftPoint[]],\n options: PolygonLoftOptions = {},\n): AnalyticSolid {\n const [lower, upper] = sections;\n return new AnalyticSolid({\n kind: \"polygonLoft\",\n lower: copySection(lower, \"lower\"),\n upper: copySection(upper, \"upper\"),\n alignment: options.alignment ?? \"auto\",\n deflection: options.deflection,\n color: options.color,\n });\n}\n\nfunction copySection(\n section: readonly PolygonLoftPoint[],\n label: string,\n): [number, number, number][] {\n if (section.length < 3) throw new Error(`${label} loft section requires at least three points`);\n return section.map((point) => {\n if (point.length !== 3 || !point.every(Number.isFinite)) {\n throw new Error(`${label} loft section points must contain three finite coordinates`);\n }\n return [point[0], point[1], point[2]];\n });\n}\n","import * as THREE from \"three\";\nimport { OGPolygon, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n getShapeOutlineColor,\n sanitizeOutlineWidth,\n setShapeOutlineColor,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { Solid } from \"./solid\";\nimport { extrudeBrepFace } from \"../operations/extrude\";\nimport {\n loftPolygonSections,\n type PolygonLoftOptions,\n type PolygonLoftPoint,\n} from \"../operations/loft\";\n\n/**\n * Construction options for a planar polygon.\n */\nexport interface IPolygonOptions {\n ogid?: string;\n vertices: Vector3[];\n holes?: Vector3[][];\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport interface PolygonPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial polygon config updates that regenerate the profile when geometry changes.\n */\nexport type PolygonConfigUpdate = Partial<\n Omit<IPolygonOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Placement updates accepted by `Polygon`.\n */\nexport type PolygonPlacementUpdate = PolygonPlacementOptions;\n\n/**\n * Planar polygon mesh with support for holes, booleans, and extrusion to `Solid`.\n */\nexport class Polygon extends THREE.Mesh {\n ogid: string;\n options: IPolygonOptions = {\n vertices: [],\n holes: [],\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n polygon: OGPolygon;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n private _outlineColor = 0x000000;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshBasicMaterial) {\n this.material.color.set(color);\n }\n }\n\n get color() {\n return this.options.color;\n }\n\n constructor(options?: IPolygonOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.polygon = new OGPolygon(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n vertices: this.options.vertices.map((vertex) => vertex.clone()),\n holes: (this.options.holes ?? []).map((hole) =>\n hole.map((vertex) => vertex.clone())\n ),\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Polygon\");\n }\n }\n\n setConfig(options: PolygonConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"vertices\" in options ||\n \"holes\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n this.polygon.set_config(this.options.vertices.map((vertex) => vertex.clone()));\n (this.options.holes ?? []).forEach((hole) => {\n this.polygon.add_holes(hole.map((vertex) => vertex.clone()));\n });\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.polygon.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.polygon.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.polygon.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: PolygonPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.polygon.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n /**\n * Returns the editing capability payload advertised by parametric wrappers.\n */\n getEditCapabilities() {\n return createParametricEditCapabilities(\"polygon\", \"profile\");\n }\n\n /**\n * Polygon always supports conversion into the freeform editing wrapper.\n */\n canConvertToFreeform() {\n return true;\n }\n\n /**\n * Returns a freeform wrapper for direct BRep editing of this polygon.\n */\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.polygon.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.disposeResources();\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.polygon.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.side = THREE.DoubleSide;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshBasicMaterial({\n color: this.options.color,\n side: THREE.DoubleSide,\n });\n }\n\n if (bufferData.length > 0) {\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n } else {\n this.geometry.deleteAttribute(\"normal\");\n this.geometry.boundingBox = null;\n this.geometry.boundingSphere = null;\n }\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.polygon.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n addVertices(vertices: Vector3[]) {\n if (!this.polygon) return;\n this.setConfig({\n vertices: vertices.map((vertex) => vertex.clone()),\n });\n }\n\n addHole(holeVertices: Vector3[]) {\n if (!this.polygon) return;\n this.options.holes = [\n ...(this.options.holes ?? []),\n holeVertices.map((vertex) => vertex.clone()),\n ];\n this.setConfig({\n holes: (this.options.holes ?? []).map((hole) =>\n hole.map((vertex) => vertex.clone())\n ),\n });\n }\n\n /**\n * Builds a kernel-backed `Solid` by extruding this polygon face by `height`.\n *\n * This is the recommended public path when a browser CAD or AEC workflow\n * starts from a planar profile and needs a boolean-ready solid.\n */\n extrude(height: number) {\n const config = this.getConfig();\n const placement = this.getPlacement();\n const solid = new Solid({\n brep: extrudeBrepFace(this.polygon.get_local_brep_serialized(), height),\n color: config.color,\n fatOutlines: config.fatOutlines,\n outlineWidth: config.outlineWidth,\n anchor: this.getAnchor(),\n translation: placement.translation.clone(),\n rotation: placement.rotation.clone(),\n scale: placement.scale.clone(),\n });\n\n solid.outline = this.outline;\n solid.outlineColor = this.outlineColor;\n return solid;\n }\n\n /** Builds a capped analytic ruled loft from this profile to `other`. */\n loftTo(other: Polygon, options: PolygonLoftOptions = {}) {\n if (!(other instanceof Polygon)) throw new Error(\"Polygon.loftTo requires another Polygon\");\n if ((this.options.holes?.length ?? 0) > 0 || (other.options.holes?.length ?? 0) > 0) {\n throw new Error(\"Polygon loft holes are not supported yet\");\n }\n return loftPolygonSections(\n [this.worldProfilePoints(), other.worldProfilePoints()],\n { color: this.options.color, ...options },\n );\n }\n\n /**\n * Returns the serialized BRep payload for this polygon.\n */\n getBrepData() {\n if (!this.polygon) return null;\n const brepData = this.polygon.get_brep_serialized();\n return brepData;\n }\n\n private worldProfilePoints(): PolygonLoftPoint[] {\n const anchor = this.getAnchor();\n const placement = this.getPlacement();\n const matrix = new THREE.Matrix4().compose(\n new THREE.Vector3(\n anchor.x + placement.translation.x,\n anchor.y + placement.translation.y,\n anchor.z + placement.translation.z,\n ),\n new THREE.Quaternion().setFromEuler(new THREE.Euler(\n placement.rotation.x,\n placement.rotation.y,\n placement.rotation.z,\n \"XYZ\",\n )),\n new THREE.Vector3(placement.scale.x, placement.scale.y, placement.scale.z),\n );\n return this.options.vertices.map((point) => {\n const transformed = new THREE.Vector3(\n point.x - anchor.x,\n point.y - anchor.y,\n point.z - anchor.z,\n ).applyMatrix4(matrix);\n return [transformed.x, transformed.y, transformed.z] as const;\n });\n }\n\n set outlineColor(color: number) {\n this._outlineColor = color;\n setShapeOutlineColor(this.#outlineMesh, color);\n }\n\n get outlineColor() {\n return getShapeOutlineColor(this.#outlineMesh, this._outlineColor);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.polygon.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\n color: this._outlineColor,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n disposeGeometryMaterial() {\n this.disposeResources();\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n dispose() {\n this.disposeResources();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n\n private disposeResources() {\n if (this.geometry) {\n this.geometry.dispose();\n }\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else if (this.material instanceof THREE.Material) {\n this.material.dispose();\n }\n this.clearOutlineMesh();\n }\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\n\nimport {\n AnalyticSolid,\n type AnalyticAccuracy,\n type AnalyticPrimitiveOptions,\n} from \"./analytic-solid\";\n\nexport interface ICylinderOptions {\n ogid?: string;\n center?: Vector3;\n radius?: number;\n height?: number;\n startAngle?: number;\n sweepAngle?: number;\n deflection?: number;\n accuracy?: AnalyticAccuracy;\n color?: THREE.ColorRepresentation;\n}\n\ninterface NormalizedCylinderOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n height: number;\n startAngle: number;\n sweepAngle: number;\n deflection: number;\n accuracy?: AnalyticAccuracy;\n color: THREE.ColorRepresentation;\n}\n\n/** Authoritative Plane/Cylinder BRep with transient deflection tessellation. */\nexport class Cylinder extends AnalyticSolid {\n readonly options: Readonly<NormalizedCylinderOptions>;\n\n constructor(options: ICylinderOptions = {}) {\n const normalized = normalizeOptions(options);\n super(primitiveOptions(normalized));\n this.options = normalized;\n this.position.set(normalized.center.x, normalized.center.y, normalized.center.z);\n }\n\n get radius(): number { return this.options.radius; }\n get height(): number { return this.options.height; }\n get startAngle(): number { return this.options.startAngle; }\n get sweepAngle(): number { return this.options.sweepAngle; }\n\n getAnchor(): THREE.Vector3 {\n return this.position.clone();\n }\n}\n\nfunction normalizeOptions(options: ICylinderOptions): NormalizedCylinderOptions {\n return {\n ogid: options.ogid,\n center: options.center ?? new Vector3(0, 0, 0),\n radius: options.radius ?? 1,\n height: options.height ?? 1,\n startAngle: options.startAngle ?? 0,\n sweepAngle: options.sweepAngle ?? Math.PI * 2,\n deflection: options.deflection ?? 0.01,\n accuracy: options.accuracy,\n color: options.color ?? 0x00ff00,\n };\n}\n\nfunction primitiveOptions(options: NormalizedCylinderOptions): AnalyticPrimitiveOptions {\n const frame = {\n origin: [0, -options.height / 2, 0] as [number, number, number],\n x: [1, 0, 0] as [number, number, number],\n y: [0, 0, -1] as [number, number, number],\n z: [0, 1, 0] as [number, number, number],\n };\n const common = {\n ogid: options.ogid,\n frame,\n accuracy: options.accuracy,\n deflection: options.deflection,\n color: options.color,\n radius: options.radius,\n height: options.height,\n };\n return Math.abs(Math.abs(options.sweepAngle) - Math.PI * 2) <= 64 * Number.EPSILON\n ? { ...common, kind: \"cylinder\" }\n : {\n ...common,\n kind: \"cylinderSector\",\n startAngle: options.startAngle,\n sweepAngle: options.sweepAngle,\n };\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\n\nimport { createParametricEditCapabilities } from \"../editor\";\nimport {\n AnalyticSolid,\n type AnalyticAccuracy,\n type AnalyticPrimitiveOptions,\n} from \"./analytic-solid\";\n\nexport interface CuboidPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport interface ICuboidOptions extends CuboidPlacementOptions {\n ogid?: string;\n center?: Vector3;\n width?: number;\n height?: number;\n depth?: number;\n color?: THREE.ColorRepresentation;\n deflection?: number;\n accuracy?: AnalyticAccuracy;\n}\n\nexport type CuboidConfigUpdate = Partial<\n Omit<ICuboidOptions, \"ogid\" | \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type CuboidPlacementUpdate = CuboidPlacementOptions;\n\ninterface NormalizedCuboidOptions {\n ogid?: string;\n center: Vector3;\n width: number;\n height: number;\n depth: number;\n color: THREE.ColorRepresentation;\n deflection: number;\n accuracy?: AnalyticAccuracy;\n translation: Vector3;\n rotation: Vector3;\n scale: Vector3;\n}\n\n/** Authoritative six-plane BRep with transient tessellation. */\nexport class Cuboid extends AnalyticSolid {\n options: NormalizedCuboidOptions;\n\n constructor(options: ICuboidOptions = {}) {\n const normalized = normalizeOptions(options);\n super(primitiveOptions(normalized));\n this.options = normalized;\n this.applyPlacement();\n }\n\n set width(value: number) { this.setConfig({ width: value }); }\n get width(): number { return this.options.width; }\n set height(value: number) { this.setConfig({ height: value }); }\n get height(): number { return this.options.height; }\n set depth(value: number) { this.setConfig({ depth: value }); }\n get depth(): number { return this.options.depth; }\n override set color(value: THREE.ColorRepresentation) {\n this.options.color = value;\n this.surface.material.color.set(value);\n this.surface.material.needsUpdate = true;\n }\n override get color(): THREE.Color { return this.surface.material.color; }\n\n setConfig(update: CuboidConfigUpdate): void {\n const geometryChanged = [\"center\", \"width\", \"height\", \"depth\", \"accuracy\"]\n .some((key) => key in update);\n const next = {\n ...this.options,\n ...update,\n center: update.center?.clone() ?? this.options.center,\n };\n if (geometryChanged) this.replaceDefinition(primitiveOptions(next));\n else if (update.deflection !== undefined) this.retessellate(update.deflection);\n this.options = next;\n if (update.color !== undefined) this.color = update.color;\n }\n\n getConfig(): Readonly<NormalizedCuboidOptions> {\n return this.options;\n }\n\n setPlacement(update: CuboidPlacementUpdate): void {\n this.options.translation = update.translation?.clone() ?? this.options.translation;\n this.options.rotation = update.rotation?.clone() ?? this.options.rotation;\n this.options.scale = update.scale?.clone() ?? this.options.scale;\n this.applyPlacement();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3): void {\n this.setPlacement({ translation, rotation, scale });\n }\n\n setTranslation(translation: Vector3): void { this.setPlacement({ translation }); }\n setRotation(rotation: Vector3): void { this.setPlacement({ rotation }); }\n setScale(scale: Vector3): void { this.setPlacement({ scale }); }\n\n getPlacement(): Required<CuboidPlacementOptions> {\n return {\n translation: this.options.translation.clone(),\n rotation: this.options.rotation.clone(),\n scale: this.options.scale.clone(),\n };\n }\n\n getAnchor(): Vector3 {\n return this.options.center.clone();\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"cuboid\", \"box\");\n }\n\n canConvertToFreeform(): false { return false; }\n\n toFreeform(): never {\n throw new Error(\"UnsupportedAnalyticEdit: BRep v2 freeform conversion is not implemented\");\n }\n\n cleanGeometry(): void { this.dispose(); }\n discardGeometry(): void { this.surface.geometry.dispose(); }\n\n private applyPlacement(): void {\n this.position.copy(this.options.translation);\n this.rotation.set(\n this.options.rotation.x,\n this.options.rotation.y,\n this.options.rotation.z,\n );\n this.scale.copy(this.options.scale);\n this.updateMatrix();\n }\n}\n\nfunction normalizeOptions(options: ICuboidOptions): NormalizedCuboidOptions {\n return {\n ogid: options.ogid,\n center: options.center?.clone() ?? new Vector3(0, 0, 0),\n width: options.width ?? 1,\n height: options.height ?? 1,\n depth: options.depth ?? 1,\n color: options.color ?? 0x00ff00,\n deflection: options.deflection ?? 0.01,\n accuracy: options.accuracy,\n translation: options.translation?.clone() ?? new Vector3(0, 0, 0),\n rotation: options.rotation?.clone() ?? new Vector3(0, 0, 0),\n scale: options.scale?.clone() ?? new Vector3(1, 1, 1),\n };\n}\n\nfunction primitiveOptions(options: NormalizedCuboidOptions): AnalyticPrimitiveOptions {\n return {\n kind: \"cuboid\",\n ogid: options.ogid,\n width: options.width,\n depth: options.depth,\n height: options.height,\n frame: {\n origin: [\n options.center.x - options.width / 2,\n options.center.y - options.height / 2,\n options.center.z + options.depth / 2,\n ],\n x: [1, 0, 0],\n y: [0, 0, -1],\n z: [0, 1, 0],\n },\n accuracy: options.accuracy,\n deflection: options.deflection,\n color: options.color,\n };\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\n\nimport { createParametricEditCapabilities } from \"../editor\";\nimport { AnalyticSolid, type AnalyticAccuracy } from \"./analytic-solid\";\nimport {\n Cuboid,\n type CuboidConfigUpdate,\n type CuboidPlacementOptions,\n type ICuboidOptions,\n} from \"./cuboid\";\n\nexport interface IOpeningOptions extends CuboidPlacementOptions {\n ogid?: string;\n center?: Vector3;\n width?: number;\n height?: number;\n depth?: number;\n color?: THREE.ColorRepresentation;\n deflection?: number;\n accuracy?: AnalyticAccuracy;\n}\n\nexport type OpeningPlacementOptions = CuboidPlacementOptions;\nexport type OpeningConfigUpdate = CuboidConfigUpdate;\nexport type OpeningPlacementUpdate = OpeningPlacementOptions;\n\n/** Strict BRep v2 subtractive box. */\nexport class Opening extends Cuboid {\n constructor(options: IOpeningOptions = {}) {\n const normalized: ICuboidOptions = {\n center: options.center ?? new Vector3(0, 0, 0),\n width: options.width ?? 1,\n height: options.height ?? 1,\n depth: options.depth ?? 0.2,\n color: options.color ?? 0xdad7cd,\n ...options,\n };\n super(normalized);\n this.surface.material.transparent = true;\n this.surface.material.opacity = 0;\n this.surface.material.depthWrite = false;\n this.surface.material.needsUpdate = true;\n }\n\n get dimensions() {\n return { width: this.width, height: this.height, depth: this.depth };\n }\n\n override getEditCapabilities() {\n return createParametricEditCapabilities(\"opening\", \"box\");\n }\n\n subtractFrom(\n host: AnalyticSolid,\n options: { deflection?: number; color?: THREE.ColorRepresentation } = {},\n ): AnalyticSolid {\n if (!(host instanceof AnalyticSolid)) {\n throw new Error(\"Opening subtraction requires a strict analytic BRep v2 host\");\n }\n return host.subtract([this], options);\n }\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\n\nimport { AnalyticSolid, type AnalyticAccuracy } from \"./analytic-solid\";\n\nexport interface ISphereOptions {\n ogid?: string;\n center?: Vector3;\n radius?: number;\n deflection?: number;\n accuracy?: AnalyticAccuracy;\n color?: THREE.ColorRepresentation;\n}\n\ninterface NormalizedSphereOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n deflection: number;\n accuracy?: AnalyticAccuracy;\n color: THREE.ColorRepresentation;\n}\n\n/** Authoritative spherical BRep with explicit poles and transient deflection tessellation. */\nexport class Sphere extends AnalyticSolid {\n readonly options: Readonly<NormalizedSphereOptions>;\n\n constructor(options: ISphereOptions = {}) {\n const normalized = normalizeOptions(options);\n super({\n kind: \"sphere\",\n ogid: normalized.ogid,\n radius: normalized.radius,\n accuracy: normalized.accuracy,\n deflection: normalized.deflection,\n color: normalized.color,\n });\n this.options = normalized;\n this.position.set(normalized.center.x, normalized.center.y, normalized.center.z);\n }\n\n get radius(): number { return this.options.radius; }\n\n getAnchor(): THREE.Vector3 {\n return this.position.clone();\n }\n}\n\nfunction normalizeOptions(options: ISphereOptions): NormalizedSphereOptions {\n return {\n ogid: options.ogid,\n center: options.center ?? new Vector3(0, 0, 0),\n radius: options.radius ?? 1,\n deflection: options.deflection ?? 0.01,\n accuracy: options.accuracy,\n color: options.color ?? 0x00ff00,\n };\n}\n","import { OGWedge, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for a wedge/prism shape.\n */\nexport interface IWedgeOptions {\n ogid?: string;\n center: Vector3;\n width: number;\n height: number;\n depth: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Wedge`.\n */\nexport interface WedgePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Wedge.setConfig(...)`.\n */\nexport type WedgeConfigUpdate = Partial<\n Omit<IWedgeOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Wedge` placement updates.\n */\nexport type WedgePlacementUpdate = WedgePlacementOptions;\n\n/**\n * Wedge wrapper backed by the kernel wedge primitive.\n */\nexport class Wedge extends THREE.Mesh {\n ogid: string;\n options: IWedgeOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n height: 1,\n depth: 1,\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private wedge: OGWedge;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: IWedgeOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.wedge = new OGWedge(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n width: this.options.width,\n height: this.options.height,\n depth: this.options.depth,\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Wedge\");\n }\n }\n\n setConfig(options: WedgeConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"width\" in options ||\n \"height\" in options ||\n \"depth\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n const { width, height, depth, center } = this.options;\n this.wedge.set_config(center.clone(), width, height, depth);\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.wedge.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: WedgePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.wedge.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"wedge\", \"wedge\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.wedge.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach((mat) => mat.dispose());\n } else {\n this.material.dispose();\n }\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.wedge.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n // this.material.transparent = true;\n // this.material.opacity = 0.6;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n // transparent: true,\n // opacity: 0.6,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.wedge.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrepData() {\n const brepData = this.wedge.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this wedge.\");\n }\n return JSON.parse(brepData);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outlineData = Array.from(this.wedge.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outlineData,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n get outlineMesh() {\n return this.#outlineMesh;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for a swept solid.\n */\nexport interface ISweepOptions {\n ogid?: string;\n path: Vector3[];\n profile: Vector3[];\n color: number;\n capStart?: boolean;\n capEnd?: boolean;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Sweep`.\n */\nexport interface SweepPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Sweep.setConfig(...)`.\n */\nexport type SweepConfigUpdate = Partial<\n Omit<ISweepOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Sweep` placement updates.\n */\nexport type SweepPlacementUpdate = SweepPlacementOptions;\n\n\ninterface ISweepKernelInstance {\n set_config_with_caps: (\n ..._args: [Vector3[], Vector3[], boolean, boolean]\n ) => void;\n set_transform: (..._args: [Vector3, Vector3, Vector3]) => void;\n set_anchor: (..._args: [Vector3]) => void;\n reset_anchor: () => void;\n get_geometry_buffer(): Float64Array;\n get_brep_serialized(): string;\n get_local_brep_serialized(): string;\n get_outline_geometry_buffer(): Float64Array;\n get_anchor(): Vector3;\n}\n\ntype SweepKernelConstructor = new (..._args: [string]) => ISweepKernelInstance;\n\n\n/**\n * Sweep wrapper backed by the kernel sweep primitive.\n */\nexport class Sweep extends THREE.Mesh {\n ogid: string;\n options: ISweepOptions = {\n path: [\n new Vector3(0, 0, 0),\n new Vector3(0, 1, 0),\n ],\n profile: [\n new Vector3(-0.25, 0, -0.25),\n new Vector3(0.25, 0, -0.25),\n new Vector3(0.25, 0, 0.25),\n new Vector3(-0.25, 0, 0.25),\n ],\n color: 0x00ff00,\n capStart: true,\n capEnd: true,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private sweep: ISweepKernelInstance;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: ISweepOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n const sweepExport = (OGKernel as Record<string, unknown>)[\"OGSweep\"];\n if (typeof sweepExport !== \"function\") {\n throw new Error(\n \"OGSweep is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\"\n );\n }\n const SweepKernel = sweepExport as SweepKernelConstructor;\n this.sweep = new SweepKernel(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n path: this.options.path.map((point) => point.clone()),\n profile: this.options.profile.map((point) => point.clone()),\n color: this.options.color,\n capStart: this.options.capStart,\n capEnd: this.options.capEnd,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Sweep\");\n }\n\n if (this.options.path.length < 2) {\n throw new Error(\"Sweep path requires at least 2 points.\");\n }\n\n if (this.options.profile.length < 3) {\n throw new Error(\"Sweep profile requires at least 3 points.\");\n }\n }\n\n setConfig(options: SweepConfigUpdate) {\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"path\" in options ||\n \"profile\" in options ||\n \"capStart\" in options ||\n \"capEnd\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n this.validateOptions();\n\n const path = this.options.path.map((point) => point.clone());\n const profile = this.options.profile.map((point) => point.clone());\n const capStart = this.options.capStart ?? true;\n const capEnd = this.options.capEnd ?? true;\n\n this.sweep.set_config_with_caps(path, profile, capStart, capEnd);\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.sweep.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.sweep.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.sweep.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: SweepPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.sweep.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"sweep\", \"sweep\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.sweep.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach((mat) => mat.dispose());\n } else {\n this.material.dispose();\n }\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.sweep.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n // this.material.transparent = true;\n // this.material.opacity = 0.6;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n // transparent: true,\n // opacity: 0.6,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.sweep.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrep() {\n const brepData = this.sweep.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for Sweep.\");\n }\n return JSON.parse(brepData);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outlineData = Array.from(this.sweep.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outlineData,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Arc } from \"../primitives/arc\";\nimport { Curve } from \"../primitives/curve\";\nimport { Line } from \"../primitives/line\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { Rectangle } from \"../primitives/rectangle\";\n\n/**\n * Adds a basic primitives showcase to the provided scene.\n */\nexport function createPrimitivesExample(scene: THREE.Scene) {\n const line = new Line({\n start: new Vector3(-3.0, 0.0, -2.0),\n end: new Vector3(-1.0, 0.0, -1.0),\n color: 0x111827,\n });\n\n const polyline = new Polyline({\n points: [\n new Vector3(-2.0, 0.0, 1.6),\n new Vector3(-1.4, 0.0, 2.4),\n new Vector3(-0.7, 0.0, 1.8),\n new Vector3(-0.2, 0.0, 2.6),\n ],\n color: 0x0284c7,\n });\n\n const arc = new Arc({\n center: new Vector3(1.0, 0.0, -1.0),\n radius: 1.0,\n startAngle: 0.0,\n sweepAngle: Math.PI * 1.5,\n deflection: 0.01,\n color: 0xb91c1c,\n });\n\n const rectangle = new Rectangle({\n center: new Vector3(2.0, 0.0, 1.8),\n width: 1.5,\n breadth: 0.9,\n color: 0x1d4ed8,\n });\n\n const curve = new Curve({\n controlPoints: [\n new Vector3(-0.8, 0.0, -2.2),\n new Vector3(0.0, 0.0, -2.4),\n new Vector3(0.9, 0.0, -1.8),\n new Vector3(1.6, 0.0, -2.0),\n ],\n color: 0x7c3aed,\n });\n\n scene.add(line);\n scene.add(polyline);\n scene.add(arc);\n scene.add(rectangle);\n scene.add(curve);\n\n return { line, polyline, arc, rectangle, curve };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Cuboid } from \"../shapes/cuboid\";\nimport { Cylinder } from \"../shapes/cylinder\";\nimport { Opening } from \"../shapes/opening\";\nimport { Polygon } from \"../shapes/polygon\";\nimport { Sweep } from \"../shapes/sweep\";\nimport { Sphere } from \"../shapes/sphere\";\nimport { Wedge } from \"../shapes/wedge\";\n\n/**\n * Adds a basic shapes showcase to the provided scene.\n */\nexport function createShapesExample(scene: THREE.Scene) {\n const fatOutlineWidth = 4;\n\n const polygon = new Polygon({\n vertices: [\n new Vector3(-3.0, 0.0, -0.5),\n new Vector3(-2.2, 0.0, 0.5),\n new Vector3(-1.2, 0.0, 0.2),\n new Vector3(-1.5, 0.0, -0.8),\n ],\n color: 0x2563eb,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n polygon.outline = true;\n\n const cuboid = new Cuboid({\n center: new Vector3(0.0, 0.8, -1.2),\n width: 1.2,\n height: 1.6,\n depth: 1.0,\n color: 0x10b981,\n deflection: 0.01,\n });\n cuboid.outline = true;\n\n const cylinder = new Cylinder({\n center: new Vector3(1.8, 0.8, -0.8),\n radius: 0.6,\n height: 1.6,\n color: 0xf97316,\n deflection: 0.01,\n });\n cylinder.outline = true;\n\n const wedge = new Wedge({\n center: new Vector3(3.4, 0.8, -1.0),\n width: 1.2,\n height: 1.4,\n depth: 1.0,\n color: 0x7c3aed,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n wedge.outline = true;\n\n const sphere = new Sphere({\n center: new Vector3(0.6, 1, 1.2),\n radius: 0.9,\n color: 0x0ea5e9,\n deflection: 0.01,\n });\n sphere.outline = true;\n\n const opening = new Opening({\n center: new Vector3(2.4, 0.9, 1.2),\n width: 1.0,\n height: 1.8,\n depth: 0.3,\n color: 0x9ca3af,\n deflection: 0.01,\n });\n opening.outline = true;\n\n const sweep = new Sweep({\n path: [\n new Vector3(-2.8, 0.0, 2.4),\n new Vector3(-2.2, 0.6, 2.8),\n new Vector3(-1.4, 1.2, 2.4),\n new Vector3(-0.8, 1.7, 1.8),\n ],\n profile: [\n new Vector3(-0.2, 0.0, -0.2),\n new Vector3(0.2, 0.0, -0.2),\n new Vector3(0.2, 0.0, 0.2),\n new Vector3(-0.2, 0.0, 0.2),\n ],\n color: 0x14b8a6,\n capStart: true,\n capEnd: true,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n sweep.outline = true;\n\n scene.add(polygon);\n scene.add(cuboid);\n scene.add(cylinder);\n scene.add(wedge);\n scene.add(sphere);\n scene.add(opening);\n scene.add(sweep);\n\n return { polygon, cuboid, cylinder, wedge, sphere, opening, sweep };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { Rectangle } from \"../primitives/rectangle\";\nimport { Sweep } from \"../shapes/sweep\";\n\ntype KernelVertex = {\n position: {\n x: number;\n y: number;\n z: number;\n };\n};\n\ntype KernelBrep = {\n vertices: KernelVertex[];\n};\n\nfunction toVector3List(vertices: KernelVertex[]): Vector3[] {\n return vertices.map((vertex) => {\n const { x, y, z } = vertex.position;\n return new Vector3(x, y, z);\n });\n}\n\nexport function createSweepExample(scene: THREE.Scene) {\n const pathPrimitive = new Polyline({\n points: [\n new Vector3(-2.0, 0.0, -1.0),\n new Vector3(-1.2, 0.5, 0.2),\n new Vector3(0.0, 1.1, 0.9),\n new Vector3(1.1, 1.7, 0.3),\n new Vector3(2.0, 2.2, -0.8),\n ],\n color: 0x444444,\n });\n\n const profilePrimitive = new Rectangle({\n center: new Vector3(0, 0, 0),\n width: 0.7,\n breadth: 0.4,\n color: 0x1f77b4,\n });\n\n // const profilePrimitive = new Arc();\n\n const profileBrep = profilePrimitive.getBrep() as KernelBrep;\n const profilePoints = toVector3List(profileBrep.vertices);\n\n const sweep = new Sweep({\n path: pathPrimitive.options.points.map((point) => point.clone()),\n profile: profilePoints,\n color: 0x2a9d8f,\n capStart: true,\n capEnd: false,\n fatOutlines: true,\n outlineWidth: 4,\n });\n\n scene.add(pathPrimitive);\n scene.add(profilePrimitive);\n scene.add(sweep);\n\n return {\n pathPrimitive,\n profilePrimitive,\n sweep,\n };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Line } from \"../primitives/line\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { Rectangle } from \"../primitives/rectangle\";\nimport { Curve } from \"../primitives/curve\";\n\nconst EPSILON = 1.0e-9;\n\nfunction areClose(a: Vector3, b: Vector3): boolean {\n const dx = a.x - b.x;\n const dy = a.y - b.y;\n const dz = a.z - b.z;\n return (dx * dx + dy * dy + dz * dz) <= EPSILON * EPSILON;\n}\n\nfunction toRenderableOffsetPoints(points: Vector3[], isClosed: boolean): Vector3[] {\n const output = points.map((point) => point.clone());\n if (!isClosed || output.length === 0) {\n return output;\n }\n\n if (!areClose(output[0], output[output.length - 1])) {\n output.push(output[0].clone());\n }\n\n return output;\n}\n\nexport function createOffsetExample(scene: THREE.Scene) {\n const baseLine = new Line({\n start: new Vector3(-3.0, 0.0, -2.2),\n end: new Vector3(-0.7, 0.0, -1.1),\n color: 0x1f2937,\n });\n\n const lineOffset = baseLine.getOffset(0.35, 35.0, true);\n const lineOffsetPrimitive = new Line({\n start: lineOffset.points[0],\n end: lineOffset.points[1],\n color: 0xef4444,\n });\n\n const basePolyline = new Polyline({\n points: [\n new Vector3(-1.2, 0.0, -2.4),\n new Vector3(0.2, 0.0, -1.6),\n new Vector3(0.8, 0.0, -0.4),\n new Vector3(0.0, 0.0, -0.2),\n new Vector3(2.5, 0.0, 1.2),\n ],\n color: 0x0f172a,\n });\n\n const polylineOffset = basePolyline.getOffset(0.45, 35.0, true);\n const polylineOffsetPrimitive = new Polyline({\n points: polylineOffset.points,\n color: 0xdc2626,\n });\n\n const baseRectangle = new Rectangle({\n center: new Vector3(1.2, 0.0, -2.1),\n width: 1.6,\n breadth: 1.0,\n color: 0x1d4ed8,\n });\n\n const rectangleOffset = baseRectangle.getOffset(0.25, 40.0, true);\n const rectangleOffsetPrimitive = new Polyline({\n points: toRenderableOffsetPoints(rectangleOffset.points, rectangleOffset.isClosed),\n color: 0xf97316,\n });\n\n const baseCurve = new Curve({\n controlPoints: [\n new Vector3(-3.0, 0.0, 1.3),\n new Vector3(-2.0, 0.0, 1.7),\n new Vector3(-1.1, 0.0, 1.6),\n new Vector3(-0.4, 0.0, 2.0),\n ],\n color: 0x0ea5e9,\n });\n\n const curveOffset = baseCurve.getOffset(0.3, 45.0, true);\n const curveOffsetPrimitive = new Polyline({\n points: curveOffset.points,\n color: 0xbe123c,\n });\n\n scene.add(baseLine);\n scene.add(lineOffsetPrimitive);\n scene.add(basePolyline);\n scene.add(polylineOffsetPrimitive);\n scene.add(baseRectangle);\n scene.add(rectangleOffsetPrimitive);\n scene.add(baseCurve);\n scene.add(curveOffsetPrimitive);\n\n return {\n baseLine,\n lineOffsetPrimitive,\n basePolyline,\n polylineOffsetPrimitive,\n baseRectangle,\n rectangleOffsetPrimitive,\n baseCurve,\n curveOffsetPrimitive,\n polylineOffset,\n rectangleOffset,\n curveOffset,\n };\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\n\n/** A point of a returned offset region ring (kernel `Vector3` shape). */\nexport interface OffsetRegionPoint {\n x: number;\n y: number;\n z: number;\n}\n\n/** One offset region: a CW outer ring + its CCW inner-void hole rings. */\nexport interface OffsetRegion {\n /** Outer ring (CW, canonical start). */\n outer: OffsetRegionPoint[];\n /** Inner-void hole rings (CCW), e.g. the interior void of a closed loop. */\n holes: OffsetRegionPoint[][];\n}\n\ntype KernelOffsetRegionsResult = {\n regionsSerialized: string;\n};\n\ntype KernelOffsetPolylineRegions = (\n centreline: Float64Array,\n width: number,\n closed: boolean,\n miterLimit: number,\n) => KernelOffsetRegionsResult;\n\n/**\n * Offset a centreline by ±half-width into one or more filled REGIONS, via the\n * deterministic analytic offset — miters / flat bevels at `miterLimit`, concave\n * trims, and nonzero-winding resolution of reflex / closed loops. NO boolean union\n * (so it is deterministic, unlike the 3D-mesh CSG path). A simple centreline returns\n * one region; a self-crossing closed centreline (e.g. a figure-8) returns one per\n * simple sub-loop. Returns an EMPTY array for a collapsed input (does\n * not throw, so it never looks like a kernel crash). Rings are CW-outer / CCW-holes.\n *\n * @param centrelineFlat centreline points as `[x,y,z, …]`.\n * @param width full stroke width (offset ±width/2 on each side).\n * @param miterLimit SVG stroke-miterlimit; corners sharper than this bevel. Default 4.\n */\nexport function offsetPolylineRegions(\n centrelineFlat: number[] | Float64Array,\n width: number,\n closed: boolean,\n miterLimit = 4,\n): OffsetRegion[] {\n const buildExport = (OGKernel as Record<string, unknown>).offsetPolylineRegions;\n if (typeof buildExport !== \"function\") {\n throw new Error(\n \"offsetPolylineRegions is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\",\n );\n }\n const flat =\n centrelineFlat instanceof Float64Array ? centrelineFlat : new Float64Array(centrelineFlat);\n const result = (buildExport as KernelOffsetPolylineRegions)(flat, width, closed, miterLimit);\n return JSON.parse(result.regionsSerialized);\n}\n\ntype KernelOffsetRingVariable = (\n ringFlat: Float64Array,\n distances: Float64Array,\n holesJson: string,\n) => KernelOffsetRegionsResult;\n\n/** An excluded interior ring of a variable inset. Its closed ring has one\n * clearance distance per edge; the inset grows the hole by those distances. */\nexport interface OffsetHole {\n ring: number[] | Float64Array;\n distances: number[] | Float64Array;\n}\n\n/**\n * Inset a CLOSED ring inward with one distance per edge (edge i =\n * `ring[i] → ring[i+1]`; an explicit closing duplicate point is accepted and\n * stripped, the distance count stays one per unique edge). The result is a\n * clearance-exact inset region: the ring's interior minus every point within\n * `distances[i]` of edge i's segment. Distant boundary segments remain\n * effective across notches; different distances produce circumscribed\n * clearance arcs. There is no\n * `miterLimit` parameter, deliberately: miters and bevels only approximate the\n * clearance arc, and a bevel would claim points inside the required distance.\n *\n * `holes` are excluded interior rings, each grown outward by its own per-edge\n * distances — the region keeps clear of a hole's edges exactly as it keeps\n * clear of the outer boundary, so a hole can split the region or swallow it.\n *\n * Returns CW-outer / CCW-hole regions (canonical start vertex), possibly\n * SEVERAL when a deep inset (or a hole) splits a waisted ring into disjoint\n * lobes, and an EMPTY array when the inset collapses or the outer ring is\n * degenerate (< 3 unique points, zero area, self-intersecting). THROWS on\n * malformed arguments: a distance count that does not match an edge count, a\n * negative / non-finite distance, or a degenerate hole — those are caller\n * bugs, not geometry.\n *\n * @param ring closed ring points as `[x,y,z, …]` (Y is carried through).\n * @param distances inward inset distance per edge, metres, each >= 0\n * (0 keeps that boundary edge in place).\n * @param holes excluded interior rings with their own per-edge distances.\n */\nexport function offsetRingVariable(\n ring: number[] | Float64Array,\n distances: number[] | Float64Array,\n holes: OffsetHole[] = [],\n): OffsetRegion[] {\n const buildExport = (OGKernel as Record<string, unknown>).offsetRingVariable;\n if (typeof buildExport !== \"function\") {\n throw new Error(\n \"offsetRingVariable is not available in the loaded wasm package. It requires opengeometry >= 2.0.12 — rebuild or upgrade the opengeometry wasm bindings.\",\n );\n }\n const flatRing = ring instanceof Float64Array ? ring : new Float64Array(ring);\n const flatDistances =\n distances instanceof Float64Array ? distances : new Float64Array(distances);\n const holesJson = JSON.stringify(\n holes.map((hole) => ({ ring: Array.from(hole.ring), distances: Array.from(hole.distances) })),\n );\n const result = (buildExport as KernelOffsetRingVariable)(flatRing, flatDistances, holesJson);\n return JSON.parse(result.regionsSerialized);\n}\n\n/** One polyline in an offset group: centreline `[x,y,z, …]`, stroke width, closed flag. */\nexport interface OffsetPolyline {\n centreline: number[];\n width: number;\n closed: boolean;\n}\n\ntype KernelOffsetPolylineGroupRegions = (polylinesJson: string) => KernelOffsetRegionsResult;\n\n/**\n * Merge a GROUP of separate polylines (a crossing T / X / L overlap) into one clean\n * region by nonzero-winding union of their mitered bands — the overlapping strokes\n * merge into a single region with mitered/bevelled corners, no internal edges.\n * Returns CW-outer / CCW-hole regions (one or more); empty if no region remains.\n * No CSG. Used to render/extrude an overlapping crossing as one joined mass.\n */\nexport function offsetPolylineGroupRegions(polylines: OffsetPolyline[]): OffsetRegion[] {\n const buildExport = (OGKernel as Record<string, unknown>).offsetPolylineGroupRegions;\n if (typeof buildExport !== \"function\") {\n throw new Error(\n \"offsetPolylineGroupRegions is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\",\n );\n }\n const result = (buildExport as KernelOffsetPolylineGroupRegions)(JSON.stringify(polylines));\n return JSON.parse(result.regionsSerialized);\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { offsetRingVariable } from \"../operations/offset-regions\";\n\n/** Close a kernel ring for Polyline rendering (repeat the first point). */\nfunction closedRingPoints(ring: { x: number; y: number; z: number }[]): Vector3[] {\n const points = ring.map((point) => new Vector3(point.x, point.y, point.z));\n if (points.length > 0) {\n const first = ring[0];\n points.push(new Vector3(first.x, first.y, first.z));\n }\n return points;\n}\n\n/**\n * Variable (per-edge) ring inset: a rectangular \"parcel\" inset by front 6 /\n * side 1.5 / rear 3 setbacks, and a waisted (dumbbell) parcel whose uniform\n * 3 m inset SPLITS into two disjoint buildable envelopes — the case a uniform\n * offset cannot express.\n */\nexport function createOffsetRingVariableExample(scene: THREE.Scene) {\n const scale = 0.2; // metres → scene units, keeps both parcels in frame\n\n const parcel = [0, 0, 0, 20, 0, 0, 20, 0, 30, 0, 0, 30].map((v) => v * scale);\n const parcelSetbacks = [6, 1.5, 3, 1.5].map((v) => v * scale);\n\n const dumbbell = [\n 0, 0, 0, 20, 0, 0, 20, 0, 14, 12, 0, 14, 12, 0, 26, 20, 0, 26, 20, 0, 40, 0, 0, 40, 0, 0, 26,\n 8, 0, 26, 8, 0, 14, 0, 0, 14,\n ].map((v, index) => (index % 3 === 0 ? v * scale + 6 : v * scale)); // shifted +x\n const dumbbellSetbacks = new Array(12).fill(3 * scale);\n\n const parcelOutline = new Polyline({\n points: closedRingPoints(\n Array.from({ length: parcel.length / 3 }, (_, i) => ({\n x: parcel[i * 3],\n y: parcel[i * 3 + 1],\n z: parcel[i * 3 + 2],\n })),\n ),\n color: 0x1f2937,\n });\n scene.add(parcelOutline);\n\n const dumbbellOutline = new Polyline({\n points: closedRingPoints(\n Array.from({ length: dumbbell.length / 3 }, (_, i) => ({\n x: dumbbell[i * 3],\n y: dumbbell[i * 3 + 1],\n z: dumbbell[i * 3 + 2],\n })),\n ),\n color: 0x1f2937,\n });\n scene.add(dumbbellOutline);\n\n const envelopes: Polyline[] = [];\n for (const region of offsetRingVariable(parcel, parcelSetbacks)) {\n const envelope = new Polyline({ points: closedRingPoints(region.outer), color: 0x16a34a });\n envelopes.push(envelope);\n scene.add(envelope);\n }\n for (const region of offsetRingVariable(dumbbell, dumbbellSetbacks)) {\n const envelope = new Polyline({ points: closedRingPoints(region.outer), color: 0xdc2626 });\n envelopes.push(envelope);\n scene.add(envelope);\n }\n\n return { parcelOutline, dumbbellOutline, envelopes };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { AnalyticSolid } from \"../shapes/analytic-solid\";\nimport { Polygon } from \"../shapes/polygon\";\n\nconst EPSILON = 1.0e-9;\n\nfunction areClose(a: Vector3, b: Vector3): boolean {\n const dx = a.x - b.x;\n const dy = a.y - b.y;\n const dz = a.z - b.z;\n return (dx * dx + dy * dy + dz * dz) <= EPSILON * EPSILON;\n}\n\nfunction buildRibbonOutline(left: Vector3[], right: Vector3[]): Vector3[] {\n if (left.length === 0 || right.length === 0) {\n return [];\n }\n\n const outline = [...left.map((point) => point.clone())];\n const rightReversed = [...right.map((point) => point.clone())].reverse();\n outline.push(...rightReversed);\n\n if (outline.length > 2 && areClose(outline[0], outline[outline.length - 1])) {\n outline.pop();\n }\n\n return outline;\n}\n\nexport interface RibbonFromOffsetsOptions {\n /** Subtract one exact coextensive through slot. Default `false`. */\n cutThroughSlot?: boolean;\n /** Width of the through slot along its centerline segment. Default `0.6`. */\n slotWidth?: number;\n /**\n * Ribbon extrusion height in meters. Default `2.6` to match the example HTML.\n */\n height?: number;\n}\n\nfunction midpoint(a: Vector3, b: Vector3): Vector3 {\n return new Vector3((a.x + b.x) * 0.5, (a.y + b.y) * 0.5, (a.z + b.z) * 0.5);\n}\n\nfunction buildThroughSlot(\n centerlinePoints: Vector3[],\n ribbonThickness: number,\n height: number,\n width: number,\n): AnalyticSolid {\n const a = centerlinePoints[2];\n const b = centerlinePoints[3];\n const mid = midpoint(a, b);\n const length = Math.hypot(b.x - a.x, b.z - a.z);\n const tangent = [(b.x - a.x) / length, (b.z - a.z) / length];\n const normal = [-tangent[1], tangent[0]];\n const halfWidth = width * 0.5;\n const halfDepth = ribbonThickness * 0.5 + 0.1;\n const point = (along: number, across: number): [number, number] => [\n mid.x + tangent[0] * along + normal[0] * across,\n -(mid.z + tangent[1] * along + normal[1] * across),\n ];\n return new AnalyticSolid({\n kind: \"linearExtrusion\",\n outer: [\n point(-halfWidth, -halfDepth),\n point(halfWidth, -halfDepth),\n point(halfWidth, halfDepth),\n point(-halfWidth, halfDepth),\n ],\n holes: [],\n height,\n color: 0xef4444,\n deflection: 0.01,\n });\n}\n\n/**\n * Renders a human-readable description for an analytic geometry error (or any\n * other thrown value). Used by the example HTML to surface kernel failures\n * in a status panel without losing the structured payload.\n */\nexport function describeRibbonSubtractError(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n return String(error);\n}\n\nexport function createRibbonFromOffsetsExample(\n scene: THREE.Scene,\n options: RibbonFromOffsetsOptions = {}\n) {\n const centerline = new Polyline({\n points: [\n new Vector3(-2.6, 0.0, -1.9),\n new Vector3(-1.2, 0.0, -1.0),\n new Vector3(-0.2, 0.0, 0.1),\n new Vector3(0.6, 0.0, 0.2),\n new Vector3(0.1, 0.0, 1.0),\n new Vector3(2.6, 0.0, 2.0),\n ],\n color: 0x1f2937,\n });\n\n const ribbonThickness = 0.45;\n const half = ribbonThickness * 0.5;\n const acuteThreshold = 35.0;\n const bevel = true;\n const ribbonHeight = options.height ?? 2.6;\n\n const leftOffset = centerline.getOffset(half, acuteThreshold, bevel);\n const rightOffset = centerline.getOffset(-half, acuteThreshold, bevel);\n\n const leftOffsetPolyline = new Polyline({\n points: leftOffset.points,\n color: 0x22c55e,\n });\n\n const rightOffsetPolyline = new Polyline({\n points: rightOffset.points,\n color: 0xf97316,\n });\n\n const ribbonOutline = buildRibbonOutline(leftOffset.points, rightOffset.points);\n if (ribbonOutline.length < 3) {\n throw new Error(\"Failed to create ribbon polygon from offsets.\");\n }\n\n const ribbonPolygon = new Polygon({\n vertices: ribbonOutline,\n color: 0x3b82f6,\n });\n\n ribbonPolygon.position.y = 0.01;\n\n scene.add(centerline);\n scene.add(leftOffsetPolyline);\n scene.add(rightOffsetPolyline);\n scene.add(ribbonPolygon);\n\n let cutResult: { ribbon: THREE.Object3D; cutters: AnalyticSolid[] } | null = null;\n let cutError: unknown = null;\n\n if (options.cutThroughSlot ?? false) {\n const ribbonSolid = new AnalyticSolid({\n kind: \"linearExtrusion\",\n outer: ribbonOutline.map((point) => [point.x, -point.z]),\n holes: [],\n height: ribbonHeight,\n color: 0x3b82f6,\n deflection: 0.01,\n });\n const cutter = buildThroughSlot(\n [\n new Vector3(-2.6, 0.0, -1.9),\n new Vector3(-1.2, 0.0, -1.0),\n new Vector3(-0.2, 0.0, 0.1),\n new Vector3(0.6, 0.0, 0.2),\n new Vector3(0.1, 0.0, 1.0),\n new Vector3(2.6, 0.0, 2.0),\n ],\n ribbonThickness,\n ribbonHeight,\n options.slotWidth ?? 0.6,\n );\n const cutters = [cutter];\n\n try {\n const cutRibbon = ribbonSolid.subtract(cutters, { color: 0x3b82f6 });\n scene.add(cutRibbon);\n cutResult = { ribbon: cutRibbon, cutters };\n } catch (error) {\n cutError = error;\n scene.add(ribbonSolid);\n cutResult = { ribbon: ribbonSolid, cutters };\n }\n }\n\n return {\n centerline,\n leftOffsetPolyline,\n rightOffsetPolyline,\n ribbonPolygon,\n leftOffset,\n rightOffset,\n cutResult,\n cutError,\n };\n}\n","import * as THREE from \"three\";\n\nimport { AnalyticSolid, type AnalyticBooleanOp } from \"../shapes/analytic-solid\";\n\n/** Rendering and tessellation options applied to an analytic boolean result. */\nexport interface BooleanExecutionOptions {\n deflection?: number;\n color?: THREE.ColorRepresentation;\n opacity?: number;\n transparent?: boolean;\n side?: THREE.Side;\n outline?: boolean;\n}\n\nexport type BooleanOperand = AnalyticSolid;\n\nexport function booleanUnion(\n lhs: AnalyticSolid,\n rhs: AnalyticSolid,\n options?: BooleanExecutionOptions,\n): AnalyticSolid {\n return executeBoolean(lhs, rhs, \"union\", options);\n}\n\nexport function booleanIntersection(\n lhs: AnalyticSolid,\n rhs: AnalyticSolid,\n options?: BooleanExecutionOptions,\n): AnalyticSolid {\n return executeBoolean(lhs, rhs, \"intersection\", options);\n}\n\nexport function booleanSubtraction(\n lhs: AnalyticSolid,\n rhs: AnalyticSolid,\n options?: BooleanExecutionOptions,\n): AnalyticSolid {\n return executeBoolean(lhs, rhs, \"subtraction\", options);\n}\n\nexport function executeBooleanSubtractionMany(\n lhs: BooleanOperand,\n cutters: BooleanOperand[],\n options?: BooleanExecutionOptions,\n): AnalyticSolid {\n const host = analyticOperand(lhs);\n if (!Array.isArray(cutters) || cutters.length === 0) {\n throw new Error(\"Analytic subtraction requires a nonempty operand array.\");\n }\n const analyticCutters = cutters.map(analyticOperand);\n let result = host.boolean(analyticCutters[0], \"subtraction\", {\n deflection: options?.deflection ?? host.deflection,\n color: options?.color,\n });\n try {\n for (const cutter of analyticCutters.slice(1)) {\n const next = result.boolean(cutter, \"subtraction\", {\n deflection: options?.deflection ?? result.deflection,\n color: options?.color,\n });\n result.dispose();\n result = next;\n }\n } catch (error) {\n result.dispose();\n throw error;\n }\n applyRenderOptions(result, options);\n return result;\n}\n\nfunction executeBoolean(\n lhs: AnalyticSolid,\n rhs: AnalyticSolid,\n operation: AnalyticBooleanOp,\n options?: BooleanExecutionOptions,\n): AnalyticSolid {\n const host = analyticOperand(lhs);\n const tool = analyticOperand(rhs);\n const result = host.boolean(tool, operation, {\n deflection: options?.deflection ?? host.deflection,\n color: options?.color,\n });\n applyRenderOptions(result, options);\n return result;\n}\n\nfunction analyticOperand(operand: BooleanOperand): AnalyticSolid {\n if (!(operand instanceof AnalyticSolid)) {\n throw new Error(\n \"Boolean operations require strict analytic BRep v2 operands; faceted BRep operands are unsupported.\",\n );\n }\n return operand;\n}\n\nfunction applyRenderOptions(result: AnalyticSolid, options?: BooleanExecutionOptions): void {\n const material = result.surface.material;\n if (options?.color !== undefined) material.color.set(options.color);\n if (options?.opacity !== undefined) {\n material.opacity = options.opacity;\n material.transparent = options.opacity < 1 || material.transparent;\n }\n if (options?.transparent !== undefined) material.transparent = options.transparent;\n if (options?.side !== undefined) material.side = options.side;\n material.needsUpdate = true;\n result.outline = options?.outline ?? true;\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\n\nimport {\n BooleanExecutionOptions,\n booleanIntersection,\n booleanSubtraction,\n booleanUnion,\n} from \"../operations/boolean\";\nimport { AnalyticSolid } from \"../shapes/analytic-solid\";\n\nexport type BooleanExampleOperation = \"union\" | \"intersection\" | \"subtraction\";\nexport type BooleanExampleMode = \"solid\" | \"polygon\" | \"extruded\";\n\nexport interface BooleanExampleBuildOptions extends BooleanExecutionOptions {\n mode: BooleanExampleMode;\n sphereCenter?: Vector3;\n polygonOffset?: Vector3;\n extrudedOffset?: Vector3;\n}\n\nexport interface BooleanExampleBuildResult {\n group: THREE.Group;\n lhs: THREE.Object3D;\n rhs: THREE.Object3D;\n result: AnalyticSolid;\n title: string;\n description: string;\n}\n\n/**\n * Builds a complete operand/result scene group for a boolean example page.\n */\nexport function createBooleanExample(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n): BooleanExampleBuildResult {\n const preset = createPreset(operation, options);\n\n const execute = getBooleanExecutor(operation);\n const result = execute(preset.lhsOperand, preset.rhsOperand, options);\n\n const group = new THREE.Group();\n group.add(preset.lhsVisual);\n group.add(preset.rhsVisual);\n group.add(result);\n\n return {\n group,\n lhs: preset.lhsVisual,\n rhs: preset.rhsVisual,\n result,\n title: preset.title,\n description: preset.description,\n };\n}\n\nfunction createPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n switch (options.mode) {\n case \"solid\":\n return createSolidPreset(operation, options);\n case \"polygon\":\n return createPolygonPreset(operation, options);\n case \"extruded\":\n return createExtrudedPreset(operation, options);\n }\n}\n\n/**\n * Builds the solid-operand preset used by the example pages.\n */\nfunction createSolidPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n const base = new AnalyticSolid({\n kind: \"sphere\",\n radius: 1,\n color: 0x60a5fa,\n deflection: 0.01,\n });\n base.position.set(-0.45, 1, 0);\n\n const tool = new AnalyticSolid({\n kind: \"sphere\",\n radius: operation === \"intersection\" ? 0.95 : 0.85,\n color: 0xf97316,\n deflection: 0.01,\n });\n const center = options.sphereCenter ?? new Vector3(0.45, 1, 0.1);\n tool.position.set(center.x, center.y, center.z);\n\n base.outline = options.outline ?? true;\n tool.outline = options.outline ?? true;\n\n return {\n title: `${capitalize(operation)} Analytic Spheres`,\n description: \"Two exact spheres exercise the in-house analytic boolean path and retain face ancestry.\",\n lhsOperand: base,\n rhsOperand: tool,\n lhsVisual: base,\n rhsVisual: tool,\n };\n}\n\n/**\n * Builds the thin planar-profile solid preset used by the example pages.\n */\nfunction createPolygonPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n const polygonOffset = options.polygonOffset ?? new Vector3(0.0, 0.0, 0.0);\n const lhsVertices = [\n new Vector3(-1.8, 0.0, -0.8),\n new Vector3(0.4, 0.0, -0.8),\n new Vector3(0.4, 0.0, 1.0),\n new Vector3(-1.8, 0.0, 1.0),\n ];\n const rhsVertices = translateVertices(\n operation === \"subtraction\"\n ? [\n new Vector3(-0.55, 0.0, -0.35),\n new Vector3(1.2, 0.0, -0.35),\n new Vector3(1.2, 0.0, 0.65),\n new Vector3(-0.55, 0.0, 0.65),\n ]\n : [\n new Vector3(-0.4, 0.0, -1.1),\n new Vector3(1.55, 0.0, -1.1),\n new Vector3(1.55, 0.0, 0.7),\n new Vector3(-0.4, 0.0, 0.7),\n ],\n polygonOffset\n );\n\n const lhs = new AnalyticSolid({\n kind: \"linearExtrusion\",\n outer: lhsVertices.map((point) => [point.x, -point.z]),\n holes: [],\n height: 0.12,\n color: 0x60a5fa,\n deflection: 0.01,\n });\n const rhs = new AnalyticSolid({\n kind: \"linearExtrusion\",\n outer: rhsVertices.map((point) => [point.x, -point.z]),\n holes: [],\n height: 0.12,\n color: 0xf97316,\n deflection: 0.01,\n });\n\n lhs.outline = options.outline ?? true;\n rhs.outline = options.outline ?? true;\n\n return {\n title: `${capitalize(operation)} Planar Profile Solids`,\n description: \"Two authoritative line-profile extrusions exercise planar imprint, classify, select, and sew.\",\n lhsOperand: lhs,\n rhsOperand: rhs,\n lhsVisual: lhs,\n rhsVisual: rhs,\n };\n}\n\n/**\n * Builds a strict-v2 line-profile extrusion preset with a coextensive slab.\n */\nfunction createExtrudedPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n const extrudedOffset = options.extrudedOffset ?? new Vector3(0.0, 0.0, 0.0);\n\n const host = new AnalyticSolid({\n kind: \"linearExtrusion\",\n outer: [[-2.2, -0.18], [2.2, -0.18], [2.2, 0.18], [-2.2, 0.18]],\n holes: [],\n height: 2.8,\n color: 0x60a5fa,\n deflection: 0.01,\n });\n const cutter = new AnalyticSolid({\n kind: \"linearExtrusion\",\n outer: [[-0.7, -0.34], [0.9, -0.34], [0.9, 0.34], [-0.7, 0.34]],\n holes: [],\n height: 2.8,\n color: 0xf97316,\n deflection: 0.01,\n });\n cutter.position.set(extrudedOffset.x, 0, extrudedOffset.z);\n\n host.outline = options.outline ?? true;\n cutter.outline = options.outline ?? true;\n\n return {\n title: `${capitalize(operation)} Extruded Solid`,\n description:\n \"Two coextensive authoritative line-profile extrusions use the in-house planar arrangement.\",\n lhsOperand: host,\n rhsOperand: cutter,\n lhsVisual: host,\n rhsVisual: cutter,\n };\n}\n\n/**\n * Selects the exported boolean helper that matches the current example mode.\n */\nfunction getBooleanExecutor(operation: BooleanExampleOperation) {\n switch (operation) {\n case \"union\":\n return booleanUnion;\n case \"intersection\":\n return booleanIntersection;\n case \"subtraction\":\n return booleanSubtraction;\n }\n}\n\n/**\n * Formats the operation name for example titles.\n */\nfunction capitalize(value: string) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\n/**\n * Applies a uniform translation to the polygon operand so examples can move it\n * interactively without mutating the base preset coordinates.\n */\nfunction translateVertices(vertices: Vector3[], offset: Vector3) {\n return vertices.map(\n (vertex) =>\n new Vector3(\n vertex.x + offset.x,\n vertex.y + offset.y,\n vertex.z + offset.z\n )\n );\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { FreeformEditResult, createFreeformEditor } from \"../editor\";\nimport { Line } from \"../primitives/line\";\nimport { Polygon } from \"../shapes/polygon\";\nimport { Cuboid } from \"../shapes/cuboid\";\n\n/**\n * Demonstrates strict v2 parametric solid edits and the separate sampled-wire\n * freeform editor. Analytic solid freeform conversion is intentionally unsupported.\n */\nexport function createEditorModesExample(scene: THREE.Scene) {\n const polygon = new Polygon({\n vertices: [\n new Vector3(-3.2, 0.0, -0.8),\n new Vector3(-2.2, 0.0, 0.4),\n new Vector3(-1.0, 0.0, 0.0),\n new Vector3(-1.5, 0.0, -1.2),\n ],\n color: 0x2563eb,\n fatOutlines: true,\n outlineWidth: 4,\n });\n polygon.outline = true;\n\n const polygonCapabilities = polygon.getEditCapabilities();\n polygon.setConfig({\n vertices: [\n new Vector3(-3.4, 0.0, -0.9),\n new Vector3(-2.0, 0.0, 0.6),\n new Vector3(-0.8, 0.0, -0.1),\n new Vector3(-1.6, 0.0, -1.4),\n ],\n });\n polygon.setPlacement({\n translation: new Vector3(0.0, 0.0, -0.2),\n });\n\n const cuboid = new Cuboid({\n center: new Vector3(1.2, 0.8, 0.0),\n width: 1.2,\n height: 1.4,\n depth: 1.0,\n color: 0x10b981,\n deflection: 0.01,\n });\n cuboid.outline = true;\n\n const cuboidCapabilities = cuboid.getEditCapabilities();\n cuboid.setConfig({\n width: 1.6,\n height: 1.8,\n });\n cuboid.setPlacement({\n translation: new Vector3(0.2, 0.0, 0.0),\n rotation: new Vector3(0.0, Math.PI / 9.0, 0.0),\n });\n\n const guideLine = new Line({\n start: new Vector3(-3.4, 0.0, 1.6),\n end: new Vector3(-0.8, 0.0, 1.6),\n color: 0x475569,\n fatLines: true,\n width: 4,\n });\n guideLine.setPlacement({\n translation: new Vector3(0.0, 0.0, 0.2),\n });\n\n const guideLineCapabilities = guideLine.getEditCapabilities();\n const guideLineFreeform = guideLine.toFreeform(`${guideLine.ogid}-freeform`);\n const guideLineEditor = createFreeformEditor(guideLineFreeform);\n const guideLineEdge =\n guideLineEditor.getTopologyRenderData().edges[0]?.edge_id ?? null;\n let guideLineSplitResult: FreeformEditResult | null = null;\n\n if (guideLineEdge !== null) {\n guideLineSplitResult = guideLineEditor.splitEdge(guideLineEdge, 0.5, {\n includeTopologyRemap: true,\n });\n }\n\n scene.add(polygon);\n scene.add(cuboid);\n scene.add(guideLine);\n\n return {\n polygon,\n cuboid,\n guideLine,\n polygonCapabilities,\n cuboidCapabilities,\n guideLineCapabilities,\n guideLineFreeform,\n guideLineEditor,\n guideLineSplitResult,\n };\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\nimport type { OffsetRegion, OffsetRegionPoint } from \"./offset-regions\";\n\nexport type PlanarBooleanOperation = \"union\" | \"intersection\" | \"subtraction\";\n\nexport type CurvedRegionEdge =\n | { kind: \"line\"; from: [number, number]; to: [number, number] }\n | { kind: \"arc\"; center: [number, number]; radius: number; start_angle: number; sweep_angle: number };\n\nexport interface CurvedRegion2D {\n outer: CurvedRegionEdge[];\n holes: CurvedRegionEdge[][];\n}\n\ntype KernelRegionsResult = { regionsSerialized: string };\ntype KernelBooleanRegions = (\n aJson: string,\n bJson: string,\n operation: PlanarBooleanOperation,\n) => KernelRegionsResult;\n\nexport function booleanRegions2D(\n a: readonly OffsetRegion[],\n b: readonly OffsetRegion[],\n operation: PlanarBooleanOperation,\n): OffsetRegion[] {\n const kernelExport = (OGKernel as Record<string, unknown>).booleanRegions2D;\n if (typeof kernelExport !== \"function\") {\n throw new Error(\"booleanRegions2D is unavailable in the loaded WASM package\");\n }\n const point = (value: OffsetRegionPoint): [number, number, number] => [\n value.x,\n value.y,\n value.z,\n ];\n const encode = (regions: readonly OffsetRegion[]) =>\n JSON.stringify(\n regions.map((region) => ({\n outer: region.outer.map(point),\n holes: region.holes.map((hole) => hole.map(point)),\n })),\n );\n const result = (kernelExport as KernelBooleanRegions)(encode(a), encode(b), operation);\n return JSON.parse(result.regionsSerialized) as OffsetRegion[];\n}\n\n/** Analytic line/arc region Boolean; output arcs retain their exact circles. */\nexport function booleanCurvedRegions2D(\n a: readonly CurvedRegion2D[],\n b: readonly CurvedRegion2D[],\n operation: PlanarBooleanOperation,\n): CurvedRegion2D[] {\n const kernelExport = (OGKernel as Record<string, unknown>).booleanCurvedRegions2D;\n if (typeof kernelExport !== \"function\") {\n throw new Error(\"booleanCurvedRegions2D is unavailable in the loaded WASM package\");\n }\n const result = (kernelExport as (a: string, b: string, operation: PlanarBooleanOperation) => string)(\n JSON.stringify(a), JSON.stringify(b), operation,\n );\n return JSON.parse(result) as CurvedRegion2D[];\n}\n","/**\n * Public OpenGeometry JavaScript entrypoint.\n */\nimport init, {\n OGAnalyticBrep,\n OGAnalyticTessellation,\n OGSceneManager,\n WorkPlane,\n analyzeProfile,\n extrudeBrepFaceDirectional,\n validateAnalyticBrep,\n tessellate_brep,\n Vector3,\n} from \"../opengeometry/pkg/opengeometry\";\nimport { SpotLabel } from \"./src/markup/spotMarker\";\nimport { OPEN_GEOMETRY_THREE_VERSION, OpenGeometryOptions } from \"./src/base-types\";\n\nexport type OUTLINE_TYPE = \"front\" | \"side\" | \"top\";\n\n/**\n * Binary STL export payload returned by export helpers.\n */\nexport interface OGStlExportResult {\n bytes: Uint8Array;\n reportJson: string;\n}\n\n/**\n * STEP text export payload returned by export helpers.\n */\nexport interface OGStepExportResult {\n text: string;\n reportJson: string;\n}\n\n/**\n * IFC text export payload returned by export helpers.\n */\nexport interface OGIfcExportResult {\n text: string;\n reportJson: string;\n}\n\n/**\n * Shared runtime entrypoint used to initialize the OpenGeometry wasm module.\n */\nexport class OpenGeometry {\n static version = OPEN_GEOMETRY_THREE_VERSION;\n static instance: OpenGeometry | null = null;\n\n private _enableDebug: boolean = false;\n\n get enableDebug() {\n return this._enableDebug;\n }\n\n /**\n * Enables or disables debug mode for OpenGeometry.\n * When enabled, it logs debug information to the console.\n * Addtionally,\n * 1. The geometry will be rendered with a semi-transparent material.\n * 2. The faces will be rendered with a random color.\n * 3. The normals will be rendered for better visualization.\n * @param value - A boolean indicating whether to enable or disable debug mode.\n */\n set enableDebug(value: boolean) {\n this._enableDebug = value;\n if (this._enableDebug) {\n console.log(\"OpenGeometry Debug Mode Enabled\");\n }\n }\n\n constructor() {}\n\n /**\n * Asynchronously initializes the OpenGeometry wasm runtime and returns a\n * cached singleton instance on subsequent calls.\n *\n * Call this before constructing `Vector3` or any kernel-backed wrapper.\n *\n * @param options - Configuration object for initializing OpenGeometry.\n * @returns A promise that resolves to a fully initialized OpenGeometry instance.\n *\n * @example\n * ```ts\n * await OpenGeometry.create({\n * wasmURL: \"/opengeometry_bg.wasm\",\n * });\n * ```\n */\n static async create(options: OpenGeometryOptions) {\n if (!OpenGeometry.instance) {\n const og = new OpenGeometry();\n await og.setup(options.wasmURL);\n OpenGeometry.instance = og;\n }\n return OpenGeometry.instance;\n }\n\n private async setup(wasmURL?: string) {\n if (wasmURL) {\n await init({ module_or_path: wasmURL });\n return;\n }\n\n await init();\n }\n}\n\n/**\n * Scene manager that stores serialized BRep snapshots in wasm for projection,\n * export, and other scene-level workflows.\n */\nexport { OGSceneManager };\nexport { OGAnalyticBrep, OGAnalyticTessellation };\nexport { WorkPlane, analyzeProfile, extrudeBrepFaceDirectional, validateAnalyticBrep };\nexport { tessellate_brep };\nexport { AnalyticSolid } from \"./src/shapes/analytic-solid\";\nexport { AnalyticPattern, circularPattern, linearPattern, rectangularPattern } from \"./src/shapes/analytic-pattern\";\nexport type { AnalyticPatternHit, AnalyticPatternInstance } from \"./src/shapes/analytic-pattern\";\nexport type {\n AnalyticBooleanOp, AnalyticBooleanReport, AnalyticBrepOptions, AnalyticFrame, AnalyticAccuracy, AnalyticAnnularSectorOpening, AnalyticProfileEdge, AnalyticPolygonLoftAlignment, AnalyticProjectionCamera, AnalyticProjectionHlr, AnalyticPrimitiveOptions, AnalyticTessellationStats, AnalyticTessellationOptions, AnalyticStepExport, AnalyticStlExport,\n} from \"./src/shapes/analytic-solid\";\n\n/**\n * Shared wasm-backed vector type used throughout the public API.\n *\n * Initialize `OpenGeometry.create(...)` before constructing `Vector3`.\n */\nexport { Vector3 };\n\nexport { SpotLabel };\n\n/**\n * Primitive wrappers (line/polyline/arc/rectangle/curve).\n */\nexport * from \"./src/primitives/index\";\n/**\n * Shape wrappers (polygon/cuboid/cylinder/wedge/opening/sweep/sphere).\n */\nexport * from \"./src/shapes/index\";\n/**\n * Reusable example builders for quickly wiring demo scenes.\n */\nexport * from \"./src/examples/index\";\n/**\n * First-class freeform geometry wrapper around the kernel OGFreeformGeometry API.\n */\nexport * from \"./src/freeform/index\";\n/**\n * Editing helpers that operate on parametric entities and freeform geometry.\n */\nexport * from \"./src/editor/index\";\n/**\n * Kernel-backed modeling operations (incl. analytic polyline offset → regions).\n */\nexport * from \"./src/operations/index\";\n\nexport { AnalyticCurve } from \"./src/primitives/analytic-curve\";\nexport type { AnalyticCurveOptions, AnalyticCurveStats } from \"./src/primitives/analytic-curve\";\nexport { AnalyticTessellationWorker } from \"./src/rendering/analytic-tessellation\";\nexport type { AnalyticWorkerOptions, AnalyticTessellationData } from \"./src/rendering/analytic-tessellation\";\nexport { AnalyticLodController, deflectionBucket, worldUnitsPerPixel, uniformScale } from \"./src/rendering/analytic-lod\";\nexport type { AnalyticLodOptions } from \"./src/rendering/analytic-lod\";\nexport { analyticIfcText } from \"./src/export/analytic-ifc\";\nexport type { AnalyticExchangeBodyV2, IfcPreparedValue } from \"./src/export/analytic-ifc\";\n"],"names":["wasm","cachedUint8ArrayMemory0","getUint8ArrayMemory0","byteLength","Uint8Array","memory","buffer","getArrayU8FromWasm0","ptr","len","subarray","addToExternrefTable0","obj","idx","__externref_table_alloc","__wbindgen_export_2","set","handleError","f","args","apply","e","__wbindgen_exn_store","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","Error","getStringFromWasm0","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encode","encodeString","encodeInto","arg","view","buf","read","length","written","passStringToWasm0","malloc","realloc","undefined","mem","offset","code","charCodeAt","slice","ret","_assertClass","instance","klass","name","takeFromExternrefTable0","value","get","__externref_table_dealloc","cachedFloat64ArrayMemory0","getFloat64ArrayMemory0","Float64Array","getArrayF64FromWasm0","cachedDataViewMemory0","getDataViewMemory0","detached","DataView","passArrayJsValueToWasm0","array","i","add","setUint32","isLikeNone","x","booleanRegions2D","a_json","b_json","operation","ptr0","__wbindgen_malloc","__wbindgen_realloc","len0","ptr1","len1","ptr2","len2","OGOffsetRegionsResult","__wrap","booleanCurvedRegions2D","deferred5_0","deferred5_1","ptr4","len4","__wbindgen_free","passArrayF64ToWasm0","offsetPolylineRegions","centreline_flat","width","closed","miter_limit","offsetPolylineGroupRegions","polylines_json","offsetRingVariable","ring_flat","distances","holes_json","extrudeBrepFace","local_brep_serialized","height","deferred3_0","deferred3_1","extrudeBrepFaceDirectional","direction","extent_kind","d_plus","d_minus","analyzeProfile","flat_points","getArrayJsValueFromWasm0","result","push","getUint32","__externref_drop_slice","validateAnalyticBrep","serialized","tessellate_brep","deflection","options_json","OGAnalyticTessellation","cachedFloat32ArrayMemory0","getFloat32ArrayMemory0","Float32Array","getArrayF32FromWasm0","cachedUint32ArrayMemory0","getUint32ArrayMemory0","Uint32Array","getArrayU32FromWasm0","FinalizationRegistry","register","__wbg_matrix3_free","Matrix4Finalization","unregister","__wbg_matrix4_free","Matrix4","Object","create","prototype","__wbg_ptr","__destroy_into_raw","free","elements","matrix4_elements","v1","constructor","matrix4_new","m0","m1","m2","m3","m4","m5","m6","m7","m8","m9","m10","m11","m12","m13","m14","m15","matrix4_set","clone","matrix4_clone","identity","matrix4_identity","determinant","matrix4_determinant","adjucate","matrix4_adjucate","inverse","matrix4_inverse","multiply","other","matrix4_multiply","incoming","matrix4_add","subtract","matrix4_subtract","flatten","matrix4_flatten","get_element_at","index","matrix4_get_element_at","is_zero","matrix4_is_zero","is_identity","matrix4_is_identity","transpose","matrix4_transpose","OGAnalyticBrepFinalization","__wbg_oganalyticbrep_free","OGAnalyticBrep","oganalyticbrep_new","from_primitive","config_json","oganalyticbrep_from_primitive","get_brep_serialized","deferred2_0","deferred2_1","oganalyticbrep_get_brep_serialized","export_step","length_unit","oganalyticbrep_export_step","placed","frame_json","scale","oganalyticbrep_placed","prepare_ifc_exchange","oganalyticbrep_prepare_ifc_exchange","face_normal_at","face_id","point","oganalyticbrep_face_normal_at","v2","classify_point","oganalyticbrep_classify_point","project_to_2d_lines","camera_json","hlr_json","deferred4_0","deferred4_1","oganalyticbrep_project_to_2d_lines","ptr3","len3","boolean_brep","id","oganalyticbrep_boolean_brep","subtract_planar_cutters","cutters_json","oganalyticbrep_subtract_planar_cutters","shell","thickness","oganalyticbrep_shell","get_boolean_report_serialized","oganalyticbrep_get_boolean_report_serialized","tessellate","oganalyticbrep_tessellate","get_face_count","oganalyticbrep_get_face_count","get_edge_count","oganalyticbrep_get_edge_count","get_id","deferred1_0","deferred1_1","oganalyticbrep_get_id","get_bounds","oganalyticbrep_get_bounds","get_vertex_count","oganalyticbrep_get_vertex_count","get_revision","oganalyticbrep_get_revision","BigInt","asUintN","OGAnalyticTessellationFinalization","__wbg_oganalytictessellation_free","positions","oganalytictessellation_positions","normals","oganalytictessellation_normals","indices","oganalytictessellation_indices","triangle_face_ids","oganalytictessellation_triangle_face_ids","outline_positions","oganalytictessellation_outline_positions","outline_edge_ids","oganalytictessellation_outline_edge_ids","revision","oganalytictessellation_revision","achieved_deflection","oganalytictessellation_achieved_deflection","OGArcFinalization","__wbg_ogarc_free","OGArc","ogarc_set_id","ogarc_id","ogarc_new","set_config","center","radius","start_angle","end_angle","segments","Vector3","ogarc_set_config","set_center","ogarc_set_center","set_transform","position","rotation","ogarc_set_transform","set_translation","translation","ogarc_set_translation","set_rotation","ogarc_set_rotation","set_scale","ogarc_set_scale","generate_geometry","ogarc_generate_geometry","dispose_points","ogarc_dispose_points","destroy","ogarc_destroy","ogarc_get_brep_serialized","get_local_brep_serialized","ogarc_get_local_brep_serialized","get_geometry_serialized","ogarc_get_geometry_serialized","get_local_geometry_serialized","ogarc_get_local_geometry_serialized","get_geometry_buffer","ogarc_get_geometry_buffer","get_local_geometry_buffer","ogarc_get_local_geometry_buffer","get_anchor","ogarc_get_anchor","OGCuboidFinalization","__wbg_ogcuboid_free","OGCuboid","ogcuboid_set_id","ogcuboid_id","ogcuboid_new","depth","ogcuboid_set_config","ogcuboid_set_center","ogcuboid_set_transform","ogcuboid_set_translation","ogcuboid_set_rotation","ogcuboid_set_scale","ogcuboid_generate_geometry","ogcuboid_get_brep_serialized","ogcuboid_get_local_brep_serialized","ogcuboid_get_geometry_serialized","ogcuboid_get_local_geometry_serialized","ogcuboid_get_geometry_buffer","ogcuboid_get_local_geometry_buffer","get_outline_geometry_serialized","ogcuboid_get_outline_geometry_serialized","get_local_outline_geometry_serialized","ogcuboid_get_local_outline_geometry_serialized","get_outline_geometry_buffer","ogcuboid_get_outline_geometry_buffer","get_local_outline_geometry_buffer","ogcuboid_get_local_outline_geometry_buffer","ogcuboid_get_anchor","OGCurveFinalization","__wbg_ogcurve_free","OGCurve","ogcurve_set_id","ogcurve_id","ogcurve_new","control_points","ogcurve_set_config","ogcurve_set_transform","ogcurve_set_translation","ogcurve_set_rotation","ogcurve_set_scale","ogcurve_generate_geometry","ogcurve_get_brep_serialized","ogcurve_get_local_brep_serialized","ogcurve_get_geometry_serialized","ogcurve_get_local_geometry_serialized","ogcurve_get_geometry_buffer","ogcurve_get_local_geometry_buffer","ogcurve_get_anchor","set_anchor","anchor","ogcurve_set_anchor","reset_anchor","ogcurve_reset_anchor","get_offset_serialized","distance","acute_threshold_degrees","bevel","ogcurve_get_offset_serialized","dispose","ogcurve_dispose","OGCylinderFinalization","__wbg_ogcylinder_free","OGCylinder","ogcylinder_set_id","ogcylinder_id","ogcylinder_new","angle","ogcylinder_set_config","ogcylinder_set_center","ogcylinder_set_transform","ogcylinder_set_translation","ogcylinder_set_rotation","ogcylinder_set_scale","generate_brep","ogcylinder_generate_brep","clean_geometry","ogcylinder_clean_geometry","ogcylinder_generate_geometry","ogcylinder_get_brep_serialized","ogcylinder_get_local_brep_serialized","ogcylinder_get_geometry_serialized","ogcylinder_get_local_geometry_serialized","ogcylinder_get_geometry_buffer","ogcylinder_get_local_geometry_buffer","ogcylinder_get_outline_geometry_serialized","ogcylinder_get_local_outline_geometry_serialized","ogcylinder_get_outline_geometry_buffer","ogcylinder_get_local_outline_geometry_buffer","ogcylinder_get_anchor","__wbg_ogellipticalarc_free","__wbg_ogentityregistry_free","OGFreeformEditorFinalization","__wbg_ogfreeformeditor_free","OGFreeformEditor","ogfreeformeditor_new","getTopologyRenderData","geometry","OGFreeformGeometry","ogfreeformeditor_getTopologyRenderData","getFaceInfo","ogfreeformeditor_getFaceInfo","getEdgeInfo","edge_id","ogfreeformeditor_getEdgeInfo","getVertexInfo","vertex_id","ogfreeformeditor_getVertexInfo","getEditCapabilities","ogfreeformeditor_getEditCapabilities","getFaceEditCapabilities","ogfreeformeditor_getFaceEditCapabilities","getEdgeEditCapabilities","ogfreeformeditor_getEdgeEditCapabilities","getVertexEditCapabilities","ogfreeformeditor_getVertexEditCapabilities","pushPullFace","ogfreeformeditor_pushPullFace","moveFace","ogfreeformeditor_moveFace","moveEdge","ogfreeformeditor_moveEdge","moveVertex","ogfreeformeditor_moveVertex","extrudeFace","ogfreeformeditor_extrudeFace","cutFace","start_edge_id","start_t","end_edge_id","end_t","ogfreeformeditor_cutFace","insertVertexOnEdge","t","ogfreeformeditor_insertVertexOnEdge","splitEdge","ogfreeformeditor_splitEdge","loopCut","ogfreeformeditor_loopCut","removeVertex","ogfreeformeditor_removeVertex","OGFreeformGeometryFinalization","__wbg_ogfreeformgeometry_free","ogfreeformgeometry_new","ogfreeformgeometry_id","getBrepSerialized","ogfreeformgeometry_getBrepSerialized","getLocalBrepSerialized","ogfreeformgeometry_getLocalBrepSerialized","getGeometrySerialized","ogfreeformgeometry_getGeometrySerialized","getGeometryBuffer","ogfreeformgeometry_getGeometryBuffer","getLocalGeometryBuffer","ogfreeformgeometry_getLocalGeometryBuffer","getOutlineGeometrySerialized","ogfreeformgeometry_getOutlineGeometrySerialized","getOutlineGeometryBuffer","ogfreeformgeometry_getOutlineGeometryBuffer","getLocalOutlineGeometryBuffer","ogfreeformgeometry_getLocalOutlineGeometryBuffer","getPlacementSerialized","ogfreeformgeometry_getPlacementSerialized","setPlacementSerialized","placement_serialized","ogfreeformgeometry_setPlacementSerialized","setTransform","ogfreeformgeometry_setTransform","setTranslation","ogfreeformgeometry_setTranslation","setRotation","ogfreeformgeometry_setRotation","setScale","ogfreeformgeometry_setScale","setAnchor","ogfreeformgeometry_setAnchor","OGIfcExportResultFinalization","__wbg_ogifcexportresult_free","OGIfcExportResult","text","ogifcexportresult_text","reportJson","ogifcexportresult_reportJson","OGLineFinalization","__wbg_ogline_free","OGLine","ogline_set_id","ogline_id","ogline_new","start","end","ogline_set_config","ogline_set_transform","ogline_set_translation","ogline_set_rotation","ogline_set_scale","ogline_generate_geometry","ogline_dispose_points","ogline_destroy","ogline_get_brep_serialized","ogline_get_local_brep_serialized","ogline_get_geometry_serialized","ogline_get_local_geometry_serialized","ogline_get_geometry_buffer","ogline_get_local_geometry_buffer","ogline_get_anchor","ogline_set_anchor","ogline_reset_anchor","ogline_get_offset_serialized","get_dxf_serialized","ogline_get_dxf_serialized","OGOffsetRegionsResultFinalization","__wbg_ogoffsetregionsresult_free","regionsSerialized","ogoffsetregionsresult_regionsSerialized","OGPolygonFinalization","__wbg_ogpolygon_free","OGPolygon","ogpolygon_set_id","ogpolygon_id","ogpolygon_new","points","ogpolygon_set_config","ogpolygon_set_transform","ogpolygon_set_translation","ogpolygon_set_rotation","ogpolygon_set_scale","add_vertices","vertices","ogpolygon_add_vertices","add_holes","hole","ogpolygon_add_holes","ogpolygon_clean_geometry","ogpolygon_generate_brep","ogpolygon_generate_geometry","ogpolygon_get_brep_serialized","ogpolygon_get_local_brep_serialized","ogpolygon_get_geometry_serialized","ogpolygon_get_local_geometry_serialized","ogpolygon_get_geometry_buffer","ogpolygon_get_local_geometry_buffer","ogpolygon_get_outline_geometry_serialized","ogpolygon_get_local_outline_geometry_serialized","ogpolygon_get_outline_geometry_buffer","ogpolygon_get_local_outline_geometry_buffer","ogpolygon_get_anchor","ogpolygon_set_anchor","ogpolygon_reset_anchor","OGPolylineFinalization","__wbg_ogpolyline_free","OGPolyline","ogpolyline_set_id","ogpolyline_id","ogpolyline_new","ogpolyline_clone","ogpolyline_set_config","ogpolyline_set_transform","ogpolyline_set_translation","ogpolyline_set_rotation","ogpolyline_set_scale","ogpolyline_generate_geometry","add_multiple_points","ogpolyline_add_multiple_points","add_point","ogpolyline_add_point","get_points","ogpolyline_get_points","get_raw_points","ogpolyline_get_raw_points","is_closed","ogpolyline_is_closed","ogpolyline_get_offset_serialized","check_closed_test","ogpolyline_check_closed_test","ogpolyline_get_brep_serialized","ogpolyline_get_local_brep_serialized","ogpolyline_get_geometry_serialized","ogpolyline_get_local_geometry_serialized","ogpolyline_get_geometry_buffer","ogpolyline_get_local_geometry_buffer","ogpolyline_set_anchor","ogpolyline_reset_anchor","OGRectangleFinalization","__wbg_ogrectangle_free","OGRectangle","ogrectangle_set_id","ogrectangle_id","ogrectangle_new","breadth","ogrectangle_set_config","ogrectangle_set_center","ogrectangle_set_transform","ogrectangle_set_translation","ogrectangle_set_rotation","ogrectangle_set_scale","ogrectangle_generate_geometry","ogrectangle_get_brep_serialized","ogrectangle_get_local_brep_serialized","ogrectangle_get_geometry_serialized","ogrectangle_get_local_geometry_serialized","ogrectangle_get_geometry_buffer","ogrectangle_get_local_geometry_buffer","ogrectangle_get_anchor","ogrectangle_get_offset_serialized","OGSceneManagerFinalization","__wbg_ogscenemanager_free","OGSceneManager","ogscenemanager_new","createScene","ogscenemanager_createScene","removeScene","scene_id","ogscenemanager_removeScene","setCurrentScene","ogscenemanager_setCurrentScene","getCurrentSceneId","ogscenemanager_getCurrentSceneId","listScenes","ogscenemanager_listScenes","getSceneSerialized","ogscenemanager_getSceneSerialized","removeEntityFromScene","entity_id","ogscenemanager_removeEntityFromScene","addBrepEntityToScene","kind","brep_serialized","ogscenemanager_addBrepEntityToScene","addBrepEntityToCurrentScene","ogscenemanager_addBrepEntityToCurrentScene","replaceBrepEntityInScene","ogscenemanager_replaceBrepEntityInScene","replaceBrepEntityInCurrentScene","ogscenemanager_replaceBrepEntityInCurrentScene","refreshBrepEntityInScene","ogscenemanager_refreshBrepEntityInScene","refreshBrepEntityInCurrentScene","ogscenemanager_refreshBrepEntityInCurrentScene","addLineToScene","line","ogscenemanager_addLineToScene","addLineToCurrentScene","ogscenemanager_addLineToCurrentScene","addPolylineToScene","polyline","ogscenemanager_addPolylineToScene","addPolylineToCurrentScene","ogscenemanager_addPolylineToCurrentScene","addArcToScene","arc","ogscenemanager_addArcToScene","addArcToCurrentScene","ogscenemanager_addArcToCurrentScene","addRectangleToScene","rectangle","ogscenemanager_addRectangleToScene","addRectangleToCurrentScene","ogscenemanager_addRectangleToCurrentScene","addPolygonToScene","polygon","ogscenemanager_addPolygonToScene","addPolygonToCurrentScene","ogscenemanager_addPolygonToCurrentScene","addCuboidToScene","cuboid","ogscenemanager_addCuboidToScene","addCuboidToCurrentScene","ogscenemanager_addCuboidToCurrentScene","addCylinderToScene","cylinder","ogscenemanager_addCylinderToScene","addCylinderToCurrentScene","ogscenemanager_addCylinderToCurrentScene","addSphereToScene","sphere","OGSphere","ogscenemanager_addSphereToScene","addSphereToCurrentScene","ogscenemanager_addSphereToCurrentScene","addWedgeToScene","wedge","OGWedge","ogscenemanager_addWedgeToScene","addWedgeToCurrentScene","ogscenemanager_addWedgeToCurrentScene","projectTo2DCamera","ogscenemanager_projectTo2DCamera","projectTo2DCameraPretty","ogscenemanager_projectTo2DCameraPretty","projectTo2DLines","ogscenemanager_projectTo2DLines","projectTo2DLinesPretty","ogscenemanager_projectTo2DLinesPretty","projectCurrentTo2DCamera","ogscenemanager_projectCurrentTo2DCamera","projectCurrentTo2DLines","ogscenemanager_projectCurrentTo2DLines","exportBrepToStl","ogscenemanager_exportBrepToStl","OGStlExportResult","exportSceneToStl","ogscenemanager_exportSceneToStl","exportCurrentSceneToStl","ogscenemanager_exportCurrentSceneToStl","exportBrepToStep","ogscenemanager_exportBrepToStep","OGStepExportResult","exportSceneToStep","ogscenemanager_exportSceneToStep","exportCurrentSceneToStep","ogscenemanager_exportCurrentSceneToStep","exportBrepToIfc","ogscenemanager_exportBrepToIfc","exportSceneToIfc","ogscenemanager_exportSceneToIfc","exportCurrentSceneToIfc","ogscenemanager_exportCurrentSceneToIfc","OGSphereFinalization","__wbg_ogsphere_free","ogsphere_set_id","ogsphere_id","ogsphere_new","width_segments","height_segments","ogsphere_set_config","ogsphere_set_center","ogsphere_set_transform","ogsphere_set_translation","ogsphere_set_rotation","ogsphere_set_scale","ogsphere_generate_brep","ogsphere_clean_geometry","ogsphere_generate_geometry","ogsphere_get_brep_serialized","ogsphere_get_local_brep_serialized","ogsphere_get_geometry_serialized","ogsphere_get_local_geometry_serialized","ogsphere_get_geometry_buffer","ogsphere_get_local_geometry_buffer","ogsphere_get_outline_geometry_serialized","ogsphere_get_local_outline_geometry_serialized","ogsphere_get_outline_geometry_buffer","ogsphere_get_local_outline_geometry_buffer","OGStepExportResultFinalization","__wbg_ogstepexportresult_free","ogstepexportresult_text","ogstepexportresult_reportJson","OGStlExportResultFinalization","__wbg_ogstlexportresult_free","bytes","ogstlexportresult_bytes","ogstlexportresult_reportJson","OGSweepFinalization","__wbg_ogsweep_free","OGSweep","ogsweep_set_id","ogsweep_id","ogsweep_new","path_points","profile_points","ogsweep_set_config","set_config_with_caps","cap_start","cap_end","ogsweep_set_config_with_caps","set_caps","ogsweep_set_caps","ogsweep_set_transform","ogsweep_set_translation","ogsweep_set_rotation","ogsweep_set_scale","ogsweep_generate_brep","ogsweep_clean_geometry","ogsweep_generate_geometry","ogsweep_get_brep_serialized","ogsweep_get_local_brep_serialized","ogsweep_get_geometry_serialized","ogsweep_get_local_geometry_serialized","ogsweep_get_geometry_buffer","ogsweep_get_local_geometry_buffer","ogsweep_get_outline_geometry_serialized","ogsweep_get_local_outline_geometry_serialized","ogsweep_get_outline_geometry_buffer","ogsweep_get_local_outline_geometry_buffer","ogsweep_get_anchor","ogsweep_set_anchor","ogsweep_reset_anchor","OGWedgeFinalization","__wbg_ogwedge_free","ogwedge_set_id","ogwedge_id","ogwedge_new","ogwedge_set_config","ogwedge_set_center","ogwedge_set_transform","ogwedge_set_translation","ogwedge_set_rotation","ogwedge_set_scale","ogwedge_generate_brep","ogwedge_clean_geometry","ogwedge_generate_geometry","ogwedge_get_brep_serialized","ogwedge_get_local_brep_serialized","ogwedge_get_geometry_serialized","ogwedge_get_local_geometry_serialized","ogwedge_get_geometry_buffer","ogwedge_get_local_geometry_buffer","ogwedge_get_outline_geometry_serialized","ogwedge_get_local_outline_geometry_serialized","ogwedge_get_outline_geometry_buffer","ogwedge_get_local_outline_geometry_buffer","ogwedge_get_anchor","Vector3Finalization","__wbg_vector3_free","__unwrap","jsValue","__wbg_get_vector3_x","arg0","__wbg_set_vector3_x","y","__wbg_get_vector3_y","__wbg_set_vector3_y","z","__wbg_get_vector3_z","__wbg_set_vector3_z","vector3_new","vector3_add","add_scalar","scalar","vector3_add_scalar","vector3_subtract","subtract_scalar","vector3_subtract_scalar","vector3_clone","zero","vector3_zero","copy","vector3_copy","multiply_scalar","vector3_multiply_scalar","vector3_multiply","divide","vector3_divide","divide_scalar","vector3_divide_scalar","negate","vector3_negate","dot","vector3_dot","magnitude","vector3_magnitude","vector3_length","normalize","vector3_normalize","cross","vector3_cross","vector3_distance","apply_matrix4","matrix","vector3_apply_matrix4","WorkPlaneFinalization","__wbg_workplane_free","WorkPlane","fromOriginNormal","origin","normal","workplane_fromOriginNormal","u_hint","workplane_new","liftPoint","u","v","workplane_liftPoint","liftPoints","uv","workplane_liftPoints","workplane_origin","workplane_normal","__wbg_load","module","imports","Response","WebAssembly","instantiateStreaming","headers","console","warn","arrayBuffer","instantiate","Instance","__wbg_get_imports","wbg","__wbg_getRandomValues_38097e921c2494c3","arg1","globalThis","crypto","getRandomValues","arguments","__wbg_vector3_new","__wbg_vector3_unwrap","__wbindgen_init_externref_table","table","grow","__wbindgen_string_new","__wbindgen_throw","__wbg_finalize_init","exports","__wbg_init","__wbindgen_wasm_module","__wbindgen_start","module_or_path","getPrototypeOf","URL","import","meta","url","Request","fetch","uuidv4","cloneVector","toObjectTransformation","parseJson","toVector3","toPlainVector3","normalizePlacement","KernelFreeformEditor","serializeBrepLike","normalizeOptions","curveFrame","OGKernel.extrudeBrepFace","primitiveOptions","OGKernel[\"OGSweep\"]","EPSILON","areClose","OGKernel.offsetPolylineRegions","OGKernel.offsetRingVariable","OGKernel.offsetPolylineGroupRegions","OGKernel.booleanRegions2D","OGKernel.booleanCurvedRegions2D","init"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkGA;AACO,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AAC7D,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP,CAAC;AA0JD;AACO,SAAS,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;AACjE,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;AACjG,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAC;AACvL,IAAI,OAAO,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAClG,CAAC;AACD;AACO,SAAS,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;AACxE,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;AAC5E,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;AACjG,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;AACtL,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;AAC9G,CAAC;AA8BD;AACuB,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;AACvH,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/B,IAAI,OAAO,CAAC,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;AACrF;;AClUA,IAAIA,IAAI;AAER,IAAIC,uBAAuB,GAAG,IAAI;AAElC,SAASC,oBAAoBA,GAAG;EAC5B,IAAID,uBAAuB,KAAK,IAAI,IAAIA,uBAAuB,CAACE,UAAU,KAAK,CAAC,EAAE;IAC9EF,uBAAuB,GAAG,IAAIG,UAAU,CAACJ,IAAI,CAACK,MAAM,CAACC,MAAM,CAAC;AAChE;AACA,EAAA,OAAOL,uBAAuB;AAClC;AAEA,SAASM,mBAAmBA,CAACC,GAAG,EAAEC,GAAG,EAAE;EACnCD,GAAG,GAAGA,GAAG,KAAK,CAAC;AACf,EAAA,OAAON,oBAAoB,EAAE,CAACQ,QAAQ,CAACF,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAG,CAAC,GAAGC,GAAG,CAAC;AAClE;AAEA,SAASE,oBAAoBA,CAACC,GAAG,EAAE;AAC/B,EAAA,MAAMC,GAAG,GAAGb,IAAI,CAACc,uBAAuB,EAAE;EAC1Cd,IAAI,CAACe,mBAAmB,CAACC,GAAG,CAACH,GAAG,EAAED,GAAG,CAAC;AACtC,EAAA,OAAOC,GAAG;AACd;AAEA,SAASI,WAAWA,CAACC,CAAC,EAAEC,IAAI,EAAE;EAC1B,IAAI;AACA,IAAA,OAAOD,CAAC,CAACE,KAAK,CAAC,IAAI,EAAED,IAAI,CAAC;GAC7B,CAAC,OAAOE,CAAC,EAAE;AACR,IAAA,MAAMR,GAAG,GAAGF,oBAAoB,CAACU,CAAC,CAAC;AACnCrB,IAAAA,IAAI,CAACsB,oBAAoB,CAACT,GAAG,CAAC;AAClC;AACJ;AAEA,MAAMU,iBAAiB,GAAI,OAAOC,WAAW,KAAK,WAAW,GAAG,IAAIA,WAAW,CAAC,OAAO,EAAE;AAAEC,EAAAA,SAAS,EAAE,IAAI;AAAEC,EAAAA,KAAK,EAAE;AAAK,CAAC,CAAC,GAAG;EAAEC,MAAM,EAAEA,MAAM;IAAE,MAAMC,KAAK,CAAC,2BAA2B,CAAC;AAAC;AAAE,CAAG;AAE7L,IAAI,OAAOJ,WAAW,KAAK,WAAW,EAAE;EAAED,iBAAiB,CAACI,MAAM,EAAE;AAAE;AAEtE,SAASE,kBAAkBA,CAACrB,GAAG,EAAEC,GAAG,EAAE;EAClCD,GAAG,GAAGA,GAAG,KAAK,CAAC;AACf,EAAA,OAAOe,iBAAiB,CAACI,MAAM,CAACzB,oBAAoB,EAAE,CAACQ,QAAQ,CAACF,GAAG,EAAEA,GAAG,GAAGC,GAAG,CAAC,CAAC;AACpF;AAEA,IAAIqB,eAAe,GAAG,CAAC;AAEvB,MAAMC,iBAAiB,GAAI,OAAOC,WAAW,KAAK,WAAW,GAAG,IAAIA,WAAW,CAAC,OAAO,CAAC,GAAG;EAAEC,MAAM,EAAEA,MAAM;IAAE,MAAML,KAAK,CAAC,2BAA2B,CAAC;AAAC;AAAE,CAAG;AAE3J,MAAMM,YAAY,GAAI,OAAOH,iBAAiB,CAACI,UAAU,KAAK,UAAU,GAClE,UAAUC,GAAG,EAAEC,IAAI,EAAE;AACvB,EAAA,OAAON,iBAAiB,CAACI,UAAU,CAACC,GAAG,EAAEC,IAAI,CAAC;AAClD,CAAC,GACK,UAAUD,GAAG,EAAEC,IAAI,EAAE;AACvB,EAAA,MAAMC,GAAG,GAAGP,iBAAiB,CAACE,MAAM,CAACG,GAAG,CAAC;AACzCC,EAAAA,IAAI,CAACrB,GAAG,CAACsB,GAAG,CAAC;EACb,OAAO;IACHC,IAAI,EAAEH,GAAG,CAACI,MAAM;IAChBC,OAAO,EAAEH,GAAG,CAACE;GAChB;AACL,CAAE;AAEF,SAASE,iBAAiBA,CAACN,GAAG,EAAEO,MAAM,EAAEC,OAAO,EAAE;EAE7C,IAAIA,OAAO,KAAKC,SAAS,EAAE;AACvB,IAAA,MAAMP,GAAG,GAAGP,iBAAiB,CAACE,MAAM,CAACG,GAAG,CAAC;IACzC,MAAM5B,GAAG,GAAGmC,MAAM,CAACL,GAAG,CAACE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC;AACvCtC,IAAAA,oBAAoB,EAAE,CAACQ,QAAQ,CAACF,GAAG,EAAEA,GAAG,GAAG8B,GAAG,CAACE,MAAM,CAAC,CAACxB,GAAG,CAACsB,GAAG,CAAC;IAC/DR,eAAe,GAAGQ,GAAG,CAACE,MAAM;AAC5B,IAAA,OAAOhC,GAAG;AACd;AAEA,EAAA,IAAIC,GAAG,GAAG2B,GAAG,CAACI,MAAM;EACpB,IAAIhC,GAAG,GAAGmC,MAAM,CAAClC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC;AAE9B,EAAA,MAAMqC,GAAG,GAAG5C,oBAAoB,EAAE;EAElC,IAAI6C,MAAM,GAAG,CAAC;AAEd,EAAA,OAAOA,MAAM,GAAGtC,GAAG,EAAEsC,MAAM,EAAE,EAAE;AAC3B,IAAA,MAAMC,IAAI,GAAGZ,GAAG,CAACa,UAAU,CAACF,MAAM,CAAC;IACnC,IAAIC,IAAI,GAAG,IAAI,EAAE;AACjBF,IAAAA,GAAG,CAACtC,GAAG,GAAGuC,MAAM,CAAC,GAAGC,IAAI;AAC5B;EAEA,IAAID,MAAM,KAAKtC,GAAG,EAAE;IAChB,IAAIsC,MAAM,KAAK,CAAC,EAAE;AACdX,MAAAA,GAAG,GAAGA,GAAG,CAACc,KAAK,CAACH,MAAM,CAAC;AAC3B;IACAvC,GAAG,GAAGoC,OAAO,CAACpC,GAAG,EAAEC,GAAG,EAAEA,GAAG,GAAGsC,MAAM,GAAGX,GAAG,CAACI,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;AAC/D,IAAA,MAAMH,IAAI,GAAGnC,oBAAoB,EAAE,CAACQ,QAAQ,CAACF,GAAG,GAAGuC,MAAM,EAAEvC,GAAG,GAAGC,GAAG,CAAC;AACrE,IAAA,MAAM0C,GAAG,GAAGjB,YAAY,CAACE,GAAG,EAAEC,IAAI,CAAC;IAEnCU,MAAM,IAAII,GAAG,CAACV,OAAO;AACrBjC,IAAAA,GAAG,GAAGoC,OAAO,CAACpC,GAAG,EAAEC,GAAG,EAAEsC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC;AAC5C;AAEAjB,EAAAA,eAAe,GAAGiB,MAAM;AACxB,EAAA,OAAOvC,GAAG;AACd;AAEA,SAAS4C,YAAYA,CAACC,QAAQ,EAAEC,KAAK,EAAE;AACnC,EAAA,IAAI,EAAED,QAAQ,YAAYC,KAAK,CAAC,EAAE;IAC9B,MAAM,IAAI1B,KAAK,CAAC,CAAA,qBAAA,EAAwB0B,KAAK,CAACC,IAAI,EAAE,CAAC;AACzD;AACJ;AAEA,SAASC,uBAAuBA,CAAC3C,GAAG,EAAE;EAClC,MAAM4C,KAAK,GAAGzD,IAAI,CAACe,mBAAmB,CAAC2C,GAAG,CAAC7C,GAAG,CAAC;AAC/Cb,EAAAA,IAAI,CAAC2D,yBAAyB,CAAC9C,GAAG,CAAC;AACnC,EAAA,OAAO4C,KAAK;AAChB;AAEA,IAAIG,yBAAyB,GAAG,IAAI;AAEpC,SAASC,sBAAsBA,GAAG;EAC9B,IAAID,yBAAyB,KAAK,IAAI,IAAIA,yBAAyB,CAACzD,UAAU,KAAK,CAAC,EAAE;IAClFyD,yBAAyB,GAAG,IAAIE,YAAY,CAAC9D,IAAI,CAACK,MAAM,CAACC,MAAM,CAAC;AACpE;AACA,EAAA,OAAOsD,yBAAyB;AACpC;AAEA,SAASG,oBAAoBA,CAACvD,GAAG,EAAEC,GAAG,EAAE;EACpCD,GAAG,GAAGA,GAAG,KAAK,CAAC;AACf,EAAA,OAAOqD,sBAAsB,EAAE,CAACnD,QAAQ,CAACF,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAG,CAAC,GAAGC,GAAG,CAAC;AACpE;AAEA,IAAIuD,qBAAqB,GAAG,IAAI;AAEhC,SAASC,kBAAkBA,GAAG;AAC1B,EAAA,IAAID,qBAAqB,KAAK,IAAI,IAAIA,qBAAqB,CAAC1D,MAAM,CAAC4D,QAAQ,KAAK,IAAI,IAAKF,qBAAqB,CAAC1D,MAAM,CAAC4D,QAAQ,KAAKrB,SAAS,IAAImB,qBAAqB,CAAC1D,MAAM,KAAKN,IAAI,CAACK,MAAM,CAACC,MAAO,EAAE;IAClM0D,qBAAqB,GAAG,IAAIG,QAAQ,CAACnE,IAAI,CAACK,MAAM,CAACC,MAAM,CAAC;AAC5D;AACA,EAAA,OAAO0D,qBAAqB;AAChC;AAEA,SAASI,uBAAuBA,CAACC,KAAK,EAAE1B,MAAM,EAAE;AAC5C,EAAA,MAAMnC,GAAG,GAAGmC,MAAM,CAAC0B,KAAK,CAAC7B,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;AAC7C,EAAA,KAAK,IAAI8B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,KAAK,CAAC7B,MAAM,EAAE8B,CAAC,EAAE,EAAE;IACnC,MAAMC,GAAG,GAAG5D,oBAAoB,CAAC0D,KAAK,CAACC,CAAC,CAAC,CAAC;AAC1CL,IAAAA,kBAAkB,EAAE,CAACO,SAAS,CAAChE,GAAG,GAAG,CAAC,GAAG8D,CAAC,EAAEC,GAAG,EAAE,IAAI,CAAC;AAC1D;EACAzC,eAAe,GAAGuC,KAAK,CAAC7B,MAAM;AAC9B,EAAA,OAAOhC,GAAG;AACd;AAEA,SAASiE,UAAUA,CAACC,CAAC,EAAE;AACnB,EAAA,OAAOA,CAAC,KAAK7B,SAAS,IAAI6B,CAAC,KAAK,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAgBA,CAACC,MAAM,EAAEC,MAAM,EAAEC,SAAS,EAAE;AACxD,EAAA,MAAMC,IAAI,GAAGrC,iBAAiB,CAACkC,MAAM,EAAE5E,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;EACvF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,EAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACmC,MAAM,EAAE7E,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;EACvF,MAAMG,IAAI,GAAGtD,eAAe;AAC5B,EAAA,MAAMuD,IAAI,GAAG3C,iBAAiB,CAACoC,SAAS,EAAE9E,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;EAC1F,MAAMK,IAAI,GAAGxD,eAAe;AAC5B,EAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC2E,gBAAgB,CAACI,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACrE,EAAA,IAAInC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,IAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;EACA,OAAOoC,qBAAqB,CAACC,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASsC,wBAAsBA,CAACb,MAAM,EAAEC,MAAM,EAAEC,SAAS,EAAE;AAC9D,EAAA,IAAIY,WAAW;AACf,EAAA,IAAIC,WAAW;EACf,IAAI;AACA,IAAA,MAAMZ,IAAI,GAAGrC,iBAAiB,CAACkC,MAAM,EAAE5E,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACvF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACmC,MAAM,EAAE7E,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACvF,MAAMG,IAAI,GAAGtD,eAAe;AAC5B,IAAA,MAAMuD,IAAI,GAAG3C,iBAAiB,CAACoC,SAAS,EAAE9E,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMK,IAAI,GAAGxD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACyF,sBAAsB,CAACV,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAC3E,IAAA,IAAIM,IAAI,GAAGzC,GAAG,CAAC,CAAC,CAAC;AACjB,IAAA,IAAI0C,IAAI,GAAG1C,GAAG,CAAC,CAAC,CAAC;AACjB,IAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRyC,MAAAA,IAAI,GAAG,CAAC;AAAEC,MAAAA,IAAI,GAAG,CAAC;AAClB,MAAA,MAAMrC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAuC,IAAAA,WAAW,GAAGE,IAAI;AAClBD,IAAAA,WAAW,GAAGE,IAAI;AAClB,IAAA,OAAOhE,kBAAkB,CAAC+D,IAAI,EAAEC,IAAI,CAAC;AACzC,GAAC,SAAS;IACN7F,IAAI,CAAC8F,eAAe,CAACJ,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AAEA,SAASI,mBAAmBA,CAAC3D,GAAG,EAAEO,MAAM,EAAE;AACtC,EAAA,MAAMnC,GAAG,GAAGmC,MAAM,CAACP,GAAG,CAACI,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;EAC3CqB,sBAAsB,EAAE,CAAC7C,GAAG,CAACoB,GAAG,EAAE5B,GAAG,GAAG,CAAC,CAAC;EAC1CsB,eAAe,GAAGM,GAAG,CAACI,MAAM;AAC5B,EAAA,OAAOhC,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASwF,uBAAqBA,CAACC,eAAe,EAAEC,KAAK,EAAEC,MAAM,EAAEC,WAAW,EAAE;EAC/E,MAAMrB,IAAI,GAAGgB,mBAAmB,CAACE,eAAe,EAAEjG,IAAI,CAACgF,iBAAiB,CAAC;EACzE,MAAME,IAAI,GAAGpD,eAAe;AAC5B,EAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACgG,qBAAqB,CAACjB,IAAI,EAAEG,IAAI,EAAEgB,KAAK,EAAEC,MAAM,EAAEC,WAAW,CAAC;AAC9E,EAAA,IAAIjD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,IAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;EACA,OAAOoC,qBAAqB,CAACC,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASkD,4BAA0BA,CAACC,cAAc,EAAE;AACvD,EAAA,MAAMvB,IAAI,GAAGrC,iBAAiB,CAAC4D,cAAc,EAAEtG,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;EAC/F,MAAMC,IAAI,GAAGpD,eAAe;EAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACqG,0BAA0B,CAACtB,IAAI,EAAEG,IAAI,CAAC;AACvD,EAAA,IAAI/B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,IAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;EACA,OAAOoC,qBAAqB,CAACC,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASoD,oBAAkBA,CAACC,SAAS,EAAEC,SAAS,EAAEC,UAAU,EAAE;EACjE,MAAM3B,IAAI,GAAGgB,mBAAmB,CAACS,SAAS,EAAExG,IAAI,CAACgF,iBAAiB,CAAC;EACnE,MAAME,IAAI,GAAGpD,eAAe;EAC5B,MAAMqD,IAAI,GAAGY,mBAAmB,CAACU,SAAS,EAAEzG,IAAI,CAACgF,iBAAiB,CAAC;EACnE,MAAMI,IAAI,GAAGtD,eAAe;AAC5B,EAAA,MAAMuD,IAAI,GAAG3C,iBAAiB,CAACgE,UAAU,EAAE1G,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;EAC3F,MAAMK,IAAI,GAAGxD,eAAe;AAC5B,EAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACuG,kBAAkB,CAACxB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACvE,EAAA,IAAInC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,IAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;EACA,OAAOoC,qBAAqB,CAACC,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASwD,iBAAeA,CAACC,qBAAqB,EAAEC,MAAM,EAAE;AAC3D,EAAA,IAAIC,WAAW;AACf,EAAA,IAAIC,WAAW;EACf,IAAI;AACA,IAAA,MAAMhC,IAAI,GAAGrC,iBAAiB,CAACkE,qBAAqB,EAAE5G,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACtG,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC2G,eAAe,CAAC5B,IAAI,EAAEG,IAAI,EAAE2B,MAAM,CAAC;AACpD,IAAA,IAAIxB,IAAI,GAAGlC,GAAG,CAAC,CAAC,CAAC;AACjB,IAAA,IAAImC,IAAI,GAAGnC,GAAG,CAAC,CAAC,CAAC;AACjB,IAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRkC,MAAAA,IAAI,GAAG,CAAC;AAAEC,MAAAA,IAAI,GAAG,CAAC;AAClB,MAAA,MAAM9B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA2D,IAAAA,WAAW,GAAGzB,IAAI;AAClB0B,IAAAA,WAAW,GAAGzB,IAAI;AAClB,IAAA,OAAOzD,kBAAkB,CAACwD,IAAI,EAAEC,IAAI,CAAC;AACzC,GAAC,SAAS;IACNtF,IAAI,CAAC8F,eAAe,CAACgB,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,0BAA0BA,CAACJ,qBAAqB,EAAEK,SAAS,EAAEC,WAAW,EAAEC,MAAM,EAAEC,OAAO,EAAE;AACvG,EAAA,IAAI1B,WAAW;AACf,EAAA,IAAIC,WAAW;EACf,IAAI;AACA,IAAA,MAAMZ,IAAI,GAAGrC,iBAAiB,CAACkE,qBAAqB,EAAE5G,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACtG,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,MAAMqD,IAAI,GAAGY,mBAAmB,CAACkB,SAAS,EAAEjH,IAAI,CAACgF,iBAAiB,CAAC;IACnE,MAAMI,IAAI,GAAGtD,eAAe;AAC5B,IAAA,MAAMuD,IAAI,GAAG3C,iBAAiB,CAACwE,WAAW,EAAElH,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC5F,MAAMK,IAAI,GAAGxD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACgH,0BAA0B,CAACjC,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAE6B,MAAM,EAAEC,OAAO,CAAC;AAChG,IAAA,IAAIxB,IAAI,GAAGzC,GAAG,CAAC,CAAC,CAAC;AACjB,IAAA,IAAI0C,IAAI,GAAG1C,GAAG,CAAC,CAAC,CAAC;AACjB,IAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRyC,MAAAA,IAAI,GAAG,CAAC;AAAEC,MAAAA,IAAI,GAAG,CAAC;AAClB,MAAA,MAAMrC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAuC,IAAAA,WAAW,GAAGE,IAAI;AAClBD,IAAAA,WAAW,GAAGE,IAAI;AAClB,IAAA,OAAOhE,kBAAkB,CAAC+D,IAAI,EAAEC,IAAI,CAAC;AACzC,GAAC,SAAS;IACN7F,IAAI,CAAC8F,eAAe,CAACJ,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS0B,cAAcA,CAACC,WAAW,EAAE;AACxC,EAAA,IAAIR,WAAW;AACf,EAAA,IAAIC,WAAW;EACf,IAAI;IACA,MAAMhC,IAAI,GAAGgB,mBAAmB,CAACuB,WAAW,EAAEtH,IAAI,CAACgF,iBAAiB,CAAC;IACrE,MAAME,IAAI,GAAGpD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACqH,cAAc,CAACtC,IAAI,EAAEG,IAAI,CAAC;AAC3C,IAAA,IAAIG,IAAI,GAAGlC,GAAG,CAAC,CAAC,CAAC;AACjB,IAAA,IAAImC,IAAI,GAAGnC,GAAG,CAAC,CAAC,CAAC;AACjB,IAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRkC,MAAAA,IAAI,GAAG,CAAC;AAAEC,MAAAA,IAAI,GAAG,CAAC;AAClB,MAAA,MAAM9B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA2D,IAAAA,WAAW,GAAGzB,IAAI;AAClB0B,IAAAA,WAAW,GAAGzB,IAAI;AAClB,IAAA,OAAOzD,kBAAkB,CAACwD,IAAI,EAAEC,IAAI,CAAC;AACzC,GAAC,SAAS;IACNtF,IAAI,CAAC8F,eAAe,CAACgB,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AAEA,SAASQ,wBAAwBA,CAAC/G,GAAG,EAAEC,GAAG,EAAE;EACxCD,GAAG,GAAGA,GAAG,KAAK,CAAC;AACf,EAAA,MAAMsC,GAAG,GAAGmB,kBAAkB,EAAE;EAChC,MAAMuD,MAAM,GAAG,EAAE;AACjB,EAAA,KAAK,IAAIlD,CAAC,GAAG9D,GAAG,EAAE8D,CAAC,GAAG9D,GAAG,GAAG,CAAC,GAAGC,GAAG,EAAE6D,CAAC,IAAI,CAAC,EAAE;AACzCkD,IAAAA,MAAM,CAACC,IAAI,CAACzH,IAAI,CAACe,mBAAmB,CAAC2C,GAAG,CAACZ,GAAG,CAAC4E,SAAS,CAACpD,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACrE;AACAtE,EAAAA,IAAI,CAAC2H,sBAAsB,CAACnH,GAAG,EAAEC,GAAG,CAAC;AACrC,EAAA,OAAO+G,MAAM;AACjB;;AAwDA;AACA;AACA;AACA;AACO,SAASI,oBAAoBA,CAACC,UAAU,EAAE;AAC7C,EAAA,IAAIf,WAAW;AACf,EAAA,IAAIC,WAAW;EACf,IAAI;AACA,IAAA,MAAMhC,IAAI,GAAGrC,iBAAiB,CAACmF,UAAU,EAAE7H,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC3F,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC4H,oBAAoB,CAAC7C,IAAI,EAAEG,IAAI,CAAC;AACjD,IAAA,IAAIG,IAAI,GAAGlC,GAAG,CAAC,CAAC,CAAC;AACjB,IAAA,IAAImC,IAAI,GAAGnC,GAAG,CAAC,CAAC,CAAC;AACjB,IAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRkC,MAAAA,IAAI,GAAG,CAAC;AAAEC,MAAAA,IAAI,GAAG,CAAC;AAClB,MAAA,MAAM9B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA2D,IAAAA,WAAW,GAAGzB,IAAI;AAClB0B,IAAAA,WAAW,GAAGzB,IAAI;AAClB,IAAA,OAAOzD,kBAAkB,CAACwD,IAAI,EAAEC,IAAI,CAAC;AACzC,GAAC,SAAS;IACNtF,IAAI,CAAC8F,eAAe,CAACgB,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASe,eAAeA,CAACD,UAAU,EAAEE,UAAU,EAAEC,YAAY,EAAE;AAClE,EAAA,MAAMjD,IAAI,GAAGrC,iBAAiB,CAACmF,UAAU,EAAE7H,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;EAC3F,MAAMC,IAAI,GAAGpD,eAAe;EAC5B,IAAIqD,IAAI,GAAGV,UAAU,CAACuD,YAAY,CAAC,GAAG,CAAC,GAAGtF,iBAAiB,CAACsF,YAAY,EAAEhI,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;EAC1H,IAAIG,IAAI,GAAGtD,eAAe;AAC1B,EAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC8H,eAAe,CAAC/C,IAAI,EAAEG,IAAI,EAAE6C,UAAU,EAAE5C,IAAI,EAAEC,IAAI,CAAC;AACpE,EAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,IAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;EACA,OAAO8E,sBAAsB,CAACzC,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChD;AAEA,IAAI+E,yBAAyB,GAAG,IAAI;AAEpC,SAASC,sBAAsBA,GAAG;EAC9B,IAAID,yBAAyB,KAAK,IAAI,IAAIA,yBAAyB,CAAC/H,UAAU,KAAK,CAAC,EAAE;IAClF+H,yBAAyB,GAAG,IAAIE,YAAY,CAACpI,IAAI,CAACK,MAAM,CAACC,MAAM,CAAC;AACpE;AACA,EAAA,OAAO4H,yBAAyB;AACpC;AAEA,SAASG,oBAAoBA,CAAC7H,GAAG,EAAEC,GAAG,EAAE;EACpCD,GAAG,GAAGA,GAAG,KAAK,CAAC;AACf,EAAA,OAAO2H,sBAAsB,EAAE,CAACzH,QAAQ,CAACF,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAG,CAAC,GAAGC,GAAG,CAAC;AACpE;AAEA,IAAI6H,wBAAwB,GAAG,IAAI;AAEnC,SAASC,qBAAqBA,GAAG;EAC7B,IAAID,wBAAwB,KAAK,IAAI,IAAIA,wBAAwB,CAACnI,UAAU,KAAK,CAAC,EAAE;IAChFmI,wBAAwB,GAAG,IAAIE,WAAW,CAACxI,IAAI,CAACK,MAAM,CAACC,MAAM,CAAC;AAClE;AACA,EAAA,OAAOgI,wBAAwB;AACnC;AAEA,SAASG,oBAAoBA,CAACjI,GAAG,EAAEC,GAAG,EAAE;EACpCD,GAAG,GAAGA,GAAG,KAAK,CAAC;AACf,EAAA,OAAO+H,qBAAqB,EAAE,CAAC7H,QAAQ,CAACF,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAG,CAAC,GAAGC,GAAG,CAAC;AACnE;AAE6B,OAAOiI,oBAAoB,KAAK,WAAW,GAClE;AAAEC,EAAyC,CAAC,GAC5C,IAAID,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAAC4I,kBAAkB,CAACpI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AAsG3E,MAAMqI,mBAAmB,GAAI,OAAOH,oBAAoB,KAAK,WAAW,GAClE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAAC+I,kBAAkB,CAACvI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMwI,OAAO,CAAC;EAEjB,OAAOxD,MAAMA,CAAChF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAGqI,MAAM,CAACC,MAAM,CAACF,OAAO,CAACG,SAAS,CAAC;IAC5CvI,GAAG,CAACwI,SAAS,GAAG5I,GAAG;IACnBqI,mBAAmB,CAACF,QAAQ,CAAC/H,GAAG,EAAEA,GAAG,CAACwI,SAAS,EAAExI,GAAG,CAAC;AACrD,IAAA,OAAOA,GAAG;AACd;AAEAyI,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBP,IAAAA,mBAAmB,CAACC,UAAU,CAAC,IAAI,CAAC;AACpC,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAAC+I,kBAAkB,CAACvI,GAAG,EAAE,CAAC,CAAC;AACnC;AACA;AACJ;AACA;EACI,IAAI+I,QAAQA,GAAG;IACX,MAAMpG,GAAG,GAAGnD,IAAI,CAACwJ,gBAAgB,CAAC,IAAI,CAACJ,SAAS,CAAC;AACjD,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACA;AACA;AACIC,EAAAA,WAAWA,GAAG;AACV,IAAA,MAAMvG,GAAG,GAAGnD,IAAI,CAAC2J,WAAW,EAAE;AAC9B,IAAA,IAAI,CAACP,SAAS,GAAGjG,GAAG,KAAK,CAAC;IAC1B0F,mBAAmB,CAACF,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AACxD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI,EAAA,OAAOpI,GAAGA,CAAC4I,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAE;AAC7E,IAAA,MAAMxH,GAAG,GAAGnD,IAAI,CAAC4K,WAAW,CAAChB,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,CAAC;AAClG,IAAA,OAAO3B,OAAO,CAACxD,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACI0H,EAAAA,KAAKA,GAAG;IACJ,MAAM1H,GAAG,GAAGnD,IAAI,CAAC8K,aAAa,CAAC,IAAI,CAAC1B,SAAS,CAAC;AAC9C,IAAA,OAAOJ,OAAO,CAACxD,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACI4H,EAAAA,QAAQA,GAAG;AACP/K,IAAAA,IAAI,CAACgL,gBAAgB,CAAC,IAAI,CAAC5B,SAAS,CAAC;AACzC;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACI6B,EAAAA,WAAWA,GAAG;IACV,MAAM9H,GAAG,GAAGnD,IAAI,CAACkL,mBAAmB,CAAC,IAAI,CAAC9B,SAAS,CAAC;AACpD,IAAA,OAAOjG,GAAG;AACd;AACA;AACJ;AACA;AACIgI,EAAAA,QAAQA,GAAG;IACP,MAAMhI,GAAG,GAAGnD,IAAI,CAACoL,gBAAgB,CAAC,IAAI,CAAChC,SAAS,CAAC;AACjD,IAAA,OAAOJ,OAAO,CAACxD,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIkI,EAAAA,OAAOA,GAAG;IACN,MAAMlI,GAAG,GAAGnD,IAAI,CAACsL,eAAe,CAAC,IAAI,CAAClC,SAAS,CAAC;AAChD,IAAA,OAAOJ,OAAO,CAACxD,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACIoI,QAAQA,CAACC,KAAK,EAAE;AACZpI,IAAAA,YAAY,CAACoI,KAAK,EAAExC,OAAO,CAAC;AAC5B,IAAA,MAAM7F,GAAG,GAAGnD,IAAI,CAACyL,gBAAgB,CAAC,IAAI,CAACrC,SAAS,EAAEoC,KAAK,CAACpC,SAAS,CAAC;AAClE,IAAA,OAAOJ,OAAO,CAACxD,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACIoB,GAAGA,CAACmH,QAAQ,EAAE;AACVtI,IAAAA,YAAY,CAACsI,QAAQ,EAAE1C,OAAO,CAAC;AAC/B,IAAA,MAAM7F,GAAG,GAAGnD,IAAI,CAAC2L,WAAW,CAAC,IAAI,CAACvC,SAAS,EAAEsC,QAAQ,CAACtC,SAAS,CAAC;AAChE,IAAA,OAAOJ,OAAO,CAACxD,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACIyI,QAAQA,CAACF,QAAQ,EAAE;AACftI,IAAAA,YAAY,CAACsI,QAAQ,EAAE1C,OAAO,CAAC;AAC/B,IAAA,MAAM7F,GAAG,GAAGnD,IAAI,CAAC6L,gBAAgB,CAAC,IAAI,CAACzC,SAAS,EAAEsC,QAAQ,CAACtC,SAAS,CAAC;AACrE,IAAA,OAAOJ,OAAO,CAACxD,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACI2I,EAAAA,OAAOA,GAAG;IACN,MAAM3I,GAAG,GAAGnD,IAAI,CAAC+L,eAAe,CAAC,IAAI,CAAC3C,SAAS,CAAC;AAChD,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIuC,cAAcA,CAACC,KAAK,EAAE;IAClB,MAAM9I,GAAG,GAAGnD,IAAI,CAACkM,sBAAsB,CAAC,IAAI,CAAC9C,SAAS,EAAE6C,KAAK,CAAC;AAC9D,IAAA,OAAO9I,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAGN,SAAS,GAAGM,GAAG,CAAC,CAAC,CAAC;AAC5C;AACA;AACJ;AACA;AACA;AACA;AACA;AACIgJ,EAAAA,OAAOA,GAAG;IACN,MAAMhJ,GAAG,GAAGnD,IAAI,CAACoM,eAAe,CAAC,IAAI,CAAChD,SAAS,CAAC;IAChD,OAAOjG,GAAG,KAAK,CAAC;AACpB;AACA;AACJ;AACA;AACA;AACA;AACA;AACIkJ,EAAAA,WAAWA,GAAG;IACV,MAAMlJ,GAAG,GAAGnD,IAAI,CAACsM,mBAAmB,CAAC,IAAI,CAAClD,SAAS,CAAC;IACpD,OAAOjG,GAAG,KAAK,CAAC;AACpB;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACIoJ,EAAAA,SAASA,GAAG;IACR,MAAMpJ,GAAG,GAAGnD,IAAI,CAACwM,iBAAiB,CAAC,IAAI,CAACpD,SAAS,CAAC;AAClD,IAAA,OAAOJ,OAAO,CAACxD,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACJ;AAEA,MAAMsJ,0BAA0B,GAAI,OAAO/D,oBAAoB,KAAK,WAAW,GACzE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAAC0M,yBAAyB,CAAClM,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5E,MAAMmM,cAAc,CAAC;EAExB,OAAOnH,MAAMA,CAAChF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAGqI,MAAM,CAACC,MAAM,CAACyD,cAAc,CAACxD,SAAS,CAAC;IACnDvI,GAAG,CAACwI,SAAS,GAAG5I,GAAG;IACnBiM,0BAA0B,CAAC9D,QAAQ,CAAC/H,GAAG,EAAEA,GAAG,CAACwI,SAAS,EAAExI,GAAG,CAAC;AAC5D,IAAA,OAAOA,GAAG;AACd;AAEAyI,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBqD,IAAAA,0BAA0B,CAAC3D,UAAU,CAAC,IAAI,CAAC;AAC3C,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAAC0M,yBAAyB,CAAClM,GAAG,EAAE,CAAC,CAAC;AAC1C;AACA;AACJ;AACA;EACIkJ,WAAWA,CAAC7B,UAAU,EAAE;AACpB,IAAA,MAAM9C,IAAI,GAAGrC,iBAAiB,CAACmF,UAAU,EAAE7H,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC3F,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC4M,kBAAkB,CAAC7H,IAAI,EAAEG,IAAI,CAAC;AAC/C,IAAA,IAAI/B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,IAAI,CAACiG,SAAS,GAAGjG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7BsJ,0BAA0B,CAAC9D,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AAC/D,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;EACI,OAAOyD,cAAcA,CAACC,WAAW,EAAE;AAC/B,IAAA,MAAM/H,IAAI,GAAGrC,iBAAiB,CAACoK,WAAW,EAAE9M,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC5F,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC+M,6BAA6B,CAAChI,IAAI,EAAEG,IAAI,CAAC;AAC1D,IAAA,IAAI/B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOwJ,cAAc,CAACnH,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxC;AACA;AACJ;AACA;AACI6J,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAIC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM/J,GAAG,GAAGnD,IAAI,CAACmN,kCAAkC,CAAC,IAAI,CAAC/D,SAAS,CAAC;AACnE,MAAA,IAAIjE,IAAI,GAAGhC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIiC,IAAI,GAAGjC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRgC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM5B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA8J,MAAAA,WAAW,GAAG9H,IAAI;AAClB+H,MAAAA,WAAW,GAAG9H,IAAI;AAClB,MAAA,OAAOvD,kBAAkB,CAACsD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNpF,IAAI,CAAC8F,eAAe,CAACmH,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;EACIE,WAAWA,CAACC,WAAW,EAAE;AACrB,IAAA,IAAIvG,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAMhC,IAAI,GAAGrC,iBAAiB,CAAC2K,WAAW,EAAErN,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC5F,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,MAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACsN,0BAA0B,CAAC,IAAI,CAAClE,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACvE,MAAA,IAAIG,IAAI,GAAGlC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAImC,IAAI,GAAGnC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRkC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM9B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA2D,MAAAA,WAAW,GAAGzB,IAAI;AAClB0B,MAAAA,WAAW,GAAGzB,IAAI;AAClB,MAAA,OAAOzD,kBAAkB,CAACwD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNtF,IAAI,CAAC8F,eAAe,CAACgB,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIwG,EAAAA,MAAMA,CAACC,UAAU,EAAEC,KAAK,EAAE;AACtB,IAAA,MAAM1I,IAAI,GAAGrC,iBAAiB,CAAC8K,UAAU,EAAExN,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC3F,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC0N,qBAAqB,CAAC,IAAI,CAACtE,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEuI,KAAK,CAAC;AACzE,IAAA,IAAItK,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOwJ,cAAc,CAACnH,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxC;AACA;AACJ;AACA;AACIwK,EAAAA,oBAAoBA,GAAG;AACnB,IAAA,IAAIV,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM/J,GAAG,GAAGnD,IAAI,CAAC4N,mCAAmC,CAAC,IAAI,CAACxE,SAAS,CAAC;AACpE,MAAA,IAAIjE,IAAI,GAAGhC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIiC,IAAI,GAAGjC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRgC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM5B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA8J,MAAAA,WAAW,GAAG9H,IAAI;AAClB+H,MAAAA,WAAW,GAAG9H,IAAI;AAClB,MAAA,OAAOvD,kBAAkB,CAACsD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNpF,IAAI,CAAC8F,eAAe,CAACmH,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIW,EAAAA,cAAcA,CAACC,OAAO,EAAEC,KAAK,EAAE;IAC3B,MAAMhJ,IAAI,GAAGgB,mBAAmB,CAACgI,KAAK,EAAE/N,IAAI,CAACgF,iBAAiB,CAAC;IAC/D,MAAME,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACgO,6BAA6B,CAAC,IAAI,CAAC5E,SAAS,EAAE0E,OAAO,EAAE/I,IAAI,EAAEG,IAAI,CAAC;AACnF,IAAA,IAAI/B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA,IAAA,IAAI8K,EAAE,GAAGlK,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAO8K,EAAE;AACb;AACA;AACJ;AACA;AACA;EACIC,cAAcA,CAACH,KAAK,EAAE;AAClB,IAAA,IAAIjH,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAMhC,IAAI,GAAGgB,mBAAmB,CAACgI,KAAK,EAAE/N,IAAI,CAACgF,iBAAiB,CAAC;MAC/D,MAAME,IAAI,GAAGpD,eAAe;AAC5B,MAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACmO,6BAA6B,CAAC,IAAI,CAAC/E,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AAC1E,MAAA,IAAIG,IAAI,GAAGlC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAImC,IAAI,GAAGnC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRkC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM9B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA2D,MAAAA,WAAW,GAAGzB,IAAI;AAClB0B,MAAAA,WAAW,GAAGzB,IAAI;AAClB,MAAA,OAAOzD,kBAAkB,CAACwD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNtF,IAAI,CAAC8F,eAAe,CAACgB,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACIqH,EAAAA,mBAAmBA,CAACC,WAAW,EAAEC,QAAQ,EAAEvG,UAAU,EAAE;AACnD,IAAA,IAAIwG,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAMzJ,IAAI,GAAGrC,iBAAiB,CAAC2L,WAAW,EAAErO,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC5F,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,MAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAAC4L,QAAQ,EAAEtO,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MACzF,MAAMG,IAAI,GAAGtD,eAAe;AAC5B,MAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACyO,kCAAkC,CAAC,IAAI,CAACrF,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAE2C,UAAU,CAAC;AACvG,MAAA,IAAI2G,IAAI,GAAGvL,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIwL,IAAI,GAAGxL,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRuL,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMnL,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAoL,MAAAA,WAAW,GAAGG,IAAI;AAClBF,MAAAA,WAAW,GAAGG,IAAI;AAClB,MAAA,OAAO9M,kBAAkB,CAAC6M,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN3O,IAAI,CAAC8F,eAAe,CAACyI,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACII,EAAAA,YAAYA,CAACpD,KAAK,EAAE1G,SAAS,EAAE+J,EAAE,EAAE;AAC/BzL,IAAAA,YAAY,CAACoI,KAAK,EAAEmB,cAAc,CAAC;AACnC,IAAA,MAAM5H,IAAI,GAAGrC,iBAAiB,CAACoC,SAAS,EAAE9E,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMG,IAAI,GAAGtD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC8O,2BAA2B,CAAC,IAAI,CAAC1F,SAAS,EAAEoC,KAAK,CAACpC,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACrG,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOwJ,cAAc,CAACnH,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxC;AACA;AACJ;AACA;AACA;AACA;AACI4L,EAAAA,uBAAuBA,CAACC,YAAY,EAAEH,EAAE,EAAE;AACtC,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACsM,YAAY,EAAEhP,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC7F,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMG,IAAI,GAAGtD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACiP,sCAAsC,CAAC,IAAI,CAAC7F,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAC/F,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOwJ,cAAc,CAACnH,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxC;AACA;AACJ;AACA;AACA;AACA;AACI+L,EAAAA,KAAKA,CAACC,SAAS,EAAEN,EAAE,EAAE;AACjB,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACoP,oBAAoB,CAAC,IAAI,CAAChG,SAAS,EAAE+F,SAAS,EAAEpK,IAAI,EAAEG,IAAI,CAAC;AAC5E,IAAA,IAAI/B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOwJ,cAAc,CAACnH,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxC;AACA;AACJ;AACA;AACIkM,EAAAA,6BAA6BA,GAAG;IAC5B,MAAMlM,GAAG,GAAGnD,IAAI,CAACsP,4CAA4C,CAAC,IAAI,CAAClG,SAAS,CAAC;AAC7E,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA,IAAA,IAAIsG,EAAE;AACN,IAAA,IAAItG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AACdsG,MAAAA,EAAE,GAAG5H,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AAC/ClD,MAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC/C;AACA,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACA;EACI8F,UAAUA,CAACxH,UAAU,EAAE;IACnB,MAAM5E,GAAG,GAAGnD,IAAI,CAACwP,yBAAyB,CAAC,IAAI,CAACpG,SAAS,EAAErB,UAAU,CAAC;AACtE,IAAA,IAAI5E,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAO8E,sBAAsB,CAACzC,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChD;AACA;AACJ;AACA;AACIsM,EAAAA,cAAcA,GAAG;IACb,MAAMtM,GAAG,GAAGnD,IAAI,CAAC0P,6BAA6B,CAAC,IAAI,CAACtG,SAAS,CAAC;IAC9D,OAAOjG,GAAG,KAAK,CAAC;AACpB;AACA;AACJ;AACA;AACIwM,EAAAA,cAAcA,GAAG;IACb,MAAMxM,GAAG,GAAGnD,IAAI,CAAC4P,6BAA6B,CAAC,IAAI,CAACxG,SAAS,CAAC;IAC9D,OAAOjG,GAAG,KAAK,CAAC;AACpB;AACA;AACJ;AACA;AACI0M,EAAAA,MAAMA,GAAG;AACL,IAAA,IAAIC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACgQ,qBAAqB,CAAC,IAAI,CAAC5G,SAAS,CAAC;AACtD0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIE,EAAAA,UAAUA,GAAG;IACT,MAAM9M,GAAG,GAAGnD,IAAI,CAACkQ,yBAAyB,CAAC,IAAI,CAAC9G,SAAS,CAAC;AAC1D,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA,IAAA,IAAIsG,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI0G,EAAAA,gBAAgBA,GAAG;IACf,MAAMhN,GAAG,GAAGnD,IAAI,CAACoQ,+BAA+B,CAAC,IAAI,CAAChH,SAAS,CAAC;IAChE,OAAOjG,GAAG,KAAK,CAAC;AACpB;AACA;AACJ;AACA;AACIkN,EAAAA,YAAYA,GAAG;IACX,MAAMlN,GAAG,GAAGnD,IAAI,CAACsQ,2BAA2B,CAAC,IAAI,CAAClH,SAAS,CAAC;AAC5D,IAAA,OAAOmH,MAAM,CAACC,OAAO,CAAC,EAAE,EAAErN,GAAG,CAAC;AAClC;AACJ;AAEA,MAAMsN,kCAAkC,GAAI,OAAO/H,oBAAoB,KAAK,WAAW,GACjF;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAAC0Q,iCAAiC,CAAClQ,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEpF,MAAMyH,sBAAsB,CAAC;EAEhC,OAAOzC,MAAMA,CAAChF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAGqI,MAAM,CAACC,MAAM,CAACjB,sBAAsB,CAACkB,SAAS,CAAC;IAC3DvI,GAAG,CAACwI,SAAS,GAAG5I,GAAG;IACnBiQ,kCAAkC,CAAC9H,QAAQ,CAAC/H,GAAG,EAAEA,GAAG,CAACwI,SAAS,EAAExI,GAAG,CAAC;AACpE,IAAA,OAAOA,GAAG;AACd;AAEAyI,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBqH,IAAAA,kCAAkC,CAAC3H,UAAU,CAAC,IAAI,CAAC;AACnD,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAAC0Q,iCAAiC,CAAClQ,GAAG,EAAE,CAAC,CAAC;AAClD;AACA;AACJ;AACA;AACImQ,EAAAA,SAASA,GAAG;IACR,MAAMxN,GAAG,GAAGnD,IAAI,CAAC4Q,gCAAgC,CAAC,IAAI,CAACxH,SAAS,CAAC;AACjE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACIoH,EAAAA,OAAOA,GAAG;IACN,MAAM1N,GAAG,GAAGnD,IAAI,CAAC8Q,8BAA8B,CAAC,IAAI,CAAC1H,SAAS,CAAC;AAC/D,IAAA,IAAIK,EAAE,GAAGpB,oBAAoB,CAAClF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACIsH,EAAAA,OAAOA,GAAG;IACN,MAAM5N,GAAG,GAAGnD,IAAI,CAACgR,8BAA8B,CAAC,IAAI,CAAC5H,SAAS,CAAC;AAC/D,IAAA,IAAIK,EAAE,GAAGhB,oBAAoB,CAACtF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACIwH,EAAAA,iBAAiBA,GAAG;IAChB,MAAM9N,GAAG,GAAGnD,IAAI,CAACkR,wCAAwC,CAAC,IAAI,CAAC9H,SAAS,CAAC;AACzE,IAAA,IAAIK,EAAE,GAAGhB,oBAAoB,CAACtF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI0H,EAAAA,iBAAiBA,GAAG;IAChB,MAAMhO,GAAG,GAAGnD,IAAI,CAACoR,wCAAwC,CAAC,IAAI,CAAChI,SAAS,CAAC;AACzE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI4H,EAAAA,gBAAgBA,GAAG;IACf,MAAMlO,GAAG,GAAGnD,IAAI,CAACsR,uCAAuC,CAAC,IAAI,CAAClI,SAAS,CAAC;AACxE,IAAA,IAAIK,EAAE,GAAGhB,oBAAoB,CAACtF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI8H,EAAAA,QAAQA,GAAG;IACP,MAAMpO,GAAG,GAAGnD,IAAI,CAACwR,+BAA+B,CAAC,IAAI,CAACpI,SAAS,CAAC;AAChE,IAAA,OAAOmH,MAAM,CAACC,OAAO,CAAC,EAAE,EAAErN,GAAG,CAAC;AAClC;AACA;AACJ;AACA;AACIsO,EAAAA,mBAAmBA,GAAG;IAClB,MAAMtO,GAAG,GAAGnD,IAAI,CAAC0R,0CAA0C,CAAC,IAAI,CAACtI,SAAS,CAAC;AAC3E,IAAA,OAAOjG,GAAG;AACd;AACJ;AAEA,MAAMwO,iBAAiB,GAAI,OAAOjJ,oBAAoB,KAAK,WAAW,GAChE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAAC4R,gBAAgB,CAACpR,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEnE,MAAMqR,KAAK,CAAC;AAEfxI,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBuI,IAAAA,iBAAiB,CAAC7I,UAAU,CAAC,IAAI,CAAC;AAClC,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAAC4R,gBAAgB,CAACpR,GAAG,EAAE,CAAC,CAAC;AACjC;AACA;AACJ;AACA;EACI,IAAIqO,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B9B,IAAI,CAAC8R,YAAY,CAAC,IAAI,CAAC1I,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACjD;AACA;AACJ;AACA;EACI,IAAI2J,EAAEA,GAAG;AACL,IAAA,IAAIiB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC+R,QAAQ,CAAC,IAAI,CAAC3I,SAAS,CAAC;AACzC0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIrG,WAAWA,CAACmF,EAAE,EAAE;AACZ,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACgS,SAAS,CAACjN,IAAI,EAAEG,IAAI,CAAC;AACtC,IAAA,IAAI,CAACkE,SAAS,GAAGjG,GAAG,KAAK,CAAC;IAC1BwO,iBAAiB,CAAChJ,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AACtD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI6I,UAAUA,CAACC,MAAM,EAAEC,MAAM,EAAEC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,EAAE;AACzDlP,IAAAA,YAAY,CAAC8O,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAGmN,MAAM,CAAC7I,kBAAkB,EAAE;AACtC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAACwS,gBAAgB,CAAC,IAAI,CAACpJ,SAAS,EAAErE,IAAI,EAAEoN,MAAM,EAAEC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,CAAC;AACjG,IAAA,IAAInP,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIsP,UAAUA,CAACP,MAAM,EAAE;AACf9O,IAAAA,YAAY,CAAC8O,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAGmN,MAAM,CAAC7I,kBAAkB,EAAE;IACtCrJ,IAAI,CAAC0S,gBAAgB,CAAC,IAAI,CAACtJ,SAAS,EAAErE,IAAI,CAAC;AAC/C;AACA;AACJ;AACA;AACA;AACA;AACI4N,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEpF,KAAK,EAAE;AACrCrK,IAAAA,YAAY,CAACwP,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG6N,QAAQ,CAACvJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIpN,IAAI,GAAG0N,QAAQ,CAACxJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIlN,IAAI,GAAGoI,KAAK,CAACpE,kBAAkB,EAAE;AACrC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAAC8S,mBAAmB,CAAC,IAAI,CAAC1J,SAAS,EAAErE,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AACtE,IAAA,IAAIlC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI4P,eAAeA,CAACC,WAAW,EAAE;AACzB5P,IAAAA,YAAY,CAAC4P,WAAW,EAAET,OAAO,CAAC;AAClC,IAAA,IAAIxN,IAAI,GAAGiO,WAAW,CAAC3J,kBAAkB,EAAE;IAC3CrJ,IAAI,CAACiT,qBAAqB,CAAC,IAAI,CAAC7J,SAAS,EAAErE,IAAI,CAAC;AACpD;AACA;AACJ;AACA;EACImO,YAAYA,CAACL,QAAQ,EAAE;AACnBzP,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG8N,QAAQ,CAACxJ,kBAAkB,EAAE;IACxCrJ,IAAI,CAACmT,kBAAkB,CAAC,IAAI,CAAC/J,SAAS,EAAErE,IAAI,CAAC;AACjD;AACA;AACJ;AACA;EACIqO,SAASA,CAAC3F,KAAK,EAAE;AACbrK,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIxN,IAAI,GAAG0I,KAAK,CAACpE,kBAAkB,EAAE;IACrC,MAAMlG,GAAG,GAAGnD,IAAI,CAACqT,eAAe,CAAC,IAAI,CAACjK,SAAS,EAAErE,IAAI,CAAC;AACtD,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAmQ,EAAAA,iBAAiBA,GAAG;IAChB,MAAMnQ,GAAG,GAAGnD,IAAI,CAACuT,uBAAuB,CAAC,IAAI,CAACnK,SAAS,CAAC;AACxD,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAqQ,EAAAA,cAAcA,GAAG;AACbxT,IAAAA,IAAI,CAACyT,oBAAoB,CAAC,IAAI,CAACrK,SAAS,CAAC;AAC7C;AACAsK,EAAAA,OAAOA,GAAG;AACN1T,IAAAA,IAAI,CAAC2T,aAAa,CAAC,IAAI,CAACvK,SAAS,CAAC;AACtC;AACA;AACJ;AACA;AACI4D,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAI8C,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC4T,yBAAyB,CAAC,IAAI,CAACxK,SAAS,CAAC;AAC1D0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI8D,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAI/D,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC8T,+BAA+B,CAAC,IAAI,CAAC1K,SAAS,CAAC;AAChE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIgE,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIjE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACgU,6BAA6B,CAAC,IAAI,CAAC5K,SAAS,CAAC;AAC9D0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkE,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAInE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACkU,mCAAmC,CAAC,IAAI,CAAC9K,SAAS,CAAC;AACpE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIoE,EAAAA,mBAAmBA,GAAG;IAClB,MAAMhR,GAAG,GAAGnD,IAAI,CAACoU,yBAAyB,CAAC,IAAI,CAAChL,SAAS,CAAC;AAC1D,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI4K,EAAAA,yBAAyBA,GAAG;IACxB,MAAMlR,GAAG,GAAGnD,IAAI,CAACsU,+BAA+B,CAAC,IAAI,CAAClL,SAAS,CAAC;AAChE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI8K,EAAAA,UAAUA,GAAG;IACT,MAAMpR,GAAG,GAAGnD,IAAI,CAACwU,gBAAgB,CAAC,IAAI,CAACpL,SAAS,CAAC;AACjD,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACJ;AAEA,MAAMsR,oBAAoB,GAAI,OAAO/L,oBAAoB,KAAK,WAAW,GACnE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAAC0U,mBAAmB,CAAClU,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtE,MAAMmU,QAAQ,CAAC;AAElBtL,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBqL,IAAAA,oBAAoB,CAAC3L,UAAU,CAAC,IAAI,CAAC;AACrC,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAAC0U,mBAAmB,CAAClU,GAAG,EAAE,CAAC,CAAC;AACpC;AACA;AACJ;AACA;EACI,IAAIqO,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B9B,IAAI,CAAC4U,eAAe,CAAC,IAAI,CAACxL,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACpD;AACA;AACJ;AACA;EACI,IAAI2J,EAAEA,GAAG;AACL,IAAA,IAAIiB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC6U,WAAW,CAAC,IAAI,CAACzL,SAAS,CAAC;AAC5C0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIrG,WAAWA,CAACmF,EAAE,EAAE;AACZ,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC8U,YAAY,CAAC/P,IAAI,EAAEG,IAAI,CAAC;AACzC,IAAA,IAAI,CAACkE,SAAS,GAAGjG,GAAG,KAAK,CAAC;IAC1BsR,oBAAoB,CAAC9L,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AACzD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACA;AACA;EACI6I,UAAUA,CAACC,MAAM,EAAEhM,KAAK,EAAEW,MAAM,EAAEkO,KAAK,EAAE;AACrC3R,IAAAA,YAAY,CAAC8O,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAGmN,MAAM,CAAC7I,kBAAkB,EAAE;AACtC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAACgV,mBAAmB,CAAC,IAAI,CAAC5L,SAAS,EAAErE,IAAI,EAAEmB,KAAK,EAAEW,MAAM,EAAEkO,KAAK,CAAC;AAChF,IAAA,IAAI5R,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIsP,UAAUA,CAACP,MAAM,EAAE;AACf9O,IAAAA,YAAY,CAAC8O,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAGmN,MAAM,CAAC7I,kBAAkB,EAAE;IACtCrJ,IAAI,CAACiV,mBAAmB,CAAC,IAAI,CAAC7L,SAAS,EAAErE,IAAI,CAAC;AAClD;AACA;AACJ;AACA;AACA;AACA;AACI4N,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEpF,KAAK,EAAE;AACrCrK,IAAAA,YAAY,CAACwP,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG6N,QAAQ,CAACvJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIpN,IAAI,GAAG0N,QAAQ,CAACxJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIlN,IAAI,GAAGoI,KAAK,CAACpE,kBAAkB,EAAE;AACrC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAACkV,sBAAsB,CAAC,IAAI,CAAC9L,SAAS,EAAErE,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AACzE,IAAA,IAAIlC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI4P,eAAeA,CAACC,WAAW,EAAE;AACzB5P,IAAAA,YAAY,CAAC4P,WAAW,EAAET,OAAO,CAAC;AAClC,IAAA,IAAIxN,IAAI,GAAGiO,WAAW,CAAC3J,kBAAkB,EAAE;IAC3CrJ,IAAI,CAACmV,wBAAwB,CAAC,IAAI,CAAC/L,SAAS,EAAErE,IAAI,CAAC;AACvD;AACA;AACJ;AACA;EACImO,YAAYA,CAACL,QAAQ,EAAE;AACnBzP,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG8N,QAAQ,CAACxJ,kBAAkB,EAAE;IACxCrJ,IAAI,CAACoV,qBAAqB,CAAC,IAAI,CAAChM,SAAS,EAAErE,IAAI,CAAC;AACpD;AACA;AACJ;AACA;EACIqO,SAASA,CAAC3F,KAAK,EAAE;AACbrK,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIxN,IAAI,GAAG0I,KAAK,CAACpE,kBAAkB,EAAE;IACrC,MAAMlG,GAAG,GAAGnD,IAAI,CAACqV,kBAAkB,CAAC,IAAI,CAACjM,SAAS,EAAErE,IAAI,CAAC;AACzD,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAmQ,EAAAA,iBAAiBA,GAAG;IAChB,MAAMnQ,GAAG,GAAGnD,IAAI,CAACsV,0BAA0B,CAAC,IAAI,CAAClM,SAAS,CAAC;AAC3D,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI6J,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAI8C,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACuV,4BAA4B,CAAC,IAAI,CAACnM,SAAS,CAAC;AAC7D0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI8D,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAI/D,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACwV,kCAAkC,CAAC,IAAI,CAACpM,SAAS,CAAC;AACnE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIgE,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIjE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACyV,gCAAgC,CAAC,IAAI,CAACrM,SAAS,CAAC;AACjE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkE,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAInE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC0V,sCAAsC,CAAC,IAAI,CAACtM,SAAS,CAAC;AACvE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIoE,EAAAA,mBAAmBA,GAAG;IAClB,MAAMhR,GAAG,GAAGnD,IAAI,CAAC2V,4BAA4B,CAAC,IAAI,CAACvM,SAAS,CAAC;AAC7D,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI4K,EAAAA,yBAAyBA,GAAG;IACxB,MAAMlR,GAAG,GAAGnD,IAAI,CAAC4V,kCAAkC,CAAC,IAAI,CAACxM,SAAS,CAAC;AACnE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACIoM,EAAAA,+BAA+BA,GAAG;AAC9B,IAAA,IAAI/F,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC8V,wCAAwC,CAAC,IAAI,CAAC1M,SAAS,CAAC;AACzE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIgG,EAAAA,qCAAqCA,GAAG;AACpC,IAAA,IAAIjG,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACgW,8CAA8C,CAAC,IAAI,CAAC5M,SAAS,CAAC;AAC/E0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkG,EAAAA,2BAA2BA,GAAG;IAC1B,MAAM9S,GAAG,GAAGnD,IAAI,CAACkW,oCAAoC,CAAC,IAAI,CAAC9M,SAAS,CAAC;AACrE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI0M,EAAAA,iCAAiCA,GAAG;IAChC,MAAMhT,GAAG,GAAGnD,IAAI,CAACoW,0CAA0C,CAAC,IAAI,CAAChN,SAAS,CAAC;AAC3E,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI8K,EAAAA,UAAUA,GAAG;IACT,MAAMpR,GAAG,GAAGnD,IAAI,CAACqW,mBAAmB,CAAC,IAAI,CAACjN,SAAS,CAAC;AACpD,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACJ;AAEA,MAAMmT,mBAAmB,GAAI,OAAO5N,oBAAoB,KAAK,WAAW,GAClE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAACuW,kBAAkB,CAAC/V,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAErE,MAAMgW,OAAO,CAAC;AAEjBnN,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBkN,IAAAA,mBAAmB,CAACxN,UAAU,CAAC,IAAI,CAAC;AACpC,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAACuW,kBAAkB,CAAC/V,GAAG,EAAE,CAAC,CAAC;AACnC;AACA;AACJ;AACA;EACI,IAAIqO,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B9B,IAAI,CAACyW,cAAc,CAAC,IAAI,CAACrN,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACnD;AACA;AACJ;AACA;EACI,IAAI2J,EAAEA,GAAG;AACL,IAAA,IAAIiB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC0W,UAAU,CAAC,IAAI,CAACtN,SAAS,CAAC;AAC3C0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIrG,WAAWA,CAACmF,EAAE,EAAE;AACZ,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC2W,WAAW,CAAC5R,IAAI,EAAEG,IAAI,CAAC;AACxC,IAAA,IAAI,CAACkE,SAAS,GAAGjG,GAAG,KAAK,CAAC;IAC1BmT,mBAAmB,CAAC3N,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AACxD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;EACI6I,UAAUA,CAAC2E,cAAc,EAAE;IACvB,MAAM7R,IAAI,GAAGX,uBAAuB,CAACwS,cAAc,EAAE5W,IAAI,CAACgF,iBAAiB,CAAC;IAC5E,MAAME,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC6W,kBAAkB,CAAC,IAAI,CAACzN,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AAC/D,IAAA,IAAI/B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIwP,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEpF,KAAK,EAAE;AACrCrK,IAAAA,YAAY,CAACwP,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG6N,QAAQ,CAACvJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIpN,IAAI,GAAG0N,QAAQ,CAACxJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIlN,IAAI,GAAGoI,KAAK,CAACpE,kBAAkB,EAAE;AACrC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAAC8W,qBAAqB,CAAC,IAAI,CAAC1N,SAAS,EAAErE,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AACxE,IAAA,IAAIlC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI4P,eAAeA,CAACC,WAAW,EAAE;AACzB5P,IAAAA,YAAY,CAAC4P,WAAW,EAAET,OAAO,CAAC;AAClC,IAAA,IAAIxN,IAAI,GAAGiO,WAAW,CAAC3J,kBAAkB,EAAE;IAC3CrJ,IAAI,CAAC+W,uBAAuB,CAAC,IAAI,CAAC3N,SAAS,EAAErE,IAAI,CAAC;AACtD;AACA;AACJ;AACA;EACImO,YAAYA,CAACL,QAAQ,EAAE;AACnBzP,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG8N,QAAQ,CAACxJ,kBAAkB,EAAE;IACxCrJ,IAAI,CAACgX,oBAAoB,CAAC,IAAI,CAAC5N,SAAS,EAAErE,IAAI,CAAC;AACnD;AACA;AACJ;AACA;EACIqO,SAASA,CAAC3F,KAAK,EAAE;AACbrK,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIxN,IAAI,GAAG0I,KAAK,CAACpE,kBAAkB,EAAE;IACrC,MAAMlG,GAAG,GAAGnD,IAAI,CAACiX,iBAAiB,CAAC,IAAI,CAAC7N,SAAS,EAAErE,IAAI,CAAC;AACxD,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAmQ,EAAAA,iBAAiBA,GAAG;IAChB,MAAMnQ,GAAG,GAAGnD,IAAI,CAACkX,yBAAyB,CAAC,IAAI,CAAC9N,SAAS,CAAC;AAC1D,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI6J,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAI8C,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACmX,2BAA2B,CAAC,IAAI,CAAC/N,SAAS,CAAC;AAC5D0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI8D,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAI/D,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACoX,iCAAiC,CAAC,IAAI,CAAChO,SAAS,CAAC;AAClE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIgE,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIjE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACqX,+BAA+B,CAAC,IAAI,CAACjO,SAAS,CAAC;AAChE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkE,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAInE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACsX,qCAAqC,CAAC,IAAI,CAAClO,SAAS,CAAC;AACtE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIoE,EAAAA,mBAAmBA,GAAG;IAClB,MAAMhR,GAAG,GAAGnD,IAAI,CAACuX,2BAA2B,CAAC,IAAI,CAACnO,SAAS,CAAC;AAC5D,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI4K,EAAAA,yBAAyBA,GAAG;IACxB,MAAMlR,GAAG,GAAGnD,IAAI,CAACwX,iCAAiC,CAAC,IAAI,CAACpO,SAAS,CAAC;AAClE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI8K,EAAAA,UAAUA,GAAG;IACT,MAAMpR,GAAG,GAAGnD,IAAI,CAACyX,kBAAkB,CAAC,IAAI,CAACrO,SAAS,CAAC;AACnD,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;EACIuU,UAAUA,CAACC,MAAM,EAAE;AACfvU,IAAAA,YAAY,CAACuU,MAAM,EAAEpF,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAG4S,MAAM,CAACtO,kBAAkB,EAAE;IACtC,MAAMlG,GAAG,GAAGnD,IAAI,CAAC4X,kBAAkB,CAAC,IAAI,CAACxO,SAAS,EAAErE,IAAI,CAAC;AACzD,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA0U,EAAAA,YAAYA,GAAG;IACX,MAAM1U,GAAG,GAAGnD,IAAI,CAAC8X,oBAAoB,CAAC,IAAI,CAAC1O,SAAS,CAAC;AACrD,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACI4U,EAAAA,qBAAqBA,CAACC,QAAQ,EAAEC,uBAAuB,EAAEC,KAAK,EAAE;AAC5D,IAAA,IAAIpI,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAM5M,GAAG,GAAGnD,IAAI,CAACmY,6BAA6B,CAAC,IAAI,CAAC/O,SAAS,EAAE4O,QAAQ,EAAEC,uBAAuB,EAAEC,KAAK,CAAC;AACxGpI,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACAqI,EAAAA,OAAOA,GAAG;AACNpY,IAAAA,IAAI,CAACqY,eAAe,CAAC,IAAI,CAACjP,SAAS,CAAC;AACxC;AACJ;AAEA,MAAMkP,sBAAsB,GAAI,OAAO5P,oBAAoB,KAAK,WAAW,GACrE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAACuY,qBAAqB,CAAC/X,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAExE,MAAMgY,UAAU,CAAC;AAEpBnP,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBkP,IAAAA,sBAAsB,CAACxP,UAAU,CAAC,IAAI,CAAC;AACvC,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAACuY,qBAAqB,CAAC/X,GAAG,EAAE,CAAC,CAAC;AACtC;AACA;AACJ;AACA;EACI,IAAIqO,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B9B,IAAI,CAACyY,iBAAiB,CAAC,IAAI,CAACrP,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACtD;AACA;AACJ;AACA;EACI,IAAI2J,EAAEA,GAAG;AACL,IAAA,IAAIiB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC0Y,aAAa,CAAC,IAAI,CAACtP,SAAS,CAAC;AAC9C0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIrG,WAAWA,CAACmF,EAAE,EAAE;AACZ,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC2Y,cAAc,CAAC5T,IAAI,EAAEG,IAAI,CAAC;AAC3C,IAAA,IAAI,CAACkE,SAAS,GAAGjG,GAAG,KAAK,CAAC;IAC1BmV,sBAAsB,CAAC3P,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AAC3D,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI6I,UAAUA,CAACC,MAAM,EAAEC,MAAM,EAAEtL,MAAM,EAAE+R,KAAK,EAAEtG,QAAQ,EAAE;AAChDlP,IAAAA,YAAY,CAAC8O,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAGmN,MAAM,CAAC7I,kBAAkB,EAAE;AACtC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAAC6Y,qBAAqB,CAAC,IAAI,CAACzP,SAAS,EAAErE,IAAI,EAAEoN,MAAM,EAAEtL,MAAM,EAAE+R,KAAK,EAAEtG,QAAQ,CAAC;AAC7F,IAAA,IAAInP,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIsP,UAAUA,CAACP,MAAM,EAAE;AACf9O,IAAAA,YAAY,CAAC8O,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAGmN,MAAM,CAAC7I,kBAAkB,EAAE;IACtCrJ,IAAI,CAAC8Y,qBAAqB,CAAC,IAAI,CAAC1P,SAAS,EAAErE,IAAI,CAAC;AACpD;AACA;AACJ;AACA;AACA;AACA;AACI4N,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEpF,KAAK,EAAE;AACrCrK,IAAAA,YAAY,CAACwP,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG6N,QAAQ,CAACvJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIpN,IAAI,GAAG0N,QAAQ,CAACxJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIlN,IAAI,GAAGoI,KAAK,CAACpE,kBAAkB,EAAE;AACrC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAAC+Y,wBAAwB,CAAC,IAAI,CAAC3P,SAAS,EAAErE,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AAC3E,IAAA,IAAIlC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI4P,eAAeA,CAACC,WAAW,EAAE;AACzB5P,IAAAA,YAAY,CAAC4P,WAAW,EAAET,OAAO,CAAC;AAClC,IAAA,IAAIxN,IAAI,GAAGiO,WAAW,CAAC3J,kBAAkB,EAAE;IAC3CrJ,IAAI,CAACgZ,0BAA0B,CAAC,IAAI,CAAC5P,SAAS,EAAErE,IAAI,CAAC;AACzD;AACA;AACJ;AACA;EACImO,YAAYA,CAACL,QAAQ,EAAE;AACnBzP,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG8N,QAAQ,CAACxJ,kBAAkB,EAAE;IACxCrJ,IAAI,CAACiZ,uBAAuB,CAAC,IAAI,CAAC7P,SAAS,EAAErE,IAAI,CAAC;AACtD;AACA;AACJ;AACA;EACIqO,SAASA,CAAC3F,KAAK,EAAE;AACbrK,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIxN,IAAI,GAAG0I,KAAK,CAACpE,kBAAkB,EAAE;IACrC,MAAMlG,GAAG,GAAGnD,IAAI,CAACkZ,oBAAoB,CAAC,IAAI,CAAC9P,SAAS,EAAErE,IAAI,CAAC;AAC3D,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAgW,EAAAA,aAAaA,GAAG;IACZ,MAAMhW,GAAG,GAAGnD,IAAI,CAACoZ,wBAAwB,CAAC,IAAI,CAAChQ,SAAS,CAAC;AACzD,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAkW,EAAAA,cAAcA,GAAG;AACbrZ,IAAAA,IAAI,CAACsZ,yBAAyB,CAAC,IAAI,CAAClQ,SAAS,CAAC;AAClD;AACAkK,EAAAA,iBAAiBA,GAAG;IAChB,MAAMnQ,GAAG,GAAGnD,IAAI,CAACuZ,4BAA4B,CAAC,IAAI,CAACnQ,SAAS,CAAC;AAC7D,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI6J,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAI8C,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACwZ,8BAA8B,CAAC,IAAI,CAACpQ,SAAS,CAAC;AAC/D0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI8D,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAI/D,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACyZ,oCAAoC,CAAC,IAAI,CAACrQ,SAAS,CAAC;AACrE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIgE,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIjE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC0Z,kCAAkC,CAAC,IAAI,CAACtQ,SAAS,CAAC;AACnE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkE,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAInE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC2Z,wCAAwC,CAAC,IAAI,CAACvQ,SAAS,CAAC;AACzE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIoE,EAAAA,mBAAmBA,GAAG;IAClB,MAAMhR,GAAG,GAAGnD,IAAI,CAAC4Z,8BAA8B,CAAC,IAAI,CAACxQ,SAAS,CAAC;AAC/D,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI4K,EAAAA,yBAAyBA,GAAG;IACxB,MAAMlR,GAAG,GAAGnD,IAAI,CAAC6Z,oCAAoC,CAAC,IAAI,CAACzQ,SAAS,CAAC;AACrE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACIoM,EAAAA,+BAA+BA,GAAG;AAC9B,IAAA,IAAI/F,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC8Z,0CAA0C,CAAC,IAAI,CAAC1Q,SAAS,CAAC;AAC3E0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIgG,EAAAA,qCAAqCA,GAAG;AACpC,IAAA,IAAIjG,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC+Z,gDAAgD,CAAC,IAAI,CAAC3Q,SAAS,CAAC;AACjF0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkG,EAAAA,2BAA2BA,GAAG;IAC1B,MAAM9S,GAAG,GAAGnD,IAAI,CAACga,sCAAsC,CAAC,IAAI,CAAC5Q,SAAS,CAAC;AACvE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI0M,EAAAA,iCAAiCA,GAAG;IAChC,MAAMhT,GAAG,GAAGnD,IAAI,CAACia,4CAA4C,CAAC,IAAI,CAAC7Q,SAAS,CAAC;AAC7E,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI8K,EAAAA,UAAUA,GAAG;IACT,MAAMpR,GAAG,GAAGnD,IAAI,CAACka,qBAAqB,CAAC,IAAI,CAAC9Q,SAAS,CAAC;AACtD,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACJ;AAEqC,OAAOuF,oBAAoB,KAAK,WAAW,GAC1E;AAAEC,EAAyC,CAAC,GAC5C,IAAID,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAACma,0BAA0B,CAAC3Z,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AAwN7C,OAAOkI,oBAAoB,KAAK,WAAW,GAC3E;AAAEC,EAAyC,CAAC,GAC5C,IAAID,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAACoa,2BAA2B,CAAC5Z,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AA4FpF,MAAM6Z,4BAA4B,GAAI,OAAO3R,oBAAoB,KAAK,WAAW,GAC3E;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAACsa,2BAA2B,CAAC9Z,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAE9E,MAAM+Z,gBAAgB,CAAC;AAE1BlR,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBiR,IAAAA,4BAA4B,CAACvR,UAAU,CAAC,IAAI,CAAC;AAC7C,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAACsa,2BAA2B,CAAC9Z,GAAG,EAAE,CAAC,CAAC;AAC5C;AACAkJ,EAAAA,WAAWA,GAAG;AACV,IAAA,MAAMvG,GAAG,GAAGnD,IAAI,CAACwa,oBAAoB,EAAE;AACvC,IAAA,IAAI,CAACpR,SAAS,GAAGjG,GAAG,KAAK,CAAC;IAC1BkX,4BAA4B,CAAC1R,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AACjE,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;EACIqR,qBAAqBA,CAACC,QAAQ,EAAE;AAC5B,IAAA,IAAIzN,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA9J,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;AAC1C,MAAA,MAAMxX,GAAG,GAAGnD,IAAI,CAAC4a,sCAAsC,CAAC,IAAI,CAACxR,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,CAAC;AAC3F,MAAA,IAAIjE,IAAI,GAAGhC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIiC,IAAI,GAAGjC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRgC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM5B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA8J,MAAAA,WAAW,GAAG9H,IAAI;AAClB+H,MAAAA,WAAW,GAAG9H,IAAI;AAClB,MAAA,OAAOvD,kBAAkB,CAACsD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNpF,IAAI,CAAC8F,eAAe,CAACmH,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI2N,EAAAA,WAAWA,CAACH,QAAQ,EAAE5M,OAAO,EAAE;AAC3B,IAAA,IAAIb,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA9J,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;AAC1C,MAAA,MAAMxX,GAAG,GAAGnD,IAAI,CAAC8a,4BAA4B,CAAC,IAAI,CAAC1R,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,EAAE0E,OAAO,CAAC;AAC1F,MAAA,IAAI3I,IAAI,GAAGhC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIiC,IAAI,GAAGjC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRgC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM5B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA8J,MAAAA,WAAW,GAAG9H,IAAI;AAClB+H,MAAAA,WAAW,GAAG9H,IAAI;AAClB,MAAA,OAAOvD,kBAAkB,CAACsD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNpF,IAAI,CAAC8F,eAAe,CAACmH,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI6N,EAAAA,WAAWA,CAACL,QAAQ,EAAEM,OAAO,EAAE;AAC3B,IAAA,IAAI/N,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA9J,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;AAC1C,MAAA,MAAMxX,GAAG,GAAGnD,IAAI,CAACib,4BAA4B,CAAC,IAAI,CAAC7R,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,EAAE4R,OAAO,CAAC;AAC1F,MAAA,IAAI7V,IAAI,GAAGhC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIiC,IAAI,GAAGjC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRgC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM5B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA8J,MAAAA,WAAW,GAAG9H,IAAI;AAClB+H,MAAAA,WAAW,GAAG9H,IAAI;AAClB,MAAA,OAAOvD,kBAAkB,CAACsD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNpF,IAAI,CAAC8F,eAAe,CAACmH,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIgO,EAAAA,aAAaA,CAACR,QAAQ,EAAES,SAAS,EAAE;AAC/B,IAAA,IAAIlO,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA9J,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;AAC1C,MAAA,MAAMxX,GAAG,GAAGnD,IAAI,CAACob,8BAA8B,CAAC,IAAI,CAAChS,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,EAAE+R,SAAS,CAAC;AAC9F,MAAA,IAAIhW,IAAI,GAAGhC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIiC,IAAI,GAAGjC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRgC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM5B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA8J,MAAAA,WAAW,GAAG9H,IAAI;AAClB+H,MAAAA,WAAW,GAAG9H,IAAI;AAClB,MAAA,OAAOvD,kBAAkB,CAACsD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNpF,IAAI,CAAC8F,eAAe,CAACmH,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;EACImO,mBAAmBA,CAACX,QAAQ,EAAE;AAC1B,IAAA,IAAIzN,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA9J,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;AAC1C,MAAA,MAAMxX,GAAG,GAAGnD,IAAI,CAACsb,oCAAoC,CAAC,IAAI,CAAClS,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,CAAC;AACzF,MAAA,IAAIjE,IAAI,GAAGhC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIiC,IAAI,GAAGjC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRgC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM5B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA8J,MAAAA,WAAW,GAAG9H,IAAI;AAClB+H,MAAAA,WAAW,GAAG9H,IAAI;AAClB,MAAA,OAAOvD,kBAAkB,CAACsD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNpF,IAAI,CAAC8F,eAAe,CAACmH,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIqO,EAAAA,uBAAuBA,CAACb,QAAQ,EAAE5M,OAAO,EAAE;AACvC,IAAA,IAAIb,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA9J,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;AAC1C,MAAA,MAAMxX,GAAG,GAAGnD,IAAI,CAACwb,wCAAwC,CAAC,IAAI,CAACpS,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,EAAE0E,OAAO,CAAC;AACtG,MAAA,IAAI3I,IAAI,GAAGhC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIiC,IAAI,GAAGjC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRgC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM5B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA8J,MAAAA,WAAW,GAAG9H,IAAI;AAClB+H,MAAAA,WAAW,GAAG9H,IAAI;AAClB,MAAA,OAAOvD,kBAAkB,CAACsD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNpF,IAAI,CAAC8F,eAAe,CAACmH,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIuO,EAAAA,uBAAuBA,CAACf,QAAQ,EAAEM,OAAO,EAAE;AACvC,IAAA,IAAI/N,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA9J,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;AAC1C,MAAA,MAAMxX,GAAG,GAAGnD,IAAI,CAAC0b,wCAAwC,CAAC,IAAI,CAACtS,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,EAAE4R,OAAO,CAAC;AACtG,MAAA,IAAI7V,IAAI,GAAGhC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIiC,IAAI,GAAGjC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRgC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM5B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA8J,MAAAA,WAAW,GAAG9H,IAAI;AAClB+H,MAAAA,WAAW,GAAG9H,IAAI;AAClB,MAAA,OAAOvD,kBAAkB,CAACsD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNpF,IAAI,CAAC8F,eAAe,CAACmH,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIyO,EAAAA,yBAAyBA,CAACjB,QAAQ,EAAES,SAAS,EAAE;AAC3C,IAAA,IAAIlO,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA9J,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;AAC1C,MAAA,MAAMxX,GAAG,GAAGnD,IAAI,CAAC4b,0CAA0C,CAAC,IAAI,CAACxS,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,EAAE+R,SAAS,CAAC;AAC1G,MAAA,IAAIhW,IAAI,GAAGhC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIiC,IAAI,GAAGjC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRgC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM5B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA8J,MAAAA,WAAW,GAAG9H,IAAI;AAClB+H,MAAAA,WAAW,GAAG9H,IAAI;AAClB,MAAA,OAAOvD,kBAAkB,CAACsD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNpF,IAAI,CAAC8F,eAAe,CAACmH,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI2O,YAAYA,CAACnB,QAAQ,EAAE5M,OAAO,EAAEkK,QAAQ,EAAEhQ,YAAY,EAAE;AACpD,IAAA,IAAIlB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA3D,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;MAC1C,IAAI5V,IAAI,GAAGN,UAAU,CAACuD,YAAY,CAAC,GAAG,CAAC,GAAGtF,iBAAiB,CAACsF,YAAY,EAAEhI,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC1H,IAAIC,IAAI,GAAGpD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC8b,6BAA6B,CAAC,IAAI,CAAC1S,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,EAAE0E,OAAO,EAAEkK,QAAQ,EAAEjT,IAAI,EAAEG,IAAI,CAAC;AACjH,MAAA,IAAIG,IAAI,GAAGlC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAImC,IAAI,GAAGnC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRkC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM9B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA2D,MAAAA,WAAW,GAAGzB,IAAI;AAClB0B,MAAAA,WAAW,GAAGzB,IAAI;AAClB,MAAA,OAAOzD,kBAAkB,CAACwD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNtF,IAAI,CAAC8F,eAAe,CAACgB,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIgV,QAAQA,CAACrB,QAAQ,EAAE5M,OAAO,EAAEkF,WAAW,EAAEhL,YAAY,EAAE;AACnD,IAAA,IAAIuG,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACApL,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;AAC1CvX,MAAAA,YAAY,CAAC4P,WAAW,EAAET,OAAO,CAAC;AAClC,MAAA,IAAIxN,IAAI,GAAGiO,WAAW,CAAC3J,kBAAkB,EAAE;MAC3C,IAAIlE,IAAI,GAAGV,UAAU,CAACuD,YAAY,CAAC,GAAG,CAAC,GAAGtF,iBAAiB,CAACsF,YAAY,EAAEhI,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC1H,IAAIG,IAAI,GAAGtD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAACgc,yBAAyB,CAAC,IAAI,CAAC5S,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,EAAE0E,OAAO,EAAE/I,IAAI,EAAEI,IAAI,EAAEC,IAAI,CAAC;AACzG,MAAA,IAAIsJ,IAAI,GAAGvL,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIwL,IAAI,GAAGxL,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRuL,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMnL,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAoL,MAAAA,WAAW,GAAGG,IAAI;AAClBF,MAAAA,WAAW,GAAGG,IAAI;AAClB,MAAA,OAAO9M,kBAAkB,CAAC6M,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN3O,IAAI,CAAC8F,eAAe,CAACyI,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIyN,QAAQA,CAACvB,QAAQ,EAAEM,OAAO,EAAEhI,WAAW,EAAEhL,YAAY,EAAE;AACnD,IAAA,IAAIuG,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACApL,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;AAC1CvX,MAAAA,YAAY,CAAC4P,WAAW,EAAET,OAAO,CAAC;AAClC,MAAA,IAAIxN,IAAI,GAAGiO,WAAW,CAAC3J,kBAAkB,EAAE;MAC3C,IAAIlE,IAAI,GAAGV,UAAU,CAACuD,YAAY,CAAC,GAAG,CAAC,GAAGtF,iBAAiB,CAACsF,YAAY,EAAEhI,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC1H,IAAIG,IAAI,GAAGtD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAACkc,yBAAyB,CAAC,IAAI,CAAC9S,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,EAAE4R,OAAO,EAAEjW,IAAI,EAAEI,IAAI,EAAEC,IAAI,CAAC;AACzG,MAAA,IAAIsJ,IAAI,GAAGvL,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIwL,IAAI,GAAGxL,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRuL,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMnL,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAoL,MAAAA,WAAW,GAAGG,IAAI;AAClBF,MAAAA,WAAW,GAAGG,IAAI;AAClB,MAAA,OAAO9M,kBAAkB,CAAC6M,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN3O,IAAI,CAAC8F,eAAe,CAACyI,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI2N,UAAUA,CAACzB,QAAQ,EAAES,SAAS,EAAEnI,WAAW,EAAEhL,YAAY,EAAE;AACvD,IAAA,IAAIuG,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACApL,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;AAC1CvX,MAAAA,YAAY,CAAC4P,WAAW,EAAET,OAAO,CAAC;AAClC,MAAA,IAAIxN,IAAI,GAAGiO,WAAW,CAAC3J,kBAAkB,EAAE;MAC3C,IAAIlE,IAAI,GAAGV,UAAU,CAACuD,YAAY,CAAC,GAAG,CAAC,GAAGtF,iBAAiB,CAACsF,YAAY,EAAEhI,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC1H,IAAIG,IAAI,GAAGtD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAACoc,2BAA2B,CAAC,IAAI,CAAChT,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,EAAE+R,SAAS,EAAEpW,IAAI,EAAEI,IAAI,EAAEC,IAAI,CAAC;AAC7G,MAAA,IAAIsJ,IAAI,GAAGvL,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIwL,IAAI,GAAGxL,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRuL,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMnL,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAoL,MAAAA,WAAW,GAAGG,IAAI;AAClBF,MAAAA,WAAW,GAAGG,IAAI;AAClB,MAAA,OAAO9M,kBAAkB,CAAC6M,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN3O,IAAI,CAAC8F,eAAe,CAACyI,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI6N,WAAWA,CAAC3B,QAAQ,EAAE5M,OAAO,EAAEkK,QAAQ,EAAEhQ,YAAY,EAAE;AACnD,IAAA,IAAIlB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA3D,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;MAC1C,IAAI5V,IAAI,GAAGN,UAAU,CAACuD,YAAY,CAAC,GAAG,CAAC,GAAGtF,iBAAiB,CAACsF,YAAY,EAAEhI,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC1H,IAAIC,IAAI,GAAGpD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAACsc,4BAA4B,CAAC,IAAI,CAAClT,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,EAAE0E,OAAO,EAAEkK,QAAQ,EAAEjT,IAAI,EAAEG,IAAI,CAAC;AAChH,MAAA,IAAIG,IAAI,GAAGlC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAImC,IAAI,GAAGnC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRkC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM9B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA2D,MAAAA,WAAW,GAAGzB,IAAI;AAClB0B,MAAAA,WAAW,GAAGzB,IAAI;AAClB,MAAA,OAAOzD,kBAAkB,CAACwD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNtF,IAAI,CAAC8F,eAAe,CAACgB,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIwV,EAAAA,OAAOA,CAAC7B,QAAQ,EAAE5M,OAAO,EAAE0O,aAAa,EAAEC,OAAO,EAAEC,WAAW,EAAEC,KAAK,EAAE3U,YAAY,EAAE;AACjF,IAAA,IAAIlB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA3D,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;MAC1C,IAAI5V,IAAI,GAAGN,UAAU,CAACuD,YAAY,CAAC,GAAG,CAAC,GAAGtF,iBAAiB,CAACsF,YAAY,EAAEhI,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC1H,IAAIC,IAAI,GAAGpD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC4c,wBAAwB,CAAC,IAAI,CAACxT,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,EAAE0E,OAAO,EAAE0O,aAAa,EAAEC,OAAO,EAAEC,WAAW,EAAEC,KAAK,EAAE5X,IAAI,EAAEG,IAAI,CAAC;AAC9I,MAAA,IAAIG,IAAI,GAAGlC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAImC,IAAI,GAAGnC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRkC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM9B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA2D,MAAAA,WAAW,GAAGzB,IAAI;AAClB0B,MAAAA,WAAW,GAAGzB,IAAI;AAClB,MAAA,OAAOzD,kBAAkB,CAACwD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNtF,IAAI,CAAC8F,eAAe,CAACgB,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI8V,kBAAkBA,CAACnC,QAAQ,EAAEM,OAAO,EAAE8B,CAAC,EAAE9U,YAAY,EAAE;AACnD,IAAA,IAAIlB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA3D,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;MAC1C,IAAI5V,IAAI,GAAGN,UAAU,CAACuD,YAAY,CAAC,GAAG,CAAC,GAAGtF,iBAAiB,CAACsF,YAAY,EAAEhI,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC1H,IAAIC,IAAI,GAAGpD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC+c,mCAAmC,CAAC,IAAI,CAAC3T,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,EAAE4R,OAAO,EAAE8B,CAAC,EAAE/X,IAAI,EAAEG,IAAI,CAAC;AAChH,MAAA,IAAIG,IAAI,GAAGlC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAImC,IAAI,GAAGnC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRkC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM9B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA2D,MAAAA,WAAW,GAAGzB,IAAI;AAClB0B,MAAAA,WAAW,GAAGzB,IAAI;AAClB,MAAA,OAAOzD,kBAAkB,CAACwD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNtF,IAAI,CAAC8F,eAAe,CAACgB,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIiW,SAASA,CAACtC,QAAQ,EAAEM,OAAO,EAAE8B,CAAC,EAAE9U,YAAY,EAAE;AAC1C,IAAA,IAAIlB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA3D,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;MAC1C,IAAI5V,IAAI,GAAGN,UAAU,CAACuD,YAAY,CAAC,GAAG,CAAC,GAAGtF,iBAAiB,CAACsF,YAAY,EAAEhI,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC1H,IAAIC,IAAI,GAAGpD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAACid,0BAA0B,CAAC,IAAI,CAAC7T,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,EAAE4R,OAAO,EAAE8B,CAAC,EAAE/X,IAAI,EAAEG,IAAI,CAAC;AACvG,MAAA,IAAIG,IAAI,GAAGlC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAImC,IAAI,GAAGnC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRkC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM9B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA2D,MAAAA,WAAW,GAAGzB,IAAI;AAClB0B,MAAAA,WAAW,GAAGzB,IAAI;AAClB,MAAA,OAAOzD,kBAAkB,CAACwD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNtF,IAAI,CAAC8F,eAAe,CAACgB,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACImW,OAAOA,CAACxC,QAAQ,EAAEM,OAAO,EAAE8B,CAAC,EAAE9U,YAAY,EAAE;AACxC,IAAA,IAAIlB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA3D,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;MAC1C,IAAI5V,IAAI,GAAGN,UAAU,CAACuD,YAAY,CAAC,GAAG,CAAC,GAAGtF,iBAAiB,CAACsF,YAAY,EAAEhI,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC1H,IAAIC,IAAI,GAAGpD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAACmd,wBAAwB,CAAC,IAAI,CAAC/T,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,EAAE4R,OAAO,EAAE8B,CAAC,EAAE/X,IAAI,EAAEG,IAAI,CAAC;AACrG,MAAA,IAAIG,IAAI,GAAGlC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAImC,IAAI,GAAGnC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRkC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM9B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA2D,MAAAA,WAAW,GAAGzB,IAAI;AAClB0B,MAAAA,WAAW,GAAGzB,IAAI;AAClB,MAAA,OAAOzD,kBAAkB,CAACwD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNtF,IAAI,CAAC8F,eAAe,CAACgB,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACIqW,EAAAA,YAAYA,CAAC1C,QAAQ,EAAES,SAAS,EAAEnT,YAAY,EAAE;AAC5C,IAAA,IAAIlB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA3D,MAAAA,YAAY,CAACsX,QAAQ,EAAEC,kBAAkB,CAAC;MAC1C,IAAI5V,IAAI,GAAGN,UAAU,CAACuD,YAAY,CAAC,GAAG,CAAC,GAAGtF,iBAAiB,CAACsF,YAAY,EAAEhI,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC1H,IAAIC,IAAI,GAAGpD,eAAe;AAC1B,MAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACqd,6BAA6B,CAAC,IAAI,CAACjU,SAAS,EAAEsR,QAAQ,CAACtR,SAAS,EAAE+R,SAAS,EAAEpW,IAAI,EAAEG,IAAI,CAAC;AACzG,MAAA,IAAIG,IAAI,GAAGlC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAImC,IAAI,GAAGnC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRkC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM9B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA2D,MAAAA,WAAW,GAAGzB,IAAI;AAClB0B,MAAAA,WAAW,GAAGzB,IAAI;AAClB,MAAA,OAAOzD,kBAAkB,CAACwD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNtF,IAAI,CAAC8F,eAAe,CAACgB,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACJ;AAEA,MAAMuW,8BAA8B,GAAI,OAAO5U,oBAAoB,KAAK,WAAW,GAC7E;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAACud,6BAA6B,CAAC/c,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEhF,MAAMma,kBAAkB,CAAC;AAE5BtR,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBkU,IAAAA,8BAA8B,CAACxU,UAAU,CAAC,IAAI,CAAC;AAC/C,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAACud,6BAA6B,CAAC/c,GAAG,EAAE,CAAC,CAAC;AAC9C;AACA;AACJ;AACA;AACA;AACIkJ,EAAAA,WAAWA,CAACmF,EAAE,EAAEjI,qBAAqB,EAAE;AACnC,IAAA,MAAM7B,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACkE,qBAAqB,EAAE5G,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACtG,MAAMG,IAAI,GAAGtD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACwd,sBAAsB,CAACzY,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAC/D,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,IAAI,CAACiG,SAAS,GAAGjG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7Bma,8BAA8B,CAAC3U,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AACnE,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;EACI,IAAIyF,EAAEA,GAAG;AACL,IAAA,IAAIiB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACyd,qBAAqB,CAAC,IAAI,CAACrU,SAAS,CAAC;AACtD0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI2N,EAAAA,iBAAiBA,GAAG;AAChB,IAAA,IAAI5N,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC2d,oCAAoC,CAAC,IAAI,CAACvU,SAAS,CAAC;AACrE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI6N,EAAAA,sBAAsBA,GAAG;AACrB,IAAA,IAAI9N,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC6d,yCAAyC,CAAC,IAAI,CAACzU,SAAS,CAAC;AAC1E0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI+N,EAAAA,qBAAqBA,GAAG;AACpB,IAAA,IAAIhO,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC+d,wCAAwC,CAAC,IAAI,CAAC3U,SAAS,CAAC;AACzE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiO,EAAAA,iBAAiBA,GAAG;IAChB,MAAM7a,GAAG,GAAGnD,IAAI,CAACie,oCAAoC,CAAC,IAAI,CAAC7U,SAAS,CAAC;AACrE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACIyU,EAAAA,sBAAsBA,GAAG;IACrB,MAAM/a,GAAG,GAAGnD,IAAI,CAACme,yCAAyC,CAAC,IAAI,CAAC/U,SAAS,CAAC;AAC1E,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI2U,EAAAA,4BAA4BA,GAAG;AAC3B,IAAA,IAAItO,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACqe,+CAA+C,CAAC,IAAI,CAACjV,SAAS,CAAC;AAChF0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIuO,EAAAA,wBAAwBA,GAAG;IACvB,MAAMnb,GAAG,GAAGnD,IAAI,CAACue,2CAA2C,CAAC,IAAI,CAACnV,SAAS,CAAC;AAC5E,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI+U,EAAAA,6BAA6BA,GAAG;IAC5B,MAAMrb,GAAG,GAAGnD,IAAI,CAACye,gDAAgD,CAAC,IAAI,CAACrV,SAAS,CAAC;AACjF,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACIiV,EAAAA,sBAAsBA,GAAG;AACrB,IAAA,IAAI5O,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC2e,yCAAyC,CAAC,IAAI,CAACvV,SAAS,CAAC;AAC1E0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACI6O,sBAAsBA,CAACC,oBAAoB,EAAE;AACzC,IAAA,MAAM9Z,IAAI,GAAGrC,iBAAiB,CAACmc,oBAAoB,EAAE7e,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACrG,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC8e,yCAAyC,CAAC,IAAI,CAAC1V,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACtF,IAAA,IAAI/B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI4b,EAAAA,YAAYA,CAAC/L,WAAW,EAAEH,QAAQ,EAAEpF,KAAK,EAAE;AACvCrK,IAAAA,YAAY,CAAC4P,WAAW,EAAET,OAAO,CAAC;AAClC,IAAA,IAAIxN,IAAI,GAAGiO,WAAW,CAAC3J,kBAAkB,EAAE;AAC3CjG,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIpN,IAAI,GAAG0N,QAAQ,CAACxJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIlN,IAAI,GAAGoI,KAAK,CAACpE,kBAAkB,EAAE;AACrC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAACgf,+BAA+B,CAAC,IAAI,CAAC5V,SAAS,EAAErE,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AAClF,IAAA,IAAIlC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI8b,cAAcA,CAACjM,WAAW,EAAE;AACxB5P,IAAAA,YAAY,CAAC4P,WAAW,EAAET,OAAO,CAAC;AAClC,IAAA,IAAIxN,IAAI,GAAGiO,WAAW,CAAC3J,kBAAkB,EAAE;IAC3CrJ,IAAI,CAACkf,iCAAiC,CAAC,IAAI,CAAC9V,SAAS,EAAErE,IAAI,CAAC;AAChE;AACA;AACJ;AACA;EACIoa,WAAWA,CAACtM,QAAQ,EAAE;AAClBzP,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG8N,QAAQ,CAACxJ,kBAAkB,EAAE;IACxCrJ,IAAI,CAACof,8BAA8B,CAAC,IAAI,CAAChW,SAAS,EAAErE,IAAI,CAAC;AAC7D;AACA;AACJ;AACA;EACIsa,QAAQA,CAAC5R,KAAK,EAAE;AACZrK,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIxN,IAAI,GAAG0I,KAAK,CAACpE,kBAAkB,EAAE;IACrC,MAAMlG,GAAG,GAAGnD,IAAI,CAACsf,2BAA2B,CAAC,IAAI,CAAClW,SAAS,EAAErE,IAAI,CAAC;AAClE,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIoc,SAASA,CAAC5H,MAAM,EAAE;AACdvU,IAAAA,YAAY,CAACuU,MAAM,EAAEpF,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAG4S,MAAM,CAACtO,kBAAkB,EAAE;IACtCrJ,IAAI,CAACwf,4BAA4B,CAAC,IAAI,CAACpW,SAAS,EAAErE,IAAI,CAAC;AAC3D;AACJ;AAEA,MAAM0a,6BAA6B,GAAI,OAAO/W,oBAAoB,KAAK,WAAW,GAC5E;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAAC0f,4BAA4B,CAAClf,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAE/E,MAAMmf,iBAAiB,CAAC;EAE3B,OAAOna,MAAMA,CAAChF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAGqI,MAAM,CAACC,MAAM,CAACyW,iBAAiB,CAACxW,SAAS,CAAC;IACtDvI,GAAG,CAACwI,SAAS,GAAG5I,GAAG;IACnBif,6BAA6B,CAAC9W,QAAQ,CAAC/H,GAAG,EAAEA,GAAG,CAACwI,SAAS,EAAExI,GAAG,CAAC;AAC/D,IAAA,OAAOA,GAAG;AACd;AAEAyI,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBqW,IAAAA,6BAA6B,CAAC3W,UAAU,CAAC,IAAI,CAAC;AAC9C,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAAC0f,4BAA4B,CAAClf,GAAG,EAAE,CAAC,CAAC;AAC7C;AACA;AACJ;AACA;EACI,IAAIof,IAAIA,GAAG;AACP,IAAA,IAAI9P,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC6f,sBAAsB,CAAC,IAAI,CAACzW,SAAS,CAAC;AACvD0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACI,IAAI+P,UAAUA,GAAG;AACb,IAAA,IAAIhQ,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC+f,4BAA4B,CAAC,IAAI,CAAC3W,SAAS,CAAC;AAC7D0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACJ;AAEA,MAAMiQ,kBAAkB,GAAI,OAAOtX,oBAAoB,KAAK,WAAW,GACjE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAACigB,iBAAiB,CAACzf,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEpE,MAAM0f,MAAM,CAAC;AAEhB7W,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClB4W,IAAAA,kBAAkB,CAAClX,UAAU,CAAC,IAAI,CAAC;AACnC,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAACigB,iBAAiB,CAACzf,GAAG,EAAE,CAAC,CAAC;AAClC;AACA;AACJ;AACA;EACI,IAAIqO,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B9B,IAAI,CAACmgB,aAAa,CAAC,IAAI,CAAC/W,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AAClD;AACA;AACJ;AACA;EACI,IAAI2J,EAAEA,GAAG;AACL,IAAA,IAAIiB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACogB,SAAS,CAAC,IAAI,CAAChX,SAAS,CAAC;AAC1C0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIrG,WAAWA,CAACmF,EAAE,EAAE;AACZ,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACqgB,UAAU,CAACtb,IAAI,EAAEG,IAAI,CAAC;AACvC,IAAA,IAAI,CAACkE,SAAS,GAAGjG,GAAG,KAAK,CAAC;IAC1B6c,kBAAkB,CAACrX,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AACvD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACI6I,EAAAA,UAAUA,CAACqO,KAAK,EAAEC,GAAG,EAAE;AACnBnd,IAAAA,YAAY,CAACkd,KAAK,EAAE/N,OAAO,CAAC;AAC5B,IAAA,IAAIxN,IAAI,GAAGub,KAAK,CAACjX,kBAAkB,EAAE;AACrCjG,IAAAA,YAAY,CAACmd,GAAG,EAAEhO,OAAO,CAAC;AAC1B,IAAA,IAAIpN,IAAI,GAAGob,GAAG,CAAClX,kBAAkB,EAAE;AACnC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAACwgB,iBAAiB,CAAC,IAAI,CAACpX,SAAS,EAAErE,IAAI,EAAEI,IAAI,CAAC;AAC9D,IAAA,IAAIhC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIwP,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEpF,KAAK,EAAE;AACrCrK,IAAAA,YAAY,CAACwP,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG6N,QAAQ,CAACvJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIpN,IAAI,GAAG0N,QAAQ,CAACxJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIlN,IAAI,GAAGoI,KAAK,CAACpE,kBAAkB,EAAE;AACrC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAACygB,oBAAoB,CAAC,IAAI,CAACrX,SAAS,EAAErE,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AACvE,IAAA,IAAIlC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI4P,eAAeA,CAACC,WAAW,EAAE;AACzB5P,IAAAA,YAAY,CAAC4P,WAAW,EAAET,OAAO,CAAC;AAClC,IAAA,IAAIxN,IAAI,GAAGiO,WAAW,CAAC3J,kBAAkB,EAAE;IAC3CrJ,IAAI,CAAC0gB,sBAAsB,CAAC,IAAI,CAACtX,SAAS,EAAErE,IAAI,CAAC;AACrD;AACA;AACJ;AACA;EACImO,YAAYA,CAACL,QAAQ,EAAE;AACnBzP,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG8N,QAAQ,CAACxJ,kBAAkB,EAAE;IACxCrJ,IAAI,CAAC2gB,mBAAmB,CAAC,IAAI,CAACvX,SAAS,EAAErE,IAAI,CAAC;AAClD;AACA;AACJ;AACA;EACIqO,SAASA,CAAC3F,KAAK,EAAE;AACbrK,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIxN,IAAI,GAAG0I,KAAK,CAACpE,kBAAkB,EAAE;IACrC,MAAMlG,GAAG,GAAGnD,IAAI,CAAC4gB,gBAAgB,CAAC,IAAI,CAACxX,SAAS,EAAErE,IAAI,CAAC;AACvD,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAmQ,EAAAA,iBAAiBA,GAAG;IAChB,MAAMnQ,GAAG,GAAGnD,IAAI,CAAC6gB,wBAAwB,CAAC,IAAI,CAACzX,SAAS,CAAC;AACzD,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAqQ,EAAAA,cAAcA,GAAG;AACbxT,IAAAA,IAAI,CAAC8gB,qBAAqB,CAAC,IAAI,CAAC1X,SAAS,CAAC;AAC9C;AACAsK,EAAAA,OAAOA,GAAG;AACN1T,IAAAA,IAAI,CAAC+gB,cAAc,CAAC,IAAI,CAAC3X,SAAS,CAAC;AACvC;AACA;AACJ;AACA;AACI4D,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAI8C,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACghB,0BAA0B,CAAC,IAAI,CAAC5X,SAAS,CAAC;AAC3D0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI8D,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAI/D,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACihB,gCAAgC,CAAC,IAAI,CAAC7X,SAAS,CAAC;AACjE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIgE,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIjE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACkhB,8BAA8B,CAAC,IAAI,CAAC9X,SAAS,CAAC;AAC/D0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkE,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAInE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACmhB,oCAAoC,CAAC,IAAI,CAAC/X,SAAS,CAAC;AACrE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIoE,EAAAA,mBAAmBA,GAAG;IAClB,MAAMhR,GAAG,GAAGnD,IAAI,CAACohB,0BAA0B,CAAC,IAAI,CAAChY,SAAS,CAAC;AAC3D,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI4K,EAAAA,yBAAyBA,GAAG;IACxB,MAAMlR,GAAG,GAAGnD,IAAI,CAACqhB,gCAAgC,CAAC,IAAI,CAACjY,SAAS,CAAC;AACjE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI8K,EAAAA,UAAUA,GAAG;IACT,MAAMpR,GAAG,GAAGnD,IAAI,CAACshB,iBAAiB,CAAC,IAAI,CAAClY,SAAS,CAAC;AAClD,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;EACIuU,UAAUA,CAACC,MAAM,EAAE;AACfvU,IAAAA,YAAY,CAACuU,MAAM,EAAEpF,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAG4S,MAAM,CAACtO,kBAAkB,EAAE;IACtC,MAAMlG,GAAG,GAAGnD,IAAI,CAACuhB,iBAAiB,CAAC,IAAI,CAACnY,SAAS,EAAErE,IAAI,CAAC;AACxD,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA0U,EAAAA,YAAYA,GAAG;IACX,MAAM1U,GAAG,GAAGnD,IAAI,CAACwhB,mBAAmB,CAAC,IAAI,CAACpY,SAAS,CAAC;AACpD,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACI4U,EAAAA,qBAAqBA,CAACC,QAAQ,EAAEC,uBAAuB,EAAEC,KAAK,EAAE;AAC5D,IAAA,IAAIpI,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAM5M,GAAG,GAAGnD,IAAI,CAACyhB,4BAA4B,CAAC,IAAI,CAACrY,SAAS,EAAE4O,QAAQ,EAAEC,uBAAuB,EAAEC,KAAK,CAAC;AACvGpI,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI2R,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,IAAI5R,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC2hB,yBAAyB,CAAC,IAAI,CAACvY,SAAS,CAAC;AAC1D0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACJ;AAEA,MAAM6R,iCAAiC,GAAI,OAAOlZ,oBAAoB,KAAK,WAAW,GAChF;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAAC6hB,gCAAgC,CAACrhB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACO,MAAM+E,qBAAqB,CAAC;EAE/B,OAAOC,MAAMA,CAAChF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAGqI,MAAM,CAACC,MAAM,CAAC3D,qBAAqB,CAAC4D,SAAS,CAAC;IAC1DvI,GAAG,CAACwI,SAAS,GAAG5I,GAAG;IACnBohB,iCAAiC,CAACjZ,QAAQ,CAAC/H,GAAG,EAAEA,GAAG,CAACwI,SAAS,EAAExI,GAAG,CAAC;AACnE,IAAA,OAAOA,GAAG;AACd;AAEAyI,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBwY,IAAAA,iCAAiC,CAAC9Y,UAAU,CAAC,IAAI,CAAC;AAClD,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAAC6hB,gCAAgC,CAACrhB,GAAG,EAAE,CAAC,CAAC;AACjD;AACA;AACJ;AACA;EACI,IAAIshB,iBAAiBA,GAAG;AACpB,IAAA,IAAIhS,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC+hB,uCAAuC,CAAC,IAAI,CAAC3Y,SAAS,CAAC;AACxE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACJ;AAEA,MAAMiS,qBAAqB,GAAI,OAAOtZ,oBAAoB,KAAK,WAAW,GACpE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAACiiB,oBAAoB,CAACzhB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEvE,MAAM0hB,SAAS,CAAC;AAEnB7Y,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClB4Y,IAAAA,qBAAqB,CAAClZ,UAAU,CAAC,IAAI,CAAC;AACtC,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAACiiB,oBAAoB,CAACzhB,GAAG,EAAE,CAAC,CAAC;AACrC;AACA;AACJ;AACA;EACI,IAAIqO,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B9B,IAAI,CAACmiB,gBAAgB,CAAC,IAAI,CAAC/Y,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACrD;AACA;AACJ;AACA;EACI,IAAI2J,EAAEA,GAAG;AACL,IAAA,IAAIiB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACoiB,YAAY,CAAC,IAAI,CAAChZ,SAAS,CAAC;AAC7C0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIrG,WAAWA,CAACmF,EAAE,EAAE;AACZ,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACqiB,aAAa,CAACtd,IAAI,EAAEG,IAAI,CAAC;AAC1C,IAAA,IAAI,CAACkE,SAAS,GAAGjG,GAAG,KAAK,CAAC;IAC1B6e,qBAAqB,CAACrZ,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AAC1D,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;EACI6I,UAAUA,CAACqQ,MAAM,EAAE;IACf,MAAMvd,IAAI,GAAGX,uBAAuB,CAACke,MAAM,EAAEtiB,IAAI,CAACgF,iBAAiB,CAAC;IACpE,MAAME,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACuiB,oBAAoB,CAAC,IAAI,CAACnZ,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACjE,IAAA,IAAI/B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIwP,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEpF,KAAK,EAAE;AACrCrK,IAAAA,YAAY,CAACwP,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG6N,QAAQ,CAACvJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIpN,IAAI,GAAG0N,QAAQ,CAACxJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIlN,IAAI,GAAGoI,KAAK,CAACpE,kBAAkB,EAAE;AACrC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAACwiB,uBAAuB,CAAC,IAAI,CAACpZ,SAAS,EAAErE,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AAC1E,IAAA,IAAIlC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI4P,eAAeA,CAACC,WAAW,EAAE;AACzB5P,IAAAA,YAAY,CAAC4P,WAAW,EAAET,OAAO,CAAC;AAClC,IAAA,IAAIxN,IAAI,GAAGiO,WAAW,CAAC3J,kBAAkB,EAAE;IAC3CrJ,IAAI,CAACyiB,yBAAyB,CAAC,IAAI,CAACrZ,SAAS,EAAErE,IAAI,CAAC;AACxD;AACA;AACJ;AACA;EACImO,YAAYA,CAACL,QAAQ,EAAE;AACnBzP,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG8N,QAAQ,CAACxJ,kBAAkB,EAAE;IACxCrJ,IAAI,CAAC0iB,sBAAsB,CAAC,IAAI,CAACtZ,SAAS,EAAErE,IAAI,CAAC;AACrD;AACA;AACJ;AACA;EACIqO,SAASA,CAAC3F,KAAK,EAAE;AACbrK,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIxN,IAAI,GAAG0I,KAAK,CAACpE,kBAAkB,EAAE;IACrC,MAAMlG,GAAG,GAAGnD,IAAI,CAAC2iB,mBAAmB,CAAC,IAAI,CAACvZ,SAAS,EAAErE,IAAI,CAAC;AAC1D,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIyf,YAAYA,CAACC,QAAQ,EAAE;IACnB,MAAM9d,IAAI,GAAGX,uBAAuB,CAACye,QAAQ,EAAE7iB,IAAI,CAACgF,iBAAiB,CAAC;IACtE,MAAME,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC8iB,sBAAsB,CAAC,IAAI,CAAC1Z,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACnE,IAAA,IAAI/B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI4f,SAASA,CAACC,IAAI,EAAE;IACZ,MAAMje,IAAI,GAAGX,uBAAuB,CAAC4e,IAAI,EAAEhjB,IAAI,CAACgF,iBAAiB,CAAC;IAClE,MAAME,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACijB,mBAAmB,CAAC,IAAI,CAAC7Z,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AAChE,IAAA,IAAI/B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAkW,EAAAA,cAAcA,GAAG;AACbrZ,IAAAA,IAAI,CAACkjB,wBAAwB,CAAC,IAAI,CAAC9Z,SAAS,CAAC;AACjD;AACA+P,EAAAA,aAAaA,GAAG;IACZ,MAAMhW,GAAG,GAAGnD,IAAI,CAACmjB,uBAAuB,CAAC,IAAI,CAAC/Z,SAAS,CAAC;AACxD,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAmQ,EAAAA,iBAAiBA,GAAG;IAChB,MAAMnQ,GAAG,GAAGnD,IAAI,CAACojB,2BAA2B,CAAC,IAAI,CAACha,SAAS,CAAC;AAC5D,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI6J,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAI8C,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACqjB,6BAA6B,CAAC,IAAI,CAACja,SAAS,CAAC;AAC9D0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI8D,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAI/D,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACsjB,mCAAmC,CAAC,IAAI,CAACla,SAAS,CAAC;AACpE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIgE,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIjE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACujB,iCAAiC,CAAC,IAAI,CAACna,SAAS,CAAC;AAClE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkE,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAInE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACwjB,uCAAuC,CAAC,IAAI,CAACpa,SAAS,CAAC;AACxE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIoE,EAAAA,mBAAmBA,GAAG;IAClB,MAAMhR,GAAG,GAAGnD,IAAI,CAACyjB,6BAA6B,CAAC,IAAI,CAACra,SAAS,CAAC;AAC9D,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI4K,EAAAA,yBAAyBA,GAAG;IACxB,MAAMlR,GAAG,GAAGnD,IAAI,CAAC0jB,mCAAmC,CAAC,IAAI,CAACta,SAAS,CAAC;AACpE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACIoM,EAAAA,+BAA+BA,GAAG;AAC9B,IAAA,IAAI/F,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC2jB,yCAAyC,CAAC,IAAI,CAACva,SAAS,CAAC;AAC1E0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIgG,EAAAA,qCAAqCA,GAAG;AACpC,IAAA,IAAIjG,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC4jB,+CAA+C,CAAC,IAAI,CAACxa,SAAS,CAAC;AAChF0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkG,EAAAA,2BAA2BA,GAAG;IAC1B,MAAM9S,GAAG,GAAGnD,IAAI,CAAC6jB,qCAAqC,CAAC,IAAI,CAACza,SAAS,CAAC;AACtE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI0M,EAAAA,iCAAiCA,GAAG;IAChC,MAAMhT,GAAG,GAAGnD,IAAI,CAAC8jB,2CAA2C,CAAC,IAAI,CAAC1a,SAAS,CAAC;AAC5E,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI8K,EAAAA,UAAUA,GAAG;IACT,MAAMpR,GAAG,GAAGnD,IAAI,CAAC+jB,oBAAoB,CAAC,IAAI,CAAC3a,SAAS,CAAC;AACrD,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;EACIuU,UAAUA,CAACC,MAAM,EAAE;AACfvU,IAAAA,YAAY,CAACuU,MAAM,EAAEpF,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAG4S,MAAM,CAACtO,kBAAkB,EAAE;IACtC,MAAMlG,GAAG,GAAGnD,IAAI,CAACgkB,oBAAoB,CAAC,IAAI,CAAC5a,SAAS,EAAErE,IAAI,CAAC;AAC3D,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA0U,EAAAA,YAAYA,GAAG;IACX,MAAM1U,GAAG,GAAGnD,IAAI,CAACikB,sBAAsB,CAAC,IAAI,CAAC7a,SAAS,CAAC;AACvD,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACJ;AAEA,MAAM+gB,sBAAsB,GAAI,OAAOxb,oBAAoB,KAAK,WAAW,GACrE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAACmkB,qBAAqB,CAAC3jB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAExE,MAAM4jB,UAAU,CAAC;EAEpB,OAAO5e,MAAMA,CAAChF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAGqI,MAAM,CAACC,MAAM,CAACkb,UAAU,CAACjb,SAAS,CAAC;IAC/CvI,GAAG,CAACwI,SAAS,GAAG5I,GAAG;IACnB0jB,sBAAsB,CAACvb,QAAQ,CAAC/H,GAAG,EAAEA,GAAG,CAACwI,SAAS,EAAExI,GAAG,CAAC;AACxD,IAAA,OAAOA,GAAG;AACd;AAEAyI,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClB8a,IAAAA,sBAAsB,CAACpb,UAAU,CAAC,IAAI,CAAC;AACvC,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAACmkB,qBAAqB,CAAC3jB,GAAG,EAAE,CAAC,CAAC;AACtC;AACA;AACJ;AACA;EACI,IAAIqO,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B9B,IAAI,CAACqkB,iBAAiB,CAAC,IAAI,CAACjb,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACtD;AACA;AACJ;AACA;EACI,IAAI2J,EAAEA,GAAG;AACL,IAAA,IAAIiB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACskB,aAAa,CAAC,IAAI,CAAClb,SAAS,CAAC;AAC9C0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIrG,WAAWA,CAACmF,EAAE,EAAE;AACZ,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACukB,cAAc,CAACxf,IAAI,EAAEG,IAAI,CAAC;AAC3C,IAAA,IAAI,CAACkE,SAAS,GAAGjG,GAAG,KAAK,CAAC;IAC1B+gB,sBAAsB,CAACvb,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AAC3D,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACIyB,EAAAA,KAAKA,GAAG;IACJ,MAAM1H,GAAG,GAAGnD,IAAI,CAACwkB,gBAAgB,CAAC,IAAI,CAACpb,SAAS,CAAC;AACjD,IAAA,OAAOgb,UAAU,CAAC5e,MAAM,CAACrC,GAAG,CAAC;AACjC;AACA;AACJ;AACA;EACI8O,UAAUA,CAACqQ,MAAM,EAAE;IACf,MAAMvd,IAAI,GAAGX,uBAAuB,CAACke,MAAM,EAAEtiB,IAAI,CAACgF,iBAAiB,CAAC;IACpE,MAAME,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACykB,qBAAqB,CAAC,IAAI,CAACrb,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AAClE,IAAA,IAAI/B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIwP,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEpF,KAAK,EAAE;AACrCrK,IAAAA,YAAY,CAACwP,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG6N,QAAQ,CAACvJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIpN,IAAI,GAAG0N,QAAQ,CAACxJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIlN,IAAI,GAAGoI,KAAK,CAACpE,kBAAkB,EAAE;AACrC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAAC0kB,wBAAwB,CAAC,IAAI,CAACtb,SAAS,EAAErE,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AAC3E,IAAA,IAAIlC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI4P,eAAeA,CAACC,WAAW,EAAE;AACzB5P,IAAAA,YAAY,CAAC4P,WAAW,EAAET,OAAO,CAAC;AAClC,IAAA,IAAIxN,IAAI,GAAGiO,WAAW,CAAC3J,kBAAkB,EAAE;IAC3CrJ,IAAI,CAAC2kB,0BAA0B,CAAC,IAAI,CAACvb,SAAS,EAAErE,IAAI,CAAC;AACzD;AACA;AACJ;AACA;EACImO,YAAYA,CAACL,QAAQ,EAAE;AACnBzP,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG8N,QAAQ,CAACxJ,kBAAkB,EAAE;IACxCrJ,IAAI,CAAC4kB,uBAAuB,CAAC,IAAI,CAACxb,SAAS,EAAErE,IAAI,CAAC;AACtD;AACA;AACJ;AACA;EACIqO,SAASA,CAAC3F,KAAK,EAAE;AACbrK,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIxN,IAAI,GAAG0I,KAAK,CAACpE,kBAAkB,EAAE;IACrC,MAAMlG,GAAG,GAAGnD,IAAI,CAAC6kB,oBAAoB,CAAC,IAAI,CAACzb,SAAS,EAAErE,IAAI,CAAC;AAC3D,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAmQ,EAAAA,iBAAiBA,GAAG;IAChB,MAAMnQ,GAAG,GAAGnD,IAAI,CAAC8kB,4BAA4B,CAAC,IAAI,CAAC1b,SAAS,CAAC;AAC7D,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI4hB,mBAAmBA,CAACzC,MAAM,EAAE;IACxB,MAAMvd,IAAI,GAAGX,uBAAuB,CAACke,MAAM,EAAEtiB,IAAI,CAACgF,iBAAiB,CAAC;IACpE,MAAME,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACglB,8BAA8B,CAAC,IAAI,CAAC5b,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AAC3E,IAAA,IAAI/B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI8hB,SAASA,CAAClX,KAAK,EAAE;AACb3K,IAAAA,YAAY,CAAC2K,KAAK,EAAEwE,OAAO,CAAC;AAC5B,IAAA,IAAIxN,IAAI,GAAGgJ,KAAK,CAAC1E,kBAAkB,EAAE;IACrC,MAAMlG,GAAG,GAAGnD,IAAI,CAACklB,oBAAoB,CAAC,IAAI,CAAC9b,SAAS,EAAErE,IAAI,CAAC;AAC3D,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACIgiB,EAAAA,UAAUA,GAAG;AACT,IAAA,IAAIrV,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAColB,qBAAqB,CAAC,IAAI,CAAChc,SAAS,CAAC;AACtD0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIsV,EAAAA,cAAcA,GAAG;IACb,MAAMliB,GAAG,GAAGnD,IAAI,CAACslB,yBAAyB,CAAC,IAAI,CAAClc,SAAS,CAAC;AAC1D,IAAA,IAAIK,EAAE,GAAGlC,wBAAwB,CAACpE,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACzDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI8b,EAAAA,SAASA,GAAG;IACR,MAAMpiB,GAAG,GAAGnD,IAAI,CAACwlB,oBAAoB,CAAC,IAAI,CAACpc,SAAS,CAAC;IACrD,OAAOjG,GAAG,KAAK,CAAC;AACpB;AACA;AACJ;AACA;AACA;AACA;AACA;AACI4U,EAAAA,qBAAqBA,CAACC,QAAQ,EAAEC,uBAAuB,EAAEC,KAAK,EAAE;AAC5D,IAAA,IAAIpI,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAM5M,GAAG,GAAGnD,IAAI,CAACylB,gCAAgC,CAAC,IAAI,CAACrc,SAAS,EAAE4O,QAAQ,EAAEC,uBAAuB,EAAEC,KAAK,CAAC;AAC3GpI,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA2V,EAAAA,iBAAiBA,GAAG;AAChB1lB,IAAAA,IAAI,CAAC2lB,4BAA4B,CAAC,IAAI,CAACvc,SAAS,CAAC;AACrD;AACA;AACJ;AACA;AACI4D,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAI8C,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC4lB,8BAA8B,CAAC,IAAI,CAACxc,SAAS,CAAC;AAC/D0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI8D,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAI/D,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC6lB,oCAAoC,CAAC,IAAI,CAACzc,SAAS,CAAC;AACrE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIgE,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIjE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC8lB,kCAAkC,CAAC,IAAI,CAAC1c,SAAS,CAAC;AACnE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkE,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAInE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC+lB,wCAAwC,CAAC,IAAI,CAAC3c,SAAS,CAAC;AACzE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIoE,EAAAA,mBAAmBA,GAAG;IAClB,MAAMhR,GAAG,GAAGnD,IAAI,CAACgmB,8BAA8B,CAAC,IAAI,CAAC5c,SAAS,CAAC;AAC/D,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI4K,EAAAA,yBAAyBA,GAAG;IACxB,MAAMlR,GAAG,GAAGnD,IAAI,CAACimB,oCAAoC,CAAC,IAAI,CAAC7c,SAAS,CAAC;AACrE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI8K,EAAAA,UAAUA,GAAG;IACT,MAAMpR,GAAG,GAAGnD,IAAI,CAACshB,iBAAiB,CAAC,IAAI,CAAClY,SAAS,CAAC;AAClD,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;EACIuU,UAAUA,CAACC,MAAM,EAAE;AACfvU,IAAAA,YAAY,CAACuU,MAAM,EAAEpF,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAG4S,MAAM,CAACtO,kBAAkB,EAAE;IACtC,MAAMlG,GAAG,GAAGnD,IAAI,CAACkmB,qBAAqB,CAAC,IAAI,CAAC9c,SAAS,EAAErE,IAAI,CAAC;AAC5D,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA0U,EAAAA,YAAYA,GAAG;IACX,MAAM1U,GAAG,GAAGnD,IAAI,CAACmmB,uBAAuB,CAAC,IAAI,CAAC/c,SAAS,CAAC;AACxD,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACJ;AAEA,MAAMijB,uBAAuB,GAAI,OAAO1d,oBAAoB,KAAK,WAAW,GACtE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAACqmB,sBAAsB,CAAC7lB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEzE,MAAM8lB,WAAW,CAAC;AAErBjd,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBgd,IAAAA,uBAAuB,CAACtd,UAAU,CAAC,IAAI,CAAC;AACxC,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAACqmB,sBAAsB,CAAC7lB,GAAG,EAAE,CAAC,CAAC;AACvC;AACA;AACJ;AACA;EACI,IAAIqO,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B9B,IAAI,CAACumB,kBAAkB,CAAC,IAAI,CAACnd,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACvD;AACA;AACJ;AACA;EACI,IAAI2J,EAAEA,GAAG;AACL,IAAA,IAAIiB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACwmB,cAAc,CAAC,IAAI,CAACpd,SAAS,CAAC;AAC/C0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIrG,WAAWA,CAACmF,EAAE,EAAE;AACZ,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACymB,eAAe,CAAC1hB,IAAI,EAAEG,IAAI,CAAC;AAC5C,IAAA,IAAI,CAACkE,SAAS,GAAGjG,GAAG,KAAK,CAAC;IAC1BijB,uBAAuB,CAACzd,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AAC5D,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACA;AACI6I,EAAAA,UAAUA,CAACC,MAAM,EAAEhM,KAAK,EAAEwgB,OAAO,EAAE;AAC/BtjB,IAAAA,YAAY,CAAC8O,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAGmN,MAAM,CAAC7I,kBAAkB,EAAE;AACtC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAAC2mB,sBAAsB,CAAC,IAAI,CAACvd,SAAS,EAAErE,IAAI,EAAEmB,KAAK,EAAEwgB,OAAO,CAAC;AAC7E,IAAA,IAAIvjB,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIsP,UAAUA,CAACP,MAAM,EAAE;AACf9O,IAAAA,YAAY,CAAC8O,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAGmN,MAAM,CAAC7I,kBAAkB,EAAE;IACtCrJ,IAAI,CAAC4mB,sBAAsB,CAAC,IAAI,CAACxd,SAAS,EAAErE,IAAI,CAAC;AACrD;AACA;AACJ;AACA;AACA;AACA;AACI4N,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEpF,KAAK,EAAE;AACrCrK,IAAAA,YAAY,CAACwP,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG6N,QAAQ,CAACvJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIpN,IAAI,GAAG0N,QAAQ,CAACxJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIlN,IAAI,GAAGoI,KAAK,CAACpE,kBAAkB,EAAE;AACrC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAAC6mB,yBAAyB,CAAC,IAAI,CAACzd,SAAS,EAAErE,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AAC5E,IAAA,IAAIlC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI4P,eAAeA,CAACC,WAAW,EAAE;AACzB5P,IAAAA,YAAY,CAAC4P,WAAW,EAAET,OAAO,CAAC;AAClC,IAAA,IAAIxN,IAAI,GAAGiO,WAAW,CAAC3J,kBAAkB,EAAE;IAC3CrJ,IAAI,CAAC8mB,2BAA2B,CAAC,IAAI,CAAC1d,SAAS,EAAErE,IAAI,CAAC;AAC1D;AACA;AACJ;AACA;EACImO,YAAYA,CAACL,QAAQ,EAAE;AACnBzP,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG8N,QAAQ,CAACxJ,kBAAkB,EAAE;IACxCrJ,IAAI,CAAC+mB,wBAAwB,CAAC,IAAI,CAAC3d,SAAS,EAAErE,IAAI,CAAC;AACvD;AACA;AACJ;AACA;EACIqO,SAASA,CAAC3F,KAAK,EAAE;AACbrK,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIxN,IAAI,GAAG0I,KAAK,CAACpE,kBAAkB,EAAE;IACrC,MAAMlG,GAAG,GAAGnD,IAAI,CAACgnB,qBAAqB,CAAC,IAAI,CAAC5d,SAAS,EAAErE,IAAI,CAAC;AAC5D,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAmQ,EAAAA,iBAAiBA,GAAG;IAChB,MAAMnQ,GAAG,GAAGnD,IAAI,CAACinB,6BAA6B,CAAC,IAAI,CAAC7d,SAAS,CAAC;AAC9D,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI6J,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAI8C,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACknB,+BAA+B,CAAC,IAAI,CAAC9d,SAAS,CAAC;AAChE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI8D,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAI/D,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACmnB,qCAAqC,CAAC,IAAI,CAAC/d,SAAS,CAAC;AACtE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIgE,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIjE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAConB,mCAAmC,CAAC,IAAI,CAAChe,SAAS,CAAC;AACpE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkE,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAInE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACqnB,yCAAyC,CAAC,IAAI,CAACje,SAAS,CAAC;AAC1E0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIoE,EAAAA,mBAAmBA,GAAG;IAClB,MAAMhR,GAAG,GAAGnD,IAAI,CAACsnB,+BAA+B,CAAC,IAAI,CAACle,SAAS,CAAC;AAChE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI4K,EAAAA,yBAAyBA,GAAG;IACxB,MAAMlR,GAAG,GAAGnD,IAAI,CAACunB,qCAAqC,CAAC,IAAI,CAACne,SAAS,CAAC;AACtE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI8K,EAAAA,UAAUA,GAAG;IACT,MAAMpR,GAAG,GAAGnD,IAAI,CAACwnB,sBAAsB,CAAC,IAAI,CAACpe,SAAS,CAAC;AACvD,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACI4U,EAAAA,qBAAqBA,CAACC,QAAQ,EAAEC,uBAAuB,EAAEC,KAAK,EAAE;AAC5D,IAAA,IAAIpI,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAM5M,GAAG,GAAGnD,IAAI,CAACynB,iCAAiC,CAAC,IAAI,CAACre,SAAS,EAAE4O,QAAQ,EAAEC,uBAAuB,EAAEC,KAAK,CAAC;AAC5GpI,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACJ;AAEA,MAAM2X,0BAA0B,GAAI,OAAOhf,oBAAoB,KAAK,WAAW,GACzE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAAC2nB,yBAAyB,CAACnnB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5E,MAAMonB,cAAc,CAAC;AAExBve,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBse,IAAAA,0BAA0B,CAAC5e,UAAU,CAAC,IAAI,CAAC;AAC3C,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAAC2nB,yBAAyB,CAACnnB,GAAG,EAAE,CAAC,CAAC;AAC1C;AACAkJ,EAAAA,WAAWA,GAAG;AACV,IAAA,MAAMvG,GAAG,GAAGnD,IAAI,CAAC6nB,kBAAkB,EAAE;AACrC,IAAA,IAAI,CAACze,SAAS,GAAGjG,GAAG,KAAK,CAAC;IAC1BukB,0BAA0B,CAAC/e,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AAC/D,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;EACI0e,WAAWA,CAACvkB,IAAI,EAAE;AACd,IAAA,IAAI0J,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAMnI,IAAI,GAAGrC,iBAAiB,CAACa,IAAI,EAAEvD,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MACrF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,MAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC+nB,0BAA0B,CAAC,IAAI,CAAC3e,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACvE+H,MAAAA,WAAW,GAAG9J,GAAG,CAAC,CAAC,CAAC;AACpB+J,MAAAA,WAAW,GAAG/J,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACmH,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;EACI8a,WAAWA,CAACC,QAAQ,EAAE;AAClB,IAAA,MAAMljB,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACkoB,0BAA0B,CAAC,IAAI,CAAC9e,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;IACvE,OAAO/B,GAAG,KAAK,CAAC;AACpB;AACA;AACJ;AACA;EACIglB,eAAeA,CAACF,QAAQ,EAAE;AACtB,IAAA,MAAMljB,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACooB,8BAA8B,CAAC,IAAI,CAAChf,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AAC3E,IAAA,IAAI/B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACIklB,EAAAA,iBAAiBA,GAAG;IAChB,MAAMllB,GAAG,GAAGnD,IAAI,CAACsoB,gCAAgC,CAAC,IAAI,CAAClf,SAAS,CAAC;AACjE,IAAA,IAAIK,EAAE;AACN,IAAA,IAAItG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AACdsG,MAAAA,EAAE,GAAG5H,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AAC/ClD,MAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC/C;AACA,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI8e,EAAAA,UAAUA,GAAG;AACT,IAAA,IAAItb,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM/J,GAAG,GAAGnD,IAAI,CAACwoB,yBAAyB,CAAC,IAAI,CAACpf,SAAS,CAAC;AAC1D,MAAA,IAAIjE,IAAI,GAAGhC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIiC,IAAI,GAAGjC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRgC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM5B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA8J,MAAAA,WAAW,GAAG9H,IAAI;AAClB+H,MAAAA,WAAW,GAAG9H,IAAI;AAClB,MAAA,OAAOvD,kBAAkB,CAACsD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNpF,IAAI,CAAC8F,eAAe,CAACmH,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;EACIub,kBAAkBA,CAACR,QAAQ,EAAE;AACzB,IAAA,IAAInhB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAMhC,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,MAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC0oB,iCAAiC,CAAC,IAAI,CAACtf,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AAC9E,MAAA,IAAIG,IAAI,GAAGlC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAImC,IAAI,GAAGnC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRkC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM9B,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA2D,MAAAA,WAAW,GAAGzB,IAAI;AAClB0B,MAAAA,WAAW,GAAGzB,IAAI;AAClB,MAAA,OAAOzD,kBAAkB,CAACwD,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNtF,IAAI,CAAC8F,eAAe,CAACgB,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI4hB,EAAAA,qBAAqBA,CAACV,QAAQ,EAAEW,SAAS,EAAE;AACvC,IAAA,MAAM7jB,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAGtD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC6oB,oCAAoC,CAAC,IAAI,CAACzf,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAC7F,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA,IAAA,OAAOA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB;AACA;AACJ;AACA;AACA;AACA;AACA;EACI2lB,oBAAoBA,CAACb,QAAQ,EAAEW,SAAS,EAAEG,IAAI,EAAEC,eAAe,EAAE;AAC7D,IAAA,MAAMjkB,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAGtD,eAAe;AAC5B,IAAA,MAAMuD,IAAI,GAAG3C,iBAAiB,CAACqmB,IAAI,EAAE/oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACrF,MAAMK,IAAI,GAAGxD,eAAe;AAC5B,IAAA,MAAM4M,IAAI,GAAGhM,iBAAiB,CAACsmB,eAAe,EAAEhpB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAChG,MAAM0J,IAAI,GAAG7M,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACipB,mCAAmC,CAAC,IAAI,CAAC7f,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEoJ,IAAI,EAAEC,IAAI,CAAC;AACpH,IAAA,IAAIxL,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI+lB,EAAAA,2BAA2BA,CAACN,SAAS,EAAEG,IAAI,EAAEC,eAAe,EAAE;AAC1D,IAAA,MAAMjkB,IAAI,GAAGrC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACqmB,IAAI,EAAE/oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACrF,MAAMG,IAAI,GAAGtD,eAAe;AAC5B,IAAA,MAAMuD,IAAI,GAAG3C,iBAAiB,CAACsmB,eAAe,EAAEhpB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAChG,MAAMK,IAAI,GAAGxD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACmpB,0CAA0C,CAAC,IAAI,CAAC/f,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAC/G,IAAA,IAAInC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;EACIimB,wBAAwBA,CAACnB,QAAQ,EAAEW,SAAS,EAAEG,IAAI,EAAEC,eAAe,EAAE;AACjE,IAAA,MAAMjkB,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAGtD,eAAe;AAC5B,IAAA,MAAMuD,IAAI,GAAG3C,iBAAiB,CAACqmB,IAAI,EAAE/oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACrF,MAAMK,IAAI,GAAGxD,eAAe;AAC5B,IAAA,MAAM4M,IAAI,GAAGhM,iBAAiB,CAACsmB,eAAe,EAAEhpB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAChG,MAAM0J,IAAI,GAAG7M,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACqpB,uCAAuC,CAAC,IAAI,CAACjgB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEoJ,IAAI,EAAEC,IAAI,CAAC;AACxH,IAAA,IAAIxL,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACImmB,EAAAA,+BAA+BA,CAACV,SAAS,EAAEG,IAAI,EAAEC,eAAe,EAAE;AAC9D,IAAA,MAAMjkB,IAAI,GAAGrC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACqmB,IAAI,EAAE/oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACrF,MAAMG,IAAI,GAAGtD,eAAe;AAC5B,IAAA,MAAMuD,IAAI,GAAG3C,iBAAiB,CAACsmB,eAAe,EAAEhpB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAChG,MAAMK,IAAI,GAAGxD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACupB,8CAA8C,CAAC,IAAI,CAACngB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACnH,IAAA,IAAInC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;EACIqmB,wBAAwBA,CAACvB,QAAQ,EAAEW,SAAS,EAAEG,IAAI,EAAEC,eAAe,EAAE;AACjE,IAAA,MAAMjkB,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAGtD,eAAe;AAC5B,IAAA,MAAMuD,IAAI,GAAG3C,iBAAiB,CAACqmB,IAAI,EAAE/oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACrF,MAAMK,IAAI,GAAGxD,eAAe;AAC5B,IAAA,MAAM4M,IAAI,GAAGhM,iBAAiB,CAACsmB,eAAe,EAAEhpB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAChG,MAAM0J,IAAI,GAAG7M,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACypB,uCAAuC,CAAC,IAAI,CAACrgB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEoJ,IAAI,EAAEC,IAAI,CAAC;AACxH,IAAA,IAAIxL,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIumB,EAAAA,+BAA+BA,CAACd,SAAS,EAAEG,IAAI,EAAEC,eAAe,EAAE;AAC9D,IAAA,MAAMjkB,IAAI,GAAGrC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACqmB,IAAI,EAAE/oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACrF,MAAMG,IAAI,GAAGtD,eAAe;AAC5B,IAAA,MAAMuD,IAAI,GAAG3C,iBAAiB,CAACsmB,eAAe,EAAEhpB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAChG,MAAMK,IAAI,GAAGxD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC2pB,8CAA8C,CAAC,IAAI,CAACvgB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACnH,IAAA,IAAInC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIymB,EAAAA,cAAcA,CAAC3B,QAAQ,EAAEW,SAAS,EAAEiB,IAAI,EAAE;AACtC,IAAA,MAAM9kB,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAGtD,eAAe;AAC5BsB,IAAAA,YAAY,CAACymB,IAAI,EAAE3J,MAAM,CAAC;IAC1B,MAAM/c,GAAG,GAAGnD,IAAI,CAAC8pB,6BAA6B,CAAC,IAAI,CAAC1gB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEykB,IAAI,CAACzgB,SAAS,CAAC;AACtG,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACI4mB,EAAAA,qBAAqBA,CAACnB,SAAS,EAAEiB,IAAI,EAAE;AACnC,IAAA,MAAM9kB,IAAI,GAAGrC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGpD,eAAe;AAC5BsB,IAAAA,YAAY,CAACymB,IAAI,EAAE3J,MAAM,CAAC;AAC1B,IAAA,MAAM/c,GAAG,GAAGnD,IAAI,CAACgqB,oCAAoC,CAAC,IAAI,CAAC5gB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAE2kB,IAAI,CAACzgB,SAAS,CAAC;AACjG,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI8mB,EAAAA,kBAAkBA,CAAChC,QAAQ,EAAEW,SAAS,EAAEsB,QAAQ,EAAE;AAC9C,IAAA,MAAMnlB,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAGtD,eAAe;AAC5BsB,IAAAA,YAAY,CAAC8mB,QAAQ,EAAE9F,UAAU,CAAC;IAClC,MAAMjhB,GAAG,GAAGnD,IAAI,CAACmqB,iCAAiC,CAAC,IAAI,CAAC/gB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAE8kB,QAAQ,CAAC9gB,SAAS,CAAC;AAC9G,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACIinB,EAAAA,yBAAyBA,CAACxB,SAAS,EAAEsB,QAAQ,EAAE;AAC3C,IAAA,MAAMnlB,IAAI,GAAGrC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGpD,eAAe;AAC5BsB,IAAAA,YAAY,CAAC8mB,QAAQ,EAAE9F,UAAU,CAAC;AAClC,IAAA,MAAMjhB,GAAG,GAAGnD,IAAI,CAACqqB,wCAAwC,CAAC,IAAI,CAACjhB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEglB,QAAQ,CAAC9gB,SAAS,CAAC;AACzG,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACImnB,EAAAA,aAAaA,CAACrC,QAAQ,EAAEW,SAAS,EAAE2B,GAAG,EAAE;AACpC,IAAA,MAAMxlB,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAGtD,eAAe;AAC5BsB,IAAAA,YAAY,CAACmnB,GAAG,EAAE1Y,KAAK,CAAC;IACxB,MAAM1O,GAAG,GAAGnD,IAAI,CAACwqB,4BAA4B,CAAC,IAAI,CAACphB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEmlB,GAAG,CAACnhB,SAAS,CAAC;AACpG,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACIsnB,EAAAA,oBAAoBA,CAAC7B,SAAS,EAAE2B,GAAG,EAAE;AACjC,IAAA,MAAMxlB,IAAI,GAAGrC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGpD,eAAe;AAC5BsB,IAAAA,YAAY,CAACmnB,GAAG,EAAE1Y,KAAK,CAAC;AACxB,IAAA,MAAM1O,GAAG,GAAGnD,IAAI,CAAC0qB,mCAAmC,CAAC,IAAI,CAACthB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEqlB,GAAG,CAACnhB,SAAS,CAAC;AAC/F,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIwnB,EAAAA,mBAAmBA,CAAC1C,QAAQ,EAAEW,SAAS,EAAEgC,SAAS,EAAE;AAChD,IAAA,MAAM7lB,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAGtD,eAAe;AAC5BsB,IAAAA,YAAY,CAACwnB,SAAS,EAAEtE,WAAW,CAAC;IACpC,MAAMnjB,GAAG,GAAGnD,IAAI,CAAC6qB,kCAAkC,CAAC,IAAI,CAACzhB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEwlB,SAAS,CAACxhB,SAAS,CAAC;AAChH,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACI2nB,EAAAA,0BAA0BA,CAAClC,SAAS,EAAEgC,SAAS,EAAE;AAC7C,IAAA,MAAM7lB,IAAI,GAAGrC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGpD,eAAe;AAC5BsB,IAAAA,YAAY,CAACwnB,SAAS,EAAEtE,WAAW,CAAC;AACpC,IAAA,MAAMnjB,GAAG,GAAGnD,IAAI,CAAC+qB,yCAAyC,CAAC,IAAI,CAAC3hB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAE0lB,SAAS,CAACxhB,SAAS,CAAC;AAC3G,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI6nB,EAAAA,iBAAiBA,CAAC/C,QAAQ,EAAEW,SAAS,EAAEqC,OAAO,EAAE;AAC5C,IAAA,MAAMlmB,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAGtD,eAAe;AAC5BsB,IAAAA,YAAY,CAAC6nB,OAAO,EAAE/I,SAAS,CAAC;IAChC,MAAM/e,GAAG,GAAGnD,IAAI,CAACkrB,gCAAgC,CAAC,IAAI,CAAC9hB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAE6lB,OAAO,CAAC7hB,SAAS,CAAC;AAC5G,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACIgoB,EAAAA,wBAAwBA,CAACvC,SAAS,EAAEqC,OAAO,EAAE;AACzC,IAAA,MAAMlmB,IAAI,GAAGrC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGpD,eAAe;AAC5BsB,IAAAA,YAAY,CAAC6nB,OAAO,EAAE/I,SAAS,CAAC;AAChC,IAAA,MAAM/e,GAAG,GAAGnD,IAAI,CAACorB,uCAAuC,CAAC,IAAI,CAAChiB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAE+lB,OAAO,CAAC7hB,SAAS,CAAC;AACvG,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIkoB,EAAAA,gBAAgBA,CAACpD,QAAQ,EAAEW,SAAS,EAAE0C,MAAM,EAAE;AAC1C,IAAA,MAAMvmB,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAGtD,eAAe;AAC5BsB,IAAAA,YAAY,CAACkoB,MAAM,EAAE3W,QAAQ,CAAC;IAC9B,MAAMxR,GAAG,GAAGnD,IAAI,CAACurB,+BAA+B,CAAC,IAAI,CAACniB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEkmB,MAAM,CAACliB,SAAS,CAAC;AAC1G,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACIqoB,EAAAA,uBAAuBA,CAAC5C,SAAS,EAAE0C,MAAM,EAAE;AACvC,IAAA,MAAMvmB,IAAI,GAAGrC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGpD,eAAe;AAC5BsB,IAAAA,YAAY,CAACkoB,MAAM,EAAE3W,QAAQ,CAAC;AAC9B,IAAA,MAAMxR,GAAG,GAAGnD,IAAI,CAACyrB,sCAAsC,CAAC,IAAI,CAACriB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEomB,MAAM,CAACliB,SAAS,CAAC;AACrG,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIuoB,EAAAA,kBAAkBA,CAACzD,QAAQ,EAAEW,SAAS,EAAE+C,QAAQ,EAAE;AAC9C,IAAA,MAAM5mB,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAGtD,eAAe;AAC5BsB,IAAAA,YAAY,CAACuoB,QAAQ,EAAEnT,UAAU,CAAC;IAClC,MAAMrV,GAAG,GAAGnD,IAAI,CAAC4rB,iCAAiC,CAAC,IAAI,CAACxiB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEumB,QAAQ,CAACviB,SAAS,CAAC;AAC9G,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACI0oB,EAAAA,yBAAyBA,CAACjD,SAAS,EAAE+C,QAAQ,EAAE;AAC3C,IAAA,MAAM5mB,IAAI,GAAGrC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGpD,eAAe;AAC5BsB,IAAAA,YAAY,CAACuoB,QAAQ,EAAEnT,UAAU,CAAC;AAClC,IAAA,MAAMrV,GAAG,GAAGnD,IAAI,CAAC8rB,wCAAwC,CAAC,IAAI,CAAC1iB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEymB,QAAQ,CAACviB,SAAS,CAAC;AACzG,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI4oB,EAAAA,gBAAgBA,CAAC9D,QAAQ,EAAEW,SAAS,EAAEoD,MAAM,EAAE;AAC1C,IAAA,MAAMjnB,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAGtD,eAAe;AAC5BsB,IAAAA,YAAY,CAAC4oB,MAAM,EAAEC,QAAQ,CAAC;IAC9B,MAAM9oB,GAAG,GAAGnD,IAAI,CAACksB,+BAA+B,CAAC,IAAI,CAAC9iB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAE4mB,MAAM,CAAC5iB,SAAS,CAAC;AAC1G,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACIgpB,EAAAA,uBAAuBA,CAACvD,SAAS,EAAEoD,MAAM,EAAE;AACvC,IAAA,MAAMjnB,IAAI,GAAGrC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGpD,eAAe;AAC5BsB,IAAAA,YAAY,CAAC4oB,MAAM,EAAEC,QAAQ,CAAC;AAC9B,IAAA,MAAM9oB,GAAG,GAAGnD,IAAI,CAACosB,sCAAsC,CAAC,IAAI,CAAChjB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAE8mB,MAAM,CAAC5iB,SAAS,CAAC;AACrG,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIkpB,EAAAA,eAAeA,CAACpE,QAAQ,EAAEW,SAAS,EAAE0D,KAAK,EAAE;AACxC,IAAA,MAAMvnB,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAGtD,eAAe;AAC5BsB,IAAAA,YAAY,CAACkpB,KAAK,EAAEC,OAAO,CAAC;IAC5B,MAAMppB,GAAG,GAAGnD,IAAI,CAACwsB,8BAA8B,CAAC,IAAI,CAACpjB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEknB,KAAK,CAACljB,SAAS,CAAC;AACxG,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACIspB,EAAAA,sBAAsBA,CAAC7D,SAAS,EAAE0D,KAAK,EAAE;AACrC,IAAA,MAAMvnB,IAAI,GAAGrC,iBAAiB,CAACkmB,SAAS,EAAE5oB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGpD,eAAe;AAC5BsB,IAAAA,YAAY,CAACkpB,KAAK,EAAEC,OAAO,CAAC;AAC5B,IAAA,MAAMppB,GAAG,GAAGnD,IAAI,CAAC0sB,qCAAqC,CAAC,IAAI,CAACtjB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEonB,KAAK,CAACljB,SAAS,CAAC;AACnG,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACIwpB,EAAAA,iBAAiBA,CAAC1E,QAAQ,EAAE5Z,WAAW,EAAEC,QAAQ,EAAE;AAC/C,IAAA,IAAI5I,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAMZ,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,MAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAAC2L,WAAW,EAAErO,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC5F,MAAMG,IAAI,GAAGtD,eAAe;MAC5B,IAAIuD,IAAI,GAAGZ,UAAU,CAAC6J,QAAQ,CAAC,GAAG,CAAC,GAAG5L,iBAAiB,CAAC4L,QAAQ,EAAEtO,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAClH,IAAIK,IAAI,GAAGxD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC4sB,gCAAgC,CAAC,IAAI,CAACxjB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACrG,MAAA,IAAIM,IAAI,GAAGzC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAI0C,IAAI,GAAG1C,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRyC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMrC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAuC,MAAAA,WAAW,GAAGE,IAAI;AAClBD,MAAAA,WAAW,GAAGE,IAAI;AAClB,MAAA,OAAOhE,kBAAkB,CAAC+D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN7F,IAAI,CAAC8F,eAAe,CAACJ,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACIknB,EAAAA,uBAAuBA,CAAC5E,QAAQ,EAAE5Z,WAAW,EAAEC,QAAQ,EAAE;AACrD,IAAA,IAAI5I,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAMZ,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,MAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAAC2L,WAAW,EAAErO,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC5F,MAAMG,IAAI,GAAGtD,eAAe;MAC5B,IAAIuD,IAAI,GAAGZ,UAAU,CAAC6J,QAAQ,CAAC,GAAG,CAAC,GAAG5L,iBAAiB,CAAC4L,QAAQ,EAAEtO,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAClH,IAAIK,IAAI,GAAGxD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC8sB,sCAAsC,CAAC,IAAI,CAAC1jB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAC3G,MAAA,IAAIM,IAAI,GAAGzC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAI0C,IAAI,GAAG1C,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRyC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMrC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAuC,MAAAA,WAAW,GAAGE,IAAI;AAClBD,MAAAA,WAAW,GAAGE,IAAI;AAClB,MAAA,OAAOhE,kBAAkB,CAAC+D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN7F,IAAI,CAAC8F,eAAe,CAACJ,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACIonB,EAAAA,gBAAgBA,CAAC9E,QAAQ,EAAE5Z,WAAW,EAAEC,QAAQ,EAAE;AAC9C,IAAA,IAAI5I,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAMZ,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,MAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAAC2L,WAAW,EAAErO,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC5F,MAAMG,IAAI,GAAGtD,eAAe;MAC5B,IAAIuD,IAAI,GAAGZ,UAAU,CAAC6J,QAAQ,CAAC,GAAG,CAAC,GAAG5L,iBAAiB,CAAC4L,QAAQ,EAAEtO,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAClH,IAAIK,IAAI,GAAGxD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAACgtB,+BAA+B,CAAC,IAAI,CAAC5jB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACpG,MAAA,IAAIM,IAAI,GAAGzC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAI0C,IAAI,GAAG1C,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRyC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMrC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAuC,MAAAA,WAAW,GAAGE,IAAI;AAClBD,MAAAA,WAAW,GAAGE,IAAI;AAClB,MAAA,OAAOhE,kBAAkB,CAAC+D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN7F,IAAI,CAAC8F,eAAe,CAACJ,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACIsnB,EAAAA,sBAAsBA,CAAChF,QAAQ,EAAE5Z,WAAW,EAAEC,QAAQ,EAAE;AACpD,IAAA,IAAI5I,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAMZ,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MACzF,MAAMC,IAAI,GAAGpD,eAAe;AAC5B,MAAA,MAAMqD,IAAI,GAAGzC,iBAAiB,CAAC2L,WAAW,EAAErO,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC5F,MAAMG,IAAI,GAAGtD,eAAe;MAC5B,IAAIuD,IAAI,GAAGZ,UAAU,CAAC6J,QAAQ,CAAC,GAAG,CAAC,GAAG5L,iBAAiB,CAAC4L,QAAQ,EAAEtO,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAClH,IAAIK,IAAI,GAAGxD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAACktB,qCAAqC,CAAC,IAAI,CAAC9jB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAC1G,MAAA,IAAIM,IAAI,GAAGzC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAI0C,IAAI,GAAG1C,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRyC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMrC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAuC,MAAAA,WAAW,GAAGE,IAAI;AAClBD,MAAAA,WAAW,GAAGE,IAAI;AAClB,MAAA,OAAOhE,kBAAkB,CAAC+D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN7F,IAAI,CAAC8F,eAAe,CAACJ,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIwnB,EAAAA,wBAAwBA,CAAC9e,WAAW,EAAEC,QAAQ,EAAE;AAC5C,IAAA,IAAIC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAMzJ,IAAI,GAAGrC,iBAAiB,CAAC2L,WAAW,EAAErO,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC5F,MAAMC,IAAI,GAAGpD,eAAe;MAC5B,IAAIqD,IAAI,GAAGV,UAAU,CAAC6J,QAAQ,CAAC,GAAG,CAAC,GAAG5L,iBAAiB,CAAC4L,QAAQ,EAAEtO,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAClH,IAAIG,IAAI,GAAGtD,eAAe;AAC1B,MAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACotB,uCAAuC,CAAC,IAAI,CAAChkB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAChG,MAAA,IAAIsJ,IAAI,GAAGvL,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIwL,IAAI,GAAGxL,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRuL,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMnL,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAoL,MAAAA,WAAW,GAAGG,IAAI;AAClBF,MAAAA,WAAW,GAAGG,IAAI;AAClB,MAAA,OAAO9M,kBAAkB,CAAC6M,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN3O,IAAI,CAAC8F,eAAe,CAACyI,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI6e,EAAAA,uBAAuBA,CAAChf,WAAW,EAAEC,QAAQ,EAAE;AAC3C,IAAA,IAAIC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAMzJ,IAAI,GAAGrC,iBAAiB,CAAC2L,WAAW,EAAErO,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAC5F,MAAMC,IAAI,GAAGpD,eAAe;MAC5B,IAAIqD,IAAI,GAAGV,UAAU,CAAC6J,QAAQ,CAAC,GAAG,CAAC,GAAG5L,iBAAiB,CAAC4L,QAAQ,EAAEtO,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;MAClH,IAAIG,IAAI,GAAGtD,eAAe;AAC1B,MAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACstB,sCAAsC,CAAC,IAAI,CAAClkB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAC/F,MAAA,IAAIsJ,IAAI,GAAGvL,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIwL,IAAI,GAAGxL,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRuL,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMnL,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAoL,MAAAA,WAAW,GAAGG,IAAI;AAClBF,MAAAA,WAAW,GAAGG,IAAI;AAClB,MAAA,OAAO9M,kBAAkB,CAAC6M,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN3O,IAAI,CAAC8F,eAAe,CAACyI,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI+e,EAAAA,eAAeA,CAACvE,eAAe,EAAElc,WAAW,EAAE;AAC1C,IAAA,MAAM/H,IAAI,GAAGrC,iBAAiB,CAACsmB,eAAe,EAAEhpB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAChG,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,IAAIqD,IAAI,GAAGV,UAAU,CAACqI,WAAW,CAAC,GAAG,CAAC,GAAGpK,iBAAiB,CAACoK,WAAW,EAAE9M,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACxH,IAAIG,IAAI,GAAGtD,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACwtB,8BAA8B,CAAC,IAAI,CAACpkB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACvF,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOsqB,iBAAiB,CAACjoB,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C;AACA;AACJ;AACA;AACA;AACA;AACIuqB,EAAAA,gBAAgBA,CAACzF,QAAQ,EAAEnb,WAAW,EAAE;AACpC,IAAA,MAAM/H,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,IAAIqD,IAAI,GAAGV,UAAU,CAACqI,WAAW,CAAC,GAAG,CAAC,GAAGpK,iBAAiB,CAACoK,WAAW,EAAE9M,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACxH,IAAIG,IAAI,GAAGtD,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC2tB,+BAA+B,CAAC,IAAI,CAACvkB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACxF,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOsqB,iBAAiB,CAACjoB,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C;AACA;AACJ;AACA;AACA;EACIyqB,uBAAuBA,CAAC9gB,WAAW,EAAE;IACjC,IAAI/H,IAAI,GAAGN,UAAU,CAACqI,WAAW,CAAC,GAAG,CAAC,GAAGpK,iBAAiB,CAACoK,WAAW,EAAE9M,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACxH,IAAIC,IAAI,GAAGpD,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC6tB,sCAAsC,CAAC,IAAI,CAACzkB,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACnF,IAAA,IAAI/B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOsqB,iBAAiB,CAACjoB,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C;AACA;AACJ;AACA;AACA;AACA;AACI2qB,EAAAA,gBAAgBA,CAAC9E,eAAe,EAAElc,WAAW,EAAE;AAC3C,IAAA,MAAM/H,IAAI,GAAGrC,iBAAiB,CAACsmB,eAAe,EAAEhpB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAChG,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,IAAIqD,IAAI,GAAGV,UAAU,CAACqI,WAAW,CAAC,GAAG,CAAC,GAAGpK,iBAAiB,CAACoK,WAAW,EAAE9M,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACxH,IAAIG,IAAI,GAAGtD,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC+tB,+BAA+B,CAAC,IAAI,CAAC3kB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACxF,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAO6qB,kBAAkB,CAACxoB,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C;AACA;AACJ;AACA;AACA;AACA;AACI8qB,EAAAA,iBAAiBA,CAAChG,QAAQ,EAAEnb,WAAW,EAAE;AACrC,IAAA,MAAM/H,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,IAAIqD,IAAI,GAAGV,UAAU,CAACqI,WAAW,CAAC,GAAG,CAAC,GAAGpK,iBAAiB,CAACoK,WAAW,EAAE9M,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACxH,IAAIG,IAAI,GAAGtD,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACkuB,gCAAgC,CAAC,IAAI,CAAC9kB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACzF,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAO6qB,kBAAkB,CAACxoB,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C;AACA;AACJ;AACA;AACA;EACIgrB,wBAAwBA,CAACrhB,WAAW,EAAE;IAClC,IAAI/H,IAAI,GAAGN,UAAU,CAACqI,WAAW,CAAC,GAAG,CAAC,GAAGpK,iBAAiB,CAACoK,WAAW,EAAE9M,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACxH,IAAIC,IAAI,GAAGpD,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACouB,uCAAuC,CAAC,IAAI,CAAChlB,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACpF,IAAA,IAAI/B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAO6qB,kBAAkB,CAACxoB,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C;AACA;AACJ;AACA;AACA;AACA;AACIkrB,EAAAA,eAAeA,CAACrF,eAAe,EAAElc,WAAW,EAAE;AAC1C,IAAA,MAAM/H,IAAI,GAAGrC,iBAAiB,CAACsmB,eAAe,EAAEhpB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IAChG,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,IAAIqD,IAAI,GAAGV,UAAU,CAACqI,WAAW,CAAC,GAAG,CAAC,GAAGpK,iBAAiB,CAACoK,WAAW,EAAE9M,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACxH,IAAIG,IAAI,GAAGtD,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACsuB,8BAA8B,CAAC,IAAI,CAACllB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACvF,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOwc,iBAAiB,CAACna,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C;AACA;AACJ;AACA;AACA;AACA;AACIorB,EAAAA,gBAAgBA,CAACtG,QAAQ,EAAEnb,WAAW,EAAE;AACpC,IAAA,MAAM/H,IAAI,GAAGrC,iBAAiB,CAACulB,QAAQ,EAAEjoB,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,IAAIqD,IAAI,GAAGV,UAAU,CAACqI,WAAW,CAAC,GAAG,CAAC,GAAGpK,iBAAiB,CAACoK,WAAW,EAAE9M,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACxH,IAAIG,IAAI,GAAGtD,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACwuB,+BAA+B,CAAC,IAAI,CAACplB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACxF,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOwc,iBAAiB,CAACna,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C;AACA;AACJ;AACA;AACA;EACIsrB,uBAAuBA,CAAC3hB,WAAW,EAAE;IACjC,IAAI/H,IAAI,GAAGN,UAAU,CAACqI,WAAW,CAAC,GAAG,CAAC,GAAGpK,iBAAiB,CAACoK,WAAW,EAAE9M,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACxH,IAAIC,IAAI,GAAGpD,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC0uB,sCAAsC,CAAC,IAAI,CAACtlB,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACnF,IAAA,IAAI/B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOwc,iBAAiB,CAACna,MAAM,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C;AACJ;AAEA,MAAMwrB,oBAAoB,GAAI,OAAOjmB,oBAAoB,KAAK,WAAW,GACnE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAAC4uB,mBAAmB,CAACpuB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtE,MAAMyrB,QAAQ,CAAC;AAElB5iB,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBulB,IAAAA,oBAAoB,CAAC7lB,UAAU,CAAC,IAAI,CAAC;AACrC,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAAC4uB,mBAAmB,CAACpuB,GAAG,EAAE,CAAC,CAAC;AACpC;AACA;AACJ;AACA;EACI,IAAIqO,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B9B,IAAI,CAAC6uB,eAAe,CAAC,IAAI,CAACzlB,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACpD;AACA;AACJ;AACA;EACI,IAAI2J,EAAEA,GAAG;AACL,IAAA,IAAIiB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC8uB,WAAW,CAAC,IAAI,CAAC1lB,SAAS,CAAC;AAC5C0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIrG,WAAWA,CAACmF,EAAE,EAAE;AACZ,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC+uB,YAAY,CAAChqB,IAAI,EAAEG,IAAI,CAAC;AACzC,IAAA,IAAI,CAACkE,SAAS,GAAGjG,GAAG,KAAK,CAAC;IAC1BwrB,oBAAoB,CAAChmB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AACzD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACA;AACA;EACI6I,UAAUA,CAACC,MAAM,EAAEC,MAAM,EAAE6c,cAAc,EAAEC,eAAe,EAAE;AACxD7rB,IAAAA,YAAY,CAAC8O,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAGmN,MAAM,CAAC7I,kBAAkB,EAAE;AACtC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAACkvB,mBAAmB,CAAC,IAAI,CAAC9lB,SAAS,EAAErE,IAAI,EAAEoN,MAAM,EAAE6c,cAAc,EAAEC,eAAe,CAAC;AACnG,IAAA,IAAI9rB,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIsP,UAAUA,CAACP,MAAM,EAAE;AACf9O,IAAAA,YAAY,CAAC8O,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAGmN,MAAM,CAAC7I,kBAAkB,EAAE;IACtCrJ,IAAI,CAACmvB,mBAAmB,CAAC,IAAI,CAAC/lB,SAAS,EAAErE,IAAI,CAAC;AAClD;AACA;AACJ;AACA;AACA;AACA;AACI4N,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEpF,KAAK,EAAE;AACrCrK,IAAAA,YAAY,CAACwP,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG6N,QAAQ,CAACvJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIpN,IAAI,GAAG0N,QAAQ,CAACxJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIlN,IAAI,GAAGoI,KAAK,CAACpE,kBAAkB,EAAE;AACrC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAACovB,sBAAsB,CAAC,IAAI,CAAChmB,SAAS,EAAErE,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AACzE,IAAA,IAAIlC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI4P,eAAeA,CAACC,WAAW,EAAE;AACzB5P,IAAAA,YAAY,CAAC4P,WAAW,EAAET,OAAO,CAAC;AAClC,IAAA,IAAIxN,IAAI,GAAGiO,WAAW,CAAC3J,kBAAkB,EAAE;IAC3CrJ,IAAI,CAACqvB,wBAAwB,CAAC,IAAI,CAACjmB,SAAS,EAAErE,IAAI,CAAC;AACvD;AACA;AACJ;AACA;EACImO,YAAYA,CAACL,QAAQ,EAAE;AACnBzP,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG8N,QAAQ,CAACxJ,kBAAkB,EAAE;IACxCrJ,IAAI,CAACsvB,qBAAqB,CAAC,IAAI,CAAClmB,SAAS,EAAErE,IAAI,CAAC;AACpD;AACA;AACJ;AACA;EACIqO,SAASA,CAAC3F,KAAK,EAAE;AACbrK,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIxN,IAAI,GAAG0I,KAAK,CAACpE,kBAAkB,EAAE;IACrC,MAAMlG,GAAG,GAAGnD,IAAI,CAACuvB,kBAAkB,CAAC,IAAI,CAACnmB,SAAS,EAAErE,IAAI,CAAC;AACzD,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAgW,EAAAA,aAAaA,GAAG;IACZ,MAAMhW,GAAG,GAAGnD,IAAI,CAACwvB,sBAAsB,CAAC,IAAI,CAACpmB,SAAS,CAAC;AACvD,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAkW,EAAAA,cAAcA,GAAG;AACbrZ,IAAAA,IAAI,CAACyvB,uBAAuB,CAAC,IAAI,CAACrmB,SAAS,CAAC;AAChD;AACAkK,EAAAA,iBAAiBA,GAAG;IAChB,MAAMnQ,GAAG,GAAGnD,IAAI,CAAC0vB,0BAA0B,CAAC,IAAI,CAACtmB,SAAS,CAAC;AAC3D,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI6J,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAI8C,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC2vB,4BAA4B,CAAC,IAAI,CAACvmB,SAAS,CAAC;AAC7D0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI8D,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAI/D,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC4vB,kCAAkC,CAAC,IAAI,CAACxmB,SAAS,CAAC;AACnE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIgE,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIjE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC6vB,gCAAgC,CAAC,IAAI,CAACzmB,SAAS,CAAC;AACjE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkE,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAInE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC8vB,sCAAsC,CAAC,IAAI,CAAC1mB,SAAS,CAAC;AACvE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIoE,EAAAA,mBAAmBA,GAAG;IAClB,MAAMhR,GAAG,GAAGnD,IAAI,CAAC+vB,4BAA4B,CAAC,IAAI,CAAC3mB,SAAS,CAAC;AAC7D,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI4K,EAAAA,yBAAyBA,GAAG;IACxB,MAAMlR,GAAG,GAAGnD,IAAI,CAACgwB,kCAAkC,CAAC,IAAI,CAAC5mB,SAAS,CAAC;AACnE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACIoM,EAAAA,+BAA+BA,GAAG;AAC9B,IAAA,IAAI/F,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACiwB,wCAAwC,CAAC,IAAI,CAAC7mB,SAAS,CAAC;AACzE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIgG,EAAAA,qCAAqCA,GAAG;AACpC,IAAA,IAAIjG,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACkwB,8CAA8C,CAAC,IAAI,CAAC9mB,SAAS,CAAC;AAC/E0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkG,EAAAA,2BAA2BA,GAAG;IAC1B,MAAM9S,GAAG,GAAGnD,IAAI,CAACmwB,oCAAoC,CAAC,IAAI,CAAC/mB,SAAS,CAAC;AACrE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI0M,EAAAA,iCAAiCA,GAAG;IAChC,MAAMhT,GAAG,GAAGnD,IAAI,CAACowB,0CAA0C,CAAC,IAAI,CAAChnB,SAAS,CAAC;AAC3E,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI8K,EAAAA,UAAUA,GAAG;IACT,MAAMpR,GAAG,GAAGnD,IAAI,CAACyX,kBAAkB,CAAC,IAAI,CAACrO,SAAS,CAAC;AACnD,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACJ;AAEA,MAAMktB,8BAA8B,GAAI,OAAO3nB,oBAAoB,KAAK,WAAW,GAC7E;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAACswB,6BAA6B,CAAC9vB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEhF,MAAMwtB,kBAAkB,CAAC;EAE5B,OAAOxoB,MAAMA,CAAChF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAGqI,MAAM,CAACC,MAAM,CAAC8kB,kBAAkB,CAAC7kB,SAAS,CAAC;IACvDvI,GAAG,CAACwI,SAAS,GAAG5I,GAAG;IACnB6vB,8BAA8B,CAAC1nB,QAAQ,CAAC/H,GAAG,EAAEA,GAAG,CAACwI,SAAS,EAAExI,GAAG,CAAC;AAChE,IAAA,OAAOA,GAAG;AACd;AAEAyI,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBinB,IAAAA,8BAA8B,CAACvnB,UAAU,CAAC,IAAI,CAAC;AAC/C,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAACswB,6BAA6B,CAAC9vB,GAAG,EAAE,CAAC,CAAC;AAC9C;AACA;AACJ;AACA;EACI,IAAIof,IAAIA,GAAG;AACP,IAAA,IAAI9P,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACuwB,uBAAuB,CAAC,IAAI,CAACnnB,SAAS,CAAC;AACxD0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACI,IAAI+P,UAAUA,GAAG;AACb,IAAA,IAAIhQ,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACwwB,6BAA6B,CAAC,IAAI,CAACpnB,SAAS,CAAC;AAC9D0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACJ;AAEA,MAAM0gB,6BAA6B,GAAI,OAAO/nB,oBAAoB,KAAK,WAAW,GAC5E;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAAC0wB,4BAA4B,CAAClwB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAE/E,MAAMitB,iBAAiB,CAAC;EAE3B,OAAOjoB,MAAMA,CAAChF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAGqI,MAAM,CAACC,MAAM,CAACukB,iBAAiB,CAACtkB,SAAS,CAAC;IACtDvI,GAAG,CAACwI,SAAS,GAAG5I,GAAG;IACnBiwB,6BAA6B,CAAC9nB,QAAQ,CAAC/H,GAAG,EAAEA,GAAG,CAACwI,SAAS,EAAExI,GAAG,CAAC;AAC/D,IAAA,OAAOA,GAAG;AACd;AAEAyI,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBqnB,IAAAA,6BAA6B,CAAC3nB,UAAU,CAAC,IAAI,CAAC;AAC9C,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAAC0wB,4BAA4B,CAAClwB,GAAG,EAAE,CAAC,CAAC;AAC7C;AACA;AACJ;AACA;EACI,IAAImwB,KAAKA,GAAG;IACR,MAAMxtB,GAAG,GAAGnD,IAAI,CAAC4wB,uBAAuB,CAAC,IAAI,CAACxnB,SAAS,CAAC;AACxD,IAAA,IAAIK,EAAE,GAAGlJ,mBAAmB,CAAC4C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACpDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;EACI,IAAIqW,UAAUA,GAAG;AACb,IAAA,IAAIhQ,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC6wB,4BAA4B,CAAC,IAAI,CAACznB,SAAS,CAAC;AAC7D0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACJ;AAEA,MAAM+gB,mBAAmB,GAAI,OAAOpoB,oBAAoB,KAAK,WAAW,GAClE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAAC+wB,kBAAkB,CAACvwB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAErE,MAAMwwB,OAAO,CAAC;AAEjB3nB,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClB0nB,IAAAA,mBAAmB,CAAChoB,UAAU,CAAC,IAAI,CAAC;AACpC,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAAC+wB,kBAAkB,CAACvwB,GAAG,EAAE,CAAC,CAAC;AACnC;AACA;AACJ;AACA;EACI,IAAIqO,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B9B,IAAI,CAACixB,cAAc,CAAC,IAAI,CAAC7nB,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACnD;AACA;AACJ;AACA;EACI,IAAI2J,EAAEA,GAAG;AACL,IAAA,IAAIiB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACkxB,UAAU,CAAC,IAAI,CAAC9nB,SAAS,CAAC;AAC3C0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIrG,WAAWA,CAACmF,EAAE,EAAE;AACZ,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACmxB,WAAW,CAACpsB,IAAI,EAAEG,IAAI,CAAC;AACxC,IAAA,IAAI,CAACkE,SAAS,GAAGjG,GAAG,KAAK,CAAC;IAC1B2tB,mBAAmB,CAACnoB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AACxD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACI6I,EAAAA,UAAUA,CAACmf,WAAW,EAAEC,cAAc,EAAE;IACpC,MAAMtsB,IAAI,GAAGX,uBAAuB,CAACgtB,WAAW,EAAEpxB,IAAI,CAACgF,iBAAiB,CAAC;IACzE,MAAME,IAAI,GAAGpD,eAAe;IAC5B,MAAMqD,IAAI,GAAGf,uBAAuB,CAACitB,cAAc,EAAErxB,IAAI,CAACgF,iBAAiB,CAAC;IAC5E,MAAMI,IAAI,GAAGtD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACsxB,kBAAkB,CAAC,IAAI,CAACloB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAC3E,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;EACIouB,oBAAoBA,CAACH,WAAW,EAAEC,cAAc,EAAEG,SAAS,EAAEC,OAAO,EAAE;IAClE,MAAM1sB,IAAI,GAAGX,uBAAuB,CAACgtB,WAAW,EAAEpxB,IAAI,CAACgF,iBAAiB,CAAC;IACzE,MAAME,IAAI,GAAGpD,eAAe;IAC5B,MAAMqD,IAAI,GAAGf,uBAAuB,CAACitB,cAAc,EAAErxB,IAAI,CAACgF,iBAAiB,CAAC;IAC5E,MAAMI,IAAI,GAAGtD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC0xB,4BAA4B,CAAC,IAAI,CAACtoB,SAAS,EAAErE,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEosB,SAAS,EAAEC,OAAO,CAAC;AACzG,IAAA,IAAItuB,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACIwuB,EAAAA,QAAQA,CAACH,SAAS,EAAEC,OAAO,EAAE;AACzB,IAAA,MAAMtuB,GAAG,GAAGnD,IAAI,CAAC4xB,gBAAgB,CAAC,IAAI,CAACxoB,SAAS,EAAEooB,SAAS,EAAEC,OAAO,CAAC;AACrE,IAAA,IAAItuB,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIwP,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEpF,KAAK,EAAE;AACrCrK,IAAAA,YAAY,CAACwP,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG6N,QAAQ,CAACvJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIpN,IAAI,GAAG0N,QAAQ,CAACxJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIlN,IAAI,GAAGoI,KAAK,CAACpE,kBAAkB,EAAE;AACrC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAAC6xB,qBAAqB,CAAC,IAAI,CAACzoB,SAAS,EAAErE,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AACxE,IAAA,IAAIlC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI4P,eAAeA,CAACC,WAAW,EAAE;AACzB5P,IAAAA,YAAY,CAAC4P,WAAW,EAAET,OAAO,CAAC;AAClC,IAAA,IAAIxN,IAAI,GAAGiO,WAAW,CAAC3J,kBAAkB,EAAE;IAC3CrJ,IAAI,CAAC8xB,uBAAuB,CAAC,IAAI,CAAC1oB,SAAS,EAAErE,IAAI,CAAC;AACtD;AACA;AACJ;AACA;EACImO,YAAYA,CAACL,QAAQ,EAAE;AACnBzP,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG8N,QAAQ,CAACxJ,kBAAkB,EAAE;IACxCrJ,IAAI,CAAC+xB,oBAAoB,CAAC,IAAI,CAAC3oB,SAAS,EAAErE,IAAI,CAAC;AACnD;AACA;AACJ;AACA;EACIqO,SAASA,CAAC3F,KAAK,EAAE;AACbrK,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIxN,IAAI,GAAG0I,KAAK,CAACpE,kBAAkB,EAAE;IACrC,MAAMlG,GAAG,GAAGnD,IAAI,CAACgyB,iBAAiB,CAAC,IAAI,CAAC5oB,SAAS,EAAErE,IAAI,CAAC;AACxD,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAgW,EAAAA,aAAaA,GAAG;IACZ,MAAMhW,GAAG,GAAGnD,IAAI,CAACiyB,qBAAqB,CAAC,IAAI,CAAC7oB,SAAS,CAAC;AACtD,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAkW,EAAAA,cAAcA,GAAG;AACbrZ,IAAAA,IAAI,CAACkyB,sBAAsB,CAAC,IAAI,CAAC9oB,SAAS,CAAC;AAC/C;AACAkK,EAAAA,iBAAiBA,GAAG;IAChB,MAAMnQ,GAAG,GAAGnD,IAAI,CAACmyB,yBAAyB,CAAC,IAAI,CAAC/oB,SAAS,CAAC;AAC1D,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI6J,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAI8C,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACoyB,2BAA2B,CAAC,IAAI,CAAChpB,SAAS,CAAC;AAC5D0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI8D,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAI/D,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACqyB,iCAAiC,CAAC,IAAI,CAACjpB,SAAS,CAAC;AAClE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIgE,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIjE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACsyB,+BAA+B,CAAC,IAAI,CAAClpB,SAAS,CAAC;AAChE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkE,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAInE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACuyB,qCAAqC,CAAC,IAAI,CAACnpB,SAAS,CAAC;AACtE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIoE,EAAAA,mBAAmBA,GAAG;IAClB,MAAMhR,GAAG,GAAGnD,IAAI,CAACwyB,2BAA2B,CAAC,IAAI,CAACppB,SAAS,CAAC;AAC5D,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI4K,EAAAA,yBAAyBA,GAAG;IACxB,MAAMlR,GAAG,GAAGnD,IAAI,CAACyyB,iCAAiC,CAAC,IAAI,CAACrpB,SAAS,CAAC;AAClE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACIoM,EAAAA,+BAA+BA,GAAG;AAC9B,IAAA,IAAI/F,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC0yB,uCAAuC,CAAC,IAAI,CAACtpB,SAAS,CAAC;AACxE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIgG,EAAAA,qCAAqCA,GAAG;AACpC,IAAA,IAAIjG,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC2yB,6CAA6C,CAAC,IAAI,CAACvpB,SAAS,CAAC;AAC9E0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkG,EAAAA,2BAA2BA,GAAG;IAC1B,MAAM9S,GAAG,GAAGnD,IAAI,CAAC4yB,mCAAmC,CAAC,IAAI,CAACxpB,SAAS,CAAC;AACpE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI0M,EAAAA,iCAAiCA,GAAG;IAChC,MAAMhT,GAAG,GAAGnD,IAAI,CAAC6yB,yCAAyC,CAAC,IAAI,CAACzpB,SAAS,CAAC;AAC1E,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI8K,EAAAA,UAAUA,GAAG;IACT,MAAMpR,GAAG,GAAGnD,IAAI,CAAC8yB,kBAAkB,CAAC,IAAI,CAAC1pB,SAAS,CAAC;AACnD,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;EACIuU,UAAUA,CAACC,MAAM,EAAE;AACfvU,IAAAA,YAAY,CAACuU,MAAM,EAAEpF,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAG4S,MAAM,CAACtO,kBAAkB,EAAE;IACtC,MAAMlG,GAAG,GAAGnD,IAAI,CAAC+yB,kBAAkB,CAAC,IAAI,CAAC3pB,SAAS,EAAErE,IAAI,CAAC;AACzD,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA0U,EAAAA,YAAYA,GAAG;IACX,MAAM1U,GAAG,GAAGnD,IAAI,CAACgzB,oBAAoB,CAAC,IAAI,CAAC5pB,SAAS,CAAC;AACrD,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACJ;AAEA,MAAM8vB,mBAAmB,GAAI,OAAOvqB,oBAAoB,KAAK,WAAW,GAClE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAACkzB,kBAAkB,CAAC1yB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAErE,MAAM+rB,OAAO,CAAC;AAEjBljB,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClB6pB,IAAAA,mBAAmB,CAACnqB,UAAU,CAAC,IAAI,CAAC;AACpC,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAACkzB,kBAAkB,CAAC1yB,GAAG,EAAE,CAAC,CAAC;AACnC;AACA;AACJ;AACA;EACI,IAAIqO,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B9B,IAAI,CAACmzB,cAAc,CAAC,IAAI,CAAC/pB,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACnD;AACA;AACJ;AACA;EACI,IAAI2J,EAAEA,GAAG;AACL,IAAA,IAAIiB,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACozB,UAAU,CAAC,IAAI,CAAChqB,SAAS,CAAC;AAC3C0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIrG,WAAWA,CAACmF,EAAE,EAAE;AACZ,IAAA,MAAM9J,IAAI,GAAGrC,iBAAiB,CAACmM,EAAE,EAAE7O,IAAI,CAACgF,iBAAiB,EAAEhF,IAAI,CAACiF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGpD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACqzB,WAAW,CAACtuB,IAAI,EAAEG,IAAI,CAAC;AACxC,IAAA,IAAI,CAACkE,SAAS,GAAGjG,GAAG,KAAK,CAAC;IAC1B8vB,mBAAmB,CAACtqB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AACxD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACA;AACA;EACI6I,UAAUA,CAACC,MAAM,EAAEhM,KAAK,EAAEW,MAAM,EAAEkO,KAAK,EAAE;AACrC3R,IAAAA,YAAY,CAAC8O,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAGmN,MAAM,CAAC7I,kBAAkB,EAAE;AACtC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAACszB,kBAAkB,CAAC,IAAI,CAAClqB,SAAS,EAAErE,IAAI,EAAEmB,KAAK,EAAEW,MAAM,EAAEkO,KAAK,CAAC;AAC/E,IAAA,IAAI5R,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIsP,UAAUA,CAACP,MAAM,EAAE;AACf9O,IAAAA,YAAY,CAAC8O,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAGmN,MAAM,CAAC7I,kBAAkB,EAAE;IACtCrJ,IAAI,CAACuzB,kBAAkB,CAAC,IAAI,CAACnqB,SAAS,EAAErE,IAAI,CAAC;AACjD;AACA;AACJ;AACA;AACA;AACA;AACI4N,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEpF,KAAK,EAAE;AACrCrK,IAAAA,YAAY,CAACwP,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG6N,QAAQ,CAACvJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIpN,IAAI,GAAG0N,QAAQ,CAACxJ,kBAAkB,EAAE;AACxCjG,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIlN,IAAI,GAAGoI,KAAK,CAACpE,kBAAkB,EAAE;AACrC,IAAA,MAAMlG,GAAG,GAAGnD,IAAI,CAACwzB,qBAAqB,CAAC,IAAI,CAACpqB,SAAS,EAAErE,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AACxE,IAAA,IAAIlC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI4P,eAAeA,CAACC,WAAW,EAAE;AACzB5P,IAAAA,YAAY,CAAC4P,WAAW,EAAET,OAAO,CAAC;AAClC,IAAA,IAAIxN,IAAI,GAAGiO,WAAW,CAAC3J,kBAAkB,EAAE;IAC3CrJ,IAAI,CAACyzB,uBAAuB,CAAC,IAAI,CAACrqB,SAAS,EAAErE,IAAI,CAAC;AACtD;AACA;AACJ;AACA;EACImO,YAAYA,CAACL,QAAQ,EAAE;AACnBzP,IAAAA,YAAY,CAACyP,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIxN,IAAI,GAAG8N,QAAQ,CAACxJ,kBAAkB,EAAE;IACxCrJ,IAAI,CAAC0zB,oBAAoB,CAAC,IAAI,CAACtqB,SAAS,EAAErE,IAAI,CAAC;AACnD;AACA;AACJ;AACA;EACIqO,SAASA,CAAC3F,KAAK,EAAE;AACbrK,IAAAA,YAAY,CAACqK,KAAK,EAAE8E,OAAO,CAAC;AAC5B,IAAA,IAAIxN,IAAI,GAAG0I,KAAK,CAACpE,kBAAkB,EAAE;IACrC,MAAMlG,GAAG,GAAGnD,IAAI,CAAC2zB,iBAAiB,CAAC,IAAI,CAACvqB,SAAS,EAAErE,IAAI,CAAC;AACxD,IAAA,IAAI5B,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAgW,EAAAA,aAAaA,GAAG;IACZ,MAAMhW,GAAG,GAAGnD,IAAI,CAAC4zB,qBAAqB,CAAC,IAAI,CAACxqB,SAAS,CAAC;AACtD,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAkW,EAAAA,cAAcA,GAAG;AACbrZ,IAAAA,IAAI,CAAC6zB,sBAAsB,CAAC,IAAI,CAACzqB,SAAS,CAAC;AAC/C;AACAkK,EAAAA,iBAAiBA,GAAG;IAChB,MAAMnQ,GAAG,GAAGnD,IAAI,CAAC8zB,yBAAyB,CAAC,IAAI,CAAC1qB,SAAS,CAAC;AAC1D,IAAA,IAAIjG,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI6J,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAI8C,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAAC+zB,2BAA2B,CAAC,IAAI,CAAC3qB,SAAS,CAAC;AAC5D0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI8D,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAI/D,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACg0B,iCAAiC,CAAC,IAAI,CAAC5qB,SAAS,CAAC;AAClE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIgE,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIjE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACi0B,+BAA+B,CAAC,IAAI,CAAC7qB,SAAS,CAAC;AAChE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkE,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAInE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACk0B,qCAAqC,CAAC,IAAI,CAAC9qB,SAAS,CAAC;AACtE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIoE,EAAAA,mBAAmBA,GAAG;IAClB,MAAMhR,GAAG,GAAGnD,IAAI,CAACm0B,2BAA2B,CAAC,IAAI,CAAC/qB,SAAS,CAAC;AAC5D,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI4K,EAAAA,yBAAyBA,GAAG;IACxB,MAAMlR,GAAG,GAAGnD,IAAI,CAACo0B,iCAAiC,CAAC,IAAI,CAAChrB,SAAS,CAAC;AAClE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACIoM,EAAAA,+BAA+BA,GAAG;AAC9B,IAAA,IAAI/F,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACq0B,uCAAuC,CAAC,IAAI,CAACjrB,SAAS,CAAC;AACxE0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIgG,EAAAA,qCAAqCA,GAAG;AACpC,IAAA,IAAIjG,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM5M,GAAG,GAAGnD,IAAI,CAACs0B,6CAA6C,CAAC,IAAI,CAAClrB,SAAS,CAAC;AAC9E0G,MAAAA,WAAW,GAAG3M,GAAG,CAAC,CAAC,CAAC;AACpB4M,MAAAA,WAAW,GAAG5M,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC8F,eAAe,CAACgK,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkG,EAAAA,2BAA2BA,GAAG;IAC1B,MAAM9S,GAAG,GAAGnD,IAAI,CAACu0B,mCAAmC,CAAC,IAAI,CAACnrB,SAAS,CAAC;AACpE,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI0M,EAAAA,iCAAiCA,GAAG;IAChC,MAAMhT,GAAG,GAAGnD,IAAI,CAACw0B,yCAAyC,CAAC,IAAI,CAACprB,SAAS,CAAC;AAC1E,IAAA,IAAIK,EAAE,GAAG1F,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsG,EAAE;AACb;AACA;AACJ;AACA;AACI8K,EAAAA,UAAUA,GAAG;IACT,MAAMpR,GAAG,GAAGnD,IAAI,CAACy0B,kBAAkB,CAAC,IAAI,CAACrrB,SAAS,CAAC;AACnD,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACJ;AAEA,MAAMuxB,mBAAmB,GAAI,OAAOhsB,oBAAoB,KAAK,WAAW,GAClE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAAC20B,kBAAkB,CAACn0B,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAErE,MAAM+R,OAAO,CAAC;EAEjB,OAAO/M,MAAMA,CAAChF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAGqI,MAAM,CAACC,MAAM,CAACqJ,OAAO,CAACpJ,SAAS,CAAC;IAC5CvI,GAAG,CAACwI,SAAS,GAAG5I,GAAG;IACnBk0B,mBAAmB,CAAC/rB,QAAQ,CAAC/H,GAAG,EAAEA,GAAG,CAACwI,SAAS,EAAExI,GAAG,CAAC;AACrD,IAAA,OAAOA,GAAG;AACd;EAEA,OAAOg0B,QAAQA,CAACC,OAAO,EAAE;AACrB,IAAA,IAAI,EAAEA,OAAO,YAAYtiB,OAAO,CAAC,EAAE;AAC/B,MAAA,OAAO,CAAC;AACZ;AACA,IAAA,OAAOsiB,OAAO,CAACxrB,kBAAkB,EAAE;AACvC;AAEAA,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBsrB,IAAAA,mBAAmB,CAAC5rB,UAAU,CAAC,IAAI,CAAC;AACpC,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAAC20B,kBAAkB,CAACn0B,GAAG,EAAE,CAAC,CAAC;AACnC;AACA;AACJ;AACA;EACI,IAAIkE,CAACA,GAAG;IACJ,MAAMvB,GAAG,GAAGnD,IAAI,CAAC80B,mBAAmB,CAAC,IAAI,CAAC1rB,SAAS,CAAC;AACpD,IAAA,OAAOjG,GAAG;AACd;AACA;AACJ;AACA;EACI,IAAIuB,CAACA,CAACqwB,IAAI,EAAE;IACR/0B,IAAI,CAACg1B,mBAAmB,CAAC,IAAI,CAAC5rB,SAAS,EAAE2rB,IAAI,CAAC;AAClD;AACA;AACJ;AACA;EACI,IAAIE,CAACA,GAAG;IACJ,MAAM9xB,GAAG,GAAGnD,IAAI,CAACk1B,mBAAmB,CAAC,IAAI,CAAC9rB,SAAS,CAAC;AACpD,IAAA,OAAOjG,GAAG;AACd;AACA;AACJ;AACA;EACI,IAAI8xB,CAACA,CAACF,IAAI,EAAE;IACR/0B,IAAI,CAACm1B,mBAAmB,CAAC,IAAI,CAAC/rB,SAAS,EAAE2rB,IAAI,CAAC;AAClD;AACA;AACJ;AACA;EACI,IAAIK,CAACA,GAAG;IACJ,MAAMjyB,GAAG,GAAGnD,IAAI,CAACq1B,mBAAmB,CAAC,IAAI,CAACjsB,SAAS,CAAC;AACpD,IAAA,OAAOjG,GAAG;AACd;AACA;AACJ;AACA;EACI,IAAIiyB,CAACA,CAACL,IAAI,EAAE;IACR/0B,IAAI,CAACs1B,mBAAmB,CAAC,IAAI,CAAClsB,SAAS,EAAE2rB,IAAI,CAAC;AAClD;AACA;AACJ;AACA;AACA;AACA;AACIrrB,EAAAA,WAAWA,CAAChF,CAAC,EAAEuwB,CAAC,EAAEG,CAAC,EAAE;IACjB,MAAMjyB,GAAG,GAAGnD,IAAI,CAACu1B,WAAW,CAAC7wB,CAAC,EAAEuwB,CAAC,EAAEG,CAAC,CAAC;AACrC,IAAA,IAAI,CAAChsB,SAAS,GAAGjG,GAAG,KAAK,CAAC;IAC1BuxB,mBAAmB,CAAC/rB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AACxD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI7E,GAAGA,CAACiH,KAAK,EAAE;AACPpI,IAAAA,YAAY,CAACoI,KAAK,EAAE+G,OAAO,CAAC;AAC5B,IAAA,MAAMpP,GAAG,GAAGnD,IAAI,CAACw1B,WAAW,CAAC,IAAI,CAACpsB,SAAS,EAAEoC,KAAK,CAACpC,SAAS,CAAC;AAC7D,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIsyB,UAAUA,CAACC,MAAM,EAAE;IACf,MAAMvyB,GAAG,GAAGnD,IAAI,CAAC21B,kBAAkB,CAAC,IAAI,CAACvsB,SAAS,EAAEssB,MAAM,CAAC;AAC3D,IAAA,OAAOnjB,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIyI,QAAQA,CAACJ,KAAK,EAAE;AACZpI,IAAAA,YAAY,CAACoI,KAAK,EAAE+G,OAAO,CAAC;AAC5B,IAAA,MAAMpP,GAAG,GAAGnD,IAAI,CAAC41B,gBAAgB,CAAC,IAAI,CAACxsB,SAAS,EAAEoC,KAAK,CAACpC,SAAS,CAAC;AAClE,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI0yB,eAAeA,CAACH,MAAM,EAAE;IACpB,MAAMvyB,GAAG,GAAGnD,IAAI,CAAC81B,uBAAuB,CAAC,IAAI,CAAC1sB,SAAS,EAAEssB,MAAM,CAAC;AAChE,IAAA,OAAOnjB,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACI0H,EAAAA,KAAKA,GAAG;IACJ,MAAM1H,GAAG,GAAGnD,IAAI,CAAC+1B,aAAa,CAAC,IAAI,CAAC3sB,SAAS,CAAC;AAC9C,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACI6yB,EAAAA,IAAIA,GAAG;AACHh2B,IAAAA,IAAI,CAACi2B,YAAY,CAAC,IAAI,CAAC7sB,SAAS,CAAC;AACrC;AACA;AACJ;AACA;AACA;AACA;AACA;EACI8sB,IAAIA,CAAC1qB,KAAK,EAAE;AACRpI,IAAAA,YAAY,CAACoI,KAAK,EAAE+G,OAAO,CAAC;IAC5BvS,IAAI,CAACm2B,YAAY,CAAC,IAAI,CAAC/sB,SAAS,EAAEoC,KAAK,CAACpC,SAAS,CAAC;AACtD;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIgtB,eAAeA,CAACV,MAAM,EAAE;IACpB,MAAMvyB,GAAG,GAAGnD,IAAI,CAACq2B,uBAAuB,CAAC,IAAI,CAACjtB,SAAS,EAAEssB,MAAM,CAAC;AAChE,IAAA,OAAOnjB,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIoI,QAAQA,CAACC,KAAK,EAAE;AACZpI,IAAAA,YAAY,CAACoI,KAAK,EAAE+G,OAAO,CAAC;AAC5B,IAAA,MAAMpP,GAAG,GAAGnD,IAAI,CAACs2B,gBAAgB,CAAC,IAAI,CAACltB,SAAS,EAAEoC,KAAK,CAACpC,SAAS,CAAC;AAClE,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIozB,MAAMA,CAAC/qB,KAAK,EAAE;AACVpI,IAAAA,YAAY,CAACoI,KAAK,EAAE+G,OAAO,CAAC;AAC5B,IAAA,MAAMpP,GAAG,GAAGnD,IAAI,CAACw2B,cAAc,CAAC,IAAI,CAACptB,SAAS,EAAEoC,KAAK,CAACpC,SAAS,CAAC;AAChE,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIszB,aAAaA,CAACf,MAAM,EAAE;IAClB,MAAMvyB,GAAG,GAAGnD,IAAI,CAAC02B,qBAAqB,CAAC,IAAI,CAACttB,SAAS,EAAEssB,MAAM,CAAC;AAC9D,IAAA,OAAOnjB,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACIwzB,EAAAA,MAAMA,GAAG;IACL,MAAMxzB,GAAG,GAAGnD,IAAI,CAAC42B,cAAc,CAAC,IAAI,CAACxtB,SAAS,CAAC;AAC/C,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI0zB,GAAGA,CAACrrB,KAAK,EAAE;AACPpI,IAAAA,YAAY,CAACoI,KAAK,EAAE+G,OAAO,CAAC;AAC5B,IAAA,MAAMpP,GAAG,GAAGnD,IAAI,CAAC82B,WAAW,CAAC,IAAI,CAAC1tB,SAAS,EAAEoC,KAAK,CAACpC,SAAS,CAAC;AAC7D,IAAA,OAAOjG,GAAG;AACd;AACA;AACJ;AACA;AACA;AACA;AACA;AACI4zB,EAAAA,SAASA,GAAG;IACR,MAAM5zB,GAAG,GAAGnD,IAAI,CAACg3B,iBAAiB,CAAC,IAAI,CAAC5tB,SAAS,CAAC;AAClD,IAAA,OAAOjG,GAAG;AACd;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACIX,EAAAA,MAAMA,GAAG;IACL,MAAMW,GAAG,GAAGnD,IAAI,CAACi3B,cAAc,CAAC,IAAI,CAAC7tB,SAAS,CAAC;AAC/C,IAAA,OAAOjG,GAAG;AACd;AACA;AACJ;AACA;AACA;AACA;AACA;AACI+zB,EAAAA,SAASA,GAAG;IACR,MAAM/zB,GAAG,GAAGnD,IAAI,CAACm3B,iBAAiB,CAAC,IAAI,CAAC/tB,SAAS,CAAC;AAClD,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIi0B,KAAKA,CAAC5rB,KAAK,EAAE;AACTpI,IAAAA,YAAY,CAACoI,KAAK,EAAE+G,OAAO,CAAC;AAC5B,IAAA,MAAMpP,GAAG,GAAGnD,IAAI,CAACq3B,aAAa,CAAC,IAAI,CAACjuB,SAAS,EAAEoC,KAAK,CAACpC,SAAS,CAAC;AAC/D,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACI6U,QAAQA,CAACxM,KAAK,EAAE;AACZpI,IAAAA,YAAY,CAACoI,KAAK,EAAE+G,OAAO,CAAC;AAC5B,IAAA,MAAMpP,GAAG,GAAGnD,IAAI,CAACs3B,gBAAgB,CAAC,IAAI,CAACluB,SAAS,EAAEoC,KAAK,CAACpC,SAAS,CAAC;AAClE,IAAA,OAAOjG,GAAG;AACd;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIo0B,aAAaA,CAACC,MAAM,EAAE;AAClBp0B,IAAAA,YAAY,CAACo0B,MAAM,EAAExuB,OAAO,CAAC;AAC7B,IAAA,IAAIjE,IAAI,GAAGyyB,MAAM,CAACnuB,kBAAkB,EAAE;IACtCrJ,IAAI,CAACy3B,qBAAqB,CAAC,IAAI,CAACruB,SAAS,EAAErE,IAAI,CAAC;AACpD;AACJ;AAEA,MAAM2yB,qBAAqB,GAAI,OAAOhvB,oBAAoB,KAAK,WAAW,GACpE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEG,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIJ,oBAAoB,CAAClI,GAAG,IAAIR,IAAI,CAAC23B,oBAAoB,CAACn3B,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEvE,MAAMo3B,SAAS,CAAC;EAEnB,OAAOpyB,MAAMA,CAAChF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAGqI,MAAM,CAACC,MAAM,CAAC0uB,SAAS,CAACzuB,SAAS,CAAC;IAC9CvI,GAAG,CAACwI,SAAS,GAAG5I,GAAG;IACnBk3B,qBAAqB,CAAC/uB,QAAQ,CAAC/H,GAAG,EAAEA,GAAG,CAACwI,SAAS,EAAExI,GAAG,CAAC;AACvD,IAAA,OAAOA,GAAG;AACd;AAEAyI,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAM7I,GAAG,GAAG,IAAI,CAAC4I,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBsuB,IAAAA,qBAAqB,CAAC5uB,UAAU,CAAC,IAAI,CAAC;AACtC,IAAA,OAAOtI,GAAG;AACd;AAEA8I,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAM9I,GAAG,GAAG,IAAI,CAAC6I,kBAAkB,EAAE;AACrCrJ,IAAAA,IAAI,CAAC23B,oBAAoB,CAACn3B,GAAG,EAAE,CAAC,CAAC;AACrC;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACI,EAAA,OAAOq3B,gBAAgBA,CAACC,MAAM,EAAEC,MAAM,EAAE;AACpC30B,IAAAA,YAAY,CAAC00B,MAAM,EAAEvlB,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAG+yB,MAAM,CAACzuB,kBAAkB,EAAE;AACtCjG,IAAAA,YAAY,CAAC20B,MAAM,EAAExlB,OAAO,CAAC;AAC7B,IAAA,IAAIpN,IAAI,GAAG4yB,MAAM,CAAC1uB,kBAAkB,EAAE;IACtC,MAAMlG,GAAG,GAAGnD,IAAI,CAACg4B,0BAA0B,CAACjzB,IAAI,EAAEI,IAAI,CAAC;AACvD,IAAA,OAAOyyB,SAAS,CAACpyB,MAAM,CAACrC,GAAG,CAAC;AAChC;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACIuG,EAAAA,WAAWA,CAACouB,MAAM,EAAEC,MAAM,EAAEE,MAAM,EAAE;AAChC70B,IAAAA,YAAY,CAAC00B,MAAM,EAAEvlB,OAAO,CAAC;AAC7B,IAAA,IAAIxN,IAAI,GAAG+yB,MAAM,CAACzuB,kBAAkB,EAAE;AACtCjG,IAAAA,YAAY,CAAC20B,MAAM,EAAExlB,OAAO,CAAC;AAC7B,IAAA,IAAIpN,IAAI,GAAG4yB,MAAM,CAAC1uB,kBAAkB,EAAE;AACtCjG,IAAAA,YAAY,CAAC60B,MAAM,EAAE1lB,OAAO,CAAC;AAC7B,IAAA,IAAIlN,IAAI,GAAG4yB,MAAM,CAAC5uB,kBAAkB,EAAE;IACtC,MAAMlG,GAAG,GAAGnD,IAAI,CAACk4B,aAAa,CAACnzB,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AAChD,IAAA,IAAI,CAAC+D,SAAS,GAAGjG,GAAG,KAAK,CAAC;IAC1Bu0B,qBAAqB,CAAC/uB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACS,SAAS,EAAE,IAAI,CAAC;AAC1D,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACA;AACA;AACI+uB,EAAAA,SAASA,CAACC,CAAC,EAAEC,CAAC,EAAE;AACZ,IAAA,MAAMl1B,GAAG,GAAGnD,IAAI,CAACs4B,mBAAmB,CAAC,IAAI,CAAClvB,SAAS,EAAEgvB,CAAC,EAAEC,CAAC,CAAC;AAC1D,IAAA,OAAO9lB,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;EACIo1B,UAAUA,CAACC,EAAE,EAAE;IACX,MAAMzzB,IAAI,GAAGgB,mBAAmB,CAACyyB,EAAE,EAAEx4B,IAAI,CAACgF,iBAAiB,CAAC;IAC5D,MAAME,IAAI,GAAGpD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACy4B,oBAAoB,CAAC,IAAI,CAACrvB,SAAS,EAAErE,IAAI,EAAEG,IAAI,CAAC;AACjE,IAAA,IAAI+I,EAAE,GAAGlK,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAO8K,EAAE;AACb;AACA;AACJ;AACA;EACI,IAAI6pB,MAAMA,GAAG;IACT,MAAM30B,GAAG,GAAGnD,IAAI,CAAC04B,gBAAgB,CAAC,IAAI,CAACtvB,SAAS,CAAC;AACjD,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;EACI,IAAI40B,MAAMA,GAAG;IACT,MAAM50B,GAAG,GAAGnD,IAAI,CAAC24B,gBAAgB,CAAC,IAAI,CAACvvB,SAAS,CAAC;AACjD,IAAA,OAAOmJ,OAAO,CAAC/M,MAAM,CAACrC,GAAG,CAAC;AAC9B;AACJ;AAEA,eAAey1B,UAAUA,CAACC,MAAM,EAAEC,OAAO,EAAE;EACvC,IAAI,OAAOC,QAAQ,KAAK,UAAU,IAAIF,MAAM,YAAYE,QAAQ,EAAE;AAC9D,IAAA,IAAI,OAAOC,WAAW,CAACC,oBAAoB,KAAK,UAAU,EAAE;MACxD,IAAI;QACA,OAAO,MAAMD,WAAW,CAACC,oBAAoB,CAACJ,MAAM,EAAEC,OAAO,CAAC;OAEjE,CAAC,OAAOz3B,CAAC,EAAE;QACR,IAAIw3B,MAAM,CAACK,OAAO,CAACx1B,GAAG,CAAC,cAAc,CAAC,IAAI,kBAAkB,EAAE;AAC1Dy1B,UAAAA,OAAO,CAACC,IAAI,CAAC,mMAAmM,EAAE/3B,CAAC,CAAC;AAExN,SAAC,MAAM;AACH,UAAA,MAAMA,CAAC;AACX;AACJ;AACJ;AAEA,IAAA,MAAMsvB,KAAK,GAAG,MAAMkI,MAAM,CAACQ,WAAW,EAAE;IACxC,OAAO,MAAML,WAAW,CAACM,WAAW,CAAC3I,KAAK,EAAEmI,OAAO,CAAC;AAExD,GAAC,MAAM;IACH,MAAMz1B,QAAQ,GAAG,MAAM21B,WAAW,CAACM,WAAW,CAACT,MAAM,EAAEC,OAAO,CAAC;AAE/D,IAAA,IAAIz1B,QAAQ,YAAY21B,WAAW,CAACO,QAAQ,EAAE;MAC1C,OAAO;QAAEl2B,QAAQ;AAAEw1B,QAAAA;OAAQ;AAE/B,KAAC,MAAM;AACH,MAAA,OAAOx1B,QAAQ;AACnB;AACJ;AACJ;AAEA,SAASm2B,iBAAiBA,GAAG;EACzB,MAAMV,OAAO,GAAG,EAAE;AAClBA,EAAAA,OAAO,CAACW,GAAG,GAAG,EAAE;AAChBX,EAAAA,OAAO,CAACW,GAAG,CAACC,sCAAsC,GAAG,YAAW;AAAE,IAAA,OAAOz4B,WAAW,CAAC,UAAU8zB,IAAI,EAAE4E,IAAI,EAAE;MACvGC,UAAU,CAACC,MAAM,CAACC,eAAe,CAACv5B,mBAAmB,CAACw0B,IAAI,EAAE4E,IAAI,CAAC,CAAC;KACrE,EAAEI,SAAS,CAAC;GAAE;AACfjB,EAAAA,OAAO,CAACW,GAAG,CAACO,iBAAiB,GAAG,UAASjF,IAAI,EAAE;AAC3C,IAAA,MAAM5xB,GAAG,GAAGoP,OAAO,CAAC/M,MAAM,CAACuvB,IAAI,CAAC;AAChC,IAAA,OAAO5xB,GAAG;GACb;AACD21B,EAAAA,OAAO,CAACW,GAAG,CAACQ,oBAAoB,GAAG,UAASlF,IAAI,EAAE;AAC9C,IAAA,MAAM5xB,GAAG,GAAGoP,OAAO,CAACqiB,QAAQ,CAACG,IAAI,CAAC;AAClC,IAAA,OAAO5xB,GAAG;GACb;AACD21B,EAAAA,OAAO,CAACW,GAAG,CAACS,+BAA+B,GAAG,YAAW;AACrD,IAAA,MAAMC,KAAK,GAAGn6B,IAAI,CAACe,mBAAmB;AACtC,IAAA,MAAMgC,MAAM,GAAGo3B,KAAK,CAACC,IAAI,CAAC,CAAC,CAAC;AAC5BD,IAAAA,KAAK,CAACn5B,GAAG,CAAC,CAAC,EAAE6B,SAAS,CAAC;IACvBs3B,KAAK,CAACn5B,GAAG,CAAC+B,MAAM,GAAG,CAAC,EAAEF,SAAS,CAAC;IAChCs3B,KAAK,CAACn5B,GAAG,CAAC+B,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC;IAC3Bo3B,KAAK,CAACn5B,GAAG,CAAC+B,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC;IAC3Bo3B,KAAK,CAACn5B,GAAG,CAAC+B,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC;GAE/B;EACD+1B,OAAO,CAACW,GAAG,CAACY,qBAAqB,GAAG,UAAStF,IAAI,EAAE4E,IAAI,EAAE;AACrD,IAAA,MAAMx2B,GAAG,GAAGtB,kBAAkB,CAACkzB,IAAI,EAAE4E,IAAI,CAAC;AAC1C,IAAA,OAAOx2B,GAAG;GACb;EACD21B,OAAO,CAACW,GAAG,CAACa,gBAAgB,GAAG,UAASvF,IAAI,EAAE4E,IAAI,EAAE;IAChD,MAAM,IAAI/3B,KAAK,CAACC,kBAAkB,CAACkzB,IAAI,EAAE4E,IAAI,CAAC,CAAC;GAClD;AAED,EAAA,OAAOb,OAAO;AAClB;AAMA,SAASyB,mBAAmBA,CAACl3B,QAAQ,EAAEw1B,MAAM,EAAE;EAC3C74B,IAAI,GAAGqD,QAAQ,CAACm3B,OAAO;EACvBC,UAAU,CAACC,sBAAsB,GAAG7B,MAAM;AAC1C70B,EAAAA,qBAAqB,GAAG,IAAI;AAC5BkE,EAAAA,yBAAyB,GAAG,IAAI;AAChCtE,EAAAA,yBAAyB,GAAG,IAAI;AAChC0E,EAAAA,wBAAwB,GAAG,IAAI;AAC/BrI,EAAAA,uBAAuB,GAAG,IAAI;EAG9BD,IAAI,CAAC26B,gBAAgB,EAAE;AACvB,EAAA,OAAO36B,IAAI;AACf;AA2BA,eAAey6B,UAAUA,CAACG,cAAc,EAAE;AACtC,EAAA,IAAI56B,IAAI,KAAK6C,SAAS,EAAE,OAAO7C,IAAI;AAGnC,EAAA,IAAI,OAAO46B,cAAc,KAAK,WAAW,EAAE;IACvC,IAAI3xB,MAAM,CAAC4xB,cAAc,CAACD,cAAc,CAAC,KAAK3xB,MAAM,CAACE,SAAS,EAAE;MAC5D,CAAC;AAACyxB,QAAAA;AAAc,OAAC,GAAGA,cAAc;AACtC,KAAC,MAAM;AACHzB,MAAAA,OAAO,CAACC,IAAI,CAAC,2FAA2F,CAAC;AAC7G;AACJ;AAEA,EAAA,IAAI,OAAOwB,cAAc,KAAK,WAAW,EAAE;IACvCA,cAAc,GAAG,IAAIE,GAAG,CAAC,sBAAsB,EAAEC,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC;AACrE;AACA,EAAA,MAAMnC,OAAO,GAAGU,iBAAiB,EAAE;EAEnC,IAAI,OAAOoB,cAAc,KAAK,QAAQ,IAAK,OAAOM,OAAO,KAAK,UAAU,IAAIN,cAAc,YAAYM,OAAQ,IAAK,OAAOJ,GAAG,KAAK,UAAU,IAAIF,cAAc,YAAYE,GAAI,EAAE;AAC5KF,IAAAA,cAAc,GAAGO,KAAK,CAACP,cAAc,CAAC;AAC1C;EAIA,MAAM;IAAEv3B,QAAQ;AAAEw1B,IAAAA;GAAQ,GAAG,MAAMD,UAAU,CAAC,MAAMgC,cAAc,EAAE9B,OAAO,CAAC;AAE5E,EAAA,OAAOyB,mBAAmB,CAACl3B,QAAQ,EAAEw1B,MAAM,CAAC;AAChD;;ACxlNA,SAAS,gBAAgB,GAAA;IACvB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACtD,IAAA,gBAAgB,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AAC5C,IAAA,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK;AACpC,IAAA,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK;AACrC,IAAA,gBAAgB,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM;AAC/C,IAAA,gBAAgB,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;;AAE7C,IAAA,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB;AACjD,IAAA,OAAO,gBAAgB;AACzB;AAEM,MAAO,SAAU,SAAQ,WAAW,CAAA;AACxC,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,SAAS,GAAG,gBAAgB,EAAE;QACpC,KAAK,CAAC,SAAS,CAAC;;AAEnB;;ACnBD;;AAEG;AACI,MAAM,2BAA2B,GAAG,OAAO;;ACDlD;AACA;AACA;AACA;AACA,IAAI,SAAS,GAAG,EAAE;AAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;AAC9B,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD;AACO,SAAS,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE;AACpgB;;ACjBA;AACA;AACA;;AAEA,IAAI,eAAe;AACnB,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC;AACf,SAAS,GAAG,GAAG;AAC9B;AACA,EAAE,IAAI,CAAC,eAAe,EAAE;AACxB;AACA,IAAI,eAAe,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AACpH,IAAI,IAAI,CAAC,eAAe,EAAE;AAC1B,MAAM,MAAM,IAAI,KAAK,CAAC,0GAA0G,CAAC;AACjI;AACA;AACA,EAAE,OAAO,eAAe,CAAC,KAAK,CAAC;AAC/B;;AChBA,IAAI,UAAU,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AACrG,aAAe;AACf,EAAE;AACF,CAAC;;ACAD,SAAS,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE;AAClC,EAAE,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AAC7C,IAAI,OAAO,MAAM,CAAC,UAAU,EAAE;AAC9B;AACA,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE;AACzB,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,GAAG;;AAErD;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI;AACjC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI;AAUjC,EAAE,OAAO,eAAe,CAAC,IAAI,CAAC;AAC9B;;SCrBgB,OAAO,GAAA;AACrB,IAAA,MAAM,IAAI,GAAGuC,EAAM,EAAE;AACrB,IAAA,OAAO,IAAI;AACb;;ACMO,MAAM,yBAAyB,GAAG,IAAI;MAehC,0BAA0B,CAAA;AAQrC,IAAA,WAAA,CAAY,OAA8B,EAAA;AANzB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAmB;AACpC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,GAAG,EAAkB;QAEhD,IAAM,CAAA,MAAA,GAAG,CAAC;QACV,IAAM,CAAA,MAAA,GAAG,KAAK;AAGpB,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC9E,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,KAAmB,KAAI;AAC9C,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI;AAC1B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,OAAO,CAAC;AAClD,YAAA,IAAI,CAAC,OAAO;gBAAE;YACd,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AACpC,YAAA,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACjF,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,iCAAiC,EAAE,YAAY,CAAC,CAAC;;AAC5E,iBAAA,IAAI,OAAO,CAAC,KAAK,EAAE;AACxB,gBAAA,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;;iBACvG;AACL,gBAAA,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;;AAEnC,SAAC;QACD,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,wBAAwB,CAAC,CAAC;AAChG,QAAA,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;AACxG,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;AACrB,YAAA,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI;AAC7G,SAAA,CAAC;;QAEF,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC;;IAGlC,QAAQ,CAAC,MAAc,EAAE,UAAkB,EAAA;;YAC/C,MAAM,IAAI,CAAC,KAAK;AAChB,YAAA,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC;AAC1G,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACnB,YAAA,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;SACvD,CAAA;AAAA;IAEK,UAAU,CAAC,MAAc,EAAE,UAAkB,EAAA;;YACjD,MAAM,IAAI,CAAC,KAAK;YAChB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;YAC9G,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACtC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,CAA6B;SAC/H,CAAA;AAAA;AAED,IAAA,MAAM,CAAC,MAAc,EAAA;;AACnB,QAAA,MAAM,UAAU,GAAG,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC,IAAI,CAAC;QAC1D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;AACxC,QAAA,OAAO,UAAU;;AAGb,IAAA,WAAW,CAAC,MAAc,EAAA;;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACnB,MAAM,IAAI,CAAC,KAAK;AAChB,YAAA,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC3C,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;SAChC,CAAA;AAAA;IAED,OAAO,GAAA;QACL,IAAI,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAC;;AAG/D,IAAA,IAAI,CAAC,OAAgC,EAAE,MAAe,EAAE,UAAmB,EAAA;QACjF,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC9E,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;AAChI,QAAA,MAAM,OAAO,GAAG,EAAE,IAAI,CAAC,MAAM;QAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAClE,YAAA,IAAI;gBAAE,IAAI,CAAC,MAAM,CAAC,WAAW,iCAAM,OAAO,CAAA,EAAA,EAAE,OAAO,EAAA,CAAA,CAAG;;YACtD,OAAO,KAAK,EAAE;AACZ,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC5B,MAAM,CAAC,KAAK,YAAY,KAAK,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;;AAErE,SAAC,CAAC;;AAGI,IAAA,IAAI,CAAC,KAAY,EAAA;QACvB,IAAI,IAAI,CAAC,MAAM;YAAE;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;QACvB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAAE,YAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AAClE,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;;AAE3B;;AC3Ge,SAAA,gBAAgB,CAAC,MAAc,EAAE,QAAiB,EAAA;IAChE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AACtG,IAAA,IAAI,QAAQ,IAAI,MAAM,IAAI,QAAQ,GAAG,IAAI,IAAI,MAAM,IAAI,QAAQ,GAAG,GAAG;AAAE,QAAA,OAAO,QAAQ;AACtF,IAAA,MAAM,MAAM,GAAG,IAAA,CAAA,GAAA,CAAA,CAAC,EAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACjD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;AAC7G,IAAA,OAAO,MAAM;AACf;SAEgB,kBAAkB,CAAC,MAA0D,EAAE,KAAa,EAAE,cAAsB,EAAA;IAClI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,IAAI,CAAC;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC;AACzH,IAAA,IAAI,MAAM,YAAY,KAAK,CAAC,kBAAkB;AAAE,QAAA,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC;IACpH,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;IAChG,OAAO,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc;AACtG;AAmBA;MACa,qBAAqB,CAAA;IAUhC,WAA6B,CAAA,MAAkC,EAAmB,OAAA,GAA8B,EAAE,EAAA;QAArF,IAAM,CAAA,MAAA,GAAN,MAAM;QAA+C,IAAO,CAAA,OAAA,GAAP,OAAO;AATxE,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAwB;AACzC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC;QAC3C,IAAU,CAAA,UAAA,GAAG,CAAC,QAAQ;QACtB,IAAY,CAAA,YAAA,GAAG,CAAC,QAAQ;QACxB,IAAW,CAAA,WAAA,GAAG,KAAK;QACnB,IAAM,CAAA,MAAA,GAAG,KAAK;QACd,IAAQ,CAAA,QAAA,GAAG,KAAK;AAItB,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC;;AAG7C,IAAA,aAAa,CAAC,UAAmB,EAAA;AAC/B,QAAA,IAAI,UAAU,KAAK,SAAS,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,CAAC;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AAC5I,QAAA,IAAI,CAAC,eAAe,GAAG,UAAU;QACjC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;YACzC,KAAK,CAAC,UAAU,EAAE;YAClB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS;YACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;;;AAI9B,IAAA,QAAQ,CAAC,KAAoB,EAAA;;YACjC,IAAI,IAAI,CAAC,MAAM;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;AACpE,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;AACvE,YAAA,MAAM,KAAK,GAAU;gBACnB,MAAM,EAAE,OAAO,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;aAC/F;YACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;AAC9B,YAAA,IAAI;AACF,gBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBACnE,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK;AAAE,oBAAA,KAAK,CAAC,KAAK,GAAG,IAAI;;oBACpD,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;;YAChD,OAAO,KAAK,EAAE;gBACd,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK;AAAE,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACjE,gBAAA,MAAM,KAAK;;SAEd,CAAA;AAAA;AAEK,IAAA,UAAU,CAAC,KAAoB,EAAA;;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACrC,YAAA,IAAI,CAAC,KAAK;gBAAE;AACZ,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YAC1B,KAAK,CAAC,UAAU,EAAE;YAClB,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;SAC5C,CAAA;AAAA;AAED,IAAA,MAAM,CAAC,MAA0D,EAAE,cAAsB,EAAE,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,MAAM,GAAG,KAAK,EAAA;;AAChI,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ;YAAE;QAClC,MAAM,CAAC,iBAAiB,EAAE;AAC1B,QAAA,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,cAAc,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;AAC1E,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC3B,YAAA,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;gBAAE,OAAO,GAAG,IAAI;AAC9I,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;;AAEhE,QAAA,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,cAAc;QACrC,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,IAAI,MAAM,CAAC;AAAE,YAAA,IAAI,CAAC,UAAU,GAAG,GAAG;AAClE,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,GAAG;AAC1C,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,GAAG;YAAE;AACnC,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG;QACvB,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,uBAAuB,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACrJ,MAAM,UAAU,GAA6D,EAAE;QAC/E,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;AACzC,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;gBAAE;YAC1J,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC;AAC1C,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;AACzE,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC;gBAAE;AACpC,YAAA,IAAI;gBACF,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;AACnD,gBAAA,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,kBAAkB,CAAC;AAC3E,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,gBAAA,MAAM,MAAM,GAAG,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK;gBACvH,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,KAAK,SAAS,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM;gBACxG,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU;oBAAE;AACjE,gBAAA,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;YACvD,OAAO,KAAK,EAAE;AAAE,gBAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,OAAO,EAAC,OAAO,MAAG,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;;;AAEvE,QAAA,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QAClD,KAAK,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,UAAU,EAAE;AAC9C,YAAA,KAAK,CAAC,OAAO,GAAG,UAAU;AAC1B,YAAA,MAAM,UAAU,GAAG,EAAE,KAAK,CAAC,UAAU;AACrC,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa;YAC1C,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;;AAC9F,gBAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,UAAU,KAAK,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,aAAa,KAAK,QAAQ;oBAAE;AACzI,gBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC;AAC7D,gBAAA,KAAK,CAAC,QAAQ,GAAG,UAAU;AAC3B,gBAAA,KAAK,CAAC,MAAM,GAAG,SAAS;AACxB,gBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,EAAC,QAAQ,MAAG,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC;AAC7C,aAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAI;;AACjB,gBAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,UAAU,KAAK,KAAK,CAAC,UAAU,IAAI,CAAA,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,MAAA,GAAA,MAAA,GAAA,KAAK,CAAE,IAAI,MAAK,YAAY;oBAAE;AAC/H,gBAAA,KAAK,CAAC,MAAM,GAAG,UAAU;AACzB,gBAAA,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ;AAC9B,gBAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,OAAO,EAAC,OAAO,MAAG,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACrD,aAAC,CAAC;;;;AAKA,IAAA,MAAM,CAAC,UAAkB,EAAA;;;YAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AAC9G,YAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC;AACvH,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI;AACJ,gBAAA,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;oBAC9C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;wBAAE;oBACnC,IAAI,CAAC,KAAK,CAAC,KAAK;AAAE,wBAAA,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC;oBACtF,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC;AAC1C,oBAAA,MAAM,KAAK,GAAG,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;AAChE,oBAAA,MAAM,UAAU,GAAG,EAAE,KAAK,CAAC,UAAU;AACrC,oBAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,GAAG,yBAAyB,CAAC;oBAC1F,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,UAAU,KAAK,KAAK,CAAC,UAAU;AAAE,wBAAA,MAAM,IAAI,YAAY,CAAC,8BAA8B,EAAE,YAAY,CAAC;AACnK,oBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC;oBACxD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK;AACtC,oBAAA,KAAK,CAAC,MAAM,GAAG,SAAS;AACxB,oBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,EAAC,QAAQ,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC;;;oBAEnC;AAAE,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;SAClC,CAAA;AAAA;IAED,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,MAAM;YAAE;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;YACzC,KAAK,CAAC,UAAU,EAAE;AAClB,YAAA,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAI;;gBACzD,IAAI,CAAA,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,IAAI,MAAK,YAAY;AAAE,oBAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,OAAO,EAAC,OAAO,MAAG,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACvF,aAAC,CAAC;;AAEJ,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;;AAEvB;AAED,SAAS,OAAO,CAAC,MAAsB,EAAA;IACrC,KAAK,IAAI,OAAO,GAA0B,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,OAAO,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK;AACvH,IAAA,OAAO,IAAI;AACb;AACA,SAAS,OAAO,CAAC,KAAc,EAAW,EAAA,OAAO,KAAK,YAAY,KAAK,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACrG,SAAU,YAAY,CAAC,MAAqB,EAAA;AAChD,IAAA,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5D,IAAA,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5D,IAAA,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5D,IAAA,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE;AACxB,IAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG;WACtH,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAA,CAAA,GAAA,CAAA,KAAK,EAAI,CAAC,CAAA,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAA,CAAA,GAAA,CAAA,KAAK,EAAI,CAAC,CAAA,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAA,CAAA,GAAA,CAAA,KAAK,EAAI,CAAC,CAAA,CAAC,GAAG;AACtH,WAAA,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC;AACvH,IAAA,OAAO,KAAK;AACd;;AC5JA,SAAS,MAAM,CAAC,IAAY,EAAA;IAC1B,IAAI,OAAO,GAAG,EAAE;AAChB,IAAA,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE;QAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACpC,IAAI,SAAS,KAAK,GAAG;YAAE,OAAO,IAAI,IAAI;aACjC,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,IAAI,MAAM;AAClC,aAAA,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG;YAAE,OAAO,IAAI,SAAS;aACnD;YACH,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAClJ,YAAA,OAAO,IAAI,QAAQ,GAAG,KAAK,GAAG,QAAQ;;;AAG1C,IAAA,OAAO,GAAG,GAAG,OAAO,GAAG,GAAG;AAC5B;AACA,SAAS,IAAI,GAAA;IACX,MAAM,QAAQ,GAAG,kEAAkE;IACnF,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACxC,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5C,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;AACnE,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC9B,QAAA,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;QAC9C,IAAI,MAAM,GAAG,EAAE;AACf,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,MAAM;YAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;;QACpG,KAAK,IAAI,MAAM;;AAEjB,IAAA,OAAO,KAAK;AACd;AAEA;SACgB,eAAe,CAAC,IAA4B,EAAE,IAAI,GAAG,eAAe,EAAA;IAClF,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,IAAI,IAAI,CAAC,gBAAgB,KAAK;WAC9G,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG;WACjF,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK;WAC/E,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,GAAG,sBAAsB;AACvH,WAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,mBAAmB,IAAI;AAC1E,WAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;WAChF,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;IAC9G,MAAM,QAAQ,GAAa,EAAE;IAC7B,IAAI,MAAM,GAAG,MAAO;IACpB,SAAS,MAAM,CAAC,KAAuB,EAAE,MAAc,EAAE,KAAK,GAAG,CAAC,EAAA;AAChE,QAAA,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;AAC/H,QAAA,QAAQ,KAAK,CAAC,IAAI;AAChB,YAAA,KAAK,KAAK;gBACR,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,IAAI,MAAM;AAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;AACvH,gBAAA,OAAO,GAAG,GAAG,KAAK,CAAC,EAAE;AACvB,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;AAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;AACnF,gBAAA,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;AAClF,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;AAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC;gBAC/E,OAAO,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;AACtC,YAAA,KAAK,SAAS;gBACZ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;AAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC;AACpF,gBAAA,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AAC5B,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI;AAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;AACvG,gBAAA,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AAC5B,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;AACtF,gBAAA,OAAO,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG;AAChC,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,SAAS;AAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;gBAC1F,OAAO,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK;AACpC,YAAA,KAAK,MAAM,EAAE,OAAO,GAAG;AACvB,YAAA,KAAK,SAAS,EAAE,OAAO,GAAG;YAC1B,SAAS,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;;;AAG9D,IAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClC,QAAA,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW;AAChF,eAAA,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,EAAE;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;QACvH,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;;AAE3J,IAAA,MAAM,GAAG,GAAG,CAAC,UAAkB,KAAO,EAAA,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE;AACpI,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,+BAA+B,CAAC;AACnD,IAAA,MAAM,CAAC,GAAG,GAAG,CAAC,0BAA0B,CAAC;AACzC,IAAA,MAAM,CAAC,GAAG,GAAG,CAAC,0BAA0B,CAAC;AACzC,IAAA,MAAM,SAAS,GAAG,GAAG,CAAC,uBAAuB,GAAG,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;IACnF,MAAM,OAAO,GAAG,GAAG,CAAC,gDAAgD,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,CAAC;AAC9I,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,qCAAqC,CAAC;IACzD,MAAM,KAAK,GAAG,GAAG,CAAC,sBAAsB,GAAG,MAAM,GAAG,IAAI,CAAC;IACzD,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;IAC1G,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAG;;AACrC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,KAAK,cAAc,GAAG,iBAAiB,GAAG,kBAAkB;QACrG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,WAAW,MAAK,QAAQ;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;QAC5H,OAAO,GAAG,GAAG,EAAE;AACjB,KAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACZ,IAAA,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC;IACrH,MAAM,cAAc,GAAG,GAAG,CAAC,0BAA0B,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1I,MAAM,YAAY,GAAG,GAAG,CAAC,kCAAkC,GAAG,cAAc,GAAG,IAAI,CAAC;IACpF,MAAM,eAAe,GAAG,GAAG,CAAC,uBAAuB,GAAG,SAAS,GAAG,GAAG,CAAC;IACtE,GAAG,CAAC,0BAA0B,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,eAAe,GAAG,IAAI,GAAG,YAAY,GAAG,kBAAkB,CAAC;IAC/I,OAAO;QACL,eAAe,EAAE,SAAS,EAAE,4DAA4D;QACxF,YAAY,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,qEAAqE;AAC5G,QAAA,wBAAwB,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,EAAE;AAC9F,KAAA,CAAC,IAAI,CAAC,IAAI,CAAC;AACd;;ACnHM,MAAO,qBAAsB,SAAQ,KAAK,CAAA;AAK9C,IAAA,WAAA,CAAY,IAA+B,EAAE,OAAe,EAAE,MAAgB,EAAA;QAC5E,KAAK,CAAC,OAAO,CAAC;AACd,QAAA,IAAI,CAAC,IAAI,GAAG,uBAAuB;AACnC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,IAAI,KAAK,cAAc,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AAChF,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;;;AAGpC;AAEK,SAAU,0BAA0B,CAAC,GAAY,EAAA;AACrD,IAAA,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC;AACtC,IAAA,IAAI;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAY;AACjD,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,YAAA,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC;YAC/B,OAAO,IAAI,qBAAqB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;;AAE1D,QAAA,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE;YACrB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,OAAO,EAAE;AACX,gBAAA,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;AAC/B,gBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC;AAC/B,gBAAA,OAAO,IAAI,qBAAqB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC;;;;AAG5E,IAAA,OAAA,EAAA,EAAM;;;IAGR,OAAO,IAAI,qBAAqB,CAAC,SAAS,EAAE,UAAU,IAAI,iCAAiC,EAAE,GAAG,CAAC;AACnG;AAEA,SAAS,UAAU,CAAC,IAA+B,EAAE,MAAgB,EAAA;;AACnE,IAAA,IAAI,IAAI,KAAK,cAAc,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AAChF,QAAA,OAAO,CAAgD,6CAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAQ,KAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;;IAExG,IAAI,IAAI,KAAK,mBAAmB,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;QACpD,OAAO,CAAA,QAAA,EAAW,MAAM,CAAC,CAAA,EAAA,GAAA,MAAM,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,UAAU,CAAC,CAAc,WAAA,EAAA,MAAM,CAAC,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,CAAC,CAAG,CAAA,CAAA,CAAC,IAAI,EAAE;;IAEvG,IAAI,IAAI,KAAK,oBAAoB,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;QACrD,OAAO,CAAA,gCAAA,EAAmC,MAAM,CAAC,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,SAAS,CAAC,CAAA,+BAAA,CAAiC;;IAE9G,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;AAAE,QAAA,OAAO,MAAM;IAClE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AAChC;AAEA,SAAS,SAAS,CAAC,OAAe,EAAA;AAChC,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE;IACzE,QAAQ,IAAI;AACV,QAAA,KAAK,MAAM;AACX,QAAA,KAAK,kBAAkB;AACvB,QAAA,KAAK,kBAAkB;AACvB,QAAA,KAAK,sBAAsB;AAC3B,QAAA,KAAK,6BAA6B;AAClC,QAAA,KAAK,cAAc;AACnB,QAAA,KAAK,2BAA2B;AAChC,QAAA,KAAK,mBAAmB;AACxB,QAAA,KAAK,oBAAoB;AACzB,QAAA,KAAK,yBAAyB;AAC9B,QAAA,KAAK,yBAAyB;AAC9B,QAAA,KAAK,gBAAgB;AACnB,YAAA,OAAO,IAAI;AACb,QAAA;AACE,YAAA,OAAO,SAAS;;AAEtB;AAEA,SAAS,QAAQ,CAAC,KAAc,EAAA;AAC9B,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7E;AAEA,SAAS,YAAY,CAAC,KAAc,EAAA;IAClC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,QAAQ,CAAC;AACtG;AAEA,SAAS,cAAc,CAAC,GAAY,EAAA;IAClC,IAAI,OAAO,GAAG,KAAK,QAAQ;AAAE,QAAA,OAAO,GAAG;IACvC,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,GAAG,CAAC,OAAO;IAC5C,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,OAAO;AACxE,IAAA,IAAI;QACF,OAAO,MAAM,CAAC,GAAG,KAAH,IAAA,IAAA,GAAG,cAAH,GAAG,GAAI,EAAE,CAAC;;AACxB,IAAA,OAAA,EAAA,EAAM;AACN,QAAA,OAAO,iCAAiC;;AAE5C;;ACqCa,MAAA,aAAc,SAAQ,KAAK,CAAC,KAAK,CAAA;IAW5C,IAAI,MAAM,KAAwC,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5E,IAAI,UAAU,KAAc,OAAO,IAAI,CAAC,QAAQ,CAAC;AACjD,IAAA,IAAI,aAAa,GAAa,EAAA,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IACpF,IAAI,UAAU,KAAa,OAAO,IAAI,CAAC,cAAc,CAAC;AACtD,IAAA,IAAI,KAAK,GAAA,EAAkB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC9D,IAAI,KAAK,CAAC,KAAgC,EAAA;QACxC,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;;IAE1C,IAAI,OAAO,GAAc,EAAA,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;IAC5D,IAAI,OAAO,CAAC,KAAc,EAAA;QACxB,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,KAAK;QACnC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,GAAG,KAAK;QAC3C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,GAAG,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,GAAG,CAAC;;AAG9C,IAAA,WAAA,CAAY,OAAuD,EAAA;;AACjE,QAAA,KAAK,EAAE;AA1BD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC;QACjC,IAAQ,CAAA,QAAA,GAAG,KAAK;QAChB,IAAc,CAAA,cAAA,GAAG,KAAK;QAwB5B,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,KAAK,MAAM,GAAG,EAAE,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,OAAO,EAAE;AACnE,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK;AAC7B,cAAE,IAAI,cAAc,CAAC,OAAO,CAAC,UAAU;AACvC,cAAE,qBAAqB,CAAC,OAAO,EAAE,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAC3B,IAAI,KAAK,CAAC,cAAc,EAAE,EAC1B,IAAI,KAAK,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,QAAQ,EAAE,CAAC,CACrE;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QACtC,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC1H,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,KAAK;QACnC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC;AAC3C,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,YAAY,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,IAAC,OAAO,CAAC,IAAI,KAAK,MAAM,GAAG,KAAK,GAAG,CAAA,EAAA,GAAA,MAAA,OAAO,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,KAAK,CAAC,CAAC;;QACpH,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,MAAM,KAAK;;;AAIf,IAAA,OAAO,QAAQ,CAAC,UAAkB,EAAE,UAA4D,EAAE,EAAA;QAChG,OAAO,IAAI,aAAa,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,OAAO,CAAA,EAAA,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAA,CAAA,CAAG;;AAGpE,IAAA,OAAO,CAAC,KAAoB,EAAE,SAA4B,EAAE,UAAsE,EAAE,EAAA;;QAClI,IAAI,CAAC,WAAW,EAAE;QAClB,KAAK,CAAC,WAAW,EAAE;AACnB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,QAAA,IAAI,MAAkC;AACtC,QAAA,IAAI,MAAkC;AACtC,QAAA,IAAI;AACF,YAAA,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE;AAC5B,YAAA,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AACxD,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,6BAA6B,EAAE;YACrD,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE;gBACjE,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,cAAc;AACrD,gBAAA,KAAK,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK;AACpD,aAAA,CAAC;AACF,YAAA,KAAK,CAAC,aAAa,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA0B,GAAG,SAAS;AACtF,YAAA,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,YAAA,KAAK,CAAC,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,IAAI,CAAC,QAAQ,CAAE;AACrC,YAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,YAAA,OAAO,KAAK;;QACZ,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,0BAA0B,CAAC,KAAK,CAAC;;gBAC/B;AACR,YAAA,MAAM,aAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,IAAI,EAAE;AACd,YAAA,MAAM,aAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,IAAI,EAAE;YACd,IAAI,CAAC,IAAI,EAAE;;;AAIf,IAAA,KAAK,CAAC,KAAoB,EAAE,OAAA,GAAsE,EAAE,EAAA;QAClG,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;;AAG9C,IAAA,YAAY,CAAC,KAAoB,EAAE,OAAA,GAAsE,EAAE,EAAA;QACzG,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC;;AAGrD,IAAA,QAAQ,CAAC,OAAwB,EAAE,OAAA,GAAsE,EAAE,EAAA;;AACzG,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,MAAM,YAAY,aAAa,CAAC,CAAC,EAAE;AACnH,YAAA,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC;;AAEjF,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;YAC/B,MAAM,aAAa,GAAqB,EAAE;AAC1C,YAAA,IAAI,MAAkC;AACtC,YAAA,IAAI;gBACF,KAAK,MAAM,MAAM,IAAI,OAAO;oBAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBACtE,MAAM,OAAO,GAAG,CAAI,CAAA,EAAA,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG;gBAC5F,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;AACzD,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,6BAA6B,EAAE;gBACrD,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE;oBACjE,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,cAAc;AACrD,oBAAA,KAAK,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK;AACpD,iBAAA,CAAC;AACF,gBAAA,KAAK,CAAC,aAAa,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA0B,GAAG,SAAS;AACtF,gBAAA,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,gBAAA,KAAK,CAAC,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,IAAI,CAAC,QAAQ,CAAE;AACrC,gBAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,gBAAA,OAAO,KAAK;;YACZ,OAAO,KAAK,EAAE;AACd,gBAAA,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC;;;;AAIhD,gBAAA,IAAI,MAAM,CAAC,IAAI,KAAK;AACf,wBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,MAAG,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAA;AAAE,oBAAA,MAAM,MAAM;;oBAC/D;AACR,gBAAA,MAAM,aAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,IAAI,EAAE;AACd,gBAAA,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChD,IAAI,CAAC,IAAI,EAAE;;;AAGf,QAAA,IAAI,MAAiC;AACrC,QAAA,IAAI;AACF,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,MAAM,IAAI,GAAG,CAAC,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAN,MAAM,GAAI,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC;AACrE,gBAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,EAAE;gBACjB,MAAM,GAAG,IAAI;;AAEf,YAAA,OAAO,MAAO;;QACd,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,aAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,OAAO,EAAE;AACjB,YAAA,MAAM,KAAK;;;AAIf,IAAA,KAAK,CAAC,SAAiB,EAAE,OAAA,GAAsE,EAAE,EAAA;;QAC/F,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;AACjH,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,QAAA,IAAI,MAAkC;AACtC,QAAA,IAAI;YACF,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;AACzC,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,6BAA6B,EAAE;YACrD,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE;gBACjE,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,cAAc;AACrD,gBAAA,KAAK,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK;AACpD,aAAA,CAAC;AACF,YAAA,KAAK,CAAC,aAAa,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA0B,GAAG,SAAS;AACtF,YAAA,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,YAAA,KAAK,CAAC,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,IAAI,CAAC,QAAQ,CAAE;AACrC,YAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,YAAA,OAAO,KAAK;;QACZ,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,0BAA0B,CAAC,KAAK,CAAC;;gBAC/B;AACR,YAAA,MAAM,aAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,IAAI,EAAE;YACd,IAAI,CAAC,IAAI,EAAE;;;IAIf,iBAAiB,GAAA;QACf,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;;IAG1C,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAA4B;;;AAI9D,IAAA,iBAAiB,CAAC,OAAiC,EAAA;;QAC3D,IAAI,CAAC,WAAW,EAAE;QAClB,MAAM,IAAI,GAAG,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;AACtD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI;AACF,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,cAAc,CAAC;YAC1E,QAAQ,CAAC,IAAI,EAAE;AACf,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,YAAA,OAAO,KAAK;;QACZ,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;YACtB,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,MAAM,KAAK;;;IAIf,sBAAsB,GAAA;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI;AAAE,YAAA,OAAO,MAAM,CAAC,mBAAmB,EAAE;;gBACjC;YAAE,MAAM,CAAC,IAAI,EAAE;;;IAGzB,kBAAkB,GAAA;AAChB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAA2B;;gBACxE;YAAE,MAAM,CAAC,IAAI,EAAE;;;IAGzB,SAAS,GAAA;AACP,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACxC,QAAA,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE;;;IAI7D,UAAU,CAAC,aAAqC,OAAO,EAAA;AACrD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAuB;;gBACrE;YAAE,MAAM,CAAC,IAAI,EAAE;;;;AAIzB,IAAA,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,EAAA;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE;AACnD,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;;AAE/D,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;AACjC,QAAA,MAAM,MAAM,GAAG,eAAe,CAC5B,MAAM,CAAC,mBAAmB,EAAE,EAC5B,UAAU,GAAG,yBAAyB,CACvC;AACD,QAAA,IAAI;AACF,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE;AACpC,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE;AAChC,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;AACxC,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,UAAU,EAAE;AACtE,gBAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC;;YAEvE,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,GAAG,aAAa,GAAG,EAAE,CAAC;YACrD,MAAM,MAAM,GAAG,4CAA4C;YAC3D,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;gBACnE,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;;YAEzC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC;YACvC,IAAI,aAAa,GAAG,CAAC;AACrB,YAAA,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,KAAa,KAAU;gBACzD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;gBACpC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1F,aAAC;AACD,YAAA,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,aAAa,EAAE,QAAQ,IAAI,CAAC,EAAE;AAC9D,gBAAA,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzF,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK;oBAC7B,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACpC,iBAAA,CAAC;gBAC9B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAClE,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAClE,gBAAA,MAAM,KAAK,GAAG;AACZ,oBAAA,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7B,oBAAA,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7B,oBAAA,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;iBAC9B;gBACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACnC,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE;AAC5C,oBAAA,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC;;AAE7E,gBAAA,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,GAAG,EAAE;gBACjC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,UAAU,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;AAC7E,gBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,KAAI;AAC9D,oBAAA,UAAU,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC;iBACzD,CAAC,CAAC;gBACH,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC;;YAEtC,MAAM,kBAAkB,GAAG,MAAM,CAAC,mBAAmB,EAAE,GAAG,aAAa;AACvE,YAAA,IAAI,kBAAkB,GAAG,UAAU,EAAE;AACnC,gBAAA,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC;;YAEnF,OAAO;gBACL,KAAK;AACL,gBAAA,MAAM,EAAE;AACN,oBAAA,cAAc,EAAE,CAAC;AACjB,oBAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;AACtC,oBAAA,cAAc,EAAE,aAAa;AAC7B,oBAAA,oBAAoB,EAAE,UAAU;AAChC,oBAAA,mBAAmB,EAAE,kBAAkB;AACvC,oBAAA,sBAAsB,EAAE,aAAa;AACrC,oBAAA,OAAO,EAAE,gCAAgC;AAC1C,iBAAA;aACF;;gBACO;YACR,MAAM,CAAC,IAAI,EAAE;YACb,MAAM,CAAC,IAAI,EAAE;;;AAIjB,IAAA,iBAAiB,CAAC,QAAgB,EAAA;QAChC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC;AAAE,YAAA,OAAO,SAAS;AACjE,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;;AAGrC,IAAA,uBAAuB,CAAC,OAAe,EAAA;QACrC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;AAAE,YAAA,OAAO,SAAS;AAC/D,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;;;IAInC,YAAY,CAAC,MAAc,EAAE,UAAyB,EAAA;QACpD,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,UAAU;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;AAC1H,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QACzF,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;;;AAI3D,IAAA,aAAa,CAAC,UAAyB,EAAA;QACrC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AACtE,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;;AAErD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI;AACF,YAAA,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAgC;;gBAC3F;YACR,MAAM,CAAC,IAAI,EAAE;;;IAIjB,gBAAgB,CACd,MAAgC,EAChC,GAA0B,EAC1B,UAAU,GAAG,IAAI,CAAC,cAAc,EAAA;AAEhC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE;AACnD,YAAA,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC;;AAEtE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI;YACF,OAAO,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;;gBAClF;YACR,MAAM,CAAC,IAAI,EAAE;;;IAIjB,cAAc,GAAA;QACZ,IAAI,CAAC,WAAW,EAAE;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACvC,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;QAChD,OAAO,IAAI,KAAK,CAAC,IAAI,CACnB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAClD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CACnD;;AAGH,IAAA,YAAY,CAAC,UAAkB,EAAA;QAC7B,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,yBAAyB,CAAC,EAAE,UAAU,CAAC;;AAGpG,IAAA,UAAU,CAAC,UAAkB,EAAE,OAAA,GAAuC,EAAE,EAAA;QACtE,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AAC9G,QAAA,IAAI,OAAO,CAAC,YAAY,KAAK;gBACvB,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC,IAAI,OAAO,CAAC,YAAY,GAAG,OAAS,CAAC,EAAE;AACnH,YAAA,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC;;AAE1E,QAAA,MAAM,MAAM,GAAG,eAAe,CAC5B,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,EACjC,UAAU,EACV,OAAO,CAAC,YAAY,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CACzG;AACD,QAAA,IAAI;YACF,OAAO;AACL,gBAAA,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;gBACnF,eAAe,EAAE,MAAM,CAAC,iBAAiB,EAAE,EAAE,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,EAAE;AACzF,gBAAA,cAAc,EAAE,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,kBAAkB,EAAE,MAAM,CAAC,mBAAmB,EAAE;aACzH;;gBACO;YACR,MAAM,CAAC,IAAI,EAAE;;;;IAKjB,iBAAiB,CAAC,MAAgC,EAAE,UAAkB,EAAA;QAClE,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB;AAC5F,eAAA,MAAM,CAAC,kBAAkB,GAAG,CAAC,IAAI,MAAM,CAAC,kBAAkB,GAAG,UAAU,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,aAAa,EAAE;AACtH,YAAA,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC;;AAE3F,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS;AAClC,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;AAC9B,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe;AACtC,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB;AACvC,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc;AACrC,QAAA,IAAI,EAAE,SAAS,YAAY,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,YAAY,YAAY;eAC/E,EAAE,OAAO,YAAY,WAAW,CAAC,IAAI,EAAE,OAAO,YAAY,WAAW;AACrE,eAAA,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG;AACvF,eAAA,OAAO,CAAC,MAAM,GAAG,OAAS,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG;eAClE,EAAE,OAAO,YAAY,YAAY,CAAC,IAAI,EAAE,OAAO,YAAY,WAAW;eACtE,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,QAAU,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/F,YAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC;;QAE9D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC9C,QAAA,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,SAAS;AAC7F,eAAA,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC5G,eAAA,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,SAAS,CAAC,EAAE;AAC9F,YAAA,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC;;QAE1E,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAC1C,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAC7C,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;YAC/C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;;AAEjD,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC;cACrB,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;cAC5C,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,aAAa,GAAG,CAAC;AACrB,QAAA,MAAM,MAAM,GAAG,CAAC,WAAyB,KAAkB;YACzD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC;AACpD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;gBAC9C,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACxB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,oBAAA,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAC5C,oBAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;AACtB,oBAAA,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;;AAE9C,gBAAA,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;;AAEhE,YAAA,OAAO,OAAO;AAChB,SAAC;AACD,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC;AACtC,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,UAAU,GAAG,CAAC,EAAE;AACrE,YAAA,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC;;QAEvF,IAAI,MAAM,CAAC,kBAAkB,GAAG,aAAa,GAAG,UAAU,EAAE;AAC1D,YAAA,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC;;AAE9F,QAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE;AAC3C,QAAA,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAC7E,QAAA,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC7E,QAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxD,QAAQ,CAAC,kBAAkB,EAAE;QAC7B,QAAQ,CAAC,qBAAqB,EAAE;AAChC,QAAA,MAAM,eAAe,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE;AAClD,QAAA,eAAe,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAClF,QAAA,IAAI,UAAU,CAAC,MAAM,EAAE;YAAE,eAAe,CAAC,kBAAkB,EAAE;YAAE,eAAe,CAAC,qBAAqB,EAAE;;AACtG,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;AACtC,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ;AACpD,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ;QAChC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,eAAe;AAC9C,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AACxD,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO;QAC3B,QAAQ,CAAC,OAAO,EAAE;QAClB,eAAe,CAAC,OAAO,EAAE;AACzB,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU;QAChC,OAAO;AACL,YAAA,mBAAmB,EAAE,UAAU;AAC/B,YAAA,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,GAAG,aAAa;AAC7D,YAAA,aAAa,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC;YACjC,SAAS;YACT,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B;;IAGL,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,QAAQ;YAAE;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC/B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE;AACtC,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE;AACtC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;IAGZ,WAAW,GAAA;QACjB,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC;;IAG/D,WAAW,GAAA;QACjB,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC;AACnC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ;AAC1C,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACzE,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;;QAE9D,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC5C,QAAA,MAAM,IAAI,GAAG,CAAC,MAAc,KAA+B;AACzD,YAAA,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;SACjG;AACD,QAAA,MAAM,KAAK,GAAkB;AAC3B,YAAA,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;SACvF;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;;AAE1D;AAED,SAAS,qBAAqB,CAAC,OAAiC,EAAE,IAAY,EAAA;;AAC1E,IAAA,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,oCAAK,OAAO,CAAC,IAAI,KAAK,kBAAkB,IAAI,OAAO,CAAC,IAAI,KAAK;AACtF,UAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;UAC7D,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACrE,IAAA,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,KAAK;AACrC,UAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,MACtD,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CACzG,EAAE,CAAC;AACJ,UAAE,OAAO,CAAC,IAAI,KAAK;AACjB,cAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK;AACnH,kBAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;kBACzE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;cACpH,CAAC;AACL,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,KAAK;AAClC,UAAE,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;UAC1G,CAAC;AACL,IAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,KAAK;UACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;UAC1H,CAAC;AACL,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK;UAC1B,CAAC,IAAI,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;AAChD,UAAE,OAAO,CAAC,IAAI,KAAK;cACf,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM;AAC7E,cAAE,OAAO,CAAC,IAAI,KAAK;AACjB,kBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM;AACpD,kBAAE,OAAO,CAAC,IAAI,KAAK;AACjB,sBAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM;sBACvD,OAAO,CAAC,IAAI,KAAK,iBAAiB,IAAI,OAAO,CAAC,IAAI,KAAK;0BACrD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa;AAC1C,0BAAE,OAAO,CAAC,IAAI,KAAK;AACjB,8BAAE;AACJ,8BAAE,OAAO,CAAC,IAAI,KAAK;AACjB,kCAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM;AACzD,kCAAE,OAAO,CAAC,IAAI,KAAK;AACjB,sCAAE;AACJ,sCAAE,OAAO,CAAC,IAAI,KAAK;0CACf,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM;AAC3E,0CAAE,OAAO,CAAC,IAAI,KAAK,wBAAwB,IAAI,OAAO,CAAC,IAAI,KAAK,oCAAoC,IAAI,OAAO,CAAC,IAAI,KAAK;AACvH,8CAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM;AACnE,8CAAE,OAAO,CAAC,IAAI,KAAK;AACjB,kDAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM;AACzD,kDAAE,OAAO,CAAC,IAAI,KAAK;AACjB,sDAAE,CAAC,GAAG,OAAO,CAAC;AACd,sDAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;IACpD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO;AACrF,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,eAAe,CAAC;AAC9D,IAAA,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,QAAQ,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA;AACnC,QAAA,SAAS,EAAE,YAAY,EAAE,SAAS,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO;KAC/E;AACD,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,KAAK;AAClC,UAAE,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW;AACxE,UAAE,OAAO,CAAC,IAAI,KAAK;AACjB,cAAE,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM;AAClG,cAAE,OAAO,CAAC,IAAI,KAAK;AACjB,kBAAE,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM;AAClG,kBAAE,OAAO,CAAC,IAAI,KAAK;sBACf,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO;AACpF,sBAAE,OAAO,CAAC,IAAI,KAAK;AACjB,0BAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,YAAY;AACzF,0BAAE,OAAO,CAAC,IAAI,KAAK;AACjB,8BAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM;AACxE,8BAAE,OAAO,CAAC,IAAI,KAAK;kCACf,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG;AACjE,wCAAA,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM;wCACrD,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU;AAC3D,qCAAA,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG;AAC9F,wCAAA,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM;wCACrD,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU;AAC3D,qCAAA,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM;AAC/B,kCAAE,OAAO,CAAC,IAAI,KAAK;AACjB,sCAAE;wCACE,KAAK,EAAE,OAAO,CAAC,KAAK;wCACpB,KAAK,EAAE,OAAO,CAAC,KAAK;wCACpB,SAAS,EAAE,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK;AAClE,8CAAE,EAAE,IAAI,EAAE,MAAM;AAChB,8CAAE;AACE,gDAAA,IAAI,EAAE,SAAS;AACf,gDAAA,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,eAAe;gDAC9C,aAAa,EAAE,MAAA,OAAO,CAAC,SAAS,CAAC,YAAY,mCAAI,KAAK;AACvD,6CAAA;AACN;AACL,sCAAE,OAAO,CAAC,IAAI,KAAK;0CACf,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO;AAClG,0CAAE,OAAO,CAAC,IAAI,KAAK;AACjB,8CAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK;AACtD,8CAAE,OAAO,CAAC,IAAI,KAAK;AACjB,kDAAE,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM;AAChG,kDAAE,OAAO,CAAC,IAAI,KAAK,wBAAwB,IAAI,OAAO,CAAC,IAAI,KAAK,oCAAoC,IAAI,OAAO,CAAC,IAAI,KAAK;AACvH,sEAAI,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,KAAM,OAAO,CAAC,IAAI,KAAK,oCAAoC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,KAAK,yCAAyC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KACzlB,OAAO,CAAC,IAAI,KAAK;sDACf,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU;AACtH,sDAAE,OAAO,CAAC,IAAI,KAAK;AACjB,0DAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;AAC1D,0DAAE,OAAO,CAAC,IAAI,KAAK;AACjB,8DAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM;AAC1B,8DAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;AAC1D,IAAA,OAAO,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CACjD,MAAA,CAAA,MAAA,CAAA,EAAA,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK;AACrB,cAAE;AACF,cAAE,OAAO,CAAC,IAAI,KAAK;AACjB,kBAAE;AACJ,kBAAE,OAAO,CAAC,IAAI,KAAK;AACjB,sBAAE;AACJ,sBAAE,OAAO,CAAC,IAAI,KAAK;AACjB,0BAAE;AACJ,0BAAE,OAAO,CAAC,IAAI,KAAK;AACjB,8BAAE;AACJ,8BAAE,OAAO,CAAC,IAAI,KAAK;AACjB,kCAAE;AACJ,kCAAE,OAAO,CAAC,IAAI,KAAK;AACjB,sCAAE;AACJ,sCAAE,OAAO,CAAC,IAAI,KAAK;AACjB,0CAAE;AACJ,0CAAE,OAAO,CAAC,IAAI,KAAK;AACjB,8CAAE;AACJ,8CAAE,OAAO,CAAC,IAAI,KAAK;AACjB,kDAAE;AACJ,kDAAE,OAAO,CAAC,IAAI,KAAK;AACjB,sDAAE;AACJ,sDAAE,OAAO,CAAC,IAAI,KAAK;AACjB,0DAAE;AACJ,0DAAE,OAAO,CAAC,IAAI,KAAK;AACjB,8DAAE;AACF,8DAAE,OAAO,CAAC,IAAI,EAClB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAA,EAAK,UAAU,CAAA,CACxC,CAAC;AACP;;AC7uBA,SAAS,YAAY,CAAC,MAAqB,EAAA;IACzC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC/C;AAEA;;;AAGG;AACU,MAAA,eAAgB,SAAQ,KAAK,CAAC,KAAK,CAAA;IAM9C,WAAY,CAAA,MAAqB,EAAE,SAA6C,EAAA;AAC9E,QAAA,KAAK,EAAE;QAHD,IAAQ,CAAA,QAAA,GAAG,KAAK;QAItB,IAAI,EAAE,MAAM,YAAY,aAAa,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE;AAC3D,YAAA,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC;;AAE7E,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,MAAO,EAAE;AACxD,YAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;;QAElE,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE;AAC/F,YAAA,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC;;AAE9E,QAAA,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,CAAA,EAAG,MAAM,CAAC,IAAI,CAAA,UAAA,EAAa,KAAK,CAAA,CAAE,CAAA,EAAA,CAAC;QACjG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,EAAE;AAC7D,YAAA,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC;;AAErF,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,aAAa,CACpC,MAAM,CAAC,OAAO,CAAC,QAAQ,EACvB,MAAM,CAAC,OAAO,CAAC,QAAQ,EACvB,SAAS,CAAC,MAAM,CACjB;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAG,EAAA,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,UAAU;QAC3D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;QACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI;QAC5C,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI;AAC9C,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;;IAGxB,IAAI,KAAK,GAAa,EAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IAErD,iBAAiB,CAAC,KAAa,EAAE,MAAqB,EAAA;QACpD,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;AAChE,YAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;;AAE3E,QAAA,IAAI,EAAE,MAAM,YAAY,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AAC/D,YAAA,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;;QAExE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI;AAC9C,QAAA,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;;AAGtC,IAAA,mBAAmB,CAAC,YAAgC,EAAA;AAClD,QAAA,IAAI,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS;AAAE,YAAA,OAAO,SAAS;AACnG,QAAA,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU;QAC7C,IAAI,aAAa,GAAG,CAAC,IAAI,aAAa,IAAI,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,SAAS;AACtE,QAAA,MAAM,aAAa,GAAG,YAAY,CAAC,SAAS;QAC5C,MAAM,MAAM,GAAG,aAAa,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC;QACrG,OAAO;AACL,YAAA,OAAO,EAAE,IAAI;YACb,aAAa;AACb,YAAA,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;YAC3C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM;SACP;;IAGH,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,QAAQ;YAAE;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;;IAGhB,WAAW,GAAA;QACjB,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;AACxE,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC;;AAE3F;SAEe,aAAa,CAC3B,MAAqB,EACrB,KAAa,EACb,OAAsB,EAAA;AAEtB,IAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,MAAO,EAAE;AAC5D,QAAA,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC;;AAE9E,IAAA,IAAI,EAAE,OAAO,YAAY,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AACpG,QAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC;;IAEpE,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,MAAM;QAC9E,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;KACrG,CAAC,CAAC,CAAC;AACN;SAEgB,kBAAkB,CAChC,MAAqB,EACrB,MAAiC,EACjC,OAAgD,EAAA;AAEhD,IAAA,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAO,EAAE;AACpG,QAAA,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC;;AAExG,IAAA,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,MAAM,YAAY,KAAK,CAAC,OAAO;WACzD,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC5D,QAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC;;IAEvE,MAAM,SAAS,GAA8B,EAAE;AAC/C,IAAA,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;AAC3C,QAAA,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE;YACpD,SAAS,CAAC,IAAI,CAAC;gBACb,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAa,UAAA,EAAA,MAAM,CAAI,CAAA,EAAA,GAAG,CAAE,CAAA;AAC9C,gBAAA,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,eAAe,CACzC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAC1C,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAC1C,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAC3C;AACF,aAAA,CAAC;;;AAGN,IAAA,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC;AAC/C;AAEM,SAAU,eAAe,CAC7B,MAAqB,EACrB,KAAa,EACb,MAAc,EACd,OAAA,GAAmF,EAAE,EAAA;;AAErF,IAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,MAAO,EAAE;AAC5D,QAAA,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC;;IAEhF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;IACrH,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC;AACrC,IAAA,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,EAAE,GAAG,CAAC;AAC/C,IAAA,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;AACzD,QAAA,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC;;IAEhF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO;IAC7E,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;AAC3D,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAI;;QAC3D,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,WAAW;AACjD,QAAA,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACzG,QAAA,IAAI,CAAA,EAAA,GAAA,OAAO,CAAC,eAAe,mCAAI,IAAI;AAAE,YAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/F,QAAA,OAAO,EAAE,EAAE,EAAE,CAAA,EAAG,MAAM,CAAC,IAAI,CAAA,UAAA,EAAa,KAAK,CAAA,CAAE,EAAE,MAAM,EAAE;AAC3D,KAAC,CAAC;AACF,IAAA,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC;AAC/C;;AClKA,SAASC,aAAW,CAClB,MAA2B,EAC3B,QAAkC,EAAA;;AAElC,IAAA,OAAO,MAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,GAAG,QAAQ,CAAC;AACpD;AAEA;;AAEG;AACa,SAAA,gCAAgC,CAC9C,UAAgC,EAChC,UAAgC,EAAA;IAEhC,OAAO;AACL,QAAA,WAAW,EAAE,YAAY;QACzB,UAAU;QACV,UAAU;AACV,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,gBAAgB,EAAE,IAAI;AACtB,QAAA,oBAAoB,EAAE,IAAI;KAC3B;AACH;AAEA;;AAEG;AACG,SAAU,cAAc,CAC5B,SAAuC,EAAA;IAEvC,OAAO;AACL,QAAA,WAAW,EAAEA,aAAW,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,QAAA,QAAQ,EAAEA,aAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,QAAA,KAAK,EAAEA,aAAW,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC/C;AACH;AAEA;;;AAGG;AACG,SAAUC,wBAAsB,CACpC,SAAqD,EAAA;AAErD,IAAA,IAAI,QAAQ,IAAI,SAAS,EAAE;QACzB,OAAO;AACL,YAAA,MAAM,EAAED,aAAW,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,YAAA,WAAW,EAAEA,aAAW,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,YAAA,QAAQ,EAAEA,aAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,YAAA,KAAK,EAAEA,aAAW,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAC/C;;IAGH,OAAO;QACL,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5B,QAAA,WAAW,EAAEA,aAAW,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,QAAA,QAAQ,EAAEA,aAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,QAAA,KAAK,EAAEA,aAAW,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC/C;AACH;;AC9BA,SAASE,WAAS,CAAI,OAAe,EAAA;AACnC,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM;AACjC;AAEA,SAASC,WAAS,CAAC,KAA0C,EAAA;AAC3D,IAAA,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/C;AAEA,SAASC,gBAAc,CAAC,KAA0C,EAAA;IAChE,OAAO;QACL,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,CAAC,EAAE,KAAK,CAAC,CAAC;KACX;AACH;AAEA,SAASC,oBAAkB,CACzB,SAA+B,EAAA;IAE/B,OAAO;AACL,QAAA,MAAM,EAAEF,WAAS,CAAC,SAAS,CAAC,MAAM,CAAC;AACnC,QAAA,WAAW,EAAEA,WAAS,CAAC,SAAS,CAAC,WAAW,CAAC;AAC7C,QAAA,QAAQ,EAAEA,WAAS,CAAC,SAAS,CAAC,QAAQ,CAAC;AACvC,QAAA,KAAK,EAAEA,WAAS,CAAC,SAAS,CAAC,KAAK,CAAC;KAClC;AACH;AAEA,SAAS,iBAAiB,CAAC,IAAc,EAAA;AACvC,IAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACK,IAAI,CACP,EAAA,EAAA,QAAQ,EAAEA,WAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAClC,MAAM,EAAEA,WAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAC9B,CAAA;AACJ;AAEA,SAAS,iBAAiB,CAAC,IAAc,EAAA;AACvC,IAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACK,IAAI,CACP,EAAA,EAAA,KAAK,EAAEA,WAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAC5B,GAAG,EAAEA,WAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EACxB,CAAA;AACJ;AAEA,SAAS,mBAAmB,CAAC,MAAkB,EAAA;IAC7C,OACK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,CACT,EAAA,EAAA,QAAQ,EAAEA,WAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EACpC,CAAA;AACJ;AAEA,SAAS,2BAA2B,CAClC,QAA4B,EAAA;IAE5B,OACK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,QAAQ,KACX,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,KACrC,uBAAuB,CAAC,MAAM,CAAC,CAChC,EACD,CAAA;AACJ;AAEA,SAAS,uBAAuB,CAC9B,MAAgC,EAAA;IAEhC,OACK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,CACT,EAAA,EAAA,QAAQ,EAAEA,WAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EACpC,CAAA;AACJ;AAEA,SAAS,4BAA4B,CACnC,GAAuC,EAAA;IAEvC,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,eAAe,EAAE,GAAG,CAAC,kBAAkB;QACvC,WAAW,EAAE,GAAG,CAAC,aAAa;QAC9B,cAAc,EAAE,GAAG,CAAC,gBAAgB;QACpC,UAAU,EAAE,GAAG,CAAC,YAAY;QAC5B,WAAW,EAAE,GAAG,CAAC,aAAa;QAC9B,aAAa,EAAE,GAAG,CAAC,eAAe;QAClC,qBAAqB,EAAE,GAAG,CAAC,yBAAyB;QACpD,eAAe,EAAE,GAAG,CAAC,iBAAiB;QACtC,YAAY,EAAE,GAAG,CAAC,cAAc;QAChC,UAAU,EAAE,GAAG,CAAC,YAAY;QAC5B,OAAO,EAAE,GAAG,CAAC,OAAO;KACrB;AACH;AAEA,SAAS,6BAA6B,CACpC,GAAqC,EAAA;IAErC,OAAO;AACL,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,gBAAgB,EAAE,KAAK;AACvB,QAAA,oBAAoB,EAAE,KAAK;QAC3B,eAAe,EAAE,GAAG,CAAC,kBAAkB;QACvC,WAAW,EAAE,GAAG,CAAC,aAAa;QAC9B,cAAc,EAAE,GAAG,CAAC,gBAAgB;QACpC,UAAU,EAAE,GAAG,CAAC,YAAY;QAC5B,WAAW,EAAE,GAAG,CAAC,aAAa;QAC9B,aAAa,EAAE,GAAG,CAAC,eAAe;QAClC,qBAAqB,EAAE,GAAG,CAAC,yBAAyB;QACpD,eAAe,EAAE,GAAG,CAAC,iBAAiB;QACtC,YAAY,EAAE,GAAG,CAAC,cAAc;QAChC,UAAU,EAAE,GAAG,CAAC,YAAY;QAC5B,OAAO,EAAE,GAAG,CAAC,OAAO;KACrB;AACH;AAEA,SAAS,eAAe,CAAC,OAAe,EAAA;AACtC,IAAA,MAAM,MAAM,GAAGD,WAAS,CAAqB,OAAO,CAAC;IACrD,OACK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,CACT,EAAA,EAAA,SAAS,EAAEG,oBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,EAC/C,CAAA;AACJ;AAEA,SAAS,gBAAgB,CAAC,OAA8B,EAAA;IACtD,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,SAAS;;IAGlB,OAAO,IAAI,CAAC,SAAS,CAChB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,KACV,cAAc,EAAE,OAAO,CAAC;AACtB,cAAED,gBAAc,CAAC,OAAO,CAAC,cAAc;AACvC,cAAE,SAAS,EACb,qBAAqB,EAAE,OAAO,CAAC;AAC7B,cAAEA,gBAAc,CAAC,OAAO,CAAC,qBAAqB;cAC5C,SAAS,EAAA,CAAA,CACb;AACJ;AAEA;;AAEG;MACU,cAAc,CAAA;AAIzB,IAAA,WAAA,CACE,QAA0B,EAC1B,MAA+B,GAAA,IAAIE,gBAAoB,EAAE,EAAA;AAEzD,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;;AAGtB;;AAEG;IACH,mBAAmB,GAAA;QACjB,OAAO,IAAI,CAAC,QAAQ;;AAGtB;;AAEG;IACH,qBAAqB,GAAA;AACnB,QAAA,OAAO,2BAA2B,CAChCJ,WAAS,CACP,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CACrE,CACF;;AAGH;;AAEG;AACH,IAAA,WAAW,CAAC,MAAkB,EAAA;QAC5B,OAAO,iBAAiB,CACtBA,WAAS,CACP,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE,MAAM,CAAC,CACnE,CACF;;AAGH;;AAEG;AACH,IAAA,WAAW,CAAC,MAAkB,EAAA;QAC5B,OAAO,iBAAiB,CACtBA,WAAS,CACP,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE,MAAM,CAAC,CACnE,CACF;;AAGH;;AAEG;AACH,IAAA,aAAa,CAAC,QAAoB,EAAA;QAChC,OAAO,mBAAmB,CACxBA,WAAS,CACP,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE,QAAQ,CAAC,CACvE,CACF;;AAGH;;AAEG;IACH,mBAAmB,GAAA;AACjB,QAAA,OAAO,6BAA6B,CAClCA,WAAS,CACP,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CACnE,CACF;;AAGH;;AAEG;AACH,IAAA,uBAAuB,CAAC,MAAkB,EAAA;QACxC,OAAO,4BAA4B,CACjCA,WAAS,CACP,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE,MAAM,CAAC,CAC/E,CACF;;AAGH;;AAEG;AACH,IAAA,uBAAuB,CAAC,MAAkB,EAAA;QACxC,OAAO,4BAA4B,CACjCA,WAAS,CACP,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE,MAAM,CAAC,CAC/E,CACF;;AAGH;;AAEG;AACH,IAAA,yBAAyB,CACvB,QAAoB,EAAA;QAEpB,OAAO,4BAA4B,CACjCA,WAAS,CACP,IAAI,CAAC,MAAM,CAAC,yBAAyB,CACnC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EACjC,QAAQ,CACT,CACF,CACF;;AAGH;;AAEG;AACH,IAAA,YAAY,CACV,MAAkB,EAClB,QAAgB,EAChB,OAA8B,EAAA;QAE9B,OAAO,eAAe,CACpB,IAAI,CAAC,MAAM,CAAC,YAAY,CACtB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EACjC,MAAM,EACN,QAAQ,EACR,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CACF;;AAGH;;AAEG;AACH,IAAA,WAAW,CACT,MAAkB,EAClB,QAAgB,EAChB,OAA8B,EAAA;QAE9B,OAAO,eAAe,CACpB,IAAI,CAAC,MAAM,CAAC,WAAW,CACrB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EACjC,MAAM,EACN,QAAQ,EACR,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CACF;;AAGH;;AAEG;IACH,OAAO,CACL,MAAkB,EAClB,WAAuB,EACvB,MAAc,EACd,SAAqB,EACrB,IAAY,EACZ,OAA8B,EAAA;AAE9B,QAAA,OAAO,eAAe,CACpB,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EACjC,MAAM,EACN,WAAW,EACX,MAAM,EACN,SAAS,EACT,IAAI,EACJ,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CACF;;AAGH;;AAEG;AACH,IAAA,QAAQ,CACN,MAAkB,EAClB,WAAoB,EACpB,OAA8B,EAAA;QAE9B,OAAO,eAAe,CACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EACjC,MAAM,EACN,WAAW,EACX,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CACF;;AAGH;;AAEG;AACH,IAAA,QAAQ,CACN,MAAkB,EAClB,WAAoB,EACpB,OAA8B,EAAA;QAE9B,OAAO,eAAe,CACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EACjC,MAAM,EACN,WAAW,EACX,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CACF;;AAGH;;AAEG;AACH,IAAA,UAAU,CACR,QAAoB,EACpB,WAAoB,EACpB,OAA8B,EAAA;QAE9B,OAAO,eAAe,CACpB,IAAI,CAAC,MAAM,CAAC,UAAU,CACpB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EACjC,QAAQ,EACR,WAAW,EACX,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CACF;;AAGH;;AAEG;AACH,IAAA,kBAAkB,CAChB,MAAkB,EAClB,CAAS,EACT,OAA8B,EAAA;QAE9B,OAAO,eAAe,CACpB,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAC5B,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EACjC,MAAM,EACN,CAAC,EACD,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CACF;;AAGH;;AAEG;AACH,IAAA,SAAS,CACP,MAAkB,EAClB,CAAS,EACT,OAA8B,EAAA;QAE9B,OAAO,eAAe,CACpB,IAAI,CAAC,MAAM,CAAC,SAAS,CACnB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EACjC,MAAM,EACN,CAAC,EACD,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CACF;;AAGH;;AAEG;AACH,IAAA,OAAO,CACL,MAAkB,EAClB,CAAS,EACT,OAA8B,EAAA;QAE9B,OAAO,eAAe,CACpB,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EACjC,MAAM,EACN,CAAC,EACD,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CACF;;AAGH;;AAEG;IACH,YAAY,CACV,QAAoB,EACpB,OAA8B,EAAA;QAE9B,OAAO,eAAe,CACpB,IAAI,CAAC,MAAM,CAAC,YAAY,CACtB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EACjC,QAAQ,EACR,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CACF;;AAEJ;AAED;;AAEG;AACG,SAAU,oBAAoB,CAClC,QAA0B,EAAA;AAE1B,IAAA,OAAO,IAAI,cAAc,CAAC,QAAQ,CAAC;AACrC;;ACzdA,SAAS,SAAS,CAAI,OAAe,EAAA;AACnC,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM;AACjC;AAEA,SAAS,SAAS,CAAC,KAA0C,EAAA;AAC3D,IAAA,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/C;AAEA,SAAS,cAAc,CAAC,KAA0C,EAAA;IAChE,OAAO;QACL,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,CAAC,EAAE,KAAK,CAAC,CAAC;KACX;AACH;AAEA,SAASF,aAAW,CAClB,MAA2B,EAC3B,QAAkC,EAAA;;AAElC,IAAA,OAAO,MAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,GAAG,QAAQ,CAAC;AACpD;AAEA,SAAS,kBAAkB,CACzB,SAA+B,EAAA;IAE/B,OAAO;AACL,QAAA,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;AACnC,QAAA,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC;AAC7C,QAAA,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC;AACvC,QAAA,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;KAClC;AACH;AAEA,SAAS,sBAAsB,CAC7B,SAAkE,EAAA;IAElE,OAAO;AACL,QAAA,MAAM,EAAEA,aAAW,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,QAAA,WAAW,EAAEA,aAAW,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,QAAA,QAAQ,EAAEA,aAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,QAAA,KAAK,EAAEA,aAAW,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC/C;AACH;AAEA,SAAS,2BAA2B,CAAC,SAA+B,EAAA;IAClE,OAAO;AACL,QAAA,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC;AACxC,QAAA,WAAW,EAAE,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC;AAClD,QAAA,QAAQ,EAAE,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC5C,QAAA,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC;KACvC;AACH;AAEA,SAASO,mBAAiB,CAAC,KAAc,EAAA;AACvC,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAClE;AAEA,SAAS,2BAA2B,CAAC,MAAsB,EAAA;AACzD,IAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,QAAA,OAAO,MAAM;;AAGf,IAAA,IAAI,OAAO,MAAM,CAAC,sBAAsB,KAAK,UAAU,EAAE;AACvD,QAAA,OAAO,MAAM,CAAC,sBAAsB,EAAE;;AAGxC,IAAA,IAAI,OAAO,MAAM,CAAC,gBAAgB,KAAK,UAAU,EAAE;AACjD,QAAA,OAAOA,mBAAiB,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;;AAGrD,IAAA,IAAI,OAAO,MAAM,CAAC,iBAAiB,KAAK,UAAU,EAAE;AAClD,QAAA,OAAO,MAAM,CAAC,iBAAiB,EAAE;;AAGnC,IAAA,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE;AAC5C,QAAA,OAAOA,mBAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;;AAGhD,IAAA,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE;AACxC,QAAA,OAAOA,mBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;;AAG5C,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC/B;AAEA;;AAEG;MACU,gBAAgB,CAAA;AAG3B,IAAA,WAAA,CAAY,QAA4B,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;AAG1B;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;;AAGzB;;AAEG;IACH,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;;AAG1C;;AAEG;IACH,sBAAsB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE;;AAG/C;;AAEG;IACH,qBAAqB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;;AAG9C;;AAEG;IACH,iBAAiB,GAAA;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;;AAGtD;;AAEG;IACH,sBAAsB,GAAA;QACpB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC;;AAG3D;;AAEG;IACH,4BAA4B,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,4BAA4B,EAAE;;AAGrD;;AAEG;IACH,wBAAwB,GAAA;QACtB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE,CAAC;;AAG7D;;AAEG;IACH,6BAA6B,GAAA;QAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,6BAA6B,EAAE,CAAC;;AAGlE;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,OAAO,kBAAkB,CACvB,SAAS,CAAuB,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CACxE;;AAGH;;AAEG;AACH,IAAA,YAAY,CAAC,SAA+B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAClC,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAC,CACvD;;AAGH;;AAEG;AACH,IAAA,YAAY,CAAC,WAAoB,EAAE,QAAiB,EAAE,KAAc,EAAA;QAClE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC;;AAG1D;;AAEG;AACH,IAAA,cAAc,CAAC,WAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC;;AAG3C;;AAEG;AACH,IAAA,WAAW,CAAC,QAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC;;AAGrC;;AAEG;AACH,IAAA,QAAQ,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;;AAG/B;;AAEG;AACH,IAAA,SAAS,CAAC,MAAe,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;;;IAIjC,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,QAAQ;;AAEvB;AAED;;;AAGG;AACa,SAAA,sBAAsB,CACpC,MAAsB,EACtB,OAAuC,EAAA;;AAEvC,IAAA,MAAM,EAAE,GAAG,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,EAAE,mCAAI,CAAY,SAAA,EAAA,IAAI,CAAC,GAAG,EAAE,EAAE;AAClD,IAAA,MAAM,mBAAmB,GAAG,2BAA2B,CAAC,MAAM,CAAC;AAC/D,IAAA,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACnC,IAAI,kBAAkB,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAChD;IAED,IAAI,OAAO,aAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,SAAS,EAAE;QACtB,QAAQ,CAAC,YAAY,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;;AAGlE,IAAA,OAAO,QAAQ;AACjB;AAEA;AACM,SAAU,qBAAqB,CAAC,UAAkB,EAAA;AACtD,IAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE;AAC1E,QAAA,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC;;IAEjF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAA4B;AAC9D,IAAA,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,gBAAgB,IAAI,IAAI,EAAE;AACzE,QAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC;;AAE5E,IAAA,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;AAC1F,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,OAAS,EAAE;AACrD,YAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAA,MAAA,CAAQ,CAAC;;;IAGpE,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,sBAAsB,EAAE,UAAU,CAAC;AAC3E,IAAA,IAAI;AACF,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,sBAAsB,EAAE;AACnD,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG;AACrE,eAAA,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AACrD,YAAA,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC;;AAEvG,QAAA,OAAO,SAAS;;YACR;QACR,QAAQ,CAAC,IAAI,EAAE;;AAEnB;;AC7MA;;AAEG;AACU,MAAA,IAAK,SAAQ,KAAK,CAAC,IAAI,CAAA;IAgBlC,IAAI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;QAC1B,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,iBAAiB,EAAE;YACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;AAEhC,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,YAAY,YAAY,EAAE;YACjE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;;AAI1C,IAAA,WAAA,CAAY,OAAsB,EAAA;;AAChC,QAAA,KAAK,EAAE;AAzBT,QAAA,IAAA,CAAA,OAAO,GAAiB;YACtB,KAAK,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;YAC7B,GAAG,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;AAC3B,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,KAAK,EAAE,EAAE;YACT,WAAW,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjC,QAAQ,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SAC5B;QAGO,IAAO,CAAA,OAAA,GAAiB,IAAI;AAelC,QAAA,IAAI,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,OAAO,EAAE;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAEjC,IAAI,CAAC,OAAO,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,OAAO,CAAA,EAAK,OAAO,CAAE;QAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QAE7B,IAAI,CAAC,SAAS,CAAC;YACb,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE;YACjC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE;AAC7B,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC/B,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC1B,SAAA,CAAC;QACF,IAAI,CAAC,YAAY,CAAC;YAChB,WAAW,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;YAC9C,QAAQ,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;YACxC,KAAK,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;AACnC,SAAA,CAAC;;IAGJ,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;;;AAIvD,IAAA,SAAS,CAAC,OAAyB,EAAA;QACjC,IAAI,CAAC,eAAe,EAAE;QAEtB,MAAM,WAAW,mCAAQ,IAAI,CAAC,OAAO,CAAK,EAAA,OAAO,CAAE;QACnD,MAAM,eAAe,GAAG,OAAO,IAAI,OAAO,IAAI,KAAK,IAAI,OAAO;AAC9D,QAAA,MAAM,aAAa,GACjB,OAAO,IAAI,OAAO;AAClB,YAAA,UAAU,IAAI,OAAO;YACrB,OAAO,IAAI,OAAO;AAEpB,QAAA,IAAI,CAAC,OAAO,GAAG,WAAW;QAE1B,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAClB,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,EACzB,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CACxB;YACD,IAAI,CAAC,gBAAgB,EAAE;YACvB;;QAGF,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,iBAAiB,EAAE;;;IAI5B,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,OAAO;;IAGrB,SAAS,GAAA;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACrC,QAAA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;;AAGlD,IAAA,SAAS,CAAC,MAAe,EAAA;QACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,gBAAgB,EAAE;;IAGzB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;QACxB,IAAI,CAAC,gBAAgB,EAAE;;AAGzB,IAAA,YAAY,CAAC,SAA8B,EAAA;;AACzC,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW;AACrF,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC5E,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK;AAEnE,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CACrB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACzD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACtD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACpD;QACD,IAAI,CAAC,gBAAgB,EAAE;;AAGzB,IAAA,YAAY,CAAC,WAAoB,EAAE,QAAiB,EAAE,KAAc,EAAA;QAClE,IAAI,CAAC,YAAY,CAAC;YAChB,WAAW;YACX,QAAQ;YACR,KAAK;AACN,SAAA,CAAC;;AAGJ,IAAA,cAAc,CAAC,WAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;;AAGpC,IAAA,WAAW,CAAC,QAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;;AAGjC,IAAA,QAAQ,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;;IAG9B,YAAY,GAAA;AACV,QAAA,OAAO,cAAc,CAAC;AACpB,YAAA,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;AACrC,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC/B,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC1B,SAAA,CAAC;;IAGJ,mBAAmB,GAAA;AACjB,QAAA,OAAO,gCAAgC,CAAC,MAAM,EAAE,SAAS,CAAC;;IAG5D,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI;;AAGb,IAAA,UAAU,CAAC,EAAA,GAAa,IAAI,CAAC,IAAI,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;;QAEjE,OAAO,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE;YACnE,EAAE;AACF,YAAA,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;AAC/B,SAAA,CAAC;;AAGJ;;;AAGG;IACH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;IAGjB,mBAAmB,GAAA;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC1C,YAAA,OAAO,EAAE;;QAGX,MAAM,SAAS,GAAG,EAAE;AACpB,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE;YACvD,SAAS,CAAC,IAAI,CACZ,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EACrB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EACrB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CACtB;;AAGH,QAAA,OAAO,SAAS;;AAGV,IAAA,iBAAiB,CAAC,UAAqB,EAAA;;AAC7C,QAAA,MAAM,SAAS,GAAG,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,MAAA,GAAV,UAAU,GAAI,IAAI,CAAC,mBAAmB,EAAE;AAE1D,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CACtB,IAAI,YAAY,EAAE,EAClB,IAAI,YAAY,CAAC;AACf,oBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,oBAAA,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC7B,oBAAA,UAAU,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC;AACrE,iBAAA,CAAC,CACH;AACD,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;;YAGxB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC;AAC5C,YAAA,IAAI,CAAC,OAAO,CAAC,QAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACpE,YAAA,IAAI,CAAC,OAAO,CAAC,QAAyB,CAAC,SAAS,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC;AAC1E,YAAA,IAAI,CAAC,OAAO,CAAC,QAAyB,CAAC,UAAU,CAAC,GAAG,CACpD,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,WAAW,CACnB;AACD,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI;;AACtB,aAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK;;QAG9B,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,iBAAiB,EAAE;AACpD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;;;IAI1C,gBAAgB,GAAA;AACtB,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE9D,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AACxD,QAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;QAErC,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,iBAAiB,EAAE;AACpD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;aACtC;YACL,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAChC,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;;iBAClD;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;AAGzB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;;AAG5E,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;;IAGpC,MAAM,GAAA;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC9C,QAAA,OAAO,OAAO;;AAGhB,IAAA,SAAS,CACP,QAAgB,EAChB,wBAAgC,IAAI,EACpC,QAAiB,IAAI,EAAA;;AAErB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAEnB;AACD,QAAA,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU,EAAE;AACtD,YAAA,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E;;AAGH,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,CAC7C,QAAQ,EACR,qBAAqB,EACrB,KAAK,CACN;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAuB;QAC3D,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5E,YAAA,oBAAoB,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,sBAAsB,mCAAI,EAAE;AACzD,YAAA,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;SACpC;;IAGK,wBAAwB,CAC9B,QAA8B,EAC9B,SAAmB,EAAA;QAEnB,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;AAClD,QAAA,IACE,EAAE,QAAQ,YAAY,KAAK,CAAC,eAAe,CAAC;YAC5C,QAAQ,CAAC,QAAQ,KAAK,CAAC;YACvB,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EACvC;AACA,YAAA,QAAQ,CAAC,YAAY,CACnB,UAAU,EACV,IAAI,KAAK,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC,CAAC,CAC/C;YACD;;AAGF,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAqB;AAC5C,QAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACpB,QAAA,QAAQ,CAAC,WAAW,GAAG,IAAI;;AAE9B;;AC3SD;;AAEG;AACU,MAAA,QAAS,SAAQ,KAAK,CAAC,IAAI,CAAA;IAmBtC,IAAI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;QAC1B,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,iBAAiB,EAAE;YACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;AAEhC,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,YAAY,YAAY,EAAE;YACjE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;;AAI1C,IAAA,WAAA,CAAY,OAA0B,EAAA;;AACpC,QAAA,KAAK,EAAE;AA5BT,QAAA,IAAA,CAAA,OAAO,GAAqB;AAC1B,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,KAAK,EAAE,EAAE;YACT,WAAW,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjC,QAAQ,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SAC5B;QAED,IAAQ,CAAA,QAAA,GAAY,KAAK;QAGjB,IAAO,CAAA,OAAA,GAAiB,IAAI;AAEpC,QAAA,IAAA,CAAA,oBAAoB,GAAkB,IAAI,KAAK,CAAC,OAAO,EAAE;AAevD,QAAA,IAAI,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,OAAO,EAAE;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAEzC,IAAI,CAAC,OAAO,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,OAAO,CAAA,EAAK,OAAO,CAAE;QAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QAE7B,IAAI,CAAC,SAAS,CAAC;AACb,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;AACzD,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC/B,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC1B,SAAA,CAAC;QACF,IAAI,CAAC,YAAY,CAAC;YAChB,WAAW,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;YAC9C,QAAQ,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;YACxC,KAAK,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;AACnC,SAAA,CAAC;;IAGJ,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;;;AAI3D,IAAA,SAAS,CAAC,OAA6B,EAAA;QACrC,IAAI,CAAC,eAAe,EAAE;QAEtB,MAAM,WAAW,mCAAQ,IAAI,CAAC,OAAO,CAAK,EAAA,OAAO,CAAE;AACnD,QAAA,MAAM,eAAe,GAAG,QAAQ,IAAI,OAAO;AAC3C,QAAA,MAAM,aAAa,GACjB,OAAO,IAAI,OAAO;AAClB,YAAA,UAAU,IAAI,OAAO;YACrB,OAAO,IAAI,OAAO;AAEpB,QAAA,IAAI,CAAC,OAAO,GAAG,WAAW;QAE1B,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,gBAAgB,EAAE;YACvB;;QAGF,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,iBAAiB,EAAE;;;IAI5B,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,OAAO;;IAGrB,SAAS,GAAA;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;AACzC,QAAA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;;AAGlD,IAAA,SAAS,CAAC,MAAe,EAAA;QACvB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,CAAC,gBAAgB,EAAE;;IAGzB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;QAC5B,IAAI,CAAC,gBAAgB,EAAE;;AAGzB,IAAA,YAAY,CAAC,SAAkC,EAAA;;AAC7C,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW;AACrF,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC5E,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK;AAEnE,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CACzB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACzD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACtD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACpD;QACD,IAAI,CAAC,gBAAgB,EAAE;;AAGzB,IAAA,YAAY,CAAC,WAAoB,EAAE,QAAiB,EAAE,KAAc,EAAA;QAClE,IAAI,CAAC,YAAY,CAAC;YAChB,WAAW;YACX,QAAQ;YACR,KAAK;AACN,SAAA,CAAC;;AAGJ,IAAA,cAAc,CAAC,WAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;;AAGpC,IAAA,WAAW,CAAC,QAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;;AAGjC,IAAA,QAAQ,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;;IAG9B,YAAY,GAAA;AACV,QAAA,OAAO,cAAc,CAAC;AACpB,YAAA,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;AACrC,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC/B,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC1B,SAAA,CAAC;;IAGJ,mBAAmB,GAAA;AACjB,QAAA,OAAO,gCAAgC,CAAC,UAAU,EAAE,SAAS,CAAC;;IAGhE,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI;;AAGb,IAAA,UAAU,CAAC,EAAA,GAAa,IAAI,CAAC,IAAI,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;;QAEjE,OAAO,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,yBAAyB,EAAE,EAAE;YACvE,EAAE;AACF,YAAA,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;AAC/B,SAAA,CAAC;;AAGJ,IAAA,QAAQ,CAAC,KAAc,EAAA;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;AAEpB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO;AAC/B,QAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QAElB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE;QACpC,IAAI,CAAC,SAAS,CAAC;AACb,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;AACxE,SAAA,CAAC;;AAGJ;;;AAGG;IACH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;IAGjB,mBAAmB,GAAA;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC1C,YAAA,OAAO,EAAE;;QAGX,MAAM,SAAS,GAAG,EAAE;AACpB,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE;YACvD,SAAS,CAAC,IAAI,CACZ,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EACrB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EACrB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CACtB;;AAGH,QAAA,OAAO,SAAS;;AAGV,IAAA,iBAAiB,CAAC,UAAqB,EAAA;;AAC7C,QAAA,MAAM,SAAS,GAAG,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,MAAA,GAAV,UAAU,GAAI,IAAI,CAAC,mBAAmB,EAAE;AAE1D,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CACtB,IAAI,YAAY,EAAE,EAClB,IAAI,YAAY,CAAC;AACf,oBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,oBAAA,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC7B,oBAAA,UAAU,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC;AACrE,iBAAA,CAAC,CACH;AACD,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;;YAGxB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC;AAC5C,YAAA,IAAI,CAAC,OAAO,CAAC,QAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACpE,YAAA,IAAI,CAAC,OAAO,CAAC,QAAyB,CAAC,SAAS,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC;AAC1E,YAAA,IAAI,CAAC,OAAO,CAAC,QAAyB,CAAC,UAAU,CAAC,GAAG,CACpD,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,WAAW,CACnB;AACD,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI;;AACtB,aAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK;;QAG9B,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,iBAAiB,EAAE;AACpD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;;;IAI1C,gBAAgB,GAAA;AACtB,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QAElE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AACxD,QAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;QAErC,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,iBAAiB,EAAE;AACpD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;aACtC;YACL,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAChC,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;;iBAClD;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;AAGzB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;;AAG5E,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;QAElC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;;AAG3C,IAAA,SAAS,CACP,QAAgB,EAChB,wBAAgC,IAAI,EACpC,QAAiB,IAAI,EAAA;;AAErB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAEnB;AACD,QAAA,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU,EAAE;AACtD,YAAA,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF;;AAGH,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,CAC7C,QAAQ,EACR,qBAAqB,EACrB,KAAK,CACN;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAuB;QAC3D,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5E,YAAA,oBAAoB,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,sBAAsB,mCAAI,EAAE;AACzD,YAAA,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;SACpC;;IAGK,wBAAwB,CAC9B,QAA8B,EAC9B,SAAmB,EAAA;QAEnB,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;AAClD,QAAA,IACE,EAAE,QAAQ,YAAY,KAAK,CAAC,eAAe,CAAC;YAC5C,QAAQ,CAAC,QAAQ,KAAK,CAAC;YACvB,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EACvC;AACA,YAAA,QAAQ,CAAC,YAAY,CACnB,UAAU,EACV,IAAI,KAAK,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC,CAAC,CAC/C;YACD;;AAGF,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAqB;AAC5C,QAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACpB,QAAA,QAAQ,CAAC,WAAW,GAAG,IAAI;;AAE9B;;AC9VY,MAAA,aAAc,SAAQ,KAAK,CAAC,KAAK,CAAA;AAO5C,IAAA,IAAI,KAAK,GAAA,EAAkB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC3D,IAAI,KAAK,CAAC,KAAgC,EAAA;QACxC,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;;AAGvC,IAAA,WAAA,CAAY,OAA6B,EAAA;;AACvC,QAAA,KAAK,EAAE;AAXD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC;QACjC,IAAQ,CAAA,QAAA,GAAG,KAAK;QAWtB,IAAI,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,OAAO,EAAE;AACrC,QAAA,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA;AAC7B,YAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SAC7D;AACD,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,WAAW;AAC5E,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QACxH,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,QAAQ,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE;AACvH,QAAA,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;AAC/D,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,QAAQ,EAAE,CAAC,CAAC;QACjI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACnC,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI;AAAE,YAAA,IAAI,CAAC,YAAY,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,QAAQ,CAAC,YAAY,CAAC;;QACpE,OAAO,KAAK,EAAE;YAAE,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,MAAM,KAAK;;;IAG7C,iBAAiB,GAAA;QACf,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;;IAG1C,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAA4B;;AAG9D,IAAA,iBAAiB,CAAC,OAA6B,EAAA;;QACvD,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA;AAC7B,YAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SAC7D;AACD,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,WAAW;AAC5E,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QACxH,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,QAAQ,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE;AACvH,QAAA,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;AAC9D,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI;AACF,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,QAAQ,CAAC,YAAY,CAAC;AACjF,YAAA,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;AAAE,gBAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;YAC3D,QAAQ,CAAC,IAAI,EAAE;AACf,YAAA,OAAO,UAAU;;QACjB,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;YACtB,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,MAAM,KAAK;;;AAIf,IAAA,gBAAgB,CAAC,OAAe,EAAA;QAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;AAAE,YAAA,OAAO,SAAS;AAC/D,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;;AAGnC,IAAA,YAAY,CAAC,UAAkB,EAAA;QAC7B,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AAC9G,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,GAAG,yBAAyB,CAAC;AAC7E,QAAA,IAAI;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACvC,YAAA,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACpE,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,iBAAiB,EAAE;YAC5C,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC;YACjD,IAAI,aAAa,GAAG,CAAC;AACrB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;gBAC5C,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACxB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,oBAAA,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAAE,oBAAA,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;AACjE,oBAAA,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;;AAE7C,gBAAA,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;;AAEhE,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,UAAU,GAAG,CAAC;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC;AAC5J,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,EAAE;AACzC,YAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE;AAC3C,YAAA,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACvE,QAAQ,CAAC,kBAAkB,EAAE;YAAE,QAAQ,CAAC,qBAAqB,EAAE;AAC/D,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ;AACnC,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACtF,YAAA,IAAI,CAAC,YAAY,GAAG,OAAO;YAAE,QAAQ,CAAC,OAAO,EAAE;YAC/C,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,CAAC,mBAAmB,EAAE,GAAG,aAAa,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE;;gBAC/J;YAAE,MAAM,CAAC,IAAI,EAAE;;;IAG3B,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,QAAQ;YAAE;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAAE,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAAE,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;AAExE,IAAA,WAAW,GAAW,EAAA,IAAI,IAAI,CAAC,QAAQ;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACrG;AAED,SAAS,YAAY,CACnB,OAA6B,EAC7B,EAAU,EACV,KAAoB,EACpB,QAA0B,EAAA;IAE1B,OAAO,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,iBACjD,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,KAAK,GAAG,KAAK,GAAG,gBAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAC5E,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,EAAA,GAC5D,OAAO,CAAC,IAAI,KAAK;AACnB,UAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM;AAC1B,UAAE,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,EAAC,CAC7E,CAAC;AACL;;ACnHA;AACM,MAAO,GAAI,SAAQ,aAAa,CAAA;AAGpC,IAAA,WAAA,CAAY,UAAuB,EAAE,EAAA;AACnC,QAAA,MAAM,UAAU,GAAGC,kBAAgB,CAAC,OAAO,CAAC;AAC5C,QAAA,KAAK,CAAC;AACJ,YAAA,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,UAAU,CAAC,IAAI;AACrB,YAAA,KAAK,EAAEC,YAAU,CAAC,UAAU,CAAC,MAAM,CAAC;YACpC,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,KAAK,EAAE,UAAU,CAAC,KAAK;AACxB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU;;IAG3B,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;;IAGpC,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,OAAO;;AAGrB,IAAA,SAAS,CAAC,MAAuB,EAAA;AAC/B,QAAA,MAAM,IAAI,GAAGD,kBAAgB,CAAM,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,OAAO,CAAA,EAAK,MAAM,CAAA,EAAA,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAG;AAC9E,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACxC,YAAA,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,EAAEC,YAAU,CAAC,IAAI,CAAC,MAAM,CAAC;YAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,OAAO,UAAU;;IAGnB,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;;AAG3B,IAAA,YAAY,CAAC,UAAkB,EAAA;AAC7B,QAAA,OAAO,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC;;AAExC;AAED,SAASD,kBAAgB,CAAC,OAAoB,EAAA;;IAC5C,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,QAAA,MAAM,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9C,QAAA,MAAM,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,MAAM,mCAAI,CAAC;AAC3B,QAAA,UAAU,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,mCAAI,CAAC;QACnC,UAAU,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,mCAAI,IAAI,CAAC,EAAE,GAAG,CAAC;AAC7C,QAAA,UAAU,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,mCAAI,IAAI;QACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC1B,QAAA,KAAK,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,mCAAI,QAAQ;KACjC;AACH;AAEA,SAASC,YAAU,CAAC,MAAe,EAAA;IACjC,OAAO;AACL,QAAA,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACtC,QAAA,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACZ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACb,QAAA,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACb;AACH;;AChCA;;AAEG;AACU,MAAA,SAAU,SAAQ,KAAK,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;;IAiCvC,IAAI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;QAC1B,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,iBAAiB,EAAE;YACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;AAEhC,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,YAAY,YAAY,EAAE;YACjE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;;;;;;;;;AAY1C,IAAA,WAAA,CAAY,OAA2B,EAAA;;AACrC,QAAA,KAAK,EAAE;AAlDT,QAAA,IAAA,CAAA,OAAO,GAAsB;YAC3B,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5B,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjC,QAAQ,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SAC5B;QAGO,IAAO,CAAA,OAAA,GAAiB,IAAI;AAwClC,QAAA,IAAI,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,OAAO,EAAE;QACtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QAEnD,IAAI,CAAC,OAAO,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,OAAO,CAAA,EAAK,OAAO,CAAE;QAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QAE7B,IAAI,CAAC,SAAS,CAAC;YACb,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;AACnC,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;AAC7B,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC/B,YAAA,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;AAClC,SAAA,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC;YAChB,WAAW,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;YAC9C,QAAQ,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;YACxC,KAAK,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;AACnC,SAAA,CAAC;;IAGJ,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;;;AAI5D,IAAA,SAAS,CAAC,OAA8B,EAAA;QACtC,IAAI,CAAC,eAAe,EAAE;QAEtB,MAAM,WAAW,mCAAQ,IAAI,CAAC,OAAO,CAAK,EAAA,OAAO,CAAE;AACnD,QAAA,MAAM,eAAe,GACnB,QAAQ,IAAI,OAAO;AACnB,YAAA,OAAO,IAAI,OAAO;YAClB,SAAS,IAAI,OAAO;AACtB,QAAA,MAAM,aAAa,GACjB,OAAO,IAAI,OAAO;AAClB,YAAA,UAAU,IAAI,OAAO;YACrB,WAAW,IAAI,OAAO;AAExB,QAAA,IAAI,CAAC,OAAO,GAAG,WAAW;QAE1B,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAC/B,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,EAC1B,WAAW,CAAC,KAAK,EACjB,WAAW,CAAC,OAAO,CACpB;YACD,IAAI,CAAC,gBAAgB,EAAE;YACvB;;QAGF,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,iBAAiB,EAAE;;;IAI5B,SAAS,GAAA;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE;AAClD,QAAA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;;AAGlD,IAAA,YAAY,CAAC,SAAmC,EAAA;;AAC9C,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW;AACrF,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC5E,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK;AAEnE,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAClC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACzD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACtD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACpD;QACD,IAAI,CAAC,gBAAgB,EAAE;;AAGzB,IAAA,YAAY,CAAC,WAAoB,EAAE,QAAiB,EAAE,KAAc,EAAA;QAClE,IAAI,CAAC,YAAY,CAAC;YAChB,WAAW;YACX,QAAQ;YACR,KAAK;AACN,SAAA,CAAC;;AAGJ,IAAA,cAAc,CAAC,WAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;;AAGpC,IAAA,WAAW,CAAC,QAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;;AAGjC,IAAA,QAAQ,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;;IAG9B,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,OAAO;;IAGrB,YAAY,GAAA;AACV,QAAA,OAAO,cAAc,CAAC;AACpB,YAAA,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;AACrC,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC/B,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC1B,SAAA,CAAC;;IAGJ,mBAAmB,GAAA;AACjB,QAAA,OAAO,gCAAgC,CAAC,WAAW,EAAE,SAAS,CAAC;;IAGjE,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI;;AAGb,IAAA,UAAU,CAAC,EAAA,GAAa,IAAI,CAAC,IAAI,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;;QAEjE,OAAO,sBAAsB,CAC3B,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,EAClD;YACE,EAAE;AACF,YAAA,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;AAC/B,SAAA,CACF;;IAGK,mBAAmB,GAAA;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC1C,YAAA,OAAO,EAAE;;QAGX,MAAM,SAAS,GAAG,EAAE;AACpB,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE;YACvD,SAAS,CAAC,IAAI,CACZ,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EACrB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EACrB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CACtB;;AAGH,QAAA,OAAO,SAAS;;AAGV,IAAA,iBAAiB,CAAC,UAAqB,EAAA;;AAC7C,QAAA,MAAM,SAAS,GAAG,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,MAAA,GAAV,UAAU,GAAI,IAAI,CAAC,mBAAmB,EAAE;AAE1D,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CACtB,IAAI,YAAY,EAAE,EAClB,IAAI,YAAY,CAAC;AACf,oBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,oBAAA,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;AACjC,oBAAA,UAAU,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC;AACrE,iBAAA,CAAC,CACH;AACD,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;;YAGxB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC;AAC5C,YAAA,IAAI,CAAC,OAAO,CAAC,QAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACpE,YAAA,IAAI,CAAC,OAAO,CAAC,QAAyB,CAAC,SAAS,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC;AAC9E,YAAA,IAAI,CAAC,OAAO,CAAC,QAAyB,CAAC,UAAU,CAAC,GAAG,CACpD,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,WAAW,CACnB;AACD,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI;;AACtB,aAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK;;QAG9B,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,iBAAiB,EAAE;AACpD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;;;IAI1C,gBAAgB,GAAA;AACtB,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;QAE3E,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AACxD,QAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;QAErC,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,iBAAiB,EAAE;AACpD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;aACtC;YACL,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAChC,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;;iBAClD;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;AAGzB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;;AAG5E,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;;IAGpC,OAAO,GAAA;QACL,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE;QAC7D,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;;AAE7D,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;AAG7B,IAAA,SAAS,CACP,QAAgB,EAChB,wBAAgC,IAAI,EACpC,QAAiB,IAAI,EAAA;;AAErB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAEnB;AACD,QAAA,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU,EAAE;AACtD,YAAA,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF;;AAGH,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,CAC7C,QAAQ,EACR,qBAAqB,EACrB,KAAK,CACN;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAuB;QAE3D,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5E,YAAA,oBAAoB,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,sBAAsB,mCAAI,EAAE;AACzD,YAAA,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;SACpC;;IAGH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;IAGjB,wBAAwB,CAC9B,QAA8B,EAC9B,SAAmB,EAAA;QAEnB,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;AAClD,QAAA,IACE,EAAE,QAAQ,YAAY,KAAK,CAAC,eAAe,CAAC;YAC5C,QAAQ,CAAC,QAAQ,KAAK,CAAC;YACvB,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EACvC;AACA,YAAA,QAAQ,CAAC,YAAY,CACnB,UAAU,EACV,IAAI,KAAK,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC,CAAC,CAC/C;YACD;;AAGF,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAqB;AAC5C,QAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACpB,QAAA,QAAQ,CAAC,WAAW,GAAG,IAAI;;AAE9B;;ACvUD;;AAEG;AACU,MAAA,KAAM,SAAQ,KAAK,CAAC,IAAI,CAAA;IAYnC,IAAI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;QAC1B,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,iBAAiB,EAAE;YACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;;AAIlC,IAAA,WAAA,CAAY,OAAuB,EAAA;;AACjC,QAAA,KAAK,EAAE;AAlBT,QAAA,IAAA,CAAA,OAAO,GAAkB;AACvB,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjC,QAAQ,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SAC5B;AAcC,QAAA,IAAI,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,OAAO,EAAE;QACtC,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAEnC,IAAI,CAAC,OAAO,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,OAAO,CAAA,EAAK,OAAO,CAAE;QAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QAE7B,IAAI,CAAC,SAAS,CAAC;AACb,YAAA,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;AACvE,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC1B,SAAA,CAAC;QACF,IAAI,CAAC,YAAY,CAAC;YAChB,WAAW,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;YAC9C,QAAQ,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;YACxC,KAAK,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;AACnC,SAAA,CAAC;;AAGJ,IAAA,SAAS,CAAC,OAA0B,EAAA;QAClC,MAAM,WAAW,mCAAQ,IAAI,CAAC,OAAO,CAAK,EAAA,OAAO,CAAE;AACnD,QAAA,MAAM,eAAe,GAAG,eAAe,IAAI,OAAO;AAClD,QAAA,MAAM,YAAY,GAAG,OAAO,IAAI,OAAO;AAEvC,QAAA,IAAI,CAAC,OAAO,GAAG,WAAW;QAE1B,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,KAAK,CAAC,UAAU,CACnB,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CACxD;YACD,IAAI,CAAC,gBAAgB,EAAE;YACvB;;QAGF,IAAI,YAAY,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,iBAAiB,EAAE;AACpE,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;;IAI/C,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,OAAO;;IAGrB,SAAS,GAAA;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACtC,QAAA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;;AAGlD,IAAA,SAAS,CAAC,MAAe,EAAA;QACvB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACrC,IAAI,CAAC,gBAAgB,EAAE;;IAGzB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;QACzB,IAAI,CAAC,gBAAgB,EAAE;;AAGzB,IAAA,YAAY,CAAC,SAA+B,EAAA;;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW;AACrF,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC5E,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK;AAEnE,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CACtB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACzD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACtD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACpD;QACD,IAAI,CAAC,gBAAgB,EAAE;;AAGzB,IAAA,YAAY,CAAC,WAAoB,EAAE,QAAiB,EAAE,KAAc,EAAA;QAClE,IAAI,CAAC,YAAY,CAAC;YAChB,WAAW;YACX,QAAQ;YACR,KAAK;AACN,SAAA,CAAC;;AAGJ,IAAA,cAAc,CAAC,WAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;;AAGpC,IAAA,WAAW,CAAC,QAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;;AAGjC,IAAA,QAAQ,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;;IAG9B,YAAY,GAAA;AACV,QAAA,OAAO,cAAc,CAAC;AACpB,YAAA,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;AACrC,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC/B,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC1B,SAAA,CAAC;;IAGJ,mBAAmB,GAAA;AACjB,QAAA,OAAO,gCAAgC,CAAC,OAAO,EAAE,OAAO,CAAC;;IAG3D,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI;;AAGb,IAAA,UAAU,CAAC,EAAA,GAAa,IAAI,CAAC,IAAI,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;;QAEjE,OAAO,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE;YACpE,EAAE;AACF,YAAA,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;AAC/B,SAAA,CAAC;;IAGI,gBAAgB,GAAA;AACtB,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAE/D,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AACxD,QAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;QAErC,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,iBAAiB,EAAE;AACpD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;aACtC;YACL,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAChC,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;;iBAClD;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;AAGzB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;;;AAI9E,IAAA,SAAS,CACP,QAAgB,EAChB,wBAAgC,IAAI,EACpC,QAAiB,IAAI,EAAA;;AAErB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAEnB;AACD,QAAA,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU,EAAE;AACtD,YAAA,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E;;AAGH,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,CAC7C,QAAQ,EACR,qBAAqB,EACrB,KAAK,CACN;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAuB;QAE3D,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5E,YAAA,oBAAoB,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,sBAAsB,mCAAI,EAAE;AACzD,YAAA,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;SACpC;;IAGK,wBAAwB,CAC9B,QAA8B,EAC9B,SAAmB,EAAA;QAEnB,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;AAClD,QAAA,IACE,EAAE,QAAQ,YAAY,KAAK,CAAC,eAAe,CAAC;YAC5C,QAAQ,CAAC,QAAQ,KAAK,CAAC;YACvB,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EACvC;AACA,YAAA,QAAQ,CAAC,YAAY,CACnB,UAAU,EACV,IAAI,KAAK,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC,CAAC,CAC/C;YACD;;AAGF,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAqB;AAC5C,QAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACpB,QAAA,QAAQ,CAAC,WAAW,GAAG,IAAI;;AAE9B;;AClPD;AACM,MAAO,aAAc,SAAQ,aAAa,CAAA;AAG9C,IAAA,WAAA,CAAY,UAAiC,EAAE,EAAA;AAC7C,QAAA,MAAM,UAAU,GAAGD,kBAAgB,CAAC,OAAO,CAAC;AAC5C,QAAA,KAAK,CAAC;AACJ,YAAA,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,UAAU,CAAC,IAAI;AACrB,YAAA,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;YACpC,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,KAAK,EAAE,UAAU,CAAC,KAAK;AACxB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU;;IAG3B,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;;IAGpC,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,OAAO;;AAGrB,IAAA,SAAS,CAAC,MAAiC,EAAA;AACzC,QAAA,MAAM,IAAI,GAAGA,kBAAgB,CAAM,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,OAAO,CAAA,EAAK,MAAM,CAAA,EAAA,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAG;AAC9E,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACxC,YAAA,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;YAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,OAAO,UAAU;;IAGnB,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;;AAG3B,IAAA,YAAY,CAAC,UAAkB,EAAA;AAC7B,QAAA,OAAO,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC;;AAExC;AAED,SAASA,kBAAgB,CAAC,OAA8B,EAAA;;IACtD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,QAAA,MAAM,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9C,QAAA,WAAW,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,WAAW,mCAAI,CAAC;AACrC,QAAA,WAAW,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,WAAW,mCAAI,GAAG;AACvC,QAAA,UAAU,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,mCAAI,CAAC;QACnC,UAAU,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,mCAAI,IAAI,CAAC,EAAE,GAAG,CAAC;AAC7C,QAAA,UAAU,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,mCAAI,IAAI;QACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC1B,QAAA,KAAK,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,mCAAI,QAAQ;KACjC;AACH;AAEA,SAAS,UAAU,CAAC,MAAe,EAAA;IACjC,OAAO;AACL,QAAA,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACtC,QAAA,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACZ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACb,QAAA,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACb;AACH;;ACzFA,MAAM,qBAAqB,GAAG,QAAQ;AACtC,MAAM,qBAAqB,GAAG,CAAC;AAE/B,SAAS,oBAAoB,GAAA;AAC3B,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;;AAEhC,IAAA,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC;AACjE;AAEA;;AAEG;AACG,SAAU,oBAAoB,CAAC,KAAc,EAAA;AACjD,IAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,CAAC,EAAE;AACtE,QAAA,OAAO,qBAAqB;;AAE9B,IAAA,OAAO,KAAK;AACd;AAEA;;AAEG;SACa,sBAAsB,CAAC,EACrC,SAAS,EACT,KAAK,GAAG,qBAAqB,EAC7B,WAAW,GAAG,KAAK,EACnB,YAAY,GAAG,qBAAqB,GACZ,EAAA;IACxB,IAAI,WAAW,EAAE;AACf,QAAA,MAAM,WAAW,GAAG,IAAI,oBAAoB,EAAE;AAC9C,QAAA,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC;AACnC,QAAA,MAAM,WAAW,GAAG,IAAI,YAAY,CAAC;YACnC,KAAK;AACL,YAAA,SAAS,EAAE,oBAAoB,CAAC,YAAY,CAAC;YAC7C,UAAU,EAAE,oBAAoB,EAAE;AACnC,SAAA,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC;QAC3D,OAAO,CAAC,oBAAoB,EAAE;AAC9B,QAAA,OAAO,OAAO;;AAGhB,IAAA,MAAM,eAAe,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE;AAClD,IAAA,eAAe,CAAC,YAAY,CAC1B,UAAU,EACV,IAAI,KAAK,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC,CAAC,CAC/C;IAED,MAAM,eAAe,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,CAAC;IAC9D,OAAO,IAAI,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,eAAe,CAAC;AACjE;AAEA;;AAEG;AACG,SAAU,uBAAuB,CAAC,IAA6B,EAAA;IACnE,IAAI,CAAC,IAAI,EAAE;QACT;;AAGF,IAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;IACvB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;QACvD;;AAEF,IAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AACzB;AAEA;;AAEG;AACa,SAAA,oBAAoB,CAAC,IAA6B,EAAE,KAAa,EAAA;IAC/E,IAAI,CAAC,IAAI,EAAE;QACT;;IAGF,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,iBAAiB,EAAE;QACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QAC9B;;AAGF,IAAA,IAAI,IAAI,CAAC,QAAQ,YAAY,YAAY,EAAE;QACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;AAElC;AAEA;;AAEG;SACa,oBAAoB,CAClC,IAA6B,EAC7B,WAAmB,qBAAqB,EAAA;IAExC,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,QAAQ;;IAGjB,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,iBAAiB,EAAE;QACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;;AAGrC,IAAA,IAAI,IAAI,CAAC,QAAQ,YAAY,YAAY,EAAE;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;;AAGrC,IAAA,OAAO,QAAQ;AACjB;;ACjHA;;AAEG;AACa,SAAA,eAAe,CAC7B,MAAyB,EACzB,MAAc,EAAA;AAEd,IAAA,MAAM,aAAa,GAAIE,iBAAoD;AAC3E,IAAA,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE;AACvC,QAAA,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG;;IAGH,MAAM,cAAc,GAAG,aAAsC;IAC7D,OAAO,cAAc,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;AACnE;AAEA,SAAS,0BAA0B,CAAC,MAAyB,EAAA;AAC3D,IAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,QAAA,OAAO,MAAM;;AAGf,IAAA,IAAI,OAAO,MAAM,CAAC,sBAAsB,KAAK,UAAU,EAAE;AACvD,QAAA,OAAO,MAAM,CAAC,sBAAsB,EAAE;;AAGxC,IAAA,IAAI,OAAO,MAAM,CAAC,gBAAgB,KAAK,UAAU,EAAE;AACjD,QAAA,OAAO,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;;AAGrD,IAAA,IAAI,OAAO,MAAM,CAAC,iBAAiB,KAAK,UAAU,EAAE;AAClD,QAAA,OAAO,MAAM,CAAC,iBAAiB,EAAE;;AAGnC,IAAA,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE;AAC5C,QAAA,OAAO,iBAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;;AAGhD,IAAA,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE;AACxC,QAAA,OAAO,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;;AAG5C,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC/B;AAEA,SAAS,iBAAiB,CAAC,KAAc,EAAA;AACvC,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAClE;;;ACPA;;;AAGG;AACU,MAAA,KAAM,SAAQ,KAAK,CAAC,IAAI,CAAA;IAoBnC,IAAI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;QAC1B,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,oBAAoB,EAAE;YACvD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;;AAIlC,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK;;AAG3B,IAAA,WAAA,CAAY,OAAsB,EAAA;;AAChC,QAAA,KAAK,EAAE;AA9BT,QAAA,IAAA,CAAA,OAAO,GAAkB;AACvB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5B,WAAW,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjC,QAAQ,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SAC5B;AAGD,QAAA,kBAAA,CAAA,GAAA,CAAA,IAAA,EAAwC,IAAI,CAAC;QACrC,IAAe,CAAA,eAAA,GAAG,KAAK;QACvB,IAAY,CAAA,YAAA,GAAG,KAAK;QACpB,IAAa,CAAA,aAAA,GAAG,CAAC;QACjB,IAAa,CAAA,aAAA,GAAG,QAAQ;QAgB9B,IAAI,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,OAAO,EAAE;AACrC,QAAA,IAAI,CAAC,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACP,IAAI,CAAC,OAAO,CACZ,EAAA,OAAO,CACV,EAAA,EAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAC9C,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EACxD,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAClD,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAC7C;QACD,IAAI,CAAC,YAAY,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,KAAK;QACrD,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY;QAC5C,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;QAE9C,IAAI,CAAC,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACrD,EAAE,EAAE,IAAI,CAAC,IAAI;AACb,YAAA,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE;AACxC,SAAA,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE;;AAGzB;;;;AAIG;AACH,IAAA,OAAO,OAAO,CACZ,MAAsB,EACtB,MAAc,EACd,OAA4B,EAAA;AAE5B,QAAA,OAAO,IAAI,KAAK,CACX,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,KACV,IAAI,EAAE,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,IACrC;;AAGJ;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;;AAGrD;;AAEG;AACH,IAAA,YAAY,CAAC,SAAgC,EAAA;;QAC3C,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,WAAW,CACpC,CAAA,EAAA,GAAA,SAAS,CAAC,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EACjD,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACV;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,WAAW,CACjC,CAAA,EAAA,GAAA,SAAS,CAAC,QAAQ,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAC3C,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACV;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,WAAW,CAC9B,CAAA,EAAA,GAAA,SAAS,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EACrC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACV;QAED,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACrD,IAAI,CAAC,gBAAgB,EAAE;;AAGzB,IAAA,YAAY,CAAC,WAAoB,EAAE,QAAiB,EAAE,KAAc,EAAA;QAClE,IAAI,CAAC,YAAY,CAAC;YAChB,WAAW;YACX,QAAQ;YACR,KAAK;AACN,SAAA,CAAC;;AAGJ,IAAA,cAAc,CAAC,WAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;;AAGpC,IAAA,WAAW,CAAC,QAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;;AAGjC,IAAA,QAAQ,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;;IAG9B,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;;AAGpD,IAAA,SAAS,CAAC,MAAe,EAAA;QACvB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE;QACpC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACrD,IAAI,CAAC,gBAAgB,EAAE;;AAGzB;;AAEG;IACH,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI;;AAGb;;AAEG;AACH,IAAA,UAAU,CAAC,EAAA,GAAa,IAAI,CAAC,IAAI,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;;AAEjE,QAAA,OAAO,sBAAsB,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE;YAC3D,EAAE;AACF,YAAA,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE;AACxC,SAAA,CAAC;;AAGJ;;AAEG;IACH,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;;AAGvC;;AAEG;IACH,sBAAsB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE;;AAG5C;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE;QAC/C,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;;AAE/D,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;;AAGnC;;AAEG;IACH,gBAAgB,GAAA;;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;QACjD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAExD,QAAA,IAAI,QAAoC;QACxC,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,oBAAoB,EAAE;AACvD,YAAA,QAAQ,GAAG,IAAI,CAAC,QAAQ;;aACnB;YACL,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAChC,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;;iBAClD;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;AAGzB,YAAA,QAAQ,GAAG,IAAI,KAAK,CAAC,oBAAoB,CAAC;AACxC,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,UAAU,EAAE,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,SAAS;AACtB,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;QAG1B,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACtC,QAAA,QAAQ,CAAC,WAAW,GAAG,KAAK;AAC5B,QAAA,QAAQ,CAAC,OAAO,GAAG,CAAC;AACpB,QAAA,QAAQ,CAAC,UAAU,GAAG,IAAI;AAC1B,QAAA,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS;AAC/B,QAAA,QAAQ,CAAC,WAAW,GAAG,IAAI;AAE3B,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE;AACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;;aAChC;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI;;AAGrC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB;;QAGF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE;AACzD,QAAA,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAa,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB;;QAGF,IAAI,sBAAA,CAAA,IAAI,EAAa,kBAAA,EAAA,GAAA,CAAA,YAAY,KAAK,CAAC,YAAY,EAAE;YACnD,IAAI,CAAC,wBAAwB,CAAC,sBAAA,CAAA,IAAI,EAAa,kBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,EAAE,WAAW,CAAC;AACtE,YAAA,sBAAA,CAAA,IAAI,EAAa,kBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,kBAAkB,EAAE;AAC/C,YAAA,sBAAA,CAAA,IAAI,EAAa,kBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,qBAAqB,EAAE;YAClD;;AAGF,QAAA,MAAM,WAAW,GAAG,sBAAA,CAAA,IAAI,EAAa,kBAAA,EAAA,GAAA,CAAA,CAAC,QAAgC;AACtE,QAAA,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC;AAErC,QAAA,MAAM,UAAU,GAAG,sBAAA,CAAA,IAAI,0BAEtB;AACD,QAAA,CAAA,EAAA,GAAA,UAAU,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,UAAA,CAAI;;IAGrC,IAAI,YAAY,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,oBAAoB,CAAC,sBAAA,CAAA,IAAI,0BAAa,EAAE,KAAK,CAAC;;AAGhD,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,oBAAoB,CAAC,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAa,EAAE,IAAI,CAAC,aAAa,CAAC;;IAGpE,IAAI,OAAO,CAAC,MAAe,EAAA;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM;QAC7B,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,MAAM,EAAE;YACV,sBAAA,CAAA,IAAI,EAAgB,kBAAA,EAAA,sBAAsB,CAAC;AACzC,gBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE;gBAChD,KAAK,EAAE,IAAI,CAAC,aAAa;gBACzB,WAAW,EAAE,IAAI,CAAC,YAAY;gBAC9B,YAAY,EAAE,IAAI,CAAC,aAAa;AACjC,aAAA,CAAC,MAAA;AACF,YAAA,IAAI,CAAC,GAAG,CAAC,uBAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAa,CAAC;;;AAI/B,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,eAAe;;IAG7B,IAAI,WAAW,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK;AAChC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;AAIvB,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;IAG1B,IAAI,YAAY,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;AAC9C,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;AAIvB,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;IAG3B,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAa,EAAE;YACtB;;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,uBAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAa,CAAC;AAC9B,QAAA,uBAAuB,CAAC,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAa,CAAC;AAC1C,QAAA,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAgB,IAAI,EAAA,GAAA,CAAA;;IAGlB,qBAAqB,GAAA;AAC3B,QAAA,OAAOT,wBAAsB,CAAC;AAC5B,YAAA,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,YAAA,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,YAAA,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAA,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClD,SAAA,CAAC;;IAGI,wBAAwB,CAC9B,QAA8B,EAC9B,SAAmB,EAAA;QAEnB,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;AACnD,QAAA,IACE,EAAE,SAAS,YAAY,KAAK,CAAC,eAAe,CAAC;YAC7C,SAAS,CAAC,QAAQ,KAAK,CAAC;YACxB,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EACxC;AACA,YAAA,QAAQ,CAAC,YAAY,CACnB,UAAU,EACV,IAAI,KAAK,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC,CAAC,CAC/C;YACD;;AAGD,QAAA,SAAS,CAAC,KAAsB,CAAC,GAAG,CAAC,SAAS,CAAC;AAChD,QAAA,SAAS,CAAC,WAAW,GAAG,IAAI;;AAE/B;;AAED,SAAS,WAAW,CAClB,MAA2B,EAC3B,QAAkC,EAAA;;AAElC,IAAA,OAAO,MAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,GAAG,QAAQ,CAAC;AACpD;;AChYA;;;AAGG;SACa,mBAAmB,CACjC,QAA6E,EAC7E,UAA8B,EAAE,EAAA;;AAEhC,IAAA,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,QAAQ;IAC/B,OAAO,IAAI,aAAa,CAAC;AACvB,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;AAClC,QAAA,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;AAClC,QAAA,SAAS,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,SAAS,mCAAI,MAAM;QACtC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;AACrB,KAAA,CAAC;AACJ;AAEA,SAAS,WAAW,CAClB,OAAoC,EACpC,KAAa,EAAA;AAEb,IAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAA,4CAAA,CAA8C,CAAC;AAC/F,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AAC3B,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AACvD,YAAA,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAA,0DAAA,CAA4D,CAAC;;AAEvF,QAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACvC,KAAC,CAAC;AACJ;;;ACaA;;AAEG;AACU,MAAA,OAAQ,SAAQ,KAAK,CAAC,IAAI,CAAA;IAmBrC,IAAI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;QAC1B,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,iBAAiB,EAAE;YACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;;AAIlC,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK;;AAG3B,IAAA,WAAA,CAAY,OAAyB,EAAA;;AACnC,QAAA,KAAK,EAAE;AA7BT,QAAA,IAAA,CAAA,OAAO,GAAoB;AACzB,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjC,QAAQ,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SAC5B;AAED,QAAA,oBAAA,CAAA,GAAA,CAAA,IAAA,EAAwC,IAAI,CAAC;QACrC,IAAe,CAAA,eAAA,GAAG,KAAK;QACvB,IAAY,CAAA,YAAA,GAAG,KAAK;QACpB,IAAa,CAAA,aAAA,GAAG,CAAC;QACjB,IAAa,CAAA,aAAA,GAAG,QAAQ;AAe9B,QAAA,IAAI,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,OAAO,EAAE;QACtC,IAAI,CAAC,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAEvC,IAAI,CAAC,OAAO,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,OAAO,CAAA,EAAK,OAAO,CAAE;QAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QAE7B,IAAI,CAAC,SAAS,CAAC;AACb,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;AAC/D,YAAA,KAAK,EAAE,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,KACzC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CACrC;AACD,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,YAAA,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;AACrC,YAAA,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;AACxC,SAAA,CAAC;QACF,IAAI,CAAC,YAAY,CAAC;YAChB,WAAW,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;YAC9C,QAAQ,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;YACxC,KAAK,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;AACnC,SAAA,CAAC;;IAGJ,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;;;AAI1D,IAAA,SAAS,CAAC,OAA4B,EAAA;;QACpC,IAAI,CAAC,eAAe,EAAE;QAEtB,MAAM,WAAW,mCAAQ,IAAI,CAAC,OAAO,CAAK,EAAA,OAAO,CAAE;AACnD,QAAA,MAAM,eAAe,GACnB,UAAU,IAAI,OAAO;YACrB,OAAO,IAAI,OAAO;AACpB,QAAA,MAAM,YAAY,GAAG,OAAO,IAAI,OAAO;AACvC,QAAA,MAAM,mBAAmB,GACvB,aAAa,IAAI,OAAO;YACxB,cAAc,IAAI,OAAO;AAE3B,QAAA,IAAI,CAAC,OAAO,GAAG,WAAW;QAC1B,IAAI,CAAC,YAAY,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,KAAK;QACrD,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY;QAC5C,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;QAE9C,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC9E,YAAA,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,KAAI;gBAC1C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC9D,aAAC,CAAC;YACF,IAAI,CAAC,gBAAgB,EAAE;YACvB;;QAGF,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;;AAGjC,QAAA,IAAI,mBAAmB,IAAI,IAAI,CAAC,eAAe,EAAE;AAC/C,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;IAIvB,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,OAAO;;IAGrB,SAAS,GAAA;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACxC,QAAA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;;AAGlD,IAAA,SAAS,CAAC,MAAe,EAAA;QACvB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACvC,IAAI,CAAC,gBAAgB,EAAE;;IAGzB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;QAC3B,IAAI,CAAC,gBAAgB,EAAE;;AAGzB,IAAA,YAAY,CAAC,SAAiC,EAAA;;AAC5C,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW;AACrF,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC5E,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK;AAEnE,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CACxB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACzD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACtD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACpD;QACD,IAAI,CAAC,gBAAgB,EAAE;;AAGzB,IAAA,YAAY,CAAC,WAAoB,EAAE,QAAiB,EAAE,KAAc,EAAA;QAClE,IAAI,CAAC,YAAY,CAAC;YAChB,WAAW;YACX,QAAQ;YACR,KAAK;AACN,SAAA,CAAC;;AAGJ,IAAA,cAAc,CAAC,WAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;;AAGpC,IAAA,WAAW,CAAC,QAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;;AAGjC,IAAA,QAAQ,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;;IAG9B,YAAY,GAAA;AACV,QAAA,OAAO,cAAc,CAAC;AACpB,YAAA,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;AACrC,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC/B,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC1B,SAAA,CAAC;;AAGJ;;AAEG;IACH,mBAAmB,GAAA;AACjB,QAAA,OAAO,gCAAgC,CAAC,SAAS,EAAE,SAAS,CAAC;;AAG/D;;AAEG;IACH,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI;;AAGb;;AAEG;AACH,IAAA,UAAU,CAAC,EAAA,GAAa,IAAI,CAAC,IAAI,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;;QAEjE,OAAO,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE;YACtE,EAAE;AACF,YAAA,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;AAC/B,SAAA,CAAC;;IAGJ,aAAa,GAAA;QACX,IAAI,CAAC,gBAAgB,EAAE;;IAGzB,gBAAgB,GAAA;;AACd,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAEjE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;QAExD,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,iBAAiB,EAAE;AACpD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU;;aAChC;YACL,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAChC,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;;iBAClD;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;AAGzB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC;AAC1C,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;gBACzB,IAAI,EAAE,KAAK,CAAC,UAAU;AACvB,aAAA,CAAC;;AAGJ,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE;AACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;;aAChC;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI;;AAGrC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB;;AAGF,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC;AAC1E,QAAA,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAa,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB;;QAGF,IAAI,sBAAA,CAAA,IAAI,EAAa,oBAAA,EAAA,GAAA,CAAA,YAAY,KAAK,CAAC,YAAY,EAAE;YACnD,IAAI,CAAC,wBAAwB,CAAC,sBAAA,CAAA,IAAI,EAAa,oBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,EAAE,WAAW,CAAC;AACtE,YAAA,sBAAA,CAAA,IAAI,EAAa,oBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,kBAAkB,EAAE;AAC/C,YAAA,sBAAA,CAAA,IAAI,EAAa,oBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,qBAAqB,EAAE;YAClD;;AAGF,QAAA,MAAM,WAAW,GAAG,sBAAA,CAAA,IAAI,EAAa,oBAAA,EAAA,GAAA,CAAA,CAAC,QAAgC;AACtE,QAAA,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC;AAErC,QAAA,MAAM,UAAU,GAAG,sBAAA,CAAA,IAAI,4BAEtB;AACD,QAAA,CAAA,EAAA,GAAA,UAAU,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,UAAA,CAAI;;AAGrC,IAAA,WAAW,CAAC,QAAmB,EAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;QACnB,IAAI,CAAC,SAAS,CAAC;AACb,YAAA,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;AACnD,SAAA,CAAC;;AAGJ,IAAA,OAAO,CAAC,YAAuB,EAAA;;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG;YACnB,IAAI,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,CAAC;AAC7B,YAAA,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;SAC7C;QACD,IAAI,CAAC,SAAS,CAAC;AACb,YAAA,KAAK,EAAE,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,KACzC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CACrC;AACF,SAAA,CAAC;;AAGJ;;;;;AAKG;AACH,IAAA,OAAO,CAAC,MAAc,EAAA;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AAC/B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;YACtB,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,MAAM,CAAC;YACvE,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;AACjC,YAAA,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE;AACxB,YAAA,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE;AAC1C,YAAA,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE;AACpC,YAAA,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE;AAC/B,SAAA,CAAC;AAEF,QAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,QAAA,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AACtC,QAAA,OAAO,KAAK;;;AAId,IAAA,MAAM,CAAC,KAAc,EAAE,OAAA,GAA8B,EAAE,EAAA;;AACrD,QAAA,IAAI,EAAE,KAAK,YAAY,OAAO,CAAC;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;AAC3F,QAAA,IAAI,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC,IAAI,CAAC,EAAE;AACnF,YAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;;QAE7D,OAAO,mBAAmB,CACxB,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,EACrD,MAAA,CAAA,MAAA,CAAA,EAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAA,EAAK,OAAO,CAAA,CACxC;;AAGH;;AAEG;IACH,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;AACnD,QAAA,OAAO,QAAQ;;IAGT,kBAAkB,GAAA;AACxB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AAC/B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE;QACrC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CACxC,IAAI,KAAK,CAAC,OAAO,CACf,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,EAClC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,EAClC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CACnC,EACD,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,KAAK,CACjD,SAAS,CAAC,QAAQ,CAAC,CAAC,EACpB,SAAS,CAAC,QAAQ,CAAC,CAAC,EACpB,SAAS,CAAC,QAAQ,CAAC,CAAC,EACpB,KAAK,CACN,CAAC,EACF,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAC3E;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AACzC,YAAA,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,OAAO,CACnC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAClB,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAClB,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CACnB,CAAC,YAAY,CAAC,MAAM,CAAC;AACtB,YAAA,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAU;AAC/D,SAAC,CAAC;;IAGJ,IAAI,YAAY,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,oBAAoB,CAAC,sBAAA,CAAA,IAAI,4BAAa,EAAE,KAAK,CAAC;;AAGhD,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,oBAAoB,CAAC,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAa,EAAE,IAAI,CAAC,aAAa,CAAC;;IAGpE,IAAI,OAAO,CAAC,MAAe,EAAA;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM;QAC7B,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC;YAC1E,sBAAA,CAAA,IAAI,EAAgB,oBAAA,EAAA,sBAAsB,CAAC;AACzC,gBAAA,SAAS,EAAE,WAAW;gBACtB,KAAK,EAAE,IAAI,CAAC,aAAa;gBACzB,WAAW,EAAE,IAAI,CAAC,YAAY;gBAC9B,YAAY,EAAE,IAAI,CAAC,aAAa;AACjC,aAAA,CAAC,MAAA;AACF,YAAA,IAAI,CAAC,GAAG,CAAC,uBAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAa,CAAC;;;AAI/B,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,eAAe;;IAG7B,IAAI,WAAW,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK;AAChC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;AAIvB,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;IAG1B,IAAI,YAAY,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;AAC9C,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;AAIvB,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;IAG3B,uBAAuB,GAAA;QACrB,IAAI,CAAC,gBAAgB,EAAE;;IAGjB,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAa,EAAE;YACtB;;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,uBAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAa,CAAC;AAC9B,QAAA,uBAAuB,CAAC,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAa,CAAC;AAC1C,QAAA,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAgB,IAAI,EAAA,GAAA,CAAA;;IAG1B,OAAO,GAAA;QACL,IAAI,CAAC,gBAAgB,EAAE;;IAGjB,wBAAwB,CAC9B,QAA8B,EAC9B,SAAmB,EAAA;QAEnB,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;AAClD,QAAA,IACE,EAAE,QAAQ,YAAY,KAAK,CAAC,eAAe,CAAC;YAC5C,QAAQ,CAAC,QAAQ,KAAK,CAAC;YACvB,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EACvC;AACA,YAAA,QAAQ,CAAC,YAAY,CACnB,UAAU,EACV,IAAI,KAAK,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC,CAAC,CAC/C;YACD;;AAGF,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAqB;AAC5C,QAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACpB,QAAA,QAAQ,CAAC,WAAW,GAAG,IAAI;;IAGrB,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;QAEzB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;;aAClD,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,QAAQ,EAAE;AAClD,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;QAEzB,IAAI,CAAC,gBAAgB,EAAE;;AAE1B;;;ACndD;AACM,MAAO,QAAS,SAAQ,aAAa,CAAA;AAGzC,IAAA,WAAA,CAAY,UAA4B,EAAE,EAAA;AACxC,QAAA,MAAM,UAAU,GAAGO,kBAAgB,CAAC,OAAO,CAAC;AAC5C,QAAA,KAAK,CAACG,kBAAgB,CAAC,UAAU,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU;QACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;;IAGlF,IAAI,MAAM,GAAa,EAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAClD,IAAI,MAAM,GAAa,EAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAClD,IAAI,UAAU,GAAa,EAAA,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IAC1D,IAAI,UAAU,GAAa,EAAA,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IAE1D,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;;AAE/B;AAED,SAASH,kBAAgB,CAAC,OAAyB,EAAA;;IACjD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,QAAA,MAAM,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9C,QAAA,MAAM,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,MAAM,mCAAI,CAAC;AAC3B,QAAA,MAAM,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,MAAM,mCAAI,CAAC;AAC3B,QAAA,UAAU,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,mCAAI,CAAC;QACnC,UAAU,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,mCAAI,IAAI,CAAC,EAAE,GAAG,CAAC;AAC7C,QAAA,UAAU,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,mCAAI,IAAI;QACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC1B,QAAA,KAAK,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,mCAAI,QAAQ;KACjC;AACH;AAEA,SAASG,kBAAgB,CAAC,OAAkC,EAAA;AAC1D,IAAA,MAAM,KAAK,GAAG;AACZ,QAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAA6B;AAC/D,QAAA,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAA6B;QACxC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAA6B;AACzC,QAAA,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAA6B;KACzC;AACD,IAAA,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC;UACxE,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,MAAM,CAAA,EAAA,EAAE,IAAI,EAAE,UAAU,EAAA,CAAA,GAC9B,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACM,MAAM,CAAA,EAAA,EACT,IAAI,EAAE,gBAAgB,EACtB,UAAU,EAAE,OAAO,CAAC,UAAU,EAC9B,UAAU,EAAE,OAAO,CAAC,UAAU,EAAA,CAC/B;AACP;;AC9CA;AACM,MAAO,MAAO,SAAQ,aAAa,CAAA;AAGvC,IAAA,WAAA,CAAY,UAA0B,EAAE,EAAA;AACtC,QAAA,MAAM,UAAU,GAAGH,kBAAgB,CAAC,OAAO,CAAC;AAC5C,QAAA,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU;QACzB,IAAI,CAAC,cAAc,EAAE;;AAGvB,IAAA,IAAI,KAAK,CAAC,KAAa,EAAI,EAAA,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,IAAI,KAAK,GAAa,EAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAChD,IAAA,IAAI,MAAM,CAAC,KAAa,EAAI,EAAA,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9D,IAAI,MAAM,GAAa,EAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAClD,IAAA,IAAI,KAAK,CAAC,KAAa,EAAI,EAAA,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,IAAI,KAAK,GAAa,EAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAChD,IAAa,KAAK,CAAC,KAAgC,EAAA;AACjD,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;QAC1B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;;AAE1C,IAAA,IAAa,KAAK,GAAA,EAAkB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AAEvE,IAAA,SAAS,CAAC,MAA0B,EAAA;;AAClC,QAAA,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU;aACtE,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,MAAM,CAAC;QAC/B,MAAM,IAAI,GACL,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,OAAO,GACZ,MAAM,CAAA,EAAA,EACT,MAAM,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAA,CACtD;AACD,QAAA,IAAI,eAAe;YAAE,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC9D,aAAA,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;AAAE,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC;AAC9E,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;AAAE,YAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;;IAG3D,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,OAAO;;AAGrB,IAAA,YAAY,CAAC,MAA6B,EAAA;;AACxC,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,MAAA,MAAM,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW;AAClF,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAA,EAAA,GAAA,MAAA,MAAM,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,QAAQ;AACzE,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAA,EAAA,GAAA,MAAA,MAAM,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK;QAChE,IAAI,CAAC,cAAc,EAAE;;AAGvB,IAAA,YAAY,CAAC,WAAoB,EAAE,QAAiB,EAAE,KAAc,EAAA;QAClE,IAAI,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;AAGrD,IAAA,cAAc,CAAC,WAAoB,EAAU,EAAA,IAAI,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AAChF,IAAA,WAAW,CAAC,QAAiB,EAAU,EAAA,IAAI,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AACvE,IAAA,QAAQ,CAAC,KAAc,EAAU,EAAA,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAE9D,YAAY,GAAA;QACV,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE;YAC7C,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE;YACvC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE;SAClC;;IAGH,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;;IAGpC,mBAAmB,GAAA;AACjB,QAAA,OAAO,gCAAgC,CAAC,QAAQ,EAAE,KAAK,CAAC;;AAG1D,IAAA,oBAAoB,GAAY,EAAA,OAAO,KAAK,CAAC;IAE7C,UAAU,GAAA;AACR,QAAA,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC;;AAG5F,IAAA,aAAa,KAAW,IAAI,CAAC,OAAO,EAAE,CAAC;IACvC,eAAe,GAAA,EAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAElD,cAAc,GAAA;QACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AAC5C,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EACvB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EACvB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CACxB;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,YAAY,EAAE;;AAEtB;AAED,SAASA,kBAAgB,CAAC,OAAuB,EAAA;;IAC/C,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,QAAA,MAAM,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAO,CAAC,MAAM,0CAAE,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACvD,QAAA,KAAK,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,mCAAI,CAAC;AACzB,QAAA,MAAM,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,MAAM,mCAAI,CAAC;AAC3B,QAAA,KAAK,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,mCAAI,CAAC;AACzB,QAAA,KAAK,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,mCAAI,QAAQ;AAChC,QAAA,UAAU,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,mCAAI,IAAI;QACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC1B,QAAA,WAAW,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAO,CAAC,WAAW,0CAAE,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACjE,QAAA,QAAQ,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAO,CAAC,QAAQ,0CAAE,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3D,QAAA,KAAK,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,0CAAE,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACtD;AACH;AAEA,SAAS,gBAAgB,CAAC,OAAgC,EAAA;IACxD,OAAO;AACL,QAAA,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;AACtB,QAAA,KAAK,EAAE;AACL,YAAA,MAAM,EAAE;gBACN,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC;gBACpC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;gBACrC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC;AACrC,aAAA;AACD,YAAA,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACb,YAAA,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACb,SAAA;QACD,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB;AACH;;ACtJA;AACM,MAAO,OAAQ,SAAQ,MAAM,CAAA;AACjC,IAAA,WAAA,CAAY,UAA2B,EAAE,EAAA;;QACvC,MAAM,UAAU,GACd,MAAA,CAAA,MAAA,CAAA,EAAA,MAAM,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9C,KAAK,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC,EACzB,MAAM,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC,EAC3B,KAAK,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,GAAG,EAC3B,KAAK,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,QAAQ,EAAA,EAC7B,OAAO,CACX;QACD,KAAK,CAAC,UAAU,CAAC;QACjB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;QACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK;QACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;;AAG1C,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;;IAG7D,mBAAmB,GAAA;AAC1B,QAAA,OAAO,gCAAgC,CAAC,SAAS,EAAE,KAAK,CAAC;;AAG3D,IAAA,YAAY,CACV,IAAmB,EACnB,OAAA,GAAsE,EAAE,EAAA;AAExE,QAAA,IAAI,EAAE,IAAI,YAAY,aAAa,CAAC,EAAE;AACpC,YAAA,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC;;QAEhF,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;;AAExC;;ACvCD;AACM,MAAO,MAAO,SAAQ,aAAa,CAAA;AAGvC,IAAA,WAAA,CAAY,UAA0B,EAAE,EAAA;AACtC,QAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAC5C,QAAA,KAAK,CAAC;AACJ,YAAA,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,KAAK,EAAE,UAAU,CAAC,KAAK;AACxB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU;QACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;;IAGlF,IAAI,MAAM,GAAa,EAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAElD,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;;AAE/B;AAED,SAAS,gBAAgB,CAAC,OAAuB,EAAA;;IAC/C,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,QAAA,MAAM,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9C,QAAA,MAAM,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,MAAM,mCAAI,CAAC;AAC3B,QAAA,UAAU,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,mCAAI,IAAI;QACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC1B,QAAA,KAAK,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,mCAAI,QAAQ;KACjC;AACH;;;ACHA;;AAEG;AACU,MAAA,KAAM,SAAQ,KAAK,CAAC,IAAI,CAAA;IAqBnC,IAAI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;QAC1B,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,oBAAoB,EAAE;YACvD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;;AAIlC,IAAA,WAAA,CAAY,OAAuB,EAAA;;AACjC,QAAA,KAAK,EAAE;AA3BT,QAAA,IAAA,CAAA,OAAO,GAAkB;YACvB,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5B,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjC,QAAQ,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SAC5B;AAGD,QAAA,kBAAA,CAAA,GAAA,CAAA,IAAA,EAAwC,IAAI,CAAC;QACrC,IAAe,CAAA,eAAA,GAAG,KAAK;QACvB,IAAY,CAAA,YAAA,GAAG,KAAK;QACpB,IAAa,CAAA,aAAA,GAAG,CAAC;AAWvB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,OAAO,EAAE;QACtC,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAEnC,IAAI,CAAC,OAAO,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,OAAO,CAAA,EAAK,OAAO,CAAE;QAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QAE7B,IAAI,CAAC,SAAS,CAAC;YACb,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;AACnC,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AAC3B,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,YAAA,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;AACrC,YAAA,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;AACxC,SAAA,CAAC;QACF,IAAI,CAAC,YAAY,CAAC;YAChB,WAAW,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;YAC9C,QAAQ,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;YACxC,KAAK,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;AACnC,SAAA,CAAC;;IAGJ,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;;;AAIxD,IAAA,SAAS,CAAC,OAA0B,EAAA;;QAClC,IAAI,CAAC,eAAe,EAAE;QAEtB,MAAM,WAAW,mCAAQ,IAAI,CAAC,OAAO,CAAK,EAAA,OAAO,CAAE;AACnD,QAAA,MAAM,eAAe,GACnB,QAAQ,IAAI,OAAO;AACnB,YAAA,OAAO,IAAI,OAAO;AAClB,YAAA,QAAQ,IAAI,OAAO;YACnB,OAAO,IAAI,OAAO;AACpB,QAAA,MAAM,YAAY,GAAG,OAAO,IAAI,OAAO;AACvC,QAAA,MAAM,mBAAmB,GACvB,aAAa,IAAI,OAAO;YACxB,cAAc,IAAI,OAAO;AAE3B,QAAA,IAAI,CAAC,OAAO,GAAG,WAAW;QAC1B,IAAI,CAAC,YAAY,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,KAAK;QACrD,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY;QAC5C,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;QAE9C,IAAI,eAAe,EAAE;AACnB,YAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO;AACrD,YAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;YAC3D,IAAI,CAAC,gBAAgB,EAAE;YACvB;;QAGF,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;;AAGjC,QAAA,IAAI,mBAAmB,IAAI,IAAI,CAAC,eAAe,EAAE;AAC/C,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;IAIvB,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,OAAO;;IAGrB,SAAS,GAAA;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACtC,QAAA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;;AAGlD,IAAA,YAAY,CAAC,SAA+B,EAAA;;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW;AACrF,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC5E,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK;AAEnE,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CACtB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACzD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACtD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACpD;QACD,IAAI,CAAC,gBAAgB,EAAE;;AAGzB,IAAA,YAAY,CAAC,WAAoB,EAAE,QAAiB,EAAE,KAAc,EAAA;QAClE,IAAI,CAAC,YAAY,CAAC;YAChB,WAAW;YACX,QAAQ;YACR,KAAK;AACN,SAAA,CAAC;;AAGJ,IAAA,cAAc,CAAC,WAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;;AAGpC,IAAA,WAAW,CAAC,QAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;;AAGjC,IAAA,QAAQ,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;;IAG9B,YAAY,GAAA;AACV,QAAA,OAAO,cAAc,CAAC;AACpB,YAAA,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;AACrC,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC/B,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC1B,SAAA,CAAC;;IAGJ,mBAAmB,GAAA;AACjB,QAAA,OAAO,gCAAgC,CAAC,OAAO,EAAE,OAAO,CAAC;;IAG3D,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI;;AAGb,IAAA,UAAU,CAAC,EAAA,GAAa,IAAI,CAAC,IAAI,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;;QAEjE,OAAO,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE;YACpE,EAAE;AACF,YAAA,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;AAC/B,SAAA,CAAC;;IAGJ,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;QACvB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;;aACxC;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;;IAI3B,gBAAgB,GAAA;;AACd,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAE/D,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;QAExD,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,oBAAoB,EAAE;AACvD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;;;aAGtC;YACL,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAChC,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;;iBAClD;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;AAGzB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,oBAAoB,CAAC;AAC7C,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;;;AAG1B,aAAA,CAAC;;AAGJ,QAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;AAErC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB;;AAGF,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC;AACxE,QAAA,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAa,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB;;QAGF,IAAI,sBAAA,CAAA,IAAI,EAAa,kBAAA,EAAA,GAAA,CAAA,YAAY,KAAK,CAAC,YAAY,EAAE;YACnD,IAAI,CAAC,wBAAwB,CAAC,sBAAA,CAAA,IAAI,EAAa,kBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,EAAE,WAAW,CAAC;AACtE,YAAA,sBAAA,CAAA,IAAI,EAAa,kBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,kBAAkB,EAAE;AAC/C,YAAA,sBAAA,CAAA,IAAI,EAAa,kBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,qBAAqB,EAAE;YAClD;;AAGF,QAAA,MAAM,WAAW,GAAG,sBAAA,CAAA,IAAI,EAAa,kBAAA,EAAA,GAAA,CAAA,CAAC,QAAgC;AACtE,QAAA,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC;AAErC,QAAA,MAAM,UAAU,GAAG,sBAAA,CAAA,IAAI,0BAEtB;AACD,QAAA,CAAA,EAAA,GAAA,UAAU,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,UAAA,CAAI;;IAGrC,WAAW,GAAA;QACT,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;QACjD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;;AAE/D,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;IAG7B,IAAI,OAAO,CAAC,MAAe,EAAA;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM;QAC7B,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC;YACxE,sBAAA,CAAA,IAAI,EAAgB,kBAAA,EAAA,sBAAsB,CAAC;AACzC,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,IAAI,CAAC,YAAY;gBAC9B,YAAY,EAAE,IAAI,CAAC,aAAa;AACjC,aAAA,CAAC,MAAA;AACF,YAAA,IAAI,CAAC,GAAG,CAAC,uBAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAa,CAAC;;;AAI/B,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,eAAe;;IAG7B,IAAI,WAAW,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK;AAChC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;AAIvB,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;IAG1B,IAAI,YAAY,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;AAC9C,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;AAIvB,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;AAG3B,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAa;;IAGlB,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAa,EAAE;YACtB;;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,uBAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAa,CAAC;AAC9B,QAAA,uBAAuB,CAAC,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAa,CAAC;AAC1C,QAAA,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAgB,IAAI,EAAA,GAAA,CAAA;;IAG1B,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;IAGjB,wBAAwB,CAC9B,QAA8B,EAC9B,SAAmB,EAAA;QAEnB,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;AAClD,QAAA,IACE,EAAE,QAAQ,YAAY,KAAK,CAAC,eAAe,CAAC;YAC5C,QAAQ,CAAC,QAAQ,KAAK,CAAC;YACvB,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EACvC;AACA,YAAA,QAAQ,CAAC,YAAY,CACnB,UAAU,EACV,IAAI,KAAK,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC,CAAC,CAC/C;YACD;;AAGF,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAqB;AAC5C,QAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACpB,QAAA,QAAQ,CAAC,WAAW,GAAG,IAAI;;AAE9B;;;;ACzSD;;AAEG;AACU,MAAA,KAAM,SAAQ,KAAK,CAAC,IAAI,CAAA;IA6BnC,IAAI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;QAC1B,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,oBAAoB,EAAE;YACvD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;;AAIlC,IAAA,WAAA,CAAY,OAAuB,EAAA;;AACjC,QAAA,KAAK,EAAE;AAnCT,QAAA,IAAA,CAAA,OAAO,GAAkB;AACvB,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpB,gBAAA,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrB,aAAA;AACD,YAAA,OAAO,EAAE;gBACP,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC;gBAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC;AAC3B,gBAAA,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;gBAC1B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC;AAC5B,aAAA;AACD,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjC,QAAQ,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SAC5B;AAGD,QAAA,kBAAA,CAAA,GAAA,CAAA,IAAA,EAAwC,IAAI,CAAC;QACrC,IAAe,CAAA,eAAA,GAAG,KAAK;QACvB,IAAY,CAAA,YAAA,GAAG,KAAK;QACpB,IAAa,CAAA,aAAA,GAAG,CAAC;AAYvB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,OAAO,EAAE;AACtC,QAAA,MAAM,WAAW,GAAII,OAA+C;AACpE,QAAA,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;AACrC,YAAA,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F;;QAEH,MAAM,WAAW,GAAG,WAAqC;QACzD,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QAEvC,IAAI,CAAC,OAAO,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,OAAO,CAAA,EAAK,OAAO,CAAE;QAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QAE7B,IAAI,CAAC,SAAS,CAAC;AACb,YAAA,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;AACrD,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;AAC3D,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC/B,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AAC3B,YAAA,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;AACrC,YAAA,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;AACxC,SAAA,CAAC;QACF,IAAI,CAAC,YAAY,CAAC;YAChB,WAAW,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;YAC9C,QAAQ,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;YACxC,KAAK,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;AACnC,SAAA,CAAC;;IAGJ,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;;QAGtD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;;QAG3D,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,YAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC;;;AAIhE,IAAA,SAAS,CAAC,OAA0B,EAAA;;QAClC,MAAM,WAAW,mCAAQ,IAAI,CAAC,OAAO,CAAK,EAAA,OAAO,CAAE;AACnD,QAAA,MAAM,eAAe,GACnB,MAAM,IAAI,OAAO;AACjB,YAAA,SAAS,IAAI,OAAO;AACpB,YAAA,UAAU,IAAI,OAAO;YACrB,QAAQ,IAAI,OAAO;AACrB,QAAA,MAAM,YAAY,GAAG,OAAO,IAAI,OAAO;AACvC,QAAA,MAAM,mBAAmB,GACvB,aAAa,IAAI,OAAO;YACxB,cAAc,IAAI,OAAO;AAE3B,QAAA,IAAI,CAAC,OAAO,GAAG,WAAW;QAC1B,IAAI,CAAC,YAAY,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,KAAK;QACrD,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY;QAC5C,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;QAE9C,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,eAAe,EAAE;YAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;YAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;YAClE,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI;YAC9C,MAAM,MAAM,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI;AAE1C,YAAA,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;YAChE,IAAI,CAAC,gBAAgB,EAAE;YACvB;;QAGF,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;;AAGjC,QAAA,IAAI,mBAAmB,IAAI,IAAI,CAAC,eAAe,EAAE;AAC/C,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;IAIvB,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,OAAO;;IAGrB,SAAS,GAAA;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACtC,QAAA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;;AAGlD,IAAA,SAAS,CAAC,MAAe,EAAA;QACvB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACrC,IAAI,CAAC,gBAAgB,EAAE;;IAGzB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;QACzB,IAAI,CAAC,gBAAgB,EAAE;;AAGzB,IAAA,YAAY,CAAC,SAA+B,EAAA;;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW;AACrF,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC5E,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK;AAEnE,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CACtB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACzD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACtD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACpD;QACD,IAAI,CAAC,gBAAgB,EAAE;;AAGzB,IAAA,YAAY,CAAC,WAAoB,EAAE,QAAiB,EAAE,KAAc,EAAA;QAClE,IAAI,CAAC,YAAY,CAAC;YAChB,WAAW;YACX,QAAQ;YACR,KAAK;AACN,SAAA,CAAC;;AAGJ,IAAA,cAAc,CAAC,WAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;;AAGpC,IAAA,WAAW,CAAC,QAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;;AAGjC,IAAA,QAAQ,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;;IAG9B,YAAY,GAAA;AACV,QAAA,OAAO,cAAc,CAAC;AACpB,YAAA,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;AACrC,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC/B,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC1B,SAAA,CAAC;;IAGJ,mBAAmB,GAAA;AACjB,QAAA,OAAO,gCAAgC,CAAC,OAAO,EAAE,OAAO,CAAC;;IAG3D,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI;;AAGb,IAAA,UAAU,CAAC,EAAA,GAAa,IAAI,CAAC,IAAI,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;;QAEjE,OAAO,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE;YACpE,EAAE;AACF,YAAA,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;AAC/B,SAAA,CAAC;;IAGJ,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;QACvB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;;aACxC;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;;IAI3B,gBAAgB,GAAA;;AACd,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAE/D,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;QAExD,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,oBAAoB,EAAE;AACvD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;;;aAGtC;YACL,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAChC,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;;iBAClD;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;AAGzB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,oBAAoB,CAAC;AAC7C,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;;;AAG1B,aAAA,CAAC;;AAGJ,QAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;AAErC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB;;AAGF,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC;AACxE,QAAA,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAa,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB;;QAGF,IAAI,sBAAA,CAAA,IAAI,EAAa,kBAAA,EAAA,GAAA,CAAA,YAAY,KAAK,CAAC,YAAY,EAAE;YACnD,IAAI,CAAC,wBAAwB,CAAC,sBAAA,CAAA,IAAI,EAAa,kBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,EAAE,WAAW,CAAC;AACtE,YAAA,sBAAA,CAAA,IAAI,EAAa,kBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,kBAAkB,EAAE;AAC/C,YAAA,sBAAA,CAAA,IAAI,EAAa,kBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,qBAAqB,EAAE;YAClD;;AAGF,QAAA,MAAM,WAAW,GAAG,sBAAA,CAAA,IAAI,EAAa,kBAAA,EAAA,GAAA,CAAA,CAAC,QAAgC;AACtE,QAAA,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC;AAErC,QAAA,MAAM,UAAU,GAAG,sBAAA,CAAA,IAAI,0BAEtB;AACD,QAAA,CAAA,EAAA,GAAA,UAAU,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,UAAA,CAAI;;IAGrC,OAAO,GAAA;QACL,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;QACjD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;;AAE1D,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;IAG7B,IAAI,OAAO,CAAC,MAAe,EAAA;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM;QAC7B,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC;YACxE,sBAAA,CAAA,IAAI,EAAgB,kBAAA,EAAA,sBAAsB,CAAC;AACzC,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,IAAI,CAAC,YAAY;gBAC9B,YAAY,EAAE,IAAI,CAAC,aAAa;AACjC,aAAA,CAAC,MAAA;AAEF,YAAA,IAAI,CAAC,GAAG,CAAC,uBAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAa,CAAC;;;AAI/B,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,eAAe;;IAG7B,IAAI,WAAW,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK;AAChC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;AAIvB,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;IAG1B,IAAI,YAAY,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;AAC9C,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;AAIvB,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;IAGnB,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAa,EAAE;YACtB;;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,uBAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAa,CAAC;AAC9B,QAAA,uBAAuB,CAAC,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAa,CAAC;AAC1C,QAAA,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAgB,IAAI,EAAA,GAAA,CAAA;;IAG1B,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;IAGjB,wBAAwB,CAC9B,QAA8B,EAC9B,SAAmB,EAAA;QAEnB,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;AAClD,QAAA,IACE,EAAE,QAAQ,YAAY,KAAK,CAAC,eAAe,CAAC;YAC5C,QAAQ,CAAC,QAAQ,KAAK,CAAC;YACvB,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EACvC;AACA,YAAA,QAAQ,CAAC,YAAY,CACnB,UAAU,EACV,IAAI,KAAK,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC,CAAC,CAC/C;YACD;;AAGF,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAqB;AAC5C,QAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACpB,QAAA,QAAQ,CAAC,WAAW,GAAG,IAAI;;AAE9B;;;AChaD;;AAEG;AACG,SAAU,uBAAuB,CAAC,KAAkB,EAAA;AACxD,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,KAAK,EAAE,IAAI,OAAO,CAAC,EAAI,EAAE,GAAG,EAAE,EAAI,CAAC;QACnC,GAAG,EAAE,IAAI,OAAO,CAAC,EAAI,EAAE,GAAG,EAAE,EAAI,CAAC;AACjC,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;AAC5B,QAAA,MAAM,EAAE;YACN,IAAI,OAAO,CAAC,EAAI,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;AAC5B,SAAA;AACD,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;QAClB,MAAM,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAI,CAAC;AACnC,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,UAAU,EAAE,GAAG;AACf,QAAA,UAAU,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG;AACzB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;QAC9B,MAAM,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAClC,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,OAAO,EAAE,GAAG;AACZ,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;AACtB,QAAA,aAAa,EAAE;YACb,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;YAC5B,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;YAC3B,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;YAC3B,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAI,CAAC;AAC5B,SAAA;AACD,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACf,IAAA,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACnB,IAAA,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACd,IAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACpB,IAAA,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IAEhB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE;AAClD;;ACnDA;;AAEG;AACG,SAAU,mBAAmB,CAAC,KAAkB,EAAA;IACpD,MAAM,eAAe,GAAG,CAAC;AAEzB,IAAA,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;AAC1B,QAAA,QAAQ,EAAE;YACR,IAAI,OAAO,CAAC,EAAI,EAAE,GAAG,EAAE,IAAI,CAAC;YAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;AAC7B,SAAA;AACD,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,YAAY,EAAE,eAAe;AAC9B,KAAA,CAAC;AACF,IAAA,OAAO,CAAC,OAAO,GAAG,IAAI;AAEtB,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,MAAM,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;AACnC,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AACF,IAAA,MAAM,CAAC,OAAO,GAAG,IAAI;AAErB,IAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;QAC5B,MAAM,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;AACnC,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AACF,IAAA,QAAQ,CAAC,OAAO,GAAG,IAAI;AAEvB,IAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACtB,MAAM,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAI,CAAC;AACnC,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,YAAY,EAAE,eAAe;AAC9B,KAAA,CAAC;AACF,IAAA,KAAK,CAAC,OAAO,GAAG,IAAI;AAEpB,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,MAAM,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;AAChC,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AACF,IAAA,MAAM,CAAC,OAAO,GAAG,IAAI;AAErB,IAAA,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QAC1B,MAAM,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAClC,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AACF,IAAA,OAAO,CAAC,OAAO,GAAG,IAAI;AAEtB,IAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;AACtB,QAAA,IAAI,EAAE;YACJ,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;AAC5B,SAAA;AACD,QAAA,OAAO,EAAE;YACP,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;YAC5B,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;AAC3B,YAAA,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;YAC1B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;AAC5B,SAAA;AACD,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,YAAY,EAAE,eAAe;AAC9B,KAAA,CAAC;AACF,IAAA,KAAK,CAAC,OAAO,GAAG,IAAI;AAEpB,IAAA,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AAClB,IAAA,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AACjB,IAAA,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACnB,IAAA,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AAChB,IAAA,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AACjB,IAAA,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AAClB,IAAA,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AAEhB,IAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE;AACrE;;ACzFA,SAAS,aAAa,CAAC,QAAwB,EAAA;AAC7C,IAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;QAC7B,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ;QACnC,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7B,KAAC,CAAC;AACJ;AAEM,SAAU,kBAAkB,CAAC,KAAkB,EAAA;AACnD,IAAA,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAC;AACjC,QAAA,MAAM,EAAE;YACN,IAAI,OAAO,CAAC,EAAI,EAAE,GAAG,EAAE,EAAI,CAAC;YAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;AAC3B,YAAA,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,YAAA,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;YAC1B,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;AAC5B,SAAA;AACD,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,MAAM,gBAAgB,GAAG,IAAI,SAAS,CAAC;QACrC,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5B,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,OAAO,EAAE,GAAG;AACZ,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;;AAIF,IAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,EAAgB;IAC5D,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC;AAEzD,IAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;AACtB,QAAA,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;AAChE,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,YAAY,EAAE,CAAC;AAChB,KAAA,CAAC;AAEF,IAAA,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;AACxB,IAAA,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAC3B,IAAA,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IAEhB,OAAO;QACL,aAAa;QACb,gBAAgB;QAChB,KAAK;KACN;AACH;;AC7DA,MAAMC,SAAO,GAAG,MAAM;AAEtB,SAASC,UAAQ,CAAC,CAAU,EAAE,CAAU,EAAA;IACtC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpB,IAAA,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAKD,SAAO,GAAGA,SAAO;AAC3D;AAEA,SAAS,wBAAwB,CAAC,MAAiB,EAAE,QAAiB,EAAA;AACpE,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;IACnD,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,QAAA,OAAO,MAAM;;AAGf,IAAA,IAAI,CAACC,UAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;QACnD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;;AAGhC,IAAA,OAAO,MAAM;AACf;AAEM,SAAU,mBAAmB,CAAC,KAAkB,EAAA;AACpD,IAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC;QACxB,KAAK,EAAE,IAAI,OAAO,CAAC,EAAI,EAAE,GAAG,EAAE,IAAI,CAAC;QACnC,GAAG,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;AACjC,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACvD,IAAA,MAAM,mBAAmB,GAAG,IAAI,IAAI,CAAC;AACnC,QAAA,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3B,QAAA,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACzB,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,MAAM,YAAY,GAAG,IAAI,QAAQ,CAAC;AAChC,QAAA,MAAM,EAAE;YACN,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;YAC5B,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;YAC3B,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;YAC3B,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;AAC3B,YAAA,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC3B,SAAA;AACD,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,MAAM,cAAc,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAC/D,IAAA,MAAM,uBAAuB,GAAG,IAAI,QAAQ,CAAC;QAC3C,MAAM,EAAE,cAAc,CAAC,MAAM;AAC7B,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,MAAM,aAAa,GAAG,IAAI,SAAS,CAAC;QAClC,MAAM,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;AACnC,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,OAAO,EAAE,GAAG;AACZ,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,MAAM,eAAe,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACjE,IAAA,MAAM,wBAAwB,GAAG,IAAI,QAAQ,CAAC;QAC5C,MAAM,EAAE,wBAAwB,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC;AAClF,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC;AAC1B,QAAA,aAAa,EAAE;YACb,IAAI,OAAO,CAAC,EAAI,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,IAAI,OAAO,CAAC,EAAI,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;AAC5B,SAAA;AACD,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;AACxD,IAAA,MAAM,oBAAoB,GAAG,IAAI,QAAQ,CAAC;QACxC,MAAM,EAAE,WAAW,CAAC,MAAM;AAC1B,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACnB,IAAA,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAC9B,IAAA,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;AACvB,IAAA,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC;AAClC,IAAA,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;AACxB,IAAA,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC;AACnC,IAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACpB,IAAA,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAE/B,OAAO;QACL,QAAQ;QACR,mBAAmB;QACnB,YAAY;QACZ,uBAAuB;QACvB,aAAa;QACb,wBAAwB;QACxB,SAAS;QACT,oBAAoB;QACpB,cAAc;QACd,eAAe;QACf,WAAW;KACZ;AACH;;ACnFA;;;;;;;;;;;;AAYG;AACG,SAAU,qBAAqB,CACnC,cAAuC,EACvC,KAAa,EACb,MAAe,EACf,UAAU,GAAG,CAAC,EAAA;AAEd,IAAA,MAAM,WAAW,GAAIC,uBAA0D;AAC/E,IAAA,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;AACrC,QAAA,MAAM,IAAI,KAAK,CACb,wGAAwG,CACzG;;AAEH,IAAA,MAAM,IAAI,GACR,cAAc,YAAY,YAAY,GAAG,cAAc,GAAG,IAAI,YAAY,CAAC,cAAc,CAAC;AAC5F,IAAA,MAAM,MAAM,GAAI,WAA2C,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC;IAC5F,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC;AAC7C;AAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;AACG,SAAU,kBAAkB,CAChC,IAA6B,EAC7B,SAAkC,EAClC,QAAsB,EAAE,EAAA;AAExB,IAAA,MAAM,WAAW,GAAIC,oBAAuD;AAC5E,IAAA,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;AACrC,QAAA,MAAM,IAAI,KAAK,CACb,yJAAyJ,CAC1J;;AAEH,IAAA,MAAM,QAAQ,GAAG,IAAI,YAAY,YAAY,GAAG,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC;AAC7E,IAAA,MAAM,aAAa,GACjB,SAAS,YAAY,YAAY,GAAG,SAAS,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC;AAC7E,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAC9B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAC9F;IACD,MAAM,MAAM,GAAI,WAAwC,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC;IAC5F,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC;AAC7C;AAWA;;;;;;AAMG;AACG,SAAU,0BAA0B,CAAC,SAA2B,EAAA;AACpE,IAAA,MAAM,WAAW,GAAIC,4BAA+D;AACpF,IAAA,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;AACrC,QAAA,MAAM,IAAI,KAAK,CACb,6GAA6G,CAC9G;;IAEH,MAAM,MAAM,GAAI,WAAgD,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3F,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC;AAC7C;;AC7IA;AACA,SAAS,gBAAgB,CAAC,IAA2C,EAAA;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1E,IAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AACrB,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;;AAErD,IAAA,OAAO,MAAM;AACf;AAEA;;;;;AAKG;AACG,SAAU,+BAA+B,CAAC,KAAkB,EAAA;AAChE,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC;AAElB,IAAA,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IAC7E,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAE7D,IAAA,MAAM,QAAQ,GAAG;QACf,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AAC5F,QAAA,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7B,KAAA,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACnE,IAAA,MAAM,gBAAgB,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;AAEtD,IAAA,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAC;QACjC,MAAM,EAAE,gBAAgB,CACtB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM;AACnD,YAAA,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB,SAAA,CAAC,CAAC,CACJ;AACD,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AACF,IAAA,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;AAExB,IAAA,MAAM,eAAe,GAAG,IAAI,QAAQ,CAAC;QACnC,MAAM,EAAE,gBAAgB,CACtB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM;AACrD,YAAA,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvB,SAAA,CAAC,CAAC,CACJ;AACD,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AACF,IAAA,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC;IAE1B,MAAM,SAAS,GAAe,EAAE;IAChC,KAAK,MAAM,MAAM,IAAI,kBAAkB,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE;QAC/D,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC1F,QAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxB,QAAA,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;;IAErB,KAAK,MAAM,MAAM,IAAI,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE;QACnE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC1F,QAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxB,QAAA,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;;AAGrB,IAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE;AACtD;;AChEA,MAAM,OAAO,GAAG,MAAM;AAEtB,SAAS,QAAQ,CAAC,CAAU,EAAE,CAAU,EAAA;IACtC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpB,IAAA,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,OAAO,GAAG,OAAO;AAC3D;AAEA,SAAS,kBAAkB,CAAC,IAAe,EAAE,KAAgB,EAAA;AAC3D,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3C,QAAA,OAAO,EAAE;;AAGX,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;AACxE,IAAA,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;IAE9B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;QAC3E,OAAO,CAAC,GAAG,EAAE;;AAGf,IAAA,OAAO,OAAO;AAChB;AAaA,SAAS,QAAQ,CAAC,CAAU,EAAE,CAAU,EAAA;AACtC,IAAA,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC7E;AAEA,SAAS,gBAAgB,CACvB,gBAA2B,EAC3B,eAAuB,EACvB,MAAc,EACd,KAAa,EAAA;AAEb,IAAA,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAC7B,IAAA,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;AAC5D,IAAA,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACxC,IAAA,MAAM,SAAS,GAAG,KAAK,GAAG,GAAG;AAC7B,IAAA,MAAM,SAAS,GAAG,eAAe,GAAG,GAAG,GAAG,GAAG;IAC7C,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,MAAc,KAAuB;AACjE,QAAA,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM;AAC/C,QAAA,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;KACnD;IACD,OAAO,IAAI,aAAa,CAAC;AACvB,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,CAAC,CAAC,SAAS,EAAE,MAAU,CAAC;AAC7B,YAAA,KAAK,CAAC,SAAS,EAAE,MAAU,CAAC;AAC5B,YAAA,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC;AAC3B,YAAA,KAAK,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC;AAC7B,SAAA;AACD,QAAA,KAAK,EAAE,EAAE;QACT,MAAM;AACN,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AACJ;AAEA;;;;AAIG;AACG,SAAU,2BAA2B,CAAC,KAAc,EAAA;AACxD,IAAA,IAAI,KAAK,YAAY,KAAK,EAAE;QAC1B,OAAO,KAAK,CAAC,OAAO;;AAEtB,IAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB;SAEgB,8BAA8B,CAC5C,KAAkB,EAClB,UAAoC,EAAE,EAAA;;AAEtC,IAAA,MAAM,UAAU,GAAG,IAAI,QAAQ,CAAC;AAC9B,QAAA,MAAM,EAAE;YACN,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;YAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,EAAI,CAAC;YAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;AAC3B,YAAA,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,YAAA,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,YAAA,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC3B,SAAA;AACD,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;IAEF,MAAM,eAAe,GAAG,IAAI;AAC5B,IAAA,MAAM,IAAI,GAAG,eAAe,GAAG,GAAG;IAClC,MAAM,cAAc,GAAG,IAAI;IAC3B,MAAM,KAAK,GAAG,IAAI;IAClB,MAAM,YAAY,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,GAAG;AAE1C,IAAA,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC;AACpE,IAAA,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,MAAK,EAAE,cAAc,EAAE,KAAK,CAAC;AAEtE,IAAA,MAAM,kBAAkB,GAAG,IAAI,QAAQ,CAAC;QACtC,MAAM,EAAE,UAAU,CAAC,MAAM;AACzB,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,MAAM,mBAAmB,GAAG,IAAI,QAAQ,CAAC;QACvC,MAAM,EAAE,WAAW,CAAC,MAAM;AAC1B,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,MAAM,aAAa,GAAG,kBAAkB,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;AAC/E,IAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,QAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;;AAGlE,IAAA,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC;AAChC,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,aAAa,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI;AAE/B,IAAA,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;AACrB,IAAA,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAC7B,IAAA,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAC9B,IAAA,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;IAExB,IAAI,SAAS,GAAgE,IAAI;IACjF,IAAI,QAAQ,GAAY,IAAI;AAE5B,IAAA,IAAI,MAAA,OAAO,CAAC,cAAc,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,KAAK,EAAE;AACnC,QAAA,MAAM,WAAW,GAAG,IAAI,aAAa,CAAC;AACpC,YAAA,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,MAAM,EAAE,YAAY;AACpB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC;QACF,MAAM,MAAM,GAAG,gBAAgB,CAC7B;YACE,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;YAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,EAAI,CAAC;YAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;AAC3B,YAAA,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,YAAA,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,YAAA,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;SAC3B,EACD,eAAe,EACf,YAAY,EACZ,CAAA,EAAA,GAAA,OAAO,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,GAAG,CACzB;AACD,QAAA,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC;AAExB,QAAA,IAAI;AACF,YAAA,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACpE,YAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;YACpB,SAAS,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE;;QAC1C,OAAO,KAAK,EAAE;YACd,QAAQ,GAAG,KAAK;AAChB,YAAA,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;YACtB,SAAS,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE;;;IAIhD,OAAO;QACL,UAAU;QACV,kBAAkB;QAClB,mBAAmB;QACnB,aAAa;QACb,UAAU;QACV,WAAW;QACX,SAAS;QACT,QAAQ;KACT;AACH;;SC/KgB,YAAY,CAC1B,GAAkB,EAClB,GAAkB,EAClB,OAAiC,EAAA;IAEjC,OAAO,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC;AACnD;SAEgB,mBAAmB,CACjC,GAAkB,EAClB,GAAkB,EAClB,OAAiC,EAAA;IAEjC,OAAO,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC;AAC1D;SAEgB,kBAAkB,CAChC,GAAkB,EAClB,GAAkB,EAClB,OAAiC,EAAA;IAEjC,OAAO,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC;AACzD;SAEgB,6BAA6B,CAC3C,GAAmB,EACnB,OAAyB,EACzB,OAAiC,EAAA;;AAEjC,IAAA,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC;AACjC,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACnD,QAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC;;IAE5E,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;AACpD,IAAA,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE;AAC3D,QAAA,UAAU,EAAE,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,CAAC,UAAU;AAClD,QAAA,KAAK,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,KAAK;AACtB,KAAA,CAAC;AACF,IAAA,IAAI;QACF,KAAK,MAAM,MAAM,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE;AACjD,gBAAA,UAAU,EAAE,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,MAAM,CAAC,UAAU;AACpD,gBAAA,KAAK,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK;AACtB,aAAA,CAAC;YACF,MAAM,CAAC,OAAO,EAAE;YAChB,MAAM,GAAG,IAAI;;;IAEf,OAAO,KAAK,EAAE;QACd,MAAM,CAAC,OAAO,EAAE;AAChB,QAAA,MAAM,KAAK;;AAEb,IAAA,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC;AACnC,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,cAAc,CACrB,GAAkB,EAClB,GAAkB,EAClB,SAA4B,EAC5B,OAAiC,EAAA;;AAEjC,IAAA,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC;AACjC,IAAA,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE;AAC3C,QAAA,UAAU,EAAE,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,CAAC,UAAU;AAClD,QAAA,KAAK,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,KAAK;AACtB,KAAA,CAAC;AACF,IAAA,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC;AACnC,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,eAAe,CAAC,OAAuB,EAAA;AAC9C,IAAA,IAAI,EAAE,OAAO,YAAY,aAAa,CAAC,EAAE;AACvC,QAAA,MAAM,IAAI,KAAK,CACb,qGAAqG,CACtG;;AAEH,IAAA,OAAO,OAAO;AAChB;AAEA,SAAS,kBAAkB,CAAC,MAAqB,EAAE,OAAiC,EAAA;;AAClF,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ;IACxC,IAAI,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,KAAK,MAAK,SAAS;QAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;IACnE,IAAI,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,OAAO,MAAK,SAAS,EAAE;AAClC,QAAA,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO;AAClC,QAAA,QAAQ,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,IAAI,QAAQ,CAAC,WAAW;;IAEpE,IAAI,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,WAAW,MAAK,SAAS;AAAE,QAAA,QAAQ,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;IAClF,IAAI,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,IAAI,MAAK,SAAS;AAAE,QAAA,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;AAC7D,IAAA,QAAQ,CAAC,WAAW,GAAG,IAAI;AAC3B,IAAA,MAAM,CAAC,OAAO,GAAG,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI;AAC3C;;AC7EA;;AAEG;AACa,SAAA,oBAAoB,CAClC,SAAkC,EAClC,OAAmC,EAAA;IAEnC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC;AAE/C,IAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC;AAC7C,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;AAErE,IAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,IAAA,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;AAC3B,IAAA,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;AAC3B,IAAA,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;IAEjB,OAAO;QACL,KAAK;QACL,GAAG,EAAE,MAAM,CAAC,SAAS;QACrB,GAAG,EAAE,MAAM,CAAC,SAAS;QACrB,MAAM;QACN,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC;AACH;AAEA,SAAS,YAAY,CACnB,SAAkC,EAClC,OAAmC,EAAA;AAEnC,IAAA,QAAQ,OAAO,CAAC,IAAI;AAClB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC;AAC9C,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;AAChD,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC;;AAErD;AAEA;;AAEG;AACH,SAAS,iBAAiB,CACxB,SAAkC,EAClC,OAAmC,EAAA;;AAEnC,IAAA,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC;AAC7B,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AACF,IAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAE9B,IAAA,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC;AAC7B,QAAA,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,SAAS,KAAK,cAAc,GAAG,IAAI,GAAG,IAAI;AAClD,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AACF,IAAA,MAAM,MAAM,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,YAAY,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC;AAChE,IAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAE/C,IAAI,CAAC,OAAO,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI;IACtC,IAAI,CAAC,OAAO,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI;IAEtC,OAAO;AACL,QAAA,KAAK,EAAE,CAAG,EAAA,UAAU,CAAC,SAAS,CAAC,CAAmB,iBAAA,CAAA;AAClD,QAAA,WAAW,EAAE,yFAAyF;AACtG,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,SAAS,EAAE,IAAI;KAChB;AACH;AAEA;;AAEG;AACH,SAAS,mBAAmB,CAC1B,SAAkC,EAClC,OAAmC,EAAA;;AAEnC,IAAA,MAAM,aAAa,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,aAAa,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACzE,IAAA,MAAM,WAAW,GAAG;QAClB,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;QAC5B,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;AAC3B,QAAA,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAC1B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;KAC5B;AACD,IAAA,MAAM,WAAW,GAAG,iBAAiB,CACnC,SAAS,KAAK;AACZ,UAAE;YACE,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC;YAC9B,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;AAC5B,YAAA,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;YAC3B,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC;AAC9B;AACH,UAAE;YACE,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;YAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;AAC5B,YAAA,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;SAC5B,EACL,aAAa,CACd;AAED,IAAA,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC;AAC5B,QAAA,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtD,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AACF,IAAA,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC;AAC5B,QAAA,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtD,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;IAEF,GAAG,CAAC,OAAO,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI;IACrC,GAAG,CAAC,OAAO,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI;IAErC,OAAO;AACL,QAAA,KAAK,EAAE,CAAG,EAAA,UAAU,CAAC,SAAS,CAAC,CAAwB,sBAAA,CAAA;AACvD,QAAA,WAAW,EAAE,+FAA+F;AAC5G,QAAA,UAAU,EAAE,GAAG;AACf,QAAA,UAAU,EAAE,GAAG;AACf,QAAA,SAAS,EAAE,GAAG;AACd,QAAA,SAAS,EAAE,GAAG;KACf;AACH;AAEA;;AAEG;AACH,SAAS,oBAAoB,CAC3B,SAAkC,EAClC,OAAmC,EAAA;;AAEnC,IAAA,MAAM,cAAc,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,cAAc,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAE3E,IAAA,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC;AAC7B,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/D,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AACF,IAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;AAC/B,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/D,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AACF,IAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IAE1D,IAAI,CAAC,OAAO,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI;IACtC,MAAM,CAAC,OAAO,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI;IAExC,OAAO;AACL,QAAA,KAAK,EAAE,CAAG,EAAA,UAAU,CAAC,SAAS,CAAC,CAAiB,eAAA,CAAA;AAChD,QAAA,WAAW,EACT,4FAA4F;AAC9F,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,SAAS,EAAE,MAAM;KAClB;AACH;AAEA;;AAEG;AACH,SAAS,kBAAkB,CAAC,SAAkC,EAAA;IAC5D,QAAQ,SAAS;AACf,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,YAAY;AACrB,QAAA,KAAK,cAAc;AACjB,YAAA,OAAO,mBAAmB;AAC5B,QAAA,KAAK,aAAa;AAChB,YAAA,OAAO,kBAAkB;;AAE/B;AAEA;;AAEG;AACH,SAAS,UAAU,CAAC,KAAa,EAAA;AAC/B,IAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD;AAEA;;;AAGG;AACH,SAAS,iBAAiB,CAAC,QAAmB,EAAE,MAAe,EAAA;AAC7D,IAAA,OAAO,QAAQ,CAAC,GAAG,CACjB,CAAC,MAAM,KACL,IAAI,OAAO,CACT,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EACnB,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EACnB,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CACpB,CACJ;AACH;;AC7OA;;;AAGG;AACG,SAAU,wBAAwB,CAAC,KAAkB,EAAA;;AACzD,IAAA,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;AAC1B,QAAA,QAAQ,EAAE;YACR,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;YAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,IAAI,OAAO,CAAC,EAAI,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;AAC7B,SAAA;AACD,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,YAAY,EAAE,CAAC;AAChB,KAAA,CAAC;AACF,IAAA,OAAO,CAAC,OAAO,GAAG,IAAI;AAEtB,IAAA,MAAM,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,EAAE;IACzD,OAAO,CAAC,SAAS,CAAC;AAChB,QAAA,QAAQ,EAAE;YACR,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;YAC5B,IAAI,OAAO,CAAC,EAAI,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;YAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;AAC7B,SAAA;AACF,KAAA,CAAC;IACF,OAAO,CAAC,YAAY,CAAC;QACnB,WAAW,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;AACzC,KAAA,CAAC;AAEF,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,MAAM,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAClC,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AACF,IAAA,MAAM,CAAC,OAAO,GAAG,IAAI;AAErB,IAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,mBAAmB,EAAE;IACvD,MAAM,CAAC,SAAS,CAAC;AACf,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,MAAM,EAAE,GAAG;AACZ,KAAA,CAAC;IACF,MAAM,CAAC,YAAY,CAAC;QAClB,WAAW,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACvC,QAAA,QAAQ,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC;AAC/C,KAAA,CAAC;AAEF,IAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC;QACzB,KAAK,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;QAClC,GAAG,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;AAChC,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,KAAK,EAAE,CAAC;AACT,KAAA,CAAC;IACF,SAAS,CAAC,YAAY,CAAC;QACrB,WAAW,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACxC,KAAA,CAAC;AAEF,IAAA,MAAM,qBAAqB,GAAG,SAAS,CAAC,mBAAmB,EAAE;AAC7D,IAAA,MAAM,iBAAiB,GAAG,SAAS,CAAC,UAAU,CAAC,CAAG,EAAA,SAAS,CAAC,IAAI,CAAW,SAAA,CAAA,CAAC;AAC5E,IAAA,MAAM,eAAe,GAAG,oBAAoB,CAAC,iBAAiB,CAAC;AAC/D,IAAA,MAAM,aAAa,GACjB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,eAAe,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,0CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI;IACnE,IAAI,oBAAoB,GAA8B,IAAI;AAE1D,IAAA,IAAI,aAAa,KAAK,IAAI,EAAE;QAC1B,oBAAoB,GAAG,eAAe,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,EAAE;AACnE,YAAA,oBAAoB,EAAE,IAAI;AAC3B,SAAA,CAAC;;AAGJ,IAAA,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AAClB,IAAA,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AACjB,IAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;IAEpB,OAAO;QACL,OAAO;QACP,MAAM;QACN,SAAS;QACT,mBAAmB;QACnB,kBAAkB;QAClB,qBAAqB;QACrB,iBAAiB;QACjB,eAAe;QACf,oBAAoB;KACrB;AACH;;SC5EgB,gBAAgB,CAC9B,CAA0B,EAC1B,CAA0B,EAC1B,SAAiC,EAAA;AAEjC,IAAA,MAAM,YAAY,GAAIC,kBAAqD;AAC3E,IAAA,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE;AACtC,QAAA,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC;;AAE/E,IAAA,MAAM,KAAK,GAAG,CAAC,KAAwB,KAA+B;AACpE,QAAA,KAAK,CAAC,CAAC;AACP,QAAA,KAAK,CAAC,CAAC;AACP,QAAA,KAAK,CAAC,CAAC;KACR;IACD,MAAM,MAAM,GAAG,CAAC,OAAgC,KAC9C,IAAI,CAAC,SAAS,CACZ,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,QAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACnD,CAAC,CAAC,CACJ;AACH,IAAA,MAAM,MAAM,GAAI,YAAqC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;IACtF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAmB;AAC/D;AAEA;SACgB,sBAAsB,CACpC,CAA4B,EAC5B,CAA4B,EAC5B,SAAiC,EAAA;AAEjC,IAAA,MAAM,YAAY,GAAIC,wBAA2D;AACjF,IAAA,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE;AACtC,QAAA,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC;;IAErF,MAAM,MAAM,GAAI,YAAoF,CAClG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAChD;AACD,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAqB;AAC/C;;ACjBA;;AAEG;MACU,YAAY,CAAA;AAMvB,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;AAG1B;;;;;;;;AAQG;IACH,IAAI,WAAW,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;;;AAIlD,IAAA,WAAA,GAAA;QAtBQ,IAAY,CAAA,YAAA,GAAY,KAAK;;AAwBrC;;;;;;;;;;;;;;;AAeG;IACH,OAAa,MAAM,CAAC,OAA4B,EAAA;;AAC9C,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC1B,gBAAA,MAAM,EAAE,GAAG,IAAI,YAAY,EAAE;gBAC7B,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAC/B,gBAAA,YAAY,CAAC,QAAQ,GAAG,EAAE;;YAE5B,OAAO,YAAY,CAAC,QAAQ;SAC7B,CAAA;AAAA;AAEa,IAAA,KAAK,CAAC,OAAgB,EAAA;;YAClC,IAAI,OAAO,EAAE;gBACX,MAAMC,UAAI,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;gBACvC;;YAGF,MAAMA,UAAI,EAAE;SACb,CAAA;AAAA;;AA3DM,YAAO,CAAA,OAAA,GAAG,2BAAH;AACP,YAAQ,CAAA,QAAA,GAAwB,IAAxB;;;;","x_google_ignoreList":[0,4,5,6,7]}
|