opengeometry 2.0.1 → 2.0.2

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/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/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/arc.ts","../main/main/opengeometry-three/src/primitives/rectangle.ts","../main/main/opengeometry-three/src/primitives/curve.ts","../main/main/opengeometry-three/src/shapes/outline-utils.ts","../main/main/opengeometry-three/src/operations/boolean.ts","../main/main/opengeometry-three/src/shapes/extruded-shape.ts","../main/main/opengeometry-three/src/shapes/boolean-subtract.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/examples/wall-from-offsets.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\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\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 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} local_brep_serialized\n * @param {number} face_id\n * @param {number} distance\n * @returns {string}\n */\nexport function extrudeBrepFace(local_brep_serialized, face_id, distance) {\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, face_id, distance);\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 union.\n * @param {string} lhs_brep_serialized\n * @param {string} rhs_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanUnion(lhs_brep_serialized, rhs_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(rhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanUnion(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point for intersection.\n * @param {string} lhs_brep_serialized\n * @param {string} rhs_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanIntersection(lhs_brep_serialized, rhs_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(rhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanIntersection(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point for subtraction.\n * @param {string} lhs_brep_serialized\n * @param {string} rhs_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanSubtraction(lhs_brep_serialized, rhs_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(rhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanSubtraction(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\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\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 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 OGBooleanResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogbooleanresult_free(ptr >>> 0, 1));\n/**\n * Result payload returned across the wasm boundary.\n */\nexport class OGBooleanResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGBooleanResult.prototype);\n obj.__wbg_ptr = ptr;\n OGBooleanResultFinalization.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 OGBooleanResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogbooleanresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get brepSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogbooleanresult_brepSerialized(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 geometrySerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogbooleanresult_geometrySerialized(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 outlineGeometrySerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogbooleanresult_outlineGeometrySerialized(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.ogbooleanresult_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 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 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 {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 {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.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.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 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.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.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.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\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 cachedFloat64ArrayMemory0 = 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","import { \n // OGLine, \n // Vector3 \n} from \"./../../opengeometry/pkg/opengeometry\";\n\nexport const OPEN_GEOMETRY_THREE_VERSION = '0.0.6';\n\nexport interface OpenGeometryOptions {\n wasmURL?: string;\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","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\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\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\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\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 getFreeformGeometry(): FreeformGeometry {\n return this.geometry;\n }\n\n getTopologyRenderData(): TopologyRenderData {\n return normalizeTopologyRenderData(\n parseJson<TopologyRenderData>(\n this.editor.getTopologyRenderData(this.geometry.getKernelGeometry())\n )\n );\n }\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 getEdgeInfo(edgeId: TopologyId): EdgeInfo {\n return normalizeEdgeInfo(\n parseJson<EdgeInfo>(\n this.editor.getEdgeInfo(this.geometry.getKernelGeometry(), edgeId)\n )\n );\n }\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 getEditCapabilities(): FreeformEditCapabilities {\n return normalizeFreeformCapabilities(\n parseJson<RawFreeformOperationCapabilities>(\n this.editor.getEditCapabilities(this.geometry.getKernelGeometry())\n )\n );\n }\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 getEdgeEditCapabilities(edgeId: TopologyId): FreeformFeatureEditCapabilities {\n return normalizeFeatureCapabilities(\n parseJson<RawFreeformFeatureEditCapabilities>(\n this.editor.getEdgeEditCapabilities(this.geometry.getKernelGeometry(), edgeId)\n )\n );\n }\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 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 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 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 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 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 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 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 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 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 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\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\nexport class FreeformGeometry {\n private readonly geometry: OGFreeformGeometry;\n\n constructor(geometry: OGFreeformGeometry) {\n this.geometry = geometry;\n }\n\n getId(): string {\n return this.geometry.id;\n }\n\n getBrepSerialized(): string {\n return this.geometry.getBrepSerialized();\n }\n\n getLocalBrepSerialized(): string {\n return this.geometry.getLocalBrepSerialized();\n }\n\n getGeometrySerialized(): string {\n return this.geometry.getGeometrySerialized();\n }\n\n getOutlineGeometrySerialized(): string {\n return this.geometry.getOutlineGeometrySerialized();\n }\n\n getPlacement(): ObjectTransformation {\n return normalizePlacement(\n parseJson<ObjectTransformation>(this.geometry.getPlacementSerialized())\n );\n }\n\n setPlacement(transform: ObjectTransformation): void {\n this.geometry.setPlacementSerialized(\n JSON.stringify(toPlainObjectTransformation(transform))\n );\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3): void {\n this.geometry.setTransform(translation, rotation, scale);\n }\n\n setTranslation(translation: Vector3): void {\n this.geometry.setTranslation(translation);\n }\n\n setRotation(rotation: Vector3): void {\n this.geometry.setRotation(rotation);\n }\n\n setScale(scale: Vector3): void {\n this.geometry.setScale(scale);\n }\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\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","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\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\nexport interface LinePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type LineConfigUpdate = Partial<\n Omit<ILineOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type LinePlacementUpdate = LinePlacementOptions;\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/* eslint-disable no-unused-vars */\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n/* eslint-enable no-unused-vars */\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\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\nexport interface PolylinePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type PolylineConfigUpdate = Partial<\n Omit<IPolylineOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type PolylinePlacementUpdate = PolylinePlacementOptions;\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/* eslint-disable no-unused-vars */\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n/* eslint-enable no-unused-vars */\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 { OGArc, 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// import { IArcOptions } from \"../base-types\";\n\nexport interface IArcOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n startAngle: number;\n endAngle: number;\n segments: number;\n color: number;\n fatLines?: boolean;\n width?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport interface ArcPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type ArcConfigUpdate = Partial<\n Omit<IArcOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type ArcPlacementUpdate = ArcPlacementOptions;\n\nexport class Arc extends THREE.Line {\n ogid: string;\n options: IArcOptions = {\n center: new Vector3(0, 0, 0),\n radius: 3.5,\n startAngle: 0,\n endAngle: Math.PI * 2,\n segments: 32,\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 private arc: OGArc;\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?: IArcOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n this.arc = new OGArc(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 radius: this.options.radius,\n startAngle: this.options.startAngle,\n endAngle: this.options.endAngle,\n segments: this.options.segments,\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 Circle Arc\");\n }\n }\n\n setConfig(options: ArcConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"radius\" in options ||\n \"segments\" in options ||\n \"startAngle\" in options ||\n \"endAngle\" 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.arc.set_config(\n nextOptions.center.clone(),\n nextOptions.radius,\n nextOptions.startAngle,\n nextOptions.endAngle,\n nextOptions.segments\n );\n\n this.generateGeometry();\n return;\n }\n\n if (renderChanged) {\n this.updateRenderStyle();\n }\n }\n\n getAnchor() {\n const anchor = this.arc.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: ArcPlacementUpdate) {\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.arc.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(\"arc\", \"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.arc.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\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.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\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.arc.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.arc.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for Arc\");\n }\n return JSON.parse(brepData);\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 { 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\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\nexport interface RectanglePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type RectangleConfigUpdate = Partial<\n Omit<IRectangleOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type RectanglePlacementUpdate = RectanglePlacementOptions;\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/* eslint-disable no-unused-vars */\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n/* eslint-enable no-unused-vars */\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\nexport interface ICurveOptions {\n ogid?: string;\n controlPoints: Vector3[];\n color: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport interface CurvePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type CurveConfigUpdate = Partial<\n Omit<ICurveOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type CurvePlacementUpdate = CurvePlacementOptions;\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/* eslint-disable no-unused-vars */\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n/* eslint-enable no-unused-vars */\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 { 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\nexport type ShapeOutlineMesh = THREE.LineSegments | LineSegments2;\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\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\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\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\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\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\";\nimport * as THREE from \"three\";\nimport { toCreasedNormals } from \"three/examples/jsm/utils/BufferGeometryUtils.js\";\n\nimport {\n createFreeformGeometry,\n type CreateFreeformGeometryOptions,\n type FreeformGeometry,\n} from \"../freeform\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"../shapes/outline-utils\";\n\nexport type BooleanOperand =\n | string\n | Record<string, unknown>\n | {\n getBrep?: () => unknown;\n getBrepData?: () => unknown;\n getBrepSerialized?: () => string;\n };\n\nexport interface BooleanKernelOptions {\n tolerance?: number;\n mergeCoplanarFaces?: boolean;\n}\n\nexport interface BooleanRenderOptions {\n color?: number;\n outline?: boolean;\n fatOutlines?: boolean;\n outlineWidth?: number;\n}\n\nexport interface BooleanExecutionOptions extends BooleanRenderOptions {\n kernel?: BooleanKernelOptions;\n}\n\nexport interface BooleanReport {\n operation: string;\n operand_kind: string;\n input_face_count: number;\n input_triangle_count: number;\n output_face_count: number;\n output_shell_count: number;\n empty: boolean;\n}\n\ninterface KernelBooleanResult {\n brepSerialized: string;\n geometrySerialized: string;\n outlineGeometrySerialized: string;\n reportJson: string;\n}\n\n/* eslint-disable no-unused-vars */\ntype KernelBooleanFunction = (\n lhsBrepSerialized: string,\n rhsBrepSerialized: string,\n optionsJson?: string\n) => KernelBooleanResult;\n/* eslint-enable no-unused-vars */\n\nconst BOOLEAN_CREASE_ANGLE = Math.PI / 5;\nconst BOOLEAN_OUTLINE_THRESHOLD_DEGREES = 26;\n\n/**\n * Renderable result mesh returned by the kernel boolean helpers.\n */\nexport class BooleanResult extends THREE.Mesh {\n ogid: string;\n report: BooleanReport | null = null;\n\n private brepSerialized = \"\";\n private brepData: Record<string, unknown> | null = null;\n private outlinePositions: number[] = [];\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n #outlineMesh: ShapeOutlineMesh | null = null;\n\n constructor(\n kernelResult: KernelBooleanResult,\n options?: BooleanRenderOptions\n ) {\n super();\n this.ogid = getUUID();\n this._fatOutlines = options?.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(options?.outlineWidth);\n this.applyKernelResult(kernelResult, options?.color ?? 0x2563eb);\n\n if (options?.outline ?? false) {\n this.outline = true;\n }\n }\n\n /**\n * Rebuilds the mesh, cached BRep payload, and outline geometry from the kernel output.\n */\n applyKernelResult(kernelResult: KernelBooleanResult, color: number = 0x2563eb) {\n this.disposeGeometry();\n\n this.brepSerialized = kernelResult.brepSerialized;\n this.brepData = JSON.parse(kernelResult.brepSerialized) as Record<string, unknown>;\n this.report = JSON.parse(kernelResult.reportJson) as BooleanReport;\n\n const positions = JSON.parse(kernelResult.geometrySerialized) as number[];\n const baseGeometry = new THREE.BufferGeometry();\n baseGeometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n const geometry = toCreasedNormals(baseGeometry, BOOLEAN_CREASE_ANGLE);\n geometry.computeBoundingBox();\n this.outlinePositions = getRenderableOutlinePositions(\n geometry,\n kernelResult.outlineGeometrySerialized\n );\n\n const material = new THREE.MeshStandardMaterial({\n color,\n transparent: true,\n opacity: 0.82,\n side: THREE.FrontSide,\n polygonOffset: true,\n polygonOffsetFactor: 1,\n polygonOffsetUnits: 1,\n });\n\n this.geometry = geometry;\n this.material = material;\n\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n /**\n * Returns the parsed BRep object for reuse with scene export or downstream operations.\n */\n getBrepData() {\n return this.brepData;\n }\n\n /**\n * Returns the serialized BRep JSON emitted by the kernel boolean operation.\n */\n getBrepSerialized() {\n return this.brepSerialized;\n }\n\n canConvertToFreeform() {\n return this.brepSerialized.length > 0;\n }\n\n /**\n * Converts the boolean output into a first-class freeform geometry object so\n * it can participate in direct face/edge/vertex editing.\n */\n toFreeform(options?: CreateFreeformGeometryOptions): FreeformGeometry {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This boolean result cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.getBrepSerialized(), {\n id: options?.id ?? this.ogid,\n placement: options?.placement,\n });\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (!enable || this.outlinePositions.length === 0) {\n return;\n }\n\n this.#outlineMesh = createShapeOutlineMesh({\n positions: this.outlinePositions,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._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 if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n disposeGeometry() {\n this.clearOutlineMesh();\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n return;\n }\n this.material.dispose();\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\n/**\n * Computes a kernel-backed boolean union and returns a renderable result mesh.\n */\nexport function booleanUnion(\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n return executeBoolean(\"booleanUnion\", lhs, rhs, options);\n}\n\n/**\n * Computes a kernel-backed boolean intersection and returns a renderable result mesh.\n */\nexport function booleanIntersection(\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n return executeBoolean(\"booleanIntersection\", lhs, rhs, options);\n}\n\n/**\n * Computes a kernel-backed boolean subtraction and returns a renderable result mesh.\n */\nexport function booleanSubtraction(\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n return executeBoolean(\"booleanSubtraction\", lhs, rhs, options);\n}\n\n/**\n * Normalizes mixed wrapper/raw operands, invokes the wasm boolean export, and\n * returns the renderable result wrapper.\n */\nfunction executeBoolean(\n exportName: \"booleanUnion\" | \"booleanIntersection\" | \"booleanSubtraction\",\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n const booleanExport = (OGKernel as Record<string, unknown>)[exportName];\n if (typeof booleanExport !== \"function\") {\n throw new Error(\n `${exportName} is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.`\n );\n }\n\n const kernelFunction = booleanExport as KernelBooleanFunction;\n const kernelOptions = serializeKernelOptions(options?.kernel);\n const kernelResult = kernelFunction(\n resolveOperandSerialized(lhs),\n resolveOperandSerialized(rhs),\n kernelOptions\n );\n\n const result = new BooleanResult(kernelResult, options);\n if (options?.outline ?? true) {\n result.outline = true;\n }\n return result;\n}\n\n/**\n * Accepts wrapper objects, raw BRep data, or serialized JSON and normalizes\n * everything into the kernel's serialized input format.\n */\nfunction resolveOperandSerialized(operand: BooleanOperand): string {\n if (typeof operand === \"string\") {\n return operand;\n }\n\n if (typeof operand.getBrepSerialized === \"function\") {\n return serializeBrepLike(operand.getBrepSerialized());\n }\n\n if (typeof operand.getBrepData === \"function\") {\n return serializeBrepLike(operand.getBrepData());\n }\n\n if (typeof operand.getBrep === \"function\") {\n return serializeBrepLike(operand.getBrep());\n }\n\n return serializeBrepLike(operand);\n}\n\n/**\n * Accepts either a parsed BRep object or an already serialized JSON payload\n * and always returns the canonical serialized form expected by the wasm API.\n */\nfunction serializeBrepLike(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n\n return JSON.stringify(value);\n}\n\n/**\n * Translates the camelCase Three-side options into the snake_case wasm payload.\n */\nfunction serializeKernelOptions(options?: BooleanKernelOptions) {\n if (!options) {\n return undefined;\n }\n\n return JSON.stringify({\n tolerance: options.tolerance,\n merge_coplanar_faces: options.mergeCoplanarFaces,\n });\n}\n\n/**\n * Builds a display-quality outline buffer from the rendered mesh and falls back\n * to the kernel-provided edges when the client-side extraction is empty.\n */\nfunction getRenderableOutlinePositions(\n geometry: THREE.BufferGeometry,\n fallbackSerialized: string\n) {\n const edgesGeometry = new THREE.EdgesGeometry(\n geometry,\n BOOLEAN_OUTLINE_THRESHOLD_DEGREES\n );\n const positionsAttribute = edgesGeometry.getAttribute(\"position\");\n const positions =\n positionsAttribute && positionsAttribute.count > 0\n ? Array.from(positionsAttribute.array as ArrayLike<number>)\n : [];\n edgesGeometry.dispose();\n\n if (positions.length > 0) {\n return positions;\n }\n\n return JSON.parse(fallbackSerialized) as number[];\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\n\nimport {\n createFreeformGeometry,\n type FreeformGeometry,\n} from \"../freeform\";\nimport type { ObjectTransformation } from \"../freeform/types\";\nimport {\n booleanIntersection,\n booleanSubtraction,\n booleanUnion,\n type BooleanExecutionOptions,\n type BooleanOperand,\n type BooleanResult,\n} from \"../operations/boolean\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n getShapeOutlineColor,\n sanitizeOutlineWidth,\n setShapeOutlineColor,\n type ShapeOutlineMesh,\n} from \"./outline-utils\";\n\nexport interface ExtrudedShapeOptions {\n ogid?: string;\n color?: number;\n outline?: boolean;\n fatOutlines?: boolean;\n outlineWidth?: number;\n outlineColor?: number;\n placement?: Partial<ObjectTransformation>;\n}\n\nexport type ExtrudedShapePlacementUpdate = Partial<ObjectTransformation>;\n\nfunction parseJson<T>(payload: string): T {\n return JSON.parse(payload) as T;\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 clonePlacement(\n placement: Partial<ObjectTransformation> | undefined\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\nexport class ExtrudedShape extends THREE.Mesh {\n ogid: string;\n\n private readonly freeform: FreeformGeometry;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n private _outlineColor = 0x000000;\n private _color = 0x2563eb;\n\n constructor(localBrepSerialized: string, options?: ExtrudedShapeOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n this._color = options?.color ?? this._color;\n this._fatOutlines = options?.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(options?.outlineWidth);\n this._outlineColor = options?.outlineColor ?? this._outlineColor;\n this.freeform = createFreeformGeometry(localBrepSerialized, {\n id: this.ogid,\n placement: clonePlacement(options?.placement),\n });\n\n this.generateGeometry();\n\n if (options?.outline ?? false) {\n this.outline = true;\n }\n }\n\n set color(color: number) {\n this._color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n get color() {\n return this._color;\n }\n\n getBrepSerialized() {\n return this.freeform.getBrepSerialized();\n }\n\n getPlacement(): ObjectTransformation {\n return this.freeform.getPlacement();\n }\n\n setPlacement(placement: ExtrudedShapePlacementUpdate) {\n const current = this.freeform.getPlacement();\n this.freeform.setPlacement({\n anchor: placement.anchor?.clone() ?? current.anchor.clone(),\n translation: placement.translation?.clone() ?? current.translation.clone(),\n rotation: placement.rotation?.clone() ?? current.rotation.clone(),\n scale: placement.scale?.clone() ?? current.scale.clone(),\n });\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.freeform.setTransform(\n translation.clone(),\n rotation.clone(),\n scale.clone()\n );\n this.generateGeometry();\n }\n\n setTranslation(translation: Vector3) {\n this.freeform.setTranslation(translation.clone());\n this.generateGeometry();\n }\n\n setRotation(rotation: Vector3) {\n this.freeform.setRotation(rotation.clone());\n this.generateGeometry();\n }\n\n setScale(scale: Vector3) {\n this.freeform.setScale(scale.clone());\n this.generateGeometry();\n }\n\n union(\n operand: BooleanOperand,\n options?: BooleanExecutionOptions\n ): BooleanResult {\n return booleanUnion(this, operand, options);\n }\n\n intersection(\n operand: BooleanOperand,\n options?: BooleanExecutionOptions\n ): BooleanResult {\n return booleanIntersection(this, operand, options);\n }\n\n subtract(\n operand: BooleanOperand,\n options?: BooleanExecutionOptions\n ): BooleanResult {\n return booleanSubtraction(this, operand, options);\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 return;\n }\n\n const outlinePositions = parseJson<number[]>(\n this.freeform.getOutlineGeometrySerialized()\n );\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outlinePositions,\n color: this._outlineColor,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._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 if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n dispose() {\n this.clearOutlineMesh();\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n return;\n }\n this.material.dispose();\n }\n\n private generateGeometry() {\n const positions = parseJson<number[]>(this.freeform.getGeometrySerialized());\n this.writePositionsToGeometry(this.geometry, positions);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this._color);\n this.material.transparent = true;\n this.material.opacity = 0.82;\n this.material.side = THREE.FrontSide;\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._color,\n transparent: true,\n opacity: 0.82,\n side: THREE.FrontSide,\n polygonOffset: true,\n polygonOffsetFactor: 1,\n polygonOffsetUnits: 1,\n });\n }\n\n if (positions.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 outlinePositions = parseJson<number[]>(\n this.freeform.getOutlineGeometrySerialized()\n );\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, outlinePositions);\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(outlinePositions);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\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 { booleanSubtraction } from \"../operations/boolean\";\nimport type {\n BooleanExecutionOptions,\n BooleanOperand,\n BooleanResult,\n} from \"../operations/boolean\";\n\nexport type ShapeSubtractOperand = BooleanOperand;\nexport type ShapeSubtractOptions = BooleanExecutionOptions;\nexport type ShapeSubtractResult = BooleanResult;\n\n/**\n * Executes a kernel-backed subtraction for a shape wrapper against another boolean operand.\n */\nexport function subtractShapeOperand(\n host: ShapeSubtractOperand,\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n): ShapeSubtractResult {\n return booleanSubtraction(host, operand, options);\n}\n","import * as THREE from \"three\";\nimport * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\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 { ExtrudedShape } from \"./extruded-shape\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\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\nexport type PolygonConfigUpdate = Partial<\n Omit<IPolygonOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type PolygonPlacementUpdate = PolygonPlacementOptions;\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 transformationMatrix: THREE.Matrix4 = new THREE.Matrix4();\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 // private _placement: THREE.Vector3 = new THREE.Vector3(0, 0, 0);\n // private _yaw: number = 0;\n // Store local center offset to align outlines\n // TODO: Can this be moved to Engine? It can increase performance | Needs to be used in other shapes too\n private _geometryCenterOffset = new THREE.Vector3();\n\n // TODO: Make Options Optional\n // constructor(vertices?: Vector3[]) // If no vertices are provided, it will be an empty polygon\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 // TODO: THIS MIGHT HELP WITH SHARING THE POSITION with KERNEL when something is changed\n // const originalSet = this.position.set.bind(this.position);\n // this.position.set = (x: number, y: number, z: number) => {\n // console.log(`Position set to (${x}, ${y}, ${z})`);\n // // your custom logic here (e.g., notify OpenGeometry)\n // return originalSet(x, y, z);\n // };\n\n // // Optional: Override copy if you're using .copy() too\n // const originalCopy = this.position.copy.bind(this.position);\n // this.position.copy = (v: THREE.Vector3) => {\n // console.log(`Position copied from ${v.x}, ${v.y}, ${v.z}`);\n // return originalCopy(v);\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 getEditCapabilities() {\n return createParametricEditCapabilities(\"polygon\", \"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.polygon.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n // /**\n // * Sets the placement of the polygon in 3D space.\n // * @param x X-coordinate\n // * @param y Y-coordinate\n // * @param z Z-coordinate\n // */\n // placement(x: number, y: number, z: number) {\n // this._placement.set(x, y, z);\n \n // // Do the recalculation of position based on the placement\n // const clonedObject = this.clone();\n // clonedObject.rotation.set(0, 0, 0);\n\n // clonedObject.geometry.computeBoundingBox();\n // if (!clonedObject.geometry.boundingBox) return;\n\n // const center = new THREE.Vector3();\n // clonedObject.geometry.boundingBox.getCenter(center);\n // const min = clonedObject.geometry.boundingBox.min;\n // this.position.set(\n // center.x + this._placement.x - min.x,\n // // this._placement.y,\n // 0.01, // Set Y to a small value to avoid z-fighting\n // center.z + this._placement.z - min.z\n // );\n // }\n\n // positionToPlacement() {\n // const clonedObject = this.clone();\n // clonedObject.rotation.set(0, 0, 0);\n // clonedObject.geometry.computeBoundingBox();\n // if (!clonedObject.geometry.boundingBox) return;\n // const min = clonedObject.geometry.boundingBox.min;\n\n // this._placement.set(\n // this.position.x + min.x,\n // this.position.y + min.y,\n // this.position.z + min.z\n // );\n\n // // console.log(\"Placement set to:\", this._placement.x, this._placement.y, this._placement.z);\n // }\n\n // /**\n // * Rotates the polygon around the Y-axis.\n // * @param angle Rotation angle in Degrees\n // */\n // set yaw(angle: number) {\n // this._yaw = angle;\n \n // this.rotation.set(0, 0, 0);\n // this.rotation.y = THREE.MathUtils.degToRad(this._yaw);\n // }\n\n // get yaw() {\n // return this._yaw;\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.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 // this.geometry.computeBoundingBox();\n // const originalCenter = new THREE.Vector3();\n // this.geometry.boundingBox?.getCenter(originalCenter);\n // console.log(\"Original Center:\", originalCenter.x, originalCenter.y, originalCenter.z);\n\n // this.geometry.center();\n // this.geometry.computeBoundingBox();\n // const newCenter = new THREE.Vector3();\n // this.geometry.boundingBox?.getCenter(newCenter);\n // console.log(\"New Center after centering:\", newCenter.x, newCenter.y, newCenter.z);\n\n // if (!this.geometry.boundingBox) return;\n // const min = this.geometry.boundingBox.min;\n // // console.log(\"Position before centering:\", this.position.x, this.position.y, this.position.z);\n // console.log(\"Bounding Box Min:\", min.x, min.y, min.z);\n // this.position.set(-min.x, 0, -min.z);\n\n // if (this._placement) {\n // this.placement(this._placement.x, this._placement.y, this._placement.z);\n // }\n\n // console.log(\"New Position after centering:\", this.position.x, this.position.y, this.position.z);\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 saveTransformationToBREP() {\n if (!this.polygon) return;\n }\n\n // /**\n // * Rotates the object around the Y-axis.\n // * @param angle Rotation angle in Degrees\n // * @returns \n // * @summary If rotation methods from threejs is used, it will rotate around the first vertex which might not be desired.\n // */\n // rotateOnYAxis(angle: number) {\n // if (!this.polygon) return;\n // }\n\n // resetVertices() {\n // if (!this.polygon) return;\n // this.layerVertices = [];\n // this.geometry.dispose();\n // this.polygon?.clear_vertices();\n // this.isTriangulated = false;\n // }\n\n // addVertex(threeVertex: Vector3) {\n // if (this.isTriangulated) {\n // this.layerVertices = [];\n // this.geometry.dispose();\n // this.polygon?.clear_vertices();\n // this.isTriangulated = false;\n\n // for (const vertex of this.layerBackVertices) {\n // this.layerVertices.push(vertex.clone());\n // }\n\n // };\n\n // const backupVertex = new Vector3(\n // parseFloat(threeVertex.x.toFixed(2)),\n // 0,\n // parseFloat(threeVertex.z.toFixed(2))\n // );\n // this.layerBackVertices.push(backupVertex);\n\n // const vertex = new Vector3(\n // parseFloat(threeVertex.x.toFixed(2)),\n // // when doing the parse operation getting -0 instead of 0\n // 0,\n // parseFloat(threeVertex.z.toFixed(2))\n // );\n // this.layerVertices.push(vertex);\n\n // if (this.layerVertices.length > 3) {\n // this.polygon?.add_vertices(this.layerVertices);\n // const bufFlush = this.polygon?.triangulate();\n \n // if (!bufFlush) {\n // return;\n // }\n // this.addFlushBufferToScene(bufFlush);\n\n // this.isTriangulated = true;\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 extrude(height: number = 1, faceId: number = 0) {\n const extrudeFaceExport = (OGKernel as Record<string, unknown>)[\"extrudeBrepFace\"];\n if (typeof extrudeFaceExport !== \"function\") {\n throw new Error(\n \"extrudeBrepFace is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const localBrepSerialized = this.polygon.get_local_brep_serialized();\n const extrudedLocalBrep = (extrudeFaceExport as CallableFunction)(\n localBrepSerialized,\n faceId,\n height\n ) as string;\n const placement = this.getPlacement();\n\n return new ExtrudedShape(extrudedLocalBrep, {\n color: this.color,\n outline: this.outline,\n fatOutlines: this.fatOutlines,\n outlineWidth: this.outlineWidth,\n outlineColor: this.outlineColor,\n placement: {\n anchor: this.getAnchor(),\n translation: placement.translation,\n rotation: placement.rotation,\n scale: placement.scale,\n },\n });\n }\n\n getBrepData() {\n if (!this.polygon) return null;\n const brepData = this.polygon.get_brep_serialized();\n return brepData;\n }\n\n /**\n * Subtracts another boolean operand from this polygon.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, options);\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 // TODO: Do we need a separate method for Hole Outlines?\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\n // this.#outlineMesh.geometry.center();\n // this.#outlineMesh.applyMatrix4(this.transformationMatrix);\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 // bTree() {\n // if (!this.polygon) return;\n // const bTree = this.polygon.binary_tree();\n // const parsedData = JSON.parse(bTree);\n // console.log(parsedData);\n // }\n\n disposeGeometryMaterial() {\n if (this.geometry) {\n this.geometry.dispose();\n }\n if (this.material instanceof THREE.Material) {\n this.material.dispose();\n }\n this.clearOutlineMesh();\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 // // console.log(\"Disposing OG - Polygon\");\n // this.geometry.dispose();\n // if (this.material instanceof THREE.Material) {\n // this.material.dispose();\n // }\n // if (this.#outlineMesh) {\n // this.#outlineMesh.geometry.dispose();\n // if (this.#outlineMesh.material instanceof THREE.Material) {\n // this.#outlineMesh.material.dispose();\n // }\n // }\n // this.polygon = null;\n // this.layerVertices = [];\n // this.layerBackVertices = [];\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 { OGCylinder, 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\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\nexport interface ICylinderOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n height: number;\n segments: number;\n angle: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport interface CylinderPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type CylinderConfigUpdate = Partial<\n Omit<ICylinderOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type CylinderPlacementUpdate = CylinderPlacementOptions;\n\nexport class Cylinder extends THREE.Mesh {\n ogid: string;\n options: ICylinderOptions = {\n center: new Vector3(0, 0, 0),\n radius: 1,\n height: 1,\n segments: 32,\n angle: 2 * Math.PI,\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 cylinder: OGCylinder;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set radius(value: number) {\n this.setConfig({ radius: value });\n }\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?: ICylinderOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.cylinder = new OGCylinder(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 radius: this.options.radius,\n height: this.options.height,\n segments: this.options.segments,\n angle: this.options.angle,\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 Cylinder\");\n }\n }\n\n setConfig(options: CylinderConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"radius\" in options ||\n \"height\" in options ||\n \"segments\" in options ||\n \"angle\" 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 { radius, height, segments, angle, center } = this.options;\n this.cylinder.set_config(\n center.clone(),\n radius,\n height,\n angle,\n segments\n );\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.cylinder.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: CylinderPlacementUpdate) {\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.cylinder.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(\"cylinder\", \"radial\");\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.cylinder.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.cylinder.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.cylinder.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 if (!this.cylinder) return null;\n const brepData = this.cylinder.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this cylinder.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts another boolean operand, such as an Opening, from this cylinder.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.cylinder.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\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 { OGCuboid, 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\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\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: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n}\n\nexport type CuboidConfigUpdate = Partial<\n Omit<ICuboidOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\nexport type CuboidPlacementUpdate = CuboidPlacementOptions;\n\nexport class Cuboid extends THREE.Mesh {\n ogid: string;\n options: ICuboidOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n height: 1,\n depth: 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 fatOutlines: false,\n outlineWidth: 1,\n };\n\n private cuboid: OGCuboid;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set width(value: number) {\n this.setConfig({ width: value });\n }\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?: ICuboidOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.cuboid = new OGCuboid(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\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 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 setConfig(options: CuboidConfigUpdate) {\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 this.cuboid.set_config(\n this.options.center.clone(),\n this.options.width,\n this.options.height,\n this.options.depth\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 generateGeometry() {\n const geometryData = Array.from(this.cuboid.get_geometry_buffer());\n this.writePositionsToGeometry(this.geometry, geometryData);\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.cuboid.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 if (!this.cuboid) return null;\n const brepData = this.cuboid.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this cuboid.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts another boolean operand, such as an Opening, from this cuboid.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.cuboid.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\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 get outlineMesh() {\n return this.#outlineMesh;\n }\n\n getAnchor() {\n const anchor = this.cuboid.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: CuboidPlacementUpdate) {\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.cuboid.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 getEditCapabilities() {\n return createParametricEditCapabilities(\"cuboid\", \"box\");\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.cuboid.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\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 { OGCuboid, 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\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\nexport interface IOpeningOptions {\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\nexport interface OpeningPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type OpeningConfigUpdate = Partial<\n Omit<IOpeningOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type OpeningPlacementUpdate = OpeningPlacementOptions;\n\nexport class Opening extends THREE.Mesh {\n ogid: string;\n options: IOpeningOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n height: 1,\n depth: 0.2,\n color: 0xdad7cd,\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 opening: OGCuboid;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set width(value: number) {\n this.setConfig({ width: value });\n }\n\n set height(value: number) {\n this.setConfig({ height: value });\n }\n\n set depth(value: number) {\n this.setConfig({ depth: value });\n }\n\n get dimensions() {\n return {\n width: this.options.width,\n height: this.options.height,\n depth: this.options.depth,\n };\n }\n\n constructor(options?: IOpeningOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.opening = new OGCuboid(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 Opening\");\n }\n }\n\n setConfig(options: OpeningConfigUpdate) {\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.opening.set_config(\n center.clone(),\n width,\n height,\n depth\n );\n\n this.generateGeometry();\n return;\n }\n\n if (colorChanged && this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(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.opening.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: OpeningPlacementUpdate) {\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.opening.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(\"opening\", \"box\");\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.opening.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.opening.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;\n this.material.depthWrite = false;\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,\n depthWrite: false,\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.opening.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 if (!this.opening) return null;\n const brepData = this.opening.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this opening.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts another boolean operand from this opening volume.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, options);\n }\n\n /**\n * Uses this opening volume to cut a host shape.\n */\n subtractFrom(\n host: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(host, this, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.opening.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\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 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\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\nexport interface ISphereOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n widthSegments: number;\n heightSegments: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport interface SpherePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type SphereConfigUpdate = Partial<\n Omit<ISphereOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type SpherePlacementUpdate = SpherePlacementOptions;\n\n/* eslint-disable no-unused-vars */\ninterface ISphereKernelInstance {\n set_config: (\n ..._args: [Vector3, number, number, number]\n ) => void;\n set_transform: (..._args: [Vector3, Vector3, Vector3]) => 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 SphereKernelConstructor = new (..._args: [string]) => ISphereKernelInstance;\n/* eslint-enable no-unused-vars */\n\nexport class Sphere extends THREE.Mesh {\n ogid: string;\n options: ISphereOptions = {\n center: new Vector3(0, 0, 0),\n radius: 1,\n widthSegments: 24,\n heightSegments: 16,\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 sphere: ISphereKernelInstance;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set radius(value: number) {\n this.setConfig({ radius: value });\n }\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?: ISphereOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n\n const sphereKey = [\"OG\", \"Sphere\"].join(\"\");\n const sphereExport = (OGKernel as Record<string, unknown>)[sphereKey];\n if (typeof sphereExport !== \"function\") {\n throw new Error(\n \"OGSphere is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\"\n );\n }\n const SphereKernel = sphereExport as SphereKernelConstructor;\n this.sphere = new SphereKernel(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 radius: this.options.radius,\n widthSegments: this.options.widthSegments,\n heightSegments: this.options.heightSegments,\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 Sphere\");\n }\n }\n\n setConfig(options: SphereConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"radius\" in options ||\n \"widthSegments\" in options ||\n \"heightSegments\" 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.sphere.set_config(\n this.options.center.clone(),\n this.options.radius,\n this.options.widthSegments,\n this.options.heightSegments\n );\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.sphere.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: SpherePlacementUpdate) {\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.sphere.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(\"sphere\", \"radial\");\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.sphere.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.sphere.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.sphere.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.sphere.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this sphere.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts another boolean operand, such as an Opening, from this sphere.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const lineBuffer = Array.from(this.sphere.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: lineBuffer,\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 { 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\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\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\nexport interface WedgePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type WedgeConfigUpdate = Partial<\n Omit<IWedgeOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type WedgePlacementUpdate = WedgePlacementOptions;\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 /**\n * Subtracts another boolean operand, such as an Opening, from this wedge.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, options);\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\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\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\nexport interface SweepPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type SweepConfigUpdate = Partial<\n Omit<ISweepOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type SweepPlacementUpdate = SweepPlacementOptions;\n\n/* eslint-disable no-unused-vars */\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/* eslint-enable no-unused-vars */\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 /**\n * Subtracts another boolean operand, such as an Opening, from this sweep.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, options);\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 endAngle: Math.PI * 1.5,\n segments: 32,\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 { Sphere } from \"../shapes/sphere\";\nimport { Sweep } from \"../shapes/sweep\";\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 fatOutlines: true,\n outlineWidth: fatOutlineWidth,\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 segments: 28,\n angle: Math.PI * 2,\n color: 0xf97316,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\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.0, 1.2),\n radius: 0.9,\n widthSegments: 28,\n heightSegments: 18,\n color: 0x0ea5e9,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\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 fatOutlines: true,\n outlineWidth: fatOutlineWidth,\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, 90.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 THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Polyline } from \"../primitives/polyline\";\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 function createWallFromOffsetsExample(scene: THREE.Scene) {\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 = 90.0;\n const bevel = true;\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 return {\n centerline,\n leftOffsetPolyline,\n rightOffsetPolyline,\n wallPolygon,\n leftOffset,\n rightOffset,\n };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\n\nimport {\n BooleanExecutionOptions,\n BooleanResult,\n booleanIntersection,\n booleanSubtraction,\n booleanUnion,\n} from \"../operations/boolean\";\nimport { Cuboid } from \"../shapes/cuboid\";\nimport { Polygon } from \"../shapes/polygon\";\nimport { Sphere } from \"../shapes/sphere\";\n\nexport type BooleanExampleOperation = \"union\" | \"intersection\" | \"subtraction\";\nexport type BooleanExampleMode = \"solid\" | \"polygon\";\n\nexport interface BooleanExampleBuildOptions extends BooleanExecutionOptions {\n mode: BooleanExampleMode;\n sphereCenter?: Vector3;\n polygonOffset?: Vector3;\n}\n\nexport interface BooleanExampleBuildResult {\n group: THREE.Group;\n lhs: THREE.Object3D;\n rhs: THREE.Object3D;\n result: BooleanResult;\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 = options.mode === \"solid\"\n ? createSolidPreset(operation, options)\n : createPolygonPreset(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\n/**\n * Builds the solid-operand preset used by the example pages.\n */\nfunction createSolidPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n const outlineWidth = options.outlineWidth ?? 3;\n const base = new Cuboid({\n center: new Vector3(-0.1, 0.0, 0.0),\n width: 2.1,\n height: 1.4,\n depth: 1.6,\n color: 0x60a5fa,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n\n const tool = new Sphere({\n center: options.sphereCenter ?? new Vector3(0.45, 0.12, 0.18),\n radius: operation === \"intersection\" ? 0.88 : 0.78,\n widthSegments: 22,\n heightSegments: 16,\n color: 0xf97316,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n\n base.outline = options.outline ?? true;\n tool.outline = options.outline ?? true;\n\n return {\n title: `${capitalize(operation)} Solid`,\n description: \"Cuboid and sphere overlap to demonstrate the 3D solid boolean path.\",\n lhsOperand: base,\n rhsOperand: tool,\n lhsVisual: base,\n rhsVisual: tool,\n };\n}\n\n/**\n * Builds the coplanar polygon preset used by the example pages.\n */\nfunction createPolygonPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n const outlineWidth = options.outlineWidth ?? 3;\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 Polygon({\n vertices: lhsVertices,\n color: 0x60a5fa,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n const rhs = new Polygon({\n vertices: rhsVertices,\n color: 0xf97316,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n\n lhs.outline = options.outline ?? true;\n rhs.outline = options.outline ?? true;\n\n return {\n title: `${capitalize(operation)} Polygon`,\n description: \"Two coplanar polygon faces exercise the planar boolean path.\",\n lhsOperand: lhs,\n rhsOperand: rhs,\n lhsVisual: lhs,\n rhsVisual: rhs,\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 {\n FreeformEditResult,\n FreeformEditor,\n createFreeformEditor,\n} from \"../editor\";\nimport { Line } from \"../primitives/line\";\nimport { Polygon } from \"../shapes/polygon\";\nimport { Cuboid } from \"../shapes/cuboid\";\n\nfunction topFaceId(freeformEditor: FreeformEditor): number | null {\n let bestFaceId: number | null = null;\n let bestY = Number.NEGATIVE_INFINITY;\n\n for (const face of freeformEditor.getTopologyRenderData().faces) {\n const info = freeformEditor.getFaceInfo(face.face_id);\n if (info.centroid.y > bestY) {\n bestY = info.centroid.y;\n bestFaceId = face.face_id;\n }\n }\n\n return bestFaceId;\n}\n\n/**\n * Demonstrates the intended editing flow for editor-controls:\n * parametric config/placement edits first, then explicit freeform conversion,\n * including wire-backed freeform edge insertion on a converted line.\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 fatOutlines: true,\n outlineWidth: 4,\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 const freeform = cuboid.toFreeform(`${cuboid.ogid}-freeform`);\n const freeformEditor = createFreeformEditor(freeform);\n const topFace = topFaceId(freeformEditor);\n let freeformResult: FreeformEditResult | null = null;\n\n if (topFace !== null) {\n freeformResult = freeformEditor.pushPullFace(topFace, 0.35, {\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 freeform,\n freeformEditor,\n freeformResult,\n };\n}\n","/**\n * OpenGeometry Three.js adapter entrypoint.\n * @module @opengeometry/kernel-three\n */\nimport init, {\n OGSceneManager,\n Vector3,\n} from \"../opengeometry/pkg/opengeometry\";\n// Vector3 is also available in opengeometry package\n// import { Vector3 } from \"@opengeometry/openmaths\";\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\nexport interface OGStlExportResult {\n bytes: Uint8Array;\n reportJson: string;\n}\n\nexport interface OGStepExportResult {\n text: string;\n reportJson: string;\n}\n\nexport interface OGIfcExportResult {\n text: string;\n reportJson: string;\n}\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 creates and initializes an instance of OpenGeometry.\n *\n * This factory method sets up the OpenGeometry engine by linking it with the\n * rendering context and the WebAssembly module. It ensures all required\n * options are provided and prepares the instance for 3D geometry operations.\n *\n * @param options - Configuration object for initializing OpenGeometry.\n * @returns A promise that resolves to a fully initialized OpenGeometry instance.\n * @throws If any of the required options (`container`, `scene`, or `camera`) are missing.\n *\n * @example\n * ```ts\n * const openGeometry = await OpenGeometry.create({\n * container: document.getElementById('myContainer')!,\n * scene: threeScene,\n * camera: threeCamera,\n * wasmURL: '/assets/opengeometry.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\nexport {\n OGSceneManager,\n Vector3,\n SpotLabel,\n}\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.\n */\nexport * from \"./src/operations/index\";\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","_assertClass","instance","klass","name","cachedFloat64ArrayMemory0","getFloat64ArrayMemory0","Float64Array","getArrayF64FromWasm0","cachedDataViewMemory0","getDataViewMemory0","detached","DataView","passArrayJsValueToWasm0","array","i","add","setUint32","isLikeNone","x","extrudeBrepFace","local_brep_serialized","face_id","distance","deferred3_0","deferred3_1","ptr0","__wbindgen_malloc","__wbindgen_realloc","len0","ptr2","len2","__wbindgen_free","booleanUnion","lhs_brep_serialized","rhs_brep_serialized","options_json","ptr1","len1","OGBooleanResult","__wrap","booleanIntersection","booleanSubtraction","getArrayJsValueFromWasm0","result","push","getUint32","__externref_drop_slice","Matrix3Finalization","FinalizationRegistry","register","unregister","__wbg_matrix3_free","Matrix3","Object","create","prototype","__wbg_ptr","__destroy_into_raw","free","constructor","matrix3_new","m0","m1","m2","m3","m4","m5","m6","m7","m8","matrix3_set","clone","matrix3_clone","identity","matrix3_identity","determinant","matrix3_determinant","adjucate","matrix3_adjucate","inverse","matrix3_inverse","transpose","matrix3_transpose","Matrix4Finalization","__wbg_matrix4_free","Matrix4","elements","matrix4_elements","v1","matrix4_new","m9","m10","m11","m12","m13","m14","m15","matrix4_set","matrix4_clone","matrix4_identity","matrix4_determinant","matrix4_adjucate","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","matrix4_transpose","OGArcFinalization","__wbg_ogarc_free","OGArc","id","ogarc_set_id","deferred1_0","deferred1_1","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","scale","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","get_brep_serialized","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","OGBooleanResultFinalization","__wbg_ogbooleanresult_free","brepSerialized","ogbooleanresult_brepSerialized","geometrySerialized","ogbooleanresult_geometrySerialized","outlineGeometrySerialized","ogbooleanresult_outlineGeometrySerialized","reportJson","ogbooleanresult_reportJson","OGCuboidFinalization","__wbg_ogcuboid_free","OGCuboid","ogcuboid_set_id","ogcuboid_id","ogcuboid_new","width","height","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","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","OGFreeformEditorFinalization","__wbg_ogfreeformeditor_free","OGFreeformEditor","ogfreeformeditor_new","getTopologyRenderData","geometry","deferred2_0","deferred2_1","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","deferred4_0","deferred4_1","ogfreeformeditor_moveFace","ptr3","len3","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","getOutlineGeometrySerialized","ogfreeformgeometry_getOutlineGeometrySerialized","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","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_set_anchor","ogline_reset_anchor","ogline_get_offset_serialized","get_dxf_serialized","ogline_get_dxf_serialized","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","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","camera_json","hlr_json","deferred5_0","deferred5_1","ogscenemanager_projectTo2DCamera","ptr4","len4","projectTo2DCameraPretty","ogscenemanager_projectTo2DCameraPretty","projectTo2DLines","ogscenemanager_projectTo2DLines","projectTo2DLinesPretty","ogscenemanager_projectTo2DLinesPretty","projectCurrentTo2DCamera","ogscenemanager_projectCurrentTo2DCamera","projectCurrentTo2DLines","ogscenemanager_projectCurrentTo2DLines","exportBrepToStl","config_json","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_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","__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","initSync","getPrototypeOf","Module","module_or_path","URL","import","meta","url","Request","fetch","uuidv4","cloneVector","clonePlacement","toObjectTransformation","parseJson","toVector3","toPlainVector3","normalizePlacement","KernelFreeformEditor","serializeBrepLike","OGKernel[\"extrudeBrepFace\"]","OGKernel[\"OGSweep\"]","EPSILON","areClose","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/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/arc.ts","../main/main/opengeometry-three/src/primitives/rectangle.ts","../main/main/opengeometry-three/src/primitives/curve.ts","../main/main/opengeometry-three/src/shapes/outline-utils.ts","../main/main/opengeometry-three/src/operations/boolean.ts","../main/main/opengeometry-three/src/shapes/boolean-subtract.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/examples/wall-from-offsets.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 _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\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 for union.\n * @param {string} lhs_brep_serialized\n * @param {string} rhs_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanUnion(lhs_brep_serialized, rhs_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(rhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanUnion(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point for intersection.\n * @param {string} lhs_brep_serialized\n * @param {string} rhs_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanIntersection(lhs_brep_serialized, rhs_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(rhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanIntersection(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point for subtraction.\n * @param {string} lhs_brep_serialized\n * @param {string} rhs_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanSubtraction(lhs_brep_serialized, rhs_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(rhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanSubtraction(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\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 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 OGBooleanResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogbooleanresult_free(ptr >>> 0, 1));\n/**\n * Result payload returned across the wasm boundary.\n */\nexport class OGBooleanResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGBooleanResult.prototype);\n obj.__wbg_ptr = ptr;\n OGBooleanResultFinalization.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 OGBooleanResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogbooleanresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get brepSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogbooleanresult_brepSerialized(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 geometrySerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogbooleanresult_geometrySerialized(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 outlineGeometrySerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogbooleanresult_outlineGeometrySerialized(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.ogbooleanresult_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 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 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 {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 {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 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.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.ogline_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\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 cachedFloat64ArrayMemory0 = 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","import { \n // OGLine, \n // Vector3 \n} from \"./../../opengeometry/pkg/opengeometry\";\n\nexport const OPEN_GEOMETRY_THREE_VERSION = '0.0.6';\n\nexport interface OpenGeometryOptions {\n wasmURL?: string;\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","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\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\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\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\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 getFreeformGeometry(): FreeformGeometry {\n return this.geometry;\n }\n\n getTopologyRenderData(): TopologyRenderData {\n return normalizeTopologyRenderData(\n parseJson<TopologyRenderData>(\n this.editor.getTopologyRenderData(this.geometry.getKernelGeometry())\n )\n );\n }\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 getEdgeInfo(edgeId: TopologyId): EdgeInfo {\n return normalizeEdgeInfo(\n parseJson<EdgeInfo>(\n this.editor.getEdgeInfo(this.geometry.getKernelGeometry(), edgeId)\n )\n );\n }\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 getEditCapabilities(): FreeformEditCapabilities {\n return normalizeFreeformCapabilities(\n parseJson<RawFreeformOperationCapabilities>(\n this.editor.getEditCapabilities(this.geometry.getKernelGeometry())\n )\n );\n }\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 getEdgeEditCapabilities(edgeId: TopologyId): FreeformFeatureEditCapabilities {\n return normalizeFeatureCapabilities(\n parseJson<RawFreeformFeatureEditCapabilities>(\n this.editor.getEdgeEditCapabilities(this.geometry.getKernelGeometry(), edgeId)\n )\n );\n }\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 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 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 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 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 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 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 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 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 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 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\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\nexport class FreeformGeometry {\n private readonly geometry: OGFreeformGeometry;\n\n constructor(geometry: OGFreeformGeometry) {\n this.geometry = geometry;\n }\n\n getId(): string {\n return this.geometry.id;\n }\n\n getBrepSerialized(): string {\n return this.geometry.getBrepSerialized();\n }\n\n getLocalBrepSerialized(): string {\n return this.geometry.getLocalBrepSerialized();\n }\n\n getGeometrySerialized(): string {\n return this.geometry.getGeometrySerialized();\n }\n\n getOutlineGeometrySerialized(): string {\n return this.geometry.getOutlineGeometrySerialized();\n }\n\n getPlacement(): ObjectTransformation {\n return normalizePlacement(\n parseJson<ObjectTransformation>(this.geometry.getPlacementSerialized())\n );\n }\n\n setPlacement(transform: ObjectTransformation): void {\n this.geometry.setPlacementSerialized(\n JSON.stringify(toPlainObjectTransformation(transform))\n );\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3): void {\n this.geometry.setTransform(translation, rotation, scale);\n }\n\n setTranslation(translation: Vector3): void {\n this.geometry.setTranslation(translation);\n }\n\n setRotation(rotation: Vector3): void {\n this.geometry.setRotation(rotation);\n }\n\n setScale(scale: Vector3): void {\n this.geometry.setScale(scale);\n }\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\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","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\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\nexport interface LinePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type LineConfigUpdate = Partial<\n Omit<ILineOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type LinePlacementUpdate = LinePlacementOptions;\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/* eslint-disable no-unused-vars */\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n/* eslint-enable no-unused-vars */\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\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\nexport interface PolylinePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type PolylineConfigUpdate = Partial<\n Omit<IPolylineOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type PolylinePlacementUpdate = PolylinePlacementOptions;\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/* eslint-disable no-unused-vars */\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n/* eslint-enable no-unused-vars */\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 { OGArc, 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// import { IArcOptions } from \"../base-types\";\n\nexport interface IArcOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n startAngle: number;\n endAngle: number;\n segments: number;\n color: number;\n fatLines?: boolean;\n width?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport interface ArcPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type ArcConfigUpdate = Partial<\n Omit<IArcOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type ArcPlacementUpdate = ArcPlacementOptions;\n\nexport class Arc extends THREE.Line {\n ogid: string;\n options: IArcOptions = {\n center: new Vector3(0, 0, 0),\n radius: 3.5,\n startAngle: 0,\n endAngle: Math.PI * 2,\n segments: 32,\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 private arc: OGArc;\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?: IArcOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n this.arc = new OGArc(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 radius: this.options.radius,\n startAngle: this.options.startAngle,\n endAngle: this.options.endAngle,\n segments: this.options.segments,\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 Circle Arc\");\n }\n }\n\n setConfig(options: ArcConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"radius\" in options ||\n \"segments\" in options ||\n \"startAngle\" in options ||\n \"endAngle\" 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.arc.set_config(\n nextOptions.center.clone(),\n nextOptions.radius,\n nextOptions.startAngle,\n nextOptions.endAngle,\n nextOptions.segments\n );\n\n this.generateGeometry();\n return;\n }\n\n if (renderChanged) {\n this.updateRenderStyle();\n }\n }\n\n getAnchor() {\n const anchor = this.arc.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: ArcPlacementUpdate) {\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.arc.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(\"arc\", \"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.arc.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\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.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\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.arc.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.arc.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for Arc\");\n }\n return JSON.parse(brepData);\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 { 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\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\nexport interface RectanglePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type RectangleConfigUpdate = Partial<\n Omit<IRectangleOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type RectanglePlacementUpdate = RectanglePlacementOptions;\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/* eslint-disable no-unused-vars */\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n/* eslint-enable no-unused-vars */\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\nexport interface ICurveOptions {\n ogid?: string;\n controlPoints: Vector3[];\n color: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport interface CurvePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type CurveConfigUpdate = Partial<\n Omit<ICurveOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type CurvePlacementUpdate = CurvePlacementOptions;\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/* eslint-disable no-unused-vars */\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n/* eslint-enable no-unused-vars */\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 { 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\nexport type ShapeOutlineMesh = THREE.LineSegments | LineSegments2;\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\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\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\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\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\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\";\nimport * as THREE from \"three\";\nimport { toCreasedNormals } from \"three/examples/jsm/utils/BufferGeometryUtils.js\";\n\nimport {\n createFreeformGeometry,\n type CreateFreeformGeometryOptions,\n type FreeformGeometry,\n} from \"../freeform\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"../shapes/outline-utils\";\n\nexport type BooleanOperand =\n | string\n | Record<string, unknown>\n | {\n getBrep?: () => unknown;\n getBrepData?: () => unknown;\n getBrepSerialized?: () => string;\n };\n\nexport interface BooleanKernelOptions {\n tolerance?: number;\n mergeCoplanarFaces?: boolean;\n}\n\nexport interface BooleanRenderOptions {\n color?: number;\n outline?: boolean;\n fatOutlines?: boolean;\n outlineWidth?: number;\n}\n\nexport interface BooleanExecutionOptions extends BooleanRenderOptions {\n kernel?: BooleanKernelOptions;\n}\n\nexport interface BooleanReport {\n operation: string;\n operand_kind: string;\n input_face_count: number;\n input_triangle_count: number;\n output_face_count: number;\n output_shell_count: number;\n empty: boolean;\n}\n\ninterface KernelBooleanResult {\n brepSerialized: string;\n geometrySerialized: string;\n outlineGeometrySerialized: string;\n reportJson: string;\n}\n\n/* eslint-disable no-unused-vars */\ntype KernelBooleanFunction = (\n lhsBrepSerialized: string,\n rhsBrepSerialized: string,\n optionsJson?: string\n) => KernelBooleanResult;\n/* eslint-enable no-unused-vars */\n\nconst BOOLEAN_CREASE_ANGLE = Math.PI / 5;\nconst BOOLEAN_OUTLINE_THRESHOLD_DEGREES = 26;\n\n/**\n * Renderable result mesh returned by the kernel boolean helpers.\n */\nexport class BooleanResult extends THREE.Mesh {\n ogid: string;\n report: BooleanReport | null = null;\n\n private brepSerialized = \"\";\n private brepData: Record<string, unknown> | null = null;\n private outlinePositions: number[] = [];\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n #outlineMesh: ShapeOutlineMesh | null = null;\n\n constructor(\n kernelResult: KernelBooleanResult,\n options?: BooleanRenderOptions\n ) {\n super();\n this.ogid = getUUID();\n this._fatOutlines = options?.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(options?.outlineWidth);\n this.applyKernelResult(kernelResult, options?.color ?? 0x2563eb);\n\n if (options?.outline ?? false) {\n this.outline = true;\n }\n }\n\n /**\n * Rebuilds the mesh, cached BRep payload, and outline geometry from the kernel output.\n */\n applyKernelResult(kernelResult: KernelBooleanResult, color: number = 0x2563eb) {\n this.disposeGeometry();\n\n this.brepSerialized = kernelResult.brepSerialized;\n this.brepData = JSON.parse(kernelResult.brepSerialized) as Record<string, unknown>;\n this.report = JSON.parse(kernelResult.reportJson) as BooleanReport;\n\n const positions = JSON.parse(kernelResult.geometrySerialized) as number[];\n const baseGeometry = new THREE.BufferGeometry();\n baseGeometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n const geometry = toCreasedNormals(baseGeometry, BOOLEAN_CREASE_ANGLE);\n geometry.computeBoundingBox();\n this.outlinePositions = getRenderableOutlinePositions(\n geometry,\n kernelResult.outlineGeometrySerialized\n );\n\n const material = new THREE.MeshStandardMaterial({\n color,\n transparent: true,\n opacity: 0.82,\n side: THREE.FrontSide,\n polygonOffset: true,\n polygonOffsetFactor: 1,\n polygonOffsetUnits: 1,\n });\n\n this.geometry = geometry;\n this.material = material;\n\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n /**\n * Returns the parsed BRep object for reuse with scene export or downstream operations.\n */\n getBrepData() {\n return this.brepData;\n }\n\n /**\n * Returns the serialized BRep JSON emitted by the kernel boolean operation.\n */\n getBrepSerialized() {\n return this.brepSerialized;\n }\n\n canConvertToFreeform() {\n return this.brepSerialized.length > 0;\n }\n\n /**\n * Converts the boolean output into a first-class freeform geometry object so\n * it can participate in direct face/edge/vertex editing.\n */\n toFreeform(options?: CreateFreeformGeometryOptions): FreeformGeometry {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This boolean result cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.getBrepSerialized(), {\n id: options?.id ?? this.ogid,\n placement: options?.placement,\n });\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (!enable || this.outlinePositions.length === 0) {\n return;\n }\n\n this.#outlineMesh = createShapeOutlineMesh({\n positions: this.outlinePositions,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._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 if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n disposeGeometry() {\n this.clearOutlineMesh();\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n return;\n }\n this.material.dispose();\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\n/**\n * Computes a kernel-backed boolean union and returns a renderable result mesh.\n */\nexport function booleanUnion(\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n return executeBoolean(\"booleanUnion\", lhs, rhs, options);\n}\n\n/**\n * Computes a kernel-backed boolean intersection and returns a renderable result mesh.\n */\nexport function booleanIntersection(\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n return executeBoolean(\"booleanIntersection\", lhs, rhs, options);\n}\n\n/**\n * Computes a kernel-backed boolean subtraction and returns a renderable result mesh.\n */\nexport function booleanSubtraction(\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n return executeBoolean(\"booleanSubtraction\", lhs, rhs, options);\n}\n\n/**\n * Normalizes mixed wrapper/raw operands, invokes the wasm boolean export, and\n * returns the renderable result wrapper.\n */\nfunction executeBoolean(\n exportName: \"booleanUnion\" | \"booleanIntersection\" | \"booleanSubtraction\",\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n const booleanExport = (OGKernel as Record<string, unknown>)[exportName];\n if (typeof booleanExport !== \"function\") {\n throw new Error(\n `${exportName} is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.`\n );\n }\n\n const kernelFunction = booleanExport as KernelBooleanFunction;\n const kernelOptions = serializeKernelOptions(options?.kernel);\n const kernelResult = kernelFunction(\n resolveOperandSerialized(lhs),\n resolveOperandSerialized(rhs),\n kernelOptions\n );\n\n const result = new BooleanResult(kernelResult, options);\n if (options?.outline ?? true) {\n result.outline = true;\n }\n return result;\n}\n\n/**\n * Accepts wrapper objects, raw BRep data, or serialized JSON and normalizes\n * everything into the kernel's serialized input format.\n */\nfunction resolveOperandSerialized(operand: BooleanOperand): string {\n if (typeof operand === \"string\") {\n return operand;\n }\n\n if (typeof operand.getBrepSerialized === \"function\") {\n return serializeBrepLike(operand.getBrepSerialized());\n }\n\n if (typeof operand.getBrepData === \"function\") {\n return serializeBrepLike(operand.getBrepData());\n }\n\n if (typeof operand.getBrep === \"function\") {\n return serializeBrepLike(operand.getBrep());\n }\n\n return serializeBrepLike(operand);\n}\n\n/**\n * Accepts either a parsed BRep object or an already serialized JSON payload\n * and always returns the canonical serialized form expected by the wasm API.\n */\nfunction serializeBrepLike(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n\n return JSON.stringify(value);\n}\n\n/**\n * Translates the camelCase Three-side options into the snake_case wasm payload.\n */\nfunction serializeKernelOptions(options?: BooleanKernelOptions) {\n if (!options) {\n return undefined;\n }\n\n return JSON.stringify({\n tolerance: options.tolerance,\n merge_coplanar_faces: options.mergeCoplanarFaces,\n });\n}\n\n/**\n * Builds a display-quality outline buffer from the rendered mesh and falls back\n * to the kernel-provided edges when the client-side extraction is empty.\n */\nfunction getRenderableOutlinePositions(\n geometry: THREE.BufferGeometry,\n fallbackSerialized: string\n) {\n const edgesGeometry = new THREE.EdgesGeometry(\n geometry,\n BOOLEAN_OUTLINE_THRESHOLD_DEGREES\n );\n const positionsAttribute = edgesGeometry.getAttribute(\"position\");\n const positions =\n positionsAttribute && positionsAttribute.count > 0\n ? Array.from(positionsAttribute.array as ArrayLike<number>)\n : [];\n edgesGeometry.dispose();\n\n if (positions.length > 0) {\n return positions;\n }\n\n return JSON.parse(fallbackSerialized) as number[];\n}\n","import { booleanSubtraction } from \"../operations/boolean\";\nimport type {\n BooleanExecutionOptions,\n BooleanOperand,\n BooleanResult,\n} from \"../operations/boolean\";\n\nexport type ShapeSubtractOperand = BooleanOperand;\nexport type ShapeSubtractOptions = BooleanExecutionOptions;\nexport type ShapeSubtractResult = BooleanResult;\n\n/**\n * Executes a kernel-backed subtraction for a shape wrapper against another boolean operand.\n */\nexport function subtractShapeOperand(\n host: ShapeSubtractOperand,\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n): ShapeSubtractResult {\n return booleanSubtraction(host, operand, options);\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 { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\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\nexport type PolygonConfigUpdate = Partial<\n Omit<IPolygonOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type PolygonPlacementUpdate = PolygonPlacementOptions;\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 transformationMatrix: THREE.Matrix4 = new THREE.Matrix4();\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 // private _placement: THREE.Vector3 = new THREE.Vector3(0, 0, 0);\n // private _yaw: number = 0;\n // Store local center offset to align outlines\n // TODO: Can this be moved to Engine? It can increase performance | Needs to be used in other shapes too\n private _geometryCenterOffset = new THREE.Vector3();\n\n // TODO: Make Options Optional\n // constructor(vertices?: Vector3[]) // If no vertices are provided, it will be an empty polygon\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 // TODO: THIS MIGHT HELP WITH SHARING THE POSITION with KERNEL when something is changed\n // const originalSet = this.position.set.bind(this.position);\n // this.position.set = (x: number, y: number, z: number) => {\n // console.log(`Position set to (${x}, ${y}, ${z})`);\n // // your custom logic here (e.g., notify OpenGeometry)\n // return originalSet(x, y, z);\n // };\n\n // // Optional: Override copy if you're using .copy() too\n // const originalCopy = this.position.copy.bind(this.position);\n // this.position.copy = (v: THREE.Vector3) => {\n // console.log(`Position copied from ${v.x}, ${v.y}, ${v.z}`);\n // return originalCopy(v);\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 getEditCapabilities() {\n return createParametricEditCapabilities(\"polygon\", \"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.polygon.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n // /**\n // * Sets the placement of the polygon in 3D space.\n // * @param x X-coordinate\n // * @param y Y-coordinate\n // * @param z Z-coordinate\n // */\n // placement(x: number, y: number, z: number) {\n // this._placement.set(x, y, z);\n \n // // Do the recalculation of position based on the placement\n // const clonedObject = this.clone();\n // clonedObject.rotation.set(0, 0, 0);\n\n // clonedObject.geometry.computeBoundingBox();\n // if (!clonedObject.geometry.boundingBox) return;\n\n // const center = new THREE.Vector3();\n // clonedObject.geometry.boundingBox.getCenter(center);\n // const min = clonedObject.geometry.boundingBox.min;\n // this.position.set(\n // center.x + this._placement.x - min.x,\n // // this._placement.y,\n // 0.01, // Set Y to a small value to avoid z-fighting\n // center.z + this._placement.z - min.z\n // );\n // }\n\n // positionToPlacement() {\n // const clonedObject = this.clone();\n // clonedObject.rotation.set(0, 0, 0);\n // clonedObject.geometry.computeBoundingBox();\n // if (!clonedObject.geometry.boundingBox) return;\n // const min = clonedObject.geometry.boundingBox.min;\n\n // this._placement.set(\n // this.position.x + min.x,\n // this.position.y + min.y,\n // this.position.z + min.z\n // );\n\n // // console.log(\"Placement set to:\", this._placement.x, this._placement.y, this._placement.z);\n // }\n\n // /**\n // * Rotates the polygon around the Y-axis.\n // * @param angle Rotation angle in Degrees\n // */\n // set yaw(angle: number) {\n // this._yaw = angle;\n \n // this.rotation.set(0, 0, 0);\n // this.rotation.y = THREE.MathUtils.degToRad(this._yaw);\n // }\n\n // get yaw() {\n // return this._yaw;\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.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 // this.geometry.computeBoundingBox();\n // const originalCenter = new THREE.Vector3();\n // this.geometry.boundingBox?.getCenter(originalCenter);\n // console.log(\"Original Center:\", originalCenter.x, originalCenter.y, originalCenter.z);\n\n // this.geometry.center();\n // this.geometry.computeBoundingBox();\n // const newCenter = new THREE.Vector3();\n // this.geometry.boundingBox?.getCenter(newCenter);\n // console.log(\"New Center after centering:\", newCenter.x, newCenter.y, newCenter.z);\n\n // if (!this.geometry.boundingBox) return;\n // const min = this.geometry.boundingBox.min;\n // // console.log(\"Position before centering:\", this.position.x, this.position.y, this.position.z);\n // console.log(\"Bounding Box Min:\", min.x, min.y, min.z);\n // this.position.set(-min.x, 0, -min.z);\n\n // if (this._placement) {\n // this.placement(this._placement.x, this._placement.y, this._placement.z);\n // }\n\n // console.log(\"New Position after centering:\", this.position.x, this.position.y, this.position.z);\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 saveTransformationToBREP() {\n if (!this.polygon) return;\n }\n\n // /**\n // * Rotates the object around the Y-axis.\n // * @param angle Rotation angle in Degrees\n // * @returns \n // * @summary If rotation methods from threejs is used, it will rotate around the first vertex which might not be desired.\n // */\n // rotateOnYAxis(angle: number) {\n // if (!this.polygon) return;\n // }\n\n // resetVertices() {\n // if (!this.polygon) return;\n // this.layerVertices = [];\n // this.geometry.dispose();\n // this.polygon?.clear_vertices();\n // this.isTriangulated = false;\n // }\n\n // addVertex(threeVertex: Vector3) {\n // if (this.isTriangulated) {\n // this.layerVertices = [];\n // this.geometry.dispose();\n // this.polygon?.clear_vertices();\n // this.isTriangulated = false;\n\n // for (const vertex of this.layerBackVertices) {\n // this.layerVertices.push(vertex.clone());\n // }\n\n // };\n\n // const backupVertex = new Vector3(\n // parseFloat(threeVertex.x.toFixed(2)),\n // 0,\n // parseFloat(threeVertex.z.toFixed(2))\n // );\n // this.layerBackVertices.push(backupVertex);\n\n // const vertex = new Vector3(\n // parseFloat(threeVertex.x.toFixed(2)),\n // // when doing the parse operation getting -0 instead of 0\n // 0,\n // parseFloat(threeVertex.z.toFixed(2))\n // );\n // this.layerVertices.push(vertex);\n\n // if (this.layerVertices.length > 3) {\n // this.polygon?.add_vertices(this.layerVertices);\n // const bufFlush = this.polygon?.triangulate();\n \n // if (!bufFlush) {\n // return;\n // }\n // this.addFlushBufferToScene(bufFlush);\n\n // this.isTriangulated = true;\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 // extrude(height: number) {\n // if (!this.polygon) return;\n // const extruded_buff = this.polygon.extrude_by_height(height);\n // console.log(extruded_buff);\n // this.generateExtrudedGeometry(extruded_buff);\n // }\n\n // generateExtrudedGeometry(extruded_buff: string) {\n // // THIS WORKS\n // const flushBuffer = JSON.parse(extruded_buff);\n // console.log(flushBuffer);\n\n // const geometry = new THREE.BufferGeometry();\n // geometry.setAttribute(\"position\", new THREE.BufferAttribute(new Float32Array(flushBuffer), 3));\n // geometry.computeVertexNormals();\n // this.geometry = geometry;\n\n // const material = new THREE.MeshStandardMaterial({\n // color: 0x00ff00, \n // side: THREE.FrontSide, \n // transparent: true, \n // opacity: 0.5, \n // // wireframe: true\n // });\n // this.material = material;\n // }\n\n getBrepData() {\n if (!this.polygon) return null;\n const brepData = this.polygon.get_brep_serialized();\n return brepData;\n }\n\n /**\n * Subtracts another boolean operand from this polygon.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, options);\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 // TODO: Do we need a separate method for Hole Outlines?\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\n // this.#outlineMesh.geometry.center();\n // this.#outlineMesh.applyMatrix4(this.transformationMatrix);\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 // bTree() {\n // if (!this.polygon) return;\n // const bTree = this.polygon.binary_tree();\n // const parsedData = JSON.parse(bTree);\n // console.log(parsedData);\n // }\n\n disposeGeometryMaterial() {\n if (this.geometry) {\n this.geometry.dispose();\n }\n if (this.material instanceof THREE.Material) {\n this.material.dispose();\n }\n this.clearOutlineMesh();\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 // // console.log(\"Disposing OG - Polygon\");\n // this.geometry.dispose();\n // if (this.material instanceof THREE.Material) {\n // this.material.dispose();\n // }\n // if (this.#outlineMesh) {\n // this.#outlineMesh.geometry.dispose();\n // if (this.#outlineMesh.material instanceof THREE.Material) {\n // this.#outlineMesh.material.dispose();\n // }\n // }\n // this.polygon = null;\n // this.layerVertices = [];\n // this.layerBackVertices = [];\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 { OGCylinder, 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\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\nexport interface ICylinderOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n height: number;\n segments: number;\n angle: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport interface CylinderPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type CylinderConfigUpdate = Partial<\n Omit<ICylinderOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type CylinderPlacementUpdate = CylinderPlacementOptions;\n\nexport class Cylinder extends THREE.Mesh {\n ogid: string;\n options: ICylinderOptions = {\n center: new Vector3(0, 0, 0),\n radius: 1,\n height: 1,\n segments: 32,\n angle: 2 * Math.PI,\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 cylinder: OGCylinder;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set radius(value: number) {\n this.setConfig({ radius: value });\n }\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?: ICylinderOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.cylinder = new OGCylinder(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 radius: this.options.radius,\n height: this.options.height,\n segments: this.options.segments,\n angle: this.options.angle,\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 Cylinder\");\n }\n }\n\n setConfig(options: CylinderConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"radius\" in options ||\n \"height\" in options ||\n \"segments\" in options ||\n \"angle\" 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 { radius, height, segments, angle, center } = this.options;\n this.cylinder.set_config(\n center.clone(),\n radius,\n height,\n angle,\n segments\n );\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.cylinder.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: CylinderPlacementUpdate) {\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.cylinder.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(\"cylinder\", \"radial\");\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.cylinder.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.cylinder.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.cylinder.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 if (!this.cylinder) return null;\n const brepData = this.cylinder.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this cylinder.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts another boolean operand, such as an Opening, from this cylinder.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.cylinder.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\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 { OGCuboid, 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\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\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: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n}\n\nexport type CuboidConfigUpdate = Partial<\n Omit<ICuboidOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\nexport type CuboidPlacementUpdate = CuboidPlacementOptions;\n\nexport class Cuboid extends THREE.Mesh {\n ogid: string;\n options: ICuboidOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n height: 1,\n depth: 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 fatOutlines: false,\n outlineWidth: 1,\n };\n\n private cuboid: OGCuboid;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set width(value: number) {\n this.setConfig({ width: value });\n }\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?: ICuboidOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.cuboid = new OGCuboid(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\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 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 setConfig(options: CuboidConfigUpdate) {\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 this.cuboid.set_config(\n this.options.center.clone(),\n this.options.width,\n this.options.height,\n this.options.depth\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 generateGeometry() {\n const geometryData = Array.from(this.cuboid.get_geometry_buffer());\n this.writePositionsToGeometry(this.geometry, geometryData);\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.cuboid.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 if (!this.cuboid) return null;\n const brepData = this.cuboid.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this cuboid.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts another boolean operand, such as an Opening, from this cuboid.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.cuboid.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\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 get outlineMesh() {\n return this.#outlineMesh;\n }\n\n getAnchor() {\n const anchor = this.cuboid.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: CuboidPlacementUpdate) {\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.cuboid.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 getEditCapabilities() {\n return createParametricEditCapabilities(\"cuboid\", \"box\");\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.cuboid.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\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 { OGCuboid, 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\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\nexport interface IOpeningOptions {\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\nexport interface OpeningPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type OpeningConfigUpdate = Partial<\n Omit<IOpeningOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type OpeningPlacementUpdate = OpeningPlacementOptions;\n\nexport class Opening extends THREE.Mesh {\n ogid: string;\n options: IOpeningOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n height: 1,\n depth: 0.2,\n color: 0xdad7cd,\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 opening: OGCuboid;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set width(value: number) {\n this.setConfig({ width: value });\n }\n\n set height(value: number) {\n this.setConfig({ height: value });\n }\n\n set depth(value: number) {\n this.setConfig({ depth: value });\n }\n\n get dimensions() {\n return {\n width: this.options.width,\n height: this.options.height,\n depth: this.options.depth,\n };\n }\n\n constructor(options?: IOpeningOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.opening = new OGCuboid(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 Opening\");\n }\n }\n\n setConfig(options: OpeningConfigUpdate) {\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.opening.set_config(\n center.clone(),\n width,\n height,\n depth\n );\n\n this.generateGeometry();\n return;\n }\n\n if (colorChanged && this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(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.opening.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: OpeningPlacementUpdate) {\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.opening.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(\"opening\", \"box\");\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.opening.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.opening.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;\n this.material.depthWrite = false;\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,\n depthWrite: false,\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.opening.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 if (!this.opening) return null;\n const brepData = this.opening.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this opening.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts another boolean operand from this opening volume.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, options);\n }\n\n /**\n * Uses this opening volume to cut a host shape.\n */\n subtractFrom(\n host: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(host, this, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.opening.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\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 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\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\nexport interface ISphereOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n widthSegments: number;\n heightSegments: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport interface SpherePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type SphereConfigUpdate = Partial<\n Omit<ISphereOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type SpherePlacementUpdate = SpherePlacementOptions;\n\n/* eslint-disable no-unused-vars */\ninterface ISphereKernelInstance {\n set_config: (\n ..._args: [Vector3, number, number, number]\n ) => void;\n set_transform: (..._args: [Vector3, Vector3, Vector3]) => 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 SphereKernelConstructor = new (..._args: [string]) => ISphereKernelInstance;\n/* eslint-enable no-unused-vars */\n\nexport class Sphere extends THREE.Mesh {\n ogid: string;\n options: ISphereOptions = {\n center: new Vector3(0, 0, 0),\n radius: 1,\n widthSegments: 24,\n heightSegments: 16,\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 sphere: ISphereKernelInstance;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set radius(value: number) {\n this.setConfig({ radius: value });\n }\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?: ISphereOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n\n const sphereKey = [\"OG\", \"Sphere\"].join(\"\");\n const sphereExport = (OGKernel as Record<string, unknown>)[sphereKey];\n if (typeof sphereExport !== \"function\") {\n throw new Error(\n \"OGSphere is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\"\n );\n }\n const SphereKernel = sphereExport as SphereKernelConstructor;\n this.sphere = new SphereKernel(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 radius: this.options.radius,\n widthSegments: this.options.widthSegments,\n heightSegments: this.options.heightSegments,\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 Sphere\");\n }\n }\n\n setConfig(options: SphereConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"radius\" in options ||\n \"widthSegments\" in options ||\n \"heightSegments\" 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.sphere.set_config(\n this.options.center.clone(),\n this.options.radius,\n this.options.widthSegments,\n this.options.heightSegments\n );\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.sphere.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: SpherePlacementUpdate) {\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.sphere.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(\"sphere\", \"radial\");\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.sphere.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.sphere.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.sphere.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.sphere.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this sphere.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts another boolean operand, such as an Opening, from this sphere.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const lineBuffer = Array.from(this.sphere.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: lineBuffer,\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 { 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\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\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\nexport interface WedgePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type WedgeConfigUpdate = Partial<\n Omit<IWedgeOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type WedgePlacementUpdate = WedgePlacementOptions;\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 /**\n * Subtracts another boolean operand, such as an Opening, from this wedge.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, options);\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\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\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\nexport interface SweepPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type SweepConfigUpdate = Partial<\n Omit<ISweepOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type SweepPlacementUpdate = SweepPlacementOptions;\n\n/* eslint-disable no-unused-vars */\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/* eslint-enable no-unused-vars */\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 /**\n * Subtracts another boolean operand, such as an Opening, from this sweep.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, options);\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 endAngle: Math.PI * 1.5,\n segments: 32,\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 { Sphere } from \"../shapes/sphere\";\nimport { Sweep } from \"../shapes/sweep\";\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 fatOutlines: true,\n outlineWidth: fatOutlineWidth,\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 segments: 28,\n angle: Math.PI * 2,\n color: 0xf97316,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\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.0, 1.2),\n radius: 0.9,\n widthSegments: 28,\n heightSegments: 18,\n color: 0x0ea5e9,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\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 fatOutlines: true,\n outlineWidth: fatOutlineWidth,\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, 90.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 THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Polyline } from \"../primitives/polyline\";\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 function createWallFromOffsetsExample(scene: THREE.Scene) {\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 = 90.0;\n const bevel = true;\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 return {\n centerline,\n leftOffsetPolyline,\n rightOffsetPolyline,\n wallPolygon,\n leftOffset,\n rightOffset,\n };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\n\nimport {\n BooleanExecutionOptions,\n BooleanResult,\n booleanIntersection,\n booleanSubtraction,\n booleanUnion,\n} from \"../operations/boolean\";\nimport { Cuboid } from \"../shapes/cuboid\";\nimport { Polygon } from \"../shapes/polygon\";\nimport { Sphere } from \"../shapes/sphere\";\nimport { Sweep } from \"../shapes/sweep\";\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: BooleanResult;\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 = options.mode === \"solid\"\n ? createSolidPreset(operation, options)\n : options.mode === \"polygon\"\n ? createPolygonPreset(operation, options)\n : createExtrudedPreset(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\n/**\n * Builds the solid-operand preset used by the example pages.\n */\nfunction createSolidPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n const outlineWidth = options.outlineWidth ?? 3;\n const base = new Cuboid({\n center: new Vector3(-0.1, 0.0, 0.0),\n width: 2.1,\n height: 1.4,\n depth: 1.6,\n color: 0x60a5fa,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n\n const tool = new Sphere({\n center: options.sphereCenter ?? new Vector3(0.45, 0.12, 0.18),\n radius: operation === \"intersection\" ? 0.88 : 0.78,\n widthSegments: 22,\n heightSegments: 16,\n color: 0xf97316,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n\n base.outline = options.outline ?? true;\n tool.outline = options.outline ?? true;\n\n return {\n title: `${capitalize(operation)} Solid`,\n description: \"Cuboid and sphere overlap to demonstrate the 3D solid boolean path.\",\n lhsOperand: base,\n rhsOperand: tool,\n lhsVisual: base,\n rhsVisual: tool,\n };\n}\n\n/**\n * Builds the coplanar polygon preset used by the example pages.\n */\nfunction createPolygonPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n const outlineWidth = options.outlineWidth ?? 3;\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 Polygon({\n vertices: lhsVertices,\n color: 0x60a5fa,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n const rhs = new Polygon({\n vertices: rhsVertices,\n color: 0xf97316,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n\n lhs.outline = options.outline ?? true;\n rhs.outline = options.outline ?? true;\n\n return {\n title: `${capitalize(operation)} Polygon`,\n description: \"Two coplanar polygon faces exercise the planar boolean path.\",\n lhsOperand: lhs,\n rhsOperand: rhs,\n lhsVisual: lhs,\n rhsVisual: rhs,\n };\n}\n\n/**\n * Builds the straight-sweep solid preset used to demonstrate extruded booleans.\n */\nfunction createExtrudedPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n const outlineWidth = options.outlineWidth ?? 3;\n const extrudedOffset = options.extrudedOffset ?? new Vector3(0.0, 0.0, 0.0);\n const path = [\n new Vector3(0.0, 0.0, 0.0),\n new Vector3(0.0, 1.6, 0.0),\n ];\n const lhsProfile = [\n new Vector3(-2.0, 0.0, -0.65),\n new Vector3(2.1, 0.0, -0.65),\n new Vector3(1.75, 0.0, 0.7),\n new Vector3(-1.55, 0.0, 0.7),\n ];\n const rhsProfile = operation === \"subtraction\"\n ? [\n new Vector3(-0.42, 0.0, -0.24),\n new Vector3(0.42, 0.0, -0.24),\n new Vector3(0.42, 0.0, 0.24),\n new Vector3(-0.42, 0.0, 0.24),\n ]\n : [\n new Vector3(-0.8, 0.0, -0.42),\n new Vector3(0.72, 0.0, -0.42),\n new Vector3(0.72, 0.0, 0.42),\n new Vector3(-0.8, 0.0, 0.42),\n ];\n\n const lhs = new Sweep({\n path,\n profile: lhsProfile,\n color: 0x60a5fa,\n capStart: true,\n capEnd: true,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n const rhs = new Sweep({\n path: path.map((point) => point.clone()),\n profile: rhsProfile,\n color: 0xf97316,\n capStart: true,\n capEnd: true,\n translation: extrudedOffset.clone(),\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n\n lhs.outline = options.outline ?? true;\n rhs.outline = options.outline ?? true;\n\n return {\n title: `${capitalize(operation)} Extruded Solids`,\n description: \"Two capped straight sweeps demonstrate boolean operations on extruded solid profiles.\",\n lhsOperand: lhs,\n rhsOperand: rhs,\n lhsVisual: lhs,\n rhsVisual: rhs,\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 {\n FreeformEditResult,\n FreeformEditor,\n createFreeformEditor,\n} from \"../editor\";\nimport { Line } from \"../primitives/line\";\nimport { Polygon } from \"../shapes/polygon\";\nimport { Cuboid } from \"../shapes/cuboid\";\n\nfunction topFaceId(freeformEditor: FreeformEditor): number | null {\n let bestFaceId: number | null = null;\n let bestY = Number.NEGATIVE_INFINITY;\n\n for (const face of freeformEditor.getTopologyRenderData().faces) {\n const info = freeformEditor.getFaceInfo(face.face_id);\n if (info.centroid.y > bestY) {\n bestY = info.centroid.y;\n bestFaceId = face.face_id;\n }\n }\n\n return bestFaceId;\n}\n\n/**\n * Demonstrates the intended editing flow for editor-controls:\n * parametric config/placement edits first, then explicit freeform conversion,\n * including wire-backed freeform edge insertion on a converted line.\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 fatOutlines: true,\n outlineWidth: 4,\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 const freeform = cuboid.toFreeform(`${cuboid.ogid}-freeform`);\n const freeformEditor = createFreeformEditor(freeform);\n const topFace = topFaceId(freeformEditor);\n let freeformResult: FreeformEditResult | null = null;\n\n if (topFace !== null) {\n freeformResult = freeformEditor.pushPullFace(topFace, 0.35, {\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 freeform,\n freeformEditor,\n freeformResult,\n };\n}\n","/**\n * OpenGeometry Three.js adapter entrypoint.\n * @module @opengeometry/kernel-three\n */\nimport init, {\n OGSceneManager,\n Vector3,\n} from \"../opengeometry/pkg/opengeometry\";\n// Vector3 is also available in opengeometry package\n// import { Vector3 } from \"@opengeometry/openmaths\";\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\nexport interface OGStlExportResult {\n bytes: Uint8Array;\n reportJson: string;\n}\n\nexport interface OGStepExportResult {\n text: string;\n reportJson: string;\n}\n\nexport interface OGIfcExportResult {\n text: string;\n reportJson: string;\n}\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 creates and initializes an instance of OpenGeometry.\n *\n * This factory method sets up the OpenGeometry engine by linking it with the\n * rendering context and the WebAssembly module. It ensures all required\n * options are provided and prepares the instance for 3D geometry operations.\n *\n * @param options - Configuration object for initializing OpenGeometry.\n * @returns A promise that resolves to a fully initialized OpenGeometry instance.\n * @throws If any of the required options (`container`, `scene`, or `camera`) are missing.\n *\n * @example\n * ```ts\n * const openGeometry = await OpenGeometry.create({\n * container: document.getElementById('myContainer')!,\n * scene: threeScene,\n * camera: threeCamera,\n * wasmURL: '/assets/opengeometry.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\nexport {\n OGSceneManager,\n Vector3,\n SpotLabel,\n}\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.\n */\nexport * from \"./src/operations/index\";\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","getArrayJsValueFromWasm0","result","push","getUint32","__externref_drop_slice","booleanUnion","lhs_brep_serialized","rhs_brep_serialized","options_json","ptr0","__wbindgen_malloc","__wbindgen_realloc","len0","ptr1","len1","ptr2","len2","OGBooleanResult","__wrap","booleanIntersection","booleanSubtraction","Matrix3Finalization","FinalizationRegistry","register","unregister","__wbg_matrix3_free","Matrix3","Object","create","prototype","__wbg_ptr","__destroy_into_raw","free","constructor","matrix3_new","m0","m1","m2","m3","m4","m5","m6","m7","m8","matrix3_set","clone","matrix3_clone","identity","matrix3_identity","determinant","matrix3_determinant","adjucate","matrix3_adjucate","inverse","matrix3_inverse","transpose","matrix3_transpose","Matrix4Finalization","__wbg_matrix4_free","Matrix4","elements","matrix4_elements","v1","__wbindgen_free","matrix4_new","m9","m10","m11","m12","m13","m14","m15","matrix4_set","matrix4_clone","matrix4_identity","matrix4_determinant","matrix4_adjucate","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","matrix4_transpose","OGArcFinalization","__wbg_ogarc_free","OGArc","id","ogarc_set_id","deferred1_0","deferred1_1","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","scale","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","get_brep_serialized","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","OGBooleanResultFinalization","__wbg_ogbooleanresult_free","brepSerialized","ogbooleanresult_brepSerialized","geometrySerialized","ogbooleanresult_geometrySerialized","outlineGeometrySerialized","ogbooleanresult_outlineGeometrySerialized","reportJson","ogbooleanresult_reportJson","OGCuboidFinalization","__wbg_ogcuboid_free","OGCuboid","ogcuboid_set_id","ogcuboid_id","ogcuboid_new","width","height","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","OGFreeformEditorFinalization","__wbg_ogfreeformeditor_free","OGFreeformEditor","ogfreeformeditor_new","getTopologyRenderData","geometry","deferred2_0","deferred2_1","OGFreeformGeometry","ogfreeformeditor_getTopologyRenderData","getFaceInfo","face_id","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","deferred3_0","deferred3_1","ogfreeformeditor_pushPullFace","moveFace","deferred4_0","deferred4_1","ogfreeformeditor_moveFace","ptr3","len3","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","local_brep_serialized","ogfreeformgeometry_new","ogfreeformgeometry_id","getBrepSerialized","ogfreeformgeometry_getBrepSerialized","getLocalBrepSerialized","ogfreeformgeometry_getLocalBrepSerialized","getGeometrySerialized","ogfreeformgeometry_getGeometrySerialized","getOutlineGeometrySerialized","ogfreeformgeometry_getOutlineGeometrySerialized","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","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","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","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","camera_json","hlr_json","deferred5_0","deferred5_1","ogscenemanager_projectTo2DCamera","ptr4","len4","projectTo2DCameraPretty","ogscenemanager_projectTo2DCameraPretty","projectTo2DLines","ogscenemanager_projectTo2DLines","projectTo2DLinesPretty","ogscenemanager_projectTo2DLinesPretty","projectCurrentTo2DCamera","ogscenemanager_projectCurrentTo2DCamera","projectCurrentTo2DLines","ogscenemanager_projectCurrentTo2DLines","exportBrepToStl","config_json","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_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","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","__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","initSync","getPrototypeOf","Module","module_or_path","URL","import","meta","url","Request","fetch","uuidv4","cloneVector","toObjectTransformation","parseJson","toVector3","toPlainVector3","normalizePlacement","KernelFreeformEditor","serializeBrepLike","OGKernel[\"OGSweep\"]","EPSILON","areClose","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;AAEA,SAASC,wBAAwBA,CAACnE,GAAG,EAAEC,GAAG,EAAE;EACxCD,GAAG,GAAGA,GAAG,KAAK,CAAC;AACf,EAAA,MAAMsC,GAAG,GAAGmB,kBAAkB,EAAE;EAChC,MAAMW,MAAM,GAAG,EAAE;AACjB,EAAA,KAAK,IAAIN,CAAC,GAAG9D,GAAG,EAAE8D,CAAC,GAAG9D,GAAG,GAAG,CAAC,GAAGC,GAAG,EAAE6D,CAAC,IAAI,CAAC,EAAE;AACzCM,IAAAA,MAAM,CAACC,IAAI,CAAC7E,IAAI,CAACe,mBAAmB,CAAC2C,GAAG,CAACZ,GAAG,CAACgC,SAAS,CAACR,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACrE;AACAtE,EAAAA,IAAI,CAAC+E,sBAAsB,CAACvE,GAAG,EAAEC,GAAG,CAAC;AACrC,EAAA,OAAOmE,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASI,cAAYA,CAACC,mBAAmB,EAAEC,mBAAmB,EAAEC,YAAY,EAAE;AACjF,EAAA,MAAMC,IAAI,GAAG1C,iBAAiB,CAACuC,mBAAmB,EAAEjF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;EACpG,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,EAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAACwC,mBAAmB,EAAElF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;EACpG,MAAMG,IAAI,GAAG3D,eAAe;EAC5B,IAAI4D,IAAI,GAAGjB,UAAU,CAACU,YAAY,CAAC,GAAG,CAAC,GAAGzC,iBAAiB,CAACyC,YAAY,EAAEnF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;EAC1H,IAAIK,IAAI,GAAG7D,eAAe;AAC1B,EAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACgF,YAAY,CAACI,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACjE,EAAA,IAAIxC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,IAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;EACA,OAAOyC,eAAe,CAACC,MAAM,CAAC1C,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS2C,qBAAmBA,CAACb,mBAAmB,EAAEC,mBAAmB,EAAEC,YAAY,EAAE;AACxF,EAAA,MAAMC,IAAI,GAAG1C,iBAAiB,CAACuC,mBAAmB,EAAEjF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;EACpG,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,EAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAACwC,mBAAmB,EAAElF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;EACpG,MAAMG,IAAI,GAAG3D,eAAe;EAC5B,IAAI4D,IAAI,GAAGjB,UAAU,CAACU,YAAY,CAAC,GAAG,CAAC,GAAGzC,iBAAiB,CAACyC,YAAY,EAAEnF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;EAC1H,IAAIK,IAAI,GAAG7D,eAAe;AAC1B,EAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC8F,mBAAmB,CAACV,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACxE,EAAA,IAAIxC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,IAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;EACA,OAAOyC,eAAe,CAACC,MAAM,CAAC1C,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS4C,oBAAkBA,CAACd,mBAAmB,EAAEC,mBAAmB,EAAEC,YAAY,EAAE;AACvF,EAAA,MAAMC,IAAI,GAAG1C,iBAAiB,CAACuC,mBAAmB,EAAEjF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;EACpG,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,EAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAACwC,mBAAmB,EAAElF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;EACpG,MAAMG,IAAI,GAAG3D,eAAe;EAC5B,IAAI4D,IAAI,GAAGjB,UAAU,CAACU,YAAY,CAAC,GAAG,CAAC,GAAGzC,iBAAiB,CAACyC,YAAY,EAAEnF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;EAC1H,IAAIK,IAAI,GAAG7D,eAAe;AAC1B,EAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC+F,kBAAkB,CAACX,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACvE,EAAA,IAAIxC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,IAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;EACA,OAAOyC,eAAe,CAACC,MAAM,CAAC1C,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AAEA,MAAM6C,mBAAmB,GAAI,OAAOC,oBAAoB,KAAK,WAAW,GAClE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAACoG,kBAAkB,CAAC5F,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAErE,MAAM6F,OAAO,CAAC;EAEjB,OAAOR,MAAMA,CAACrF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAG0F,MAAM,CAACC,MAAM,CAACF,OAAO,CAACG,SAAS,CAAC;IAC5C5F,GAAG,CAAC6F,SAAS,GAAGjG,GAAG;IACnBwF,mBAAmB,CAACE,QAAQ,CAACtF,GAAG,EAAEA,GAAG,CAAC6F,SAAS,EAAE7F,GAAG,CAAC;AACrD,IAAA,OAAOA,GAAG;AACd;AAEA8F,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBT,IAAAA,mBAAmB,CAACG,UAAU,CAAC,IAAI,CAAC;AACpC,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAACoG,kBAAkB,CAAC5F,GAAG,EAAE,CAAC,CAAC;AACnC;AACA;AACJ;AACA;AACA;AACA;AACIoG,EAAAA,WAAWA,GAAG;AACV,IAAA,MAAMzD,GAAG,GAAGnD,IAAI,CAAC6G,WAAW,EAAE;AAC9B,IAAA,IAAI,CAACJ,SAAS,GAAGtD,GAAG,KAAK,CAAC;IAC1B6C,mBAAmB,CAACE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACO,SAAS,EAAE,IAAI,CAAC;AACxD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIzF,EAAAA,GAAGA,CAAC8F,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE;IACpC,MAAMnE,GAAG,GAAGnD,IAAI,CAACuH,WAAW,CAAC,IAAI,CAACd,SAAS,EAAEK,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC;AAChF,IAAA,OAAOjB,OAAO,CAACR,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACIqE,EAAAA,KAAKA,GAAG;IACJ,MAAMrE,GAAG,GAAGnD,IAAI,CAACyH,aAAa,CAAC,IAAI,CAAChB,SAAS,CAAC;AAC9C,IAAA,OAAOJ,OAAO,CAACR,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACIuE,EAAAA,QAAQA,GAAG;AACP1H,IAAAA,IAAI,CAAC2H,gBAAgB,CAAC,IAAI,CAAClB,SAAS,CAAC;AACzC;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACImB,EAAAA,WAAWA,GAAG;IACV,MAAMzE,GAAG,GAAGnD,IAAI,CAAC6H,mBAAmB,CAAC,IAAI,CAACpB,SAAS,CAAC;AACpD,IAAA,OAAOtD,GAAG;AACd;AACA;AACJ;AACA;AACI2E,EAAAA,QAAQA,GAAG;IACP,MAAM3E,GAAG,GAAGnD,IAAI,CAAC+H,gBAAgB,CAAC,IAAI,CAACtB,SAAS,CAAC;AACjD,IAAA,OAAOJ,OAAO,CAACR,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACI6E,EAAAA,OAAOA,GAAG;IACN,MAAM7E,GAAG,GAAGnD,IAAI,CAACiI,eAAe,CAAC,IAAI,CAACxB,SAAS,CAAC;IAChD,OAAOtD,GAAG,KAAK,CAAC,GAAGN,SAAS,GAAGwD,OAAO,CAACR,MAAM,CAAC1C,GAAG,CAAC;AACtD;AACA;AACJ;AACA;AACI+E,EAAAA,SAASA,GAAG;IACR,MAAM/E,GAAG,GAAGnD,IAAI,CAACmI,iBAAiB,CAAC,IAAI,CAAC1B,SAAS,CAAC;AAClD,IAAA,OAAOJ,OAAO,CAACR,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACJ;AAEA,MAAMiF,mBAAmB,GAAI,OAAOnC,oBAAoB,KAAK,WAAW,GAClE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAACqI,kBAAkB,CAAC7H,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM8H,OAAO,CAAC;EAEjB,OAAOzC,MAAMA,CAACrF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAG0F,MAAM,CAACC,MAAM,CAAC+B,OAAO,CAAC9B,SAAS,CAAC;IAC5C5F,GAAG,CAAC6F,SAAS,GAAGjG,GAAG;IACnB4H,mBAAmB,CAAClC,QAAQ,CAACtF,GAAG,EAAEA,GAAG,CAAC6F,SAAS,EAAE7F,GAAG,CAAC;AACrD,IAAA,OAAOA,GAAG;AACd;AAEA8F,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClB2B,IAAAA,mBAAmB,CAACjC,UAAU,CAAC,IAAI,CAAC;AACpC,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAACqI,kBAAkB,CAAC7H,GAAG,EAAE,CAAC,CAAC;AACnC;AACA;AACJ;AACA;EACI,IAAI+H,QAAQA,GAAG;IACX,MAAMpF,GAAG,GAAGnD,IAAI,CAACwI,gBAAgB,CAAC,IAAI,CAAC/B,SAAS,CAAC;AACjD,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACA;AACA;AACI7B,EAAAA,WAAWA,GAAG;AACV,IAAA,MAAMzD,GAAG,GAAGnD,IAAI,CAAC2I,WAAW,EAAE;AAC9B,IAAA,IAAI,CAAClC,SAAS,GAAGtD,GAAG,KAAK,CAAC;IAC1BiF,mBAAmB,CAAClC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACO,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,OAAOzF,GAAGA,CAAC8F,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEsB,EAAE,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAE;AAC7E,IAAA,MAAM/F,GAAG,GAAGnD,IAAI,CAACmJ,WAAW,CAACrC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEsB,EAAE,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,CAAC;AAClG,IAAA,OAAOZ,OAAO,CAACzC,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACIqE,EAAAA,KAAKA,GAAG;IACJ,MAAMrE,GAAG,GAAGnD,IAAI,CAACoJ,aAAa,CAAC,IAAI,CAAC3C,SAAS,CAAC;AAC9C,IAAA,OAAO6B,OAAO,CAACzC,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACIuE,EAAAA,QAAQA,GAAG;AACP1H,IAAAA,IAAI,CAACqJ,gBAAgB,CAAC,IAAI,CAAC5C,SAAS,CAAC;AACzC;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACImB,EAAAA,WAAWA,GAAG;IACV,MAAMzE,GAAG,GAAGnD,IAAI,CAACsJ,mBAAmB,CAAC,IAAI,CAAC7C,SAAS,CAAC;AACpD,IAAA,OAAOtD,GAAG;AACd;AACA;AACJ;AACA;AACI2E,EAAAA,QAAQA,GAAG;IACP,MAAM3E,GAAG,GAAGnD,IAAI,CAACuJ,gBAAgB,CAAC,IAAI,CAAC9C,SAAS,CAAC;AACjD,IAAA,OAAO6B,OAAO,CAACzC,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI6E,EAAAA,OAAOA,GAAG;IACN,MAAM7E,GAAG,GAAGnD,IAAI,CAACwJ,eAAe,CAAC,IAAI,CAAC/C,SAAS,CAAC;AAChD,IAAA,OAAO6B,OAAO,CAACzC,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACIsG,QAAQA,CAACC,KAAK,EAAE;AACZtG,IAAAA,YAAY,CAACsG,KAAK,EAAEpB,OAAO,CAAC;AAC5B,IAAA,MAAMnF,GAAG,GAAGnD,IAAI,CAAC2J,gBAAgB,CAAC,IAAI,CAAClD,SAAS,EAAEiD,KAAK,CAACjD,SAAS,CAAC;AAClE,IAAA,OAAO6B,OAAO,CAACzC,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACIoB,GAAGA,CAACqF,QAAQ,EAAE;AACVxG,IAAAA,YAAY,CAACwG,QAAQ,EAAEtB,OAAO,CAAC;AAC/B,IAAA,MAAMnF,GAAG,GAAGnD,IAAI,CAAC6J,WAAW,CAAC,IAAI,CAACpD,SAAS,EAAEmD,QAAQ,CAACnD,SAAS,CAAC;AAChE,IAAA,OAAO6B,OAAO,CAACzC,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACI2G,QAAQA,CAACF,QAAQ,EAAE;AACfxG,IAAAA,YAAY,CAACwG,QAAQ,EAAEtB,OAAO,CAAC;AAC/B,IAAA,MAAMnF,GAAG,GAAGnD,IAAI,CAAC+J,gBAAgB,CAAC,IAAI,CAACtD,SAAS,EAAEmD,QAAQ,CAACnD,SAAS,CAAC;AACrE,IAAA,OAAO6B,OAAO,CAACzC,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACI6G,EAAAA,OAAOA,GAAG;IACN,MAAM7G,GAAG,GAAGnD,IAAI,CAACiK,eAAe,CAAC,IAAI,CAACxD,SAAS,CAAC;AAChD,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIyB,cAAcA,CAACC,KAAK,EAAE;IAClB,MAAMhH,GAAG,GAAGnD,IAAI,CAACoK,sBAAsB,CAAC,IAAI,CAAC3D,SAAS,EAAE0D,KAAK,CAAC;AAC9D,IAAA,OAAOhH,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAGN,SAAS,GAAGM,GAAG,CAAC,CAAC,CAAC;AAC5C;AACA;AACJ;AACA;AACA;AACA;AACA;AACIkH,EAAAA,OAAOA,GAAG;IACN,MAAMlH,GAAG,GAAGnD,IAAI,CAACsK,eAAe,CAAC,IAAI,CAAC7D,SAAS,CAAC;IAChD,OAAOtD,GAAG,KAAK,CAAC;AACpB;AACA;AACJ;AACA;AACA;AACA;AACA;AACIoH,EAAAA,WAAWA,GAAG;IACV,MAAMpH,GAAG,GAAGnD,IAAI,CAACwK,mBAAmB,CAAC,IAAI,CAAC/D,SAAS,CAAC;IACpD,OAAOtD,GAAG,KAAK,CAAC;AACpB;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACI+E,EAAAA,SAASA,GAAG;IACR,MAAM/E,GAAG,GAAGnD,IAAI,CAACyK,iBAAiB,CAAC,IAAI,CAAChE,SAAS,CAAC;AAClD,IAAA,OAAO6B,OAAO,CAACzC,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACJ;AAEA,MAAMuH,iBAAiB,GAAI,OAAOzE,oBAAoB,KAAK,WAAW,GAChE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAAC2K,gBAAgB,CAACnK,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEnE,MAAMoK,KAAK,CAAC;AAEflE,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBiE,IAAAA,iBAAiB,CAACvE,UAAU,CAAC,IAAI,CAAC;AAClC,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAAC2K,gBAAgB,CAACnK,GAAG,EAAE,CAAC,CAAC;AACjC;AACA;AACJ;AACA;EACI,IAAIqK,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B9B,IAAI,CAAC8K,YAAY,CAAC,IAAI,CAACrE,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AACjD;AACA;AACJ;AACA;EACI,IAAIsF,EAAEA,GAAG;AACL,IAAA,IAAIE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACiL,QAAQ,CAAC,IAAI,CAACxE,SAAS,CAAC;AACzCsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIpE,WAAWA,CAACiE,EAAE,EAAE;AACZ,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACkL,SAAS,CAAC9F,IAAI,EAAEG,IAAI,CAAC;AACtC,IAAA,IAAI,CAACkB,SAAS,GAAGtD,GAAG,KAAK,CAAC;IAC1BuH,iBAAiB,CAACxE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACO,SAAS,EAAE,IAAI,CAAC;AACtD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI0E,UAAUA,CAACC,MAAM,EAAEC,MAAM,EAAEC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,EAAE;AACzDpI,IAAAA,YAAY,CAACgI,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGgG,MAAM,CAAC1E,kBAAkB,EAAE;AACtC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAAC0L,gBAAgB,CAAC,IAAI,CAACjF,SAAS,EAAErB,IAAI,EAAEiG,MAAM,EAAEC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,CAAC;AACjG,IAAA,IAAIrI,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIwI,UAAUA,CAACP,MAAM,EAAE;AACfhI,IAAAA,YAAY,CAACgI,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGgG,MAAM,CAAC1E,kBAAkB,EAAE;IACtC1G,IAAI,CAAC4L,gBAAgB,CAAC,IAAI,CAACnF,SAAS,EAAErB,IAAI,CAAC;AAC/C;AACA;AACJ;AACA;AACA;AACA;AACIyG,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAE;AACrC5I,IAAAA,YAAY,CAAC0I,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG0G,QAAQ,CAACpF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIjG,IAAI,GAAGuG,QAAQ,CAACrF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAI/F,IAAI,GAAGsG,KAAK,CAACtF,kBAAkB,EAAE;AACrC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAACiM,mBAAmB,CAAC,IAAI,CAACxF,SAAS,EAAErB,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AACtE,IAAA,IAAIvC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI+I,eAAeA,CAACC,WAAW,EAAE;AACzB/I,IAAAA,YAAY,CAAC+I,WAAW,EAAEV,OAAO,CAAC;AAClC,IAAA,IAAIrG,IAAI,GAAG+G,WAAW,CAACzF,kBAAkB,EAAE;IAC3C1G,IAAI,CAACoM,qBAAqB,CAAC,IAAI,CAAC3F,SAAS,EAAErB,IAAI,CAAC;AACpD;AACA;AACJ;AACA;EACIiH,YAAYA,CAACN,QAAQ,EAAE;AACnB3I,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG2G,QAAQ,CAACrF,kBAAkB,EAAE;IACxC1G,IAAI,CAACsM,kBAAkB,CAAC,IAAI,CAAC7F,SAAS,EAAErB,IAAI,CAAC;AACjD;AACA;AACJ;AACA;EACImH,SAASA,CAACP,KAAK,EAAE;AACb5I,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAIrG,IAAI,GAAG4G,KAAK,CAACtF,kBAAkB,EAAE;IACrC,MAAMvD,GAAG,GAAGnD,IAAI,CAACwM,eAAe,CAAC,IAAI,CAAC/F,SAAS,EAAErB,IAAI,CAAC;AACtD,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAsJ,EAAAA,iBAAiBA,GAAG;IAChB,MAAMtJ,GAAG,GAAGnD,IAAI,CAAC0M,uBAAuB,CAAC,IAAI,CAACjG,SAAS,CAAC;AACxD,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAwJ,EAAAA,cAAcA,GAAG;AACb3M,IAAAA,IAAI,CAAC4M,oBAAoB,CAAC,IAAI,CAACnG,SAAS,CAAC;AAC7C;AACAoG,EAAAA,OAAOA,GAAG;AACN7M,IAAAA,IAAI,CAAC8M,aAAa,CAAC,IAAI,CAACrG,SAAS,CAAC;AACtC;AACA;AACJ;AACA;AACIsG,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAIhC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACgN,yBAAyB,CAAC,IAAI,CAACvG,SAAS,CAAC;AAC1DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiC,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAIlC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACkN,+BAA+B,CAAC,IAAI,CAACzG,SAAS,CAAC;AAChEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACImC,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIpC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACoN,6BAA6B,CAAC,IAAI,CAAC3G,SAAS,CAAC;AAC9DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIqC,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAItC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACsN,mCAAmC,CAAC,IAAI,CAAC7G,SAAS,CAAC;AACpEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIuC,EAAAA,mBAAmBA,GAAG;IAClB,MAAMpK,GAAG,GAAGnD,IAAI,CAACwN,yBAAyB,CAAC,IAAI,CAAC/G,SAAS,CAAC;AAC1D,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIgF,EAAAA,yBAAyBA,GAAG;IACxB,MAAMtK,GAAG,GAAGnD,IAAI,CAAC0N,+BAA+B,CAAC,IAAI,CAACjH,SAAS,CAAC;AAChE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIkF,EAAAA,UAAUA,GAAG;IACT,MAAMxK,GAAG,GAAGnD,IAAI,CAAC4N,gBAAgB,CAAC,IAAI,CAACnH,SAAS,CAAC;AACjD,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACJ;AAEA,MAAM0K,2BAA2B,GAAI,OAAO5H,oBAAoB,KAAK,WAAW,GAC1E;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAAC8N,0BAA0B,CAACtN,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACpF;AACA;AACA;AACO,MAAMoF,eAAe,CAAC;EAEzB,OAAOC,MAAMA,CAACrF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAG0F,MAAM,CAACC,MAAM,CAACX,eAAe,CAACY,SAAS,CAAC;IACpD5F,GAAG,CAAC6F,SAAS,GAAGjG,GAAG;IACnBqN,2BAA2B,CAAC3H,QAAQ,CAACtF,GAAG,EAAEA,GAAG,CAAC6F,SAAS,EAAE7F,GAAG,CAAC;AAC7D,IAAA,OAAOA,GAAG;AACd;AAEA8F,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBoH,IAAAA,2BAA2B,CAAC1H,UAAU,CAAC,IAAI,CAAC;AAC5C,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAAC8N,0BAA0B,CAACtN,GAAG,EAAE,CAAC,CAAC;AAC3C;AACA;AACJ;AACA;EACI,IAAIuN,cAAcA,GAAG;AACjB,IAAA,IAAIhD,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACgO,8BAA8B,CAAC,IAAI,CAACvH,SAAS,CAAC;AAC/DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACI,IAAIiD,kBAAkBA,GAAG;AACrB,IAAA,IAAIlD,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACkO,kCAAkC,CAAC,IAAI,CAACzH,SAAS,CAAC;AACnEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACI,IAAImD,yBAAyBA,GAAG;AAC5B,IAAA,IAAIpD,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACoO,yCAAyC,CAAC,IAAI,CAAC3H,SAAS,CAAC;AAC1EsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACI,IAAIqD,UAAUA,GAAG;AACb,IAAA,IAAItD,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACsO,0BAA0B,CAAC,IAAI,CAAC7H,SAAS,CAAC;AAC3DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACJ;AAEA,MAAMuD,oBAAoB,GAAI,OAAOtI,oBAAoB,KAAK,WAAW,GACnE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAACwO,mBAAmB,CAAChO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtE,MAAMiO,QAAQ,CAAC;AAElB/H,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClB8H,IAAAA,oBAAoB,CAACpI,UAAU,CAAC,IAAI,CAAC;AACrC,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAACwO,mBAAmB,CAAChO,GAAG,EAAE,CAAC,CAAC;AACpC;AACA;AACJ;AACA;EACI,IAAIqK,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B9B,IAAI,CAAC0O,eAAe,CAAC,IAAI,CAACjI,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AACpD;AACA;AACJ;AACA;EACI,IAAIsF,EAAEA,GAAG;AACL,IAAA,IAAIE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC2O,WAAW,CAAC,IAAI,CAAClI,SAAS,CAAC;AAC5CsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIpE,WAAWA,CAACiE,EAAE,EAAE;AACZ,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC4O,YAAY,CAACxJ,IAAI,EAAEG,IAAI,CAAC;AACzC,IAAA,IAAI,CAACkB,SAAS,GAAGtD,GAAG,KAAK,CAAC;IAC1BoL,oBAAoB,CAACrI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACO,SAAS,EAAE,IAAI,CAAC;AACzD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACA;AACA;EACI0E,UAAUA,CAACC,MAAM,EAAEyD,KAAK,EAAEC,MAAM,EAAEC,KAAK,EAAE;AACrC3L,IAAAA,YAAY,CAACgI,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGgG,MAAM,CAAC1E,kBAAkB,EAAE;AACtC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAACgP,mBAAmB,CAAC,IAAI,CAACvI,SAAS,EAAErB,IAAI,EAAEyJ,KAAK,EAAEC,MAAM,EAAEC,KAAK,CAAC;AAChF,IAAA,IAAI5L,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIwI,UAAUA,CAACP,MAAM,EAAE;AACfhI,IAAAA,YAAY,CAACgI,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGgG,MAAM,CAAC1E,kBAAkB,EAAE;IACtC1G,IAAI,CAACiP,mBAAmB,CAAC,IAAI,CAACxI,SAAS,EAAErB,IAAI,CAAC;AAClD;AACA;AACJ;AACA;AACA;AACA;AACIyG,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAE;AACrC5I,IAAAA,YAAY,CAAC0I,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG0G,QAAQ,CAACpF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIjG,IAAI,GAAGuG,QAAQ,CAACrF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAI/F,IAAI,GAAGsG,KAAK,CAACtF,kBAAkB,EAAE;AACrC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAACkP,sBAAsB,CAAC,IAAI,CAACzI,SAAS,EAAErB,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AACzE,IAAA,IAAIvC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI+I,eAAeA,CAACC,WAAW,EAAE;AACzB/I,IAAAA,YAAY,CAAC+I,WAAW,EAAEV,OAAO,CAAC;AAClC,IAAA,IAAIrG,IAAI,GAAG+G,WAAW,CAACzF,kBAAkB,EAAE;IAC3C1G,IAAI,CAACmP,wBAAwB,CAAC,IAAI,CAAC1I,SAAS,EAAErB,IAAI,CAAC;AACvD;AACA;AACJ;AACA;EACIiH,YAAYA,CAACN,QAAQ,EAAE;AACnB3I,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG2G,QAAQ,CAACrF,kBAAkB,EAAE;IACxC1G,IAAI,CAACoP,qBAAqB,CAAC,IAAI,CAAC3I,SAAS,EAAErB,IAAI,CAAC;AACpD;AACA;AACJ;AACA;EACImH,SAASA,CAACP,KAAK,EAAE;AACb5I,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAIrG,IAAI,GAAG4G,KAAK,CAACtF,kBAAkB,EAAE;IACrC,MAAMvD,GAAG,GAAGnD,IAAI,CAACqP,kBAAkB,CAAC,IAAI,CAAC5I,SAAS,EAAErB,IAAI,CAAC;AACzD,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAsJ,EAAAA,iBAAiBA,GAAG;IAChB,MAAMtJ,GAAG,GAAGnD,IAAI,CAACsP,0BAA0B,CAAC,IAAI,CAAC7I,SAAS,CAAC;AAC3D,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI4J,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAIhC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACuP,4BAA4B,CAAC,IAAI,CAAC9I,SAAS,CAAC;AAC7DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiC,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAIlC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACwP,kCAAkC,CAAC,IAAI,CAAC/I,SAAS,CAAC;AACnEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACImC,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIpC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACyP,gCAAgC,CAAC,IAAI,CAAChJ,SAAS,CAAC;AACjEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIqC,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAItC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC0P,sCAAsC,CAAC,IAAI,CAACjJ,SAAS,CAAC;AACvEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIuC,EAAAA,mBAAmBA,GAAG;IAClB,MAAMpK,GAAG,GAAGnD,IAAI,CAAC2P,4BAA4B,CAAC,IAAI,CAAClJ,SAAS,CAAC;AAC7D,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIgF,EAAAA,yBAAyBA,GAAG;IACxB,MAAMtK,GAAG,GAAGnD,IAAI,CAAC4P,kCAAkC,CAAC,IAAI,CAACnJ,SAAS,CAAC;AACnE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIoH,EAAAA,+BAA+BA,GAAG;AAC9B,IAAA,IAAI9E,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC8P,wCAAwC,CAAC,IAAI,CAACrJ,SAAS,CAAC;AACzEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI+E,EAAAA,qCAAqCA,GAAG;AACpC,IAAA,IAAIhF,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACgQ,8CAA8C,CAAC,IAAI,CAACvJ,SAAS,CAAC;AAC/EsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiF,EAAAA,2BAA2BA,GAAG;IAC1B,MAAM9M,GAAG,GAAGnD,IAAI,CAACkQ,oCAAoC,CAAC,IAAI,CAACzJ,SAAS,CAAC;AACrE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACI0H,EAAAA,iCAAiCA,GAAG;IAChC,MAAMhN,GAAG,GAAGnD,IAAI,CAACoQ,0CAA0C,CAAC,IAAI,CAAC3J,SAAS,CAAC;AAC3E,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIkF,EAAAA,UAAUA,GAAG;IACT,MAAMxK,GAAG,GAAGnD,IAAI,CAACqQ,mBAAmB,CAAC,IAAI,CAAC5J,SAAS,CAAC;AACpD,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACJ;AAEA,MAAMmN,mBAAmB,GAAI,OAAOrK,oBAAoB,KAAK,WAAW,GAClE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAACuQ,kBAAkB,CAAC/P,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAErE,MAAMgQ,OAAO,CAAC;AAEjB9J,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClB6J,IAAAA,mBAAmB,CAACnK,UAAU,CAAC,IAAI,CAAC;AACpC,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAACuQ,kBAAkB,CAAC/P,GAAG,EAAE,CAAC,CAAC;AACnC;AACA;AACJ;AACA;EACI,IAAIqK,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B9B,IAAI,CAACyQ,cAAc,CAAC,IAAI,CAAChK,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AACnD;AACA;AACJ;AACA;EACI,IAAIsF,EAAEA,GAAG;AACL,IAAA,IAAIE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC0Q,UAAU,CAAC,IAAI,CAACjK,SAAS,CAAC;AAC3CsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIpE,WAAWA,CAACiE,EAAE,EAAE;AACZ,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC2Q,WAAW,CAACvL,IAAI,EAAEG,IAAI,CAAC;AACxC,IAAA,IAAI,CAACkB,SAAS,GAAGtD,GAAG,KAAK,CAAC;IAC1BmN,mBAAmB,CAACpK,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACO,SAAS,EAAE,IAAI,CAAC;AACxD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;EACI0E,UAAUA,CAACyF,cAAc,EAAE;IACvB,MAAMxL,IAAI,GAAGhB,uBAAuB,CAACwM,cAAc,EAAE5Q,IAAI,CAACqF,iBAAiB,CAAC;IAC5E,MAAME,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC6Q,kBAAkB,CAAC,IAAI,CAACpK,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AAC/D,IAAA,IAAIpC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI0I,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAE;AACrC5I,IAAAA,YAAY,CAAC0I,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG0G,QAAQ,CAACpF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIjG,IAAI,GAAGuG,QAAQ,CAACrF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAI/F,IAAI,GAAGsG,KAAK,CAACtF,kBAAkB,EAAE;AACrC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAAC8Q,qBAAqB,CAAC,IAAI,CAACrK,SAAS,EAAErB,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AACxE,IAAA,IAAIvC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI+I,eAAeA,CAACC,WAAW,EAAE;AACzB/I,IAAAA,YAAY,CAAC+I,WAAW,EAAEV,OAAO,CAAC;AAClC,IAAA,IAAIrG,IAAI,GAAG+G,WAAW,CAACzF,kBAAkB,EAAE;IAC3C1G,IAAI,CAAC+Q,uBAAuB,CAAC,IAAI,CAACtK,SAAS,EAAErB,IAAI,CAAC;AACtD;AACA;AACJ;AACA;EACIiH,YAAYA,CAACN,QAAQ,EAAE;AACnB3I,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG2G,QAAQ,CAACrF,kBAAkB,EAAE;IACxC1G,IAAI,CAACgR,oBAAoB,CAAC,IAAI,CAACvK,SAAS,EAAErB,IAAI,CAAC;AACnD;AACA;AACJ;AACA;EACImH,SAASA,CAACP,KAAK,EAAE;AACb5I,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAIrG,IAAI,GAAG4G,KAAK,CAACtF,kBAAkB,EAAE;IACrC,MAAMvD,GAAG,GAAGnD,IAAI,CAACiR,iBAAiB,CAAC,IAAI,CAACxK,SAAS,EAAErB,IAAI,CAAC;AACxD,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAsJ,EAAAA,iBAAiBA,GAAG;IAChB,MAAMtJ,GAAG,GAAGnD,IAAI,CAACkR,yBAAyB,CAAC,IAAI,CAACzK,SAAS,CAAC;AAC1D,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI4J,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAIhC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACmR,2BAA2B,CAAC,IAAI,CAAC1K,SAAS,CAAC;AAC5DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiC,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAIlC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACoR,iCAAiC,CAAC,IAAI,CAAC3K,SAAS,CAAC;AAClEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACImC,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIpC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACqR,+BAA+B,CAAC,IAAI,CAAC5K,SAAS,CAAC;AAChEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIqC,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAItC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACsR,qCAAqC,CAAC,IAAI,CAAC7K,SAAS,CAAC;AACtEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIuC,EAAAA,mBAAmBA,GAAG;IAClB,MAAMpK,GAAG,GAAGnD,IAAI,CAACuR,2BAA2B,CAAC,IAAI,CAAC9K,SAAS,CAAC;AAC5D,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIgF,EAAAA,yBAAyBA,GAAG;IACxB,MAAMtK,GAAG,GAAGnD,IAAI,CAACwR,iCAAiC,CAAC,IAAI,CAAC/K,SAAS,CAAC;AAClE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIkF,EAAAA,UAAUA,GAAG;IACT,MAAMxK,GAAG,GAAGnD,IAAI,CAACyR,kBAAkB,CAAC,IAAI,CAAChL,SAAS,CAAC;AACnD,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;EACIuO,UAAUA,CAACC,MAAM,EAAE;AACfvO,IAAAA,YAAY,CAACuO,MAAM,EAAElG,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGuM,MAAM,CAACjL,kBAAkB,EAAE;IACtC,MAAMvD,GAAG,GAAGnD,IAAI,CAAC4R,kBAAkB,CAAC,IAAI,CAACnL,SAAS,EAAErB,IAAI,CAAC;AACzD,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA0O,EAAAA,YAAYA,GAAG;IACX,MAAM1O,GAAG,GAAGnD,IAAI,CAAC8R,oBAAoB,CAAC,IAAI,CAACrL,SAAS,CAAC;AACrD,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACI4O,EAAAA,qBAAqBA,CAACC,QAAQ,EAAEC,uBAAuB,EAAEC,KAAK,EAAE;AAC5D,IAAA,IAAInH,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAM7H,GAAG,GAAGnD,IAAI,CAACmS,6BAA6B,CAAC,IAAI,CAAC1L,SAAS,EAAEuL,QAAQ,EAAEC,uBAAuB,EAAEC,KAAK,CAAC;AACxGnH,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACAoH,EAAAA,OAAOA,GAAG;AACNpS,IAAAA,IAAI,CAACqS,eAAe,CAAC,IAAI,CAAC5L,SAAS,CAAC;AACxC;AACJ;AAEA,MAAM6L,sBAAsB,GAAI,OAAOrM,oBAAoB,KAAK,WAAW,GACrE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAACuS,qBAAqB,CAAC/R,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAExE,MAAMgS,UAAU,CAAC;AAEpB9L,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClB6L,IAAAA,sBAAsB,CAACnM,UAAU,CAAC,IAAI,CAAC;AACvC,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAACuS,qBAAqB,CAAC/R,GAAG,EAAE,CAAC,CAAC;AACtC;AACA;AACJ;AACA;EACI,IAAIqK,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B9B,IAAI,CAACyS,iBAAiB,CAAC,IAAI,CAAChM,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AACtD;AACA;AACJ;AACA;EACI,IAAIsF,EAAEA,GAAG;AACL,IAAA,IAAIE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC0S,aAAa,CAAC,IAAI,CAACjM,SAAS,CAAC;AAC9CsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIpE,WAAWA,CAACiE,EAAE,EAAE;AACZ,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC2S,cAAc,CAACvN,IAAI,EAAEG,IAAI,CAAC;AAC3C,IAAA,IAAI,CAACkB,SAAS,GAAGtD,GAAG,KAAK,CAAC;IAC1BmP,sBAAsB,CAACpM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACO,SAAS,EAAE,IAAI,CAAC;AAC3D,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI0E,UAAUA,CAACC,MAAM,EAAEC,MAAM,EAAEyD,MAAM,EAAE8D,KAAK,EAAEpH,QAAQ,EAAE;AAChDpI,IAAAA,YAAY,CAACgI,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGgG,MAAM,CAAC1E,kBAAkB,EAAE;AACtC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAAC6S,qBAAqB,CAAC,IAAI,CAACpM,SAAS,EAAErB,IAAI,EAAEiG,MAAM,EAAEyD,MAAM,EAAE8D,KAAK,EAAEpH,QAAQ,CAAC;AAC7F,IAAA,IAAIrI,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIwI,UAAUA,CAACP,MAAM,EAAE;AACfhI,IAAAA,YAAY,CAACgI,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGgG,MAAM,CAAC1E,kBAAkB,EAAE;IACtC1G,IAAI,CAAC8S,qBAAqB,CAAC,IAAI,CAACrM,SAAS,EAAErB,IAAI,CAAC;AACpD;AACA;AACJ;AACA;AACA;AACA;AACIyG,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAE;AACrC5I,IAAAA,YAAY,CAAC0I,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG0G,QAAQ,CAACpF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIjG,IAAI,GAAGuG,QAAQ,CAACrF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAI/F,IAAI,GAAGsG,KAAK,CAACtF,kBAAkB,EAAE;AACrC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAAC+S,wBAAwB,CAAC,IAAI,CAACtM,SAAS,EAAErB,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AAC3E,IAAA,IAAIvC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI+I,eAAeA,CAACC,WAAW,EAAE;AACzB/I,IAAAA,YAAY,CAAC+I,WAAW,EAAEV,OAAO,CAAC;AAClC,IAAA,IAAIrG,IAAI,GAAG+G,WAAW,CAACzF,kBAAkB,EAAE;IAC3C1G,IAAI,CAACgT,0BAA0B,CAAC,IAAI,CAACvM,SAAS,EAAErB,IAAI,CAAC;AACzD;AACA;AACJ;AACA;EACIiH,YAAYA,CAACN,QAAQ,EAAE;AACnB3I,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG2G,QAAQ,CAACrF,kBAAkB,EAAE;IACxC1G,IAAI,CAACiT,uBAAuB,CAAC,IAAI,CAACxM,SAAS,EAAErB,IAAI,CAAC;AACtD;AACA;AACJ;AACA;EACImH,SAASA,CAACP,KAAK,EAAE;AACb5I,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAIrG,IAAI,GAAG4G,KAAK,CAACtF,kBAAkB,EAAE;IACrC,MAAMvD,GAAG,GAAGnD,IAAI,CAACkT,oBAAoB,CAAC,IAAI,CAACzM,SAAS,EAAErB,IAAI,CAAC;AAC3D,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAgQ,EAAAA,aAAaA,GAAG;IACZ,MAAMhQ,GAAG,GAAGnD,IAAI,CAACoT,wBAAwB,CAAC,IAAI,CAAC3M,SAAS,CAAC;AACzD,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAkQ,EAAAA,cAAcA,GAAG;AACbrT,IAAAA,IAAI,CAACsT,yBAAyB,CAAC,IAAI,CAAC7M,SAAS,CAAC;AAClD;AACAgG,EAAAA,iBAAiBA,GAAG;IAChB,MAAMtJ,GAAG,GAAGnD,IAAI,CAACuT,4BAA4B,CAAC,IAAI,CAAC9M,SAAS,CAAC;AAC7D,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI4J,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAIhC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACwT,8BAA8B,CAAC,IAAI,CAAC/M,SAAS,CAAC;AAC/DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiC,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAIlC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACyT,oCAAoC,CAAC,IAAI,CAAChN,SAAS,CAAC;AACrEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACImC,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIpC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC0T,kCAAkC,CAAC,IAAI,CAACjN,SAAS,CAAC;AACnEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIqC,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAItC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC2T,wCAAwC,CAAC,IAAI,CAAClN,SAAS,CAAC;AACzEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIuC,EAAAA,mBAAmBA,GAAG;IAClB,MAAMpK,GAAG,GAAGnD,IAAI,CAAC4T,8BAA8B,CAAC,IAAI,CAACnN,SAAS,CAAC;AAC/D,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIgF,EAAAA,yBAAyBA,GAAG;IACxB,MAAMtK,GAAG,GAAGnD,IAAI,CAAC6T,oCAAoC,CAAC,IAAI,CAACpN,SAAS,CAAC;AACrE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIoH,EAAAA,+BAA+BA,GAAG;AAC9B,IAAA,IAAI9E,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC8T,0CAA0C,CAAC,IAAI,CAACrN,SAAS,CAAC;AAC3EsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI+E,EAAAA,qCAAqCA,GAAG;AACpC,IAAA,IAAIhF,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC+T,gDAAgD,CAAC,IAAI,CAACtN,SAAS,CAAC;AACjFsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiF,EAAAA,2BAA2BA,GAAG;IAC1B,MAAM9M,GAAG,GAAGnD,IAAI,CAACgU,sCAAsC,CAAC,IAAI,CAACvN,SAAS,CAAC;AACvE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACI0H,EAAAA,iCAAiCA,GAAG;IAChC,MAAMhN,GAAG,GAAGnD,IAAI,CAACiU,4CAA4C,CAAC,IAAI,CAACxN,SAAS,CAAC;AAC7E,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIkF,EAAAA,UAAUA,GAAG;IACT,MAAMxK,GAAG,GAAGnD,IAAI,CAACkU,qBAAqB,CAAC,IAAI,CAACzN,SAAS,CAAC;AACtD,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACJ;AAEA,MAAMgR,4BAA4B,GAAI,OAAOlO,oBAAoB,KAAK,WAAW,GAC3E;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAACoU,2BAA2B,CAAC5T,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAE9E,MAAM6T,gBAAgB,CAAC;AAE1B3N,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClB0N,IAAAA,4BAA4B,CAAChO,UAAU,CAAC,IAAI,CAAC;AAC7C,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAACoU,2BAA2B,CAAC5T,GAAG,EAAE,CAAC,CAAC;AAC5C;AACAoG,EAAAA,WAAWA,GAAG;AACV,IAAA,MAAMzD,GAAG,GAAGnD,IAAI,CAACsU,oBAAoB,EAAE;AACvC,IAAA,IAAI,CAAC7N,SAAS,GAAGtD,GAAG,KAAK,CAAC;IAC1BgR,4BAA4B,CAACjO,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACO,SAAS,EAAE,IAAI,CAAC;AACjE,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;EACI8N,qBAAqBA,CAACC,QAAQ,EAAE;AAC5B,IAAA,IAAIC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACAtR,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;AAC1C,MAAA,MAAMxR,GAAG,GAAGnD,IAAI,CAAC4U,sCAAsC,CAAC,IAAI,CAACnO,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,CAAC;AAC3F,MAAA,IAAIjB,IAAI,GAAGrC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIsC,IAAI,GAAGtC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRqC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMjC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAsR,MAAAA,WAAW,GAAGjP,IAAI;AAClBkP,MAAAA,WAAW,GAAGjP,IAAI;AAClB,MAAA,OAAO5D,kBAAkB,CAAC2D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNzF,IAAI,CAAC0I,eAAe,CAAC+L,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIG,EAAAA,WAAWA,CAACL,QAAQ,EAAEM,OAAO,EAAE;AAC3B,IAAA,IAAIL,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACAtR,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;AAC1C,MAAA,MAAMxR,GAAG,GAAGnD,IAAI,CAAC+U,4BAA4B,CAAC,IAAI,CAACtO,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,EAAEqO,OAAO,CAAC;AAC1F,MAAA,IAAItP,IAAI,GAAGrC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIsC,IAAI,GAAGtC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRqC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMjC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAsR,MAAAA,WAAW,GAAGjP,IAAI;AAClBkP,MAAAA,WAAW,GAAGjP,IAAI;AAClB,MAAA,OAAO5D,kBAAkB,CAAC2D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNzF,IAAI,CAAC0I,eAAe,CAAC+L,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIM,EAAAA,WAAWA,CAACR,QAAQ,EAAES,OAAO,EAAE;AAC3B,IAAA,IAAIR,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACAtR,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;AAC1C,MAAA,MAAMxR,GAAG,GAAGnD,IAAI,CAACkV,4BAA4B,CAAC,IAAI,CAACzO,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,EAAEwO,OAAO,CAAC;AAC1F,MAAA,IAAIzP,IAAI,GAAGrC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIsC,IAAI,GAAGtC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRqC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMjC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAsR,MAAAA,WAAW,GAAGjP,IAAI;AAClBkP,MAAAA,WAAW,GAAGjP,IAAI;AAClB,MAAA,OAAO5D,kBAAkB,CAAC2D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNzF,IAAI,CAAC0I,eAAe,CAAC+L,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIS,EAAAA,aAAaA,CAACX,QAAQ,EAAEY,SAAS,EAAE;AAC/B,IAAA,IAAIX,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACAtR,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;AAC1C,MAAA,MAAMxR,GAAG,GAAGnD,IAAI,CAACqV,8BAA8B,CAAC,IAAI,CAAC5O,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,EAAE2O,SAAS,CAAC;AAC9F,MAAA,IAAI5P,IAAI,GAAGrC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIsC,IAAI,GAAGtC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRqC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMjC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAsR,MAAAA,WAAW,GAAGjP,IAAI;AAClBkP,MAAAA,WAAW,GAAGjP,IAAI;AAClB,MAAA,OAAO5D,kBAAkB,CAAC2D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNzF,IAAI,CAAC0I,eAAe,CAAC+L,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;EACIY,mBAAmBA,CAACd,QAAQ,EAAE;AAC1B,IAAA,IAAIC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACAtR,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;AAC1C,MAAA,MAAMxR,GAAG,GAAGnD,IAAI,CAACuV,oCAAoC,CAAC,IAAI,CAAC9O,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,CAAC;AACzF,MAAA,IAAIjB,IAAI,GAAGrC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIsC,IAAI,GAAGtC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRqC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMjC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAsR,MAAAA,WAAW,GAAGjP,IAAI;AAClBkP,MAAAA,WAAW,GAAGjP,IAAI;AAClB,MAAA,OAAO5D,kBAAkB,CAAC2D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNzF,IAAI,CAAC0I,eAAe,CAAC+L,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIc,EAAAA,uBAAuBA,CAAChB,QAAQ,EAAEM,OAAO,EAAE;AACvC,IAAA,IAAIL,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACAtR,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;AAC1C,MAAA,MAAMxR,GAAG,GAAGnD,IAAI,CAACyV,wCAAwC,CAAC,IAAI,CAAChP,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,EAAEqO,OAAO,CAAC;AACtG,MAAA,IAAItP,IAAI,GAAGrC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIsC,IAAI,GAAGtC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRqC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMjC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAsR,MAAAA,WAAW,GAAGjP,IAAI;AAClBkP,MAAAA,WAAW,GAAGjP,IAAI;AAClB,MAAA,OAAO5D,kBAAkB,CAAC2D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNzF,IAAI,CAAC0I,eAAe,CAAC+L,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIgB,EAAAA,uBAAuBA,CAAClB,QAAQ,EAAES,OAAO,EAAE;AACvC,IAAA,IAAIR,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACAtR,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;AAC1C,MAAA,MAAMxR,GAAG,GAAGnD,IAAI,CAAC2V,wCAAwC,CAAC,IAAI,CAAClP,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,EAAEwO,OAAO,CAAC;AACtG,MAAA,IAAIzP,IAAI,GAAGrC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIsC,IAAI,GAAGtC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRqC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMjC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAsR,MAAAA,WAAW,GAAGjP,IAAI;AAClBkP,MAAAA,WAAW,GAAGjP,IAAI;AAClB,MAAA,OAAO5D,kBAAkB,CAAC2D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNzF,IAAI,CAAC0I,eAAe,CAAC+L,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIkB,EAAAA,yBAAyBA,CAACpB,QAAQ,EAAEY,SAAS,EAAE;AAC3C,IAAA,IAAIX,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACAtR,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;AAC1C,MAAA,MAAMxR,GAAG,GAAGnD,IAAI,CAAC6V,0CAA0C,CAAC,IAAI,CAACpP,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,EAAE2O,SAAS,CAAC;AAC1G,MAAA,IAAI5P,IAAI,GAAGrC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIsC,IAAI,GAAGtC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRqC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMjC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAsR,MAAAA,WAAW,GAAGjP,IAAI;AAClBkP,MAAAA,WAAW,GAAGjP,IAAI;AAClB,MAAA,OAAO5D,kBAAkB,CAAC2D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNzF,IAAI,CAAC0I,eAAe,CAAC+L,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIoB,YAAYA,CAACtB,QAAQ,EAAEM,OAAO,EAAE9C,QAAQ,EAAE7M,YAAY,EAAE;AACpD,IAAA,IAAI4Q,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA5S,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;MAC1C,IAAIvP,IAAI,GAAGX,UAAU,CAACU,YAAY,CAAC,GAAG,CAAC,GAAGzC,iBAAiB,CAACyC,YAAY,EAAEnF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAC1H,IAAIC,IAAI,GAAGzD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAACiW,6BAA6B,CAAC,IAAI,CAACxP,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,EAAEqO,OAAO,EAAE9C,QAAQ,EAAE5M,IAAI,EAAEG,IAAI,CAAC;AACjH,MAAA,IAAIG,IAAI,GAAGvC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIwC,IAAI,GAAGxC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRuC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMnC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA4S,MAAAA,WAAW,GAAGrQ,IAAI;AAClBsQ,MAAAA,WAAW,GAAGrQ,IAAI;AAClB,MAAA,OAAO9D,kBAAkB,CAAC6D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN3F,IAAI,CAAC0I,eAAe,CAACqN,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIE,QAAQA,CAAC1B,QAAQ,EAAEM,OAAO,EAAE3I,WAAW,EAAEhH,YAAY,EAAE;AACnD,IAAA,IAAIgR,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACAhT,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;AAC1CvR,MAAAA,YAAY,CAAC+I,WAAW,EAAEV,OAAO,CAAC;AAClC,MAAA,IAAIrG,IAAI,GAAG+G,WAAW,CAACzF,kBAAkB,EAAE;MAC3C,IAAIlB,IAAI,GAAGf,UAAU,CAACU,YAAY,CAAC,GAAG,CAAC,GAAGzC,iBAAiB,CAACyC,YAAY,EAAEnF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAC1H,IAAIG,IAAI,GAAG3D,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAACqW,yBAAyB,CAAC,IAAI,CAAC5P,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,EAAEqO,OAAO,EAAE1P,IAAI,EAAEI,IAAI,EAAEC,IAAI,CAAC;AACzG,MAAA,IAAI6Q,IAAI,GAAGnT,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIoT,IAAI,GAAGpT,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRmT,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM/S,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAgT,MAAAA,WAAW,GAAGG,IAAI;AAClBF,MAAAA,WAAW,GAAGG,IAAI;AAClB,MAAA,OAAO1U,kBAAkB,CAACyU,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNvW,IAAI,CAAC0I,eAAe,CAACyN,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACII,QAAQA,CAAChC,QAAQ,EAAES,OAAO,EAAE9I,WAAW,EAAEhH,YAAY,EAAE;AACnD,IAAA,IAAIgR,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACAhT,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;AAC1CvR,MAAAA,YAAY,CAAC+I,WAAW,EAAEV,OAAO,CAAC;AAClC,MAAA,IAAIrG,IAAI,GAAG+G,WAAW,CAACzF,kBAAkB,EAAE;MAC3C,IAAIlB,IAAI,GAAGf,UAAU,CAACU,YAAY,CAAC,GAAG,CAAC,GAAGzC,iBAAiB,CAACyC,YAAY,EAAEnF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAC1H,IAAIG,IAAI,GAAG3D,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAACyW,yBAAyB,CAAC,IAAI,CAAChQ,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,EAAEwO,OAAO,EAAE7P,IAAI,EAAEI,IAAI,EAAEC,IAAI,CAAC;AACzG,MAAA,IAAI6Q,IAAI,GAAGnT,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIoT,IAAI,GAAGpT,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRmT,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM/S,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAgT,MAAAA,WAAW,GAAGG,IAAI;AAClBF,MAAAA,WAAW,GAAGG,IAAI;AAClB,MAAA,OAAO1U,kBAAkB,CAACyU,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNvW,IAAI,CAAC0I,eAAe,CAACyN,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIM,UAAUA,CAAClC,QAAQ,EAAEY,SAAS,EAAEjJ,WAAW,EAAEhH,YAAY,EAAE;AACvD,IAAA,IAAIgR,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACAhT,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;AAC1CvR,MAAAA,YAAY,CAAC+I,WAAW,EAAEV,OAAO,CAAC;AAClC,MAAA,IAAIrG,IAAI,GAAG+G,WAAW,CAACzF,kBAAkB,EAAE;MAC3C,IAAIlB,IAAI,GAAGf,UAAU,CAACU,YAAY,CAAC,GAAG,CAAC,GAAGzC,iBAAiB,CAACyC,YAAY,EAAEnF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAC1H,IAAIG,IAAI,GAAG3D,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC2W,2BAA2B,CAAC,IAAI,CAAClQ,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,EAAE2O,SAAS,EAAEhQ,IAAI,EAAEI,IAAI,EAAEC,IAAI,CAAC;AAC7G,MAAA,IAAI6Q,IAAI,GAAGnT,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIoT,IAAI,GAAGpT,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRmT,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM/S,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAgT,MAAAA,WAAW,GAAGG,IAAI;AAClBF,MAAAA,WAAW,GAAGG,IAAI;AAClB,MAAA,OAAO1U,kBAAkB,CAACyU,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNvW,IAAI,CAAC0I,eAAe,CAACyN,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIQ,WAAWA,CAACpC,QAAQ,EAAEM,OAAO,EAAE9C,QAAQ,EAAE7M,YAAY,EAAE;AACnD,IAAA,IAAI4Q,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA5S,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;MAC1C,IAAIvP,IAAI,GAAGX,UAAU,CAACU,YAAY,CAAC,GAAG,CAAC,GAAGzC,iBAAiB,CAACyC,YAAY,EAAEnF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAC1H,IAAIC,IAAI,GAAGzD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC6W,4BAA4B,CAAC,IAAI,CAACpQ,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,EAAEqO,OAAO,EAAE9C,QAAQ,EAAE5M,IAAI,EAAEG,IAAI,CAAC;AAChH,MAAA,IAAIG,IAAI,GAAGvC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIwC,IAAI,GAAGxC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRuC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMnC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA4S,MAAAA,WAAW,GAAGrQ,IAAI;AAClBsQ,MAAAA,WAAW,GAAGrQ,IAAI;AAClB,MAAA,OAAO9D,kBAAkB,CAAC6D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN3F,IAAI,CAAC0I,eAAe,CAACqN,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIc,EAAAA,OAAOA,CAACtC,QAAQ,EAAEM,OAAO,EAAEiC,aAAa,EAAEC,OAAO,EAAEC,WAAW,EAAEC,KAAK,EAAE/R,YAAY,EAAE;AACjF,IAAA,IAAI4Q,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA5S,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;MAC1C,IAAIvP,IAAI,GAAGX,UAAU,CAACU,YAAY,CAAC,GAAG,CAAC,GAAGzC,iBAAiB,CAACyC,YAAY,EAAEnF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAC1H,IAAIC,IAAI,GAAGzD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAACmX,wBAAwB,CAAC,IAAI,CAAC1Q,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,EAAEqO,OAAO,EAAEiC,aAAa,EAAEC,OAAO,EAAEC,WAAW,EAAEC,KAAK,EAAE9R,IAAI,EAAEG,IAAI,CAAC;AAC9I,MAAA,IAAIG,IAAI,GAAGvC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIwC,IAAI,GAAGxC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRuC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMnC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA4S,MAAAA,WAAW,GAAGrQ,IAAI;AAClBsQ,MAAAA,WAAW,GAAGrQ,IAAI;AAClB,MAAA,OAAO9D,kBAAkB,CAAC6D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN3F,IAAI,CAAC0I,eAAe,CAACqN,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIoB,kBAAkBA,CAAC5C,QAAQ,EAAES,OAAO,EAAEoC,CAAC,EAAElS,YAAY,EAAE;AACnD,IAAA,IAAI4Q,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA5S,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;MAC1C,IAAIvP,IAAI,GAAGX,UAAU,CAACU,YAAY,CAAC,GAAG,CAAC,GAAGzC,iBAAiB,CAACyC,YAAY,EAAEnF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAC1H,IAAIC,IAAI,GAAGzD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAACsX,mCAAmC,CAAC,IAAI,CAAC7Q,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,EAAEwO,OAAO,EAAEoC,CAAC,EAAEjS,IAAI,EAAEG,IAAI,CAAC;AAChH,MAAA,IAAIG,IAAI,GAAGvC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIwC,IAAI,GAAGxC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRuC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMnC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA4S,MAAAA,WAAW,GAAGrQ,IAAI;AAClBsQ,MAAAA,WAAW,GAAGrQ,IAAI;AAClB,MAAA,OAAO9D,kBAAkB,CAAC6D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN3F,IAAI,CAAC0I,eAAe,CAACqN,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIuB,SAASA,CAAC/C,QAAQ,EAAES,OAAO,EAAEoC,CAAC,EAAElS,YAAY,EAAE;AAC1C,IAAA,IAAI4Q,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA5S,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;MAC1C,IAAIvP,IAAI,GAAGX,UAAU,CAACU,YAAY,CAAC,GAAG,CAAC,GAAGzC,iBAAiB,CAACyC,YAAY,EAAEnF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAC1H,IAAIC,IAAI,GAAGzD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAACwX,0BAA0B,CAAC,IAAI,CAAC/Q,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,EAAEwO,OAAO,EAAEoC,CAAC,EAAEjS,IAAI,EAAEG,IAAI,CAAC;AACvG,MAAA,IAAIG,IAAI,GAAGvC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIwC,IAAI,GAAGxC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRuC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMnC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA4S,MAAAA,WAAW,GAAGrQ,IAAI;AAClBsQ,MAAAA,WAAW,GAAGrQ,IAAI;AAClB,MAAA,OAAO9D,kBAAkB,CAAC6D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN3F,IAAI,CAAC0I,eAAe,CAACqN,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIyB,OAAOA,CAACjD,QAAQ,EAAES,OAAO,EAAEoC,CAAC,EAAElS,YAAY,EAAE;AACxC,IAAA,IAAI4Q,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA5S,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;MAC1C,IAAIvP,IAAI,GAAGX,UAAU,CAACU,YAAY,CAAC,GAAG,CAAC,GAAGzC,iBAAiB,CAACyC,YAAY,EAAEnF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAC1H,IAAIC,IAAI,GAAGzD,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC0X,wBAAwB,CAAC,IAAI,CAACjR,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,EAAEwO,OAAO,EAAEoC,CAAC,EAAEjS,IAAI,EAAEG,IAAI,CAAC;AACrG,MAAA,IAAIG,IAAI,GAAGvC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIwC,IAAI,GAAGxC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRuC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMnC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA4S,MAAAA,WAAW,GAAGrQ,IAAI;AAClBsQ,MAAAA,WAAW,GAAGrQ,IAAI;AAClB,MAAA,OAAO9D,kBAAkB,CAAC6D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN3F,IAAI,CAAC0I,eAAe,CAACqN,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACI2B,EAAAA,YAAYA,CAACnD,QAAQ,EAAEY,SAAS,EAAEjQ,YAAY,EAAE;AAC5C,IAAA,IAAI4Q,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA5S,MAAAA,YAAY,CAACoR,QAAQ,EAAEG,kBAAkB,CAAC;MAC1C,IAAIvP,IAAI,GAAGX,UAAU,CAACU,YAAY,CAAC,GAAG,CAAC,GAAGzC,iBAAiB,CAACyC,YAAY,EAAEnF,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAC1H,IAAIC,IAAI,GAAGzD,eAAe;AAC1B,MAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC4X,6BAA6B,CAAC,IAAI,CAACnR,SAAS,EAAE+N,QAAQ,CAAC/N,SAAS,EAAE2O,SAAS,EAAEhQ,IAAI,EAAEG,IAAI,CAAC;AACzG,MAAA,IAAIG,IAAI,GAAGvC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIwC,IAAI,GAAGxC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRuC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMnC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA4S,MAAAA,WAAW,GAAGrQ,IAAI;AAClBsQ,MAAAA,WAAW,GAAGrQ,IAAI;AAClB,MAAA,OAAO9D,kBAAkB,CAAC6D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN3F,IAAI,CAAC0I,eAAe,CAACqN,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACJ;AAEA,MAAM6B,8BAA8B,GAAI,OAAO5R,oBAAoB,KAAK,WAAW,GAC7E;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAAC8X,6BAA6B,CAACtX,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEhF,MAAMmU,kBAAkB,CAAC;AAE5BjO,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBoR,IAAAA,8BAA8B,CAAC1R,UAAU,CAAC,IAAI,CAAC;AAC/C,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAAC8X,6BAA6B,CAACtX,GAAG,EAAE,CAAC,CAAC;AAC9C;AACA;AACJ;AACA;AACA;AACIoG,EAAAA,WAAWA,CAACiE,EAAE,EAAEkN,qBAAqB,EAAE;AACnC,IAAA,MAAM3S,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAACqV,qBAAqB,EAAE/X,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACtG,MAAMG,IAAI,GAAG3D,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACgY,sBAAsB,CAAC5S,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAC/D,IAAA,IAAItC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,IAAI,CAACsD,SAAS,GAAGtD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7B0U,8BAA8B,CAAC3R,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACO,SAAS,EAAE,IAAI,CAAC;AACnE,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;EACI,IAAIoE,EAAEA,GAAG;AACL,IAAA,IAAIE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACiY,qBAAqB,CAAC,IAAI,CAACxR,SAAS,CAAC;AACtDsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIkN,EAAAA,iBAAiBA,GAAG;AAChB,IAAA,IAAInN,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACmY,oCAAoC,CAAC,IAAI,CAAC1R,SAAS,CAAC;AACrEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIoN,EAAAA,sBAAsBA,GAAG;AACrB,IAAA,IAAIrN,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACqY,yCAAyC,CAAC,IAAI,CAAC5R,SAAS,CAAC;AAC1EsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIsN,EAAAA,qBAAqBA,GAAG;AACpB,IAAA,IAAIvN,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACuY,wCAAwC,CAAC,IAAI,CAAC9R,SAAS,CAAC;AACzEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIwN,EAAAA,4BAA4BA,GAAG;AAC3B,IAAA,IAAIzN,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACyY,+CAA+C,CAAC,IAAI,CAAChS,SAAS,CAAC;AAChFsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI0N,EAAAA,sBAAsBA,GAAG;AACrB,IAAA,IAAI3N,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC2Y,yCAAyC,CAAC,IAAI,CAAClS,SAAS,CAAC;AAC1EsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACI4N,sBAAsBA,CAACC,oBAAoB,EAAE;AACzC,IAAA,MAAMzT,IAAI,GAAG1C,iBAAiB,CAACmW,oBAAoB,EAAE7Y,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACrG,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC8Y,yCAAyC,CAAC,IAAI,CAACrS,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AACtF,IAAA,IAAIpC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI4V,EAAAA,YAAYA,CAAC5M,WAAW,EAAEJ,QAAQ,EAAEC,KAAK,EAAE;AACvC5I,IAAAA,YAAY,CAAC+I,WAAW,EAAEV,OAAO,CAAC;AAClC,IAAA,IAAIrG,IAAI,GAAG+G,WAAW,CAACzF,kBAAkB,EAAE;AAC3CtD,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIjG,IAAI,GAAGuG,QAAQ,CAACrF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAI/F,IAAI,GAAGsG,KAAK,CAACtF,kBAAkB,EAAE;AACrC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAACgZ,+BAA+B,CAAC,IAAI,CAACvS,SAAS,EAAErB,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AAClF,IAAA,IAAIvC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI8V,cAAcA,CAAC9M,WAAW,EAAE;AACxB/I,IAAAA,YAAY,CAAC+I,WAAW,EAAEV,OAAO,CAAC;AAClC,IAAA,IAAIrG,IAAI,GAAG+G,WAAW,CAACzF,kBAAkB,EAAE;IAC3C1G,IAAI,CAACkZ,iCAAiC,CAAC,IAAI,CAACzS,SAAS,EAAErB,IAAI,CAAC;AAChE;AACA;AACJ;AACA;EACI+T,WAAWA,CAACpN,QAAQ,EAAE;AAClB3I,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG2G,QAAQ,CAACrF,kBAAkB,EAAE;IACxC1G,IAAI,CAACoZ,8BAA8B,CAAC,IAAI,CAAC3S,SAAS,EAAErB,IAAI,CAAC;AAC7D;AACA;AACJ;AACA;EACIiU,QAAQA,CAACrN,KAAK,EAAE;AACZ5I,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAIrG,IAAI,GAAG4G,KAAK,CAACtF,kBAAkB,EAAE;IACrC,MAAMvD,GAAG,GAAGnD,IAAI,CAACsZ,2BAA2B,CAAC,IAAI,CAAC7S,SAAS,EAAErB,IAAI,CAAC;AAClE,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIoW,SAASA,CAAC5H,MAAM,EAAE;AACdvO,IAAAA,YAAY,CAACuO,MAAM,EAAElG,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGuM,MAAM,CAACjL,kBAAkB,EAAE;IACtC1G,IAAI,CAACwZ,4BAA4B,CAAC,IAAI,CAAC/S,SAAS,EAAErB,IAAI,CAAC;AAC3D;AACJ;AAEA,MAAMqU,6BAA6B,GAAI,OAAOxT,oBAAoB,KAAK,WAAW,GAC5E;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAAC0Z,4BAA4B,CAAClZ,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAE/E,MAAMmZ,iBAAiB,CAAC;EAE3B,OAAO9T,MAAMA,CAACrF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAG0F,MAAM,CAACC,MAAM,CAACoT,iBAAiB,CAACnT,SAAS,CAAC;IACtD5F,GAAG,CAAC6F,SAAS,GAAGjG,GAAG;IACnBiZ,6BAA6B,CAACvT,QAAQ,CAACtF,GAAG,EAAEA,GAAG,CAAC6F,SAAS,EAAE7F,GAAG,CAAC;AAC/D,IAAA,OAAOA,GAAG;AACd;AAEA8F,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBgT,IAAAA,6BAA6B,CAACtT,UAAU,CAAC,IAAI,CAAC;AAC9C,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAAC0Z,4BAA4B,CAAClZ,GAAG,EAAE,CAAC,CAAC;AAC7C;AACA;AACJ;AACA;EACI,IAAIoZ,IAAIA,GAAG;AACP,IAAA,IAAI7O,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC6Z,sBAAsB,CAAC,IAAI,CAACpT,SAAS,CAAC;AACvDsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACI,IAAIqD,UAAUA,GAAG;AACb,IAAA,IAAItD,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC8Z,4BAA4B,CAAC,IAAI,CAACrT,SAAS,CAAC;AAC7DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACJ;AAEA,MAAM+O,kBAAkB,GAAI,OAAO9T,oBAAoB,KAAK,WAAW,GACjE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAACga,iBAAiB,CAACxZ,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEpE,MAAMyZ,MAAM,CAAC;AAEhBvT,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBsT,IAAAA,kBAAkB,CAAC5T,UAAU,CAAC,IAAI,CAAC;AACnC,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAACga,iBAAiB,CAACxZ,GAAG,EAAE,CAAC,CAAC;AAClC;AACA;AACJ;AACA;EACI,IAAIqK,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B9B,IAAI,CAACka,aAAa,CAAC,IAAI,CAACzT,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AAClD;AACA;AACJ;AACA;EACI,IAAIsF,EAAEA,GAAG;AACL,IAAA,IAAIE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACma,SAAS,CAAC,IAAI,CAAC1T,SAAS,CAAC;AAC1CsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIpE,WAAWA,CAACiE,EAAE,EAAE;AACZ,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACoa,UAAU,CAAChV,IAAI,EAAEG,IAAI,CAAC;AACvC,IAAA,IAAI,CAACkB,SAAS,GAAGtD,GAAG,KAAK,CAAC;IAC1B4W,kBAAkB,CAAC7T,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACO,SAAS,EAAE,IAAI,CAAC;AACvD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACI0E,EAAAA,UAAUA,CAACkP,KAAK,EAAEC,GAAG,EAAE;AACnBlX,IAAAA,YAAY,CAACiX,KAAK,EAAE5O,OAAO,CAAC;AAC5B,IAAA,IAAIrG,IAAI,GAAGiV,KAAK,CAAC3T,kBAAkB,EAAE;AACrCtD,IAAAA,YAAY,CAACkX,GAAG,EAAE7O,OAAO,CAAC;AAC1B,IAAA,IAAIjG,IAAI,GAAG8U,GAAG,CAAC5T,kBAAkB,EAAE;AACnC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAACua,iBAAiB,CAAC,IAAI,CAAC9T,SAAS,EAAErB,IAAI,EAAEI,IAAI,CAAC;AAC9D,IAAA,IAAIrC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI0I,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAE;AACrC5I,IAAAA,YAAY,CAAC0I,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG0G,QAAQ,CAACpF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIjG,IAAI,GAAGuG,QAAQ,CAACrF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAI/F,IAAI,GAAGsG,KAAK,CAACtF,kBAAkB,EAAE;AACrC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAACwa,oBAAoB,CAAC,IAAI,CAAC/T,SAAS,EAAErB,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AACvE,IAAA,IAAIvC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI+I,eAAeA,CAACC,WAAW,EAAE;AACzB/I,IAAAA,YAAY,CAAC+I,WAAW,EAAEV,OAAO,CAAC;AAClC,IAAA,IAAIrG,IAAI,GAAG+G,WAAW,CAACzF,kBAAkB,EAAE;IAC3C1G,IAAI,CAACya,sBAAsB,CAAC,IAAI,CAAChU,SAAS,EAAErB,IAAI,CAAC;AACrD;AACA;AACJ;AACA;EACIiH,YAAYA,CAACN,QAAQ,EAAE;AACnB3I,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG2G,QAAQ,CAACrF,kBAAkB,EAAE;IACxC1G,IAAI,CAAC0a,mBAAmB,CAAC,IAAI,CAACjU,SAAS,EAAErB,IAAI,CAAC;AAClD;AACA;AACJ;AACA;EACImH,SAASA,CAACP,KAAK,EAAE;AACb5I,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAIrG,IAAI,GAAG4G,KAAK,CAACtF,kBAAkB,EAAE;IACrC,MAAMvD,GAAG,GAAGnD,IAAI,CAAC2a,gBAAgB,CAAC,IAAI,CAAClU,SAAS,EAAErB,IAAI,CAAC;AACvD,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAsJ,EAAAA,iBAAiBA,GAAG;IAChB,MAAMtJ,GAAG,GAAGnD,IAAI,CAAC4a,wBAAwB,CAAC,IAAI,CAACnU,SAAS,CAAC;AACzD,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAwJ,EAAAA,cAAcA,GAAG;AACb3M,IAAAA,IAAI,CAAC6a,qBAAqB,CAAC,IAAI,CAACpU,SAAS,CAAC;AAC9C;AACAoG,EAAAA,OAAOA,GAAG;AACN7M,IAAAA,IAAI,CAAC8a,cAAc,CAAC,IAAI,CAACrU,SAAS,CAAC;AACvC;AACA;AACJ;AACA;AACIsG,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAIhC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC+a,0BAA0B,CAAC,IAAI,CAACtU,SAAS,CAAC;AAC3DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiC,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAIlC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACgb,gCAAgC,CAAC,IAAI,CAACvU,SAAS,CAAC;AACjEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACImC,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIpC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACib,8BAA8B,CAAC,IAAI,CAACxU,SAAS,CAAC;AAC/DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIqC,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAItC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACkb,oCAAoC,CAAC,IAAI,CAACzU,SAAS,CAAC;AACrEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIuC,EAAAA,mBAAmBA,GAAG;IAClB,MAAMpK,GAAG,GAAGnD,IAAI,CAACmb,0BAA0B,CAAC,IAAI,CAAC1U,SAAS,CAAC;AAC3D,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIgF,EAAAA,yBAAyBA,GAAG;IACxB,MAAMtK,GAAG,GAAGnD,IAAI,CAACob,gCAAgC,CAAC,IAAI,CAAC3U,SAAS,CAAC;AACjE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIkF,EAAAA,UAAUA,GAAG;IACT,MAAMxK,GAAG,GAAGnD,IAAI,CAACqb,iBAAiB,CAAC,IAAI,CAAC5U,SAAS,CAAC;AAClD,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;EACIuO,UAAUA,CAACC,MAAM,EAAE;AACfvO,IAAAA,YAAY,CAACuO,MAAM,EAAElG,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGuM,MAAM,CAACjL,kBAAkB,EAAE;IACtC,MAAMvD,GAAG,GAAGnD,IAAI,CAACsb,iBAAiB,CAAC,IAAI,CAAC7U,SAAS,EAAErB,IAAI,CAAC;AACxD,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA0O,EAAAA,YAAYA,GAAG;IACX,MAAM1O,GAAG,GAAGnD,IAAI,CAACub,mBAAmB,CAAC,IAAI,CAAC9U,SAAS,CAAC;AACpD,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACI4O,EAAAA,qBAAqBA,CAACC,QAAQ,EAAEC,uBAAuB,EAAEC,KAAK,EAAE;AAC5D,IAAA,IAAInH,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAM7H,GAAG,GAAGnD,IAAI,CAACwb,4BAA4B,CAAC,IAAI,CAAC/U,SAAS,EAAEuL,QAAQ,EAAEC,uBAAuB,EAAEC,KAAK,CAAC;AACvGnH,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIyQ,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,IAAI1Q,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC0b,yBAAyB,CAAC,IAAI,CAACjV,SAAS,CAAC;AAC1DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACJ;AAEA,MAAM2Q,qBAAqB,GAAI,OAAO1V,oBAAoB,KAAK,WAAW,GACpE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAAC4b,oBAAoB,CAACpb,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEvE,MAAMqb,SAAS,CAAC;AAEnBnV,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBkV,IAAAA,qBAAqB,CAACxV,UAAU,CAAC,IAAI,CAAC;AACtC,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAAC4b,oBAAoB,CAACpb,GAAG,EAAE,CAAC,CAAC;AACrC;AACA;AACJ;AACA;EACI,IAAIqK,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B9B,IAAI,CAAC8b,gBAAgB,CAAC,IAAI,CAACrV,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AACrD;AACA;AACJ;AACA;EACI,IAAIsF,EAAEA,GAAG;AACL,IAAA,IAAIE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC+b,YAAY,CAAC,IAAI,CAACtV,SAAS,CAAC;AAC7CsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIpE,WAAWA,CAACiE,EAAE,EAAE;AACZ,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACgc,aAAa,CAAC5W,IAAI,EAAEG,IAAI,CAAC;AAC1C,IAAA,IAAI,CAACkB,SAAS,GAAGtD,GAAG,KAAK,CAAC;IAC1BwY,qBAAqB,CAACzV,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACO,SAAS,EAAE,IAAI,CAAC;AAC1D,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;EACI0E,UAAUA,CAAC8Q,MAAM,EAAE;IACf,MAAM7W,IAAI,GAAGhB,uBAAuB,CAAC6X,MAAM,EAAEjc,IAAI,CAACqF,iBAAiB,CAAC;IACpE,MAAME,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACkc,oBAAoB,CAAC,IAAI,CAACzV,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AACjE,IAAA,IAAIpC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI0I,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAE;AACrC5I,IAAAA,YAAY,CAAC0I,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG0G,QAAQ,CAACpF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIjG,IAAI,GAAGuG,QAAQ,CAACrF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAI/F,IAAI,GAAGsG,KAAK,CAACtF,kBAAkB,EAAE;AACrC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAACmc,uBAAuB,CAAC,IAAI,CAAC1V,SAAS,EAAErB,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AAC1E,IAAA,IAAIvC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI+I,eAAeA,CAACC,WAAW,EAAE;AACzB/I,IAAAA,YAAY,CAAC+I,WAAW,EAAEV,OAAO,CAAC;AAClC,IAAA,IAAIrG,IAAI,GAAG+G,WAAW,CAACzF,kBAAkB,EAAE;IAC3C1G,IAAI,CAACoc,yBAAyB,CAAC,IAAI,CAAC3V,SAAS,EAAErB,IAAI,CAAC;AACxD;AACA;AACJ;AACA;EACIiH,YAAYA,CAACN,QAAQ,EAAE;AACnB3I,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG2G,QAAQ,CAACrF,kBAAkB,EAAE;IACxC1G,IAAI,CAACqc,sBAAsB,CAAC,IAAI,CAAC5V,SAAS,EAAErB,IAAI,CAAC;AACrD;AACA;AACJ;AACA;EACImH,SAASA,CAACP,KAAK,EAAE;AACb5I,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAIrG,IAAI,GAAG4G,KAAK,CAACtF,kBAAkB,EAAE;IACrC,MAAMvD,GAAG,GAAGnD,IAAI,CAACsc,mBAAmB,CAAC,IAAI,CAAC7V,SAAS,EAAErB,IAAI,CAAC;AAC1D,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIoZ,YAAYA,CAACC,QAAQ,EAAE;IACnB,MAAMpX,IAAI,GAAGhB,uBAAuB,CAACoY,QAAQ,EAAExc,IAAI,CAACqF,iBAAiB,CAAC;IACtE,MAAME,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACyc,sBAAsB,CAAC,IAAI,CAAChW,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AACnE,IAAA,IAAIpC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIuZ,SAASA,CAACC,IAAI,EAAE;IACZ,MAAMvX,IAAI,GAAGhB,uBAAuB,CAACuY,IAAI,EAAE3c,IAAI,CAACqF,iBAAiB,CAAC;IAClE,MAAME,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC4c,mBAAmB,CAAC,IAAI,CAACnW,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AAChE,IAAA,IAAIpC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAkQ,EAAAA,cAAcA,GAAG;AACbrT,IAAAA,IAAI,CAAC6c,wBAAwB,CAAC,IAAI,CAACpW,SAAS,CAAC;AACjD;AACA0M,EAAAA,aAAaA,GAAG;IACZ,MAAMhQ,GAAG,GAAGnD,IAAI,CAAC8c,uBAAuB,CAAC,IAAI,CAACrW,SAAS,CAAC;AACxD,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAsJ,EAAAA,iBAAiBA,GAAG;IAChB,MAAMtJ,GAAG,GAAGnD,IAAI,CAAC+c,2BAA2B,CAAC,IAAI,CAACtW,SAAS,CAAC;AAC5D,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI4J,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAIhC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACgd,6BAA6B,CAAC,IAAI,CAACvW,SAAS,CAAC;AAC9DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiC,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAIlC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACid,mCAAmC,CAAC,IAAI,CAACxW,SAAS,CAAC;AACpEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACImC,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIpC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACkd,iCAAiC,CAAC,IAAI,CAACzW,SAAS,CAAC;AAClEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIqC,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAItC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACmd,uCAAuC,CAAC,IAAI,CAAC1W,SAAS,CAAC;AACxEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIuC,EAAAA,mBAAmBA,GAAG;IAClB,MAAMpK,GAAG,GAAGnD,IAAI,CAACod,6BAA6B,CAAC,IAAI,CAAC3W,SAAS,CAAC;AAC9D,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIgF,EAAAA,yBAAyBA,GAAG;IACxB,MAAMtK,GAAG,GAAGnD,IAAI,CAACqd,mCAAmC,CAAC,IAAI,CAAC5W,SAAS,CAAC;AACpE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIoH,EAAAA,+BAA+BA,GAAG;AAC9B,IAAA,IAAI9E,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACsd,yCAAyC,CAAC,IAAI,CAAC7W,SAAS,CAAC;AAC1EsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI+E,EAAAA,qCAAqCA,GAAG;AACpC,IAAA,IAAIhF,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACud,+CAA+C,CAAC,IAAI,CAAC9W,SAAS,CAAC;AAChFsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiF,EAAAA,2BAA2BA,GAAG;IAC1B,MAAM9M,GAAG,GAAGnD,IAAI,CAACwd,qCAAqC,CAAC,IAAI,CAAC/W,SAAS,CAAC;AACtE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACI0H,EAAAA,iCAAiCA,GAAG;IAChC,MAAMhN,GAAG,GAAGnD,IAAI,CAACyd,2CAA2C,CAAC,IAAI,CAAChX,SAAS,CAAC;AAC5E,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIkF,EAAAA,UAAUA,GAAG;IACT,MAAMxK,GAAG,GAAGnD,IAAI,CAAC0d,oBAAoB,CAAC,IAAI,CAACjX,SAAS,CAAC;AACrD,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;EACIuO,UAAUA,CAACC,MAAM,EAAE;AACfvO,IAAAA,YAAY,CAACuO,MAAM,EAAElG,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGuM,MAAM,CAACjL,kBAAkB,EAAE;IACtC,MAAMvD,GAAG,GAAGnD,IAAI,CAAC2d,oBAAoB,CAAC,IAAI,CAAClX,SAAS,EAAErB,IAAI,CAAC;AAC3D,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA0O,EAAAA,YAAYA,GAAG;IACX,MAAM1O,GAAG,GAAGnD,IAAI,CAAC4d,sBAAsB,CAAC,IAAI,CAACnX,SAAS,CAAC;AACvD,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACJ;AAEA,MAAM0a,sBAAsB,GAAI,OAAO5X,oBAAoB,KAAK,WAAW,GACrE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAAC8d,qBAAqB,CAACtd,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAExE,MAAMud,UAAU,CAAC;EAEpB,OAAOlY,MAAMA,CAACrF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAG0F,MAAM,CAACC,MAAM,CAACwX,UAAU,CAACvX,SAAS,CAAC;IAC/C5F,GAAG,CAAC6F,SAAS,GAAGjG,GAAG;IACnBqd,sBAAsB,CAAC3X,QAAQ,CAACtF,GAAG,EAAEA,GAAG,CAAC6F,SAAS,EAAE7F,GAAG,CAAC;AACxD,IAAA,OAAOA,GAAG;AACd;AAEA8F,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBoX,IAAAA,sBAAsB,CAAC1X,UAAU,CAAC,IAAI,CAAC;AACvC,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAAC8d,qBAAqB,CAACtd,GAAG,EAAE,CAAC,CAAC;AACtC;AACA;AACJ;AACA;EACI,IAAIqK,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B9B,IAAI,CAACge,iBAAiB,CAAC,IAAI,CAACvX,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AACtD;AACA;AACJ;AACA;EACI,IAAIsF,EAAEA,GAAG;AACL,IAAA,IAAIE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACie,aAAa,CAAC,IAAI,CAACxX,SAAS,CAAC;AAC9CsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIpE,WAAWA,CAACiE,EAAE,EAAE;AACZ,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACke,cAAc,CAAC9Y,IAAI,EAAEG,IAAI,CAAC;AAC3C,IAAA,IAAI,CAACkB,SAAS,GAAGtD,GAAG,KAAK,CAAC;IAC1B0a,sBAAsB,CAAC3X,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACO,SAAS,EAAE,IAAI,CAAC;AAC3D,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACIe,EAAAA,KAAKA,GAAG;IACJ,MAAMrE,GAAG,GAAGnD,IAAI,CAACme,gBAAgB,CAAC,IAAI,CAAC1X,SAAS,CAAC;AACjD,IAAA,OAAOsX,UAAU,CAAClY,MAAM,CAAC1C,GAAG,CAAC;AACjC;AACA;AACJ;AACA;EACIgI,UAAUA,CAAC8Q,MAAM,EAAE;IACf,MAAM7W,IAAI,GAAGhB,uBAAuB,CAAC6X,MAAM,EAAEjc,IAAI,CAACqF,iBAAiB,CAAC;IACpE,MAAME,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACoe,qBAAqB,CAAC,IAAI,CAAC3X,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AAClE,IAAA,IAAIpC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI0I,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAE;AACrC5I,IAAAA,YAAY,CAAC0I,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG0G,QAAQ,CAACpF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIjG,IAAI,GAAGuG,QAAQ,CAACrF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAI/F,IAAI,GAAGsG,KAAK,CAACtF,kBAAkB,EAAE;AACrC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAACqe,wBAAwB,CAAC,IAAI,CAAC5X,SAAS,EAAErB,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AAC3E,IAAA,IAAIvC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI+I,eAAeA,CAACC,WAAW,EAAE;AACzB/I,IAAAA,YAAY,CAAC+I,WAAW,EAAEV,OAAO,CAAC;AAClC,IAAA,IAAIrG,IAAI,GAAG+G,WAAW,CAACzF,kBAAkB,EAAE;IAC3C1G,IAAI,CAACse,0BAA0B,CAAC,IAAI,CAAC7X,SAAS,EAAErB,IAAI,CAAC;AACzD;AACA;AACJ;AACA;EACIiH,YAAYA,CAACN,QAAQ,EAAE;AACnB3I,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG2G,QAAQ,CAACrF,kBAAkB,EAAE;IACxC1G,IAAI,CAACue,uBAAuB,CAAC,IAAI,CAAC9X,SAAS,EAAErB,IAAI,CAAC;AACtD;AACA;AACJ;AACA;EACImH,SAASA,CAACP,KAAK,EAAE;AACb5I,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAIrG,IAAI,GAAG4G,KAAK,CAACtF,kBAAkB,EAAE;IACrC,MAAMvD,GAAG,GAAGnD,IAAI,CAACwe,oBAAoB,CAAC,IAAI,CAAC/X,SAAS,EAAErB,IAAI,CAAC;AAC3D,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAsJ,EAAAA,iBAAiBA,GAAG;IAChB,MAAMtJ,GAAG,GAAGnD,IAAI,CAACye,4BAA4B,CAAC,IAAI,CAAChY,SAAS,CAAC;AAC7D,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIub,mBAAmBA,CAACzC,MAAM,EAAE;IACxB,MAAM7W,IAAI,GAAGhB,uBAAuB,CAAC6X,MAAM,EAAEjc,IAAI,CAACqF,iBAAiB,CAAC;IACpE,MAAME,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC2e,8BAA8B,CAAC,IAAI,CAAClY,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AAC3E,IAAA,IAAIpC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIyb,SAASA,CAACC,KAAK,EAAE;AACbzb,IAAAA,YAAY,CAACyb,KAAK,EAAEpT,OAAO,CAAC;AAC5B,IAAA,IAAIrG,IAAI,GAAGyZ,KAAK,CAACnY,kBAAkB,EAAE;IACrC,MAAMvD,GAAG,GAAGnD,IAAI,CAAC8e,oBAAoB,CAAC,IAAI,CAACrY,SAAS,EAAErB,IAAI,CAAC;AAC3D,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI4b,EAAAA,UAAUA,GAAG;AACT,IAAA,IAAIhU,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACgf,qBAAqB,CAAC,IAAI,CAACvY,SAAS,CAAC;AACtDsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiU,EAAAA,cAAcA,GAAG;IACb,MAAM9b,GAAG,GAAGnD,IAAI,CAACkf,yBAAyB,CAAC,IAAI,CAACzY,SAAS,CAAC;AAC1D,IAAA,IAAIgC,EAAE,GAAG9D,wBAAwB,CAACxB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACzDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACI0W,EAAAA,SAASA,GAAG;IACR,MAAMhc,GAAG,GAAGnD,IAAI,CAACof,oBAAoB,CAAC,IAAI,CAAC3Y,SAAS,CAAC;IACrD,OAAOtD,GAAG,KAAK,CAAC;AACpB;AACA;AACJ;AACA;AACA;AACA;AACA;AACI4O,EAAAA,qBAAqBA,CAACC,QAAQ,EAAEC,uBAAuB,EAAEC,KAAK,EAAE;AAC5D,IAAA,IAAInH,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAM7H,GAAG,GAAGnD,IAAI,CAACqf,gCAAgC,CAAC,IAAI,CAAC5Y,SAAS,EAAEuL,QAAQ,EAAEC,uBAAuB,EAAEC,KAAK,CAAC;AAC3GnH,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACAsU,EAAAA,iBAAiBA,GAAG;AAChBtf,IAAAA,IAAI,CAACuf,4BAA4B,CAAC,IAAI,CAAC9Y,SAAS,CAAC;AACrD;AACA;AACJ;AACA;AACIsG,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAIhC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACwf,8BAA8B,CAAC,IAAI,CAAC/Y,SAAS,CAAC;AAC/DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiC,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAIlC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACyf,oCAAoC,CAAC,IAAI,CAAChZ,SAAS,CAAC;AACrEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACImC,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIpC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC0f,kCAAkC,CAAC,IAAI,CAACjZ,SAAS,CAAC;AACnEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIqC,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAItC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC2f,wCAAwC,CAAC,IAAI,CAAClZ,SAAS,CAAC;AACzEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIuC,EAAAA,mBAAmBA,GAAG;IAClB,MAAMpK,GAAG,GAAGnD,IAAI,CAAC4f,8BAA8B,CAAC,IAAI,CAACnZ,SAAS,CAAC;AAC/D,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIgF,EAAAA,yBAAyBA,GAAG;IACxB,MAAMtK,GAAG,GAAGnD,IAAI,CAAC6f,oCAAoC,CAAC,IAAI,CAACpZ,SAAS,CAAC;AACrE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIkF,EAAAA,UAAUA,GAAG;IACT,MAAMxK,GAAG,GAAGnD,IAAI,CAACqb,iBAAiB,CAAC,IAAI,CAAC5U,SAAS,CAAC;AAClD,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;EACIuO,UAAUA,CAACC,MAAM,EAAE;AACfvO,IAAAA,YAAY,CAACuO,MAAM,EAAElG,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGuM,MAAM,CAACjL,kBAAkB,EAAE;IACtC,MAAMvD,GAAG,GAAGnD,IAAI,CAAC8f,qBAAqB,CAAC,IAAI,CAACrZ,SAAS,EAAErB,IAAI,CAAC;AAC5D,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA0O,EAAAA,YAAYA,GAAG;IACX,MAAM1O,GAAG,GAAGnD,IAAI,CAAC+f,uBAAuB,CAAC,IAAI,CAACtZ,SAAS,CAAC;AACxD,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACJ;AAEA,MAAM6c,uBAAuB,GAAI,OAAO/Z,oBAAoB,KAAK,WAAW,GACtE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAACigB,sBAAsB,CAACzf,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEzE,MAAM0f,WAAW,CAAC;AAErBxZ,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBuZ,IAAAA,uBAAuB,CAAC7Z,UAAU,CAAC,IAAI,CAAC;AACxC,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAACigB,sBAAsB,CAACzf,GAAG,EAAE,CAAC,CAAC;AACvC;AACA;AACJ;AACA;EACI,IAAIqK,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B9B,IAAI,CAACmgB,kBAAkB,CAAC,IAAI,CAAC1Z,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AACvD;AACA;AACJ;AACA;EACI,IAAIsF,EAAEA,GAAG;AACL,IAAA,IAAIE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACogB,cAAc,CAAC,IAAI,CAAC3Z,SAAS,CAAC;AAC/CsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIpE,WAAWA,CAACiE,EAAE,EAAE;AACZ,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACqgB,eAAe,CAACjb,IAAI,EAAEG,IAAI,CAAC;AAC5C,IAAA,IAAI,CAACkB,SAAS,GAAGtD,GAAG,KAAK,CAAC;IAC1B6c,uBAAuB,CAAC9Z,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACO,SAAS,EAAE,IAAI,CAAC;AAC5D,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACA;AACI0E,EAAAA,UAAUA,CAACC,MAAM,EAAEyD,KAAK,EAAEyR,OAAO,EAAE;AAC/Bld,IAAAA,YAAY,CAACgI,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGgG,MAAM,CAAC1E,kBAAkB,EAAE;AACtC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAACugB,sBAAsB,CAAC,IAAI,CAAC9Z,SAAS,EAAErB,IAAI,EAAEyJ,KAAK,EAAEyR,OAAO,CAAC;AAC7E,IAAA,IAAInd,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIwI,UAAUA,CAACP,MAAM,EAAE;AACfhI,IAAAA,YAAY,CAACgI,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGgG,MAAM,CAAC1E,kBAAkB,EAAE;IACtC1G,IAAI,CAACwgB,sBAAsB,CAAC,IAAI,CAAC/Z,SAAS,EAAErB,IAAI,CAAC;AACrD;AACA;AACJ;AACA;AACA;AACA;AACIyG,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAE;AACrC5I,IAAAA,YAAY,CAAC0I,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG0G,QAAQ,CAACpF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIjG,IAAI,GAAGuG,QAAQ,CAACrF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAI/F,IAAI,GAAGsG,KAAK,CAACtF,kBAAkB,EAAE;AACrC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAACygB,yBAAyB,CAAC,IAAI,CAACha,SAAS,EAAErB,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AAC5E,IAAA,IAAIvC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI+I,eAAeA,CAACC,WAAW,EAAE;AACzB/I,IAAAA,YAAY,CAAC+I,WAAW,EAAEV,OAAO,CAAC;AAClC,IAAA,IAAIrG,IAAI,GAAG+G,WAAW,CAACzF,kBAAkB,EAAE;IAC3C1G,IAAI,CAAC0gB,2BAA2B,CAAC,IAAI,CAACja,SAAS,EAAErB,IAAI,CAAC;AAC1D;AACA;AACJ;AACA;EACIiH,YAAYA,CAACN,QAAQ,EAAE;AACnB3I,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG2G,QAAQ,CAACrF,kBAAkB,EAAE;IACxC1G,IAAI,CAAC2gB,wBAAwB,CAAC,IAAI,CAACla,SAAS,EAAErB,IAAI,CAAC;AACvD;AACA;AACJ;AACA;EACImH,SAASA,CAACP,KAAK,EAAE;AACb5I,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAIrG,IAAI,GAAG4G,KAAK,CAACtF,kBAAkB,EAAE;IACrC,MAAMvD,GAAG,GAAGnD,IAAI,CAAC4gB,qBAAqB,CAAC,IAAI,CAACna,SAAS,EAAErB,IAAI,CAAC;AAC5D,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAsJ,EAAAA,iBAAiBA,GAAG;IAChB,MAAMtJ,GAAG,GAAGnD,IAAI,CAAC6gB,6BAA6B,CAAC,IAAI,CAACpa,SAAS,CAAC;AAC9D,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI4J,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAIhC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC8gB,+BAA+B,CAAC,IAAI,CAACra,SAAS,CAAC;AAChEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiC,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAIlC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC+gB,qCAAqC,CAAC,IAAI,CAACta,SAAS,CAAC;AACtEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACImC,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIpC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACghB,mCAAmC,CAAC,IAAI,CAACva,SAAS,CAAC;AACpEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIqC,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAItC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACihB,yCAAyC,CAAC,IAAI,CAACxa,SAAS,CAAC;AAC1EsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIuC,EAAAA,mBAAmBA,GAAG;IAClB,MAAMpK,GAAG,GAAGnD,IAAI,CAACkhB,+BAA+B,CAAC,IAAI,CAACza,SAAS,CAAC;AAChE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIgF,EAAAA,yBAAyBA,GAAG;IACxB,MAAMtK,GAAG,GAAGnD,IAAI,CAACmhB,qCAAqC,CAAC,IAAI,CAAC1a,SAAS,CAAC;AACtE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIkF,EAAAA,UAAUA,GAAG;IACT,MAAMxK,GAAG,GAAGnD,IAAI,CAACohB,sBAAsB,CAAC,IAAI,CAAC3a,SAAS,CAAC;AACvD,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACI4O,EAAAA,qBAAqBA,CAACC,QAAQ,EAAEC,uBAAuB,EAAEC,KAAK,EAAE;AAC5D,IAAA,IAAInH,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAM7H,GAAG,GAAGnD,IAAI,CAACqhB,iCAAiC,CAAC,IAAI,CAAC5a,SAAS,EAAEuL,QAAQ,EAAEC,uBAAuB,EAAEC,KAAK,CAAC;AAC5GnH,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACJ;AAEA,MAAMsW,0BAA0B,GAAI,OAAOrb,oBAAoB,KAAK,WAAW,GACzE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAACuhB,yBAAyB,CAAC/gB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5E,MAAMghB,cAAc,CAAC;AAExB9a,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClB6a,IAAAA,0BAA0B,CAACnb,UAAU,CAAC,IAAI,CAAC;AAC3C,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAACuhB,yBAAyB,CAAC/gB,GAAG,EAAE,CAAC,CAAC;AAC1C;AACAoG,EAAAA,WAAWA,GAAG;AACV,IAAA,MAAMzD,GAAG,GAAGnD,IAAI,CAACyhB,kBAAkB,EAAE;AACrC,IAAA,IAAI,CAAChb,SAAS,GAAGtD,GAAG,KAAK,CAAC;IAC1Bme,0BAA0B,CAACpb,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACO,SAAS,EAAE,IAAI,CAAC;AAC/D,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;EACIib,WAAWA,CAACne,IAAI,EAAE;AACd,IAAA,IAAIkR,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAMtP,IAAI,GAAG1C,iBAAiB,CAACa,IAAI,EAAEvD,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MACrF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,MAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC2hB,0BAA0B,CAAC,IAAI,CAAClb,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AACvEkP,MAAAA,WAAW,GAAGtR,GAAG,CAAC,CAAC,CAAC;AACpBuR,MAAAA,WAAW,GAAGvR,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAAC+L,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;EACIkN,WAAWA,CAACC,QAAQ,EAAE;AAClB,IAAA,MAAMzc,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC8hB,0BAA0B,CAAC,IAAI,CAACrb,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;IACvE,OAAOpC,GAAG,KAAK,CAAC;AACpB;AACA;AACJ;AACA;EACI4e,eAAeA,CAACF,QAAQ,EAAE;AACtB,IAAA,MAAMzc,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACgiB,8BAA8B,CAAC,IAAI,CAACvb,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AAC3E,IAAA,IAAIpC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI8e,EAAAA,iBAAiBA,GAAG;IAChB,MAAM9e,GAAG,GAAGnD,IAAI,CAACkiB,gCAAgC,CAAC,IAAI,CAACzb,SAAS,CAAC;AACjE,IAAA,IAAIgC,EAAE;AACN,IAAA,IAAItF,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AACdsF,MAAAA,EAAE,GAAG5G,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AAC/ClD,MAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC/C;AACA,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACI0Z,EAAAA,UAAUA,GAAG;AACT,IAAA,IAAI1N,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAMvR,GAAG,GAAGnD,IAAI,CAACoiB,yBAAyB,CAAC,IAAI,CAAC3b,SAAS,CAAC;AAC1D,MAAA,IAAIjB,IAAI,GAAGrC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIsC,IAAI,GAAGtC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRqC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMjC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAsR,MAAAA,WAAW,GAAGjP,IAAI;AAClBkP,MAAAA,WAAW,GAAGjP,IAAI;AAClB,MAAA,OAAO5D,kBAAkB,CAAC2D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNzF,IAAI,CAAC0I,eAAe,CAAC+L,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;EACI2N,kBAAkBA,CAACR,QAAQ,EAAE;AACzB,IAAA,IAAI9L,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAM5Q,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,MAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACsiB,iCAAiC,CAAC,IAAI,CAAC7b,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AAC9E,MAAA,IAAIG,IAAI,GAAGvC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIwC,IAAI,GAAGxC,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRuC,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMnC,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACA4S,MAAAA,WAAW,GAAGrQ,IAAI;AAClBsQ,MAAAA,WAAW,GAAGrQ,IAAI;AAClB,MAAA,OAAO9D,kBAAkB,CAAC6D,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN3F,IAAI,CAAC0I,eAAe,CAACqN,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIuM,EAAAA,qBAAqBA,CAACV,QAAQ,EAAEW,SAAS,EAAE;AACvC,IAAA,MAAMpd,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAG3D,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACyiB,oCAAoC,CAAC,IAAI,CAAChc,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAC7F,IAAA,IAAItC,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;EACIuf,oBAAoBA,CAACb,QAAQ,EAAEW,SAAS,EAAEG,IAAI,EAAEC,eAAe,EAAE;AAC7D,IAAA,MAAMxd,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAG3D,eAAe;AAC5B,IAAA,MAAM4D,IAAI,GAAGhD,iBAAiB,CAACigB,IAAI,EAAE3iB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACrF,MAAMK,IAAI,GAAG7D,eAAe;AAC5B,IAAA,MAAMwU,IAAI,GAAG5T,iBAAiB,CAACkgB,eAAe,EAAE5iB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAChG,MAAMiR,IAAI,GAAGzU,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC6iB,mCAAmC,CAAC,IAAI,CAACpc,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAE2Q,IAAI,EAAEC,IAAI,CAAC;AACpH,IAAA,IAAIpT,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI2f,EAAAA,2BAA2BA,CAACN,SAAS,EAAEG,IAAI,EAAEC,eAAe,EAAE;AAC1D,IAAA,MAAMxd,IAAI,GAAG1C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAACigB,IAAI,EAAE3iB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACrF,MAAMG,IAAI,GAAG3D,eAAe;AAC5B,IAAA,MAAM4D,IAAI,GAAGhD,iBAAiB,CAACkgB,eAAe,EAAE5iB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAChG,MAAMK,IAAI,GAAG7D,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC+iB,0CAA0C,CAAC,IAAI,CAACtc,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAC/G,IAAA,IAAIxC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;EACI6f,wBAAwBA,CAACnB,QAAQ,EAAEW,SAAS,EAAEG,IAAI,EAAEC,eAAe,EAAE;AACjE,IAAA,MAAMxd,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAG3D,eAAe;AAC5B,IAAA,MAAM4D,IAAI,GAAGhD,iBAAiB,CAACigB,IAAI,EAAE3iB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACrF,MAAMK,IAAI,GAAG7D,eAAe;AAC5B,IAAA,MAAMwU,IAAI,GAAG5T,iBAAiB,CAACkgB,eAAe,EAAE5iB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAChG,MAAMiR,IAAI,GAAGzU,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACijB,uCAAuC,CAAC,IAAI,CAACxc,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAE2Q,IAAI,EAAEC,IAAI,CAAC;AACxH,IAAA,IAAIpT,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI+f,EAAAA,+BAA+BA,CAACV,SAAS,EAAEG,IAAI,EAAEC,eAAe,EAAE;AAC9D,IAAA,MAAMxd,IAAI,GAAG1C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAACigB,IAAI,EAAE3iB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACrF,MAAMG,IAAI,GAAG3D,eAAe;AAC5B,IAAA,MAAM4D,IAAI,GAAGhD,iBAAiB,CAACkgB,eAAe,EAAE5iB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAChG,MAAMK,IAAI,GAAG7D,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACmjB,8CAA8C,CAAC,IAAI,CAAC1c,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACnH,IAAA,IAAIxC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;EACIigB,wBAAwBA,CAACvB,QAAQ,EAAEW,SAAS,EAAEG,IAAI,EAAEC,eAAe,EAAE;AACjE,IAAA,MAAMxd,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAG3D,eAAe;AAC5B,IAAA,MAAM4D,IAAI,GAAGhD,iBAAiB,CAACigB,IAAI,EAAE3iB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACrF,MAAMK,IAAI,GAAG7D,eAAe;AAC5B,IAAA,MAAMwU,IAAI,GAAG5T,iBAAiB,CAACkgB,eAAe,EAAE5iB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAChG,MAAMiR,IAAI,GAAGzU,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACqjB,uCAAuC,CAAC,IAAI,CAAC5c,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAE2Q,IAAI,EAAEC,IAAI,CAAC;AACxH,IAAA,IAAIpT,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACImgB,EAAAA,+BAA+BA,CAACd,SAAS,EAAEG,IAAI,EAAEC,eAAe,EAAE;AAC9D,IAAA,MAAMxd,IAAI,GAAG1C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAACigB,IAAI,EAAE3iB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACrF,MAAMG,IAAI,GAAG3D,eAAe;AAC5B,IAAA,MAAM4D,IAAI,GAAGhD,iBAAiB,CAACkgB,eAAe,EAAE5iB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAChG,MAAMK,IAAI,GAAG7D,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACujB,8CAA8C,CAAC,IAAI,CAAC9c,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACnH,IAAA,IAAIxC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIqgB,EAAAA,cAAcA,CAAC3B,QAAQ,EAAEW,SAAS,EAAEiB,IAAI,EAAE;AACtC,IAAA,MAAMre,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAG3D,eAAe;AAC5BsB,IAAAA,YAAY,CAACqgB,IAAI,EAAExJ,MAAM,CAAC;IAC1B,MAAM9W,GAAG,GAAGnD,IAAI,CAAC0jB,6BAA6B,CAAC,IAAI,CAACjd,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEge,IAAI,CAAChd,SAAS,CAAC;AACtG,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACIwgB,EAAAA,qBAAqBA,CAACnB,SAAS,EAAEiB,IAAI,EAAE;AACnC,IAAA,MAAMre,IAAI,GAAG1C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGzD,eAAe;AAC5BsB,IAAAA,YAAY,CAACqgB,IAAI,EAAExJ,MAAM,CAAC;AAC1B,IAAA,MAAM9W,GAAG,GAAGnD,IAAI,CAAC4jB,oCAAoC,CAAC,IAAI,CAACnd,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEke,IAAI,CAAChd,SAAS,CAAC;AACjG,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI0gB,EAAAA,kBAAkBA,CAAChC,QAAQ,EAAEW,SAAS,EAAEsB,QAAQ,EAAE;AAC9C,IAAA,MAAM1e,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAG3D,eAAe;AAC5BsB,IAAAA,YAAY,CAAC0gB,QAAQ,EAAE/F,UAAU,CAAC;IAClC,MAAM5a,GAAG,GAAGnD,IAAI,CAAC+jB,iCAAiC,CAAC,IAAI,CAACtd,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEqe,QAAQ,CAACrd,SAAS,CAAC;AAC9G,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACI6gB,EAAAA,yBAAyBA,CAACxB,SAAS,EAAEsB,QAAQ,EAAE;AAC3C,IAAA,MAAM1e,IAAI,GAAG1C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGzD,eAAe;AAC5BsB,IAAAA,YAAY,CAAC0gB,QAAQ,EAAE/F,UAAU,CAAC;AAClC,IAAA,MAAM5a,GAAG,GAAGnD,IAAI,CAACikB,wCAAwC,CAAC,IAAI,CAACxd,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEue,QAAQ,CAACrd,SAAS,CAAC;AACzG,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI+gB,EAAAA,aAAaA,CAACrC,QAAQ,EAAEW,SAAS,EAAE2B,GAAG,EAAE;AACpC,IAAA,MAAM/e,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAG3D,eAAe;AAC5BsB,IAAAA,YAAY,CAAC+gB,GAAG,EAAEvZ,KAAK,CAAC;IACxB,MAAMzH,GAAG,GAAGnD,IAAI,CAACokB,4BAA4B,CAAC,IAAI,CAAC3d,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAE0e,GAAG,CAAC1d,SAAS,CAAC;AACpG,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACIkhB,EAAAA,oBAAoBA,CAAC7B,SAAS,EAAE2B,GAAG,EAAE;AACjC,IAAA,MAAM/e,IAAI,GAAG1C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGzD,eAAe;AAC5BsB,IAAAA,YAAY,CAAC+gB,GAAG,EAAEvZ,KAAK,CAAC;AACxB,IAAA,MAAMzH,GAAG,GAAGnD,IAAI,CAACskB,mCAAmC,CAAC,IAAI,CAAC7d,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAE4e,GAAG,CAAC1d,SAAS,CAAC;AAC/F,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIohB,EAAAA,mBAAmBA,CAAC1C,QAAQ,EAAEW,SAAS,EAAEgC,SAAS,EAAE;AAChD,IAAA,MAAMpf,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAG3D,eAAe;AAC5BsB,IAAAA,YAAY,CAACohB,SAAS,EAAEtE,WAAW,CAAC;IACpC,MAAM/c,GAAG,GAAGnD,IAAI,CAACykB,kCAAkC,CAAC,IAAI,CAAChe,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAE+e,SAAS,CAAC/d,SAAS,CAAC;AAChH,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACIuhB,EAAAA,0BAA0BA,CAAClC,SAAS,EAAEgC,SAAS,EAAE;AAC7C,IAAA,MAAMpf,IAAI,GAAG1C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGzD,eAAe;AAC5BsB,IAAAA,YAAY,CAACohB,SAAS,EAAEtE,WAAW,CAAC;AACpC,IAAA,MAAM/c,GAAG,GAAGnD,IAAI,CAAC2kB,yCAAyC,CAAC,IAAI,CAACle,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEif,SAAS,CAAC/d,SAAS,CAAC;AAC3G,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIyhB,EAAAA,iBAAiBA,CAAC/C,QAAQ,EAAEW,SAAS,EAAEqC,OAAO,EAAE;AAC5C,IAAA,MAAMzf,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAG3D,eAAe;AAC5BsB,IAAAA,YAAY,CAACyhB,OAAO,EAAEhJ,SAAS,CAAC;IAChC,MAAM1Y,GAAG,GAAGnD,IAAI,CAAC8kB,gCAAgC,CAAC,IAAI,CAACre,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEof,OAAO,CAACpe,SAAS,CAAC;AAC5G,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACI4hB,EAAAA,wBAAwBA,CAACvC,SAAS,EAAEqC,OAAO,EAAE;AACzC,IAAA,MAAMzf,IAAI,GAAG1C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGzD,eAAe;AAC5BsB,IAAAA,YAAY,CAACyhB,OAAO,EAAEhJ,SAAS,CAAC;AAChC,IAAA,MAAM1Y,GAAG,GAAGnD,IAAI,CAACglB,uCAAuC,CAAC,IAAI,CAACve,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEsf,OAAO,CAACpe,SAAS,CAAC;AACvG,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI8hB,EAAAA,gBAAgBA,CAACpD,QAAQ,EAAEW,SAAS,EAAE0C,MAAM,EAAE;AAC1C,IAAA,MAAM9f,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAG3D,eAAe;AAC5BsB,IAAAA,YAAY,CAAC8hB,MAAM,EAAEzW,QAAQ,CAAC;IAC9B,MAAMtL,GAAG,GAAGnD,IAAI,CAACmlB,+BAA+B,CAAC,IAAI,CAAC1e,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEyf,MAAM,CAACze,SAAS,CAAC;AAC1G,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACIiiB,EAAAA,uBAAuBA,CAAC5C,SAAS,EAAE0C,MAAM,EAAE;AACvC,IAAA,MAAM9f,IAAI,GAAG1C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGzD,eAAe;AAC5BsB,IAAAA,YAAY,CAAC8hB,MAAM,EAAEzW,QAAQ,CAAC;AAC9B,IAAA,MAAMtL,GAAG,GAAGnD,IAAI,CAACqlB,sCAAsC,CAAC,IAAI,CAAC5e,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAE2f,MAAM,CAACze,SAAS,CAAC;AACrG,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACImiB,EAAAA,kBAAkBA,CAACzD,QAAQ,EAAEW,SAAS,EAAE+C,QAAQ,EAAE;AAC9C,IAAA,MAAMngB,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAG3D,eAAe;AAC5BsB,IAAAA,YAAY,CAACmiB,QAAQ,EAAE/S,UAAU,CAAC;IAClC,MAAMrP,GAAG,GAAGnD,IAAI,CAACwlB,iCAAiC,CAAC,IAAI,CAAC/e,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAE8f,QAAQ,CAAC9e,SAAS,CAAC;AAC9G,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACIsiB,EAAAA,yBAAyBA,CAACjD,SAAS,EAAE+C,QAAQ,EAAE;AAC3C,IAAA,MAAMngB,IAAI,GAAG1C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGzD,eAAe;AAC5BsB,IAAAA,YAAY,CAACmiB,QAAQ,EAAE/S,UAAU,CAAC;AAClC,IAAA,MAAMrP,GAAG,GAAGnD,IAAI,CAAC0lB,wCAAwC,CAAC,IAAI,CAACjf,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEggB,QAAQ,CAAC9e,SAAS,CAAC;AACzG,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIwiB,EAAAA,gBAAgBA,CAAC9D,QAAQ,EAAEW,SAAS,EAAEoD,MAAM,EAAE;AAC1C,IAAA,MAAMxgB,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAG3D,eAAe;AAC5BsB,IAAAA,YAAY,CAACwiB,MAAM,EAAEC,QAAQ,CAAC;IAC9B,MAAM1iB,GAAG,GAAGnD,IAAI,CAAC8lB,+BAA+B,CAAC,IAAI,CAACrf,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEmgB,MAAM,CAACnf,SAAS,CAAC;AAC1G,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACI4iB,EAAAA,uBAAuBA,CAACvD,SAAS,EAAEoD,MAAM,EAAE;AACvC,IAAA,MAAMxgB,IAAI,GAAG1C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGzD,eAAe;AAC5BsB,IAAAA,YAAY,CAACwiB,MAAM,EAAEC,QAAQ,CAAC;AAC9B,IAAA,MAAM1iB,GAAG,GAAGnD,IAAI,CAACgmB,sCAAsC,CAAC,IAAI,CAACvf,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEqgB,MAAM,CAACnf,SAAS,CAAC;AACrG,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI8iB,EAAAA,eAAeA,CAACpE,QAAQ,EAAEW,SAAS,EAAE0D,KAAK,EAAE;AACxC,IAAA,MAAM9gB,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,IAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMG,IAAI,GAAG3D,eAAe;AAC5BsB,IAAAA,YAAY,CAAC8iB,KAAK,EAAEC,OAAO,CAAC;IAC5B,MAAMhjB,GAAG,GAAGnD,IAAI,CAAComB,8BAA8B,CAAC,IAAI,CAAC3f,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEygB,KAAK,CAACzf,SAAS,CAAC;AACxG,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACIkjB,EAAAA,sBAAsBA,CAAC7D,SAAS,EAAE0D,KAAK,EAAE;AACrC,IAAA,MAAM9gB,IAAI,GAAG1C,iBAAiB,CAAC8f,SAAS,EAAExiB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAC1F,MAAMC,IAAI,GAAGzD,eAAe;AAC5BsB,IAAAA,YAAY,CAAC8iB,KAAK,EAAEC,OAAO,CAAC;AAC5B,IAAA,MAAMhjB,GAAG,GAAGnD,IAAI,CAACsmB,qCAAqC,CAAC,IAAI,CAAC7f,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAE2gB,KAAK,CAACzf,SAAS,CAAC;AACnG,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACIojB,EAAAA,iBAAiBA,CAAC1E,QAAQ,EAAE2E,WAAW,EAAEC,QAAQ,EAAE;AAC/C,IAAA,IAAIC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAMvhB,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,MAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAAC8jB,WAAW,EAAExmB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAC5F,MAAMG,IAAI,GAAG3D,eAAe;MAC5B,IAAI4D,IAAI,GAAGjB,UAAU,CAACgiB,QAAQ,CAAC,GAAG,CAAC,GAAG/jB,iBAAiB,CAAC+jB,QAAQ,EAAEzmB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAClH,IAAIK,IAAI,GAAG7D,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC4mB,gCAAgC,CAAC,IAAI,CAACngB,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACrG,MAAA,IAAIkhB,IAAI,GAAG1jB,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAI2jB,IAAI,GAAG3jB,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACR0jB,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMtjB,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAujB,MAAAA,WAAW,GAAGG,IAAI;AAClBF,MAAAA,WAAW,GAAGG,IAAI;AAClB,MAAA,OAAOjlB,kBAAkB,CAACglB,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN9mB,IAAI,CAAC0I,eAAe,CAACge,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACII,EAAAA,uBAAuBA,CAAClF,QAAQ,EAAE2E,WAAW,EAAEC,QAAQ,EAAE;AACrD,IAAA,IAAIC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAMvhB,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,MAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAAC8jB,WAAW,EAAExmB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAC5F,MAAMG,IAAI,GAAG3D,eAAe;MAC5B,IAAI4D,IAAI,GAAGjB,UAAU,CAACgiB,QAAQ,CAAC,GAAG,CAAC,GAAG/jB,iBAAiB,CAAC+jB,QAAQ,EAAEzmB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAClH,IAAIK,IAAI,GAAG7D,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAACgnB,sCAAsC,CAAC,IAAI,CAACvgB,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAC3G,MAAA,IAAIkhB,IAAI,GAAG1jB,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAI2jB,IAAI,GAAG3jB,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACR0jB,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMtjB,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAujB,MAAAA,WAAW,GAAGG,IAAI;AAClBF,MAAAA,WAAW,GAAGG,IAAI;AAClB,MAAA,OAAOjlB,kBAAkB,CAACglB,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN9mB,IAAI,CAAC0I,eAAe,CAACge,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACIM,EAAAA,gBAAgBA,CAACpF,QAAQ,EAAE2E,WAAW,EAAEC,QAAQ,EAAE;AAC9C,IAAA,IAAIC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAMvhB,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,MAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAAC8jB,WAAW,EAAExmB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAC5F,MAAMG,IAAI,GAAG3D,eAAe;MAC5B,IAAI4D,IAAI,GAAGjB,UAAU,CAACgiB,QAAQ,CAAC,GAAG,CAAC,GAAG/jB,iBAAiB,CAAC+jB,QAAQ,EAAEzmB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAClH,IAAIK,IAAI,GAAG7D,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAACknB,+BAA+B,CAAC,IAAI,CAACzgB,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACpG,MAAA,IAAIkhB,IAAI,GAAG1jB,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAI2jB,IAAI,GAAG3jB,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACR0jB,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMtjB,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAujB,MAAAA,WAAW,GAAGG,IAAI;AAClBF,MAAAA,WAAW,GAAGG,IAAI;AAClB,MAAA,OAAOjlB,kBAAkB,CAACglB,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN9mB,IAAI,CAAC0I,eAAe,CAACge,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;AACIQ,EAAAA,sBAAsBA,CAACtF,QAAQ,EAAE2E,WAAW,EAAEC,QAAQ,EAAE;AACpD,IAAA,IAAIC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAMvhB,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MACzF,MAAMC,IAAI,GAAGzD,eAAe;AAC5B,MAAA,MAAM0D,IAAI,GAAG9C,iBAAiB,CAAC8jB,WAAW,EAAExmB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAC5F,MAAMG,IAAI,GAAG3D,eAAe;MAC5B,IAAI4D,IAAI,GAAGjB,UAAU,CAACgiB,QAAQ,CAAC,GAAG,CAAC,GAAG/jB,iBAAiB,CAAC+jB,QAAQ,EAAEzmB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAClH,IAAIK,IAAI,GAAG7D,eAAe;MAC1B,MAAMqB,GAAG,GAAGnD,IAAI,CAAConB,qCAAqC,CAAC,IAAI,CAAC3gB,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAC1G,MAAA,IAAIkhB,IAAI,GAAG1jB,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAI2jB,IAAI,GAAG3jB,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACR0jB,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAMtjB,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAujB,MAAAA,WAAW,GAAGG,IAAI;AAClBF,MAAAA,WAAW,GAAGG,IAAI;AAClB,MAAA,OAAOjlB,kBAAkB,CAACglB,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACN9mB,IAAI,CAAC0I,eAAe,CAACge,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIU,EAAAA,wBAAwBA,CAACb,WAAW,EAAEC,QAAQ,EAAE;AAC5C,IAAA,IAAItQ,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAMhR,IAAI,GAAG1C,iBAAiB,CAAC8jB,WAAW,EAAExmB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAC5F,MAAMC,IAAI,GAAGzD,eAAe;MAC5B,IAAI0D,IAAI,GAAGf,UAAU,CAACgiB,QAAQ,CAAC,GAAG,CAAC,GAAG/jB,iBAAiB,CAAC+jB,QAAQ,EAAEzmB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAClH,IAAIG,IAAI,GAAG3D,eAAe;AAC1B,MAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACsnB,uCAAuC,CAAC,IAAI,CAAC7gB,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAChG,MAAA,IAAI6Q,IAAI,GAAGnT,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIoT,IAAI,GAAGpT,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRmT,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM/S,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAgT,MAAAA,WAAW,GAAGG,IAAI;AAClBF,MAAAA,WAAW,GAAGG,IAAI;AAClB,MAAA,OAAO1U,kBAAkB,CAACyU,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNvW,IAAI,CAAC0I,eAAe,CAACyN,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACImR,EAAAA,uBAAuBA,CAACf,WAAW,EAAEC,QAAQ,EAAE;AAC3C,IAAA,IAAItQ,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;AACA,MAAA,MAAMhR,IAAI,GAAG1C,iBAAiB,CAAC8jB,WAAW,EAAExmB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAC5F,MAAMC,IAAI,GAAGzD,eAAe;MAC5B,IAAI0D,IAAI,GAAGf,UAAU,CAACgiB,QAAQ,CAAC,GAAG,CAAC,GAAG/jB,iBAAiB,CAAC+jB,QAAQ,EAAEzmB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;MAClH,IAAIG,IAAI,GAAG3D,eAAe;AAC1B,MAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACwnB,sCAAsC,CAAC,IAAI,CAAC/gB,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAC/F,MAAA,IAAI6Q,IAAI,GAAGnT,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIoT,IAAI,GAAGpT,GAAG,CAAC,CAAC,CAAC;AACjB,MAAA,IAAIA,GAAG,CAAC,CAAC,CAAC,EAAE;AACRmT,QAAAA,IAAI,GAAG,CAAC;AAAEC,QAAAA,IAAI,GAAG,CAAC;AAClB,QAAA,MAAM/S,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACAgT,MAAAA,WAAW,GAAGG,IAAI;AAClBF,MAAAA,WAAW,GAAGG,IAAI;AAClB,MAAA,OAAO1U,kBAAkB,CAACyU,IAAI,EAAEC,IAAI,CAAC;AACzC,KAAC,SAAS;MACNvW,IAAI,CAAC0I,eAAe,CAACyN,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACA;AACA;AACIqR,EAAAA,eAAeA,CAAC7E,eAAe,EAAE8E,WAAW,EAAE;AAC1C,IAAA,MAAMtiB,IAAI,GAAG1C,iBAAiB,CAACkgB,eAAe,EAAE5iB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAChG,MAAMC,IAAI,GAAGzD,eAAe;IAC5B,IAAI0D,IAAI,GAAGf,UAAU,CAACijB,WAAW,CAAC,GAAG,CAAC,GAAGhlB,iBAAiB,CAACglB,WAAW,EAAE1nB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACxH,IAAIG,IAAI,GAAG3D,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC2nB,8BAA8B,CAAC,IAAI,CAAClhB,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACvF,IAAA,IAAItC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOykB,iBAAiB,CAAC/hB,MAAM,CAAC1C,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C;AACA;AACJ;AACA;AACA;AACA;AACI0kB,EAAAA,gBAAgBA,CAAChG,QAAQ,EAAE6F,WAAW,EAAE;AACpC,IAAA,MAAMtiB,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B,IAAI0D,IAAI,GAAGf,UAAU,CAACijB,WAAW,CAAC,GAAG,CAAC,GAAGhlB,iBAAiB,CAACglB,WAAW,EAAE1nB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACxH,IAAIG,IAAI,GAAG3D,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC8nB,+BAA+B,CAAC,IAAI,CAACrhB,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACxF,IAAA,IAAItC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOykB,iBAAiB,CAAC/hB,MAAM,CAAC1C,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C;AACA;AACJ;AACA;AACA;EACI4kB,uBAAuBA,CAACL,WAAW,EAAE;IACjC,IAAItiB,IAAI,GAAGX,UAAU,CAACijB,WAAW,CAAC,GAAG,CAAC,GAAGhlB,iBAAiB,CAACglB,WAAW,EAAE1nB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACxH,IAAIC,IAAI,GAAGzD,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACgoB,sCAAsC,CAAC,IAAI,CAACvhB,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AACnF,IAAA,IAAIpC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOykB,iBAAiB,CAAC/hB,MAAM,CAAC1C,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C;AACA;AACJ;AACA;AACA;AACA;AACI8kB,EAAAA,gBAAgBA,CAACrF,eAAe,EAAE8E,WAAW,EAAE;AAC3C,IAAA,MAAMtiB,IAAI,GAAG1C,iBAAiB,CAACkgB,eAAe,EAAE5iB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAChG,MAAMC,IAAI,GAAGzD,eAAe;IAC5B,IAAI0D,IAAI,GAAGf,UAAU,CAACijB,WAAW,CAAC,GAAG,CAAC,GAAGhlB,iBAAiB,CAACglB,WAAW,EAAE1nB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACxH,IAAIG,IAAI,GAAG3D,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACkoB,+BAA+B,CAAC,IAAI,CAACzhB,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACxF,IAAA,IAAItC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOglB,kBAAkB,CAACtiB,MAAM,CAAC1C,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C;AACA;AACJ;AACA;AACA;AACA;AACIilB,EAAAA,iBAAiBA,CAACvG,QAAQ,EAAE6F,WAAW,EAAE;AACrC,IAAA,MAAMtiB,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B,IAAI0D,IAAI,GAAGf,UAAU,CAACijB,WAAW,CAAC,GAAG,CAAC,GAAGhlB,iBAAiB,CAACglB,WAAW,EAAE1nB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACxH,IAAIG,IAAI,GAAG3D,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACqoB,gCAAgC,CAAC,IAAI,CAAC5hB,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACzF,IAAA,IAAItC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOglB,kBAAkB,CAACtiB,MAAM,CAAC1C,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C;AACA;AACJ;AACA;AACA;EACImlB,wBAAwBA,CAACZ,WAAW,EAAE;IAClC,IAAItiB,IAAI,GAAGX,UAAU,CAACijB,WAAW,CAAC,GAAG,CAAC,GAAGhlB,iBAAiB,CAACglB,WAAW,EAAE1nB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACxH,IAAIC,IAAI,GAAGzD,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACuoB,uCAAuC,CAAC,IAAI,CAAC9hB,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AACpF,IAAA,IAAIpC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOglB,kBAAkB,CAACtiB,MAAM,CAAC1C,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C;AACA;AACJ;AACA;AACA;AACA;AACIqlB,EAAAA,eAAeA,CAAC5F,eAAe,EAAE8E,WAAW,EAAE;AAC1C,IAAA,MAAMtiB,IAAI,GAAG1C,iBAAiB,CAACkgB,eAAe,EAAE5iB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IAChG,MAAMC,IAAI,GAAGzD,eAAe;IAC5B,IAAI0D,IAAI,GAAGf,UAAU,CAACijB,WAAW,CAAC,GAAG,CAAC,GAAGhlB,iBAAiB,CAACglB,WAAW,EAAE1nB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACxH,IAAIG,IAAI,GAAG3D,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAACyoB,8BAA8B,CAAC,IAAI,CAAChiB,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACvF,IAAA,IAAItC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOwW,iBAAiB,CAAC9T,MAAM,CAAC1C,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C;AACA;AACJ;AACA;AACA;AACA;AACIulB,EAAAA,gBAAgBA,CAAC7G,QAAQ,EAAE6F,WAAW,EAAE;AACpC,IAAA,MAAMtiB,IAAI,GAAG1C,iBAAiB,CAACmf,QAAQ,EAAE7hB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACzF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B,IAAI0D,IAAI,GAAGf,UAAU,CAACijB,WAAW,CAAC,GAAG,CAAC,GAAGhlB,iBAAiB,CAACglB,WAAW,EAAE1nB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACxH,IAAIG,IAAI,GAAG3D,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC2oB,+BAA+B,CAAC,IAAI,CAACliB,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACxF,IAAA,IAAItC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOwW,iBAAiB,CAAC9T,MAAM,CAAC1C,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C;AACA;AACJ;AACA;AACA;EACIylB,uBAAuBA,CAAClB,WAAW,EAAE;IACjC,IAAItiB,IAAI,GAAGX,UAAU,CAACijB,WAAW,CAAC,GAAG,CAAC,GAAGhlB,iBAAiB,CAACglB,WAAW,EAAE1nB,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACxH,IAAIC,IAAI,GAAGzD,eAAe;AAC1B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC6oB,sCAAsC,CAAC,IAAI,CAACpiB,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AACnF,IAAA,IAAIpC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;IACA,OAAOwW,iBAAiB,CAAC9T,MAAM,CAAC1C,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C;AACJ;AAEA,MAAM2lB,oBAAoB,GAAI,OAAO7iB,oBAAoB,KAAK,WAAW,GACnE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAAC+oB,mBAAmB,CAACvoB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtE,MAAMqlB,QAAQ,CAAC;AAElBnf,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBqiB,IAAAA,oBAAoB,CAAC3iB,UAAU,CAAC,IAAI,CAAC;AACrC,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAAC+oB,mBAAmB,CAACvoB,GAAG,EAAE,CAAC,CAAC;AACpC;AACA;AACJ;AACA;EACI,IAAIqK,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B9B,IAAI,CAACgpB,eAAe,CAAC,IAAI,CAACviB,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AACpD;AACA;AACJ;AACA;EACI,IAAIsF,EAAEA,GAAG;AACL,IAAA,IAAIE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACipB,WAAW,CAAC,IAAI,CAACxiB,SAAS,CAAC;AAC5CsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIpE,WAAWA,CAACiE,EAAE,EAAE;AACZ,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACkpB,YAAY,CAAC9jB,IAAI,EAAEG,IAAI,CAAC;AACzC,IAAA,IAAI,CAACkB,SAAS,GAAGtD,GAAG,KAAK,CAAC;IAC1B2lB,oBAAoB,CAAC5iB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACO,SAAS,EAAE,IAAI,CAAC;AACzD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACA;AACA;EACI0E,UAAUA,CAACC,MAAM,EAAEC,MAAM,EAAE8d,cAAc,EAAEC,eAAe,EAAE;AACxDhmB,IAAAA,YAAY,CAACgI,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGgG,MAAM,CAAC1E,kBAAkB,EAAE;AACtC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAACqpB,mBAAmB,CAAC,IAAI,CAAC5iB,SAAS,EAAErB,IAAI,EAAEiG,MAAM,EAAE8d,cAAc,EAAEC,eAAe,CAAC;AACnG,IAAA,IAAIjmB,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIwI,UAAUA,CAACP,MAAM,EAAE;AACfhI,IAAAA,YAAY,CAACgI,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGgG,MAAM,CAAC1E,kBAAkB,EAAE;IACtC1G,IAAI,CAACspB,mBAAmB,CAAC,IAAI,CAAC7iB,SAAS,EAAErB,IAAI,CAAC;AAClD;AACA;AACJ;AACA;AACA;AACA;AACIyG,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAE;AACrC5I,IAAAA,YAAY,CAAC0I,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG0G,QAAQ,CAACpF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIjG,IAAI,GAAGuG,QAAQ,CAACrF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAI/F,IAAI,GAAGsG,KAAK,CAACtF,kBAAkB,EAAE;AACrC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAACupB,sBAAsB,CAAC,IAAI,CAAC9iB,SAAS,EAAErB,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AACzE,IAAA,IAAIvC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI+I,eAAeA,CAACC,WAAW,EAAE;AACzB/I,IAAAA,YAAY,CAAC+I,WAAW,EAAEV,OAAO,CAAC;AAClC,IAAA,IAAIrG,IAAI,GAAG+G,WAAW,CAACzF,kBAAkB,EAAE;IAC3C1G,IAAI,CAACwpB,wBAAwB,CAAC,IAAI,CAAC/iB,SAAS,EAAErB,IAAI,CAAC;AACvD;AACA;AACJ;AACA;EACIiH,YAAYA,CAACN,QAAQ,EAAE;AACnB3I,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG2G,QAAQ,CAACrF,kBAAkB,EAAE;IACxC1G,IAAI,CAACypB,qBAAqB,CAAC,IAAI,CAAChjB,SAAS,EAAErB,IAAI,CAAC;AACpD;AACA;AACJ;AACA;EACImH,SAASA,CAACP,KAAK,EAAE;AACb5I,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAIrG,IAAI,GAAG4G,KAAK,CAACtF,kBAAkB,EAAE;IACrC,MAAMvD,GAAG,GAAGnD,IAAI,CAAC0pB,kBAAkB,CAAC,IAAI,CAACjjB,SAAS,EAAErB,IAAI,CAAC;AACzD,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAgQ,EAAAA,aAAaA,GAAG;IACZ,MAAMhQ,GAAG,GAAGnD,IAAI,CAAC2pB,sBAAsB,CAAC,IAAI,CAACljB,SAAS,CAAC;AACvD,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAkQ,EAAAA,cAAcA,GAAG;AACbrT,IAAAA,IAAI,CAAC4pB,uBAAuB,CAAC,IAAI,CAACnjB,SAAS,CAAC;AAChD;AACAgG,EAAAA,iBAAiBA,GAAG;IAChB,MAAMtJ,GAAG,GAAGnD,IAAI,CAAC6pB,0BAA0B,CAAC,IAAI,CAACpjB,SAAS,CAAC;AAC3D,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI4J,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAIhC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC8pB,4BAA4B,CAAC,IAAI,CAACrjB,SAAS,CAAC;AAC7DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiC,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAIlC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC+pB,kCAAkC,CAAC,IAAI,CAACtjB,SAAS,CAAC;AACnEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACImC,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIpC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACgqB,gCAAgC,CAAC,IAAI,CAACvjB,SAAS,CAAC;AACjEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIqC,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAItC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACiqB,sCAAsC,CAAC,IAAI,CAACxjB,SAAS,CAAC;AACvEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIuC,EAAAA,mBAAmBA,GAAG;IAClB,MAAMpK,GAAG,GAAGnD,IAAI,CAACkqB,4BAA4B,CAAC,IAAI,CAACzjB,SAAS,CAAC;AAC7D,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIgF,EAAAA,yBAAyBA,GAAG;IACxB,MAAMtK,GAAG,GAAGnD,IAAI,CAACmqB,kCAAkC,CAAC,IAAI,CAAC1jB,SAAS,CAAC;AACnE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIoH,EAAAA,+BAA+BA,GAAG;AAC9B,IAAA,IAAI9E,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACoqB,wCAAwC,CAAC,IAAI,CAAC3jB,SAAS,CAAC;AACzEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI+E,EAAAA,qCAAqCA,GAAG;AACpC,IAAA,IAAIhF,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACqqB,8CAA8C,CAAC,IAAI,CAAC5jB,SAAS,CAAC;AAC/EsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiF,EAAAA,2BAA2BA,GAAG;IAC1B,MAAM9M,GAAG,GAAGnD,IAAI,CAACsqB,oCAAoC,CAAC,IAAI,CAAC7jB,SAAS,CAAC;AACrE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACI0H,EAAAA,iCAAiCA,GAAG;IAChC,MAAMhN,GAAG,GAAGnD,IAAI,CAACuqB,0CAA0C,CAAC,IAAI,CAAC9jB,SAAS,CAAC;AAC3E,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIkF,EAAAA,UAAUA,GAAG;IACT,MAAMxK,GAAG,GAAGnD,IAAI,CAACwqB,mBAAmB,CAAC,IAAI,CAAC/jB,SAAS,CAAC;AACpD,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACJ;AAEA,MAAMsnB,8BAA8B,GAAI,OAAOxkB,oBAAoB,KAAK,WAAW,GAC7E;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAAC0qB,6BAA6B,CAAClqB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEhF,MAAM2nB,kBAAkB,CAAC;EAE5B,OAAOtiB,MAAMA,CAACrF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAG0F,MAAM,CAACC,MAAM,CAAC4hB,kBAAkB,CAAC3hB,SAAS,CAAC;IACvD5F,GAAG,CAAC6F,SAAS,GAAGjG,GAAG;IACnBiqB,8BAA8B,CAACvkB,QAAQ,CAACtF,GAAG,EAAEA,GAAG,CAAC6F,SAAS,EAAE7F,GAAG,CAAC;AAChE,IAAA,OAAOA,GAAG;AACd;AAEA8F,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBgkB,IAAAA,8BAA8B,CAACtkB,UAAU,CAAC,IAAI,CAAC;AAC/C,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAAC0qB,6BAA6B,CAAClqB,GAAG,EAAE,CAAC,CAAC;AAC9C;AACA;AACJ;AACA;EACI,IAAIoZ,IAAIA,GAAG;AACP,IAAA,IAAI7O,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC2qB,uBAAuB,CAAC,IAAI,CAAClkB,SAAS,CAAC;AACxDsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACI,IAAIqD,UAAUA,GAAG;AACb,IAAA,IAAItD,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC4qB,6BAA6B,CAAC,IAAI,CAACnkB,SAAS,CAAC;AAC9DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACJ;AAEA,MAAM6f,6BAA6B,GAAI,OAAO5kB,oBAAoB,KAAK,WAAW,GAC5E;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAAC8qB,4BAA4B,CAACtqB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAE/E,MAAMonB,iBAAiB,CAAC;EAE3B,OAAO/hB,MAAMA,CAACrF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAG0F,MAAM,CAACC,MAAM,CAACqhB,iBAAiB,CAACphB,SAAS,CAAC;IACtD5F,GAAG,CAAC6F,SAAS,GAAGjG,GAAG;IACnBqqB,6BAA6B,CAAC3kB,QAAQ,CAACtF,GAAG,EAAEA,GAAG,CAAC6F,SAAS,EAAE7F,GAAG,CAAC;AAC/D,IAAA,OAAOA,GAAG;AACd;AAEA8F,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBokB,IAAAA,6BAA6B,CAAC1kB,UAAU,CAAC,IAAI,CAAC;AAC9C,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAAC8qB,4BAA4B,CAACtqB,GAAG,EAAE,CAAC,CAAC;AAC7C;AACA;AACJ;AACA;EACI,IAAIuqB,KAAKA,GAAG;IACR,MAAM5nB,GAAG,GAAGnD,IAAI,CAACgrB,uBAAuB,CAAC,IAAI,CAACvkB,SAAS,CAAC;AACxD,IAAA,IAAIgC,EAAE,GAAGlI,mBAAmB,CAAC4C,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACpDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;EACI,IAAI4F,UAAUA,GAAG;AACb,IAAA,IAAItD,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACirB,4BAA4B,CAAC,IAAI,CAACxkB,SAAS,CAAC;AAC7DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACJ;AAEA,MAAMkgB,mBAAmB,GAAI,OAAOjlB,oBAAoB,KAAK,WAAW,GAClE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAACmrB,kBAAkB,CAAC3qB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAErE,MAAM4qB,OAAO,CAAC;AAEjB1kB,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBykB,IAAAA,mBAAmB,CAAC/kB,UAAU,CAAC,IAAI,CAAC;AACpC,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAACmrB,kBAAkB,CAAC3qB,GAAG,EAAE,CAAC,CAAC;AACnC;AACA;AACJ;AACA;EACI,IAAIqK,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B9B,IAAI,CAACqrB,cAAc,CAAC,IAAI,CAAC5kB,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AACnD;AACA;AACJ;AACA;EACI,IAAIsF,EAAEA,GAAG;AACL,IAAA,IAAIE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACsrB,UAAU,CAAC,IAAI,CAAC7kB,SAAS,CAAC;AAC3CsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIpE,WAAWA,CAACiE,EAAE,EAAE;AACZ,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACurB,WAAW,CAACnmB,IAAI,EAAEG,IAAI,CAAC;AACxC,IAAA,IAAI,CAACkB,SAAS,GAAGtD,GAAG,KAAK,CAAC;IAC1B+nB,mBAAmB,CAAChlB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACO,SAAS,EAAE,IAAI,CAAC;AACxD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACI0E,EAAAA,UAAUA,CAACqgB,WAAW,EAAEC,cAAc,EAAE;IACpC,MAAMrmB,IAAI,GAAGhB,uBAAuB,CAAConB,WAAW,EAAExrB,IAAI,CAACqF,iBAAiB,CAAC;IACzE,MAAME,IAAI,GAAGzD,eAAe;IAC5B,MAAM0D,IAAI,GAAGpB,uBAAuB,CAACqnB,cAAc,EAAEzrB,IAAI,CAACqF,iBAAiB,CAAC;IAC5E,MAAMI,IAAI,GAAG3D,eAAe;AAC5B,IAAA,MAAMqB,GAAG,GAAGnD,IAAI,CAAC0rB,kBAAkB,CAAC,IAAI,CAACjlB,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAC3E,IAAA,IAAItC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACA;EACIwoB,oBAAoBA,CAACH,WAAW,EAAEC,cAAc,EAAEG,SAAS,EAAEC,OAAO,EAAE;IAClE,MAAMzmB,IAAI,GAAGhB,uBAAuB,CAAConB,WAAW,EAAExrB,IAAI,CAACqF,iBAAiB,CAAC;IACzE,MAAME,IAAI,GAAGzD,eAAe;IAC5B,MAAM0D,IAAI,GAAGpB,uBAAuB,CAACqnB,cAAc,EAAEzrB,IAAI,CAACqF,iBAAiB,CAAC;IAC5E,MAAMI,IAAI,GAAG3D,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAAC8rB,4BAA4B,CAAC,IAAI,CAACrlB,SAAS,EAAErB,IAAI,EAAEG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEmmB,SAAS,EAAEC,OAAO,CAAC;AACzG,IAAA,IAAI1oB,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACI4oB,EAAAA,QAAQA,CAACH,SAAS,EAAEC,OAAO,EAAE;AACzB,IAAA,MAAM1oB,GAAG,GAAGnD,IAAI,CAACgsB,gBAAgB,CAAC,IAAI,CAACvlB,SAAS,EAAEmlB,SAAS,EAAEC,OAAO,CAAC;AACrE,IAAA,IAAI1oB,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACA;AACA;AACI0I,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAE;AACrC5I,IAAAA,YAAY,CAAC0I,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG0G,QAAQ,CAACpF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIjG,IAAI,GAAGuG,QAAQ,CAACrF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAI/F,IAAI,GAAGsG,KAAK,CAACtF,kBAAkB,EAAE;AACrC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAACisB,qBAAqB,CAAC,IAAI,CAACxlB,SAAS,EAAErB,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AACxE,IAAA,IAAIvC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI+I,eAAeA,CAACC,WAAW,EAAE;AACzB/I,IAAAA,YAAY,CAAC+I,WAAW,EAAEV,OAAO,CAAC;AAClC,IAAA,IAAIrG,IAAI,GAAG+G,WAAW,CAACzF,kBAAkB,EAAE;IAC3C1G,IAAI,CAACksB,uBAAuB,CAAC,IAAI,CAACzlB,SAAS,EAAErB,IAAI,CAAC;AACtD;AACA;AACJ;AACA;EACIiH,YAAYA,CAACN,QAAQ,EAAE;AACnB3I,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG2G,QAAQ,CAACrF,kBAAkB,EAAE;IACxC1G,IAAI,CAACmsB,oBAAoB,CAAC,IAAI,CAAC1lB,SAAS,EAAErB,IAAI,CAAC;AACnD;AACA;AACJ;AACA;EACImH,SAASA,CAACP,KAAK,EAAE;AACb5I,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAIrG,IAAI,GAAG4G,KAAK,CAACtF,kBAAkB,EAAE;IACrC,MAAMvD,GAAG,GAAGnD,IAAI,CAACosB,iBAAiB,CAAC,IAAI,CAAC3lB,SAAS,EAAErB,IAAI,CAAC;AACxD,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAgQ,EAAAA,aAAaA,GAAG;IACZ,MAAMhQ,GAAG,GAAGnD,IAAI,CAACqsB,qBAAqB,CAAC,IAAI,CAAC5lB,SAAS,CAAC;AACtD,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAkQ,EAAAA,cAAcA,GAAG;AACbrT,IAAAA,IAAI,CAACssB,sBAAsB,CAAC,IAAI,CAAC7lB,SAAS,CAAC;AAC/C;AACAgG,EAAAA,iBAAiBA,GAAG;IAChB,MAAMtJ,GAAG,GAAGnD,IAAI,CAACusB,yBAAyB,CAAC,IAAI,CAAC9lB,SAAS,CAAC;AAC1D,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI4J,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAIhC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACwsB,2BAA2B,CAAC,IAAI,CAAC/lB,SAAS,CAAC;AAC5DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiC,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAIlC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACysB,iCAAiC,CAAC,IAAI,CAAChmB,SAAS,CAAC;AAClEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACImC,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIpC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC0sB,+BAA+B,CAAC,IAAI,CAACjmB,SAAS,CAAC;AAChEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIqC,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAItC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC2sB,qCAAqC,CAAC,IAAI,CAAClmB,SAAS,CAAC;AACtEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIuC,EAAAA,mBAAmBA,GAAG;IAClB,MAAMpK,GAAG,GAAGnD,IAAI,CAAC4sB,2BAA2B,CAAC,IAAI,CAACnmB,SAAS,CAAC;AAC5D,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIgF,EAAAA,yBAAyBA,GAAG;IACxB,MAAMtK,GAAG,GAAGnD,IAAI,CAAC6sB,iCAAiC,CAAC,IAAI,CAACpmB,SAAS,CAAC;AAClE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIoH,EAAAA,+BAA+BA,GAAG;AAC9B,IAAA,IAAI9E,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC8sB,uCAAuC,CAAC,IAAI,CAACrmB,SAAS,CAAC;AACxEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI+E,EAAAA,qCAAqCA,GAAG;AACpC,IAAA,IAAIhF,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC+sB,6CAA6C,CAAC,IAAI,CAACtmB,SAAS,CAAC;AAC9EsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiF,EAAAA,2BAA2BA,GAAG;IAC1B,MAAM9M,GAAG,GAAGnD,IAAI,CAACgtB,mCAAmC,CAAC,IAAI,CAACvmB,SAAS,CAAC;AACpE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACI0H,EAAAA,iCAAiCA,GAAG;IAChC,MAAMhN,GAAG,GAAGnD,IAAI,CAACitB,yCAAyC,CAAC,IAAI,CAACxmB,SAAS,CAAC;AAC1E,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIkF,EAAAA,UAAUA,GAAG;IACT,MAAMxK,GAAG,GAAGnD,IAAI,CAACktB,kBAAkB,CAAC,IAAI,CAACzmB,SAAS,CAAC;AACnD,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;EACIuO,UAAUA,CAACC,MAAM,EAAE;AACfvO,IAAAA,YAAY,CAACuO,MAAM,EAAElG,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGuM,MAAM,CAACjL,kBAAkB,EAAE;IACtC,MAAMvD,GAAG,GAAGnD,IAAI,CAACmtB,kBAAkB,CAAC,IAAI,CAAC1mB,SAAS,EAAErB,IAAI,CAAC;AACzD,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA0O,EAAAA,YAAYA,GAAG;IACX,MAAM1O,GAAG,GAAGnD,IAAI,CAACotB,oBAAoB,CAAC,IAAI,CAAC3mB,SAAS,CAAC;AACrD,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACJ;AAEA,MAAMkqB,mBAAmB,GAAI,OAAOpnB,oBAAoB,KAAK,WAAW,GAClE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAACstB,kBAAkB,CAAC9sB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAErE,MAAM2lB,OAAO,CAAC;AAEjBzf,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClB4mB,IAAAA,mBAAmB,CAAClnB,UAAU,CAAC,IAAI,CAAC;AACpC,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAACstB,kBAAkB,CAAC9sB,GAAG,EAAE,CAAC,CAAC;AACnC;AACA;AACJ;AACA;EACI,IAAIqK,EAAEA,CAACA,EAAE,EAAE;AACP,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B9B,IAAI,CAACutB,cAAc,CAAC,IAAI,CAAC9mB,SAAS,EAAErB,IAAI,EAAEG,IAAI,CAAC;AACnD;AACA;AACJ;AACA;EACI,IAAIsF,EAAEA,GAAG;AACL,IAAA,IAAIE,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACwtB,UAAU,CAAC,IAAI,CAAC/mB,SAAS,CAAC;AAC3CsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;EACIpE,WAAWA,CAACiE,EAAE,EAAE;AACZ,IAAA,MAAMzF,IAAI,GAAG1C,iBAAiB,CAACmI,EAAE,EAAE7K,IAAI,CAACqF,iBAAiB,EAAErF,IAAI,CAACsF,kBAAkB,CAAC;IACnF,MAAMC,IAAI,GAAGzD,eAAe;IAC5B,MAAMqB,GAAG,GAAGnD,IAAI,CAACytB,WAAW,CAACroB,IAAI,EAAEG,IAAI,CAAC;AACxC,IAAA,IAAI,CAACkB,SAAS,GAAGtD,GAAG,KAAK,CAAC;IAC1BkqB,mBAAmB,CAACnnB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACO,SAAS,EAAE,IAAI,CAAC;AACxD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACA;AACA;EACI0E,UAAUA,CAACC,MAAM,EAAEyD,KAAK,EAAEC,MAAM,EAAEC,KAAK,EAAE;AACrC3L,IAAAA,YAAY,CAACgI,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGgG,MAAM,CAAC1E,kBAAkB,EAAE;AACtC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAAC0tB,kBAAkB,CAAC,IAAI,CAACjnB,SAAS,EAAErB,IAAI,EAAEyJ,KAAK,EAAEC,MAAM,EAAEC,KAAK,CAAC;AAC/E,IAAA,IAAI5L,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACIwI,UAAUA,CAACP,MAAM,EAAE;AACfhI,IAAAA,YAAY,CAACgI,MAAM,EAAEK,OAAO,CAAC;AAC7B,IAAA,IAAIrG,IAAI,GAAGgG,MAAM,CAAC1E,kBAAkB,EAAE;IACtC1G,IAAI,CAAC2tB,kBAAkB,CAAC,IAAI,CAAClnB,SAAS,EAAErB,IAAI,CAAC;AACjD;AACA;AACJ;AACA;AACA;AACA;AACIyG,EAAAA,aAAaA,CAACC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAE;AACrC5I,IAAAA,YAAY,CAAC0I,QAAQ,EAAEL,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG0G,QAAQ,CAACpF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIjG,IAAI,GAAGuG,QAAQ,CAACrF,kBAAkB,EAAE;AACxCtD,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAI/F,IAAI,GAAGsG,KAAK,CAACtF,kBAAkB,EAAE;AACrC,IAAA,MAAMvD,GAAG,GAAGnD,IAAI,CAAC4tB,qBAAqB,CAAC,IAAI,CAACnnB,SAAS,EAAErB,IAAI,EAAEI,IAAI,EAAEE,IAAI,CAAC;AACxE,IAAA,IAAIvC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;EACI+I,eAAeA,CAACC,WAAW,EAAE;AACzB/I,IAAAA,YAAY,CAAC+I,WAAW,EAAEV,OAAO,CAAC;AAClC,IAAA,IAAIrG,IAAI,GAAG+G,WAAW,CAACzF,kBAAkB,EAAE;IAC3C1G,IAAI,CAAC6tB,uBAAuB,CAAC,IAAI,CAACpnB,SAAS,EAAErB,IAAI,CAAC;AACtD;AACA;AACJ;AACA;EACIiH,YAAYA,CAACN,QAAQ,EAAE;AACnB3I,IAAAA,YAAY,CAAC2I,QAAQ,EAAEN,OAAO,CAAC;AAC/B,IAAA,IAAIrG,IAAI,GAAG2G,QAAQ,CAACrF,kBAAkB,EAAE;IACxC1G,IAAI,CAAC8tB,oBAAoB,CAAC,IAAI,CAACrnB,SAAS,EAAErB,IAAI,CAAC;AACnD;AACA;AACJ;AACA;EACImH,SAASA,CAACP,KAAK,EAAE;AACb5I,IAAAA,YAAY,CAAC4I,KAAK,EAAEP,OAAO,CAAC;AAC5B,IAAA,IAAIrG,IAAI,GAAG4G,KAAK,CAACtF,kBAAkB,EAAE;IACrC,MAAMvD,GAAG,GAAGnD,IAAI,CAAC+tB,iBAAiB,CAAC,IAAI,CAACtnB,SAAS,EAAErB,IAAI,CAAC;AACxD,IAAA,IAAIjC,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAgQ,EAAAA,aAAaA,GAAG;IACZ,MAAMhQ,GAAG,GAAGnD,IAAI,CAACguB,qBAAqB,CAAC,IAAI,CAACvnB,SAAS,CAAC;AACtD,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACAkQ,EAAAA,cAAcA,GAAG;AACbrT,IAAAA,IAAI,CAACiuB,sBAAsB,CAAC,IAAI,CAACxnB,SAAS,CAAC;AAC/C;AACAgG,EAAAA,iBAAiBA,GAAG;IAChB,MAAMtJ,GAAG,GAAGnD,IAAI,CAACkuB,yBAAyB,CAAC,IAAI,CAACznB,SAAS,CAAC;AAC1D,IAAA,IAAItD,GAAG,CAAC,CAAC,CAAC,EAAE;AACR,MAAA,MAAMK,uBAAuB,CAACL,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC;AACJ;AACA;AACJ;AACA;AACI4J,EAAAA,mBAAmBA,GAAG;AAClB,IAAA,IAAIhC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACmuB,2BAA2B,CAAC,IAAI,CAAC1nB,SAAS,CAAC;AAC5DsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiC,EAAAA,yBAAyBA,GAAG;AACxB,IAAA,IAAIlC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACouB,iCAAiC,CAAC,IAAI,CAAC3nB,SAAS,CAAC;AAClEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACImC,EAAAA,uBAAuBA,GAAG;AACtB,IAAA,IAAIpC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACquB,+BAA+B,CAAC,IAAI,CAAC5nB,SAAS,CAAC;AAChEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIqC,EAAAA,6BAA6BA,GAAG;AAC5B,IAAA,IAAItC,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACsuB,qCAAqC,CAAC,IAAI,CAAC7nB,SAAS,CAAC;AACtEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIuC,EAAAA,mBAAmBA,GAAG;IAClB,MAAMpK,GAAG,GAAGnD,IAAI,CAACuuB,2BAA2B,CAAC,IAAI,CAAC9nB,SAAS,CAAC;AAC5D,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIgF,EAAAA,yBAAyBA,GAAG;IACxB,MAAMtK,GAAG,GAAGnD,IAAI,CAACwuB,iCAAiC,CAAC,IAAI,CAAC/nB,SAAS,CAAC;AAClE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIoH,EAAAA,+BAA+BA,GAAG;AAC9B,IAAA,IAAI9E,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAACyuB,uCAAuC,CAAC,IAAI,CAAChoB,SAAS,CAAC;AACxEsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACI+E,EAAAA,qCAAqCA,GAAG;AACpC,IAAA,IAAIhF,WAAW;AACf,IAAA,IAAIC,WAAW;IACf,IAAI;MACA,MAAM7H,GAAG,GAAGnD,IAAI,CAAC0uB,6CAA6C,CAAC,IAAI,CAACjoB,SAAS,CAAC;AAC9EsE,MAAAA,WAAW,GAAG5H,GAAG,CAAC,CAAC,CAAC;AACpB6H,MAAAA,WAAW,GAAG7H,GAAG,CAAC,CAAC,CAAC;MACpB,OAAOtB,kBAAkB,CAACsB,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAC,SAAS;MACNnD,IAAI,CAAC0I,eAAe,CAACqC,WAAW,EAAEC,WAAW,EAAE,CAAC,CAAC;AACrD;AACJ;AACA;AACJ;AACA;AACIiF,EAAAA,2BAA2BA,GAAG;IAC1B,MAAM9M,GAAG,GAAGnD,IAAI,CAAC2uB,mCAAmC,CAAC,IAAI,CAACloB,SAAS,CAAC;AACpE,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACI0H,EAAAA,iCAAiCA,GAAG;IAChC,MAAMhN,GAAG,GAAGnD,IAAI,CAAC4uB,yCAAyC,CAAC,IAAI,CAACnoB,SAAS,CAAC;AAC1E,IAAA,IAAIgC,EAAE,GAAG1E,oBAAoB,CAACZ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAACD,KAAK,EAAE;AACrDlD,IAAAA,IAAI,CAAC0I,eAAe,CAACvF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAOsF,EAAE;AACb;AACA;AACJ;AACA;AACIkF,EAAAA,UAAUA,GAAG;IACT,MAAMxK,GAAG,GAAGnD,IAAI,CAACqb,iBAAiB,CAAC,IAAI,CAAC5U,SAAS,CAAC;AAClD,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACJ;AAEA,MAAM0rB,mBAAmB,GAAI,OAAO5oB,oBAAoB,KAAK,WAAW,GAClE;AAAEC,EAAAA,QAAQ,EAAEA,MAAM,EAAE;EAAEC,UAAU,EAAEA,MAAM;AAAG,CAAC,GAC5C,IAAIF,oBAAoB,CAACzF,GAAG,IAAIR,IAAI,CAAC8uB,kBAAkB,CAACtuB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAErE,MAAMiL,OAAO,CAAC;EAEjB,OAAO5F,MAAMA,CAACrF,GAAG,EAAE;IACfA,GAAG,GAAGA,GAAG,KAAK,CAAC;IACf,MAAMI,GAAG,GAAG0F,MAAM,CAACC,MAAM,CAACkF,OAAO,CAACjF,SAAS,CAAC;IAC5C5F,GAAG,CAAC6F,SAAS,GAAGjG,GAAG;IACnBquB,mBAAmB,CAAC3oB,QAAQ,CAACtF,GAAG,EAAEA,GAAG,CAAC6F,SAAS,EAAE7F,GAAG,CAAC;AACrD,IAAA,OAAOA,GAAG;AACd;EAEA,OAAOmuB,QAAQA,CAACC,OAAO,EAAE;AACrB,IAAA,IAAI,EAAEA,OAAO,YAAYvjB,OAAO,CAAC,EAAE;AAC/B,MAAA,OAAO,CAAC;AACZ;AACA,IAAA,OAAOujB,OAAO,CAACtoB,kBAAkB,EAAE;AACvC;AAEAA,EAAAA,kBAAkBA,GAAG;AACjB,IAAA,MAAMlG,GAAG,GAAG,IAAI,CAACiG,SAAS;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC;AAClBooB,IAAAA,mBAAmB,CAAC1oB,UAAU,CAAC,IAAI,CAAC;AACpC,IAAA,OAAO3F,GAAG;AACd;AAEAmG,EAAAA,IAAIA,GAAG;AACH,IAAA,MAAMnG,GAAG,GAAG,IAAI,CAACkG,kBAAkB,EAAE;AACrC1G,IAAAA,IAAI,CAAC8uB,kBAAkB,CAACtuB,GAAG,EAAE,CAAC,CAAC;AACnC;AACA;AACJ;AACA;EACI,IAAIkE,CAACA,GAAG;IACJ,MAAMvB,GAAG,GAAGnD,IAAI,CAACivB,mBAAmB,CAAC,IAAI,CAACxoB,SAAS,CAAC;AACpD,IAAA,OAAOtD,GAAG;AACd;AACA;AACJ;AACA;EACI,IAAIuB,CAACA,CAACwqB,IAAI,EAAE;IACRlvB,IAAI,CAACmvB,mBAAmB,CAAC,IAAI,CAAC1oB,SAAS,EAAEyoB,IAAI,CAAC;AAClD;AACA;AACJ;AACA;EACI,IAAIE,CAACA,GAAG;IACJ,MAAMjsB,GAAG,GAAGnD,IAAI,CAACqvB,mBAAmB,CAAC,IAAI,CAAC5oB,SAAS,CAAC;AACpD,IAAA,OAAOtD,GAAG;AACd;AACA;AACJ;AACA;EACI,IAAIisB,CAACA,CAACF,IAAI,EAAE;IACRlvB,IAAI,CAACsvB,mBAAmB,CAAC,IAAI,CAAC7oB,SAAS,EAAEyoB,IAAI,CAAC;AAClD;AACA;AACJ;AACA;EACI,IAAIK,CAACA,GAAG;IACJ,MAAMpsB,GAAG,GAAGnD,IAAI,CAACwvB,mBAAmB,CAAC,IAAI,CAAC/oB,SAAS,CAAC;AACpD,IAAA,OAAOtD,GAAG;AACd;AACA;AACJ;AACA;EACI,IAAIosB,CAACA,CAACL,IAAI,EAAE;IACRlvB,IAAI,CAACyvB,mBAAmB,CAAC,IAAI,CAAChpB,SAAS,EAAEyoB,IAAI,CAAC;AAClD;AACA;AACJ;AACA;AACA;AACA;AACItoB,EAAAA,WAAWA,CAAClC,CAAC,EAAE0qB,CAAC,EAAEG,CAAC,EAAE;IACjB,MAAMpsB,GAAG,GAAGnD,IAAI,CAAC0vB,WAAW,CAAChrB,CAAC,EAAE0qB,CAAC,EAAEG,CAAC,CAAC;AACrC,IAAA,IAAI,CAAC9oB,SAAS,GAAGtD,GAAG,KAAK,CAAC;IAC1B0rB,mBAAmB,CAAC3oB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACO,SAAS,EAAE,IAAI,CAAC;AACxD,IAAA,OAAO,IAAI;AACf;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIlC,GAAGA,CAACmF,KAAK,EAAE;AACPtG,IAAAA,YAAY,CAACsG,KAAK,EAAE+B,OAAO,CAAC;AAC5B,IAAA,MAAMtI,GAAG,GAAGnD,IAAI,CAAC2vB,WAAW,CAAC,IAAI,CAAClpB,SAAS,EAAEiD,KAAK,CAACjD,SAAS,CAAC;AAC7D,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIysB,UAAUA,CAACC,MAAM,EAAE;IACf,MAAM1sB,GAAG,GAAGnD,IAAI,CAAC8vB,kBAAkB,CAAC,IAAI,CAACrpB,SAAS,EAAEopB,MAAM,CAAC;AAC3D,IAAA,OAAOpkB,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI2G,QAAQA,CAACJ,KAAK,EAAE;AACZtG,IAAAA,YAAY,CAACsG,KAAK,EAAE+B,OAAO,CAAC;AAC5B,IAAA,MAAMtI,GAAG,GAAGnD,IAAI,CAAC+vB,gBAAgB,CAAC,IAAI,CAACtpB,SAAS,EAAEiD,KAAK,CAACjD,SAAS,CAAC;AAClE,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI6sB,eAAeA,CAACH,MAAM,EAAE;IACpB,MAAM1sB,GAAG,GAAGnD,IAAI,CAACiwB,uBAAuB,CAAC,IAAI,CAACxpB,SAAS,EAAEopB,MAAM,CAAC;AAChE,IAAA,OAAOpkB,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACIqE,EAAAA,KAAKA,GAAG;IACJ,MAAMrE,GAAG,GAAGnD,IAAI,CAACkwB,aAAa,CAAC,IAAI,CAACzpB,SAAS,CAAC;AAC9C,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACIgtB,EAAAA,IAAIA,GAAG;AACHnwB,IAAAA,IAAI,CAACowB,YAAY,CAAC,IAAI,CAAC3pB,SAAS,CAAC;AACrC;AACA;AACJ;AACA;AACA;AACA;AACA;EACI4pB,IAAIA,CAAC3mB,KAAK,EAAE;AACRtG,IAAAA,YAAY,CAACsG,KAAK,EAAE+B,OAAO,CAAC;IAC5BzL,IAAI,CAACswB,YAAY,CAAC,IAAI,CAAC7pB,SAAS,EAAEiD,KAAK,CAACjD,SAAS,CAAC;AACtD;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI8pB,eAAeA,CAACV,MAAM,EAAE;IACpB,MAAM1sB,GAAG,GAAGnD,IAAI,CAACwwB,uBAAuB,CAAC,IAAI,CAAC/pB,SAAS,EAAEopB,MAAM,CAAC;AAChE,IAAA,OAAOpkB,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIsG,QAAQA,CAACC,KAAK,EAAE;AACZtG,IAAAA,YAAY,CAACsG,KAAK,EAAE+B,OAAO,CAAC;AAC5B,IAAA,MAAMtI,GAAG,GAAGnD,IAAI,CAACywB,gBAAgB,CAAC,IAAI,CAAChqB,SAAS,EAAEiD,KAAK,CAACjD,SAAS,CAAC;AAClE,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIutB,MAAMA,CAAChnB,KAAK,EAAE;AACVtG,IAAAA,YAAY,CAACsG,KAAK,EAAE+B,OAAO,CAAC;AAC5B,IAAA,MAAMtI,GAAG,GAAGnD,IAAI,CAAC2wB,cAAc,CAAC,IAAI,CAAClqB,SAAS,EAAEiD,KAAK,CAACjD,SAAS,CAAC;AAChE,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIytB,aAAaA,CAACf,MAAM,EAAE;IAClB,MAAM1sB,GAAG,GAAGnD,IAAI,CAAC6wB,qBAAqB,CAAC,IAAI,CAACpqB,SAAS,EAAEopB,MAAM,CAAC;AAC9D,IAAA,OAAOpkB,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACI2tB,EAAAA,MAAMA,GAAG;IACL,MAAM3tB,GAAG,GAAGnD,IAAI,CAAC+wB,cAAc,CAAC,IAAI,CAACtqB,SAAS,CAAC;AAC/C,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI6tB,GAAGA,CAACtnB,KAAK,EAAE;AACPtG,IAAAA,YAAY,CAACsG,KAAK,EAAE+B,OAAO,CAAC;AAC5B,IAAA,MAAMtI,GAAG,GAAGnD,IAAI,CAACixB,WAAW,CAAC,IAAI,CAACxqB,SAAS,EAAEiD,KAAK,CAACjD,SAAS,CAAC;AAC7D,IAAA,OAAOtD,GAAG;AACd;AACA;AACJ;AACA;AACA;AACA;AACA;AACI+tB,EAAAA,SAASA,GAAG;IACR,MAAM/tB,GAAG,GAAGnD,IAAI,CAACmxB,iBAAiB,CAAC,IAAI,CAAC1qB,SAAS,CAAC;AAClD,IAAA,OAAOtD,GAAG;AACd;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACIX,EAAAA,MAAMA,GAAG;IACL,MAAMW,GAAG,GAAGnD,IAAI,CAACoxB,cAAc,CAAC,IAAI,CAAC3qB,SAAS,CAAC;AAC/C,IAAA,OAAOtD,GAAG;AACd;AACA;AACJ;AACA;AACA;AACA;AACA;AACIkuB,EAAAA,SAASA,GAAG;IACR,MAAMluB,GAAG,GAAGnD,IAAI,CAACsxB,iBAAiB,CAAC,IAAI,CAAC7qB,SAAS,CAAC;AAClD,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIouB,KAAKA,CAAC7nB,KAAK,EAAE;AACTtG,IAAAA,YAAY,CAACsG,KAAK,EAAE+B,OAAO,CAAC;AAC5B,IAAA,MAAMtI,GAAG,GAAGnD,IAAI,CAACwxB,aAAa,CAAC,IAAI,CAAC/qB,SAAS,EAAEiD,KAAK,CAACjD,SAAS,CAAC;AAC/D,IAAA,OAAOgF,OAAO,CAAC5F,MAAM,CAAC1C,GAAG,CAAC;AAC9B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACI6O,QAAQA,CAACtI,KAAK,EAAE;AACZtG,IAAAA,YAAY,CAACsG,KAAK,EAAE+B,OAAO,CAAC;AAC5B,IAAA,MAAMtI,GAAG,GAAGnD,IAAI,CAACyxB,gBAAgB,CAAC,IAAI,CAAChrB,SAAS,EAAEiD,KAAK,CAACjD,SAAS,CAAC;AAClE,IAAA,OAAOtD,GAAG;AACd;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIuuB,aAAaA,CAACC,MAAM,EAAE;AAClBvuB,IAAAA,YAAY,CAACuuB,MAAM,EAAErpB,OAAO,CAAC;AAC7B,IAAA,IAAIlD,IAAI,GAAGusB,MAAM,CAACjrB,kBAAkB,EAAE;IACtC1G,IAAI,CAAC4xB,qBAAqB,CAAC,IAAI,CAACnrB,SAAS,EAAErB,IAAI,CAAC;AACpD;AACJ;AAEA,eAAeysB,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,OAAO1wB,CAAC,EAAE;QACR,IAAIywB,MAAM,CAACK,OAAO,CAACzuB,GAAG,CAAC,cAAc,CAAC,IAAI,kBAAkB,EAAE;AAC1D0uB,UAAAA,OAAO,CAACC,IAAI,CAAC,mMAAmM,EAAEhxB,CAAC,CAAC;AAExN,SAAC,MAAM;AACH,UAAA,MAAMA,CAAC;AACX;AACJ;AACJ;AAEA,IAAA,MAAM0pB,KAAK,GAAG,MAAM+G,MAAM,CAACQ,WAAW,EAAE;IACxC,OAAO,MAAML,WAAW,CAACM,WAAW,CAACxH,KAAK,EAAEgH,OAAO,CAAC;AAExD,GAAC,MAAM;IACH,MAAM1uB,QAAQ,GAAG,MAAM4uB,WAAW,CAACM,WAAW,CAACT,MAAM,EAAEC,OAAO,CAAC;AAE/D,IAAA,IAAI1uB,QAAQ,YAAY4uB,WAAW,CAACO,QAAQ,EAAE;MAC1C,OAAO;QAAEnvB,QAAQ;AAAEyuB,QAAAA;OAAQ;AAE/B,KAAC,MAAM;AACH,MAAA,OAAOzuB,QAAQ;AACnB;AACJ;AACJ;AAEA,SAASovB,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,OAAO1xB,WAAW,CAAC,UAAUiuB,IAAI,EAAE0D,IAAI,EAAE;MACvGC,UAAU,CAACC,MAAM,CAACC,eAAe,CAACxyB,mBAAmB,CAAC2uB,IAAI,EAAE0D,IAAI,CAAC,CAAC;KACrE,EAAEI,SAAS,CAAC;GAAE;AACfjB,EAAAA,OAAO,CAACW,GAAG,CAACO,iBAAiB,GAAG,UAAS/D,IAAI,EAAE;AAC3C,IAAA,MAAM/rB,GAAG,GAAGsI,OAAO,CAAC5F,MAAM,CAACqpB,IAAI,CAAC;AAChC,IAAA,OAAO/rB,GAAG;GACb;AACD4uB,EAAAA,OAAO,CAACW,GAAG,CAACQ,oBAAoB,GAAG,UAAShE,IAAI,EAAE;AAC9C,IAAA,MAAM/rB,GAAG,GAAGsI,OAAO,CAACsjB,QAAQ,CAACG,IAAI,CAAC;AAClC,IAAA,OAAO/rB,GAAG;GACb;AACD4uB,EAAAA,OAAO,CAACW,GAAG,CAACS,+BAA+B,GAAG,YAAW;AACrD,IAAA,MAAMC,KAAK,GAAGpzB,IAAI,CAACe,mBAAmB;AACtC,IAAA,MAAMgC,MAAM,GAAGqwB,KAAK,CAACC,IAAI,CAAC,CAAC,CAAC;AAC5BD,IAAAA,KAAK,CAACpyB,GAAG,CAAC,CAAC,EAAE6B,SAAS,CAAC;IACvBuwB,KAAK,CAACpyB,GAAG,CAAC+B,MAAM,GAAG,CAAC,EAAEF,SAAS,CAAC;IAChCuwB,KAAK,CAACpyB,GAAG,CAAC+B,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC;IAC3BqwB,KAAK,CAACpyB,GAAG,CAAC+B,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC;IAC3BqwB,KAAK,CAACpyB,GAAG,CAAC+B,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC;GAE/B;EACDgvB,OAAO,CAACW,GAAG,CAACY,qBAAqB,GAAG,UAASpE,IAAI,EAAE0D,IAAI,EAAE;AACrD,IAAA,MAAMzvB,GAAG,GAAGtB,kBAAkB,CAACqtB,IAAI,EAAE0D,IAAI,CAAC;AAC1C,IAAA,OAAOzvB,GAAG;GACb;EACD4uB,OAAO,CAACW,GAAG,CAACa,gBAAgB,GAAG,UAASrE,IAAI,EAAE0D,IAAI,EAAE;IAChD,MAAM,IAAIhxB,KAAK,CAACC,kBAAkB,CAACqtB,IAAI,EAAE0D,IAAI,CAAC,CAAC;GAClD;AAED,EAAA,OAAOb,OAAO;AAClB;AAMA,SAASyB,mBAAmBA,CAACnwB,QAAQ,EAAEyuB,MAAM,EAAE;EAC3C9xB,IAAI,GAAGqD,QAAQ,CAACowB,OAAO;EACvBC,UAAU,CAACC,sBAAsB,GAAG7B,MAAM;AAC1C9tB,EAAAA,qBAAqB,GAAG,IAAI;AAC5BJ,EAAAA,yBAAyB,GAAG,IAAI;AAChC3D,EAAAA,uBAAuB,GAAG,IAAI;EAG9BD,IAAI,CAAC4zB,gBAAgB,EAAE;AACvB,EAAA,OAAO5zB,IAAI;AACf;AAEA,SAAS6zB,QAAQA,CAAC/B,MAAM,EAAE;AACtB,EAAA,IAAI9xB,IAAI,KAAK6C,SAAS,EAAE,OAAO7C,IAAI;AAGnC,EAAA,IAAI,OAAO8xB,MAAM,KAAK,WAAW,EAAE;IAC/B,IAAIxrB,MAAM,CAACwtB,cAAc,CAAChC,MAAM,CAAC,KAAKxrB,MAAM,CAACE,SAAS,EAAE;MACpD,CAAC;AAACsrB,QAAAA;AAAM,OAAC,GAAGA,MAAM;AACtB,KAAC,MAAM;AACHM,MAAAA,OAAO,CAACC,IAAI,CAAC,4EAA4E,CAAC;AAC9F;AACJ;AAEA,EAAA,MAAMN,OAAO,GAAGU,iBAAiB,EAAE;AAInC,EAAA,IAAI,EAAEX,MAAM,YAAYG,WAAW,CAAC8B,MAAM,CAAC,EAAE;AACzCjC,IAAAA,MAAM,GAAG,IAAIG,WAAW,CAAC8B,MAAM,CAACjC,MAAM,CAAC;AAC3C;EAEA,MAAMzuB,QAAQ,GAAG,IAAI4uB,WAAW,CAACO,QAAQ,CAACV,MAAM,EAAEC,OAAO,CAAC;AAE1D,EAAA,OAAOyB,mBAAmB,CAACnwB,QAAQ,EAAEyuB,MAAM,CAAC;AAChD;AAEA,eAAe4B,UAAUA,CAACM,cAAc,EAAE;AACtC,EAAA,IAAIh0B,IAAI,KAAK6C,SAAS,EAAE,OAAO7C,IAAI;AAGnC,EAAA,IAAI,OAAOg0B,cAAc,KAAK,WAAW,EAAE;IACvC,IAAI1tB,MAAM,CAACwtB,cAAc,CAACE,cAAc,CAAC,KAAK1tB,MAAM,CAACE,SAAS,EAAE;MAC5D,CAAC;AAACwtB,QAAAA;AAAc,OAAC,GAAGA,cAAc;AACtC,KAAC,MAAM;AACH5B,MAAAA,OAAO,CAACC,IAAI,CAAC,2FAA2F,CAAC;AAC7G;AACJ;AAEA,EAAA,IAAI,OAAO2B,cAAc,KAAK,WAAW,EAAE;IACvCA,cAAc,GAAG,IAAIC,GAAG,CAAC,sBAAsB,EAAEC,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC;AACrE;AACA,EAAA,MAAMrC,OAAO,GAAGU,iBAAiB,EAAE;EAEnC,IAAI,OAAOuB,cAAc,KAAK,QAAQ,IAAK,OAAOK,OAAO,KAAK,UAAU,IAAIL,cAAc,YAAYK,OAAQ,IAAK,OAAOJ,GAAG,KAAK,UAAU,IAAID,cAAc,YAAYC,GAAI,EAAE;AAC5KD,IAAAA,cAAc,GAAGM,KAAK,CAACN,cAAc,CAAC;AAC1C;EAIA,MAAM;IAAE3wB,QAAQ;AAAEyuB,IAAAA;GAAQ,GAAG,MAAMD,UAAU,CAAC,MAAMmC,cAAc,EAAEjC,OAAO,CAAC;AAE5E,EAAA,OAAOyB,mBAAmB,CAACnwB,QAAQ,EAAEyuB,MAAM,CAAC;AAChD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9/KA,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;;ACdM,MAAM,2BAA2B,GAAG,OAAO;;ACHlD;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,GAAGyC,EAAM,EAAE;AACrB,IAAA,OAAO,IAAI;AACb;;ACKA,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;AAEgB,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;AAEM,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;AAEM,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;;ACpBA,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;MAEa,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;;IAGtB,mBAAmB,GAAA;QACjB,OAAO,IAAI,CAAC,QAAQ;;IAGtB,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,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,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,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;;IAGH,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,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,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,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,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,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;;IAGH,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,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,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,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,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,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,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;;IAGH,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;AAEK,SAAU,oBAAoB,CAClC,QAA0B,EAAA;AAE1B,IAAA,OAAO,IAAI,cAAc,CAAC,QAAQ,CAAC;AACrC;;AC1ZA,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,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;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,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,QAAA,WAAW,EAAE,WAAW,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,QAAA,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,QAAA,KAAK,EAAE,WAAW,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,SAASK,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;MAEa,gBAAgB,CAAA;AAG3B,IAAA,WAAA,CAAY,QAA4B,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;IAG1B,KAAK,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;;IAGzB,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;;IAG1C,sBAAsB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE;;IAG/C,qBAAqB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;;IAG9C,4BAA4B,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,4BAA4B,EAAE;;IAGrD,YAAY,GAAA;AACV,QAAA,OAAO,kBAAkB,CACvB,SAAS,CAAuB,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CACxE;;AAGH,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,IAAA,YAAY,CAAC,WAAoB,EAAE,QAAiB,EAAE,KAAc,EAAA;QAClE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC;;AAG1D,IAAA,cAAc,CAAC,WAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC;;AAG3C,IAAA,WAAW,CAAC,QAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC;;AAGrC,IAAA,QAAQ,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;;AAG/B,IAAA,SAAS,CAAC,MAAe,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;;;IAIjC,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,QAAQ;;AAEvB;AAEe,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;;AC5HA;AAEA;;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;;AC7SD;AAEa,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;;AC9TY,MAAA,GAAI,SAAQ,KAAK,CAAC,IAAI,CAAA;IAmBjC,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,OAAqB,EAAA;;AAC/B,QAAA,KAAK,EAAE;AA5BT,QAAA,IAAA,CAAA,OAAO,GAAgB;YACrB,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5B,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,QAAQ,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC;AACrB,YAAA,QAAQ,EAAE,EAAE;AACZ,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,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAE/B,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,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AAC3B,YAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;AACnC,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC/B,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC/B,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,wCAAwC,CAAC;;;AAI7D,IAAA,SAAS,CAAC,OAAwB,EAAA;QAChC,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,QAAQ,IAAI,OAAO;AACnB,YAAA,UAAU,IAAI,OAAO;AACrB,YAAA,YAAY,IAAI,OAAO;YACvB,UAAU,IAAI,OAAO;AACvB,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,GAAG,CAAC,UAAU,CACjB,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,EAC1B,WAAW,CAAC,MAAM,EAClB,WAAW,CAAC,UAAU,EACtB,WAAW,CAAC,QAAQ,EACpB,WAAW,CAAC,QAAQ,CACrB;YAED,IAAI,CAAC,gBAAgB,EAAE;YACvB;;QAGF,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,iBAAiB,EAAE;;;IAI5B,SAAS,GAAA;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;AACpC,QAAA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;;AAGlD,IAAA,YAAY,CAAC,SAA6B,EAAA;;AACxC,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,GAAG,CAAC,aAAa,CACpB,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,KAAK,EAAE,OAAO,CAAC;;IAGzD,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,GAAG,CAAC,yBAAyB,EAAE,EAAE;YAClE,EAAE;AACF,YAAA,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;AAC/B,SAAA,CAAC;;IAGI,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;AAED,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,GAAG,CAAC,mBAAmB,EAAE,CAAC;QAE7D,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,GAAG,CAAC,mBAAmB,EAAE;QAC/C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;;AAEvD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;IAG7B,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;;ACjQD;AAEa,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;;ACtUD;AAEa,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;;ACjPD,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;AAEM,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;SAEgB,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;AAEM,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;AAEgB,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;SAEgB,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;;;ACxCA;AAEA,MAAM,oBAAoB,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;AACxC,MAAM,iCAAiC,GAAG,EAAE;AAE5C;;AAEG;AACU,MAAA,aAAc,SAAQ,KAAK,CAAC,IAAI,CAAA;IAY3C,WACE,CAAA,YAAiC,EACjC,OAA8B,EAAA;;AAE9B,QAAA,KAAK,EAAE;QAdT,IAAM,CAAA,MAAA,GAAyB,IAAI;QAE3B,IAAc,CAAA,cAAA,GAAG,EAAE;QACnB,IAAQ,CAAA,QAAA,GAAmC,IAAI;QAC/C,IAAgB,CAAA,gBAAA,GAAa,EAAE;QAC/B,IAAe,CAAA,eAAA,GAAG,KAAK;QACvB,IAAY,CAAA,YAAA,GAAG,KAAK;QACpB,IAAa,CAAA,aAAA,GAAG,CAAC;AACzB,QAAA,0BAAA,CAAA,GAAA,CAAA,IAAA,EAAwC,IAAI,CAAC;AAO3C,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,KAAK;AACjD,QAAA,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,YAAY,CAAC;AAChE,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,MAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,QAAQ,CAAC;QAEhE,IAAI,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,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;AAIvB;;AAEG;AACH,IAAA,iBAAiB,CAAC,YAAiC,EAAE,KAAA,GAAgB,QAAQ,EAAA;QAC3E,IAAI,CAAC,eAAe,EAAE;AAEtB,QAAA,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,cAAc;QACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAA4B;QAClF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAkB;QAElE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAa;AACzE,QAAA,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE;AAC/C,QAAA,YAAY,CAAC,YAAY,CACvB,UAAU,EACV,IAAI,KAAK,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC,CAAC,CAC/C;QACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAY,EAAE,oBAAoB,CAAC;QACrE,QAAQ,CAAC,kBAAkB,EAAE;QAC7B,IAAI,CAAC,gBAAgB,GAAG,6BAA6B,CACnD,QAAQ,EACR,YAAY,CAAC,yBAAyB,CACvC;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,oBAAoB,CAAC;YAC9C,KAAK;AACL,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,KAAK,CAAC,SAAS;AACrB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,mBAAmB,EAAE,CAAC;AACtB,YAAA,kBAAkB,EAAE,CAAC;AACtB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAExB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;AAIvB;;AAEG;IACH,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;;AAGtB;;AAEG;IACH,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,cAAc;;IAG5B,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;;AAGvC;;;AAGG;AACH,IAAA,UAAU,CAAC,OAAuC,EAAA;;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;;AAEzE,QAAA,OAAO,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;AACtD,YAAA,EAAE,EAAE,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,CAAC,IAAI;AAC5B,YAAA,SAAS,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,SAAS;AAC9B,SAAA,CAAC;;IAGJ,IAAI,OAAO,CAAC,MAAe,EAAA;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM;QAC7B,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;YACjD;;QAGF,sBAAA,CAAA,IAAI,EAAgB,0BAAA,EAAA,sBAAsB,CAAC;YACzC,SAAS,EAAE,IAAI,CAAC,gBAAgB;AAChC,YAAA,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,YAAY,EAAE,IAAI,CAAC,aAAa;AACjC,SAAA,CAAC,MAAA;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,uBAAA,IAAI,EAAA,0BAAA,EAAA,GAAA,CAAa,CAAC;;AAG7B,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,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;AAChD,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;AAIvB,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;IAG3B,eAAe,GAAA;QACb,IAAI,CAAC,gBAAgB,EAAE;AACvB,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,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;YACvD;;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;IAGjB,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,0BAAA,EAAA,GAAA,CAAa,EAAE;YACtB;;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,uBAAA,IAAI,EAAA,0BAAA,EAAA,GAAA,CAAa,CAAC;AAC9B,QAAA,uBAAuB,CAAC,sBAAA,CAAA,IAAI,EAAA,0BAAA,EAAA,GAAA,CAAa,CAAC;AAC1C,QAAA,sBAAA,CAAA,IAAI,EAAA,0BAAA,EAAgB,IAAI,EAAA,GAAA,CAAA;;AAE3B;;AAED;;AAEG;SACa,YAAY,CAC1B,GAAmB,EACnB,GAAmB,EACnB,OAAiC,EAAA;IAEjC,OAAO,cAAc,CAAC,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC;AAC1D;AAEA;;AAEG;SACa,mBAAmB,CACjC,GAAmB,EACnB,GAAmB,EACnB,OAAiC,EAAA;IAEjC,OAAO,cAAc,CAAC,qBAAqB,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC;AACjE;AAEA;;AAEG;SACa,kBAAkB,CAChC,GAAmB,EACnB,GAAmB,EACnB,OAAiC,EAAA;IAEjC,OAAO,cAAc,CAAC,oBAAoB,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC;AAChE;AAEA;;;AAGG;AACH,SAAS,cAAc,CACrB,UAAyE,EACzE,GAAmB,EACnB,GAAmB,EACnB,OAAiC,EAAA;;AAEjC,IAAA,MAAM,aAAa,GAAI,QAAoC,CAAC,UAAU,CAAC;AACvE,IAAA,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE;AACvC,QAAA,MAAM,IAAI,KAAK,CACb,GAAG,UAAU,CAAA,iFAAA,CAAmF,CACjG;;IAGH,MAAM,cAAc,GAAG,aAAsC;AAC7D,IAAA,MAAM,aAAa,GAAG,sBAAsB,CAAC,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,MAAM,CAAC;AAC7D,IAAA,MAAM,YAAY,GAAG,cAAc,CACjC,wBAAwB,CAAC,GAAG,CAAC,EAC7B,wBAAwB,CAAC,GAAG,CAAC,EAC7B,aAAa,CACd;IAED,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC;IACvD,IAAI,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,EAAE;AAC5B,QAAA,MAAM,CAAC,OAAO,GAAG,IAAI;;AAEvB,IAAA,OAAO,MAAM;AACf;AAEA;;;AAGG;AACH,SAAS,wBAAwB,CAAC,OAAuB,EAAA;AACvD,IAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,QAAA,OAAO,OAAO;;AAGhB,IAAA,IAAI,OAAO,OAAO,CAAC,iBAAiB,KAAK,UAAU,EAAE;AACnD,QAAA,OAAO,iBAAiB,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;;AAGvD,IAAA,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,UAAU,EAAE;AAC7C,QAAA,OAAO,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;;AAGjD,IAAA,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU,EAAE;AACzC,QAAA,OAAO,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;;AAG7C,IAAA,OAAO,iBAAiB,CAAC,OAAO,CAAC;AACnC;AAEA;;;AAGG;AACH,SAAS,iBAAiB,CAAC,KAAc,EAAA;AACvC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK;;AAGd,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC9B;AAEA;;AAEG;AACH,SAAS,sBAAsB,CAAC,OAA8B,EAAA;IAC5D,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,SAAS;;IAGlB,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,oBAAoB,EAAE,OAAO,CAAC,kBAAkB;AACjD,KAAA,CAAC;AACJ;AAEA;;;AAGG;AACH,SAAS,6BAA6B,CACpC,QAA8B,EAC9B,kBAA0B,EAAA;IAE1B,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,aAAa,CAC3C,QAAQ,EACR,iCAAiC,CAClC;IACD,MAAM,kBAAkB,GAAG,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC;IACjE,MAAM,SAAS,GACb,kBAAkB,IAAI,kBAAkB,CAAC,KAAK,GAAG;UAC7C,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAA0B;UACxD,EAAE;IACR,aAAa,CAAC,OAAO,EAAE;AAEvB,IAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,QAAA,OAAO,SAAS;;AAGlB,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAa;AACnD;;AC3WA;;AAEG;SACa,oBAAoB,CAClC,IAA0B,EAC1B,OAA6B,EAC7B,OAA8B,EAAA;IAE9B,OAAO,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;AACnD;;;AC2Ba,MAAA,OAAQ,SAAQ,KAAK,CAAC,IAAI,CAAA;IAqBrC,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;;;;AAW3B,IAAA,WAAA,CAAY,OAAyB,EAAA;;AACnC,QAAA,KAAK,EAAE;AAvCT,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;AAEhC,QAAA,IAAA,CAAA,oBAAoB,GAAkB,IAAI,KAAK,CAAC,OAAO,EAAE;;;;;AAiBjD,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE;AAMjD,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;;;;;;;;;;;;;;;IAkBJ,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;;IAGJ,mBAAmB,GAAA;AACjB,QAAA,OAAO,gCAAgC,CAAC,SAAS,EAAE,SAAS,CAAC;;IAG/D,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,OAAO,CAAC,yBAAyB,EAAE,EAAE;YACtE,EAAE;AACF,YAAA,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;AAC/B,SAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6DJ,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,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;;aACtC;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;;IAI3B,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;;;;;;;;;;;;;;;;;;;;AA0BrC,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;;IAGJ,wBAAwB,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DrB,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;;;;;;;;;;;;;;;;;;;;;;;;;IA8BJ,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;;AAGjB;;AAEG;IACH,QAAQ,CACN,OAA6B,EAC7B,OAA8B,EAAA;QAE9B,OAAO,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;;IAGrD,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;;;IAIpE,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;;;AAKF,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;;;;;;;;IAU3B,uBAAuB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;QAEzB,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,QAAQ,EAAE;AAC3C,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;QAEzB,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;;;;;;;;;;;;;;;;IAiBC,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;;;;AChlBY,MAAA,QAAS,SAAQ,KAAK,CAAC,IAAI,CAAA;IAsBtC,IAAI,MAAM,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;;IAGnC,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,OAA0B,EAAA;;AACpC,QAAA,KAAK,EAAE;AAhCT,QAAA,IAAA,CAAA,OAAO,GAAqB;YAC1B,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5B,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE;AAClB,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,qBAAA,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;AAevB,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;YACb,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;AACnC,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AAC3B,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AAC3B,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC/B,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,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,GACnB,QAAQ,IAAI,OAAO;AACnB,YAAA,QAAQ,IAAI,OAAO;AACnB,YAAA,QAAQ,IAAI,OAAO;AACnB,YAAA,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;AACnB,YAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO;AAChE,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CACtB,MAAM,CAAC,KAAK,EAAE,EACd,MAAM,EACN,MAAM,EACN,KAAK,EACL,QAAQ,CACT;YAED,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,QAAQ,CAAC,UAAU,EAAE;AACzC,QAAA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;;AAGlD,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,QAAQ,CAAC;;IAG/D,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;;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,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;;aACtC;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;;IAI3B,gBAAgB,GAAA;;AACd,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;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;AAC3C,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG;;aACtB;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;AACzB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,OAAO,EAAE,GAAG;AACb,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,QAAQ,CAAC,2BAA2B,EAAE,CAAC;AAC3E,QAAA,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,qBAAA,EAAA,GAAA,CAAa,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB;;QAGF,IAAI,sBAAA,CAAA,IAAI,EAAa,qBAAA,EAAA,GAAA,CAAA,YAAY,KAAK,CAAC,YAAY,EAAE;YACnD,IAAI,CAAC,wBAAwB,CAAC,sBAAA,CAAA,IAAI,EAAa,qBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,EAAE,WAAW,CAAC;AACtE,YAAA,sBAAA,CAAA,IAAI,EAAa,qBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,kBAAkB,EAAE;AAC/C,YAAA,sBAAA,CAAA,IAAI,EAAa,qBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,qBAAqB,EAAE;YAClD;;AAGF,QAAA,MAAM,WAAW,GAAG,sBAAA,CAAA,IAAI,EAAa,qBAAA,EAAA,GAAA,CAAA,CAAC,QAAgC;AACtE,QAAA,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC;AAErC,QAAA,MAAM,UAAU,GAAG,sBAAA,CAAA,IAAI,6BAEtB;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,IAAI,CAAC,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,IAAI;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE;QACpD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;;AAElE,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;AAG7B;;AAEG;IACH,QAAQ,CACN,OAA6B,EAC7B,OAA8B,EAAA;QAE9B,OAAO,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;;IAGrD,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,QAAQ,CAAC,2BAA2B,EAAE,CAAC;YAC3E,sBAAA,CAAA,IAAI,EAAgB,qBAAA,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,qBAAA,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,qBAAA,EAAA,GAAA,CAAa,EAAE;YACtB;;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,uBAAA,IAAI,EAAA,qBAAA,EAAA,GAAA,CAAa,CAAC;AAC9B,QAAA,uBAAuB,CAAC,sBAAA,CAAA,IAAI,EAAA,qBAAA,EAAA,GAAA,CAAa,CAAC;AAC1C,QAAA,sBAAA,CAAA,IAAI,EAAA,qBAAA,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;;;;AClVY,MAAA,MAAO,SAAQ,KAAK,CAAC,IAAI,CAAA;IAqBpC,IAAI,KAAK,CAAC,KAAa,EAAA;QACrB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;;IAGlC,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,OAAwB,EAAA;;AAClC,QAAA,KAAK,EAAE;AA/BT,QAAA,IAAA,CAAA,OAAO,GAAmB;YACxB,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;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;AAC3B,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,YAAY,EAAE,CAAC;SAChB;AAGD,QAAA,mBAAA,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;AAevB,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,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAErC,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;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,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;;AAGJ,IAAA,SAAS,CAAC,OAA2B,EAAA;;QACnC,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,IAAI,CAAC,MAAM,CAAC,UAAU,CACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,EAClB,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,IAAI,CAAC,OAAO,CAAC,KAAK,CACnB;YACD,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,gBAAgB,GAAA;;AACd,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAClE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;QAE1D,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;AAC3C,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG;;aACtB;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;AACzB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,OAAO,EAAE,GAAG;AACb,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,MAAM,CAAC,2BAA2B,EAAE,CAAC;AACzE,QAAA,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,CAAa,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB;;QAGF,IAAI,sBAAA,CAAA,IAAI,EAAa,mBAAA,EAAA,GAAA,CAAA,YAAY,KAAK,CAAC,YAAY,EAAE;YACnD,IAAI,CAAC,wBAAwB,CAAC,sBAAA,CAAA,IAAI,EAAa,mBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,EAAE,WAAW,CAAC;AACtE,YAAA,sBAAA,CAAA,IAAI,EAAa,mBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,kBAAkB,EAAE;AAC/C,YAAA,sBAAA,CAAA,IAAI,EAAa,mBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,qBAAqB,EAAE;YAClD;;AAGF,QAAA,MAAM,WAAW,GAAG,sBAAA,CAAA,IAAI,EAAa,mBAAA,EAAA,GAAA,CAAA,CAAC,QAAgC;AACtE,QAAA,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC;AAErC,QAAA,MAAM,UAAU,GAAG,sBAAA,CAAA,IAAI,2BAEtB;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,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;QAClD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;;AAEhE,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;AAG7B;;AAEG;IACH,QAAQ,CACN,OAA6B,EAC7B,OAA8B,EAAA;QAE9B,OAAO,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;;IAGrD,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,MAAM,CAAC,2BAA2B,EAAE,CAAC;YACzE,sBAAA,CAAA,IAAI,EAAgB,mBAAA,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,mBAAA,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,mBAAA,EAAA,GAAA,CAAa;;IAG1B,SAAS,GAAA;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACvC,QAAA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;;AAGlD,IAAA,YAAY,CAAC,SAAgC,EAAA;;AAC3C,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,MAAM,CAAC,aAAa,CACvB,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,mBAAmB,GAAA;AACjB,QAAA,OAAO,gCAAgC,CAAC,QAAQ,EAAE,KAAK,CAAC;;IAG1D,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,MAAM,CAAC,yBAAyB,EAAE,EAAE;YACrE,EAAE;AACF,YAAA,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;AAC/B,SAAA,CAAC;;IAGI,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,CAAa,EAAE;YACtB;;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,CAAa,CAAC;AAC9B,QAAA,uBAAuB,CAAC,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,CAAa,CAAC;AAC1C,QAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,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;;;;AC1TY,MAAA,OAAQ,SAAQ,KAAK,CAAC,IAAI,CAAA;IAqBrC,IAAI,KAAK,CAAC,KAAa,EAAA;QACrB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;;IAGlC,IAAI,MAAM,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;;IAGnC,IAAI,KAAK,CAAC,KAAa,EAAA;QACrB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;;AAGlC,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO;AACL,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;SAC1B;;AAGH,IAAA,WAAA,CAAY,OAAyB,EAAA;;AACnC,QAAA,KAAK,EAAE;AAxCT,QAAA,IAAA,CAAA,OAAO,GAAoB;YACzB,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,GAAG;AACV,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,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;AAwBvB,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,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAEtC,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,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,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,OAAO,CAAC,UAAU,CACrB,MAAM,CAAC,KAAK,EAAE,EACd,KAAK,EACL,MAAM,EACN,KAAK,CACN;YAED,IAAI,CAAC,gBAAgB,EAAE;YACvB;;QAGF,IAAI,YAAY,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,oBAAoB,EAAE;AACvE,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;AAG7C,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,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;;IAGJ,mBAAmB,GAAA;AACjB,QAAA,OAAO,gCAAgC,CAAC,SAAS,EAAE,KAAK,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,OAAO,CAAC,yBAAyB,EAAE,EAAE;YACtE,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,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;;aACtC;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;;IAI3B,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,oBAAoB,EAAE;AACvD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3C,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK;;aAC3B;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;AACzB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,UAAU,EAAE,KAAK;AAClB,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,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;;IAGrC,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;QACnD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;;AAEjE,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;AAG7B;;AAEG;IACH,QAAQ,CACN,OAA6B,EAC7B,OAA8B,EAAA;QAE9B,OAAO,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;;AAGrD;;AAEG;IACH,YAAY,CACV,IAA0B,EAC1B,OAA8B,EAAA;QAE9B,OAAO,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;;IAGlD,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;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,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;;AAG3B,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAa;;IAGlB,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,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;;;;ACrVD;AAEa,MAAA,MAAO,SAAQ,KAAK,CAAC,IAAI,CAAA;IAqBpC,IAAI,MAAM,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;;IAGnC,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,OAAwB,EAAA;;AAClC,QAAA,KAAK,EAAE;AA/BT,QAAA,IAAA,CAAA,OAAO,GAAmB;YACxB,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5B,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,cAAc,EAAE,EAAE;AAClB,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,mBAAA,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;AAevB,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;AAEtC,QAAA,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3C,QAAA,MAAM,YAAY,GAAI,QAAoC,CAAC,SAAS,CAAC;AACrE,QAAA,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE;AACtC,YAAA,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F;;QAEH,MAAM,YAAY,GAAG,YAAuC;QAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,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;YACb,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;AACnC,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AAC3B,YAAA,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;AACzC,YAAA,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;AAC3C,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,oCAAoC,CAAC;;;AAIzD,IAAA,SAAS,CAAC,OAA2B,EAAA;;QACnC,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,QAAQ,IAAI,OAAO;AACnB,YAAA,eAAe,IAAI,OAAO;YAC1B,gBAAgB,IAAI,OAAO;AAC7B,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,IAAI,CAAC,MAAM,CAAC,UAAU,CACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,IAAI,CAAC,OAAO,CAAC,cAAc,CAC5B;YAED,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,MAAM,CAAC,UAAU,EAAE;AACvC,QAAA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;;AAGlD,IAAA,YAAY,CAAC,SAAgC,EAAA;;AAC3C,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,MAAM,CAAC,aAAa,CACvB,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,QAAQ,EAAE,QAAQ,CAAC;;IAG7D,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,MAAM,CAAC,yBAAyB,EAAE,EAAE;YACrE,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,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAEhE,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;AAC3C,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG;;aACtB;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;AACzB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,OAAO,EAAE,GAAG;AACb,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,MAAM,CAAC,2BAA2B,EAAE,CAAC;AACzE,QAAA,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,CAAa,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB;;QAGF,IAAI,sBAAA,CAAA,IAAI,EAAa,mBAAA,EAAA,GAAA,CAAA,YAAY,KAAK,CAAC,YAAY,EAAE;YACnD,IAAI,CAAC,wBAAwB,CAAC,sBAAA,CAAA,IAAI,EAAa,mBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,EAAE,WAAW,CAAC;AACtE,YAAA,sBAAA,CAAA,IAAI,EAAa,mBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,kBAAkB,EAAE;AAC/C,YAAA,sBAAA,CAAA,IAAI,EAAa,mBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,qBAAqB,EAAE;YAClD;;AAGF,QAAA,MAAM,WAAW,GAAG,sBAAA,CAAA,IAAI,EAAa,mBAAA,EAAA,GAAA,CAAA,CAAC,QAAgC;AACtE,QAAA,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC;AAErC,QAAA,MAAM,UAAU,GAAG,sBAAA,CAAA,IAAI,2BAEtB;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,MAAM,CAAC,mBAAmB,EAAE;QAClD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;;AAEhE,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;AAG7B;;AAEG;IACH,QAAQ,CACN,OAA6B,EAC7B,OAA8B,EAAA;QAE9B,OAAO,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;;IAGrD,IAAI,OAAO,CAAC,MAAe,EAAA;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM;QAC7B,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE,CAAC;YACxE,sBAAA,CAAA,IAAI,EAAgB,mBAAA,EAAA,sBAAsB,CAAC;AACzC,gBAAA,SAAS,EAAE,UAAU;AACrB,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,mBAAA,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,mBAAA,EAAA,GAAA,CAAa;;IAGlB,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,CAAa,EAAE;YACtB;;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,CAAa,CAAC;AAC9B,QAAA,uBAAuB,CAAC,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,CAAa,CAAC;AAC1C,QAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,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;;;;ACtWY,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;AAC3C,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG;;aACtB;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;AACzB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,OAAO,EAAE,GAAG;AACb,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;;AAG7B;;AAEG;IACH,QAAQ,CACN,OAA6B,EAC7B,OAA8B,EAAA;QAE9B,OAAO,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;;IAGrD,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;;;;AClTD;AAEa,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,GAAIC,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;AAC3C,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG;;aACtB;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;AACzB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,OAAO,EAAE,GAAG;AACb,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;;AAG7B;;AAEG;IACH,QAAQ,CACN,OAA6B,EAC7B,OAA8B,EAAA;QAE9B,OAAO,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;;IAGrD,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,QAAQ,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG;AACvB,QAAA,QAAQ,EAAE,EAAE;AACZ,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,WAAW,EAAE,IAAI;AACjB,QAAA,YAAY,EAAE,eAAe;AAC9B,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,QAAQ,EAAE,EAAE;AACZ,QAAA,KAAK,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC;AAClB,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,YAAY,EAAE,eAAe;AAC9B,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,GAAG,EAAE,GAAG,CAAC;AAClC,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,aAAa,EAAE,EAAE;AACjB,QAAA,cAAc,EAAE,EAAE;AAClB,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,YAAY,EAAE,eAAe;AAC9B,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,WAAW,EAAE,IAAI;AACjB,QAAA,YAAY,EAAE,eAAe;AAC9B,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;;ACjGA,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;;AC1GA,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,gBAAgB,CAAC,IAAe,EAAE,KAAgB,EAAA;AACzD,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;AAEM,SAAU,4BAA4B,CAAC,KAAkB,EAAA;AAC7D,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,aAAa,GAAG,IAAI;AAC1B,IAAA,MAAM,IAAI,GAAG,aAAa,GAAG,GAAG;IAChC,MAAM,cAAc,GAAG,IAAI;IAC3B,MAAM,KAAK,GAAG,IAAI;AAElB,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,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;AAC3E,IAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,QAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;;AAGhE,IAAA,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC;AAC9B,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AAEF,IAAA,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI;AAE7B,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,WAAW,CAAC;IAEtB,OAAO;QACL,UAAU;QACV,kBAAkB;QAClB,mBAAmB;QACnB,WAAW;QACX,UAAU;QACV,WAAW;KACZ;AACH;;ACpDA;;AAEG;AACa,SAAA,oBAAoB,CAClC,SAAkC,EAClC,OAAmC,EAAA;AAEnC,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK;AAC9B,UAAE,iBAAiB,CAAC,SAAS,EAAE,OAAO;AACtC,UAAE,OAAO,CAAC,IAAI,KAAK;AACjB,cAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO;AACxC,cAAE,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC;AAE9C,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;;AAEG;AACH,SAAS,iBAAiB,CACxB,SAAkC,EAClC,OAAmC,EAAA;;IAEnC,MAAM,YAAY,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC;AAC9C,IAAA,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC;QACtB,MAAM,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,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,CAAA,EAAA,GAAA,OAAO,CAAC,WAAW,mCAAI,IAAI;QACxC,YAAY;AACb,KAAA,CAAC;AAEF,IAAA,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC;AACtB,QAAA,MAAM,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,YAAY,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QAC7D,MAAM,EAAE,SAAS,KAAK,cAAc,GAAG,IAAI,GAAG,IAAI;AAClD,QAAA,aAAa,EAAE,EAAE;AACjB,QAAA,cAAc,EAAE,EAAE;AAClB,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,WAAW,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,WAAW,mCAAI,IAAI;QACxC,YAAY;AACb,KAAA,CAAC;IAEF,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,CAAQ,MAAA,CAAA;AACvC,QAAA,WAAW,EAAE,qEAAqE;AAClF,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;;IAEnC,MAAM,YAAY,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC;AAC9C,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,OAAO,CAAC;AACtB,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,WAAW,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,WAAW,mCAAI,IAAI;QACxC,YAAY;AACb,KAAA,CAAC;AACF,IAAA,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC;AACtB,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,WAAW,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,WAAW,mCAAI,IAAI;QACxC,YAAY;AACb,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,CAAU,QAAA,CAAA;AACzC,QAAA,WAAW,EAAE,8DAA8D;AAC3E,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;;IAEnC,MAAM,YAAY,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC;AAC9C,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;AAC3E,IAAA,MAAM,IAAI,GAAG;AACX,QAAA,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,QAAA,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;KAC3B;AACD,IAAA,MAAM,UAAU,GAAG;QACjB,IAAI,OAAO,CAAC,EAAI,EAAE,GAAG,EAAE,KAAK,CAAC;QAC7B,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;AAC5B,QAAA,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;QAC3B,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC;KAC7B;AACD,IAAA,MAAM,UAAU,GAAG,SAAS,KAAK;AAC/B,UAAE;YACE,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC;YAC9B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;AAC7B,YAAA,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;YAC5B,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC;AAC9B;AACH,UAAE;YACE,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;YAC7B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;AAC7B,YAAA,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;YAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;SAC7B;AAEL,IAAA,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC;QACpB,IAAI;AACJ,QAAA,OAAO,EAAE,UAAU;AACnB,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,WAAW,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,WAAW,mCAAI,IAAI;QACxC,YAAY;AACb,KAAA,CAAC;AACF,IAAA,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC;AACpB,QAAA,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;AACxC,QAAA,OAAO,EAAE,UAAU;AACnB,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,WAAW,EAAE,cAAc,CAAC,KAAK,EAAE;AACnC,QAAA,WAAW,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,WAAW,mCAAI,IAAI;QACxC,YAAY;AACb,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,CAAkB,gBAAA,CAAA;AACjD,QAAA,WAAW,EAAE,uFAAuF;AACpG,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,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;;AC7PA,SAAS,SAAS,CAAC,cAA8B,EAAA;IAC/C,IAAI,UAAU,GAAkB,IAAI;AACpC,IAAA,IAAI,KAAK,GAAG,MAAM,CAAC,iBAAiB;IAEpC,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE;QAC/D,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;QACrD,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,EAAE;AAC3B,YAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvB,YAAA,UAAU,GAAG,IAAI,CAAC,OAAO;;;AAI7B,IAAA,OAAO,UAAU;AACnB;AAEA;;;;AAIG;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,WAAW,EAAE,IAAI;AACjB,QAAA,YAAY,EAAE,CAAC;AAChB,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,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAG,EAAA,MAAM,CAAC,IAAI,CAAW,SAAA,CAAA,CAAC;AAC7D,IAAA,MAAM,cAAc,GAAG,oBAAoB,CAAC,QAAQ,CAAC;AACrD,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,cAAc,CAAC;IACzC,IAAI,cAAc,GAA8B,IAAI;AAEpD,IAAA,IAAI,OAAO,KAAK,IAAI,EAAE;QACpB,cAAc,GAAG,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE;AAC1D,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;QACpB,QAAQ;QACR,cAAc;QACd,cAAc;KACf;AACH;;MCtGa,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;;;;;;;;;;;;;;;;;;;;AAoBG;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;;AAhEM,YAAO,CAAA,OAAA,GAAG,2BAAH;AACP,YAAQ,CAAA,QAAA,GAAwB,IAAxB;;;;","x_google_ignoreList":[0,4,5,6,7]}