@hpcc-js/timeline 2.51.25 → 2.51.26

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.es6.js","sources":["../src/__package__.ts","../../../node_modules/tslib/tslib.es6.mjs","../../../node_modules/style-inject/dist/style-inject.es.js","../src/MiniGantt.ts","../src/ReactGantt.ts","../src/ReactAxisGantt.ts","../src/ReactAxisGanttSeries.ts","../src/ReactTimeline.ts","../src/ReactTimelineSeries.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/timeline\";\nexport const PKG_VERSION = \"2.51.25\";\nexport const BUILD_VERSION = \"2.105.9\";\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\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; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\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);\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); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { ITooltip } from \"@hpcc-js/api\";\nimport { Axis } from \"@hpcc-js/chart\";\nimport { d3Event, EntityPin, EntityRect, local as d3Local, select as d3Select, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { extent as d3Extent } from \"d3-array\";\nimport { scaleBand as d3ScaleBand } from \"d3-scale\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\nimport { zoom as d3Zoom, zoomIdentity as d3ZoomIdentity } from \"d3-zoom\";\n\nimport \"../src/MiniGantt.css\";\n\nexport class MiniGantt extends SVGWidget {\n protected tlAxis: Axis;\n protected brAxis: Axis;\n protected verticalBands;\n protected _zoom;\n protected gUpperContent;\n protected gUpperAxis;\n protected gMiddleContent;\n protected gLowerAxis;\n protected gLowerContent;\n private localRect = d3Local<EntityRect>();\n private localEntityPin = d3Local<EntityPin>();\n private tooltipFormatter: (date: Date) => string;\n private _dateCache;\n\n protected rootExtent;\n protected _title_idx = 0;\n protected _startDate_idx = 1;\n protected _endDate_idx = 2;\n protected _icon_idx = -1;\n protected _color_idx = -1;\n protected _yoffset_idx = -1;\n\n constructor() {\n super();\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this._drawStartPos = \"origin\";\n this.tooltipHTML((d: any) => `<center>${d[this._title_idx]}</center><br>${this.tooltipFormatter(this.brAxis.parse(d[this._startDate_idx]))} -> ${this.tooltipFormatter(this.brAxis.parse(d[this._endDate_idx]))}`);\n\n this.tlAxis = new Axis()\n .type(\"time\")\n ;\n this.brAxis = new Axis()\n .type(\"time\")\n ;\n this.verticalBands = d3ScaleBand()\n .paddingOuter(0.2)\n .paddingInner(0.2)\n ;\n }\n\n isHorizontal(): boolean {\n return this.orientation() === \"horizontal\";\n }\n\n fullExtent() {\n const data = [...this.data().map(d => d[this._startDate_idx]), ...this.data().filter(d => !!d[this._endDate_idx]).map(d => d[this._endDate_idx])];\n return d3Extent(data);\n }\n\n extent() {\n const extent = this.rootExtent ? [this.rootExtent[1], this.rootExtent[2]] : this.fullExtent();\n if (extent[0] !== undefined && extent[1] !== undefined) {\n if (extent[0] === extent[1] || this.centerOnMostRecent()) {\n const parser = d3TimeParse(this.timePattern());\n const formatter = d3TimeFormat(this.timePattern());\n const date1 = parser(extent[0]);\n const date2 = parser(extent[1]);\n if (extent[0] === extent[1]) {\n extent[0] = formatter(new Date(date1.setFullYear(date1.getFullYear() - 1)));\n extent[1] = formatter(new Date(date1.setFullYear(date1.getFullYear() + 2)));\n } else {\n const time1 = date1.getTime();\n const timeDiff = date2.getTime() - time1;\n extent[0] = formatter(date1);\n extent[1] = formatter(new Date(time1 + (timeDiff * 2)));\n }\n }\n }\n return extent;\n }\n\n dataStartPos(d) {\n if(typeof this._dateCache[d[this._startDate_idx]] !== \"undefined\"){\n return this._dateCache[d[this._startDate_idx]];\n }\n const pos = this.brAxis.scalePos(d[this._startDate_idx]);\n this._dateCache[d[this._startDate_idx]] = pos;\n return pos;\n }\n\n dataEndPos(d) {\n if(typeof this._dateCache[d[this._endDate_idx]] !== \"undefined\"){\n return this._dateCache[d[this._endDate_idx]];\n }\n const pos = this.brAxis.scalePos(d[this._endDate_idx]);\n this._dateCache[d[this._endDate_idx]] = pos;\n return pos;\n }\n\n dataWidth(d) {\n return this.dataEndPos(d) - this.dataStartPos(d);\n }\n\n private transform;\n resetZoom() {\n // Triggers a \"zoomed\" event ---\n this._zoom.transform(this.element(), d3ZoomIdentity.translate(0, this.isHorizontal() ? 0 : this.height()));\n }\n\n zoomed() {\n this.transform = d3Event().transform;\n this.render();\n }\n\n private background;\n enter(domNode, element) {\n super.enter(domNode, element);\n this._zoom = d3Zoom()\n .scaleExtent([0, this.maxZoom()])\n .on(\"zoom\", () => {\n this.zoomed();\n })\n ;\n\n this.background = element.append(\"rect\")\n .attr(\"fill\", \"white\")\n .attr(\"opacity\", 0)\n .on(\"dblclick\", () => {\n d3Event().stopPropagation();\n delete this.rootExtent;\n this.resetZoom();\n })\n ;\n this.gUpperContent = element.append(\"g\").attr(\"class\", \"gUpperContent\");\n this.gUpperAxis = element.append(\"g\").attr(\"class\", \"gUpperAxis\");\n this.gMiddleContent = element.append(\"g\").attr(\"class\", \"gMiddleContent\");\n this.gLowerAxis = element.append(\"g\").attr(\"class\", \"gLowerAxis\");\n this.gLowerContent = element.append(\"g\").attr(\"class\", \"gLowerContent\");\n this.tlAxis\n .target(this.gUpperAxis.node())\n .tickFormat(this.tickFormat())\n .guideTarget(this.gUpperAxis.append(\"g\").node())\n .shrinkToFit(\"none\")\n .overlapMode(this.tickFormat_exists() ? \"stagger\" : \"none\")\n .extend(0.1)\n ;\n this.brAxis\n .target(this.gLowerAxis.node())\n .tickFormat(this.tickFormat())\n .guideTarget(this.gLowerAxis.append(\"g\").node())\n .shrinkToFit(\"none\")\n .overlapMode(this.tickFormat_exists() ? \"stagger\" : \"none\")\n .extend(0.1)\n ;\n\n element.call(this._zoom);\n this._selection.widgetElement(this.gMiddleContent);\n }\n\n private _prevIsHorizontal;\n update(domNode, element) {\n super.update(domNode, element);\n\n this._dateCache = {};\n\n this._title_idx = this.titleColumn() !== null ? this.columns().indexOf(this.titleColumn()) : this._title_idx;\n this._startDate_idx = this.startDateColumn() !== null ? this.columns().indexOf(this.startDateColumn()) : this._startDate_idx;\n this._endDate_idx = this.endDateColumn() !== null ? this.columns().indexOf(this.endDateColumn()) : this._endDate_idx;\n this._icon_idx = this.iconColumn() !== null ? this.columns().indexOf(this.iconColumn()) : this._icon_idx;\n this._color_idx = this.colorColumn() !== null ? this.columns().indexOf(this.colorColumn()) : this._color_idx;\n this._yoffset_idx = this.yOffsetColumn() !== null ? this.columns().indexOf(this.yOffsetColumn()) : this._yoffset_idx;\n\n if (this._prevIsHorizontal !== this.isHorizontal()) {\n this._prevIsHorizontal = this.isHorizontal();\n this.resetZoom();\n return;\n }\n\n this.tooltipFormatter = d3TimeFormat(this.tooltipTimeFormat());\n\n const width = this.width();\n const height = this.height();\n\n this.background\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n\n const extent = this.extent();\n this.tlAxis\n .x(width / 2)\n .orientation(this.isHorizontal() ? \"top\" : \"left\")\n .reverse(!this.isHorizontal())\n .timePattern(this.timePattern()) // \"%Y-%m-%dT%H:%M:%S.%LZ\"\n .width(width - 1)\n .low(extent[0])\n .high(extent[1])\n .updateScale()\n ;\n\n this.brAxis\n .x(width / 2)\n .y(height / 2)\n .orientation(this.isHorizontal() ? \"bottom\" : \"right\")\n .reverse(!this.isHorizontal())\n .timePattern(this.timePattern()) // \"%Y-%m-%dT%H:%M:%S.%LZ\"\n .width(width - 1)\n .height(height)\n .low(extent[0])\n .high(extent[1])\n .updateScale()\n ;\n\n if (this.transform) {\n let low;\n let hi;\n if (this.isHorizontal()) {\n low = this.tlAxis.parseInvert(this.tlAxis.invert(this.transform.invertX(0)));\n hi = this.tlAxis.parseInvert(this.tlAxis.invert(this.transform.invertX(width - 1)));\n } else {\n low = this.tlAxis.parseInvert(this.tlAxis.invert(- this.transform.invertY(0)));\n hi = this.tlAxis.parseInvert(this.tlAxis.invert(- this.transform.invertY(height - 1)));\n }\n this.tlAxis\n .low(low)\n .high(hi)\n .updateScale()\n ;\n this.brAxis\n .low(low)\n .high(hi)\n .updateScale()\n ;\n }\n\n const data = this.data().sort(this.isHorizontal() ? (l, r) => {\n const retVal = this.brAxis.scalePos(l[1]) - this.brAxis.scalePos(r[1]);\n if (retVal === 0) {\n return (\"\" + l[0]).localeCompare(\"\" + r[0]);\n }\n return retVal;\n } : (l, r) => {\n return this.brAxis.scalePos(r[1]) - this.brAxis.scalePos(l[1]);\n });\n const events = data.filter(d => !d[this._endDate_idx]);\n const ranges = data.filter(d => !!d[this._endDate_idx]);\n\n this.tlAxis\n .render()\n ;\n this.brAxis\n .render()\n ;\n const brAxisBBox = this.brAxis.getBBox();\n\n let upperContentHeight = this.updateEntityPins(events);\n const lowerAxisHeight = brAxisBBox.height;\n let lowerHeight = height - upperContentHeight;\n const minYOffset = this._yoffset_idx !== -1 ? Math.min.apply(undefined, this.data().filter(row => !isNaN(row[this._yoffset_idx])).map(row => row[this._yoffset_idx])) : 0;\n if (events.length > 0 && ranges.length === 0) {\n // ONLY EVENTS\n this.tlAxis.visible(false);\n let y_offset = upperContentHeight / 4;\n if (y_offset > (height / 2) - lowerAxisHeight) {\n y_offset = (height / 2) - lowerAxisHeight;\n }\n const upperContentYOffset = (height / 2) + y_offset;\n const lowerAxisYOffset = ((height / 2) - lowerAxisHeight - y_offset) * -1;\n const halfMinYOffset = minYOffset !== 0 ? minYOffset / 2 : 0;\n this.gUpperContent.attr(\"transform\", `translate(0, ${upperContentYOffset - halfMinYOffset})`);\n this.gLowerAxis.attr(\"transform\", `translate(0, ${lowerAxisYOffset - halfMinYOffset})`);\n } else if (events.length === 0 && ranges.length > 0) {\n // ONLY RANGES\n this.tlAxis.visible(true);\n this.gUpperContent.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n this.gUpperAxis.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n } else {\n upperContentHeight -= minYOffset;\n lowerHeight += minYOffset;\n // BOTH\n this.tlAxis.visible(true);\n this.gUpperContent.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n this.gUpperAxis.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n this.gMiddleContent.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n }\n this.tlAxis\n .render()\n ;\n const tlAxisBBox = this.tlAxis.getBBox();\n interface BucketInfo {\n endPos: number;\n }\n const bucketData: BucketInfo[] = [];\n const bucketIndex = {};\n for (const range of ranges) {\n for (let i = 0; i < bucketData.length; ++i) {\n const bucket = bucketData[i];\n if (bucket.endPos + this.overlapTolerence() <= this.dataStartPos(range)) {\n bucketIndex[range] = i;\n bucket.endPos = this.dataEndPos(range);\n break;\n }\n }\n\n if (bucketIndex[range] === undefined) {\n bucketIndex[range] = bucketData.length;\n bucketData.push({\n endPos: this.dataEndPos(range)\n });\n }\n }\n\n const vbLower = this.isHorizontal() ? 0 + tlAxisBBox.height : 0 + tlAxisBBox.width;\n const vbHigher = this.isHorizontal() ? lowerHeight - brAxisBBox.height : width - brAxisBBox.width;\n this.verticalBands\n .range([vbLower, vbHigher])\n .domain(bucketData.map((_d, i) => i))\n ;\n\n if (ranges.length > 0) {\n this.updateEventRanges(events, ranges, bucketIndex, lowerHeight, tlAxisBBox, brAxisBBox, width);\n }\n }\n\n updateEntityPins(events) {\n let event_height = 0;\n const context = this;\n const entityPins = this.gUpperContent.selectAll(\".entity_pin\").data(events, d => d[0] + \":\" + d[1]);\n const eventFontColor_idx = this.eventFontColorColumn() ? this.columns().indexOf(this.eventFontColorColumn()) : -1;\n const eventBorderColor_idx = this.eventBorderColorColumn() ? this.columns().indexOf(this.eventBorderColorColumn()) : -1;\n const eventBackgroundColor_idx = this.eventBackgroundColorColumn() ? this.columns().indexOf(this.eventBackgroundColorColumn()) : -1;\n const title_counts = {};\n for (const d of events) {\n const type = typeof d[context._title_idx] !== \"undefined\" ? d[context._title_idx] : d[0];\n title_counts[type] = title_counts[type] ? title_counts[type] + 1 : 1;\n }\n const title_types = Object.keys(title_counts);\n const title_group_offset = context.eventGroupOffset();\n const entityPinsEnter = entityPins.enter().append(\"g\")\n .attr(\"class\", \"entity_pin\");\n entityPinsEnter.append(\"line\")\n .attr(\"class\", \"entity_line\");\n\n entityPinsEnter\n .on(\"mouseover\", function (d) {\n d3Select(this).raise();\n })\n .each(function (d, i) {\n const entityPin = new EntityPin()\n .target(this)\n .icon(\"\")\n .iconOnlyShowOnHover(context.hideIconWhenCollapsed())\n .titleOnlyShowOnHover(context.hideTitleWhenCollapsed())\n .descriptionOnlyShowOnHover(context.hideDescriptionWhenCollapsed())\n .annotationOnlyShowOnHover(context.hideAnnotationsWhenCollapsed())\n .iconDiameter(18)\n .iconPaddingPercent(1)\n .titleFontSize(14)\n .descriptionColor(\"#333\")\n .descriptionFontSize(15)\n .iconColor(eventFontColor_idx === -1 ? \"#333\" : d[eventFontColor_idx])\n .titleColor(eventFontColor_idx === -1 ? \"#333\" : d[eventFontColor_idx])\n .descriptionColor(eventFontColor_idx === -1 ? \"#333\" : d[eventFontColor_idx])\n .backgroundShape(\"pin\")\n .backgroundColorFill(eventFontColor_idx === -1 ? \"#f8f8f8\" : d[eventBackgroundColor_idx])\n .backgroundColorStroke(eventFontColor_idx === -1 ? \"#ccc\" : d[eventBorderColor_idx])\n .cornerRadius(5)\n .arrowHeight(10)\n .arrowWidth(16)\n ;\n context.localEntityPin.set(this, entityPin);\n })\n .merge(entityPins)\n .each(function (d, i) {\n const entityPin = context.localEntityPin.get(this);\n const _title = typeof d[context._title_idx] !== \"undefined\" ? d[context._title_idx] : entityPin.title();\n const x_offset = context.dataStartPos(d) - 0;\n let y_offset = ((title_types.indexOf(_title) % context.eventGroupMod()) * title_group_offset) - 5;\n if (typeof d[context._yoffset_idx] !== \"undefined\") y_offset += d[context._yoffset_idx] ? d[context._yoffset_idx] : 0;\n if (d[context._title_idx] !== entityPin.title() && d[context._startDate_idx] !== entityPin.description()) {\n const parsed_start_time = context.brAxis.parse(d[context._startDate_idx]);\n const formatted_start_time = context.tooltipFormatter(parsed_start_time);\n entityPin\n .x(x_offset)\n .y(y_offset)\n .iconOnlyShowOnHover(context.hideIconWhenCollapsed())\n .titleOnlyShowOnHover(context.hideTitleWhenCollapsed())\n .descriptionOnlyShowOnHover(context.hideDescriptionWhenCollapsed())\n .annotationOnlyShowOnHover(context.hideAnnotationsWhenCollapsed())\n .icon(typeof d[context._icon_idx] !== \"undefined\" ? d[context._icon_idx] : entityPin.icon())\n .title(_title)\n .description(formatted_start_time)\n .animationFrameRender()\n ;\n } else {\n entityPin.move({ x: x_offset, y: y_offset });\n }\n const calc_height = entityPin.calcHeight();\n if (event_height < calc_height) event_height = calc_height;\n\n d3Select(this).selectAll(\".entity_line\")\n .attr(\"x1\", x_offset)\n .attr(\"x2\", x_offset)\n .attr(\"y1\", 0)\n .attr(\"y2\", y_offset)\n .style(\"stroke\", eventFontColor_idx === -1 ? \"#ccc\" : d[eventBorderColor_idx])\n .style(\"stroke-width\", 1)\n ;\n })\n ;\n entityPins.exit()\n .each(function (d, i) {\n const entityPin = context.localEntityPin.get(this);\n entityPin.target(null);\n\n })\n .remove();\n const event_offset = Math.abs(Math.min(events.length, context.eventGroupMod()) * context.eventGroupOffset());\n return event_height + event_offset;\n }\n\n updateEventRanges(events, ranges, bucketIndex, eventRangeHeight, tlAxisBBox, brAxisBBox, width) {\n const context = this;\n\n const lines = this.gMiddleContent.selectAll(\".line\").data(events, d => {\n return d[context._title_idx];\n });\n lines.enter().append(\"line\")\n .attr(\"class\", \"line\")\n .merge(lines)\n .attr(this.isHorizontal() ? \"x1\" : \"y1\", d => this.dataStartPos(d) - 0)\n .attr(this.isHorizontal() ? \"x2\" : \"y2\", d => this.dataStartPos(d) - 0)\n .attr(this.isHorizontal() ? \"y1\" : \"x1\", this.isHorizontal() ? tlAxisBBox.height : tlAxisBBox.width)\n .attr(this.isHorizontal() ? \"y2\" : \"x2\", this.isHorizontal() ? eventRangeHeight - brAxisBBox.height : width - brAxisBBox.width)\n ;\n lines.exit().remove();\n const buckets = this.gMiddleContent.selectAll(\".buckets\").data(ranges, d => d[context._title_idx]);\n buckets.enter().append(\"g\")\n .attr(\"class\", \"buckets\")\n .call(this._selection.enter.bind(this._selection))\n .each(function (d) {\n const entityRect = new EntityRect()\n .target(this)\n .iconDiameter(28)\n .iconPaddingPercent(0)\n .titleFontSize(28)\n .titleColor(context.rangeFontColor())\n .descriptionColor(context.rangeFontColor())\n .iconColor(context.rangeFontColor())\n .backgroundShape(\"rect\")\n .backgroundColorFill(d[context._color_idx])\n ;\n context.localRect.set(this, entityRect);\n context.enterEntityRect(entityRect, d);\n })\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d), \"range\", context._selection.selected(this));\n }, false)\n .on(\"dblclick\", function (d) {\n context.rootExtent = d;\n context.resetZoom();\n context.dblclick(context.rowToObj(d), \"range\", context._selection.selected(this));\n }, true)\n .on(\"mouseout.tooltip\", this.tooltip.hide)\n .on(\"mousemove.tooltip\", this.tooltip.show)\n .merge(buckets)\n .attr(\"transform\", d => context.isHorizontal() ?\n `translate(${this.dataStartPos(d)}, ${this.verticalBands(bucketIndex[d])}) ` :\n `translate(${this.verticalBands(bucketIndex[d])}, ${this.dataStartPos(d)}) `)\n .each(function (d) {\n const textBox = context.localRect.get(this);\n const x = context.dataWidth(d) / 2;\n const y = context.verticalBands.bandwidth() / 2;\n const rectWidth = Math.max(context.dataWidth(d), 2);\n const rectHeight = Math.max(context.verticalBands.bandwidth(), 2);\n const fontHeightRatio = 0.618;\n const paddingRatio = ((1 - fontHeightRatio) / 2);\n const paddingSize = paddingRatio * rectHeight;\n const fontSize = rectHeight * fontHeightRatio;\n const iconSize = fontSize;\n textBox\n .pos(context.isHorizontal() ? { x, y } : { x: y, y: x })\n .fixedHeight(context.isHorizontal() ? rectHeight : rectWidth)\n .fixedWidth(context.isHorizontal() ? rectWidth : rectHeight)\n .icon(typeof d[context._icon_idx] !== \"undefined\" ? d[context._icon_idx] : \"\")\n .title(typeof d[context._title_idx] !== \"undefined\" ? d[context._title_idx] : \"\")\n .padding(paddingSize)\n .iconDiameter(iconSize)\n .titleFontSize(fontSize)\n ;\n if (iconSize * 1.5 > rectWidth) {\n textBox.icon(null);\n }\n context.updateEntityRect(textBox, d[context._icon_idx]);\n textBox\n .render()\n ;\n });\n buckets.exit().remove();\n }\n\n exit(domNode, element) {\n this.brAxis.target(null);\n this.tlAxis.target(null);\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row, col, sel) {\n }\n\n dblclick(row, col, sel) {\n }\n\n enterEntityRect(textbox: EntityRect, d) {\n }\n\n updateEntityRect(textbox: EntityRect, d) {\n }\n\n // ITooltip ---\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n\n // SimpleSelectionMixin\n _selection;\n}\nMiniGantt.prototype._class += \" timeline_MiniGantt\";\nMiniGantt.prototype.implements(ITooltip.prototype);\nMiniGantt.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface MiniGantt {\n timePattern(): string;\n timePattern(_: string): this;\n tickFormat(): string;\n tickFormat(_: string): this;\n tickFormat_exists(): boolean;\n tooltipTimeFormat(): string;\n tooltipTimeFormat(_: string): this;\n overlapTolerence(): number;\n overlapTolerence(_: number): this;\n orientation(): string;\n orientation(_: string): this;\n rangeFontColor(): string;\n rangeFontColor(_: string): this;\n titleColumn(): string;\n titleColumn(_: string): this;\n startDateColumn(): string;\n startDateColumn(_: string): this;\n endDateColumn(): string;\n endDateColumn(_: string): this;\n iconColumn(): string;\n iconColumn(_: string): this;\n colorColumn(): string;\n colorColumn(_: string): this;\n yOffsetColumn(): string;\n yOffsetColumn(_: string): this;\n maxZoom(): number;\n maxZoom(_: number): this;\n eventGroupMod(): number;\n eventGroupMod(_: number): this;\n eventGroupOffset(): number;\n eventGroupOffset(_: number): this;\n eventFontColorColumn(): string;\n eventFontColorColumn(_: string): this;\n eventBorderColorColumn(): string;\n eventBorderColorColumn(_: string): this;\n eventBackgroundColorColumn(): string;\n eventBackgroundColorColumn(_: string): this;\n hideIconWhenCollapsed(): boolean;\n hideIconWhenCollapsed(_: boolean): this;\n hideTitleWhenCollapsed(): boolean;\n hideTitleWhenCollapsed(_: boolean): this;\n hideDescriptionWhenCollapsed(): boolean;\n hideDescriptionWhenCollapsed(_: boolean): this;\n hideAnnotationsWhenCollapsed(): boolean;\n hideAnnotationsWhenCollapsed(_: boolean): this;\n centerOnMostRecent(): boolean;\n centerOnMostRecent(_: boolean): this;\n\n}\n\nMiniGantt.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\", \"timePattern\");\nMiniGantt.prototype.publish(\"tickFormat\", null, \"string\", \"tickFormat\", undefined, { optional: true });\nMiniGantt.prototype.publish(\"tooltipTimeFormat\", \"%Y-%m-%d\", \"string\", \"tooltipTimeFormat\");\nMiniGantt.prototype.publish(\"overlapTolerence\", 2, \"number\", \"overlapTolerence\");\nMiniGantt.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"orientation\", [\"horizontal\", \"vertical\"]);\nMiniGantt.prototype.publish(\"rangeFontColor\", \"#ecf0f1\", \"html-color\", \"rangeFontColor\");\nMiniGantt.prototype.publish(\"titleColumn\", null, \"string\", \"titleColumn\");\nMiniGantt.prototype.publish(\"startDateColumn\", null, \"string\", \"startDateColumn\");\nMiniGantt.prototype.publish(\"endDateColumn\", null, \"string\", \"endDateColumn\");\nMiniGantt.prototype.publish(\"iconColumn\", null, \"string\", \"iconColumn\");\nMiniGantt.prototype.publish(\"colorColumn\", null, \"string\", \"colorColumn\");\nMiniGantt.prototype.publish(\"yOffsetColumn\", null, \"string\", \"yOffsetColumn\");\nMiniGantt.prototype.publish(\"maxZoom\", 16, \"number\", \"maxZoom\");\nMiniGantt.prototype.publish(\"eventGroupOffset\", -50, \"number\", \"eventGroupOffset\");\nMiniGantt.prototype.publish(\"eventGroupMod\", 5, \"number\", \"eventGroupMod\");\nMiniGantt.prototype.publish(\"eventFontColorColumn\", null, \"string\", \"eventFontColorColumn\");\nMiniGantt.prototype.publish(\"eventBorderColorColumn\", null, \"string\", \"eventBorderColorColumn\");\nMiniGantt.prototype.publish(\"eventBackgroundColorColumn\", null, \"string\", \"eventBackgroundColorColumn\");\nMiniGantt.prototype.publish(\"hideIconWhenCollapsed\", false, \"boolean\", \"hideIconWhenCollapsed\");\nMiniGantt.prototype.publish(\"hideTitleWhenCollapsed\", false, \"boolean\", \"hideTitleWhenCollapsed\");\nMiniGantt.prototype.publish(\"hideDescriptionWhenCollapsed\", false, \"boolean\", \"hideDescriptionWhenCollapsed\");\nMiniGantt.prototype.publish(\"hideAnnotationsWhenCollapsed\", true, \"boolean\", \"hideAnnotationsWhenCollapsed\");\nMiniGantt.prototype.publish(\"centerOnMostRecent\", false, \"boolean\", \"If true, the timeline will be centered on the most recent data point\");\n","import { d3Event, select as d3Select, SVGZoomWidget, Utility } from \"@hpcc-js/common\";\nimport { HTMLTooltip } from \"@hpcc-js/html\";\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\nimport { React, render, LabelledRect } from \"@hpcc-js/react\";\n\nexport type IGanttData = [ string, number, number, any? ];\n\nexport interface IRangeOptions {\n rangePadding: number;\n fontFamily: string;\n fontSize: number;\n strokeWidth?: number;\n fill: string;\n stroke: string;\n textFill: string;\n cornerRadius: number;\n}\n\nexport class ReactGantt extends SVGZoomWidget {\n\n protected _selection = new Utility.Selection(this);\n\n protected _buckets;\n protected _interpolateX;\n protected _interpolateY;\n \n protected _bucketsBySeries;\n protected _dataBySeries;\n protected _origIdxMap;\n private _seriesBackgrounds;\n\n protected _maxFontSize;\n\n public _tooltip;\n\n public _minStart: number;\n public _maxEnd: number;\n\n protected _title_idx = 0;\n protected _startDate_idx = 1;\n protected _endDate_idx = 2;\n protected _icon_idx = -1;\n protected _color_idx = -1;\n protected _series_idx = -1;\n protected _bucket_idx = -1;\n protected _yoffset_idx = -1;\n\n protected _maxX: number;\n protected _maxY: number;\n\n private _rangeOptions: IRangeOptions = {\n rangePadding: 2,\n fontFamily: \"Verdana\",\n fontSize: 12,\n fill: \"white\",\n stroke: \"black\",\n textFill: \"black\",\n cornerRadius: 3,\n strokeWidth: 0\n };\n \n constructor(drawStartPosition: \"origin\" | \"center\" = \"origin\") {\n super();\n this._drawStartPos = drawStartPosition;\n\n this.showToolbar_default(false);\n\n this._tooltip = new HTMLTooltip();\n this._tooltip\n .tooltipHTML(d => {\n return `<div style=\"text-align:center;\">${d[0]}<br/><br/>${d[1]} -&gt; ${d[2]}</div>`;\n });\n this._tooltip\n .followCursor(true)\n ;\n }\n\n private _rangeRenderer: React.FunctionComponent = LabelledRect;\n rangeRenderer(): React.FunctionComponent;\n rangeRenderer(_: React.FunctionComponent): this;\n rangeRenderer(_?: React.FunctionComponent): this | React.FunctionComponent {\n if (!arguments.length) return this._rangeRenderer;\n this._rangeRenderer = _;\n return this._rangeRenderer;\n }\n\n enter(domNode, element){\n super.enter(domNode, element);\n\n const context = this;\n element\n .on(\"click\", function (this: SVGElement, d) {\n context._selection.clear();\n });\n\n this._tooltip.target(domNode);\n }\n update(domNode, element){\n super.update(domNode, element);\n\n this.zoomExtent([0.05, this.maxZoom()]);\n\n this._title_idx = this.titleColumn() !== null ? this.columns().indexOf(this.titleColumn()) : this._title_idx;\n this._startDate_idx = this.startDateColumn() !== null ? this.columns().indexOf(this.startDateColumn()) : this._startDate_idx;\n this._endDate_idx = this.endDateColumn() !== null ? this.columns().indexOf(this.endDateColumn()) : this._endDate_idx;\n this._icon_idx = this.iconColumn() !== null ? this.columns().indexOf(this.iconColumn()) : this._icon_idx;\n this._color_idx = this.colorColumn() !== null ? this.columns().indexOf(this.colorColumn()) : this._color_idx;\n this._series_idx = this.seriesColumn() !== null ? this.columns().indexOf(this.seriesColumn()) : this._series_idx;\n this._bucket_idx = this.bucketColumn() !== null ? this.columns().indexOf(this.bucketColumn()) : -1;\n\n const context = this;\n const w = this.width();\n\n const x0 = 0;\n const x1 = w;\n\n this._interpolateX = d3ScaleLinear()\n .domain([this._minStart, this._maxEnd])\n .range([x0, x1])\n ;\n \n this.data().sort((a, b)=>a[1]-b[1]);\n \n if(this._series_idx > -1) {\n this._origIdxMap = {};\n this._dataBySeries = {};\n this._bucketsBySeries = {};\n this.data().forEach((dataRow, origIdx)=>{\n const seriesKey = dataRow[this._series_idx];\n if(!this._dataBySeries[seriesKey]) {\n this._origIdxMap[seriesKey] = {};\n this._dataBySeries[seriesKey] = [];\n }\n this._dataBySeries[seriesKey].push({\n dataRow,\n origIdx\n });\n });\n const gutter = this.gutter();\n let bucketOffset = 0;\n const seriesKeys = Object.keys(this._dataBySeries);\n seriesKeys.forEach(seriesKey=>{\n this._dataBySeries[seriesKey].sort((a, b)=>a.dataRow[1]-b.dataRow[1]);\n this._bucketsBySeries[seriesKey] = this.calcBuckets(this._dataBySeries[seriesKey].map(n=>n.dataRow), 1, 2);\n this._bucketsBySeries[seriesKey].bucketHeight = this.bucketHeight();\n this._bucketsBySeries[seriesKey].bucketOffset = bucketOffset;\n bucketOffset += (this._bucketsBySeries[seriesKey].bucketHeight + this.strokeWidth() + this.gutter()) * (this._bucketsBySeries[seriesKey].maxBucket+1);\n this._dataBySeries[seriesKey].forEach((n, i) => {\n this._origIdxMap[seriesKey][n.origIdx] = i;\n });\n });\n this._seriesBackgrounds = this._renderElement.selectAll(\".series-background\")\n .data(seriesKeys.map(key=>{\n return this._bucketsBySeries[key];\n }))\n ;\n this._seriesBackgrounds\n .join(\n enter => enter.append(\"rect\")\n .attr(\"class\", \"series-background\"),\n update => update,\n exit => exit\n .each(function (d) {\n delete d.element;\n })\n .remove()\n )\n .attr(\"opacity\", d => d.props && d.props.hidden ? 0 : 1)\n .each(function (this: SVGGElement, d, i) {\n d3Select(this)\n .attr(\"x\", 0)\n .attr(\"y\", d.bucketOffset - (gutter/2))\n .attr(\"width\", w)\n .attr(\"height\", ((d.bucketHeight + gutter) * (d.maxBucket + 1)) + gutter)\n .attr(\"fill\", i%2 ? context.oddSeriesBackground() : context.evenSeriesBackground())\n ;\n });\n } else {\n if(this._bucket_idx !== -1){\n this._buckets = this.calcBuckets(this.data(), this._startDate_idx, this._endDate_idx, this._bucket_idx);\n } else {\n this._buckets = this.calcBuckets(this.data(), this._startDate_idx, this._endDate_idx);\n }\n }\n const interpedStart = this._interpolateX(this._minStart);\n \n this.zoomTo(\n [interpedStart, 0],\n 1\n );\n\n const bucketHeight = this.bucketHeight();\n\n this.setRangeOptions();\n\n this._maxFontScale = (bucketHeight - (this.rangePadding() * 2));\n this.measureDataText();\n\n const itemSelection = this._renderElement.selectAll(\".item\")\n .data(this.data())\n ;\n const borderOffset1 = this.strokeWidth();\n const borderOffset2 = borderOffset1 * 2;\n itemSelection\n .join(\n enter => enter.append(\"g\")\n .attr(\"class\", \"item\")\n .on(\"click.selectionBag\", function (d, i) {\n const _id = d.id === undefined ? i : d.id;\n if(context._selection.isSelected({_id, element: d.element})){\n context._selection.clear();\n } else {\n context._selection.click(\n {\n _id,\n element: () => d.element\n }, \n d3Event\n );\n }\n context.selectionChanged();\n d3Event().stopPropagation();\n })\n .on(\"click\", function (this: SVGElement, d) {\n const selected = d.element.classed(\"selected\");\n if(d[context.columns().length]){\n d.__lparam = d[context.columns().length];\n }\n context.click(d, \"\", selected);\n })\n .on(\"dblclick\", function (this: SVGElement, d) {\n const selected = d.element.classed(\"selected\");\n if(d[context.columns().length]){\n d.__lparam = d[context.columns().length];\n }\n context.click(d, \"\", selected);\n })\n .on(\"mousein\", function (d) {\n context.highlightItem(d3Select(this), d);\n const selected = d.element.classed(\"selected\");\n context.mousein(d, \"\", selected);\n })\n .on(\"mouseover\", function (d) {\n const d3evt = d3Event();\n context._tooltip._triggerElement = d.element;\n context._tooltip._cursorLoc = [\n d3evt.clientX,\n d3evt.clientY\n ];\n context._tooltip\n .data(d)\n .visible(true)\n .fitContent(true)\n .render()\n ;\n context.highlightItem(d3Select(this), d);\n const selected = d.element.classed(\"selected\");\n context.mouseover(d, \"\", selected);\n })\n .on(\"mouseout\", function (d) {\n context._tooltip\n .visible(false)\n .render()\n ;\n context.highlightItem(null, null);\n const selected = d.element.classed(\"selected\");\n context.mouseout(d, \"\", selected);\n })\n .each(function (d, i) {\n d.that = this;\n d.element = d3Select(this);\n d.x = context._interpolateX(d[1]);\n const endX = context._interpolateX(d[2]);\n if(context._series_idx > -1) {\n const seriesKey = d[context._series_idx];\n const bucket = context._bucketsBySeries[seriesKey].bucketMap[context._origIdxMap[seriesKey][i]];\n d.y = context._bucketsBySeries[seriesKey].interpolateY(bucket) + context._bucketsBySeries[seriesKey].bucketOffset;\n } else {\n const _i = context._bucket_idx === -1 ? i : d[context._bucket_idx];\n d.y = context._buckets.interpolateY(context._buckets.bucketMap[_i]);\n }\n d.props={\n ...d[3],\n text: d[0]\n };\n d.props.width = endX - d.x;\n d.props.height = bucketHeight;\n d.x += borderOffset1;\n d.y += borderOffset1;\n d.props.width -= borderOffset2;\n d.props.height -= borderOffset2;\n d.element.attr(\"transform\", `translate(${d.x+(d.props.width/2)} ${d.y+(d.props.height/2)})`);\n }),\n update => update,\n exit => exit\n .each(function (d) {\n delete d.element;\n })\n .remove()\n )\n .attr(\"opacity\", d => d.props && d.props.hidden ? 0 : 1)\n .each(function (this: SVGGElement, d, i) {\n d.that = this;\n if(context._series_idx > -1){\n const seriesKey = d[context._series_idx];\n d.x = context.renderRangeElement(d, i, false, context._rangeOptions, seriesKey);\n } else {\n d.x = context.renderRangeElement(d, i, false, context._rangeOptions);\n }\n })\n .on(\"dblclick.zoom\", d => {\n const x1 = this._interpolateX(d[1]);\n const x2 = this._interpolateX(d[2]);\n const xRange = x2 - x1;\n const xScale = w / xRange;\n this.zoomTo(\n [\n -x1 * xScale,\n 0\n ],\n xScale\n );\n })\n ;\n element.on(\"dblclick.zoom\", null);\n }\n renderRangeElement(d, i, transformEach = false, options: any = {}, seriesKey?: string) {\n const borderOffset1 = options.strokeWidth;\n const borderOffset2 = borderOffset1 * 2;\n const padding = options.rangePadding;\n let endX;\n const x = isNaN(this._transform.x) ? 0 : this._transform.x;\n const k = isNaN(this._transform.k) ? 1 : this._transform.k;\n let b;\n const bucketHeight = this.bucketHeight();\n d.that.setAttribute(\"data-series\", seriesKey);\n\n if(this._color_idx > -1){\n d.that.setAttribute(\"data-color\", d[this._color_idx]);\n }\n \n if(seriesKey !== undefined) {\n b = this._bucketsBySeries[seriesKey].bucketMap[this._origIdxMap[seriesKey][i]];\n d.that.setAttribute(\"data-b\", b);\n d.that.setAttribute(\"data-bucketOffset\", this._bucketsBySeries[seriesKey].bucketOffset);\n d.y = this._bucketsBySeries[seriesKey].interpolateY(b) + this._bucketsBySeries[seriesKey].bucketOffset;\n d.that.setAttribute(\"data-dy\", d.y);\n } else {\n b = this._buckets.bucketMap[i];\n d.y = this._buckets.interpolateY(b);\n }\n if(this._color_idx > -1) {\n options.fill = d[this._color_idx];\n }\n if (!transformEach) {\n d.x = this._interpolateX(d[1]);\n endX = this._interpolateX(d[2]);\n d.props={\n ...d[3],\n text: d[0]\n };\n d.props.width = (endX - d.x) / k;\n } else {\n d.x = this._interpolateX(d[1]) * k;\n endX = this._interpolateX(d[2]) * k;\n d.props={\n ...d[3],\n text: d[0]\n };\n d.props.width = (endX - d.x)/k;\n d.x += x;\n d.props.width *= k;\n }\n d.props.height = bucketHeight;\n if(seriesKey === undefined && this._buckets.bucketScale < 1) {\n d.props.height = this._buckets.bucketScale * bucketHeight;\n }\n if(d.element === undefined && d.that){\n d.element = d3Select(d.that);\n }\n d.element.attr(\"transform\", `translate(${d.x+(d.props.width/2)} ${d.y+(d.props.height/2)})`);\n \n d.x += borderOffset1;\n d.y += borderOffset1;\n d.props.width -= borderOffset2;\n d.props.height -= borderOffset2;\n d.props.width = d.props.width < 1 ? 1 : d.props.width;\n d.props.height = d.props.height < 1 ? 1 : d.props.height;\n\n let text = this.truncateText(d.props.text, d.props.width - padding, this._maxFontScale);\n \n if(text !== d.props.text){\n text = this.truncateText(d.props.text, d.props.width - padding);\n } else {\n d.props.fontSize = this._maxFontScale * options.fontSize;\n }\n if(seriesKey === undefined && this._buckets.bucketScale < 1) {\n d.props.fontSize = Math.min(this._maxFontScale, this._buckets.bucketScale) * options.fontSize;\n }\n if(!this._maxY || this._maxY < d.y + d.props.height) {\n this._maxY = d.y + d.props.height;\n }\n if(!this._maxX || this._maxX < d.x + d.props.width) {\n this._maxX = d.x + d.props.width;\n }\n render(\n this._rangeRenderer,\n {\n ...options,\n ...d.props,\n text,\n },\n d.that\n );\n }\n\n setRangeOptions(){\n this._rangeOptions = {\n rangePadding: this.rangePadding(),\n fontFamily: this.fontFamily(),\n fontSize: this.fontSize(),\n strokeWidth: this.strokeWidth(),\n fill: this.fill(),\n stroke: this.stroke(),\n textFill: this.rangeFontColor(),\n cornerRadius: this.cornerRadius(),\n };\n }\n \n public _transform = {k:1, x:0, y:0};\n zoomed(transform) {\n this._transform = transform;\n switch(this.renderMode()){\n case \"scale-all\": \n this._zoomScale = transform.k;\n this._zoomTranslate = [transform.x, 0];\n this._zoomG.attr(\"transform\", `translate(${transform.x} ${0})scale(${transform.k} 1)`);\n break;\n default:\n const options = this._rangeOptions;\n this.data().forEach((d, i)=>{\n if(this._color_idx > -1){\n options.fill = d[this._color_idx];\n }\n if(this._series_idx > -1){\n const seriesKey = d[this._series_idx];\n this.renderRangeElement(d, i, true, options, seriesKey);\n } else {\n this.renderRangeElement(d, i, true, options);\n }\n });\n }\n\n this.zoomedHook(transform);\n }\n\n zoomedHook(transform) {\n\n }\n\n private calcBuckets(data, startKey: string | number, endKey: string | number, bucketKey?: string | number) {\n const bucketMap = {};\n const bucketKeyMap = {};\n const tol = this.overlapTolerence();\n const buckets = [{end:-Infinity}];\n let maxBucket = 0;\n if(bucketKey !== undefined) {\n data.forEach((d, i)=>{\n bucketMap[i] = d[bucketKey];\n bucketKeyMap[d[bucketKey]] = true;\n });\n maxBucket = Object.keys(bucketKeyMap).length;\n } else {\n data.forEach((d, i)=>{\n for (let i2 = 0; i2 < buckets.length; ++i2) {\n if (i === 0 || buckets[i2][endKey] + tol <= d[startKey]) {\n bucketMap[i] = i2;\n if(maxBucket < i2)maxBucket = i2;\n buckets[i2][endKey] = d[endKey];\n break;\n }\n }\n if(bucketMap[i] === undefined){\n bucketMap[i] = buckets.length;\n const b = {};\n b[endKey] = d[endKey];\n buckets.push(b as any);\n }\n \n if(maxBucket < bucketMap[i])maxBucket = bucketMap[i];\n });\n }\n const height = (maxBucket+1) * (this.bucketHeight() + this.gutter());\n return {\n bucketMap,\n maxBucket,\n bucketScale: this.height() / height,\n interpolateY: d3ScaleLinear()\n .domain([0, maxBucket+1])\n .range([0, Math.min(this.height(), height)])\n };\n }\n\n data(): IGanttData[];\n data(_: IGanttData[]): this;\n data(_?: IGanttData[]): this | IGanttData[] {\n const retVal = super.data.apply(this, arguments);\n if(arguments.length > 0) {\n this._minStart = Math.min(...this.data().map(n=>n[1])) ?? 0;\n this._maxEnd = Math.max(...this.data().map(n=>n[2])) ?? 1;\n this.measureDataText(true);\n }\n return retVal;\n }\n \n protected _textWidths;\n protected _maxFontScale;\n protected _characterWidths;\n protected _prevFontFamily;\n protected _prevFontSize;\n measureDataText(forceMeasure = false) {\n const textWidths = {};\n const characterWidths = {};\n const fontFamily = this.fontFamily();\n const fontSize = this.fontSize();\n const bucketHeight = this.bucketHeight();\n\n if(bucketHeight){\n this._maxFontScale = (bucketHeight - (this.rangePadding() * 2)) / fontSize;\n }\n\n if(forceMeasure || this._prevFontFamily !== fontFamily || this._prevFontSize !== fontSize) {\n characterWidths[\".\"] = Utility.textSize(\".\", fontFamily, fontSize).width;\n this.data().forEach(d=>{\n if(!textWidths[d[0]]){\n textWidths[d[0]] = Utility.textSize(d[0], fontFamily, fontSize).width;\n }\n d[0].split(\"\").forEach(char=>{\n if(!characterWidths[char]){\n characterWidths[char] = Utility.textSize(char, fontFamily, fontSize).width;\n }\n });\n });\n this._textWidths = textWidths;\n this._characterWidths = characterWidths;\n }\n this._prevFontFamily = fontFamily;\n this._prevFontSize = fontSize;\n }\n\n truncateText(text, width, scale = 1) {\n const textFits = this._textWidths[text] * scale < width;\n if(textFits){\n return text;\n }\n let ret = \"\";\n let sum = 0;\n const _width = width - (this._characterWidths[\".\"] * 3);\n for(const char of text){\n sum += this._characterWidths[char];\n if(sum < _width){\n ret += char;\n } else {\n break;\n }\n }\n return _width < 0 ? \"\" : ret + \"...\";\n }\n\n resize(_size?: { width: number, height: number }) {\n let retVal;\n if(this.fitWidthToContent() || this.fitHeightToContent()) {\n retVal = super.resize.call(this, {\n width: _size.width,\n height: this._maxY\n });\n } else {\n retVal = super.resize.apply(this, arguments);\n }\n return retVal;\n }\n\n selectionChanged() {\n \n }\n \n highlightItem(_element, d) {\n \n }\n\n click(row, _col, sel) {\n \n }\n\n dblclick(row, _col, sel) {\n \n }\n\n mousein(row, _col, sel) {\n }\n\n mouseover(row, _col, sel) {\n }\n\n mouseout(row, _col, sel) {\n }\n}\nReactGantt.prototype._class += \" timeline_ReactGantt\";\n\nexport interface ReactGantt {\n titleColumn(): string;\n titleColumn(_: string): this;\n startDateColumn(): string;\n startDateColumn(_: string): this;\n endDateColumn(): string;\n endDateColumn(_: string): this;\n iconColumn(): string;\n iconColumn(_: string): this;\n colorColumn(): string;\n colorColumn(_: string): this;\n seriesColumn(): string;\n seriesColumn(_: string): this;\n bucketColumn(): string;\n bucketColumn(_: string): this;\n overlapTolerence(): number;\n overlapTolerence(_: number): this;\n smallestRangeWidth(): number;\n smallestRangeWidth(_: number): this;\n bucketHeight(): number;\n bucketHeight(_: number): this;\n gutter(): number;\n gutter(_: number): this;\n showToolbar_default(_: boolean): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n strokeWidth(): number;\n strokeWidth(_: number): this;\n stroke(): string;\n stroke(_: string): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n fill(): string;\n fill(_: string): this;\n rangeFontColor(): string;\n rangeFontColor(_: string): this;\n rangePadding(): number;\n rangePadding(_: number): this;\n renderMode(): \"default\" | \"scale-all\";\n renderMode(_: \"default\" | \"scale-all\"): this;\n maxZoom(): number;\n maxZoom(_: number): this;\n fitWidthToContent(): boolean;\n fitWidthToContent(_: boolean): this;\n fitHeightToContent(): boolean;\n fitHeightToContent(_: boolean): this;\n evenSeriesBackground(): string;\n evenSeriesBackground(_: string): this;\n oddSeriesBackground(): string;\n oddSeriesBackground(_: string): this;\n}\n\nReactGantt.prototype.publish(\"fitWidthToContent\", false, \"boolean\", \"If true, resize will simply reapply the bounding box width\");\nReactGantt.prototype.publish(\"fitHeightToContent\", false, \"boolean\", \"If true, resize will simply reapply the bounding box height\");\nReactGantt.prototype.publish(\"titleColumn\", null, \"string\", \"Column name to for the title\");\nReactGantt.prototype.publish(\"startDateColumn\", null, \"string\", \"Column name to for the start date\");\nReactGantt.prototype.publish(\"endDateColumn\", null, \"string\", \"Column name to for the end date\");\nReactGantt.prototype.publish(\"iconColumn\", null, \"string\", \"Column name to for the icon\");\nReactGantt.prototype.publish(\"colorColumn\", null, \"string\", \"Column name to for the color\");\nReactGantt.prototype.publish(\"seriesColumn\", null, \"string\", \"Column name to for the series identifier\");\nReactGantt.prototype.publish(\"bucketColumn\", null, \"string\", \"Column name to for the bucket identifier\");\nReactGantt.prototype.publish(\"renderMode\", \"default\", \"set\", \"Render modes vary in features and performance\", [\"default\", \"scale-all\"]);\nReactGantt.prototype.publish(\"rangePadding\", 3, \"number\", \"Padding within each range rectangle (pixels)\");\nReactGantt.prototype.publish(\"fill\", \"#1f77b4\", \"string\", \"Background color of range rectangle\");\nReactGantt.prototype.publish(\"stroke\", null, \"string\", \"Color of range rectangle border\");\nReactGantt.prototype.publish(\"strokeWidth\", null, \"number\", \"Width of range rectangle border (pixels)\");\nReactGantt.prototype.publish(\"cornerRadius\", 3, \"number\", \"Space between range buckets (pixels)\");\nReactGantt.prototype.publish(\"fontFamily\", null, \"string\", \"Font family within range rectangle\", null, {optional:true});\nReactGantt.prototype.publish(\"fontSize\", 10, \"number\", \"Size of font within range rectangle (pixels)\");\nReactGantt.prototype.publish(\"rangeFontColor\", \"#ecf0f1\", \"html-color\", \"rangeFontColor\");\nReactGantt.prototype.publish(\"overlapTolerence\", 2, \"number\", \"overlapTolerence\");\nReactGantt.prototype.publish(\"smallestRangeWidth\", 10, \"number\", \"Width of the shortest range (pixels)\");\nReactGantt.prototype.publish(\"bucketHeight\", 100, \"number\", \"Max height of range element (pixels)\");\nReactGantt.prototype.publish(\"gutter\", 2, \"number\", \"Space between range buckets (pixels)\");\nReactGantt.prototype.publish(\"maxZoom\", 16, \"number\", \"Maximum zoom\");\nReactGantt.prototype.publish(\"evenSeriesBackground\", \"#FFFFFF\", \"html-color\", \"Background color of even series rows\");\nReactGantt.prototype.publish(\"oddSeriesBackground\", \"#DDDDDD\", \"html-color\", \"Background color of odd series rows\");\n","import { Axis } from \"@hpcc-js/chart\";\nimport { SVGWidget } from \"@hpcc-js/common\";\nimport { ReactGantt } from \"./ReactGantt\";\n\nexport type IAxisGanttData = [ string, number | string, number | string, any? ] | any[];\n\nexport class ReactAxisGantt extends SVGWidget {\n\n protected _topAxis: Axis = new Axis(\"center\")\n .orientation(\"top\")\n .type(\"linear\")\n .shrinkToFit(\"none\")\n .overlapMode(\"hide\")\n .extend(0)\n .tickFormat(\"d\")\n ;\n protected _gantt: ReactGantt = new ReactGantt(\"center\")\n .stroke(\"#000000\")\n ;\n protected _bottomAxis: Axis = new Axis(\"center\")\n .orientation(\"bottom\")\n .type(\"linear\")\n .shrinkToFit(\"none\")\n .overlapMode(\"hide\")\n .extend(0)\n .tickFormat(\"d\")\n ;\n \n protected _topAxisElement;\n protected _contentElement;\n protected _bottomAxisElement;\n protected _topRect;\n protected _contentRect;\n protected _bottomRect;\n\n protected rangeRenderer;\n\n constructor(){\n super();\n this._drawStartPos = \"origin\";\n this.rangeRenderer = function () {\n const ret = this._gantt.rangeRenderer.apply(this._gantt, arguments);\n if(!arguments.length)return ret;\n return this;\n };\n }\n\n resizeWrappers() {\n\n const w = this.width();\n const h = this.height();\n\n const axisHeight = this.axisHeight(); //TODO: Dynamic scaling to allow for small resolutions?\n \n const contentHeight = (h - (axisHeight * 2));\n const borderOffset1 = this.strokeWidth();\n this._topRect\n .attr(\"height\", axisHeight)\n .attr(\"width\", w)\n .attr(\"fill\", \"transparent\")\n ;\n this._topAxisElement.attr(\"transform\", \"translate(0 0)\");\n this._topAxis.resize({height:axisHeight, width:w});\n this._contentRect\n .attr(\"height\", contentHeight)\n .attr(\"width\", w)\n .attr(\"fill\", \"transparent\")\n ;\n this._contentElement.attr(\"transform\", `translate(0 ${axisHeight + borderOffset1})`);\n this._gantt.resize({height:contentHeight, width:w});\n this._bottomRect\n .attr(\"height\", axisHeight)\n .attr(\"width\", w)\n .attr(\"fill\", \"transparent\")\n ;\n this._bottomAxisElement.attr(\"transform\", `translate(0 ${axisHeight + contentHeight + borderOffset1})`);\n this._bottomAxis.resize({height:axisHeight, width:w});\n }\n\n enter(domNode, element){\n super.enter(domNode, element);\n\n this._gantt.click = (row, col, sel) => {\n this.click(row, col, sel);\n };\n\n this._gantt.dblclick = (row, col, sel) => {\n this.dblclick(row, col, sel);\n };\n\n this._topAxisElement = element.append(\"g\")\n .attr(\"class\", \"top-axis-wrapper\")\n ;\n this._topRect = this._topAxisElement.append(\"rect\")\n .attr(\"class\", \"top-axis-rect\")\n ;\n this._contentElement = element.append(\"g\")\n .attr(\"class\", \"content-wrapper\")\n ;\n this._contentRect = this._contentElement.append(\"rect\")\n .attr(\"class\", \"content-rect\")\n ;\n this._bottomAxisElement = element.append(\"g\")\n .attr(\"class\", \"bottom-axis-wrapper\")\n ;\n this._bottomRect = this._bottomAxisElement.append(\"rect\")\n .attr(\"class\", \"top-axis-rect\")\n ;\n this._topAxis.target(this._topAxisElement.node());\n this._gantt.target(this._contentElement.node()).bucketHeight(30);\n this._bottomAxis.target(this._bottomAxisElement.node());\n\n this.resizeWrappers();\n\n this._gantt.zoomedHook = (transform) => {\n this.onzoom(transform);\n };\n }\n\n onzoom(transform) {\n\n const w = this.width();\n const low = this._gantt._minStart;\n const high = this._gantt._maxEnd;\n const range = high - low;\n const wpp = range / w;\n const nextLow = Math.floor(low - (wpp * (transform.x / transform.k)));\n const nextHigh = Math.ceil((range / transform.k) + nextLow);\n\n this._topAxis\n .fontFamily(this.axisFontFamily())\n .fontSize(this.axisFontSize())\n .tickLength(this.axisTickLength())\n .low(nextLow)\n .high(nextHigh)\n .render()\n ;\n this._bottomAxis\n .fontFamily(this.axisFontFamily())\n .fontSize(this.axisFontSize())\n .tickLength(this.axisTickLength())\n .low(nextLow)\n .high(nextHigh)\n .render()\n ;\n }\n\n update(domNode, element){\n super.update(domNode, element);\n this._topAxis.tickFormat(this.tickFormat()).render();\n this._bottomAxis.tickFormat(this.tickFormat()).render();\n this._gantt.render();\n }\n\n columns(): string[];\n columns(_: string[]): this;\n columns(_?: string[]): this | string[] {\n const retVal = super.columns.apply(this, arguments);\n if(arguments.length > 0) {\n this._gantt.columns(_);\n }\n return retVal;\n }\n\n data(): IAxisGanttData[];\n data(_: IAxisGanttData[]): this;\n data(_?: IAxisGanttData[]): this | IAxisGanttData[] {\n const retVal = super.data.apply(this, arguments);\n if(arguments.length > 0) {\n const ganttData: any[] = this.data().map(n=>{\n const ret = [...n];\n ret[1] = isNaN(n[1] as any) ? new Date(n[1]).getTime() : Number(n[1]);\n ret[2] = isNaN(n[2] as any) ? new Date(n[2]).getTime() : Number(n[2]);\n return ret;\n });\n this._gantt._minStart = Math.min(...ganttData.map(n=>n[1])) ?? 0;\n this._gantt._maxEnd = Math.max(...ganttData.map(n=>n[2])) ?? 1;\n this._gantt.data(ganttData);\n }\n return retVal;\n }\n\n resize(_size?: { width: number, height: number }) {\n const retVal = super.resize.apply(this, arguments);\n\n if(this._topAxisElement){\n this.resizeWrappers();\n }\n\n return retVal;\n }\n\n click(row, col, sel) {\n\n }\n\n dblclick(row, col, sel) {\n \n }\n \n tooltip() {\n return this._gantt._tooltip;\n }\n}\nReactAxisGantt.prototype._class += \" timeline_ReactAxisGantt\";\n\nexport interface ReactAxisGantt {\n tickFormat(): string;\n tickFormat(_: string): this;\n tickFormat_exists(): boolean;\n overlapTolerence(): number;\n overlapTolerence(_: number): this;\n smallestRangeWidth(): number;\n smallestRangeWidth(_: number): this;\n scaleMode(): boolean;\n scaleMode(_: boolean): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n strokeWidth(): number;\n strokeWidth(_: number): this;\n stroke(): string;\n stroke(_: string): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n axisFontSize(): number;\n axisFontSize(_: number): this;\n axisFontFamily(): string;\n axisFontFamily(_: string): this;\n axisTickLength(): number;\n axisTickLength(_: number): this;\n axisHeight(): number;\n axisHeight(_: number): this;\n titleColumn(): string;\n titleColumn(_: string): this;\n startDateColumn(): string;\n startDateColumn(_: string): this;\n endDateColumn(): string;\n endDateColumn(_: string): this;\n iconColumn(): string;\n iconColumn(_: string): this;\n colorColumn(): string;\n colorColumn(_: string): this;\n bucketColumn(): string;\n bucketColumn(_: string): this;\n maxZoom(): number;\n maxZoom(_: number): this;\n}\nReactAxisGantt.prototype.publish(\"tickFormat\", null, \"string\", \"Format rule applied to axis tick labels\", undefined, { optional: true });\nReactAxisGantt.prototype.publish(\"axisHeight\", 22, \"number\", \"Height of axes (pixels)\");\nReactAxisGantt.prototype.publish(\"overlapTolerence\", 2, \"number\", \"overlapTolerence\");\nReactAxisGantt.prototype.publish(\"smallestRangeWidth\", 10, \"number\", \"Width of the shortest range (pixels)\");\nReactAxisGantt.prototype.publish(\"axisFontSize\", null, \"number\", \"Font size of axis tick labels\");\nReactAxisGantt.prototype.publish(\"axisFontFamily\", null, \"string\", \"Font family of axis tick labels\");\nReactAxisGantt.prototype.publish(\"axisTickLength\", null, \"number\", \"Length of axis ticks\");\nReactAxisGantt.prototype.publishProxy(\"gutter\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"renderMode\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"strokeWidth\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"fontSize\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"fontFamily\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"stroke\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"cornerRadius\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"titleColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"startDateColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"endDateColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"iconColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"colorColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"bucketColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"maxZoom\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"bucketHeight\", \"_gantt\");\n","import { min as d3Min, max as d3Max } from \"d3-array\";\nimport { Axis } from \"@hpcc-js/chart\";\nimport { Border2 } from \"@hpcc-js/layout\";\nimport { ReactGantt } from \"./ReactGantt\";\nimport { IAxisGanttData } from \"./ReactAxisGantt\";\nimport { React } from \"@hpcc-js/react\";\n\nexport class ReactAxisGanttSeries extends Border2 {\n\n protected _topAxis: Axis = new Axis(\"origin\")\n .orientation(\"top\")\n .type(\"linear\")\n .shrinkToFit(\"none\")\n .overlapMode(\"hide\")\n .extend(0)\n .tickFormat(\"d\")\n ;\n protected _gantt: ReactGantt = new ReactGantt(\"origin\")\n .stroke(\"#000000\")\n .fitHeightToContent(true)\n ;\n protected _bottomAxis: Axis = new Axis(\"origin\")\n .orientation(\"bottom\")\n .type(\"linear\")\n .shrinkToFit(\"none\")\n .overlapMode(\"hide\")\n .extend(0)\n .tickFormat(\"d\")\n ;\n\n protected _topAxisElement;\n protected _contentElement;\n protected _bottomAxisElement;\n protected _topRect;\n protected _contentRect;\n protected _bottomRect;\n\n constructor() {\n super();\n this.centerOverflowX_default(\"hidden\");\n this.centerOverflowY_default(\"auto\");\n }\n\n rangeRenderer(): React.FunctionComponent;\n rangeRenderer(_: React.FunctionComponent): this;\n rangeRenderer(_?: React.FunctionComponent): this | React.FunctionComponent {\n const ret = this._gantt.rangeRenderer.apply(this._gantt, arguments);\n if (!arguments.length) return ret;\n return this;\n }\n\n resizeWrappers() {\n\n const w = this.width();\n const h = this.height();\n\n const axisHeight = this.axisHeight(); //TODO: Dynamic scaling to allow for small resolutions?\n const contentHeight = (h - (axisHeight * 2));\n\n this.bottomHeight(axisHeight);\n\n this._topWA.resize({\n width: w,\n height: axisHeight\n });\n this._centerWA.resize({\n width: w,\n height: contentHeight\n });\n this._bottomWA.resize({\n width: w,\n height: axisHeight\n });\n this.top().render();\n this.bottom().render();\n this.center().render();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._gantt.click = (row, col, sel) => {\n this.click(row, col, sel);\n };\n\n this._gantt.dblclick = (row, col, sel) => {\n this.dblclick(row, col, sel);\n };\n\n this.top(this._topAxis);\n this.center(this._gantt);\n this.bottom(this._bottomAxis);\n\n this.resizeWrappers();\n\n this._gantt.zoomedHook = (transform) => {\n this.onzoom(transform);\n };\n }\n\n onzoom(transform) {\n const w = this.width();\n const low = this._gantt._minStart;\n const high = this._gantt._maxEnd;\n const range = high - low;\n const wpp = range / w;\n const nextLow = Math.floor(low - (wpp * (transform.x / transform.k)));\n const nextHigh = Math.ceil((range / transform.k) + nextLow);\n\n this._topAxis\n .fontFamily(this.axisFontFamily())\n .fontSize(this.axisFontSize())\n .tickLength(this.axisTickLength())\n .low(nextLow)\n .high(nextHigh)\n .lazyRender()\n ;\n this._bottomAxis\n .fontFamily(this.axisFontFamily())\n .fontSize(this.axisFontSize())\n .tickLength(this.axisTickLength())\n .low(nextLow)\n .high(nextHigh)\n .lazyRender()\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._topAxis.tickFormat(this.tickFormat()).render();\n this._bottomAxis.tickFormat(this.tickFormat()).render();\n this._gantt.render();\n }\n\n columns(): string[];\n columns(_: string[]): this;\n columns(_?: string[]): this | string[] {\n const retVal = super.columns.apply(this, arguments);\n if (arguments.length > 0) {\n this._gantt.columns(_);\n }\n return retVal;\n }\n\n data(): IAxisGanttData[];\n data(_: IAxisGanttData[]): this;\n data(_?: IAxisGanttData[]): this | IAxisGanttData[] {\n const retVal = super.data.apply(this, arguments);\n if (arguments.length > 0) {\n const ganttData: any[] = this.data().map(n => {\n const ret = [...n];\n ret[1] = isNaN(n[1] as any) ? new Date(n[1]).getTime() : Number(n[1]);\n ret[2] = isNaN(n[2] as any) ? new Date(n[2]).getTime() : Number(n[2]);\n return ret;\n });\n\n this._gantt._minStart = d3Min(ganttData, n => n[1]);\n this._gantt._maxEnd = d3Max(ganttData, n => n[2]);\n this._gantt.data(ganttData);\n }\n return retVal;\n }\n\n resize(_size?: { width: number, height: number }) {\n const retVal = super.resize.apply(this, arguments);\n\n if (this._topAxisElement) {\n this.resizeWrappers();\n }\n\n return retVal;\n }\n\n click(row, col, sel) {\n\n }\n\n dblclick(row, col, sel) {\n\n }\n\n tooltip() {\n return this._gantt._tooltip;\n }\n}\nReactAxisGanttSeries.prototype._class += \" timeline_ReactAxisGanttSeries\";\n\nexport interface ReactAxisGanttSeries {\n tickFormat(): string;\n tickFormat(_: string): this;\n tickFormat_exists(): boolean;\n overlapTolerence(): number;\n overlapTolerence(_: number): this;\n smallestRangeWidth(): number;\n smallestRangeWidth(_: number): this;\n scaleMode(): boolean;\n scaleMode(_: boolean): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n strokeWidth(): number;\n strokeWidth(_: number): this;\n stroke(): string;\n stroke(_: string): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n axisFontSize(): number;\n axisFontSize(_: number): this;\n axisFontFamily(): string;\n axisFontFamily(_: string): this;\n axisTickLength(): number;\n axisTickLength(_: number): this;\n axisHeight(): number;\n axisHeight(_: number): this;\n titleColumn(): string;\n titleColumn(_: string): this;\n startDateColumn(): string;\n startDateColumn(_: string): this;\n endDateColumn(): string;\n endDateColumn(_: string): this;\n iconColumn(): string;\n iconColumn(_: string): this;\n colorColumn(): string;\n colorColumn(_: string): this;\n seriesColumn(): string;\n seriesColumn(_: string): this;\n bucketColumn(): string;\n bucketColumn(_: string): this;\n maxZoom(): number;\n maxZoom(_: number): this;\n}\nReactAxisGanttSeries.prototype.publish(\"tickFormat\", null, \"string\", \"Format rule applied to axis tick labels\", undefined, { optional: true });\nReactAxisGanttSeries.prototype.publish(\"axisHeight\", 22, \"number\", \"Height of axes (pixels)\");\nReactAxisGanttSeries.prototype.publish(\"overlapTolerence\", 2, \"number\", \"overlapTolerence\");\nReactAxisGanttSeries.prototype.publish(\"smallestRangeWidth\", 10, \"number\", \"Width of the shortest range (pixels)\");\nReactAxisGanttSeries.prototype.publish(\"axisFontSize\", null, \"number\", \"Font size of axis tick labels\");\nReactAxisGanttSeries.prototype.publish(\"axisFontFamily\", null, \"string\", \"Font family of axis tick labels\");\nReactAxisGanttSeries.prototype.publish(\"axisTickLength\", null, \"number\", \"Length of axis ticks\");\nReactAxisGanttSeries.prototype.publishProxy(\"gutter\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"renderMode\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"strokeWidth\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"fontSize\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"fontFamily\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"stroke\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"cornerRadius\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"titleColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"startDateColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"endDateColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"iconColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"colorColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"seriesColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"bucketColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"maxZoom\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"evenSeriesBackground\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"oddSeriesBackground\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"bucketHeight\", \"_gantt\");\n","import { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\nimport { ReactAxisGantt } from \"./ReactAxisGantt\";\n\nexport class ReactTimeline extends ReactAxisGantt {\n\n protected _axisLabelFormatter;//TODO: add a type to this? d3 time formatting function type?\n\n constructor(){\n super();\n this._drawStartPos = \"origin\";\n this._topAxis.type(\"time\");\n this._bottomAxis.type(\"time\");\n\n this.tooltipHTML((d: any) => {\n const parser = d3TimeParse(\"%Q\");\n const startTime = parser(d[1]);\n const endTime = parser(d[2]);\n\n const formatter = d3TimeFormat(this.tooltipTimeFormat());\n return `<div style=\"text-align:center;\">${d[0]}<br/><br/>${formatter(startTime)} -&gt; ${formatter(endTime)}</div>`;\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n if(this.timePattern_exists()) {\n\n let minTimestamp = Infinity;\n let maxTimestamp = -Infinity;\n let lowDateStr = \"\";\n let highDateStr = \"\";\n this.data().map(n=>{\n const start = new Date(n[1]).getTime();\n const end = new Date(n[2]).getTime();\n if(minTimestamp > start){\n minTimestamp = start;\n lowDateStr = \"\" + n[1];\n }\n if(maxTimestamp < end){\n maxTimestamp = end;\n highDateStr = \"\" + n[2];\n }\n });\n this._topAxis\n .type(\"time\")\n .timePattern(this.timePattern())\n .overlapMode(\"none\")\n .tickFormat(this._axisLabelFormatter)\n .low(lowDateStr)\n .high(highDateStr)\n ;\n this._bottomAxis\n .type(\"time\")\n .timePattern(this.timePattern())\n .overlapMode(\"none\")\n .tickFormat(this._axisLabelFormatter)\n .low(lowDateStr)\n .high(highDateStr)\n ;\n this._gantt._minStart = minTimestamp;\n this._gantt._maxEnd = maxTimestamp;\n }\n }\n\n tooltipHTML(callback) {\n this._tooltipHTML = callback;\n this.tooltip().tooltipHTML(this._tooltipHTML);\n return this;\n }\n\n parseAxisValue(v) {\n const parseTime = d3TimeParse(\"%Q\");\n const parsedTime = parseTime(v);\n\n const formatTime = d3TimeFormat(this.timePattern());\n return formatTime(parsedTime);\n }\n\n onzoom(transform) {\n \n const w = this.width();\n const low = this._gantt._minStart;\n const high = this._gantt._maxEnd;\n const range = high - low;\n const wpp = range / w;\n const nextLow = Math.floor(low - (wpp * (transform.x / transform.k)));\n const nextHigh = Math.ceil((range / transform.k) + nextLow);\n\n this._topAxis\n .low(this.parseAxisValue(nextLow))\n .high(this.parseAxisValue(nextHigh))\n .render()\n ;\n this._bottomAxis\n .low(this.parseAxisValue(nextLow))\n .high(this.parseAxisValue(nextHigh))\n .render()\n ;\n }\n\n _tooltipHTML: (_) => string;\n}\nReactTimeline.prototype._class += \" timeline_ReactTimeline\";\n\nexport interface ReactTimeline {\n timePattern(): string;\n timePattern(_: string): this;\n timePattern_exists(): boolean;\n tooltipTimeFormat(): string;\n tooltipTimeFormat(_: string): this;\n}\nReactTimeline.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\", \"Time pattern used for parsing datetime strings on each data row\", null, {optional:true});\nReactTimeline.prototype.publish(\"tooltipTimeFormat\", \"%Y-%m-%d\", \"string\", \"Time format used in the default html tooltip\");\n\n","import { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\nimport { ReactAxisGanttSeries } from \"./ReactAxisGanttSeries\";\n\nconst parseTime = d3TimeParse(\"%Q\");\nexport class ReactTimelineSeries extends ReactAxisGanttSeries {\n\n protected _axisLabelFormatter;//TODO: add a type to this? d3 time formatting function type?\n\n constructor(){\n super();\n this._topAxis.type(\"time\");\n this._bottomAxis.type(\"time\");\n\n this.tooltipHTML((d: any) => {\n const startTime = parseTime(d[1]);\n const endTime = parseTime(d[2]);\n\n const formatter = d3TimeFormat(this.tooltipTimeFormat());\n return `<div style=\"text-align:center;\">${d[0]}<br/><br/>${formatter(startTime)} -&gt; ${formatter(endTime)}</div>`;\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n if(this.timePattern_exists()) {\n\n let minTimestamp = Infinity;\n let maxTimestamp = -Infinity;\n let lowDateStr = \"\";\n let highDateStr = \"\";\n this.data().forEach(n=>{\n const start = new Date(n[1]).getTime();\n const end = new Date(n[2]).getTime();\n if(minTimestamp > start){\n minTimestamp = start;\n lowDateStr = \"\" + n[1];\n }\n if(maxTimestamp < end){\n maxTimestamp = end;\n highDateStr = \"\" + n[2];\n }\n });\n this._topAxis\n .type(\"time\")\n .timePattern(this.timePattern())\n .overlapMode(\"none\")\n .tickFormat(this._axisLabelFormatter)\n .low(lowDateStr)\n .high(highDateStr)\n ;\n this._bottomAxis\n .type(\"time\")\n .timePattern(this.timePattern())\n .overlapMode(\"none\")\n .tickFormat(this._axisLabelFormatter)\n .low(lowDateStr)\n .high(highDateStr)\n ;\n this._gantt._minStart = minTimestamp;\n this._gantt._maxEnd = maxTimestamp;\n }\n }\n\n tooltipHTML(callback) {\n this._tooltipHTML = callback;\n this.tooltip().tooltipHTML(this._tooltipHTML);\n return this;\n }\n\n parseAxisValue(v) {\n const parsedTime = parseTime(v);\n\n const formatTime = d3TimeFormat(this.timePattern());\n return formatTime(parsedTime);\n }\n\n onzoom(transform) {\n \n const w = this.width();\n const low = this._gantt._minStart;\n const high = this._gantt._maxEnd;\n const range = high - low;\n const wpp = range / w;\n const nextLow = Math.floor(low - (wpp * (transform.x / transform.k)));\n const nextHigh = Math.ceil((range / transform.k) + nextLow);\n\n this._topAxis\n .low(this.parseAxisValue(nextLow))\n .high(this.parseAxisValue(nextHigh))\n .render()\n ;\n this._bottomAxis\n .low(this.parseAxisValue(nextLow))\n .high(this.parseAxisValue(nextHigh))\n .render()\n ;\n }\n\n _tooltipHTML: (_) => string;\n}\nReactTimelineSeries.prototype._class += \" timeline_ReactTimelineSeries\";\n\nexport interface ReactTimelineSeries {\n timePattern(): string;\n timePattern(_: string): this;\n timePattern_exists(): boolean;\n tooltipTimeFormat(): string;\n tooltipTimeFormat(_: string): this;\n}\nReactTimelineSeries.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\", \"Time pattern used for parsing datetime strings on each data row\", null, {optional:true});\nReactTimelineSeries.prototype.publish(\"tooltipTimeFormat\", \"%Y-%m-%d\", \"string\", \"Time format used in the default html tooltip\");\n\n"],"names":["d3Local","d3ScaleBand","d3Extent","d3TimeParse","d3TimeFormat","d3ZoomIdentity","d3Zoom","d3Select","d3ScaleLinear","d3Min","d3Max"],"mappings":";;;;;;;AAAO,IAAM,QAAQ,GAAG,oBAAoB;AACrC,IAAM,WAAW,GAAG,UAAU;AAC9B,IAAM,aAAa,GAAG;;ACF7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;AACnC,EAAE,aAAa,GAAG,MAAM,CAAC,cAAc;AACvC,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;AAClF,MAAM,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACxG,EAAE,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,CAAC,CAAC;AACF;AACO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;AAChC,EAAE,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI;AAC3C,MAAM,MAAM,IAAI,SAAS,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC;AAChG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;AACzC,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACvF,CAAC;AACD;AACO,IAAI,QAAQ,GAAG,WAAW;AACjC,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;AACnD,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC3D,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3B,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,OAAO;AACP,MAAM,OAAO,CAAC,CAAC;AACf,IAAG;AACH,EAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACzC,EAAC;AA4KD;AACO,SAAS,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AAC9C,EAAE,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACvF,MAAM,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;AAC9B,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B,OAAO;AACP,GAAG;AACH,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AA6FD;AACuB,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;AACvH,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;AACnF;;AC9TA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;AACjC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,EAAE;AAC1D;AACA,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;AAC1B;AACA,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9B,KAAK;AACL,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;AACnC,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,GAAG;AACH;;;;;ACfA,IAAA,SAAA,kBAAA,UAAA,MAAA,EAAA;IAA+B,SAAS,CAAA,SAAA,EAAA,MAAA,CAAA,CAAA;AAuBpC,IAAA,SAAA,SAAA,GAAA;QACI,IAAA,KAAA,GAAA,MAAK,WAAE,IAAC,IAAA,CAAA;QAdJ,KAAS,CAAA,SAAA,GAAGA,KAAO,EAAc,CAAC;QAClC,KAAc,CAAA,cAAA,GAAGA,KAAO,EAAa,CAAC;QAKpC,KAAU,CAAA,UAAA,GAAG,CAAC,CAAC;QACf,KAAc,CAAA,cAAA,GAAG,CAAC,CAAC;QACnB,KAAY,CAAA,YAAA,GAAG,CAAC,CAAC;QACjB,KAAS,CAAA,SAAA,GAAG,CAAC,CAAC,CAAC;QACf,KAAU,CAAA,UAAA,GAAG,CAAC,CAAC,CAAC;QAChB,KAAY,CAAA,YAAA,GAAG,CAAC,CAAC,CAAC;AAIxB,QAAA,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;AACpB,QAAA,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;AAExC,QAAA,KAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,KAAI,CAAC,WAAW,CAAC,UAAC,CAAM,EAAK,EAAA,OAAA,UAAW,CAAA,MAAA,CAAA,CAAC,CAAC,KAAI,CAAC,UAAU,CAAC,EAAgB,eAAA,CAAA,CAAA,MAAA,CAAA,KAAI,CAAC,gBAAgB,CAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAO,MAAA,CAAA,CAAA,MAAA,CAAA,KAAI,CAAC,gBAAgB,CAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAE,CAAA,EAAA,CAAC,CAAC;AAEnN,QAAA,KAAI,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE;aACnB,IAAI,CAAC,MAAM,CAAC,CACZ;AACL,QAAA,KAAI,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE;aACnB,IAAI,CAAC,MAAM,CAAC,CACZ;AACL,QAAA,KAAI,CAAC,aAAa,GAAGC,SAAW,EAAE;aAC7B,YAAY,CAAC,GAAG,CAAC;aACjB,YAAY,CAAC,GAAG,CAAC,CACjB;;KACR;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;AACI,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC;KAC9C,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;QAAA,IAGC,KAAA,GAAA,IAAA,CAAA;AAFG,QAAA,IAAM,IAAI,GAAA,aAAA,CAAA,aAAA,CAAA,EAAA,EAAO,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,KAAI,CAAC,cAAc,CAAC,CAAA,EAAA,CAAC,EAAK,IAAA,CAAA,EAAA,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAAA,EAAA,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAAA,EAAA,CAAC,OAAC,CAAC;AAClJ,QAAA,OAAOC,MAAQ,CAAC,IAAI,CAAC,CAAC;KACzB,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;AACI,QAAA,IAAM,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9F,QAAA,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AACpD,YAAA,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;gBACtD,IAAM,MAAM,GAAGC,SAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC/C,IAAM,SAAS,GAAGC,UAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBACnD,IAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE;oBACzB,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5E,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC/E;qBAAM;AACH,oBAAA,IAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;oBAC9B,IAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC;oBACzC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7B,oBAAA,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3D;aACJ;SACJ;AACD,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;IAED,SAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,CAAC,EAAA;AACV,QAAA,IAAG,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,WAAW,EAAC;YAC9D,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;SAClD;AACD,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,GAAG,CAAC;AAC9C,QAAA,OAAO,GAAG,CAAC;KACd,CAAA;IAED,SAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,CAAC,EAAA;AACR,QAAA,IAAG,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,WAAW,EAAC;YAC5D,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;SAChD;AACD,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5C,QAAA,OAAO,GAAG,CAAC;KACd,CAAA;IAED,SAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,CAAC,EAAA;AACP,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;KACpD,CAAA;AAGD,IAAA,SAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;;AAEI,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAEC,YAAc,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;KAC9G,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;AACI,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;KACjB,CAAA;AAGD,IAAA,SAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,OAAO,EAAE,OAAO,EAAA;QAAtB,IA0CC,KAAA,GAAA,IAAA,CAAA;AAzCG,QAAA,MAAA,CAAA,SAAK,CAAC,KAAK,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAGC,IAAM,EAAE;aAChB,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;aAChC,EAAE,CAAC,MAAM,EAAE,YAAA;YACR,KAAI,CAAC,MAAM,EAAE,CAAC;AAClB,SAAC,CAAC,CACD;QAEL,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AACnC,aAAA,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;AACrB,aAAA,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;aAClB,EAAE,CAAC,UAAU,EAAE,YAAA;AACZ,YAAA,OAAO,EAAE,CAAC,eAAe,EAAE,CAAC;YAC5B,OAAO,KAAI,CAAC,UAAU,CAAC;YACvB,KAAI,CAAC,SAAS,EAAE,CAAC;AACrB,SAAC,CAAC,CACD;AACL,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,MAAM;AACN,aAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAC9B,aAAA,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AAC7B,aAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;aAC/C,WAAW,CAAC,MAAM,CAAC;AACnB,aAAA,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,SAAS,GAAG,MAAM,CAAC;aAC1D,MAAM,CAAC,GAAG,CAAC,CACX;AACL,QAAA,IAAI,CAAC,MAAM;AACN,aAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAC9B,aAAA,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AAC7B,aAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;aAC/C,WAAW,CAAC,MAAM,CAAC;AACnB,aAAA,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,SAAS,GAAG,MAAM,CAAC;aAC1D,MAAM,CAAC,GAAG,CAAC,CACX;AAEL,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACtD,CAAA;AAGD,IAAA,SAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,OAAO,EAAE,OAAO,EAAA;QAAvB,IAoKC,KAAA,GAAA,IAAA,CAAA;AAnKG,QAAA,MAAA,CAAA,SAAK,CAAC,MAAM,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAE/B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAErB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7G,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AAC7H,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AACrH,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;AACzG,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7G,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QAErH,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,YAAY,EAAE,EAAE;AAChD,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO;SACV;QAED,IAAI,CAAC,gBAAgB,GAAGF,UAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAE/D,QAAA,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC3B,QAAA,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAE7B,QAAA,IAAI,CAAC,UAAU;AACV,aAAA,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACZ,aAAA,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACZ,aAAA,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;AACpB,aAAA,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CACtB;AAEL,QAAA,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAM;AACN,aAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACZ,aAAA,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,KAAK,GAAG,MAAM,CAAC;AACjD,aAAA,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7B,aAAA,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/B,aAAA,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAChB,aAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACd,aAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACf,aAAA,WAAW,EAAE,CACb;AAEL,QAAA,IAAI,CAAC,MAAM;AACN,aAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACZ,aAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACb,aAAA,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,QAAQ,GAAG,OAAO,CAAC;AACrD,aAAA,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7B,aAAA,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/B,aAAA,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;aAChB,MAAM,CAAC,MAAM,CAAC;AACd,aAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACd,aAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACf,aAAA,WAAW,EAAE,CACb;AAEL,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,GAAG,SAAA,CAAC;YACR,IAAI,EAAE,SAAA,CAAC;AACP,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;gBACrB,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7E,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aACvF;iBAAM;gBACH,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/E,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1F;AACD,YAAA,IAAI,CAAC,MAAM;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,IAAI,CAAC,EAAE,CAAC;AACR,iBAAA,WAAW,EAAE,CACb;AACL,YAAA,IAAI,CAAC,MAAM;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,IAAI,CAAC,EAAE,CAAC;AACR,iBAAA,WAAW,EAAE,CACb;SACR;AAED,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,UAAC,CAAC,EAAE,CAAC,EAAA;YACrD,IAAM,MAAM,GAAG,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,YAAA,IAAI,MAAM,KAAK,CAAC,EAAE;AACd,gBAAA,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/C;AACD,YAAA,OAAO,MAAM,CAAC;AAClB,SAAC,GAAG,UAAC,CAAC,EAAE,CAAC,EAAA;YACL,OAAO,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,SAAC,CAAC,CAAC;QACH,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAArB,EAAqB,CAAC,CAAC;QACvD,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAAA,EAAA,CAAC,CAAC;AAExD,QAAA,IAAI,CAAC,MAAM;AACN,aAAA,MAAM,EAAE,CACR;AACL,QAAA,IAAI,CAAC,MAAM;AACN,aAAA,MAAM,EAAE,CACR;QACL,IAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAEzC,IAAI,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACvD,QAAA,IAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC;AAC1C,QAAA,IAAI,WAAW,GAAG,MAAM,GAAG,kBAAkB,CAAC;AAC9C,QAAA,IAAM,UAAU,GAAG,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,UAAA,GAAG,EAAA,EAAI,OAAA,CAAC,KAAK,CAAC,GAAG,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,CAA9B,EAA8B,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG,EAAA,EAAI,OAAA,GAAG,CAAC,KAAI,CAAC,YAAY,CAAC,CAAA,EAAA,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1K,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;;AAE1C,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3B,YAAA,IAAI,QAAQ,GAAG,kBAAkB,GAAG,CAAC,CAAC;YACtC,IAAI,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,EAAE;gBAC3C,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC;aAC7C;YACD,IAAM,mBAAmB,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC;AACpD,YAAA,IAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC;AAC1E,YAAA,IAAM,cAAc,GAAG,UAAU,KAAK,CAAC,GAAG,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,eAAA,CAAA,MAAA,CAAgB,mBAAmB,GAAG,cAAc,EAAA,GAAA,CAAG,CAAC,CAAC;AAC9F,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,eAAA,CAAA,MAAA,CAAgB,gBAAgB,GAAG,cAAc,EAAA,GAAA,CAAG,CAAC,CAAC;SAC3F;AAAM,aAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEjD,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,eAAgB,CAAA,MAAA,CAAA,kBAAkB,EAAG,GAAA,CAAA,CAAC,CAAC;YAC5E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,eAAgB,CAAA,MAAA,CAAA,kBAAkB,EAAG,GAAA,CAAA,CAAC,CAAC;SAC5E;aAAM;YACH,kBAAkB,IAAI,UAAU,CAAC;YACjC,WAAW,IAAI,UAAU,CAAC;;AAE1B,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,eAAgB,CAAA,MAAA,CAAA,kBAAkB,EAAG,GAAA,CAAA,CAAC,CAAC;YAC5E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,eAAgB,CAAA,MAAA,CAAA,kBAAkB,EAAG,GAAA,CAAA,CAAC,CAAC;YACzE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,eAAgB,CAAA,MAAA,CAAA,kBAAkB,EAAG,GAAA,CAAA,CAAC,CAAC;SAChF;AACD,QAAA,IAAI,CAAC,MAAM;AACN,aAAA,MAAM,EAAE,CACR;QACL,IAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAIzC,IAAM,UAAU,GAAiB,EAAE,CAAC;QACpC,IAAM,WAAW,GAAG,EAAE,CAAC;QACvB,KAAoB,IAAA,EAAA,GAAA,CAAM,EAAN,QAAM,GAAA,MAAA,EAAN,oBAAM,EAAN,EAAA,EAAM,EAAE;AAAvB,YAAA,IAAM,KAAK,GAAA,QAAA,CAAA,EAAA,CAAA,CAAA;AACZ,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACxC,gBAAA,IAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7B,gBAAA,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AACrE,oBAAA,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBACvC,MAAM;iBACT;aACJ;AAED,YAAA,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;AAClC,gBAAA,WAAW,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;gBACvC,UAAU,CAAC,IAAI,CAAC;AACZ,oBAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACjC,iBAAA,CAAC,CAAC;aACN;SACJ;QAED,IAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;QACnF,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AAClG,QAAA,IAAI,CAAC,aAAa;AACb,aAAA,KAAK,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC1B,aAAA,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,UAAC,EAAE,EAAE,CAAC,EAAA,EAAK,OAAA,CAAC,CAAA,EAAA,CAAC,CAAC,CACpC;AAEL,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;SACnG;KACJ,CAAA;IAED,SAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,MAAM,EAAA;QACnB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAM,OAAO,GAAG,IAAI,CAAC;AACrB,QAAA,IAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAjB,EAAiB,CAAC,CAAC;QACpG,IAAM,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAClH,IAAM,oBAAoB,GAAG,IAAI,CAAC,sBAAsB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACxH,IAAM,wBAAwB,GAAG,IAAI,CAAC,0BAA0B,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACpI,IAAM,YAAY,GAAG,EAAE,CAAC;QACxB,KAAgB,IAAA,EAAA,GAAA,CAAM,EAAN,QAAM,GAAA,MAAA,EAAN,oBAAM,EAAN,EAAA,EAAM,EAAE;AAAnB,YAAA,IAAM,CAAC,GAAA,QAAA,CAAA,EAAA,CAAA,CAAA;YACR,IAAM,IAAI,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACzF,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACxE;QACD,IAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,QAAA,IAAM,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACtD,IAAM,eAAe,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;AACjD,aAAA,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACjC,QAAA,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;AACzB,aAAA,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAElC,eAAe;AACV,aAAA,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,EAAA;AACxB,YAAAG,MAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AAC3B,SAAC,CAAC;AACD,aAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAA;AAChB,YAAA,IAAM,SAAS,GAAG,IAAI,SAAS,EAAE;iBAC5B,MAAM,CAAC,IAAI,CAAC;iBACZ,IAAI,CAAC,GAAG,CAAC;AACT,iBAAA,mBAAmB,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;AACpD,iBAAA,oBAAoB,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;AACtD,iBAAA,0BAA0B,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC;AAClE,iBAAA,yBAAyB,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC;iBACjE,YAAY,CAAC,EAAE,CAAC;iBAChB,kBAAkB,CAAC,CAAC,CAAC;iBACrB,aAAa,CAAC,EAAE,CAAC;iBACjB,gBAAgB,CAAC,MAAM,CAAC;iBACxB,mBAAmB,CAAC,EAAE,CAAC;AACvB,iBAAA,SAAS,CAAC,kBAAkB,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACrE,iBAAA,UAAU,CAAC,kBAAkB,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACtE,iBAAA,gBAAgB,CAAC,kBAAkB,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC;iBAC5E,eAAe,CAAC,KAAK,CAAC;AACtB,iBAAA,mBAAmB,CAAC,kBAAkB,KAAK,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,wBAAwB,CAAC,CAAC;AACxF,iBAAA,qBAAqB,CAAC,kBAAkB,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC;iBACnF,YAAY,CAAC,CAAC,CAAC;iBACf,WAAW,CAAC,EAAE,CAAC;iBACf,UAAU,CAAC,EAAE,CAAC,CACd;YACL,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAChD,SAAC,CAAC;aACD,KAAK,CAAC,UAAU,CAAC;AACjB,aAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAA;YAChB,IAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnD,IAAM,MAAM,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;YACxG,IAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,kBAAkB,IAAI,CAAC,CAAC;YAClG,IAAI,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,WAAW;gBAAE,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACtH,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,SAAS,CAAC,WAAW,EAAE,EAAE;AACtG,gBAAA,IAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1E,IAAM,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;gBACzE,SAAS;qBACJ,CAAC,CAAC,QAAQ,CAAC;qBACX,CAAC,CAAC,QAAQ,CAAC;AACX,qBAAA,mBAAmB,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;AACpD,qBAAA,oBAAoB,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;AACtD,qBAAA,0BAA0B,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC;AAClE,qBAAA,yBAAyB,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC;qBACjE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;qBAC3F,KAAK,CAAC,MAAM,CAAC;qBACb,WAAW,CAAC,oBAAoB,CAAC;AACjC,qBAAA,oBAAoB,EAAE,CACtB;aACR;iBAAM;AACH,gBAAA,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;aAChD;AACD,YAAA,IAAM,WAAW,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;YAC3C,IAAI,YAAY,GAAG,WAAW;gBAAE,YAAY,GAAG,WAAW,CAAC;AAE3D,YAAAA,MAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC;AACnC,iBAAA,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AACpB,iBAAA,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AACpB,iBAAA,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACb,iBAAA,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AACpB,iBAAA,KAAK,CAAC,QAAQ,EAAE,kBAAkB,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAC7E,iBAAA,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CACxB;AACT,SAAC,CAAC,CACD;QACL,UAAU,CAAC,IAAI,EAAE;AACZ,aAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAA;YAChB,IAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnD,YAAA,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAE3B,SAAC,CAAC;AACD,aAAA,MAAM,EAAE,CAAC;QACd,IAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC7G,OAAO,YAAY,GAAG,YAAY,CAAC;KACtC,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAA;QAA9F,IA8EC,KAAA,GAAA,IAAA,CAAA;QA7EG,IAAM,OAAO,GAAG,IAAI,CAAC;AAErB,QAAA,IAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,UAAA,CAAC,EAAA;AAC/D,YAAA,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACjC,SAAC,CAAC,CAAC;AACH,QAAA,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;AACvB,aAAA,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;aACrB,KAAK,CAAC,KAAK,CAAC;AACZ,aAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,UAAA,CAAC,EAAI,EAAA,OAAA,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAxB,EAAwB,CAAC;AACtE,aAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,UAAA,CAAC,EAAI,EAAA,OAAA,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAxB,EAAwB,CAAC;AACtE,aAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;AACnG,aAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,gBAAgB,GAAG,UAAU,CAAC,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAC9H;AACL,QAAA,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;AACtB,QAAA,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA,EAAA,CAAC,CAAC;AACnG,QAAA,OAAO,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;AACtB,aAAA,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;AACxB,aAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACjD,IAAI,CAAC,UAAU,CAAC,EAAA;AACb,YAAA,IAAM,UAAU,GAAG,IAAI,UAAU,EAAE;iBAC9B,MAAM,CAAC,IAAI,CAAC;iBACZ,YAAY,CAAC,EAAE,CAAC;iBAChB,kBAAkB,CAAC,CAAC,CAAC;iBACrB,aAAa,CAAC,EAAE,CAAC;AACjB,iBAAA,UAAU,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;AACpC,iBAAA,gBAAgB,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;AAC1C,iBAAA,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;iBACnC,eAAe,CAAC,MAAM,CAAC;iBACvB,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAC1C;YACL,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACxC,YAAA,OAAO,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAC3C,SAAC,CAAC;AACD,aAAA,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,EAAA;YACpB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SAClF,EAAE,KAAK,CAAC;AACR,aAAA,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAA;AACvB,YAAA,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;YACvB,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SACrF,EAAE,IAAI,CAAC;aACP,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;aACzC,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;aAC1C,KAAK,CAAC,OAAO,CAAC;AACd,aAAA,IAAI,CAAC,WAAW,EAAE,UAAA,CAAC,EAAA,EAAI,OAAA,OAAO,CAAC,YAAY,EAAE;AAC1C,YAAA,YAAA,CAAA,MAAA,CAAa,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,eAAK,KAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAA,IAAA,CAAI;AAC5E,YAAA,YAAA,CAAA,MAAA,CAAa,KAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAK,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAI,IAAA,CAAA,CAAA,EAAA,CAAC;aAChF,IAAI,CAAC,UAAU,CAAC,EAAA;YACb,IAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnC,IAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAChD,YAAA,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,YAAA,IAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YAClE,IAAM,eAAe,GAAG,KAAK,CAAC;YAC9B,IAAM,YAAY,IAAI,CAAC,CAAC,GAAG,eAAe,IAAI,CAAC,CAAC,CAAC;AACjD,YAAA,IAAM,WAAW,GAAG,YAAY,GAAG,UAAU,CAAC;AAC9C,YAAA,IAAM,QAAQ,GAAG,UAAU,GAAG,eAAe,CAAC;YAC9C,IAAM,QAAQ,GAAG,QAAQ,CAAC;YAC1B,OAAO;iBACF,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,EAAA,CAAA,EAAE,CAAC,EAAA,CAAA,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvD,iBAAA,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,UAAU,GAAG,SAAS,CAAC;AAC5D,iBAAA,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,SAAS,GAAG,UAAU,CAAC;iBAC3D,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;iBAC7E,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;iBAChF,OAAO,CAAC,WAAW,CAAC;iBACpB,YAAY,CAAC,QAAQ,CAAC;iBACtB,aAAa,CAAC,QAAQ,CAAC,CACvB;AACL,YAAA,IAAI,QAAQ,GAAG,GAAG,GAAG,SAAS,EAAE;AAC5B,gBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACtB;AACD,YAAA,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YACxD,OAAO;AACF,iBAAA,MAAM,EAAE,CACR;AACT,SAAC,CAAC,CAAC;AACP,QAAA,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;KAC3B,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,UAAK,OAAO,EAAE,OAAO,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,MAAA,CAAA,SAAK,CAAC,IAAI,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KAChC,CAAA;;AAGD,IAAA,SAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;KAClB,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;KACrB,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,OAAmB,EAAE,CAAC,EAAA;KACrC,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,OAAmB,EAAE,CAAC,EAAA;KACtC,CAAA;IASL,OAAC,SAAA,CAAA;AAAD,CA1gBA,CAA+B,SAAS,CA0gBvC,EAAA;AACD,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,qBAAqB,CAAC;AACpD,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACnD,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAqDxD,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAChF,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACvG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,UAAU,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC5F,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AACjF,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;AAC3G,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AACzF,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC1E,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAClF,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AAC9E,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACxE,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC1E,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AAC9E,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAChE,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AACnF,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AAC3E,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;AAC5F,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,wBAAwB,EAAE,IAAI,EAAE,QAAQ,EAAE,wBAAwB,CAAC,CAAC;AAChG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,4BAA4B,EAAE,IAAI,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;AACxG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,uBAAuB,EAAE,KAAK,EAAE,SAAS,EAAE,uBAAuB,CAAC,CAAC;AAChG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,wBAAwB,EAAE,KAAK,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;AAClG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,8BAA8B,EAAE,KAAK,EAAE,SAAS,EAAE,8BAA8B,CAAC,CAAC;AAC9G,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,8BAA8B,EAAE,IAAI,EAAE,SAAS,EAAE,8BAA8B,CAAC,CAAC;AAC7G,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,sEAAsE,CAAC;;AChlB3I,IAAA,UAAA,kBAAA,UAAA,MAAA,EAAA;IAAgC,SAAa,CAAA,UAAA,EAAA,MAAA,CAAA,CAAA;AA2CzC,IAAA,SAAA,UAAA,CAAY,iBAAiD,EAAA;AAAjD,QAAA,IAAA,iBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,iBAAiD,GAAA,QAAA,CAAA,EAAA;QACzD,IAAA,KAAA,GAAA,MAAK,WAAE,IAAC,IAAA,CAAA;QA1CF,KAAU,CAAA,UAAA,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,KAAI,CAAC,CAAC;QAkBzC,KAAU,CAAA,UAAA,GAAG,CAAC,CAAC;QACf,KAAc,CAAA,cAAA,GAAG,CAAC,CAAC;QACnB,KAAY,CAAA,YAAA,GAAG,CAAC,CAAC;QACjB,KAAS,CAAA,SAAA,GAAG,CAAC,CAAC,CAAC;QACf,KAAU,CAAA,UAAA,GAAG,CAAC,CAAC,CAAC;QAChB,KAAW,CAAA,WAAA,GAAG,CAAC,CAAC,CAAC;QACjB,KAAW,CAAA,WAAA,GAAG,CAAC,CAAC,CAAC;QACjB,KAAY,CAAA,YAAA,GAAG,CAAC,CAAC,CAAC;AAKpB,QAAA,KAAA,CAAA,aAAa,GAAkB;AACnC,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,WAAW,EAAE,CAAC;SACjB,CAAC;QAkBM,KAAc,CAAA,cAAA,GAA4B,YAAY,CAAC;AAgWxD,QAAA,KAAA,CAAA,UAAU,GAAG,EAAC,CAAC,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,EAAC,CAAC;AA9WhC,QAAA,KAAI,CAAC,aAAa,GAAG,iBAAiB,CAAC;AAEvC,QAAA,KAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAEhC,QAAA,KAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,QAAA,KAAI,CAAC,QAAQ;aACR,WAAW,CAAC,UAAA,CAAC,EAAA;AACV,YAAA,OAAO,4CAAmC,CAAC,CAAC,CAAC,CAAC,uBAAa,CAAC,CAAC,CAAC,CAAC,oBAAU,CAAC,CAAC,CAAC,CAAC,WAAQ,CAAC;AAC1F,SAAC,CAAC,CAAC;AACP,QAAA,KAAI,CAAC,QAAQ;aACR,YAAY,CAAC,IAAI,CAAC,CAClB;;KACR;IAKD,UAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,CAA2B,EAAA;QACrC,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,cAAc,CAAC;AAClD,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,OAAO,EAAE,OAAO,EAAA;AAClB,QAAA,MAAA,CAAA,SAAK,CAAC,KAAK,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE9B,IAAM,OAAO,GAAG,IAAI,CAAC;QACrB,OAAO;AACF,aAAA,EAAE,CAAC,OAAO,EAAE,UAA4B,CAAC,EAAA;AACtC,YAAA,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC/B,SAAC,CAAC,CAAC;AAEP,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KACjC,CAAA;AACD,IAAA,UAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,OAAO,EAAE,OAAO,EAAA;QAAvB,IAoOC,KAAA,GAAA,IAAA,CAAA;AAnOG,QAAA,MAAA,CAAA,SAAK,CAAC,MAAM,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAE/B,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAExC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7G,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AAC7H,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AACrH,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;AACzG,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7G,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;AACjH,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAEnG,IAAM,OAAO,GAAG,IAAI,CAAC;AACrB,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAEvB,IAAM,EAAE,GAAG,CAAC,CAAC;QACb,IAAM,EAAE,GAAG,CAAC,CAAC;AAEb,QAAA,IAAI,CAAC,aAAa,GAAGC,WAAa,EAAE;aAC/B,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,aAAA,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CACf;QAEL,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAG,EAAA,OAAA,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;AAEpC,QAAA,IAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAC,OAAO,EAAE,OAAO,EAAA;gBACjC,IAAM,SAAS,GAAG,OAAO,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC;gBAC5C,IAAG,CAAC,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE;AAC/B,oBAAA,KAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AACjC,oBAAA,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;iBACtC;AACD,gBAAA,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;AAC/B,oBAAA,OAAO,EAAA,OAAA;AACP,oBAAA,OAAO,EAAA,OAAA;AACV,iBAAA,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACH,YAAA,IAAM,QAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,IAAI,cAAY,GAAG,CAAC,CAAC;YACrB,IAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACnD,YAAA,UAAU,CAAC,OAAO,CAAC,UAAA,SAAS,EAAA;AACxB,gBAAA,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAG,OAAA,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAzB,EAAyB,CAAC,CAAC;AACtE,gBAAA,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,KAAI,CAAC,WAAW,CAAC,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,EAAE,EAAA,OAAA,CAAC,CAAC,OAAO,CAAT,EAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3G,gBAAA,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,GAAG,KAAI,CAAC,YAAY,EAAE,CAAC;gBACpE,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,GAAG,cAAY,CAAC;AAC7D,gBAAA,cAAY,IAAI,CAAC,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,GAAG,KAAI,CAAC,WAAW,EAAE,GAAG,KAAI,CAAC,MAAM,EAAE,KAAK,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,SAAS,GAAC,CAAC,CAAC,CAAC;gBACtJ,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA;AACvC,oBAAA,KAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC/C,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,oBAAoB,CAAC;AACxE,iBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAA,GAAG,EAAA;AACpB,gBAAA,OAAO,KAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;aACrC,CAAC,CAAC,CACF;AACL,YAAA,IAAI,CAAC,kBAAkB;iBAClB,IAAI,CACD,UAAA,KAAK,EAAI,EAAA,OAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;iBACxB,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAD9B,EAC8B,EACvC,UAAA,MAAM,IAAI,OAAA,MAAM,GAAA,EAChB,UAAA,IAAI,EAAA,EAAI,OAAA,IAAI;iBACP,IAAI,CAAC,UAAU,CAAC,EAAA;gBACb,OAAO,CAAC,CAAC,OAAO,CAAC;AACrB,aAAC,CAAC;iBACD,MAAM,EAAE,CAJL,EAIK,CAChB;iBACA,IAAI,CAAC,SAAS,EAAE,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAjC,EAAiC,CAAC;AACvD,iBAAA,IAAI,CAAC,UAA6B,CAAC,EAAE,CAAC,EAAA;gBACnCD,MAAQ,CAAC,IAAI,CAAC;AACT,qBAAA,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACZ,qBAAA,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY,IAAI,QAAM,GAAC,CAAC,CAAC,CAAC;AACtC,qBAAA,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;qBAChB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,QAAM,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,QAAM,CAAC;qBACxE,IAAI,CAAC,MAAM,EAAE,CAAC,GAAC,CAAC,GAAG,OAAO,CAAC,mBAAmB,EAAE,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAClF;AACT,aAAC,CAAC,CAAC;SACV;aAAM;AACH,YAAA,IAAG,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,EAAC;gBACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;aAC3G;iBAAM;gBACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;aACzF;SACJ;QACD,IAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEzD,IAAI,CAAC,MAAM,CACP,CAAC,aAAa,EAAE,CAAC,CAAC,EAClB,CAAC,CACJ,CAAC;AAEF,QAAA,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEzC,IAAI,CAAC,eAAe,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,aAAa,IAAI,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC;AACvD,aAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CACjB;AACL,QAAA,IAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACzC,QAAA,IAAM,aAAa,GAAG,aAAa,GAAG,CAAC,CAAC;QACxC,aAAa;aACR,IAAI,CACD,UAAA,KAAK,EAAI,EAAA,OAAA,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;AACrB,aAAA,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;AACrB,aAAA,EAAE,CAAC,oBAAoB,EAAE,UAAU,CAAC,EAAE,CAAC,EAAA;AACpC,YAAA,IAAM,GAAG,GAAG,CAAC,CAAC,EAAE,KAAK,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AAC1C,YAAA,IAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAC,GAAG,EAAA,GAAA,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAC,CAAC,EAAC;AACxD,gBAAA,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;aAC9B;iBAAM;AACH,gBAAA,OAAO,CAAC,UAAU,CAAC,KAAK,CACpB;AACI,oBAAA,GAAG,EAAA,GAAA;AACH,oBAAA,OAAO,EAAE,YAAM,EAAA,OAAA,CAAC,CAAC,OAAO,GAAA;iBAC3B,EACD,OAAO,CACV,CAAC;aACL;YACD,OAAO,CAAC,gBAAgB,EAAE,CAAC;AAC3B,YAAA,OAAO,EAAE,CAAC,eAAe,EAAE,CAAC;AAChC,SAAC,CAAC;AACD,aAAA,EAAE,CAAC,OAAO,EAAE,UAA4B,CAAC,EAAA;YACtC,IAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAC;AAC3B,gBAAA,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;aAC5C;YACD,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnC,SAAC,CAAC;AACD,aAAA,EAAE,CAAC,UAAU,EAAE,UAA4B,CAAC,EAAA;YACzC,IAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAC;AAC3B,gBAAA,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;aAC5C;YACD,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnC,SAAC,CAAC;AACD,aAAA,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAA;YACtB,OAAO,CAAC,aAAa,CAACA,MAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,IAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC/C,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrC,SAAC,CAAC;AACD,aAAA,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,EAAA;AACxB,YAAA,IAAM,KAAK,GAAG,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,QAAQ,CAAC,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC;AAC7C,YAAA,OAAO,CAAC,QAAQ,CAAC,UAAU,GAAG;AAC1B,gBAAA,KAAK,CAAC,OAAO;AACb,gBAAA,KAAK,CAAC,OAAO;aAChB,CAAC;AACF,YAAA,OAAO,CAAC,QAAQ;iBACX,IAAI,CAAC,CAAC,CAAC;iBACP,OAAO,CAAC,IAAI,CAAC;iBACb,UAAU,CAAC,IAAI,CAAC;AAChB,iBAAA,MAAM,EAAE,CACR;YACL,OAAO,CAAC,aAAa,CAACA,MAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,IAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC/C,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AACvC,SAAC,CAAC;AACD,aAAA,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAA;AACvB,YAAA,OAAO,CAAC,QAAQ;iBACX,OAAO,CAAC,KAAK,CAAC;AACd,iBAAA,MAAM,EAAE,CACR;AACL,YAAA,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAClC,IAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC/C,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AACtC,SAAC,CAAC;AACD,aAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAA;AAChB,YAAA,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AACd,YAAA,CAAC,CAAC,OAAO,GAAGA,MAAQ,CAAC,IAAI,CAAC,CAAC;AAC3B,YAAA,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,IAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,YAAA,IAAG,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;gBACzB,IAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACzC,IAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC;aACrH;iBAAM;gBACH,IAAM,EAAE,GAAG,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACnE,gBAAA,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;aACvE;AACD,YAAA,CAAC,CAAC,KAAK,GACA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAC,CAAC,CAAC,CAAC,CACP,EAAA,EAAA,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GACb,CAAC;YACF,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3B,YAAA,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;AAC9B,YAAA,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC;AACrB,YAAA,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC;AACrB,YAAA,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,aAAa,CAAC;AAC/B,YAAA,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,aAAa,CAAC;AAChC,YAAA,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,YAAA,CAAA,MAAA,CAAa,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,EAAI,GAAA,CAAA,CAAA,MAAA,CAAA,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,EAAA,GAAA,CAAG,CAAC,CAAC;AACjG,SAAC,CAAC,CAvFG,EAuFH,EACN,UAAA,MAAM,EAAI,EAAA,OAAA,MAAM,CAAA,EAAA,EAChB,UAAA,IAAI,EAAA,EAAI,OAAA,IAAI;aACP,IAAI,CAAC,UAAU,CAAC,EAAA;YACb,OAAO,CAAC,CAAC,OAAO,CAAC;AACrB,SAAC,CAAC;aACD,MAAM,EAAE,CAJL,EAIK,CAChB;aACA,IAAI,CAAC,SAAS,EAAE,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAjC,EAAiC,CAAC;AACvD,aAAA,IAAI,CAAC,UAA6B,CAAC,EAAE,CAAC,EAAA;AACnC,YAAA,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AACd,YAAA,IAAG,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,EAAC;gBACxB,IAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACzC,gBAAA,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;aACnF;iBAAM;AACH,gBAAA,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;aACxE;AACL,SAAC,CAAC;AACD,aAAA,EAAE,CAAC,eAAe,EAAE,UAAA,CAAC,EAAA;YAClB,IAAM,EAAE,GAAG,KAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,IAAM,EAAE,GAAG,KAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,YAAA,IAAM,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;AACvB,YAAA,IAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;YAC1B,KAAI,CAAC,MAAM,CACP;gBACI,CAAC,EAAE,GAAG,MAAM;gBACZ,CAAC;aACJ,EACD,MAAM,CACT,CAAC;AACN,SAAC,CAAC,CACD;AACD,QAAA,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;KACzC,CAAA;IACD,UAAkB,CAAA,SAAA,CAAA,kBAAA,GAAlB,UAAmB,CAAC,EAAE,CAAC,EAAE,aAAqB,EAAE,OAAiB,EAAE,SAAkB,EAAA;AAA5D,QAAA,IAAA,aAAA,KAAA,KAAA,CAAA,EAAA,EAAA,aAAqB,GAAA,KAAA,CAAA,EAAA;AAAE,QAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAiB,GAAA,EAAA,CAAA,EAAA;AAC7D,QAAA,IAAM,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;AAC1C,QAAA,IAAM,aAAa,GAAG,aAAa,GAAG,CAAC,CAAC;AACxC,QAAA,IAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC;QACT,IAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3D,IAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,CAAC;AACN,QAAA,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAE9C,QAAA,IAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAC;AACpB,YAAA,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;SACzD;AAED,QAAA,IAAG,SAAS,KAAK,SAAS,EAAE;YACxB,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/E,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACjC,YAAA,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;YACxF,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC;YACvG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SACvC;aAAM;YACH,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;SACvC;AACD,QAAA,IAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE;YACrB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACrC;QACD,IAAI,CAAC,aAAa,EAAE;AAChB,YAAA,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAA,CAAC,CAAC,KAAK,GACA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAC,CAAC,CAAC,CAAC,CACP,EAAA,EAAA,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GACb,CAAC;AACF,YAAA,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACpC;aAAM;AACH,YAAA,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnC,YAAA,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpC,YAAA,CAAC,CAAC,KAAK,GACA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAC,CAAC,CAAC,CAAC,CACP,EAAA,EAAA,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GACb,CAAC;AACF,YAAA,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC;AAC/B,YAAA,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,YAAA,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;SACtB;AACD,QAAA,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;AAC9B,QAAA,IAAG,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE;AACzD,YAAA,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,YAAY,CAAC;SAC7D;QACD,IAAG,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,EAAC;YACjC,CAAC,CAAC,OAAO,GAAGA,MAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAChC;AACD,QAAA,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,YAAA,CAAA,MAAA,CAAa,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,EAAI,GAAA,CAAA,CAAA,MAAA,CAAA,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,EAAA,GAAA,CAAG,CAAC,CAAC;AAE7F,QAAA,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC;AACrB,QAAA,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC;AACrB,QAAA,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,aAAa,CAAC;AAC/B,QAAA,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,aAAa,CAAC;QAChC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QACtD,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QAEzD,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAExF,IAAG,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,EAAC;AACrB,YAAA,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC;SACnE;aAAM;AACH,YAAA,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;SAC5D;AACD,QAAA,IAAG,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE;YACzD,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;SACjG;AACD,QAAA,IAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE;AACjD,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;SACrC;AACD,QAAA,IAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;AAChD,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;SACpC;AACD,QAAA,MAAM,CACF,IAAI,CAAC,cAAc,EAEZ,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,OAAO,GACP,CAAC,CAAC,KAAK,CAAA,EAAA,EACV,IAAI,EAAA,IAAA,EAAA,CAAA,EAER,CAAC,CAAC,IAAI,CACT,CAAC;KACL,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;QACI,IAAI,CAAC,aAAa,GAAG;AACjB,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;AACjC,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE;AAC/B,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;SACpC,CAAC;KACL,CAAA;IAGD,UAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,SAAS,EAAA;QAAhB,IAwBC,KAAA,GAAA,IAAA,CAAA;AAvBG,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,QAAO,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,KAAK,WAAW;AACZ,gBAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,cAAc,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,YAAa,CAAA,MAAA,CAAA,SAAS,CAAC,CAAC,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,CAAC,EAAU,SAAA,CAAA,CAAA,MAAA,CAAA,SAAS,CAAC,CAAC,EAAA,KAAA,CAAK,CAAC,CAAC;gBACvF,MAAM;AACV,YAAA;AACI,gBAAA,IAAM,SAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBACnC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA;AACrB,oBAAA,IAAG,KAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAC;wBACpB,SAAO,CAAC,IAAI,GAAG,CAAC,CAAC,KAAI,CAAC,UAAU,CAAC,CAAC;qBACrC;AACD,oBAAA,IAAG,KAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAC;wBACrB,IAAM,SAAS,GAAG,CAAC,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC;AACtC,wBAAA,KAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAO,EAAE,SAAS,CAAC,CAAC;qBAC3D;yBAAM;wBACH,KAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAO,CAAC,CAAC;qBAChD;AACL,iBAAC,CAAC,CAAC;SACV;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KAC9B,CAAA;IAED,UAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,SAAS,EAAA;KAEnB,CAAA;IAEO,UAAW,CAAA,SAAA,CAAA,WAAA,GAAnB,UAAoB,IAAI,EAAE,QAAyB,EAAE,MAAuB,EAAE,SAA2B,EAAA;QACrG,IAAM,SAAS,GAAG,EAAE,CAAC;QACrB,IAAM,YAAY,GAAG,EAAE,CAAC;AACxB,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpC,IAAM,OAAO,GAAG,CAAC,EAAC,GAAG,EAAC,CAAC,QAAQ,EAAC,CAAC,CAAC;QAClC,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,QAAA,IAAG,SAAS,KAAK,SAAS,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA;gBACd,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC5B,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC;AACtC,aAAC,CAAC,CAAC;YACH,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;SAChD;aAAM;AACH,YAAA,IAAI,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA;AACd,gBAAA,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACxC,oBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE;AACrD,wBAAA,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;wBAClB,IAAG,SAAS,GAAG,EAAE;4BAAC,SAAS,GAAG,EAAE,CAAC;wBACjC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;wBAChC,MAAM;qBACT;iBACJ;AACD,gBAAA,IAAG,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,EAAC;AAC1B,oBAAA,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;oBAC9B,IAAM,CAAC,GAAG,EAAE,CAAC;oBACb,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AACtB,oBAAA,OAAO,CAAC,IAAI,CAAC,CAAQ,CAAC,CAAC;iBAC1B;AAED,gBAAA,IAAG,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;AAAC,oBAAA,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACzD,aAAC,CAAC,CAAC;SACN;AACD,QAAA,IAAM,MAAM,GAAG,CAAC,SAAS,GAAC,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrE,OAAO;AACH,YAAA,SAAS,EAAA,SAAA;AACT,YAAA,SAAS,EAAA,SAAA;AACT,YAAA,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM;YACnC,YAAY,EAAEC,WAAa,EAAE;iBACxB,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,GAAC,CAAC,CAAC,CAAC;AACxB,iBAAA,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;SACnD,CAAC;KACL,CAAA;IAID,UAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,CAAgB,EAAA;;AACjB,QAAA,IAAM,MAAM,GAAG,MAAK,CAAA,SAAA,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACjD,QAAA,IAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAA,KAAA,CAAR,IAAI,EAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAA,CAAC,EAAE,EAAA,OAAA,CAAC,CAAC,CAAC,CAAC,CAAJ,EAAI,CAAC,CAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAK,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAA,KAAA,CAAR,IAAI,EAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAA,CAAC,EAAE,EAAA,OAAA,CAAC,CAAC,CAAC,CAAC,CAAJ,EAAI,CAAC,CAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAK,CAAC,CAAC;AAC1D,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SAC9B;AACD,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;IAOD,UAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,YAAoB,EAAA;AAApB,QAAA,IAAA,YAAA,KAAA,KAAA,CAAA,EAAA,EAAA,YAAoB,GAAA,KAAA,CAAA,EAAA;QAChC,IAAM,UAAU,GAAG,EAAE,CAAC;QACtB,IAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,QAAA,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACrC,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjC,QAAA,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEzC,IAAG,YAAY,EAAC;AACZ,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC;SAC9E;AAED,QAAA,IAAG,YAAY,IAAI,IAAI,CAAC,eAAe,KAAK,UAAU,IAAI,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE;AACvF,YAAA,eAAe,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC;AACzE,YAAA,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAA,CAAC,EAAA;gBACjB,IAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC;oBACjB,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC;iBACzE;AACD,gBAAA,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI,EAAA;AACvB,oBAAA,IAAG,CAAC,eAAe,CAAC,IAAI,CAAC,EAAC;AACtB,wBAAA,eAAe,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC;qBAC9E;AACL,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;SAC3C;AACD,QAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;AAClC,QAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;KACjC,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,UAAa,IAAI,EAAE,KAAK,EAAE,KAAS,EAAA;AAAT,QAAA,IAAA,KAAA,KAAA,KAAA,CAAA,EAAA,EAAA,KAAS,GAAA,CAAA,CAAA,EAAA;AAC/B,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;QACxD,IAAG,QAAQ,EAAC;AACR,YAAA,OAAO,IAAI,CAAC;SACf;QACD,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,QAAA,IAAM,MAAM,GAAG,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,KAAkB,IAAA,EAAA,GAAA,CAAI,EAAJ,MAAI,GAAA,IAAA,EAAJ,kBAAI,EAAJ,EAAA,EAAI,EAAC;AAAnB,YAAA,IAAM,IAAI,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AACV,YAAA,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACnC,YAAA,IAAG,GAAG,GAAG,MAAM,EAAC;gBACZ,GAAG,IAAI,IAAI,CAAC;aACf;iBAAM;gBACH,MAAM;aACT;SACJ;AACD,QAAA,OAAO,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;KACxC,CAAA;IAED,UAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,KAAyC,EAAA;AAC5C,QAAA,IAAI,MAAM,CAAC;QACX,IAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YACtD,MAAM,GAAG,gBAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,IAAI,CAAC,KAAK;AACrB,aAAA,CAAC,CAAC;SACN;aAAM;YACH,MAAM,GAAG,MAAK,CAAA,SAAA,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SAChD;AACD,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,YAAA;KAEC,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,aAAa,GAAb,UAAc,QAAQ,EAAE,CAAC,EAAA;KAExB,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,GAAG,EAAE,IAAI,EAAE,GAAG,EAAA;KAEnB,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,GAAG,EAAE,IAAI,EAAE,GAAG,EAAA;KAEtB,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,OAAO,GAAP,UAAQ,GAAG,EAAE,IAAI,EAAE,GAAG,EAAA;KACrB,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UAAU,GAAG,EAAE,IAAI,EAAE,GAAG,EAAA;KACvB,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,GAAG,EAAE,IAAI,EAAE,GAAG,EAAA;KACtB,CAAA;IACL,OAAC,UAAA,CAAA;AAAD,CA5kBA,CAAgC,aAAa,CA4kB5C,EAAA;AACD,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,sBAAsB,CAAC;AAwDtD,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE,4DAA4D,CAAC,CAAC;AAClI,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,6DAA6D,CAAC,CAAC;AACpI,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,8BAA8B,CAAC,CAAC;AAC5F,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,mCAAmC,CAAC,CAAC;AACrG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,iCAAiC,CAAC,CAAC;AACjG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,6BAA6B,CAAC,CAAC;AAC1F,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,8BAA8B,CAAC,CAAC;AAC5F,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,0CAA0C,CAAC,CAAC;AACzG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,0CAA0C,CAAC,CAAC;AACzG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,+CAA+C,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;AACxI,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,8CAA8C,CAAC,CAAC;AAC1G,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,qCAAqC,CAAC,CAAC;AACjG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,iCAAiC,CAAC,CAAC;AAC1F,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,0CAA0C,CAAC,CAAC;AACxG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,sCAAsC,CAAC,CAAC;AAClG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,oCAAoC,EAAE,IAAI,EAAE,EAAC,QAAQ,EAAC,IAAI,EAAC,CAAC,CAAC;AACxH,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,8CAA8C,CAAC,CAAC;AACvG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAC1F,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAClF,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,EAAE,QAAQ,EAAE,sCAAsC,CAAC,CAAC;AACzG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,EAAE,QAAQ,EAAE,sCAAsC,CAAC,CAAC;AACpG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,sCAAsC,CAAC,CAAC;AAC5F,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACtE,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,sBAAsB,EAAE,SAAS,EAAE,YAAY,EAAE,sCAAsC,CAAC,CAAC;AACtH,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,SAAS,EAAE,YAAY,EAAE,qCAAqC,CAAC;;ACzqBnH,IAAA,cAAA,kBAAA,UAAA,MAAA,EAAA;IAAoC,SAAS,CAAA,cAAA,EAAA,MAAA,CAAA,CAAA;AA+BzC,IAAA,SAAA,cAAA,GAAA;QACI,IAAA,KAAA,GAAA,MAAK,WAAE,IAAC,IAAA,CAAA;AA9BF,QAAA,KAAA,CAAA,QAAQ,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC;aACxC,WAAW,CAAC,KAAK,CAAC;aAClB,IAAI,CAAC,QAAQ,CAAC;aACd,WAAW,CAAC,MAAM,CAAC;aACnB,WAAW,CAAC,MAAM,CAAC;aACnB,MAAM,CAAC,CAAC,CAAC;aACT,UAAU,CAAC,GAAG,CAAC,CACf;AACK,QAAA,KAAA,CAAA,MAAM,GAAe,IAAI,UAAU,CAAC,QAAQ,CAAC;aAClD,MAAM,CAAC,SAAS,CAAC,CACjB;AACK,QAAA,KAAA,CAAA,WAAW,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC;aAC3C,WAAW,CAAC,QAAQ,CAAC;aACrB,IAAI,CAAC,QAAQ,CAAC;aACd,WAAW,CAAC,MAAM,CAAC;aACnB,WAAW,CAAC,MAAM,CAAC;aACnB,MAAM,CAAC,CAAC,CAAC;aACT,UAAU,CAAC,GAAG,CAAC,CACf;AAaD,QAAA,KAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,KAAI,CAAC,aAAa,GAAG,YAAA;AACjB,YAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACpE,IAAG,CAAC,SAAS,CAAC,MAAM;AAAC,gBAAA,OAAO,GAAG,CAAC;AAChC,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAC;;KACL;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;AAEI,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAExB,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAErC,IAAM,aAAa,IAAI,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAA,IAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,QAAQ;AACR,aAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,aAAA,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAChB,aAAA,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAC3B;QACL,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,UAAU,EAAE,KAAK,EAAC,CAAC,EAAC,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,YAAY;AACZ,aAAA,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,aAAA,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAChB,aAAA,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAC3B;AACL,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,cAAA,CAAA,MAAA,CAAe,UAAU,GAAG,aAAa,EAAA,GAAA,CAAG,CAAC,CAAC;AACrF,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,aAAa,EAAE,KAAK,EAAC,CAAC,EAAC,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,WAAW;AACX,aAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,aAAA,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAChB,aAAA,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAC3B;AACL,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,cAAe,CAAA,MAAA,CAAA,UAAU,GAAG,aAAa,GAAG,aAAa,EAAA,GAAA,CAAG,CAAC,CAAC;AACxG,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,UAAU,EAAE,KAAK,EAAC,CAAC,EAAC,CAAC,CAAC;KACzD,CAAA;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,OAAO,EAAE,OAAO,EAAA;QAAtB,IAsCC,KAAA,GAAA,IAAA,CAAA;AArCG,QAAA,MAAA,CAAA,SAAK,CAAC,KAAK,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE9B,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,UAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;YAC9B,KAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,SAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,UAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;YACjC,KAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACjC,SAAC,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AACrC,aAAA,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CACjC;QACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9C,aAAA,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAC9B;QACL,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AACrC,aAAA,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAChC;QACL,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;AAClD,aAAA,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAC7B;QACL,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AACxC,aAAA,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CACpC;QACL,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC;AACpD,aAAA,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAC9B;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;QAExD,IAAI,CAAC,cAAc,EAAE,CAAC;AAEtB,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,UAAC,SAAS,EAAA;AAC/B,YAAA,KAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,SAAC,CAAC;KACL,CAAA;IAED,cAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,SAAS,EAAA;AAEZ,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACjC,QAAA,IAAM,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;AACzB,QAAA,IAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;QACtB,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC;AAE5D,QAAA,IAAI,CAAC,QAAQ;AACR,aAAA,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACjC,aAAA,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7B,aAAA,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;aACjC,GAAG,CAAC,OAAO,CAAC;aACZ,IAAI,CAAC,QAAQ,CAAC;AACd,aAAA,MAAM,EAAE,CACR;AACL,QAAA,IAAI,CAAC,WAAW;AACX,aAAA,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACjC,aAAA,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7B,aAAA,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;aACjC,GAAG,CAAC,OAAO,CAAC;aACZ,IAAI,CAAC,QAAQ,CAAC;AACd,aAAA,MAAM,EAAE,CACR;KACR,CAAA;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,OAAO,EAAE,OAAO,EAAA;AACnB,QAAA,MAAA,CAAA,SAAK,CAAC,MAAM,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACxD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;KACxB,CAAA;IAID,cAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,CAAY,EAAA;AAChB,QAAA,IAAM,MAAM,GAAG,MAAK,CAAA,SAAA,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACpD,QAAA,IAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAC1B;AACD,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;IAID,cAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,CAAoB,EAAA;;AACrB,QAAA,IAAM,MAAM,GAAG,MAAK,CAAA,SAAA,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACjD,QAAA,IAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,IAAM,SAAS,GAAU,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA;AACtC,gBAAA,IAAM,GAAG,GAAA,aAAA,CAAA,EAAA,EAAO,CAAC,EAAA,IAAA,CAAC,CAAC;AACnB,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,gBAAA,OAAO,GAAG,CAAC;AACf,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAA,KAAA,CAAR,IAAI,EAAQ,SAAS,CAAC,GAAG,CAAC,UAAA,CAAC,EAAE,EAAA,OAAA,CAAC,CAAC,CAAC,CAAC,CAAJ,EAAI,CAAC,CAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAK,CAAC,CAAC;AACjE,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAA,KAAA,CAAR,IAAI,EAAQ,SAAS,CAAC,GAAG,CAAC,UAAA,CAAC,EAAE,EAAA,OAAA,CAAC,CAAC,CAAC,CAAC,CAAJ,EAAI,CAAC,CAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAK,CAAC,CAAC;AAC/D,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC/B;AACD,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;IAED,cAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,KAAyC,EAAA;AAC5C,QAAA,IAAM,MAAM,GAAG,MAAK,CAAA,SAAA,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAEnD,QAAA,IAAG,IAAI,CAAC,eAAe,EAAC;YACpB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;AAED,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;KAElB,CAAA;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;KAErB,CAAA;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;AACI,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;KAC/B,CAAA;IACL,OAAC,cAAA,CAAA;AAAD,CArMA,CAAoC,SAAS,CAqM5C,EAAA;AACD,cAAc,CAAC,SAAS,CAAC,MAAM,IAAI,0BAA0B,CAAC;AA6C9D,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,yCAAyC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACzI,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC;AACxF,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AACtF,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,EAAE,QAAQ,EAAE,sCAAsC,CAAC,CAAC;AAC7G,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,+BAA+B,CAAC,CAAC;AAClG,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,iCAAiC,CAAC,CAAC;AACtG,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;AAC3F,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC1D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC9D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC/D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC5D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC9D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC1D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AAChE,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC/D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AACnE,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AACjE,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC9D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC/D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AAChE,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC3D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC;;ACvQ/D,IAAA,oBAAA,kBAAA,UAAA,MAAA,EAAA;IAA0C,SAAO,CAAA,oBAAA,EAAA,MAAA,CAAA,CAAA;AA8B7C,IAAA,SAAA,oBAAA,GAAA;QACI,IAAA,KAAA,GAAA,MAAK,WAAE,IAAC,IAAA,CAAA;AA7BF,QAAA,KAAA,CAAA,QAAQ,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC;aACxC,WAAW,CAAC,KAAK,CAAC;aAClB,IAAI,CAAC,QAAQ,CAAC;aACd,WAAW,CAAC,MAAM,CAAC;aACnB,WAAW,CAAC,MAAM,CAAC;aACnB,MAAM,CAAC,CAAC,CAAC;aACT,UAAU,CAAC,GAAG,CAAC,CACf;AACK,QAAA,KAAA,CAAA,MAAM,GAAe,IAAI,UAAU,CAAC,QAAQ,CAAC;aAClD,MAAM,CAAC,SAAS,CAAC;aACjB,kBAAkB,CAAC,IAAI,CAAC,CACxB;AACK,QAAA,KAAA,CAAA,WAAW,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC;aAC3C,WAAW,CAAC,QAAQ,CAAC;aACrB,IAAI,CAAC,QAAQ,CAAC;aACd,WAAW,CAAC,MAAM,CAAC;aACnB,WAAW,CAAC,MAAM,CAAC;aACnB,MAAM,CAAC,CAAC,CAAC;aACT,UAAU,CAAC,GAAG,CAAC,CACf;AAWD,QAAA,KAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;AACvC,QAAA,KAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;;KACxC;IAID,oBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,CAA2B,EAAA;AACrC,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACpE,IAAI,CAAC,SAAS,CAAC,MAAM;AAAE,YAAA,OAAO,GAAG,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC;KACf,CAAA;AAED,IAAA,oBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;AAEI,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAExB,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,IAAM,aAAa,IAAI,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;AAE7C,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAE9B,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACf,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,UAAU;AACrB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAClB,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,aAAa;AACxB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAClB,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,UAAU;AACrB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;KAC1B,CAAA;AAED,IAAA,oBAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,OAAO,EAAE,OAAO,EAAA;QAAtB,IAoBC,KAAA,GAAA,IAAA,CAAA;AAnBG,QAAA,MAAA,CAAA,SAAK,CAAC,KAAK,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE9B,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,UAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;YAC9B,KAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,SAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,UAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;YACjC,KAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACjC,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9B,IAAI,CAAC,cAAc,EAAE,CAAC;AAEtB,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,UAAC,SAAS,EAAA;AAC/B,YAAA,KAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,SAAC,CAAC;KACL,CAAA;IAED,oBAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,SAAS,EAAA;AACZ,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACjC,QAAA,IAAM,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;AACzB,QAAA,IAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;QACtB,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC;AAE5D,QAAA,IAAI,CAAC,QAAQ;AACR,aAAA,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACjC,aAAA,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7B,aAAA,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;aACjC,GAAG,CAAC,OAAO,CAAC;aACZ,IAAI,CAAC,QAAQ,CAAC;AACd,aAAA,UAAU,EAAE,CACZ;AACL,QAAA,IAAI,CAAC,WAAW;AACX,aAAA,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACjC,aAAA,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7B,aAAA,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;aACjC,GAAG,CAAC,OAAO,CAAC;aACZ,IAAI,CAAC,QAAQ,CAAC;AACd,aAAA,UAAU,EAAE,CACZ;KACR,CAAA;AAED,IAAA,oBAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,OAAO,EAAE,OAAO,EAAA;AACnB,QAAA,MAAA,CAAA,SAAK,CAAC,MAAM,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACxD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;KACxB,CAAA;IAID,oBAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,CAAY,EAAA;AAChB,QAAA,IAAM,MAAM,GAAG,MAAK,CAAA,SAAA,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACpD,QAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAC1B;AACD,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;IAID,oBAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,CAAoB,EAAA;AACrB,QAAA,IAAM,MAAM,GAAG,MAAK,CAAA,SAAA,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACjD,QAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,IAAM,SAAS,GAAU,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA;AACtC,gBAAA,IAAM,GAAG,GAAA,aAAA,CAAA,EAAA,EAAO,CAAC,EAAA,IAAA,CAAC,CAAC;AACnB,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,gBAAA,OAAO,GAAG,CAAC;AACf,aAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,SAAS,GAAGC,GAAK,CAAC,SAAS,EAAE,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,CAAC,CAAC,CAAJ,EAAI,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,OAAO,GAAGC,GAAK,CAAC,SAAS,EAAE,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,CAAC,CAAC,CAAJ,EAAI,CAAC,CAAC;AAClD,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC/B;AACD,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;IAED,oBAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,KAAyC,EAAA;AAC5C,QAAA,IAAM,MAAM,GAAG,MAAK,CAAA,SAAA,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAEnD,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;AAED,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;AAED,IAAA,oBAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;KAElB,CAAA;AAED,IAAA,oBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;KAErB,CAAA;AAED,IAAA,oBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;AACI,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;KAC/B,CAAA;IACL,OAAC,oBAAA,CAAA;AAAD,CAjLA,CAA0C,OAAO,CAiLhD,EAAA;AACD,oBAAoB,CAAC,SAAS,CAAC,MAAM,IAAI,gCAAgC,CAAC;AA+C1E,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,yCAAyC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/I,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC;AAC9F,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC5F,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,EAAE,QAAQ,EAAE,sCAAsC,CAAC,CAAC;AACnH,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,+BAA+B,CAAC,CAAC;AACxG,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,iCAAiC,CAAC,CAAC;AAC5G,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;AACjG,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAChE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACpE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AACrE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAClE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACpE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAChE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AACtE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AACrE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AACzE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AACvE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACpE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AACrE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AACtE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AACtE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACjE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;AAC9E,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;AAC7E,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC;;AC7PrE,IAAA,aAAA,kBAAA,UAAA,MAAA,EAAA;IAAmC,SAAc,CAAA,aAAA,EAAA,MAAA,CAAA,CAAA;AAI7C,IAAA,SAAA,aAAA,GAAA;QACI,IAAA,KAAA,GAAA,MAAK,WAAE,IAAC,IAAA,CAAA;AACR,QAAA,KAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;AAC9B,QAAA,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAE9B,QAAA,KAAI,CAAC,WAAW,CAAC,UAAC,CAAM,EAAA;AACpB,YAAA,IAAM,MAAM,GAAGP,SAAW,CAAC,IAAI,CAAC,CAAC;YACjC,IAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7B,IAAM,SAAS,GAAGC,UAAY,CAAC,KAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACzD,YAAA,OAAO,4CAAmC,CAAC,CAAC,CAAC,CAAC,uBAAa,SAAS,CAAC,SAAS,CAAC,oBAAU,SAAS,CAAC,OAAO,CAAC,WAAQ,CAAC;AACxH,SAAC,CAAC,CAAC;;KACN;AAED,IAAA,aAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,OAAO,EAAE,OAAO,EAAA;AACnB,QAAA,MAAA,CAAA,SAAK,CAAC,MAAM,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAE/B,QAAA,IAAG,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAE1B,IAAI,cAAY,GAAG,QAAQ,CAAC;AAC5B,YAAA,IAAI,cAAY,GAAG,CAAC,QAAQ,CAAC;YAC7B,IAAI,YAAU,GAAG,EAAE,CAAC;YACpB,IAAI,aAAW,GAAG,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA;AACb,gBAAA,IAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AACvC,gBAAA,IAAM,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AACrC,gBAAA,IAAG,cAAY,GAAG,KAAK,EAAC;oBACpB,cAAY,GAAG,KAAK,CAAC;AACrB,oBAAA,YAAU,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1B;AACD,gBAAA,IAAG,cAAY,GAAG,GAAG,EAAC;oBAClB,cAAY,GAAG,GAAG,CAAC;AACnB,oBAAA,aAAW,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3B;AACL,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,QAAQ;iBACR,IAAI,CAAC,MAAM,CAAC;AACZ,iBAAA,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC/B,WAAW,CAAC,MAAM,CAAC;AACnB,iBAAA,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC;iBACpC,GAAG,CAAC,YAAU,CAAC;iBACf,IAAI,CAAC,aAAW,CAAC,CACjB;AACL,YAAA,IAAI,CAAC,WAAW;iBACX,IAAI,CAAC,MAAM,CAAC;AACZ,iBAAA,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC/B,WAAW,CAAC,MAAM,CAAC;AACnB,iBAAA,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC;iBACpC,GAAG,CAAC,YAAU,CAAC;iBACf,IAAI,CAAC,aAAW,CAAC,CACjB;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,cAAY,CAAC;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,cAAY,CAAC;SACtC;KACJ,CAAA;IAED,aAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,QAAQ,EAAA;AAChB,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,QAAA,OAAO,IAAI,CAAC;KACf,CAAA;IAED,aAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,CAAC,EAAA;AACZ,QAAA,IAAM,SAAS,GAAGD,SAAW,CAAC,IAAI,CAAC,CAAC;AACpC,QAAA,IAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAEhC,IAAM,UAAU,GAAGC,UAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACpD,QAAA,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;KACjC,CAAA;IAED,aAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,SAAS,EAAA;AAEZ,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACjC,QAAA,IAAM,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;AACzB,QAAA,IAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;QACtB,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC;AAE5D,QAAA,IAAI,CAAC,QAAQ;AACR,aAAA,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,aAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACnC,aAAA,MAAM,EAAE,CACR;AACL,QAAA,IAAI,CAAC,WAAW;AACX,aAAA,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,aAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACnC,aAAA,MAAM,EAAE,CACR;KACR,CAAA;IAGL,OAAC,aAAA,CAAA;AAAD,CAnGA,CAAmC,cAAc,CAmGhD,EAAA;AACD,aAAa,CAAC,SAAS,CAAC,MAAM,IAAI,yBAAyB,CAAC;AAS5D,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,iEAAiE,EAAE,IAAI,EAAE,EAAC,QAAQ,EAAC,IAAI,EAAC,CAAC,CAAC;AAC/J,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,UAAU,EAAE,QAAQ,EAAE,8CAA8C,CAAC;;AC9G1H,IAAM,SAAS,GAAGD,SAAW,CAAC,IAAI,CAAC,CAAC;AACpC,IAAA,mBAAA,kBAAA,UAAA,MAAA,EAAA;IAAyC,SAAoB,CAAA,mBAAA,EAAA,MAAA,CAAA,CAAA;AAIzD,IAAA,SAAA,mBAAA,GAAA;QACI,IAAA,KAAA,GAAA,MAAK,WAAE,IAAC,IAAA,CAAA;AACR,QAAA,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAE9B,QAAA,KAAI,CAAC,WAAW,CAAC,UAAC,CAAM,EAAA;YACpB,IAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,IAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEhC,IAAM,SAAS,GAAGC,UAAY,CAAC,KAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACzD,YAAA,OAAO,4CAAmC,CAAC,CAAC,CAAC,CAAC,uBAAa,SAAS,CAAC,SAAS,CAAC,oBAAU,SAAS,CAAC,OAAO,CAAC,WAAQ,CAAC;AACxH,SAAC,CAAC,CAAC;;KACN;AAED,IAAA,mBAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,OAAO,EAAE,OAAO,EAAA;AACnB,QAAA,MAAA,CAAA,SAAK,CAAC,MAAM,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAE/B,QAAA,IAAG,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAE1B,IAAI,cAAY,GAAG,QAAQ,CAAC;AAC5B,YAAA,IAAI,cAAY,GAAG,CAAC,QAAQ,CAAC;YAC7B,IAAI,YAAU,GAAG,EAAE,CAAC;YACpB,IAAI,aAAW,GAAG,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAA,CAAC,EAAA;AACjB,gBAAA,IAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AACvC,gBAAA,IAAM,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AACrC,gBAAA,IAAG,cAAY,GAAG,KAAK,EAAC;oBACpB,cAAY,GAAG,KAAK,CAAC;AACrB,oBAAA,YAAU,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1B;AACD,gBAAA,IAAG,cAAY,GAAG,GAAG,EAAC;oBAClB,cAAY,GAAG,GAAG,CAAC;AACnB,oBAAA,aAAW,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3B;AACL,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,QAAQ;iBACR,IAAI,CAAC,MAAM,CAAC;AACZ,iBAAA,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC/B,WAAW,CAAC,MAAM,CAAC;AACnB,iBAAA,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC;iBACpC,GAAG,CAAC,YAAU,CAAC;iBACf,IAAI,CAAC,aAAW,CAAC,CACjB;AACL,YAAA,IAAI,CAAC,WAAW;iBACX,IAAI,CAAC,MAAM,CAAC;AACZ,iBAAA,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC/B,WAAW,CAAC,MAAM,CAAC;AACnB,iBAAA,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC;iBACpC,GAAG,CAAC,YAAU,CAAC;iBACf,IAAI,CAAC,aAAW,CAAC,CACjB;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,cAAY,CAAC;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,cAAY,CAAC;SACtC;KACJ,CAAA;IAED,mBAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,QAAQ,EAAA;AAChB,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,QAAA,OAAO,IAAI,CAAC;KACf,CAAA;IAED,mBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,CAAC,EAAA;AACZ,QAAA,IAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAEhC,IAAM,UAAU,GAAGA,UAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACpD,QAAA,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;KACjC,CAAA;IAED,mBAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,SAAS,EAAA;AAEZ,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACjC,QAAA,IAAM,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;AACzB,QAAA,IAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;QACtB,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC;AAE5D,QAAA,IAAI,CAAC,QAAQ;AACR,aAAA,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,aAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACnC,aAAA,MAAM,EAAE,CACR;AACL,QAAA,IAAI,CAAC,WAAW;AACX,aAAA,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,aAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACnC,aAAA,MAAM,EAAE,CACR;KACR,CAAA;IAGL,OAAC,mBAAA,CAAA;AAAD,CAhGA,CAAyC,oBAAoB,CAgG5D,EAAA;AACD,mBAAmB,CAAC,SAAS,CAAC,MAAM,IAAI,+BAA+B,CAAC;AASxE,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,iEAAiE,EAAE,IAAI,EAAE,EAAC,QAAQ,EAAC,IAAI,EAAC,CAAC,CAAC;AACrK,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,UAAU,EAAE,QAAQ,EAAE,8CAA8C,CAAC;;;;"}
1
+ {"version":3,"file":"index.es6.js","sources":["../src/__package__.ts","../../../node_modules/tslib/tslib.es6.mjs","../../../node_modules/style-inject/dist/style-inject.es.js","../src/MiniGantt.ts","../src/ReactGantt.ts","../src/ReactAxisGantt.ts","../src/ReactAxisGanttSeries.ts","../src/ReactTimeline.ts","../src/ReactTimelineSeries.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/timeline\";\nexport const PKG_VERSION = \"2.51.26\";\nexport const BUILD_VERSION = \"2.105.12\";\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\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]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\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; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\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);\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); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { ITooltip } from \"@hpcc-js/api\";\nimport { Axis } from \"@hpcc-js/chart\";\nimport { d3Event, EntityPin, EntityRect, local as d3Local, select as d3Select, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { extent as d3Extent } from \"d3-array\";\nimport { scaleBand as d3ScaleBand } from \"d3-scale\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\nimport { zoom as d3Zoom, zoomIdentity as d3ZoomIdentity } from \"d3-zoom\";\n\nimport \"../src/MiniGantt.css\";\n\nexport class MiniGantt extends SVGWidget {\n protected tlAxis: Axis;\n protected brAxis: Axis;\n protected verticalBands;\n protected _zoom;\n protected gUpperContent;\n protected gUpperAxis;\n protected gMiddleContent;\n protected gLowerAxis;\n protected gLowerContent;\n private localRect = d3Local<EntityRect>();\n private localEntityPin = d3Local<EntityPin>();\n private tooltipFormatter: (date: Date) => string;\n private _dateCache;\n\n protected rootExtent;\n protected _title_idx = 0;\n protected _startDate_idx = 1;\n protected _endDate_idx = 2;\n protected _icon_idx = -1;\n protected _color_idx = -1;\n protected _yoffset_idx = -1;\n\n constructor() {\n super();\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this._drawStartPos = \"origin\";\n this.tooltipHTML((d: any) => `<center>${d[this._title_idx]}</center><br>${this.tooltipFormatter(this.brAxis.parse(d[this._startDate_idx]))} -> ${this.tooltipFormatter(this.brAxis.parse(d[this._endDate_idx]))}`);\n\n this.tlAxis = new Axis()\n .type(\"time\")\n ;\n this.brAxis = new Axis()\n .type(\"time\")\n ;\n this.verticalBands = d3ScaleBand()\n .paddingOuter(0.2)\n .paddingInner(0.2)\n ;\n }\n\n isHorizontal(): boolean {\n return this.orientation() === \"horizontal\";\n }\n\n fullExtent() {\n const data = [...this.data().map(d => d[this._startDate_idx]), ...this.data().filter(d => !!d[this._endDate_idx]).map(d => d[this._endDate_idx])];\n return d3Extent(data);\n }\n\n extent() {\n const extent = this.rootExtent ? [this.rootExtent[1], this.rootExtent[2]] : this.fullExtent();\n if (extent[0] !== undefined && extent[1] !== undefined) {\n if (extent[0] === extent[1] || this.centerOnMostRecent()) {\n const parser = d3TimeParse(this.timePattern());\n const formatter = d3TimeFormat(this.timePattern());\n const date1 = parser(extent[0]);\n const date2 = parser(extent[1]);\n if (extent[0] === extent[1]) {\n extent[0] = formatter(new Date(date1.setFullYear(date1.getFullYear() - 1)));\n extent[1] = formatter(new Date(date1.setFullYear(date1.getFullYear() + 2)));\n } else {\n const time1 = date1.getTime();\n const timeDiff = date2.getTime() - time1;\n extent[0] = formatter(date1);\n extent[1] = formatter(new Date(time1 + (timeDiff * 2)));\n }\n }\n }\n return extent;\n }\n\n dataStartPos(d) {\n if(typeof this._dateCache[d[this._startDate_idx]] !== \"undefined\"){\n return this._dateCache[d[this._startDate_idx]];\n }\n const pos = this.brAxis.scalePos(d[this._startDate_idx]);\n this._dateCache[d[this._startDate_idx]] = pos;\n return pos;\n }\n\n dataEndPos(d) {\n if(typeof this._dateCache[d[this._endDate_idx]] !== \"undefined\"){\n return this._dateCache[d[this._endDate_idx]];\n }\n const pos = this.brAxis.scalePos(d[this._endDate_idx]);\n this._dateCache[d[this._endDate_idx]] = pos;\n return pos;\n }\n\n dataWidth(d) {\n return this.dataEndPos(d) - this.dataStartPos(d);\n }\n\n private transform;\n resetZoom() {\n // Triggers a \"zoomed\" event ---\n this._zoom.transform(this.element(), d3ZoomIdentity.translate(0, this.isHorizontal() ? 0 : this.height()));\n }\n\n zoomed() {\n this.transform = d3Event().transform;\n this.render();\n }\n\n private background;\n enter(domNode, element) {\n super.enter(domNode, element);\n this._zoom = d3Zoom()\n .scaleExtent([0, this.maxZoom()])\n .on(\"zoom\", () => {\n this.zoomed();\n })\n ;\n\n this.background = element.append(\"rect\")\n .attr(\"fill\", \"white\")\n .attr(\"opacity\", 0)\n .on(\"dblclick\", () => {\n d3Event().stopPropagation();\n delete this.rootExtent;\n this.resetZoom();\n })\n ;\n this.gUpperContent = element.append(\"g\").attr(\"class\", \"gUpperContent\");\n this.gUpperAxis = element.append(\"g\").attr(\"class\", \"gUpperAxis\");\n this.gMiddleContent = element.append(\"g\").attr(\"class\", \"gMiddleContent\");\n this.gLowerAxis = element.append(\"g\").attr(\"class\", \"gLowerAxis\");\n this.gLowerContent = element.append(\"g\").attr(\"class\", \"gLowerContent\");\n this.tlAxis\n .target(this.gUpperAxis.node())\n .tickFormat(this.tickFormat())\n .guideTarget(this.gUpperAxis.append(\"g\").node())\n .shrinkToFit(\"none\")\n .overlapMode(this.tickFormat_exists() ? \"stagger\" : \"none\")\n .extend(0.1)\n ;\n this.brAxis\n .target(this.gLowerAxis.node())\n .tickFormat(this.tickFormat())\n .guideTarget(this.gLowerAxis.append(\"g\").node())\n .shrinkToFit(\"none\")\n .overlapMode(this.tickFormat_exists() ? \"stagger\" : \"none\")\n .extend(0.1)\n ;\n\n element.call(this._zoom);\n this._selection.widgetElement(this.gMiddleContent);\n }\n\n private _prevIsHorizontal;\n update(domNode, element) {\n super.update(domNode, element);\n\n this._dateCache = {};\n\n this._title_idx = this.titleColumn() !== null ? this.columns().indexOf(this.titleColumn()) : this._title_idx;\n this._startDate_idx = this.startDateColumn() !== null ? this.columns().indexOf(this.startDateColumn()) : this._startDate_idx;\n this._endDate_idx = this.endDateColumn() !== null ? this.columns().indexOf(this.endDateColumn()) : this._endDate_idx;\n this._icon_idx = this.iconColumn() !== null ? this.columns().indexOf(this.iconColumn()) : this._icon_idx;\n this._color_idx = this.colorColumn() !== null ? this.columns().indexOf(this.colorColumn()) : this._color_idx;\n this._yoffset_idx = this.yOffsetColumn() !== null ? this.columns().indexOf(this.yOffsetColumn()) : this._yoffset_idx;\n\n if (this._prevIsHorizontal !== this.isHorizontal()) {\n this._prevIsHorizontal = this.isHorizontal();\n this.resetZoom();\n return;\n }\n\n this.tooltipFormatter = d3TimeFormat(this.tooltipTimeFormat());\n\n const width = this.width();\n const height = this.height();\n\n this.background\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n\n const extent = this.extent();\n this.tlAxis\n .x(width / 2)\n .orientation(this.isHorizontal() ? \"top\" : \"left\")\n .reverse(!this.isHorizontal())\n .timePattern(this.timePattern()) // \"%Y-%m-%dT%H:%M:%S.%LZ\"\n .width(width - 1)\n .low(extent[0])\n .high(extent[1])\n .updateScale()\n ;\n\n this.brAxis\n .x(width / 2)\n .y(height / 2)\n .orientation(this.isHorizontal() ? \"bottom\" : \"right\")\n .reverse(!this.isHorizontal())\n .timePattern(this.timePattern()) // \"%Y-%m-%dT%H:%M:%S.%LZ\"\n .width(width - 1)\n .height(height)\n .low(extent[0])\n .high(extent[1])\n .updateScale()\n ;\n\n if (this.transform) {\n let low;\n let hi;\n if (this.isHorizontal()) {\n low = this.tlAxis.parseInvert(this.tlAxis.invert(this.transform.invertX(0)));\n hi = this.tlAxis.parseInvert(this.tlAxis.invert(this.transform.invertX(width - 1)));\n } else {\n low = this.tlAxis.parseInvert(this.tlAxis.invert(- this.transform.invertY(0)));\n hi = this.tlAxis.parseInvert(this.tlAxis.invert(- this.transform.invertY(height - 1)));\n }\n this.tlAxis\n .low(low)\n .high(hi)\n .updateScale()\n ;\n this.brAxis\n .low(low)\n .high(hi)\n .updateScale()\n ;\n }\n\n const data = this.data().sort(this.isHorizontal() ? (l, r) => {\n const retVal = this.brAxis.scalePos(l[1]) - this.brAxis.scalePos(r[1]);\n if (retVal === 0) {\n return (\"\" + l[0]).localeCompare(\"\" + r[0]);\n }\n return retVal;\n } : (l, r) => {\n return this.brAxis.scalePos(r[1]) - this.brAxis.scalePos(l[1]);\n });\n const events = data.filter(d => !d[this._endDate_idx]);\n const ranges = data.filter(d => !!d[this._endDate_idx]);\n\n this.tlAxis\n .render()\n ;\n this.brAxis\n .render()\n ;\n const brAxisBBox = this.brAxis.getBBox();\n\n let upperContentHeight = this.updateEntityPins(events);\n const lowerAxisHeight = brAxisBBox.height;\n let lowerHeight = height - upperContentHeight;\n const minYOffset = this._yoffset_idx !== -1 ? Math.min.apply(undefined, this.data().filter(row => !isNaN(row[this._yoffset_idx])).map(row => row[this._yoffset_idx])) : 0;\n if (events.length > 0 && ranges.length === 0) {\n // ONLY EVENTS\n this.tlAxis.visible(false);\n let y_offset = upperContentHeight / 4;\n if (y_offset > (height / 2) - lowerAxisHeight) {\n y_offset = (height / 2) - lowerAxisHeight;\n }\n const upperContentYOffset = (height / 2) + y_offset;\n const lowerAxisYOffset = ((height / 2) - lowerAxisHeight - y_offset) * -1;\n const halfMinYOffset = minYOffset !== 0 ? minYOffset / 2 : 0;\n this.gUpperContent.attr(\"transform\", `translate(0, ${upperContentYOffset - halfMinYOffset})`);\n this.gLowerAxis.attr(\"transform\", `translate(0, ${lowerAxisYOffset - halfMinYOffset})`);\n } else if (events.length === 0 && ranges.length > 0) {\n // ONLY RANGES\n this.tlAxis.visible(true);\n this.gUpperContent.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n this.gUpperAxis.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n } else {\n upperContentHeight -= minYOffset;\n lowerHeight += minYOffset;\n // BOTH\n this.tlAxis.visible(true);\n this.gUpperContent.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n this.gUpperAxis.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n this.gMiddleContent.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n }\n this.tlAxis\n .render()\n ;\n const tlAxisBBox = this.tlAxis.getBBox();\n interface BucketInfo {\n endPos: number;\n }\n const bucketData: BucketInfo[] = [];\n const bucketIndex = {};\n for (const range of ranges) {\n for (let i = 0; i < bucketData.length; ++i) {\n const bucket = bucketData[i];\n if (bucket.endPos + this.overlapTolerence() <= this.dataStartPos(range)) {\n bucketIndex[range] = i;\n bucket.endPos = this.dataEndPos(range);\n break;\n }\n }\n\n if (bucketIndex[range] === undefined) {\n bucketIndex[range] = bucketData.length;\n bucketData.push({\n endPos: this.dataEndPos(range)\n });\n }\n }\n\n const vbLower = this.isHorizontal() ? 0 + tlAxisBBox.height : 0 + tlAxisBBox.width;\n const vbHigher = this.isHorizontal() ? lowerHeight - brAxisBBox.height : width - brAxisBBox.width;\n this.verticalBands\n .range([vbLower, vbHigher])\n .domain(bucketData.map((_d, i) => i))\n ;\n\n if (ranges.length > 0) {\n this.updateEventRanges(events, ranges, bucketIndex, lowerHeight, tlAxisBBox, brAxisBBox, width);\n }\n }\n\n updateEntityPins(events) {\n let event_height = 0;\n const context = this;\n const entityPins = this.gUpperContent.selectAll(\".entity_pin\").data(events, d => d[0] + \":\" + d[1]);\n const eventFontColor_idx = this.eventFontColorColumn() ? this.columns().indexOf(this.eventFontColorColumn()) : -1;\n const eventBorderColor_idx = this.eventBorderColorColumn() ? this.columns().indexOf(this.eventBorderColorColumn()) : -1;\n const eventBackgroundColor_idx = this.eventBackgroundColorColumn() ? this.columns().indexOf(this.eventBackgroundColorColumn()) : -1;\n const title_counts = {};\n for (const d of events) {\n const type = typeof d[context._title_idx] !== \"undefined\" ? d[context._title_idx] : d[0];\n title_counts[type] = title_counts[type] ? title_counts[type] + 1 : 1;\n }\n const title_types = Object.keys(title_counts);\n const title_group_offset = context.eventGroupOffset();\n const entityPinsEnter = entityPins.enter().append(\"g\")\n .attr(\"class\", \"entity_pin\");\n entityPinsEnter.append(\"line\")\n .attr(\"class\", \"entity_line\");\n\n entityPinsEnter\n .on(\"mouseover\", function (d) {\n d3Select(this).raise();\n })\n .each(function (d, i) {\n const entityPin = new EntityPin()\n .target(this)\n .icon(\"\")\n .iconOnlyShowOnHover(context.hideIconWhenCollapsed())\n .titleOnlyShowOnHover(context.hideTitleWhenCollapsed())\n .descriptionOnlyShowOnHover(context.hideDescriptionWhenCollapsed())\n .annotationOnlyShowOnHover(context.hideAnnotationsWhenCollapsed())\n .iconDiameter(18)\n .iconPaddingPercent(1)\n .titleFontSize(14)\n .descriptionColor(\"#333\")\n .descriptionFontSize(15)\n .iconColor(eventFontColor_idx === -1 ? \"#333\" : d[eventFontColor_idx])\n .titleColor(eventFontColor_idx === -1 ? \"#333\" : d[eventFontColor_idx])\n .descriptionColor(eventFontColor_idx === -1 ? \"#333\" : d[eventFontColor_idx])\n .backgroundShape(\"pin\")\n .backgroundColorFill(eventFontColor_idx === -1 ? \"#f8f8f8\" : d[eventBackgroundColor_idx])\n .backgroundColorStroke(eventFontColor_idx === -1 ? \"#ccc\" : d[eventBorderColor_idx])\n .cornerRadius(5)\n .arrowHeight(10)\n .arrowWidth(16)\n ;\n context.localEntityPin.set(this, entityPin);\n })\n .merge(entityPins)\n .each(function (d, i) {\n const entityPin = context.localEntityPin.get(this);\n const _title = typeof d[context._title_idx] !== \"undefined\" ? d[context._title_idx] : entityPin.title();\n const x_offset = context.dataStartPos(d) - 0;\n let y_offset = ((title_types.indexOf(_title) % context.eventGroupMod()) * title_group_offset) - 5;\n if (typeof d[context._yoffset_idx] !== \"undefined\") y_offset += d[context._yoffset_idx] ? d[context._yoffset_idx] : 0;\n if (d[context._title_idx] !== entityPin.title() && d[context._startDate_idx] !== entityPin.description()) {\n const parsed_start_time = context.brAxis.parse(d[context._startDate_idx]);\n const formatted_start_time = context.tooltipFormatter(parsed_start_time);\n entityPin\n .x(x_offset)\n .y(y_offset)\n .iconOnlyShowOnHover(context.hideIconWhenCollapsed())\n .titleOnlyShowOnHover(context.hideTitleWhenCollapsed())\n .descriptionOnlyShowOnHover(context.hideDescriptionWhenCollapsed())\n .annotationOnlyShowOnHover(context.hideAnnotationsWhenCollapsed())\n .icon(typeof d[context._icon_idx] !== \"undefined\" ? d[context._icon_idx] : entityPin.icon())\n .title(_title)\n .description(formatted_start_time)\n .animationFrameRender()\n ;\n } else {\n entityPin.move({ x: x_offset, y: y_offset });\n }\n const calc_height = entityPin.calcHeight();\n if (event_height < calc_height) event_height = calc_height;\n\n d3Select(this).selectAll(\".entity_line\")\n .attr(\"x1\", x_offset)\n .attr(\"x2\", x_offset)\n .attr(\"y1\", 0)\n .attr(\"y2\", y_offset)\n .style(\"stroke\", eventFontColor_idx === -1 ? \"#ccc\" : d[eventBorderColor_idx])\n .style(\"stroke-width\", 1)\n ;\n })\n ;\n entityPins.exit()\n .each(function (d, i) {\n const entityPin = context.localEntityPin.get(this);\n entityPin.target(null);\n\n })\n .remove();\n const event_offset = Math.abs(Math.min(events.length, context.eventGroupMod()) * context.eventGroupOffset());\n return event_height + event_offset;\n }\n\n updateEventRanges(events, ranges, bucketIndex, eventRangeHeight, tlAxisBBox, brAxisBBox, width) {\n const context = this;\n\n const lines = this.gMiddleContent.selectAll(\".line\").data(events, d => {\n return d[context._title_idx];\n });\n lines.enter().append(\"line\")\n .attr(\"class\", \"line\")\n .merge(lines)\n .attr(this.isHorizontal() ? \"x1\" : \"y1\", d => this.dataStartPos(d) - 0)\n .attr(this.isHorizontal() ? \"x2\" : \"y2\", d => this.dataStartPos(d) - 0)\n .attr(this.isHorizontal() ? \"y1\" : \"x1\", this.isHorizontal() ? tlAxisBBox.height : tlAxisBBox.width)\n .attr(this.isHorizontal() ? \"y2\" : \"x2\", this.isHorizontal() ? eventRangeHeight - brAxisBBox.height : width - brAxisBBox.width)\n ;\n lines.exit().remove();\n const buckets = this.gMiddleContent.selectAll(\".buckets\").data(ranges, d => d[context._title_idx]);\n buckets.enter().append(\"g\")\n .attr(\"class\", \"buckets\")\n .call(this._selection.enter.bind(this._selection))\n .each(function (d) {\n const entityRect = new EntityRect()\n .target(this)\n .iconDiameter(28)\n .iconPaddingPercent(0)\n .titleFontSize(28)\n .titleColor(context.rangeFontColor())\n .descriptionColor(context.rangeFontColor())\n .iconColor(context.rangeFontColor())\n .backgroundShape(\"rect\")\n .backgroundColorFill(d[context._color_idx])\n ;\n context.localRect.set(this, entityRect);\n context.enterEntityRect(entityRect, d);\n })\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d), \"range\", context._selection.selected(this));\n }, false)\n .on(\"dblclick\", function (d) {\n context.rootExtent = d;\n context.resetZoom();\n context.dblclick(context.rowToObj(d), \"range\", context._selection.selected(this));\n }, true)\n .on(\"mouseout.tooltip\", this.tooltip.hide)\n .on(\"mousemove.tooltip\", this.tooltip.show)\n .merge(buckets)\n .attr(\"transform\", d => context.isHorizontal() ?\n `translate(${this.dataStartPos(d)}, ${this.verticalBands(bucketIndex[d])}) ` :\n `translate(${this.verticalBands(bucketIndex[d])}, ${this.dataStartPos(d)}) `)\n .each(function (d) {\n const textBox = context.localRect.get(this);\n const x = context.dataWidth(d) / 2;\n const y = context.verticalBands.bandwidth() / 2;\n const rectWidth = Math.max(context.dataWidth(d), 2);\n const rectHeight = Math.max(context.verticalBands.bandwidth(), 2);\n const fontHeightRatio = 0.618;\n const paddingRatio = ((1 - fontHeightRatio) / 2);\n const paddingSize = paddingRatio * rectHeight;\n const fontSize = rectHeight * fontHeightRatio;\n const iconSize = fontSize;\n textBox\n .pos(context.isHorizontal() ? { x, y } : { x: y, y: x })\n .fixedHeight(context.isHorizontal() ? rectHeight : rectWidth)\n .fixedWidth(context.isHorizontal() ? rectWidth : rectHeight)\n .icon(typeof d[context._icon_idx] !== \"undefined\" ? d[context._icon_idx] : \"\")\n .title(typeof d[context._title_idx] !== \"undefined\" ? d[context._title_idx] : \"\")\n .padding(paddingSize)\n .iconDiameter(iconSize)\n .titleFontSize(fontSize)\n ;\n if (iconSize * 1.5 > rectWidth) {\n textBox.icon(null);\n }\n context.updateEntityRect(textBox, d[context._icon_idx]);\n textBox\n .render()\n ;\n });\n buckets.exit().remove();\n }\n\n exit(domNode, element) {\n this.brAxis.target(null);\n this.tlAxis.target(null);\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row, col, sel) {\n }\n\n dblclick(row, col, sel) {\n }\n\n enterEntityRect(textbox: EntityRect, d) {\n }\n\n updateEntityRect(textbox: EntityRect, d) {\n }\n\n // ITooltip ---\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n\n // SimpleSelectionMixin\n _selection;\n}\nMiniGantt.prototype._class += \" timeline_MiniGantt\";\nMiniGantt.prototype.implements(ITooltip.prototype);\nMiniGantt.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface MiniGantt {\n timePattern(): string;\n timePattern(_: string): this;\n tickFormat(): string;\n tickFormat(_: string): this;\n tickFormat_exists(): boolean;\n tooltipTimeFormat(): string;\n tooltipTimeFormat(_: string): this;\n overlapTolerence(): number;\n overlapTolerence(_: number): this;\n orientation(): string;\n orientation(_: string): this;\n rangeFontColor(): string;\n rangeFontColor(_: string): this;\n titleColumn(): string;\n titleColumn(_: string): this;\n startDateColumn(): string;\n startDateColumn(_: string): this;\n endDateColumn(): string;\n endDateColumn(_: string): this;\n iconColumn(): string;\n iconColumn(_: string): this;\n colorColumn(): string;\n colorColumn(_: string): this;\n yOffsetColumn(): string;\n yOffsetColumn(_: string): this;\n maxZoom(): number;\n maxZoom(_: number): this;\n eventGroupMod(): number;\n eventGroupMod(_: number): this;\n eventGroupOffset(): number;\n eventGroupOffset(_: number): this;\n eventFontColorColumn(): string;\n eventFontColorColumn(_: string): this;\n eventBorderColorColumn(): string;\n eventBorderColorColumn(_: string): this;\n eventBackgroundColorColumn(): string;\n eventBackgroundColorColumn(_: string): this;\n hideIconWhenCollapsed(): boolean;\n hideIconWhenCollapsed(_: boolean): this;\n hideTitleWhenCollapsed(): boolean;\n hideTitleWhenCollapsed(_: boolean): this;\n hideDescriptionWhenCollapsed(): boolean;\n hideDescriptionWhenCollapsed(_: boolean): this;\n hideAnnotationsWhenCollapsed(): boolean;\n hideAnnotationsWhenCollapsed(_: boolean): this;\n centerOnMostRecent(): boolean;\n centerOnMostRecent(_: boolean): this;\n\n}\n\nMiniGantt.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\", \"timePattern\");\nMiniGantt.prototype.publish(\"tickFormat\", null, \"string\", \"tickFormat\", undefined, { optional: true });\nMiniGantt.prototype.publish(\"tooltipTimeFormat\", \"%Y-%m-%d\", \"string\", \"tooltipTimeFormat\");\nMiniGantt.prototype.publish(\"overlapTolerence\", 2, \"number\", \"overlapTolerence\");\nMiniGantt.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"orientation\", [\"horizontal\", \"vertical\"]);\nMiniGantt.prototype.publish(\"rangeFontColor\", \"#ecf0f1\", \"html-color\", \"rangeFontColor\");\nMiniGantt.prototype.publish(\"titleColumn\", null, \"string\", \"titleColumn\");\nMiniGantt.prototype.publish(\"startDateColumn\", null, \"string\", \"startDateColumn\");\nMiniGantt.prototype.publish(\"endDateColumn\", null, \"string\", \"endDateColumn\");\nMiniGantt.prototype.publish(\"iconColumn\", null, \"string\", \"iconColumn\");\nMiniGantt.prototype.publish(\"colorColumn\", null, \"string\", \"colorColumn\");\nMiniGantt.prototype.publish(\"yOffsetColumn\", null, \"string\", \"yOffsetColumn\");\nMiniGantt.prototype.publish(\"maxZoom\", 16, \"number\", \"maxZoom\");\nMiniGantt.prototype.publish(\"eventGroupOffset\", -50, \"number\", \"eventGroupOffset\");\nMiniGantt.prototype.publish(\"eventGroupMod\", 5, \"number\", \"eventGroupMod\");\nMiniGantt.prototype.publish(\"eventFontColorColumn\", null, \"string\", \"eventFontColorColumn\");\nMiniGantt.prototype.publish(\"eventBorderColorColumn\", null, \"string\", \"eventBorderColorColumn\");\nMiniGantt.prototype.publish(\"eventBackgroundColorColumn\", null, \"string\", \"eventBackgroundColorColumn\");\nMiniGantt.prototype.publish(\"hideIconWhenCollapsed\", false, \"boolean\", \"hideIconWhenCollapsed\");\nMiniGantt.prototype.publish(\"hideTitleWhenCollapsed\", false, \"boolean\", \"hideTitleWhenCollapsed\");\nMiniGantt.prototype.publish(\"hideDescriptionWhenCollapsed\", false, \"boolean\", \"hideDescriptionWhenCollapsed\");\nMiniGantt.prototype.publish(\"hideAnnotationsWhenCollapsed\", true, \"boolean\", \"hideAnnotationsWhenCollapsed\");\nMiniGantt.prototype.publish(\"centerOnMostRecent\", false, \"boolean\", \"If true, the timeline will be centered on the most recent data point\");\n","import { d3Event, select as d3Select, SVGZoomWidget, Utility } from \"@hpcc-js/common\";\nimport { HTMLTooltip } from \"@hpcc-js/html\";\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\nimport { React, render, LabelledRect } from \"@hpcc-js/react\";\n\nexport type IGanttData = [ string, number, number, any? ];\n\nexport interface IRangeOptions {\n rangePadding: number;\n fontFamily: string;\n fontSize: number;\n strokeWidth?: number;\n fill: string;\n stroke: string;\n textFill: string;\n cornerRadius: number;\n}\n\nexport class ReactGantt extends SVGZoomWidget {\n\n protected _selection = new Utility.Selection(this);\n\n protected _buckets;\n protected _interpolateX;\n protected _interpolateY;\n \n protected _bucketsBySeries;\n protected _dataBySeries;\n protected _origIdxMap;\n private _seriesBackgrounds;\n\n protected _maxFontSize;\n\n public _tooltip;\n\n public _minStart: number;\n public _maxEnd: number;\n\n protected _title_idx = 0;\n protected _startDate_idx = 1;\n protected _endDate_idx = 2;\n protected _icon_idx = -1;\n protected _color_idx = -1;\n protected _series_idx = -1;\n protected _bucket_idx = -1;\n protected _yoffset_idx = -1;\n\n protected _maxX: number;\n protected _maxY: number;\n\n private _rangeOptions: IRangeOptions = {\n rangePadding: 2,\n fontFamily: \"Verdana\",\n fontSize: 12,\n fill: \"white\",\n stroke: \"black\",\n textFill: \"black\",\n cornerRadius: 3,\n strokeWidth: 0\n };\n \n constructor(drawStartPosition: \"origin\" | \"center\" = \"origin\") {\n super();\n this._drawStartPos = drawStartPosition;\n\n this.showToolbar_default(false);\n\n this._tooltip = new HTMLTooltip();\n this._tooltip\n .tooltipHTML(d => {\n return `<div style=\"text-align:center;\">${d[0]}<br/><br/>${d[1]} -&gt; ${d[2]}</div>`;\n });\n this._tooltip\n .followCursor(true)\n ;\n }\n\n private _rangeRenderer: React.FunctionComponent = LabelledRect;\n rangeRenderer(): React.FunctionComponent;\n rangeRenderer(_: React.FunctionComponent): this;\n rangeRenderer(_?: React.FunctionComponent): this | React.FunctionComponent {\n if (!arguments.length) return this._rangeRenderer;\n this._rangeRenderer = _;\n return this._rangeRenderer;\n }\n\n enter(domNode, element){\n super.enter(domNode, element);\n\n const context = this;\n element\n .on(\"click\", function (this: SVGElement, d) {\n context._selection.clear();\n });\n\n this._tooltip.target(domNode);\n }\n update(domNode, element){\n super.update(domNode, element);\n\n this.zoomExtent([0.05, this.maxZoom()]);\n\n this._title_idx = this.titleColumn() !== null ? this.columns().indexOf(this.titleColumn()) : this._title_idx;\n this._startDate_idx = this.startDateColumn() !== null ? this.columns().indexOf(this.startDateColumn()) : this._startDate_idx;\n this._endDate_idx = this.endDateColumn() !== null ? this.columns().indexOf(this.endDateColumn()) : this._endDate_idx;\n this._icon_idx = this.iconColumn() !== null ? this.columns().indexOf(this.iconColumn()) : this._icon_idx;\n this._color_idx = this.colorColumn() !== null ? this.columns().indexOf(this.colorColumn()) : this._color_idx;\n this._series_idx = this.seriesColumn() !== null ? this.columns().indexOf(this.seriesColumn()) : this._series_idx;\n this._bucket_idx = this.bucketColumn() !== null ? this.columns().indexOf(this.bucketColumn()) : -1;\n\n const context = this;\n const w = this.width();\n\n const x0 = 0;\n const x1 = w;\n\n this._interpolateX = d3ScaleLinear()\n .domain([this._minStart, this._maxEnd])\n .range([x0, x1])\n ;\n \n this.data().sort((a, b)=>a[1]-b[1]);\n \n if(this._series_idx > -1) {\n this._origIdxMap = {};\n this._dataBySeries = {};\n this._bucketsBySeries = {};\n this.data().forEach((dataRow, origIdx)=>{\n const seriesKey = dataRow[this._series_idx];\n if(!this._dataBySeries[seriesKey]) {\n this._origIdxMap[seriesKey] = {};\n this._dataBySeries[seriesKey] = [];\n }\n this._dataBySeries[seriesKey].push({\n dataRow,\n origIdx\n });\n });\n const gutter = this.gutter();\n let bucketOffset = 0;\n const seriesKeys = Object.keys(this._dataBySeries);\n seriesKeys.forEach(seriesKey=>{\n this._dataBySeries[seriesKey].sort((a, b)=>a.dataRow[1]-b.dataRow[1]);\n this._bucketsBySeries[seriesKey] = this.calcBuckets(this._dataBySeries[seriesKey].map(n=>n.dataRow), 1, 2);\n this._bucketsBySeries[seriesKey].bucketHeight = this.bucketHeight();\n this._bucketsBySeries[seriesKey].bucketOffset = bucketOffset;\n bucketOffset += (this._bucketsBySeries[seriesKey].bucketHeight + this.strokeWidth() + this.gutter()) * (this._bucketsBySeries[seriesKey].maxBucket+1);\n this._dataBySeries[seriesKey].forEach((n, i) => {\n this._origIdxMap[seriesKey][n.origIdx] = i;\n });\n });\n this._seriesBackgrounds = this._renderElement.selectAll(\".series-background\")\n .data(seriesKeys.map(key=>{\n return this._bucketsBySeries[key];\n }))\n ;\n this._seriesBackgrounds\n .join(\n enter => enter.append(\"rect\")\n .attr(\"class\", \"series-background\"),\n update => update,\n exit => exit\n .each(function (d) {\n delete d.element;\n })\n .remove()\n )\n .attr(\"opacity\", d => d.props && d.props.hidden ? 0 : 1)\n .each(function (this: SVGGElement, d, i) {\n d3Select(this)\n .attr(\"x\", 0)\n .attr(\"y\", d.bucketOffset - (gutter/2))\n .attr(\"width\", w)\n .attr(\"height\", ((d.bucketHeight + gutter) * (d.maxBucket + 1)) + gutter)\n .attr(\"fill\", i%2 ? context.oddSeriesBackground() : context.evenSeriesBackground())\n ;\n });\n } else {\n if(this._bucket_idx !== -1){\n this._buckets = this.calcBuckets(this.data(), this._startDate_idx, this._endDate_idx, this._bucket_idx);\n } else {\n this._buckets = this.calcBuckets(this.data(), this._startDate_idx, this._endDate_idx);\n }\n }\n const interpedStart = this._interpolateX(this._minStart);\n \n this.zoomTo(\n [interpedStart, 0],\n 1\n );\n\n const bucketHeight = this.bucketHeight();\n\n this.setRangeOptions();\n\n this._maxFontScale = (bucketHeight - (this.rangePadding() * 2));\n this.measureDataText();\n\n const itemSelection = this._renderElement.selectAll(\".item\")\n .data(this.data())\n ;\n const borderOffset1 = this.strokeWidth();\n const borderOffset2 = borderOffset1 * 2;\n itemSelection\n .join(\n enter => enter.append(\"g\")\n .attr(\"class\", \"item\")\n .on(\"click.selectionBag\", function (d, i) {\n const _id = d.id === undefined ? i : d.id;\n if(context._selection.isSelected({_id, element: d.element})){\n context._selection.clear();\n } else {\n context._selection.click(\n {\n _id,\n element: () => d.element\n }, \n d3Event\n );\n }\n context.selectionChanged();\n d3Event().stopPropagation();\n })\n .on(\"click\", function (this: SVGElement, d) {\n const selected = d.element.classed(\"selected\");\n if(d[context.columns().length]){\n d.__lparam = d[context.columns().length];\n }\n context.click(d, \"\", selected);\n })\n .on(\"dblclick\", function (this: SVGElement, d) {\n const selected = d.element.classed(\"selected\");\n if(d[context.columns().length]){\n d.__lparam = d[context.columns().length];\n }\n context.click(d, \"\", selected);\n })\n .on(\"mousein\", function (d) {\n context.highlightItem(d3Select(this), d);\n const selected = d.element.classed(\"selected\");\n context.mousein(d, \"\", selected);\n })\n .on(\"mouseover\", function (d) {\n const d3evt = d3Event();\n context._tooltip._triggerElement = d.element;\n context._tooltip._cursorLoc = [\n d3evt.clientX,\n d3evt.clientY\n ];\n context._tooltip\n .data(d)\n .visible(true)\n .fitContent(true)\n .render()\n ;\n context.highlightItem(d3Select(this), d);\n const selected = d.element.classed(\"selected\");\n context.mouseover(d, \"\", selected);\n })\n .on(\"mouseout\", function (d) {\n context._tooltip\n .visible(false)\n .render()\n ;\n context.highlightItem(null, null);\n const selected = d.element.classed(\"selected\");\n context.mouseout(d, \"\", selected);\n })\n .each(function (d, i) {\n d.that = this;\n d.element = d3Select(this);\n d.x = context._interpolateX(d[1]);\n const endX = context._interpolateX(d[2]);\n if(context._series_idx > -1) {\n const seriesKey = d[context._series_idx];\n const bucket = context._bucketsBySeries[seriesKey].bucketMap[context._origIdxMap[seriesKey][i]];\n d.y = context._bucketsBySeries[seriesKey].interpolateY(bucket) + context._bucketsBySeries[seriesKey].bucketOffset;\n } else {\n const _i = context._bucket_idx === -1 ? i : d[context._bucket_idx];\n d.y = context._buckets.interpolateY(context._buckets.bucketMap[_i]);\n }\n d.props={\n ...d[3],\n text: d[0]\n };\n d.props.width = endX - d.x;\n d.props.height = bucketHeight;\n d.x += borderOffset1;\n d.y += borderOffset1;\n d.props.width -= borderOffset2;\n d.props.height -= borderOffset2;\n d.element.attr(\"transform\", `translate(${d.x+(d.props.width/2)} ${d.y+(d.props.height/2)})`);\n }),\n update => update,\n exit => exit\n .each(function (d) {\n delete d.element;\n })\n .remove()\n )\n .attr(\"opacity\", d => d.props && d.props.hidden ? 0 : 1)\n .each(function (this: SVGGElement, d, i) {\n d.that = this;\n if(context._series_idx > -1){\n const seriesKey = d[context._series_idx];\n d.x = context.renderRangeElement(d, i, false, context._rangeOptions, seriesKey);\n } else {\n d.x = context.renderRangeElement(d, i, false, context._rangeOptions);\n }\n })\n .on(\"dblclick.zoom\", d => {\n const x1 = this._interpolateX(d[1]);\n const x2 = this._interpolateX(d[2]);\n const xRange = x2 - x1;\n const xScale = w / xRange;\n this.zoomTo(\n [\n -x1 * xScale,\n 0\n ],\n xScale\n );\n })\n ;\n element.on(\"dblclick.zoom\", null);\n }\n renderRangeElement(d, i, transformEach = false, options: any = {}, seriesKey?: string) {\n const borderOffset1 = options.strokeWidth;\n const borderOffset2 = borderOffset1 * 2;\n const padding = options.rangePadding;\n let endX;\n const x = isNaN(this._transform.x) ? 0 : this._transform.x;\n const k = isNaN(this._transform.k) ? 1 : this._transform.k;\n let b;\n const bucketHeight = this.bucketHeight();\n d.that.setAttribute(\"data-series\", seriesKey);\n\n if(this._color_idx > -1){\n d.that.setAttribute(\"data-color\", d[this._color_idx]);\n }\n \n if(seriesKey !== undefined) {\n b = this._bucketsBySeries[seriesKey].bucketMap[this._origIdxMap[seriesKey][i]];\n d.that.setAttribute(\"data-b\", b);\n d.that.setAttribute(\"data-bucketOffset\", this._bucketsBySeries[seriesKey].bucketOffset);\n d.y = this._bucketsBySeries[seriesKey].interpolateY(b) + this._bucketsBySeries[seriesKey].bucketOffset;\n d.that.setAttribute(\"data-dy\", d.y);\n } else {\n b = this._buckets.bucketMap[i];\n d.y = this._buckets.interpolateY(b);\n }\n if(this._color_idx > -1) {\n options.fill = d[this._color_idx];\n }\n if (!transformEach) {\n d.x = this._interpolateX(d[1]);\n endX = this._interpolateX(d[2]);\n d.props={\n ...d[3],\n text: d[0]\n };\n d.props.width = (endX - d.x) / k;\n } else {\n d.x = this._interpolateX(d[1]) * k;\n endX = this._interpolateX(d[2]) * k;\n d.props={\n ...d[3],\n text: d[0]\n };\n d.props.width = (endX - d.x)/k;\n d.x += x;\n d.props.width *= k;\n }\n d.props.height = bucketHeight;\n if(seriesKey === undefined && this._buckets.bucketScale < 1) {\n d.props.height = this._buckets.bucketScale * bucketHeight;\n }\n if(d.element === undefined && d.that){\n d.element = d3Select(d.that);\n }\n d.element.attr(\"transform\", `translate(${d.x+(d.props.width/2)} ${d.y+(d.props.height/2)})`);\n \n d.x += borderOffset1;\n d.y += borderOffset1;\n d.props.width -= borderOffset2;\n d.props.height -= borderOffset2;\n d.props.width = d.props.width < 1 ? 1 : d.props.width;\n d.props.height = d.props.height < 1 ? 1 : d.props.height;\n\n let text = this.truncateText(d.props.text, d.props.width - padding, this._maxFontScale);\n \n if(text !== d.props.text){\n text = this.truncateText(d.props.text, d.props.width - padding);\n } else {\n d.props.fontSize = this._maxFontScale * options.fontSize;\n }\n if(seriesKey === undefined && this._buckets.bucketScale < 1) {\n d.props.fontSize = Math.min(this._maxFontScale, this._buckets.bucketScale) * options.fontSize;\n }\n if(!this._maxY || this._maxY < d.y + d.props.height) {\n this._maxY = d.y + d.props.height;\n }\n if(!this._maxX || this._maxX < d.x + d.props.width) {\n this._maxX = d.x + d.props.width;\n }\n render(\n this._rangeRenderer,\n {\n ...options,\n ...d.props,\n text,\n },\n d.that\n );\n }\n\n setRangeOptions(){\n this._rangeOptions = {\n rangePadding: this.rangePadding(),\n fontFamily: this.fontFamily(),\n fontSize: this.fontSize(),\n strokeWidth: this.strokeWidth(),\n fill: this.fill(),\n stroke: this.stroke(),\n textFill: this.rangeFontColor(),\n cornerRadius: this.cornerRadius(),\n };\n }\n \n public _transform = {k:1, x:0, y:0};\n zoomed(transform) {\n this._transform = transform;\n switch(this.renderMode()){\n case \"scale-all\": \n this._zoomScale = transform.k;\n this._zoomTranslate = [transform.x, 0];\n this._zoomG.attr(\"transform\", `translate(${transform.x} ${0})scale(${transform.k} 1)`);\n break;\n default:\n const options = this._rangeOptions;\n this.data().forEach((d, i)=>{\n if(this._color_idx > -1){\n options.fill = d[this._color_idx];\n }\n if(this._series_idx > -1){\n const seriesKey = d[this._series_idx];\n this.renderRangeElement(d, i, true, options, seriesKey);\n } else {\n this.renderRangeElement(d, i, true, options);\n }\n });\n }\n\n this.zoomedHook(transform);\n }\n\n zoomedHook(transform) {\n\n }\n\n private calcBuckets(data, startKey: string | number, endKey: string | number, bucketKey?: string | number) {\n const bucketMap = {};\n const bucketKeyMap = {};\n const tol = this.overlapTolerence();\n const buckets = [{end:-Infinity}];\n let maxBucket = 0;\n if(bucketKey !== undefined) {\n data.forEach((d, i)=>{\n bucketMap[i] = d[bucketKey];\n bucketKeyMap[d[bucketKey]] = true;\n });\n maxBucket = Object.keys(bucketKeyMap).length;\n } else {\n data.forEach((d, i)=>{\n for (let i2 = 0; i2 < buckets.length; ++i2) {\n if (i === 0 || buckets[i2][endKey] + tol <= d[startKey]) {\n bucketMap[i] = i2;\n if(maxBucket < i2)maxBucket = i2;\n buckets[i2][endKey] = d[endKey];\n break;\n }\n }\n if(bucketMap[i] === undefined){\n bucketMap[i] = buckets.length;\n const b = {};\n b[endKey] = d[endKey];\n buckets.push(b as any);\n }\n \n if(maxBucket < bucketMap[i])maxBucket = bucketMap[i];\n });\n }\n const height = (maxBucket+1) * (this.bucketHeight() + this.gutter());\n return {\n bucketMap,\n maxBucket,\n bucketScale: this.height() / height,\n interpolateY: d3ScaleLinear()\n .domain([0, maxBucket+1])\n .range([0, Math.min(this.height(), height)])\n };\n }\n\n data(): IGanttData[];\n data(_: IGanttData[]): this;\n data(_?: IGanttData[]): this | IGanttData[] {\n const retVal = super.data.apply(this, arguments);\n if(arguments.length > 0) {\n this._minStart = Math.min(...this.data().map(n=>n[1])) ?? 0;\n this._maxEnd = Math.max(...this.data().map(n=>n[2])) ?? 1;\n this.measureDataText(true);\n }\n return retVal;\n }\n \n protected _textWidths;\n protected _maxFontScale;\n protected _characterWidths;\n protected _prevFontFamily;\n protected _prevFontSize;\n measureDataText(forceMeasure = false) {\n const textWidths = {};\n const characterWidths = {};\n const fontFamily = this.fontFamily();\n const fontSize = this.fontSize();\n const bucketHeight = this.bucketHeight();\n\n if(bucketHeight){\n this._maxFontScale = (bucketHeight - (this.rangePadding() * 2)) / fontSize;\n }\n\n if(forceMeasure || this._prevFontFamily !== fontFamily || this._prevFontSize !== fontSize) {\n characterWidths[\".\"] = Utility.textSize(\".\", fontFamily, fontSize).width;\n this.data().forEach(d=>{\n if(!textWidths[d[0]]){\n textWidths[d[0]] = Utility.textSize(d[0], fontFamily, fontSize).width;\n }\n d[0].split(\"\").forEach(char=>{\n if(!characterWidths[char]){\n characterWidths[char] = Utility.textSize(char, fontFamily, fontSize).width;\n }\n });\n });\n this._textWidths = textWidths;\n this._characterWidths = characterWidths;\n }\n this._prevFontFamily = fontFamily;\n this._prevFontSize = fontSize;\n }\n\n truncateText(text, width, scale = 1) {\n const textFits = this._textWidths[text] * scale < width;\n if(textFits){\n return text;\n }\n let ret = \"\";\n let sum = 0;\n const _width = width - (this._characterWidths[\".\"] * 3);\n for(const char of text){\n sum += this._characterWidths[char];\n if(sum < _width){\n ret += char;\n } else {\n break;\n }\n }\n return _width < 0 ? \"\" : ret + \"...\";\n }\n\n resize(_size?: { width: number, height: number }) {\n let retVal;\n if(this.fitWidthToContent() || this.fitHeightToContent()) {\n retVal = super.resize.call(this, {\n width: _size.width,\n height: this._maxY\n });\n } else {\n retVal = super.resize.apply(this, arguments);\n }\n return retVal;\n }\n\n selectionChanged() {\n \n }\n \n highlightItem(_element, d) {\n \n }\n\n click(row, _col, sel) {\n \n }\n\n dblclick(row, _col, sel) {\n \n }\n\n mousein(row, _col, sel) {\n }\n\n mouseover(row, _col, sel) {\n }\n\n mouseout(row, _col, sel) {\n }\n}\nReactGantt.prototype._class += \" timeline_ReactGantt\";\n\nexport interface ReactGantt {\n titleColumn(): string;\n titleColumn(_: string): this;\n startDateColumn(): string;\n startDateColumn(_: string): this;\n endDateColumn(): string;\n endDateColumn(_: string): this;\n iconColumn(): string;\n iconColumn(_: string): this;\n colorColumn(): string;\n colorColumn(_: string): this;\n seriesColumn(): string;\n seriesColumn(_: string): this;\n bucketColumn(): string;\n bucketColumn(_: string): this;\n overlapTolerence(): number;\n overlapTolerence(_: number): this;\n smallestRangeWidth(): number;\n smallestRangeWidth(_: number): this;\n bucketHeight(): number;\n bucketHeight(_: number): this;\n gutter(): number;\n gutter(_: number): this;\n showToolbar_default(_: boolean): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n strokeWidth(): number;\n strokeWidth(_: number): this;\n stroke(): string;\n stroke(_: string): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n fill(): string;\n fill(_: string): this;\n rangeFontColor(): string;\n rangeFontColor(_: string): this;\n rangePadding(): number;\n rangePadding(_: number): this;\n renderMode(): \"default\" | \"scale-all\";\n renderMode(_: \"default\" | \"scale-all\"): this;\n maxZoom(): number;\n maxZoom(_: number): this;\n fitWidthToContent(): boolean;\n fitWidthToContent(_: boolean): this;\n fitHeightToContent(): boolean;\n fitHeightToContent(_: boolean): this;\n evenSeriesBackground(): string;\n evenSeriesBackground(_: string): this;\n oddSeriesBackground(): string;\n oddSeriesBackground(_: string): this;\n}\n\nReactGantt.prototype.publish(\"fitWidthToContent\", false, \"boolean\", \"If true, resize will simply reapply the bounding box width\");\nReactGantt.prototype.publish(\"fitHeightToContent\", false, \"boolean\", \"If true, resize will simply reapply the bounding box height\");\nReactGantt.prototype.publish(\"titleColumn\", null, \"string\", \"Column name to for the title\");\nReactGantt.prototype.publish(\"startDateColumn\", null, \"string\", \"Column name to for the start date\");\nReactGantt.prototype.publish(\"endDateColumn\", null, \"string\", \"Column name to for the end date\");\nReactGantt.prototype.publish(\"iconColumn\", null, \"string\", \"Column name to for the icon\");\nReactGantt.prototype.publish(\"colorColumn\", null, \"string\", \"Column name to for the color\");\nReactGantt.prototype.publish(\"seriesColumn\", null, \"string\", \"Column name to for the series identifier\");\nReactGantt.prototype.publish(\"bucketColumn\", null, \"string\", \"Column name to for the bucket identifier\");\nReactGantt.prototype.publish(\"renderMode\", \"default\", \"set\", \"Render modes vary in features and performance\", [\"default\", \"scale-all\"]);\nReactGantt.prototype.publish(\"rangePadding\", 3, \"number\", \"Padding within each range rectangle (pixels)\");\nReactGantt.prototype.publish(\"fill\", \"#1f77b4\", \"string\", \"Background color of range rectangle\");\nReactGantt.prototype.publish(\"stroke\", null, \"string\", \"Color of range rectangle border\");\nReactGantt.prototype.publish(\"strokeWidth\", null, \"number\", \"Width of range rectangle border (pixels)\");\nReactGantt.prototype.publish(\"cornerRadius\", 3, \"number\", \"Space between range buckets (pixels)\");\nReactGantt.prototype.publish(\"fontFamily\", null, \"string\", \"Font family within range rectangle\", null, {optional:true});\nReactGantt.prototype.publish(\"fontSize\", 10, \"number\", \"Size of font within range rectangle (pixels)\");\nReactGantt.prototype.publish(\"rangeFontColor\", \"#ecf0f1\", \"html-color\", \"rangeFontColor\");\nReactGantt.prototype.publish(\"overlapTolerence\", 2, \"number\", \"overlapTolerence\");\nReactGantt.prototype.publish(\"smallestRangeWidth\", 10, \"number\", \"Width of the shortest range (pixels)\");\nReactGantt.prototype.publish(\"bucketHeight\", 100, \"number\", \"Max height of range element (pixels)\");\nReactGantt.prototype.publish(\"gutter\", 2, \"number\", \"Space between range buckets (pixels)\");\nReactGantt.prototype.publish(\"maxZoom\", 16, \"number\", \"Maximum zoom\");\nReactGantt.prototype.publish(\"evenSeriesBackground\", \"#FFFFFF\", \"html-color\", \"Background color of even series rows\");\nReactGantt.prototype.publish(\"oddSeriesBackground\", \"#DDDDDD\", \"html-color\", \"Background color of odd series rows\");\n","import { Axis } from \"@hpcc-js/chart\";\nimport { SVGWidget } from \"@hpcc-js/common\";\nimport { ReactGantt } from \"./ReactGantt\";\n\nexport type IAxisGanttData = [ string, number | string, number | string, any? ] | any[];\n\nexport class ReactAxisGantt extends SVGWidget {\n\n protected _topAxis: Axis = new Axis(\"center\")\n .orientation(\"top\")\n .type(\"linear\")\n .shrinkToFit(\"none\")\n .overlapMode(\"hide\")\n .extend(0)\n .tickFormat(\"d\")\n ;\n protected _gantt: ReactGantt = new ReactGantt(\"center\")\n .stroke(\"#000000\")\n ;\n protected _bottomAxis: Axis = new Axis(\"center\")\n .orientation(\"bottom\")\n .type(\"linear\")\n .shrinkToFit(\"none\")\n .overlapMode(\"hide\")\n .extend(0)\n .tickFormat(\"d\")\n ;\n \n protected _topAxisElement;\n protected _contentElement;\n protected _bottomAxisElement;\n protected _topRect;\n protected _contentRect;\n protected _bottomRect;\n\n protected rangeRenderer;\n\n constructor(){\n super();\n this._drawStartPos = \"origin\";\n this.rangeRenderer = function () {\n const ret = this._gantt.rangeRenderer.apply(this._gantt, arguments);\n if(!arguments.length)return ret;\n return this;\n };\n }\n\n resizeWrappers() {\n\n const w = this.width();\n const h = this.height();\n\n const axisHeight = this.axisHeight(); //TODO: Dynamic scaling to allow for small resolutions?\n \n const contentHeight = (h - (axisHeight * 2));\n const borderOffset1 = this.strokeWidth();\n this._topRect\n .attr(\"height\", axisHeight)\n .attr(\"width\", w)\n .attr(\"fill\", \"transparent\")\n ;\n this._topAxisElement.attr(\"transform\", \"translate(0 0)\");\n this._topAxis.resize({height:axisHeight, width:w});\n this._contentRect\n .attr(\"height\", contentHeight)\n .attr(\"width\", w)\n .attr(\"fill\", \"transparent\")\n ;\n this._contentElement.attr(\"transform\", `translate(0 ${axisHeight + borderOffset1})`);\n this._gantt.resize({height:contentHeight, width:w});\n this._bottomRect\n .attr(\"height\", axisHeight)\n .attr(\"width\", w)\n .attr(\"fill\", \"transparent\")\n ;\n this._bottomAxisElement.attr(\"transform\", `translate(0 ${axisHeight + contentHeight + borderOffset1})`);\n this._bottomAxis.resize({height:axisHeight, width:w});\n }\n\n enter(domNode, element){\n super.enter(domNode, element);\n\n this._gantt.click = (row, col, sel) => {\n this.click(row, col, sel);\n };\n\n this._gantt.dblclick = (row, col, sel) => {\n this.dblclick(row, col, sel);\n };\n\n this._topAxisElement = element.append(\"g\")\n .attr(\"class\", \"top-axis-wrapper\")\n ;\n this._topRect = this._topAxisElement.append(\"rect\")\n .attr(\"class\", \"top-axis-rect\")\n ;\n this._contentElement = element.append(\"g\")\n .attr(\"class\", \"content-wrapper\")\n ;\n this._contentRect = this._contentElement.append(\"rect\")\n .attr(\"class\", \"content-rect\")\n ;\n this._bottomAxisElement = element.append(\"g\")\n .attr(\"class\", \"bottom-axis-wrapper\")\n ;\n this._bottomRect = this._bottomAxisElement.append(\"rect\")\n .attr(\"class\", \"top-axis-rect\")\n ;\n this._topAxis.target(this._topAxisElement.node());\n this._gantt.target(this._contentElement.node()).bucketHeight(30);\n this._bottomAxis.target(this._bottomAxisElement.node());\n\n this.resizeWrappers();\n\n this._gantt.zoomedHook = (transform) => {\n this.onzoom(transform);\n };\n }\n\n onzoom(transform) {\n\n const w = this.width();\n const low = this._gantt._minStart;\n const high = this._gantt._maxEnd;\n const range = high - low;\n const wpp = range / w;\n const nextLow = Math.floor(low - (wpp * (transform.x / transform.k)));\n const nextHigh = Math.ceil((range / transform.k) + nextLow);\n\n this._topAxis\n .fontFamily(this.axisFontFamily())\n .fontSize(this.axisFontSize())\n .tickLength(this.axisTickLength())\n .low(nextLow)\n .high(nextHigh)\n .render()\n ;\n this._bottomAxis\n .fontFamily(this.axisFontFamily())\n .fontSize(this.axisFontSize())\n .tickLength(this.axisTickLength())\n .low(nextLow)\n .high(nextHigh)\n .render()\n ;\n }\n\n update(domNode, element){\n super.update(domNode, element);\n this._topAxis.tickFormat(this.tickFormat()).render();\n this._bottomAxis.tickFormat(this.tickFormat()).render();\n this._gantt.render();\n }\n\n columns(): string[];\n columns(_: string[]): this;\n columns(_?: string[]): this | string[] {\n const retVal = super.columns.apply(this, arguments);\n if(arguments.length > 0) {\n this._gantt.columns(_);\n }\n return retVal;\n }\n\n data(): IAxisGanttData[];\n data(_: IAxisGanttData[]): this;\n data(_?: IAxisGanttData[]): this | IAxisGanttData[] {\n const retVal = super.data.apply(this, arguments);\n if(arguments.length > 0) {\n const ganttData: any[] = this.data().map(n=>{\n const ret = [...n];\n ret[1] = isNaN(n[1] as any) ? new Date(n[1]).getTime() : Number(n[1]);\n ret[2] = isNaN(n[2] as any) ? new Date(n[2]).getTime() : Number(n[2]);\n return ret;\n });\n this._gantt._minStart = Math.min(...ganttData.map(n=>n[1])) ?? 0;\n this._gantt._maxEnd = Math.max(...ganttData.map(n=>n[2])) ?? 1;\n this._gantt.data(ganttData);\n }\n return retVal;\n }\n\n resize(_size?: { width: number, height: number }) {\n const retVal = super.resize.apply(this, arguments);\n\n if(this._topAxisElement){\n this.resizeWrappers();\n }\n\n return retVal;\n }\n\n click(row, col, sel) {\n\n }\n\n dblclick(row, col, sel) {\n \n }\n \n tooltip() {\n return this._gantt._tooltip;\n }\n}\nReactAxisGantt.prototype._class += \" timeline_ReactAxisGantt\";\n\nexport interface ReactAxisGantt {\n tickFormat(): string;\n tickFormat(_: string): this;\n tickFormat_exists(): boolean;\n overlapTolerence(): number;\n overlapTolerence(_: number): this;\n smallestRangeWidth(): number;\n smallestRangeWidth(_: number): this;\n scaleMode(): boolean;\n scaleMode(_: boolean): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n strokeWidth(): number;\n strokeWidth(_: number): this;\n stroke(): string;\n stroke(_: string): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n axisFontSize(): number;\n axisFontSize(_: number): this;\n axisFontFamily(): string;\n axisFontFamily(_: string): this;\n axisTickLength(): number;\n axisTickLength(_: number): this;\n axisHeight(): number;\n axisHeight(_: number): this;\n titleColumn(): string;\n titleColumn(_: string): this;\n startDateColumn(): string;\n startDateColumn(_: string): this;\n endDateColumn(): string;\n endDateColumn(_: string): this;\n iconColumn(): string;\n iconColumn(_: string): this;\n colorColumn(): string;\n colorColumn(_: string): this;\n bucketColumn(): string;\n bucketColumn(_: string): this;\n maxZoom(): number;\n maxZoom(_: number): this;\n}\nReactAxisGantt.prototype.publish(\"tickFormat\", null, \"string\", \"Format rule applied to axis tick labels\", undefined, { optional: true });\nReactAxisGantt.prototype.publish(\"axisHeight\", 22, \"number\", \"Height of axes (pixels)\");\nReactAxisGantt.prototype.publish(\"overlapTolerence\", 2, \"number\", \"overlapTolerence\");\nReactAxisGantt.prototype.publish(\"smallestRangeWidth\", 10, \"number\", \"Width of the shortest range (pixels)\");\nReactAxisGantt.prototype.publish(\"axisFontSize\", null, \"number\", \"Font size of axis tick labels\");\nReactAxisGantt.prototype.publish(\"axisFontFamily\", null, \"string\", \"Font family of axis tick labels\");\nReactAxisGantt.prototype.publish(\"axisTickLength\", null, \"number\", \"Length of axis ticks\");\nReactAxisGantt.prototype.publishProxy(\"gutter\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"renderMode\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"strokeWidth\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"fontSize\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"fontFamily\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"stroke\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"cornerRadius\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"titleColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"startDateColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"endDateColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"iconColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"colorColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"bucketColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"maxZoom\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"bucketHeight\", \"_gantt\");\n","import { min as d3Min, max as d3Max } from \"d3-array\";\nimport { Axis } from \"@hpcc-js/chart\";\nimport { Border2 } from \"@hpcc-js/layout\";\nimport { ReactGantt } from \"./ReactGantt\";\nimport { IAxisGanttData } from \"./ReactAxisGantt\";\nimport { React } from \"@hpcc-js/react\";\n\nexport class ReactAxisGanttSeries extends Border2 {\n\n protected _topAxis: Axis = new Axis(\"origin\")\n .orientation(\"top\")\n .type(\"linear\")\n .shrinkToFit(\"none\")\n .overlapMode(\"hide\")\n .extend(0)\n .tickFormat(\"d\")\n ;\n protected _gantt: ReactGantt = new ReactGantt(\"origin\")\n .stroke(\"#000000\")\n .fitHeightToContent(true)\n ;\n protected _bottomAxis: Axis = new Axis(\"origin\")\n .orientation(\"bottom\")\n .type(\"linear\")\n .shrinkToFit(\"none\")\n .overlapMode(\"hide\")\n .extend(0)\n .tickFormat(\"d\")\n ;\n\n protected _topAxisElement;\n protected _contentElement;\n protected _bottomAxisElement;\n protected _topRect;\n protected _contentRect;\n protected _bottomRect;\n\n constructor() {\n super();\n this.centerOverflowX_default(\"hidden\");\n this.centerOverflowY_default(\"auto\");\n }\n\n rangeRenderer(): React.FunctionComponent;\n rangeRenderer(_: React.FunctionComponent): this;\n rangeRenderer(_?: React.FunctionComponent): this | React.FunctionComponent {\n const ret = this._gantt.rangeRenderer.apply(this._gantt, arguments);\n if (!arguments.length) return ret;\n return this;\n }\n\n resizeWrappers() {\n\n const w = this.width();\n const h = this.height();\n\n const axisHeight = this.axisHeight(); //TODO: Dynamic scaling to allow for small resolutions?\n const contentHeight = (h - (axisHeight * 2));\n\n this.bottomHeight(axisHeight);\n\n this._topWA.resize({\n width: w,\n height: axisHeight\n });\n this._centerWA.resize({\n width: w,\n height: contentHeight\n });\n this._bottomWA.resize({\n width: w,\n height: axisHeight\n });\n this.top().render();\n this.bottom().render();\n this.center().render();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._gantt.click = (row, col, sel) => {\n this.click(row, col, sel);\n };\n\n this._gantt.dblclick = (row, col, sel) => {\n this.dblclick(row, col, sel);\n };\n\n this.top(this._topAxis);\n this.center(this._gantt);\n this.bottom(this._bottomAxis);\n\n this.resizeWrappers();\n\n this._gantt.zoomedHook = (transform) => {\n this.onzoom(transform);\n };\n }\n\n onzoom(transform) {\n const w = this.width();\n const low = this._gantt._minStart;\n const high = this._gantt._maxEnd;\n const range = high - low;\n const wpp = range / w;\n const nextLow = Math.floor(low - (wpp * (transform.x / transform.k)));\n const nextHigh = Math.ceil((range / transform.k) + nextLow);\n\n this._topAxis\n .fontFamily(this.axisFontFamily())\n .fontSize(this.axisFontSize())\n .tickLength(this.axisTickLength())\n .low(nextLow)\n .high(nextHigh)\n .lazyRender()\n ;\n this._bottomAxis\n .fontFamily(this.axisFontFamily())\n .fontSize(this.axisFontSize())\n .tickLength(this.axisTickLength())\n .low(nextLow)\n .high(nextHigh)\n .lazyRender()\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._topAxis.tickFormat(this.tickFormat()).render();\n this._bottomAxis.tickFormat(this.tickFormat()).render();\n this._gantt.render();\n }\n\n columns(): string[];\n columns(_: string[]): this;\n columns(_?: string[]): this | string[] {\n const retVal = super.columns.apply(this, arguments);\n if (arguments.length > 0) {\n this._gantt.columns(_);\n }\n return retVal;\n }\n\n data(): IAxisGanttData[];\n data(_: IAxisGanttData[]): this;\n data(_?: IAxisGanttData[]): this | IAxisGanttData[] {\n const retVal = super.data.apply(this, arguments);\n if (arguments.length > 0) {\n const ganttData: any[] = this.data().map(n => {\n const ret = [...n];\n ret[1] = isNaN(n[1] as any) ? new Date(n[1]).getTime() : Number(n[1]);\n ret[2] = isNaN(n[2] as any) ? new Date(n[2]).getTime() : Number(n[2]);\n return ret;\n });\n\n this._gantt._minStart = d3Min(ganttData, n => n[1]);\n this._gantt._maxEnd = d3Max(ganttData, n => n[2]);\n this._gantt.data(ganttData);\n }\n return retVal;\n }\n\n resize(_size?: { width: number, height: number }) {\n const retVal = super.resize.apply(this, arguments);\n\n if (this._topAxisElement) {\n this.resizeWrappers();\n }\n\n return retVal;\n }\n\n click(row, col, sel) {\n\n }\n\n dblclick(row, col, sel) {\n\n }\n\n tooltip() {\n return this._gantt._tooltip;\n }\n}\nReactAxisGanttSeries.prototype._class += \" timeline_ReactAxisGanttSeries\";\n\nexport interface ReactAxisGanttSeries {\n tickFormat(): string;\n tickFormat(_: string): this;\n tickFormat_exists(): boolean;\n overlapTolerence(): number;\n overlapTolerence(_: number): this;\n smallestRangeWidth(): number;\n smallestRangeWidth(_: number): this;\n scaleMode(): boolean;\n scaleMode(_: boolean): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n strokeWidth(): number;\n strokeWidth(_: number): this;\n stroke(): string;\n stroke(_: string): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n axisFontSize(): number;\n axisFontSize(_: number): this;\n axisFontFamily(): string;\n axisFontFamily(_: string): this;\n axisTickLength(): number;\n axisTickLength(_: number): this;\n axisHeight(): number;\n axisHeight(_: number): this;\n titleColumn(): string;\n titleColumn(_: string): this;\n startDateColumn(): string;\n startDateColumn(_: string): this;\n endDateColumn(): string;\n endDateColumn(_: string): this;\n iconColumn(): string;\n iconColumn(_: string): this;\n colorColumn(): string;\n colorColumn(_: string): this;\n seriesColumn(): string;\n seriesColumn(_: string): this;\n bucketColumn(): string;\n bucketColumn(_: string): this;\n maxZoom(): number;\n maxZoom(_: number): this;\n}\nReactAxisGanttSeries.prototype.publish(\"tickFormat\", null, \"string\", \"Format rule applied to axis tick labels\", undefined, { optional: true });\nReactAxisGanttSeries.prototype.publish(\"axisHeight\", 22, \"number\", \"Height of axes (pixels)\");\nReactAxisGanttSeries.prototype.publish(\"overlapTolerence\", 2, \"number\", \"overlapTolerence\");\nReactAxisGanttSeries.prototype.publish(\"smallestRangeWidth\", 10, \"number\", \"Width of the shortest range (pixels)\");\nReactAxisGanttSeries.prototype.publish(\"axisFontSize\", null, \"number\", \"Font size of axis tick labels\");\nReactAxisGanttSeries.prototype.publish(\"axisFontFamily\", null, \"string\", \"Font family of axis tick labels\");\nReactAxisGanttSeries.prototype.publish(\"axisTickLength\", null, \"number\", \"Length of axis ticks\");\nReactAxisGanttSeries.prototype.publishProxy(\"gutter\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"renderMode\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"strokeWidth\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"fontSize\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"fontFamily\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"stroke\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"cornerRadius\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"titleColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"startDateColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"endDateColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"iconColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"colorColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"seriesColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"bucketColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"maxZoom\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"evenSeriesBackground\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"oddSeriesBackground\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"bucketHeight\", \"_gantt\");\n","import { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\nimport { ReactAxisGantt } from \"./ReactAxisGantt\";\n\nexport class ReactTimeline extends ReactAxisGantt {\n\n protected _axisLabelFormatter;//TODO: add a type to this? d3 time formatting function type?\n\n constructor(){\n super();\n this._drawStartPos = \"origin\";\n this._topAxis.type(\"time\");\n this._bottomAxis.type(\"time\");\n\n this.tooltipHTML((d: any) => {\n const parser = d3TimeParse(\"%Q\");\n const startTime = parser(d[1]);\n const endTime = parser(d[2]);\n\n const formatter = d3TimeFormat(this.tooltipTimeFormat());\n return `<div style=\"text-align:center;\">${d[0]}<br/><br/>${formatter(startTime)} -&gt; ${formatter(endTime)}</div>`;\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n if(this.timePattern_exists()) {\n\n let minTimestamp = Infinity;\n let maxTimestamp = -Infinity;\n let lowDateStr = \"\";\n let highDateStr = \"\";\n this.data().map(n=>{\n const start = new Date(n[1]).getTime();\n const end = new Date(n[2]).getTime();\n if(minTimestamp > start){\n minTimestamp = start;\n lowDateStr = \"\" + n[1];\n }\n if(maxTimestamp < end){\n maxTimestamp = end;\n highDateStr = \"\" + n[2];\n }\n });\n this._topAxis\n .type(\"time\")\n .timePattern(this.timePattern())\n .overlapMode(\"none\")\n .tickFormat(this._axisLabelFormatter)\n .low(lowDateStr)\n .high(highDateStr)\n ;\n this._bottomAxis\n .type(\"time\")\n .timePattern(this.timePattern())\n .overlapMode(\"none\")\n .tickFormat(this._axisLabelFormatter)\n .low(lowDateStr)\n .high(highDateStr)\n ;\n this._gantt._minStart = minTimestamp;\n this._gantt._maxEnd = maxTimestamp;\n }\n }\n\n tooltipHTML(callback) {\n this._tooltipHTML = callback;\n this.tooltip().tooltipHTML(this._tooltipHTML);\n return this;\n }\n\n parseAxisValue(v) {\n const parseTime = d3TimeParse(\"%Q\");\n const parsedTime = parseTime(v);\n\n const formatTime = d3TimeFormat(this.timePattern());\n return formatTime(parsedTime);\n }\n\n onzoom(transform) {\n \n const w = this.width();\n const low = this._gantt._minStart;\n const high = this._gantt._maxEnd;\n const range = high - low;\n const wpp = range / w;\n const nextLow = Math.floor(low - (wpp * (transform.x / transform.k)));\n const nextHigh = Math.ceil((range / transform.k) + nextLow);\n\n this._topAxis\n .low(this.parseAxisValue(nextLow))\n .high(this.parseAxisValue(nextHigh))\n .render()\n ;\n this._bottomAxis\n .low(this.parseAxisValue(nextLow))\n .high(this.parseAxisValue(nextHigh))\n .render()\n ;\n }\n\n _tooltipHTML: (_) => string;\n}\nReactTimeline.prototype._class += \" timeline_ReactTimeline\";\n\nexport interface ReactTimeline {\n timePattern(): string;\n timePattern(_: string): this;\n timePattern_exists(): boolean;\n tooltipTimeFormat(): string;\n tooltipTimeFormat(_: string): this;\n}\nReactTimeline.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\", \"Time pattern used for parsing datetime strings on each data row\", null, {optional:true});\nReactTimeline.prototype.publish(\"tooltipTimeFormat\", \"%Y-%m-%d\", \"string\", \"Time format used in the default html tooltip\");\n\n","import { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\nimport { ReactAxisGanttSeries } from \"./ReactAxisGanttSeries\";\n\nconst parseTime = d3TimeParse(\"%Q\");\nexport class ReactTimelineSeries extends ReactAxisGanttSeries {\n\n protected _axisLabelFormatter;//TODO: add a type to this? d3 time formatting function type?\n\n constructor(){\n super();\n this._topAxis.type(\"time\");\n this._bottomAxis.type(\"time\");\n\n this.tooltipHTML((d: any) => {\n const startTime = parseTime(d[1]);\n const endTime = parseTime(d[2]);\n\n const formatter = d3TimeFormat(this.tooltipTimeFormat());\n return `<div style=\"text-align:center;\">${d[0]}<br/><br/>${formatter(startTime)} -&gt; ${formatter(endTime)}</div>`;\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n if(this.timePattern_exists()) {\n\n let minTimestamp = Infinity;\n let maxTimestamp = -Infinity;\n let lowDateStr = \"\";\n let highDateStr = \"\";\n this.data().forEach(n=>{\n const start = new Date(n[1]).getTime();\n const end = new Date(n[2]).getTime();\n if(minTimestamp > start){\n minTimestamp = start;\n lowDateStr = \"\" + n[1];\n }\n if(maxTimestamp < end){\n maxTimestamp = end;\n highDateStr = \"\" + n[2];\n }\n });\n this._topAxis\n .type(\"time\")\n .timePattern(this.timePattern())\n .overlapMode(\"none\")\n .tickFormat(this._axisLabelFormatter)\n .low(lowDateStr)\n .high(highDateStr)\n ;\n this._bottomAxis\n .type(\"time\")\n .timePattern(this.timePattern())\n .overlapMode(\"none\")\n .tickFormat(this._axisLabelFormatter)\n .low(lowDateStr)\n .high(highDateStr)\n ;\n this._gantt._minStart = minTimestamp;\n this._gantt._maxEnd = maxTimestamp;\n }\n }\n\n tooltipHTML(callback) {\n this._tooltipHTML = callback;\n this.tooltip().tooltipHTML(this._tooltipHTML);\n return this;\n }\n\n parseAxisValue(v) {\n const parsedTime = parseTime(v);\n\n const formatTime = d3TimeFormat(this.timePattern());\n return formatTime(parsedTime);\n }\n\n onzoom(transform) {\n \n const w = this.width();\n const low = this._gantt._minStart;\n const high = this._gantt._maxEnd;\n const range = high - low;\n const wpp = range / w;\n const nextLow = Math.floor(low - (wpp * (transform.x / transform.k)));\n const nextHigh = Math.ceil((range / transform.k) + nextLow);\n\n this._topAxis\n .low(this.parseAxisValue(nextLow))\n .high(this.parseAxisValue(nextHigh))\n .render()\n ;\n this._bottomAxis\n .low(this.parseAxisValue(nextLow))\n .high(this.parseAxisValue(nextHigh))\n .render()\n ;\n }\n\n _tooltipHTML: (_) => string;\n}\nReactTimelineSeries.prototype._class += \" timeline_ReactTimelineSeries\";\n\nexport interface ReactTimelineSeries {\n timePattern(): string;\n timePattern(_: string): this;\n timePattern_exists(): boolean;\n tooltipTimeFormat(): string;\n tooltipTimeFormat(_: string): this;\n}\nReactTimelineSeries.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\", \"Time pattern used for parsing datetime strings on each data row\", null, {optional:true});\nReactTimelineSeries.prototype.publish(\"tooltipTimeFormat\", \"%Y-%m-%d\", \"string\", \"Time format used in the default html tooltip\");\n\n"],"names":["d3Local","d3ScaleBand","d3Extent","d3TimeParse","d3TimeFormat","d3ZoomIdentity","d3Zoom","d3Select","d3ScaleLinear","d3Min","d3Max"],"mappings":";;;;;;;AAAO,IAAM,QAAQ,GAAG,oBAAoB;AACrC,IAAM,WAAW,GAAG,UAAU;AAC9B,IAAM,aAAa,GAAG;;ACF7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;AACnC,EAAE,aAAa,GAAG,MAAM,CAAC,cAAc;AACvC,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;AAClF,MAAM,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACxG,EAAE,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,CAAC,CAAC;AACF;AACO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;AAChC,EAAE,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI;AAC3C,MAAM,MAAM,IAAI,SAAS,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC;AAChG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;AACzC,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACvF,CAAC;AACD;AACO,IAAI,QAAQ,GAAG,WAAW;AACjC,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;AACnD,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC3D,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3B,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,OAAO;AACP,MAAM,OAAO,CAAC,CAAC;AACf,IAAG;AACH,EAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACzC,EAAC;AA4KD;AACO,SAAS,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AAC9C,EAAE,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACvF,MAAM,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;AAC9B,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B,OAAO;AACP,GAAG;AACH,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAgGD;AACuB,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;AACvH,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;AACnF;;ACjUA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;AACjC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC9B;AACA,EAAE,IAAY,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,EAAE;AAC1D;AACA,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;AAC1B;AACA,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9B,KAAK;AACL,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;AACnC,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,GAAG;AACH;;;;;ACfA,IAAA,SAAA,kBAAA,UAAA,MAAA,EAAA;IAA+B,SAAS,CAAA,SAAA,EAAA,MAAA,CAAA,CAAA;AAuBpC,IAAA,SAAA,SAAA,GAAA;QACI,IAAA,KAAA,GAAA,MAAK,WAAE,IAAC,IAAA,CAAA;QAdJ,KAAS,CAAA,SAAA,GAAGA,KAAO,EAAc,CAAC;QAClC,KAAc,CAAA,cAAA,GAAGA,KAAO,EAAa,CAAC;QAKpC,KAAU,CAAA,UAAA,GAAG,CAAC,CAAC;QACf,KAAc,CAAA,cAAA,GAAG,CAAC,CAAC;QACnB,KAAY,CAAA,YAAA,GAAG,CAAC,CAAC;QACjB,KAAS,CAAA,SAAA,GAAG,CAAC,CAAC,CAAC;QACf,KAAU,CAAA,UAAA,GAAG,CAAC,CAAC,CAAC;QAChB,KAAY,CAAA,YAAA,GAAG,CAAC,CAAC,CAAC;AAIxB,QAAA,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;AACpB,QAAA,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;AAExC,QAAA,KAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,KAAI,CAAC,WAAW,CAAC,UAAC,CAAM,EAAK,EAAA,OAAA,UAAW,CAAA,MAAA,CAAA,CAAC,CAAC,KAAI,CAAC,UAAU,CAAC,EAAgB,eAAA,CAAA,CAAA,MAAA,CAAA,KAAI,CAAC,gBAAgB,CAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAO,MAAA,CAAA,CAAA,MAAA,CAAA,KAAI,CAAC,gBAAgB,CAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAE,CAAA,EAAA,CAAC,CAAC;AAEnN,QAAA,KAAI,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE;aACnB,IAAI,CAAC,MAAM,CAAC,CACZ;AACL,QAAA,KAAI,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE;aACnB,IAAI,CAAC,MAAM,CAAC,CACZ;AACL,QAAA,KAAI,CAAC,aAAa,GAAGC,SAAW,EAAE;aAC7B,YAAY,CAAC,GAAG,CAAC;aACjB,YAAY,CAAC,GAAG,CAAC,CACjB;;KACR;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;AACI,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC;KAC9C,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;QAAA,IAGC,KAAA,GAAA,IAAA,CAAA;AAFG,QAAA,IAAM,IAAI,GAAA,aAAA,CAAA,aAAA,CAAA,EAAA,EAAO,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,KAAI,CAAC,cAAc,CAAC,CAAA,EAAA,CAAC,EAAK,IAAA,CAAA,EAAA,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAAA,EAAA,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAAA,EAAA,CAAC,OAAC,CAAC;AAClJ,QAAA,OAAOC,MAAQ,CAAC,IAAI,CAAC,CAAC;KACzB,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;AACI,QAAA,IAAM,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9F,QAAA,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AACpD,YAAA,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;gBACtD,IAAM,MAAM,GAAGC,SAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC/C,IAAM,SAAS,GAAGC,UAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBACnD,IAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE;oBACzB,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5E,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC/E;qBAAM;AACH,oBAAA,IAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;oBAC9B,IAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC;oBACzC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7B,oBAAA,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3D;aACJ;SACJ;AACD,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;IAED,SAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,CAAC,EAAA;AACV,QAAA,IAAG,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,WAAW,EAAC;YAC9D,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;SAClD;AACD,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,GAAG,CAAC;AAC9C,QAAA,OAAO,GAAG,CAAC;KACd,CAAA;IAED,SAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,CAAC,EAAA;AACR,QAAA,IAAG,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,WAAW,EAAC;YAC5D,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;SAChD;AACD,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5C,QAAA,OAAO,GAAG,CAAC;KACd,CAAA;IAED,SAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,CAAC,EAAA;AACP,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;KACpD,CAAA;AAGD,IAAA,SAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;;AAEI,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAEC,YAAc,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;KAC9G,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;AACI,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;KACjB,CAAA;AAGD,IAAA,SAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,OAAO,EAAE,OAAO,EAAA;QAAtB,IA0CC,KAAA,GAAA,IAAA,CAAA;AAzCG,QAAA,MAAA,CAAA,SAAK,CAAC,KAAK,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAGC,IAAM,EAAE;aAChB,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;aAChC,EAAE,CAAC,MAAM,EAAE,YAAA;YACR,KAAI,CAAC,MAAM,EAAE,CAAC;AAClB,SAAC,CAAC,CACD;QAEL,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AACnC,aAAA,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;AACrB,aAAA,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;aAClB,EAAE,CAAC,UAAU,EAAE,YAAA;AACZ,YAAA,OAAO,EAAE,CAAC,eAAe,EAAE,CAAC;YAC5B,OAAO,KAAI,CAAC,UAAU,CAAC;YACvB,KAAI,CAAC,SAAS,EAAE,CAAC;AACrB,SAAC,CAAC,CACD;AACL,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,MAAM;AACN,aAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAC9B,aAAA,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AAC7B,aAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;aAC/C,WAAW,CAAC,MAAM,CAAC;AACnB,aAAA,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,SAAS,GAAG,MAAM,CAAC;aAC1D,MAAM,CAAC,GAAG,CAAC,CACX;AACL,QAAA,IAAI,CAAC,MAAM;AACN,aAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAC9B,aAAA,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AAC7B,aAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;aAC/C,WAAW,CAAC,MAAM,CAAC;AACnB,aAAA,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,SAAS,GAAG,MAAM,CAAC;aAC1D,MAAM,CAAC,GAAG,CAAC,CACX;AAEL,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACtD,CAAA;AAGD,IAAA,SAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,OAAO,EAAE,OAAO,EAAA;QAAvB,IAoKC,KAAA,GAAA,IAAA,CAAA;AAnKG,QAAA,MAAA,CAAA,SAAK,CAAC,MAAM,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAE/B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAErB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7G,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AAC7H,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AACrH,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;AACzG,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7G,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QAErH,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,YAAY,EAAE,EAAE;AAChD,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO;SACV;QAED,IAAI,CAAC,gBAAgB,GAAGF,UAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAE/D,QAAA,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC3B,QAAA,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAE7B,QAAA,IAAI,CAAC,UAAU;AACV,aAAA,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACZ,aAAA,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACZ,aAAA,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;AACpB,aAAA,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CACtB;AAEL,QAAA,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAM;AACN,aAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACZ,aAAA,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,KAAK,GAAG,MAAM,CAAC;AACjD,aAAA,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7B,aAAA,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/B,aAAA,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAChB,aAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACd,aAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACf,aAAA,WAAW,EAAE,CACb;AAEL,QAAA,IAAI,CAAC,MAAM;AACN,aAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACZ,aAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACb,aAAA,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,QAAQ,GAAG,OAAO,CAAC;AACrD,aAAA,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7B,aAAA,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/B,aAAA,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;aAChB,MAAM,CAAC,MAAM,CAAC;AACd,aAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACd,aAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACf,aAAA,WAAW,EAAE,CACb;AAEL,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,GAAG,SAAA,CAAC;YACR,IAAI,EAAE,SAAA,CAAC;AACP,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;gBACrB,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7E,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aACvF;iBAAM;gBACH,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/E,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1F;AACD,YAAA,IAAI,CAAC,MAAM;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,IAAI,CAAC,EAAE,CAAC;AACR,iBAAA,WAAW,EAAE,CACb;AACL,YAAA,IAAI,CAAC,MAAM;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,IAAI,CAAC,EAAE,CAAC;AACR,iBAAA,WAAW,EAAE,CACb;SACR;AAED,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,UAAC,CAAC,EAAE,CAAC,EAAA;YACrD,IAAM,MAAM,GAAG,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,YAAA,IAAI,MAAM,KAAK,CAAC,EAAE;AACd,gBAAA,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/C;AACD,YAAA,OAAO,MAAM,CAAC;AAClB,SAAC,GAAG,UAAC,CAAC,EAAE,CAAC,EAAA;YACL,OAAO,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,SAAC,CAAC,CAAC;QACH,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAArB,EAAqB,CAAC,CAAC;QACvD,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAAA,EAAA,CAAC,CAAC;AAExD,QAAA,IAAI,CAAC,MAAM;AACN,aAAA,MAAM,EAAE,CACR;AACL,QAAA,IAAI,CAAC,MAAM;AACN,aAAA,MAAM,EAAE,CACR;QACL,IAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAEzC,IAAI,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACvD,QAAA,IAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC;AAC1C,QAAA,IAAI,WAAW,GAAG,MAAM,GAAG,kBAAkB,CAAC;AAC9C,QAAA,IAAM,UAAU,GAAG,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,UAAA,GAAG,EAAA,EAAI,OAAA,CAAC,KAAK,CAAC,GAAG,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,CAA9B,EAA8B,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG,EAAA,EAAI,OAAA,GAAG,CAAC,KAAI,CAAC,YAAY,CAAC,CAAA,EAAA,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1K,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;;AAE1C,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3B,YAAA,IAAI,QAAQ,GAAG,kBAAkB,GAAG,CAAC,CAAC;YACtC,IAAI,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,EAAE;gBAC3C,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC;aAC7C;YACD,IAAM,mBAAmB,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC;AACpD,YAAA,IAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC;AAC1E,YAAA,IAAM,cAAc,GAAG,UAAU,KAAK,CAAC,GAAG,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,eAAA,CAAA,MAAA,CAAgB,mBAAmB,GAAG,cAAc,EAAA,GAAA,CAAG,CAAC,CAAC;AAC9F,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,eAAA,CAAA,MAAA,CAAgB,gBAAgB,GAAG,cAAc,EAAA,GAAA,CAAG,CAAC,CAAC;SAC3F;AAAM,aAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEjD,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,eAAgB,CAAA,MAAA,CAAA,kBAAkB,EAAG,GAAA,CAAA,CAAC,CAAC;YAC5E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,eAAgB,CAAA,MAAA,CAAA,kBAAkB,EAAG,GAAA,CAAA,CAAC,CAAC;SAC5E;aAAM;YACH,kBAAkB,IAAI,UAAU,CAAC;YACjC,WAAW,IAAI,UAAU,CAAC;;AAE1B,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,eAAgB,CAAA,MAAA,CAAA,kBAAkB,EAAG,GAAA,CAAA,CAAC,CAAC;YAC5E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,eAAgB,CAAA,MAAA,CAAA,kBAAkB,EAAG,GAAA,CAAA,CAAC,CAAC;YACzE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,eAAgB,CAAA,MAAA,CAAA,kBAAkB,EAAG,GAAA,CAAA,CAAC,CAAC;SAChF;AACD,QAAA,IAAI,CAAC,MAAM;AACN,aAAA,MAAM,EAAE,CACR;QACL,IAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAIzC,IAAM,UAAU,GAAiB,EAAE,CAAC;QACpC,IAAM,WAAW,GAAG,EAAE,CAAC;QACvB,KAAoB,IAAA,EAAA,GAAA,CAAM,EAAN,QAAM,GAAA,MAAA,EAAN,oBAAM,EAAN,EAAA,EAAM,EAAE;AAAvB,YAAA,IAAM,KAAK,GAAA,QAAA,CAAA,EAAA,CAAA,CAAA;AACZ,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACxC,gBAAA,IAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7B,gBAAA,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AACrE,oBAAA,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBACvC,MAAM;iBACT;aACJ;AAED,YAAA,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;AAClC,gBAAA,WAAW,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;gBACvC,UAAU,CAAC,IAAI,CAAC;AACZ,oBAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACjC,iBAAA,CAAC,CAAC;aACN;SACJ;QAED,IAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;QACnF,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AAClG,QAAA,IAAI,CAAC,aAAa;AACb,aAAA,KAAK,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC1B,aAAA,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,UAAC,EAAE,EAAE,CAAC,EAAA,EAAK,OAAA,CAAC,CAAA,EAAA,CAAC,CAAC,CACpC;AAEL,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;SACnG;KACJ,CAAA;IAED,SAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,MAAM,EAAA;QACnB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAM,OAAO,GAAG,IAAI,CAAC;AACrB,QAAA,IAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAjB,EAAiB,CAAC,CAAC;QACpG,IAAM,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAClH,IAAM,oBAAoB,GAAG,IAAI,CAAC,sBAAsB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACxH,IAAM,wBAAwB,GAAG,IAAI,CAAC,0BAA0B,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACpI,IAAM,YAAY,GAAG,EAAE,CAAC;QACxB,KAAgB,IAAA,EAAA,GAAA,CAAM,EAAN,QAAM,GAAA,MAAA,EAAN,oBAAM,EAAN,EAAA,EAAM,EAAE;AAAnB,YAAA,IAAM,CAAC,GAAA,QAAA,CAAA,EAAA,CAAA,CAAA;YACR,IAAM,IAAI,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACzF,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACxE;QACD,IAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,QAAA,IAAM,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACtD,IAAM,eAAe,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;AACjD,aAAA,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACjC,QAAA,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;AACzB,aAAA,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAElC,eAAe;AACV,aAAA,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,EAAA;AACxB,YAAAG,MAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AAC3B,SAAC,CAAC;AACD,aAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAA;AAChB,YAAA,IAAM,SAAS,GAAG,IAAI,SAAS,EAAE;iBAC5B,MAAM,CAAC,IAAI,CAAC;iBACZ,IAAI,CAAC,GAAG,CAAC;AACT,iBAAA,mBAAmB,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;AACpD,iBAAA,oBAAoB,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;AACtD,iBAAA,0BAA0B,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC;AAClE,iBAAA,yBAAyB,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC;iBACjE,YAAY,CAAC,EAAE,CAAC;iBAChB,kBAAkB,CAAC,CAAC,CAAC;iBACrB,aAAa,CAAC,EAAE,CAAC;iBACjB,gBAAgB,CAAC,MAAM,CAAC;iBACxB,mBAAmB,CAAC,EAAE,CAAC;AACvB,iBAAA,SAAS,CAAC,kBAAkB,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACrE,iBAAA,UAAU,CAAC,kBAAkB,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACtE,iBAAA,gBAAgB,CAAC,kBAAkB,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC;iBAC5E,eAAe,CAAC,KAAK,CAAC;AACtB,iBAAA,mBAAmB,CAAC,kBAAkB,KAAK,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,wBAAwB,CAAC,CAAC;AACxF,iBAAA,qBAAqB,CAAC,kBAAkB,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC;iBACnF,YAAY,CAAC,CAAC,CAAC;iBACf,WAAW,CAAC,EAAE,CAAC;iBACf,UAAU,CAAC,EAAE,CAAC,CACd;YACL,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAChD,SAAC,CAAC;aACD,KAAK,CAAC,UAAU,CAAC;AACjB,aAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAA;YAChB,IAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnD,IAAM,MAAM,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;YACxG,IAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,kBAAkB,IAAI,CAAC,CAAC;YAClG,IAAI,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,WAAW;gBAAE,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACtH,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,SAAS,CAAC,WAAW,EAAE,EAAE;AACtG,gBAAA,IAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1E,IAAM,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;gBACzE,SAAS;qBACJ,CAAC,CAAC,QAAQ,CAAC;qBACX,CAAC,CAAC,QAAQ,CAAC;AACX,qBAAA,mBAAmB,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;AACpD,qBAAA,oBAAoB,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;AACtD,qBAAA,0BAA0B,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC;AAClE,qBAAA,yBAAyB,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC;qBACjE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;qBAC3F,KAAK,CAAC,MAAM,CAAC;qBACb,WAAW,CAAC,oBAAoB,CAAC;AACjC,qBAAA,oBAAoB,EAAE,CACtB;aACR;iBAAM;AACH,gBAAA,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;aAChD;AACD,YAAA,IAAM,WAAW,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;YAC3C,IAAI,YAAY,GAAG,WAAW;gBAAE,YAAY,GAAG,WAAW,CAAC;AAE3D,YAAAA,MAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC;AACnC,iBAAA,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AACpB,iBAAA,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AACpB,iBAAA,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACb,iBAAA,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AACpB,iBAAA,KAAK,CAAC,QAAQ,EAAE,kBAAkB,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAC7E,iBAAA,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CACxB;AACT,SAAC,CAAC,CACD;QACL,UAAU,CAAC,IAAI,EAAE;AACZ,aAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAA;YAChB,IAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnD,YAAA,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAE3B,SAAC,CAAC;AACD,aAAA,MAAM,EAAE,CAAC;QACd,IAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC7G,OAAO,YAAY,GAAG,YAAY,CAAC;KACtC,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAA;QAA9F,IA8EC,KAAA,GAAA,IAAA,CAAA;QA7EG,IAAM,OAAO,GAAG,IAAI,CAAC;AAErB,QAAA,IAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,UAAA,CAAC,EAAA;AAC/D,YAAA,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACjC,SAAC,CAAC,CAAC;AACH,QAAA,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;AACvB,aAAA,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;aACrB,KAAK,CAAC,KAAK,CAAC;AACZ,aAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,UAAA,CAAC,EAAI,EAAA,OAAA,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAxB,EAAwB,CAAC;AACtE,aAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,UAAA,CAAC,EAAI,EAAA,OAAA,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAxB,EAAwB,CAAC;AACtE,aAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;AACnG,aAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,gBAAgB,GAAG,UAAU,CAAC,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAC9H;AACL,QAAA,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;AACtB,QAAA,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA,EAAA,CAAC,CAAC;AACnG,QAAA,OAAO,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;AACtB,aAAA,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;AACxB,aAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACjD,IAAI,CAAC,UAAU,CAAC,EAAA;AACb,YAAA,IAAM,UAAU,GAAG,IAAI,UAAU,EAAE;iBAC9B,MAAM,CAAC,IAAI,CAAC;iBACZ,YAAY,CAAC,EAAE,CAAC;iBAChB,kBAAkB,CAAC,CAAC,CAAC;iBACrB,aAAa,CAAC,EAAE,CAAC;AACjB,iBAAA,UAAU,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;AACpC,iBAAA,gBAAgB,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;AAC1C,iBAAA,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;iBACnC,eAAe,CAAC,MAAM,CAAC;iBACvB,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAC1C;YACL,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACxC,YAAA,OAAO,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAC3C,SAAC,CAAC;AACD,aAAA,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,EAAA;YACpB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SAClF,EAAE,KAAK,CAAC;AACR,aAAA,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAA;AACvB,YAAA,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;YACvB,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SACrF,EAAE,IAAI,CAAC;aACP,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;aACzC,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;aAC1C,KAAK,CAAC,OAAO,CAAC;AACd,aAAA,IAAI,CAAC,WAAW,EAAE,UAAA,CAAC,EAAA,EAAI,OAAA,OAAO,CAAC,YAAY,EAAE;AAC1C,YAAA,YAAA,CAAA,MAAA,CAAa,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,eAAK,KAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAA,IAAA,CAAI;AAC5E,YAAA,YAAA,CAAA,MAAA,CAAa,KAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAK,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAI,IAAA,CAAA,CAAA,EAAA,CAAC;aAChF,IAAI,CAAC,UAAU,CAAC,EAAA;YACb,IAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnC,IAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAChD,YAAA,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,YAAA,IAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YAClE,IAAM,eAAe,GAAG,KAAK,CAAC;YAC9B,IAAM,YAAY,IAAI,CAAC,CAAC,GAAG,eAAe,IAAI,CAAC,CAAC,CAAC;AACjD,YAAA,IAAM,WAAW,GAAG,YAAY,GAAG,UAAU,CAAC;AAC9C,YAAA,IAAM,QAAQ,GAAG,UAAU,GAAG,eAAe,CAAC;YAC9C,IAAM,QAAQ,GAAG,QAAQ,CAAC;YAC1B,OAAO;iBACF,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,EAAA,CAAA,EAAE,CAAC,EAAA,CAAA,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvD,iBAAA,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,UAAU,GAAG,SAAS,CAAC;AAC5D,iBAAA,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,SAAS,GAAG,UAAU,CAAC;iBAC3D,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;iBAC7E,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;iBAChF,OAAO,CAAC,WAAW,CAAC;iBACpB,YAAY,CAAC,QAAQ,CAAC;iBACtB,aAAa,CAAC,QAAQ,CAAC,CACvB;AACL,YAAA,IAAI,QAAQ,GAAG,GAAG,GAAG,SAAS,EAAE;AAC5B,gBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACtB;AACD,YAAA,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YACxD,OAAO;AACF,iBAAA,MAAM,EAAE,CACR;AACT,SAAC,CAAC,CAAC;AACP,QAAA,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;KAC3B,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,UAAK,OAAO,EAAE,OAAO,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,MAAA,CAAA,SAAK,CAAC,IAAI,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KAChC,CAAA;;AAGD,IAAA,SAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;KAClB,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;KACrB,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,OAAmB,EAAE,CAAC,EAAA;KACrC,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,OAAmB,EAAE,CAAC,EAAA;KACtC,CAAA;IASL,OAAC,SAAA,CAAA;AAAD,CA1gBA,CAA+B,SAAS,CA0gBvC,EAAA;AACD,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,qBAAqB,CAAC;AACpD,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACnD,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAqDxD,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAChF,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACvG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,UAAU,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC5F,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AACjF,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;AAC3G,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AACzF,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC1E,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAClF,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AAC9E,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACxE,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC1E,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AAC9E,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAChE,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AACnF,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AAC3E,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;AAC5F,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,wBAAwB,EAAE,IAAI,EAAE,QAAQ,EAAE,wBAAwB,CAAC,CAAC;AAChG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,4BAA4B,EAAE,IAAI,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;AACxG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,uBAAuB,EAAE,KAAK,EAAE,SAAS,EAAE,uBAAuB,CAAC,CAAC;AAChG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,wBAAwB,EAAE,KAAK,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;AAClG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,8BAA8B,EAAE,KAAK,EAAE,SAAS,EAAE,8BAA8B,CAAC,CAAC;AAC9G,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,8BAA8B,EAAE,IAAI,EAAE,SAAS,EAAE,8BAA8B,CAAC,CAAC;AAC7G,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,sEAAsE,CAAC;;AChlB3I,IAAA,UAAA,kBAAA,UAAA,MAAA,EAAA;IAAgC,SAAa,CAAA,UAAA,EAAA,MAAA,CAAA,CAAA;AA2CzC,IAAA,SAAA,UAAA,CAAY,iBAAiD,EAAA;AAAjD,QAAA,IAAA,iBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,iBAAiD,GAAA,QAAA,CAAA,EAAA;QACzD,IAAA,KAAA,GAAA,MAAK,WAAE,IAAC,IAAA,CAAA;QA1CF,KAAU,CAAA,UAAA,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,KAAI,CAAC,CAAC;QAkBzC,KAAU,CAAA,UAAA,GAAG,CAAC,CAAC;QACf,KAAc,CAAA,cAAA,GAAG,CAAC,CAAC;QACnB,KAAY,CAAA,YAAA,GAAG,CAAC,CAAC;QACjB,KAAS,CAAA,SAAA,GAAG,CAAC,CAAC,CAAC;QACf,KAAU,CAAA,UAAA,GAAG,CAAC,CAAC,CAAC;QAChB,KAAW,CAAA,WAAA,GAAG,CAAC,CAAC,CAAC;QACjB,KAAW,CAAA,WAAA,GAAG,CAAC,CAAC,CAAC;QACjB,KAAY,CAAA,YAAA,GAAG,CAAC,CAAC,CAAC;AAKpB,QAAA,KAAA,CAAA,aAAa,GAAkB;AACnC,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,WAAW,EAAE,CAAC;SACjB,CAAC;QAkBM,KAAc,CAAA,cAAA,GAA4B,YAAY,CAAC;AAgWxD,QAAA,KAAA,CAAA,UAAU,GAAG,EAAC,CAAC,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,EAAC,CAAC;AA9WhC,QAAA,KAAI,CAAC,aAAa,GAAG,iBAAiB,CAAC;AAEvC,QAAA,KAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAEhC,QAAA,KAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,QAAA,KAAI,CAAC,QAAQ;aACR,WAAW,CAAC,UAAA,CAAC,EAAA;AACV,YAAA,OAAO,4CAAmC,CAAC,CAAC,CAAC,CAAC,uBAAa,CAAC,CAAC,CAAC,CAAC,oBAAU,CAAC,CAAC,CAAC,CAAC,WAAQ,CAAC;AAC1F,SAAC,CAAC,CAAC;AACP,QAAA,KAAI,CAAC,QAAQ;aACR,YAAY,CAAC,IAAI,CAAC,CAClB;;KACR;IAKD,UAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,CAA2B,EAAA;QACrC,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,cAAc,CAAC;AAClD,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,OAAO,EAAE,OAAO,EAAA;AAClB,QAAA,MAAA,CAAA,SAAK,CAAC,KAAK,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE9B,IAAM,OAAO,GAAG,IAAI,CAAC;QACrB,OAAO;AACF,aAAA,EAAE,CAAC,OAAO,EAAE,UAA4B,CAAC,EAAA;AACtC,YAAA,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC/B,SAAC,CAAC,CAAC;AAEP,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KACjC,CAAA;AACD,IAAA,UAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,OAAO,EAAE,OAAO,EAAA;QAAvB,IAoOC,KAAA,GAAA,IAAA,CAAA;AAnOG,QAAA,MAAA,CAAA,SAAK,CAAC,MAAM,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAE/B,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAExC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7G,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AAC7H,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AACrH,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;AACzG,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7G,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;AACjH,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAEnG,IAAM,OAAO,GAAG,IAAI,CAAC;AACrB,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAEvB,IAAM,EAAE,GAAG,CAAC,CAAC;QACb,IAAM,EAAE,GAAG,CAAC,CAAC;AAEb,QAAA,IAAI,CAAC,aAAa,GAAGC,WAAa,EAAE;aAC/B,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,aAAA,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CACf;QAEL,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAG,EAAA,OAAA,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;AAEpC,QAAA,IAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAC,OAAO,EAAE,OAAO,EAAA;gBACjC,IAAM,SAAS,GAAG,OAAO,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC;gBAC5C,IAAG,CAAC,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE;AAC/B,oBAAA,KAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AACjC,oBAAA,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;iBACtC;AACD,gBAAA,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;AAC/B,oBAAA,OAAO,EAAA,OAAA;AACP,oBAAA,OAAO,EAAA,OAAA;AACV,iBAAA,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACH,YAAA,IAAM,QAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,IAAI,cAAY,GAAG,CAAC,CAAC;YACrB,IAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACnD,YAAA,UAAU,CAAC,OAAO,CAAC,UAAA,SAAS,EAAA;AACxB,gBAAA,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAG,OAAA,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAzB,EAAyB,CAAC,CAAC;AACtE,gBAAA,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,KAAI,CAAC,WAAW,CAAC,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,EAAE,EAAA,OAAA,CAAC,CAAC,OAAO,CAAT,EAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3G,gBAAA,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,GAAG,KAAI,CAAC,YAAY,EAAE,CAAC;gBACpE,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,GAAG,cAAY,CAAC;AAC7D,gBAAA,cAAY,IAAI,CAAC,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,GAAG,KAAI,CAAC,WAAW,EAAE,GAAG,KAAI,CAAC,MAAM,EAAE,KAAK,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,SAAS,GAAC,CAAC,CAAC,CAAC;gBACtJ,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA;AACvC,oBAAA,KAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC/C,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,oBAAoB,CAAC;AACxE,iBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAA,GAAG,EAAA;AACpB,gBAAA,OAAO,KAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;aACrC,CAAC,CAAC,CACF;AACL,YAAA,IAAI,CAAC,kBAAkB;iBAClB,IAAI,CACD,UAAA,KAAK,EAAI,EAAA,OAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;iBACxB,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAD9B,EAC8B,EACvC,UAAA,MAAM,IAAI,OAAA,MAAM,GAAA,EAChB,UAAA,IAAI,EAAA,EAAI,OAAA,IAAI;iBACP,IAAI,CAAC,UAAU,CAAC,EAAA;gBACb,OAAO,CAAC,CAAC,OAAO,CAAC;AACrB,aAAC,CAAC;iBACD,MAAM,EAAE,CAJL,EAIK,CAChB;iBACA,IAAI,CAAC,SAAS,EAAE,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAjC,EAAiC,CAAC;AACvD,iBAAA,IAAI,CAAC,UAA6B,CAAC,EAAE,CAAC,EAAA;gBACnCD,MAAQ,CAAC,IAAI,CAAC;AACT,qBAAA,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACZ,qBAAA,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY,IAAI,QAAM,GAAC,CAAC,CAAC,CAAC;AACtC,qBAAA,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;qBAChB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,QAAM,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,QAAM,CAAC;qBACxE,IAAI,CAAC,MAAM,EAAE,CAAC,GAAC,CAAC,GAAG,OAAO,CAAC,mBAAmB,EAAE,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAClF;AACT,aAAC,CAAC,CAAC;SACV;aAAM;AACH,YAAA,IAAG,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,EAAC;gBACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;aAC3G;iBAAM;gBACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;aACzF;SACJ;QACD,IAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEzD,IAAI,CAAC,MAAM,CACP,CAAC,aAAa,EAAE,CAAC,CAAC,EAClB,CAAC,CACJ,CAAC;AAEF,QAAA,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEzC,IAAI,CAAC,eAAe,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,aAAa,IAAI,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC;AACvD,aAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CACjB;AACL,QAAA,IAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACzC,QAAA,IAAM,aAAa,GAAG,aAAa,GAAG,CAAC,CAAC;QACxC,aAAa;aACR,IAAI,CACD,UAAA,KAAK,EAAI,EAAA,OAAA,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;AACrB,aAAA,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;AACrB,aAAA,EAAE,CAAC,oBAAoB,EAAE,UAAU,CAAC,EAAE,CAAC,EAAA;AACpC,YAAA,IAAM,GAAG,GAAG,CAAC,CAAC,EAAE,KAAK,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AAC1C,YAAA,IAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAC,GAAG,EAAA,GAAA,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAC,CAAC,EAAC;AACxD,gBAAA,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;aAC9B;iBAAM;AACH,gBAAA,OAAO,CAAC,UAAU,CAAC,KAAK,CACpB;AACI,oBAAA,GAAG,EAAA,GAAA;AACH,oBAAA,OAAO,EAAE,YAAM,EAAA,OAAA,CAAC,CAAC,OAAO,GAAA;iBAC3B,EACD,OAAO,CACV,CAAC;aACL;YACD,OAAO,CAAC,gBAAgB,EAAE,CAAC;AAC3B,YAAA,OAAO,EAAE,CAAC,eAAe,EAAE,CAAC;AAChC,SAAC,CAAC;AACD,aAAA,EAAE,CAAC,OAAO,EAAE,UAA4B,CAAC,EAAA;YACtC,IAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAC;AAC3B,gBAAA,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;aAC5C;YACD,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnC,SAAC,CAAC;AACD,aAAA,EAAE,CAAC,UAAU,EAAE,UAA4B,CAAC,EAAA;YACzC,IAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAC;AAC3B,gBAAA,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;aAC5C;YACD,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnC,SAAC,CAAC;AACD,aAAA,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAA;YACtB,OAAO,CAAC,aAAa,CAACA,MAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,IAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC/C,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrC,SAAC,CAAC;AACD,aAAA,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,EAAA;AACxB,YAAA,IAAM,KAAK,GAAG,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,QAAQ,CAAC,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC;AAC7C,YAAA,OAAO,CAAC,QAAQ,CAAC,UAAU,GAAG;AAC1B,gBAAA,KAAK,CAAC,OAAO;AACb,gBAAA,KAAK,CAAC,OAAO;aAChB,CAAC;AACF,YAAA,OAAO,CAAC,QAAQ;iBACX,IAAI,CAAC,CAAC,CAAC;iBACP,OAAO,CAAC,IAAI,CAAC;iBACb,UAAU,CAAC,IAAI,CAAC;AAChB,iBAAA,MAAM,EAAE,CACR;YACL,OAAO,CAAC,aAAa,CAACA,MAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,IAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC/C,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AACvC,SAAC,CAAC;AACD,aAAA,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAA;AACvB,YAAA,OAAO,CAAC,QAAQ;iBACX,OAAO,CAAC,KAAK,CAAC;AACd,iBAAA,MAAM,EAAE,CACR;AACL,YAAA,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAClC,IAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC/C,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AACtC,SAAC,CAAC;AACD,aAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAA;AAChB,YAAA,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AACd,YAAA,CAAC,CAAC,OAAO,GAAGA,MAAQ,CAAC,IAAI,CAAC,CAAC;AAC3B,YAAA,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,IAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,YAAA,IAAG,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;gBACzB,IAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACzC,IAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC;aACrH;iBAAM;gBACH,IAAM,EAAE,GAAG,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACnE,gBAAA,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;aACvE;AACD,YAAA,CAAC,CAAC,KAAK,GACA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAC,CAAC,CAAC,CAAC,CACP,EAAA,EAAA,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GACb,CAAC;YACF,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3B,YAAA,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;AAC9B,YAAA,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC;AACrB,YAAA,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC;AACrB,YAAA,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,aAAa,CAAC;AAC/B,YAAA,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,aAAa,CAAC;AAChC,YAAA,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,YAAA,CAAA,MAAA,CAAa,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,EAAI,GAAA,CAAA,CAAA,MAAA,CAAA,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,EAAA,GAAA,CAAG,CAAC,CAAC;AACjG,SAAC,CAAC,CAvFG,EAuFH,EACN,UAAA,MAAM,EAAI,EAAA,OAAA,MAAM,CAAA,EAAA,EAChB,UAAA,IAAI,EAAA,EAAI,OAAA,IAAI;aACP,IAAI,CAAC,UAAU,CAAC,EAAA;YACb,OAAO,CAAC,CAAC,OAAO,CAAC;AACrB,SAAC,CAAC;aACD,MAAM,EAAE,CAJL,EAIK,CAChB;aACA,IAAI,CAAC,SAAS,EAAE,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAjC,EAAiC,CAAC;AACvD,aAAA,IAAI,CAAC,UAA6B,CAAC,EAAE,CAAC,EAAA;AACnC,YAAA,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AACd,YAAA,IAAG,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,EAAC;gBACxB,IAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACzC,gBAAA,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;aACnF;iBAAM;AACH,gBAAA,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;aACxE;AACL,SAAC,CAAC;AACD,aAAA,EAAE,CAAC,eAAe,EAAE,UAAA,CAAC,EAAA;YAClB,IAAM,EAAE,GAAG,KAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,IAAM,EAAE,GAAG,KAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,YAAA,IAAM,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;AACvB,YAAA,IAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;YAC1B,KAAI,CAAC,MAAM,CACP;gBACI,CAAC,EAAE,GAAG,MAAM;gBACZ,CAAC;aACJ,EACD,MAAM,CACT,CAAC;AACN,SAAC,CAAC,CACD;AACD,QAAA,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;KACzC,CAAA;IACD,UAAkB,CAAA,SAAA,CAAA,kBAAA,GAAlB,UAAmB,CAAC,EAAE,CAAC,EAAE,aAAqB,EAAE,OAAiB,EAAE,SAAkB,EAAA;AAA5D,QAAA,IAAA,aAAA,KAAA,KAAA,CAAA,EAAA,EAAA,aAAqB,GAAA,KAAA,CAAA,EAAA;AAAE,QAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAiB,GAAA,EAAA,CAAA,EAAA;AAC7D,QAAA,IAAM,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;AAC1C,QAAA,IAAM,aAAa,GAAG,aAAa,GAAG,CAAC,CAAC;AACxC,QAAA,IAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC;QACT,IAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3D,IAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,CAAC;AACN,QAAA,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAE9C,QAAA,IAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAC;AACpB,YAAA,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;SACzD;AAED,QAAA,IAAG,SAAS,KAAK,SAAS,EAAE;YACxB,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/E,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACjC,YAAA,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;YACxF,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC;YACvG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SACvC;aAAM;YACH,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;SACvC;AACD,QAAA,IAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE;YACrB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACrC;QACD,IAAI,CAAC,aAAa,EAAE;AAChB,YAAA,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAA,CAAC,CAAC,KAAK,GACA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAC,CAAC,CAAC,CAAC,CACP,EAAA,EAAA,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GACb,CAAC;AACF,YAAA,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACpC;aAAM;AACH,YAAA,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnC,YAAA,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpC,YAAA,CAAC,CAAC,KAAK,GACA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAC,CAAC,CAAC,CAAC,CACP,EAAA,EAAA,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GACb,CAAC;AACF,YAAA,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC;AAC/B,YAAA,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,YAAA,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;SACtB;AACD,QAAA,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;AAC9B,QAAA,IAAG,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE;AACzD,YAAA,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,YAAY,CAAC;SAC7D;QACD,IAAG,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,EAAC;YACjC,CAAC,CAAC,OAAO,GAAGA,MAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAChC;AACD,QAAA,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,YAAA,CAAA,MAAA,CAAa,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,EAAI,GAAA,CAAA,CAAA,MAAA,CAAA,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,EAAA,GAAA,CAAG,CAAC,CAAC;AAE7F,QAAA,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC;AACrB,QAAA,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC;AACrB,QAAA,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,aAAa,CAAC;AAC/B,QAAA,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,aAAa,CAAC;QAChC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QACtD,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QAEzD,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAExF,IAAG,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,EAAC;AACrB,YAAA,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC;SACnE;aAAM;AACH,YAAA,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;SAC5D;AACD,QAAA,IAAG,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE;YACzD,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;SACjG;AACD,QAAA,IAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE;AACjD,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;SACrC;AACD,QAAA,IAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;AAChD,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;SACpC;AACD,QAAA,MAAM,CACF,IAAI,CAAC,cAAc,EAEZ,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,OAAO,GACP,CAAC,CAAC,KAAK,CAAA,EAAA,EACV,IAAI,EAAA,IAAA,EAAA,CAAA,EAER,CAAC,CAAC,IAAI,CACT,CAAC;KACL,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;QACI,IAAI,CAAC,aAAa,GAAG;AACjB,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;AACjC,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE;AAC/B,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;SACpC,CAAC;KACL,CAAA;IAGD,UAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,SAAS,EAAA;QAAhB,IAwBC,KAAA,GAAA,IAAA,CAAA;AAvBG,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,QAAO,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,KAAK,WAAW;AACZ,gBAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,cAAc,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,YAAa,CAAA,MAAA,CAAA,SAAS,CAAC,CAAC,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,CAAC,EAAU,SAAA,CAAA,CAAA,MAAA,CAAA,SAAS,CAAC,CAAC,EAAA,KAAA,CAAK,CAAC,CAAC;gBACvF,MAAM;AACV,YAAA;AACI,gBAAA,IAAM,SAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBACnC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA;AACrB,oBAAA,IAAG,KAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAC;wBACpB,SAAO,CAAC,IAAI,GAAG,CAAC,CAAC,KAAI,CAAC,UAAU,CAAC,CAAC;qBACrC;AACD,oBAAA,IAAG,KAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAC;wBACrB,IAAM,SAAS,GAAG,CAAC,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC;AACtC,wBAAA,KAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAO,EAAE,SAAS,CAAC,CAAC;qBAC3D;yBAAM;wBACH,KAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAO,CAAC,CAAC;qBAChD;AACL,iBAAC,CAAC,CAAC;SACV;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KAC9B,CAAA;IAED,UAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,SAAS,EAAA;KAEnB,CAAA;IAEO,UAAW,CAAA,SAAA,CAAA,WAAA,GAAnB,UAAoB,IAAI,EAAE,QAAyB,EAAE,MAAuB,EAAE,SAA2B,EAAA;QACrG,IAAM,SAAS,GAAG,EAAE,CAAC;QACrB,IAAM,YAAY,GAAG,EAAE,CAAC;AACxB,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpC,IAAM,OAAO,GAAG,CAAC,EAAC,GAAG,EAAC,CAAC,QAAQ,EAAC,CAAC,CAAC;QAClC,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,QAAA,IAAG,SAAS,KAAK,SAAS,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA;gBACd,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC5B,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC;AACtC,aAAC,CAAC,CAAC;YACH,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;SAChD;aAAM;AACH,YAAA,IAAI,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA;AACd,gBAAA,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACxC,oBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE;AACrD,wBAAA,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;wBAClB,IAAG,SAAS,GAAG,EAAE;4BAAC,SAAS,GAAG,EAAE,CAAC;wBACjC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;wBAChC,MAAM;qBACT;iBACJ;AACD,gBAAA,IAAG,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,EAAC;AAC1B,oBAAA,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;oBAC9B,IAAM,CAAC,GAAG,EAAE,CAAC;oBACb,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AACtB,oBAAA,OAAO,CAAC,IAAI,CAAC,CAAQ,CAAC,CAAC;iBAC1B;AAED,gBAAA,IAAG,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;AAAC,oBAAA,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACzD,aAAC,CAAC,CAAC;SACN;AACD,QAAA,IAAM,MAAM,GAAG,CAAC,SAAS,GAAC,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrE,OAAO;AACH,YAAA,SAAS,EAAA,SAAA;AACT,YAAA,SAAS,EAAA,SAAA;AACT,YAAA,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM;YACnC,YAAY,EAAEC,WAAa,EAAE;iBACxB,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,GAAC,CAAC,CAAC,CAAC;AACxB,iBAAA,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;SACnD,CAAC;KACL,CAAA;IAID,UAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,CAAgB,EAAA;;AACjB,QAAA,IAAM,MAAM,GAAG,MAAK,CAAA,SAAA,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACjD,QAAA,IAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAA,KAAA,CAAR,IAAI,EAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAA,CAAC,EAAE,EAAA,OAAA,CAAC,CAAC,CAAC,CAAC,CAAJ,EAAI,CAAC,CAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAK,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAA,KAAA,CAAR,IAAI,EAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAA,CAAC,EAAE,EAAA,OAAA,CAAC,CAAC,CAAC,CAAC,CAAJ,EAAI,CAAC,CAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAK,CAAC,CAAC;AAC1D,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SAC9B;AACD,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;IAOD,UAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,YAAoB,EAAA;AAApB,QAAA,IAAA,YAAA,KAAA,KAAA,CAAA,EAAA,EAAA,YAAoB,GAAA,KAAA,CAAA,EAAA;QAChC,IAAM,UAAU,GAAG,EAAE,CAAC;QACtB,IAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,QAAA,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACrC,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjC,QAAA,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEzC,IAAG,YAAY,EAAC;AACZ,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC;SAC9E;AAED,QAAA,IAAG,YAAY,IAAI,IAAI,CAAC,eAAe,KAAK,UAAU,IAAI,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE;AACvF,YAAA,eAAe,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC;AACzE,YAAA,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAA,CAAC,EAAA;gBACjB,IAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC;oBACjB,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC;iBACzE;AACD,gBAAA,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI,EAAA;AACvB,oBAAA,IAAG,CAAC,eAAe,CAAC,IAAI,CAAC,EAAC;AACtB,wBAAA,eAAe,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC;qBAC9E;AACL,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;SAC3C;AACD,QAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;AAClC,QAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;KACjC,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,UAAa,IAAI,EAAE,KAAK,EAAE,KAAS,EAAA;AAAT,QAAA,IAAA,KAAA,KAAA,KAAA,CAAA,EAAA,EAAA,KAAS,GAAA,CAAA,CAAA,EAAA;AAC/B,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;QACxD,IAAG,QAAQ,EAAC;AACR,YAAA,OAAO,IAAI,CAAC;SACf;QACD,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,QAAA,IAAM,MAAM,GAAG,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,KAAkB,IAAA,EAAA,GAAA,CAAI,EAAJ,MAAI,GAAA,IAAA,EAAJ,kBAAI,EAAJ,EAAA,EAAI,EAAC;AAAnB,YAAA,IAAM,IAAI,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AACV,YAAA,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACnC,YAAA,IAAG,GAAG,GAAG,MAAM,EAAC;gBACZ,GAAG,IAAI,IAAI,CAAC;aACf;iBAAM;gBACH,MAAM;aACT;SACJ;AACD,QAAA,OAAO,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;KACxC,CAAA;IAED,UAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,KAAyC,EAAA;AAC5C,QAAA,IAAI,MAAM,CAAC;QACX,IAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YACtD,MAAM,GAAG,gBAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,IAAI,CAAC,KAAK;AACrB,aAAA,CAAC,CAAC;SACN;aAAM;YACH,MAAM,GAAG,MAAK,CAAA,SAAA,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SAChD;AACD,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,YAAA;KAEC,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,aAAa,GAAb,UAAc,QAAQ,EAAE,CAAC,EAAA;KAExB,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,GAAG,EAAE,IAAI,EAAE,GAAG,EAAA;KAEnB,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,GAAG,EAAE,IAAI,EAAE,GAAG,EAAA;KAEtB,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,OAAO,GAAP,UAAQ,GAAG,EAAE,IAAI,EAAE,GAAG,EAAA;KACrB,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UAAU,GAAG,EAAE,IAAI,EAAE,GAAG,EAAA;KACvB,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,GAAG,EAAE,IAAI,EAAE,GAAG,EAAA;KACtB,CAAA;IACL,OAAC,UAAA,CAAA;AAAD,CA5kBA,CAAgC,aAAa,CA4kB5C,EAAA;AACD,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,sBAAsB,CAAC;AAwDtD,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE,4DAA4D,CAAC,CAAC;AAClI,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,6DAA6D,CAAC,CAAC;AACpI,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,8BAA8B,CAAC,CAAC;AAC5F,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,mCAAmC,CAAC,CAAC;AACrG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,iCAAiC,CAAC,CAAC;AACjG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,6BAA6B,CAAC,CAAC;AAC1F,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,8BAA8B,CAAC,CAAC;AAC5F,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,0CAA0C,CAAC,CAAC;AACzG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,0CAA0C,CAAC,CAAC;AACzG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,+CAA+C,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;AACxI,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,8CAA8C,CAAC,CAAC;AAC1G,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,qCAAqC,CAAC,CAAC;AACjG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,iCAAiC,CAAC,CAAC;AAC1F,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,0CAA0C,CAAC,CAAC;AACxG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,sCAAsC,CAAC,CAAC;AAClG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,oCAAoC,EAAE,IAAI,EAAE,EAAC,QAAQ,EAAC,IAAI,EAAC,CAAC,CAAC;AACxH,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,8CAA8C,CAAC,CAAC;AACvG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAC1F,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAClF,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,EAAE,QAAQ,EAAE,sCAAsC,CAAC,CAAC;AACzG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,EAAE,QAAQ,EAAE,sCAAsC,CAAC,CAAC;AACpG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,sCAAsC,CAAC,CAAC;AAC5F,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACtE,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,sBAAsB,EAAE,SAAS,EAAE,YAAY,EAAE,sCAAsC,CAAC,CAAC;AACtH,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,SAAS,EAAE,YAAY,EAAE,qCAAqC,CAAC;;ACzqBnH,IAAA,cAAA,kBAAA,UAAA,MAAA,EAAA;IAAoC,SAAS,CAAA,cAAA,EAAA,MAAA,CAAA,CAAA;AA+BzC,IAAA,SAAA,cAAA,GAAA;QACI,IAAA,KAAA,GAAA,MAAK,WAAE,IAAC,IAAA,CAAA;AA9BF,QAAA,KAAA,CAAA,QAAQ,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC;aACxC,WAAW,CAAC,KAAK,CAAC;aAClB,IAAI,CAAC,QAAQ,CAAC;aACd,WAAW,CAAC,MAAM,CAAC;aACnB,WAAW,CAAC,MAAM,CAAC;aACnB,MAAM,CAAC,CAAC,CAAC;aACT,UAAU,CAAC,GAAG,CAAC,CACf;AACK,QAAA,KAAA,CAAA,MAAM,GAAe,IAAI,UAAU,CAAC,QAAQ,CAAC;aAClD,MAAM,CAAC,SAAS,CAAC,CACjB;AACK,QAAA,KAAA,CAAA,WAAW,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC;aAC3C,WAAW,CAAC,QAAQ,CAAC;aACrB,IAAI,CAAC,QAAQ,CAAC;aACd,WAAW,CAAC,MAAM,CAAC;aACnB,WAAW,CAAC,MAAM,CAAC;aACnB,MAAM,CAAC,CAAC,CAAC;aACT,UAAU,CAAC,GAAG,CAAC,CACf;AAaD,QAAA,KAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,KAAI,CAAC,aAAa,GAAG,YAAA;AACjB,YAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACpE,IAAG,CAAC,SAAS,CAAC,MAAM;AAAC,gBAAA,OAAO,GAAG,CAAC;AAChC,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAC;;KACL;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;AAEI,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAExB,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAErC,IAAM,aAAa,IAAI,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAA,IAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,QAAQ;AACR,aAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,aAAA,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAChB,aAAA,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAC3B;QACL,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,UAAU,EAAE,KAAK,EAAC,CAAC,EAAC,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,YAAY;AACZ,aAAA,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,aAAA,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAChB,aAAA,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAC3B;AACL,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,cAAA,CAAA,MAAA,CAAe,UAAU,GAAG,aAAa,EAAA,GAAA,CAAG,CAAC,CAAC;AACrF,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,aAAa,EAAE,KAAK,EAAC,CAAC,EAAC,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,WAAW;AACX,aAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,aAAA,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAChB,aAAA,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAC3B;AACL,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,cAAe,CAAA,MAAA,CAAA,UAAU,GAAG,aAAa,GAAG,aAAa,EAAA,GAAA,CAAG,CAAC,CAAC;AACxG,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,UAAU,EAAE,KAAK,EAAC,CAAC,EAAC,CAAC,CAAC;KACzD,CAAA;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,OAAO,EAAE,OAAO,EAAA;QAAtB,IAsCC,KAAA,GAAA,IAAA,CAAA;AArCG,QAAA,MAAA,CAAA,SAAK,CAAC,KAAK,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE9B,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,UAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;YAC9B,KAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,SAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,UAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;YACjC,KAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACjC,SAAC,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AACrC,aAAA,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CACjC;QACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9C,aAAA,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAC9B;QACL,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AACrC,aAAA,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAChC;QACL,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;AAClD,aAAA,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAC7B;QACL,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AACxC,aAAA,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CACpC;QACL,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC;AACpD,aAAA,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAC9B;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;QAExD,IAAI,CAAC,cAAc,EAAE,CAAC;AAEtB,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,UAAC,SAAS,EAAA;AAC/B,YAAA,KAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,SAAC,CAAC;KACL,CAAA;IAED,cAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,SAAS,EAAA;AAEZ,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACjC,QAAA,IAAM,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;AACzB,QAAA,IAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;QACtB,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC;AAE5D,QAAA,IAAI,CAAC,QAAQ;AACR,aAAA,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACjC,aAAA,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7B,aAAA,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;aACjC,GAAG,CAAC,OAAO,CAAC;aACZ,IAAI,CAAC,QAAQ,CAAC;AACd,aAAA,MAAM,EAAE,CACR;AACL,QAAA,IAAI,CAAC,WAAW;AACX,aAAA,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACjC,aAAA,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7B,aAAA,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;aACjC,GAAG,CAAC,OAAO,CAAC;aACZ,IAAI,CAAC,QAAQ,CAAC;AACd,aAAA,MAAM,EAAE,CACR;KACR,CAAA;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,OAAO,EAAE,OAAO,EAAA;AACnB,QAAA,MAAA,CAAA,SAAK,CAAC,MAAM,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACxD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;KACxB,CAAA;IAID,cAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,CAAY,EAAA;AAChB,QAAA,IAAM,MAAM,GAAG,MAAK,CAAA,SAAA,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACpD,QAAA,IAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAC1B;AACD,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;IAID,cAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,CAAoB,EAAA;;AACrB,QAAA,IAAM,MAAM,GAAG,MAAK,CAAA,SAAA,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACjD,QAAA,IAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,IAAM,SAAS,GAAU,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA;AACtC,gBAAA,IAAM,GAAG,GAAA,aAAA,CAAA,EAAA,EAAO,CAAC,EAAA,IAAA,CAAC,CAAC;AACnB,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,gBAAA,OAAO,GAAG,CAAC;AACf,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAA,KAAA,CAAR,IAAI,EAAQ,SAAS,CAAC,GAAG,CAAC,UAAA,CAAC,EAAE,EAAA,OAAA,CAAC,CAAC,CAAC,CAAC,CAAJ,EAAI,CAAC,CAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAK,CAAC,CAAC;AACjE,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAA,KAAA,CAAR,IAAI,EAAQ,SAAS,CAAC,GAAG,CAAC,UAAA,CAAC,EAAE,EAAA,OAAA,CAAC,CAAC,CAAC,CAAC,CAAJ,EAAI,CAAC,CAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAK,CAAC,CAAC;AAC/D,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC/B;AACD,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;IAED,cAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,KAAyC,EAAA;AAC5C,QAAA,IAAM,MAAM,GAAG,MAAK,CAAA,SAAA,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAEnD,QAAA,IAAG,IAAI,CAAC,eAAe,EAAC;YACpB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;AAED,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;KAElB,CAAA;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;KAErB,CAAA;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;AACI,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;KAC/B,CAAA;IACL,OAAC,cAAA,CAAA;AAAD,CArMA,CAAoC,SAAS,CAqM5C,EAAA;AACD,cAAc,CAAC,SAAS,CAAC,MAAM,IAAI,0BAA0B,CAAC;AA6C9D,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,yCAAyC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACzI,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC;AACxF,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AACtF,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,EAAE,QAAQ,EAAE,sCAAsC,CAAC,CAAC;AAC7G,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,+BAA+B,CAAC,CAAC;AAClG,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,iCAAiC,CAAC,CAAC;AACtG,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;AAC3F,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC1D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC9D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC/D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC5D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC9D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC1D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AAChE,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC/D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AACnE,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AACjE,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC9D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC/D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AAChE,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC3D,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC;;ACvQ/D,IAAA,oBAAA,kBAAA,UAAA,MAAA,EAAA;IAA0C,SAAO,CAAA,oBAAA,EAAA,MAAA,CAAA,CAAA;AA8B7C,IAAA,SAAA,oBAAA,GAAA;QACI,IAAA,KAAA,GAAA,MAAK,WAAE,IAAC,IAAA,CAAA;AA7BF,QAAA,KAAA,CAAA,QAAQ,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC;aACxC,WAAW,CAAC,KAAK,CAAC;aAClB,IAAI,CAAC,QAAQ,CAAC;aACd,WAAW,CAAC,MAAM,CAAC;aACnB,WAAW,CAAC,MAAM,CAAC;aACnB,MAAM,CAAC,CAAC,CAAC;aACT,UAAU,CAAC,GAAG,CAAC,CACf;AACK,QAAA,KAAA,CAAA,MAAM,GAAe,IAAI,UAAU,CAAC,QAAQ,CAAC;aAClD,MAAM,CAAC,SAAS,CAAC;aACjB,kBAAkB,CAAC,IAAI,CAAC,CACxB;AACK,QAAA,KAAA,CAAA,WAAW,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC;aAC3C,WAAW,CAAC,QAAQ,CAAC;aACrB,IAAI,CAAC,QAAQ,CAAC;aACd,WAAW,CAAC,MAAM,CAAC;aACnB,WAAW,CAAC,MAAM,CAAC;aACnB,MAAM,CAAC,CAAC,CAAC;aACT,UAAU,CAAC,GAAG,CAAC,CACf;AAWD,QAAA,KAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;AACvC,QAAA,KAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;;KACxC;IAID,oBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,CAA2B,EAAA;AACrC,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACpE,IAAI,CAAC,SAAS,CAAC,MAAM;AAAE,YAAA,OAAO,GAAG,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC;KACf,CAAA;AAED,IAAA,oBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;AAEI,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAExB,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,IAAM,aAAa,IAAI,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;AAE7C,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAE9B,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACf,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,UAAU;AACrB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAClB,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,aAAa;AACxB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAClB,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,UAAU;AACrB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;KAC1B,CAAA;AAED,IAAA,oBAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,OAAO,EAAE,OAAO,EAAA;QAAtB,IAoBC,KAAA,GAAA,IAAA,CAAA;AAnBG,QAAA,MAAA,CAAA,SAAK,CAAC,KAAK,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE9B,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,UAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;YAC9B,KAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,SAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,UAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;YACjC,KAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACjC,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9B,IAAI,CAAC,cAAc,EAAE,CAAC;AAEtB,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,UAAC,SAAS,EAAA;AAC/B,YAAA,KAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,SAAC,CAAC;KACL,CAAA;IAED,oBAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,SAAS,EAAA;AACZ,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACjC,QAAA,IAAM,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;AACzB,QAAA,IAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;QACtB,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC;AAE5D,QAAA,IAAI,CAAC,QAAQ;AACR,aAAA,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACjC,aAAA,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7B,aAAA,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;aACjC,GAAG,CAAC,OAAO,CAAC;aACZ,IAAI,CAAC,QAAQ,CAAC;AACd,aAAA,UAAU,EAAE,CACZ;AACL,QAAA,IAAI,CAAC,WAAW;AACX,aAAA,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACjC,aAAA,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7B,aAAA,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;aACjC,GAAG,CAAC,OAAO,CAAC;aACZ,IAAI,CAAC,QAAQ,CAAC;AACd,aAAA,UAAU,EAAE,CACZ;KACR,CAAA;AAED,IAAA,oBAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,OAAO,EAAE,OAAO,EAAA;AACnB,QAAA,MAAA,CAAA,SAAK,CAAC,MAAM,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACxD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;KACxB,CAAA;IAID,oBAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,CAAY,EAAA;AAChB,QAAA,IAAM,MAAM,GAAG,MAAK,CAAA,SAAA,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACpD,QAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAC1B;AACD,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;IAID,oBAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,CAAoB,EAAA;AACrB,QAAA,IAAM,MAAM,GAAG,MAAK,CAAA,SAAA,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACjD,QAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,IAAM,SAAS,GAAU,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA;AACtC,gBAAA,IAAM,GAAG,GAAA,aAAA,CAAA,EAAA,EAAO,CAAC,EAAA,IAAA,CAAC,CAAC;AACnB,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,gBAAA,OAAO,GAAG,CAAC;AACf,aAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,SAAS,GAAGC,GAAK,CAAC,SAAS,EAAE,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,CAAC,CAAC,CAAJ,EAAI,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,OAAO,GAAGC,GAAK,CAAC,SAAS,EAAE,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,CAAC,CAAC,CAAJ,EAAI,CAAC,CAAC;AAClD,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC/B;AACD,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;IAED,oBAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,KAAyC,EAAA;AAC5C,QAAA,IAAM,MAAM,GAAG,MAAK,CAAA,SAAA,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAEnD,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;AAED,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;AAED,IAAA,oBAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;KAElB,CAAA;AAED,IAAA,oBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAA;KAErB,CAAA;AAED,IAAA,oBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;AACI,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;KAC/B,CAAA;IACL,OAAC,oBAAA,CAAA;AAAD,CAjLA,CAA0C,OAAO,CAiLhD,EAAA;AACD,oBAAoB,CAAC,SAAS,CAAC,MAAM,IAAI,gCAAgC,CAAC;AA+C1E,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,yCAAyC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/I,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC;AAC9F,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC5F,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,EAAE,QAAQ,EAAE,sCAAsC,CAAC,CAAC;AACnH,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,+BAA+B,CAAC,CAAC;AACxG,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,iCAAiC,CAAC,CAAC;AAC5G,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;AACjG,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAChE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACpE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AACrE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAClE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACpE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAChE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AACtE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AACrE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AACzE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AACvE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACpE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AACrE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AACtE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AACtE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACjE,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;AAC9E,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;AAC7E,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC;;AC7PrE,IAAA,aAAA,kBAAA,UAAA,MAAA,EAAA;IAAmC,SAAc,CAAA,aAAA,EAAA,MAAA,CAAA,CAAA;AAI7C,IAAA,SAAA,aAAA,GAAA;QACI,IAAA,KAAA,GAAA,MAAK,WAAE,IAAC,IAAA,CAAA;AACR,QAAA,KAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;AAC9B,QAAA,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAE9B,QAAA,KAAI,CAAC,WAAW,CAAC,UAAC,CAAM,EAAA;AACpB,YAAA,IAAM,MAAM,GAAGP,SAAW,CAAC,IAAI,CAAC,CAAC;YACjC,IAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7B,IAAM,SAAS,GAAGC,UAAY,CAAC,KAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACzD,YAAA,OAAO,4CAAmC,CAAC,CAAC,CAAC,CAAC,uBAAa,SAAS,CAAC,SAAS,CAAC,oBAAU,SAAS,CAAC,OAAO,CAAC,WAAQ,CAAC;AACxH,SAAC,CAAC,CAAC;;KACN;AAED,IAAA,aAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,OAAO,EAAE,OAAO,EAAA;AACnB,QAAA,MAAA,CAAA,SAAK,CAAC,MAAM,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAE/B,QAAA,IAAG,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAE1B,IAAI,cAAY,GAAG,QAAQ,CAAC;AAC5B,YAAA,IAAI,cAAY,GAAG,CAAC,QAAQ,CAAC;YAC7B,IAAI,YAAU,GAAG,EAAE,CAAC;YACpB,IAAI,aAAW,GAAG,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA;AACb,gBAAA,IAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AACvC,gBAAA,IAAM,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AACrC,gBAAA,IAAG,cAAY,GAAG,KAAK,EAAC;oBACpB,cAAY,GAAG,KAAK,CAAC;AACrB,oBAAA,YAAU,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1B;AACD,gBAAA,IAAG,cAAY,GAAG,GAAG,EAAC;oBAClB,cAAY,GAAG,GAAG,CAAC;AACnB,oBAAA,aAAW,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3B;AACL,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,QAAQ;iBACR,IAAI,CAAC,MAAM,CAAC;AACZ,iBAAA,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC/B,WAAW,CAAC,MAAM,CAAC;AACnB,iBAAA,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC;iBACpC,GAAG,CAAC,YAAU,CAAC;iBACf,IAAI,CAAC,aAAW,CAAC,CACjB;AACL,YAAA,IAAI,CAAC,WAAW;iBACX,IAAI,CAAC,MAAM,CAAC;AACZ,iBAAA,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC/B,WAAW,CAAC,MAAM,CAAC;AACnB,iBAAA,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC;iBACpC,GAAG,CAAC,YAAU,CAAC;iBACf,IAAI,CAAC,aAAW,CAAC,CACjB;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,cAAY,CAAC;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,cAAY,CAAC;SACtC;KACJ,CAAA;IAED,aAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,QAAQ,EAAA;AAChB,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,QAAA,OAAO,IAAI,CAAC;KACf,CAAA;IAED,aAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,CAAC,EAAA;AACZ,QAAA,IAAM,SAAS,GAAGD,SAAW,CAAC,IAAI,CAAC,CAAC;AACpC,QAAA,IAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAEhC,IAAM,UAAU,GAAGC,UAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACpD,QAAA,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;KACjC,CAAA;IAED,aAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,SAAS,EAAA;AAEZ,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACjC,QAAA,IAAM,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;AACzB,QAAA,IAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;QACtB,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC;AAE5D,QAAA,IAAI,CAAC,QAAQ;AACR,aAAA,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,aAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACnC,aAAA,MAAM,EAAE,CACR;AACL,QAAA,IAAI,CAAC,WAAW;AACX,aAAA,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,aAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACnC,aAAA,MAAM,EAAE,CACR;KACR,CAAA;IAGL,OAAC,aAAA,CAAA;AAAD,CAnGA,CAAmC,cAAc,CAmGhD,EAAA;AACD,aAAa,CAAC,SAAS,CAAC,MAAM,IAAI,yBAAyB,CAAC;AAS5D,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,iEAAiE,EAAE,IAAI,EAAE,EAAC,QAAQ,EAAC,IAAI,EAAC,CAAC,CAAC;AAC/J,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,UAAU,EAAE,QAAQ,EAAE,8CAA8C,CAAC;;AC9G1H,IAAM,SAAS,GAAGD,SAAW,CAAC,IAAI,CAAC,CAAC;AACpC,IAAA,mBAAA,kBAAA,UAAA,MAAA,EAAA;IAAyC,SAAoB,CAAA,mBAAA,EAAA,MAAA,CAAA,CAAA;AAIzD,IAAA,SAAA,mBAAA,GAAA;QACI,IAAA,KAAA,GAAA,MAAK,WAAE,IAAC,IAAA,CAAA;AACR,QAAA,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAE9B,QAAA,KAAI,CAAC,WAAW,CAAC,UAAC,CAAM,EAAA;YACpB,IAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,IAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEhC,IAAM,SAAS,GAAGC,UAAY,CAAC,KAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACzD,YAAA,OAAO,4CAAmC,CAAC,CAAC,CAAC,CAAC,uBAAa,SAAS,CAAC,SAAS,CAAC,oBAAU,SAAS,CAAC,OAAO,CAAC,WAAQ,CAAC;AACxH,SAAC,CAAC,CAAC;;KACN;AAED,IAAA,mBAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,OAAO,EAAE,OAAO,EAAA;AACnB,QAAA,MAAA,CAAA,SAAK,CAAC,MAAM,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAE/B,QAAA,IAAG,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAE1B,IAAI,cAAY,GAAG,QAAQ,CAAC;AAC5B,YAAA,IAAI,cAAY,GAAG,CAAC,QAAQ,CAAC;YAC7B,IAAI,YAAU,GAAG,EAAE,CAAC;YACpB,IAAI,aAAW,GAAG,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAA,CAAC,EAAA;AACjB,gBAAA,IAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AACvC,gBAAA,IAAM,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AACrC,gBAAA,IAAG,cAAY,GAAG,KAAK,EAAC;oBACpB,cAAY,GAAG,KAAK,CAAC;AACrB,oBAAA,YAAU,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1B;AACD,gBAAA,IAAG,cAAY,GAAG,GAAG,EAAC;oBAClB,cAAY,GAAG,GAAG,CAAC;AACnB,oBAAA,aAAW,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3B;AACL,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,QAAQ;iBACR,IAAI,CAAC,MAAM,CAAC;AACZ,iBAAA,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC/B,WAAW,CAAC,MAAM,CAAC;AACnB,iBAAA,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC;iBACpC,GAAG,CAAC,YAAU,CAAC;iBACf,IAAI,CAAC,aAAW,CAAC,CACjB;AACL,YAAA,IAAI,CAAC,WAAW;iBACX,IAAI,CAAC,MAAM,CAAC;AACZ,iBAAA,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC/B,WAAW,CAAC,MAAM,CAAC;AACnB,iBAAA,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC;iBACpC,GAAG,CAAC,YAAU,CAAC;iBACf,IAAI,CAAC,aAAW,CAAC,CACjB;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,cAAY,CAAC;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,cAAY,CAAC;SACtC;KACJ,CAAA;IAED,mBAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,QAAQ,EAAA;AAChB,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,QAAA,OAAO,IAAI,CAAC;KACf,CAAA;IAED,mBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,CAAC,EAAA;AACZ,QAAA,IAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAEhC,IAAM,UAAU,GAAGA,UAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACpD,QAAA,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;KACjC,CAAA;IAED,mBAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,SAAS,EAAA;AAEZ,QAAA,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACjC,QAAA,IAAM,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;AACzB,QAAA,IAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;QACtB,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC;AAE5D,QAAA,IAAI,CAAC,QAAQ;AACR,aAAA,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,aAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACnC,aAAA,MAAM,EAAE,CACR;AACL,QAAA,IAAI,CAAC,WAAW;AACX,aAAA,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,aAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACnC,aAAA,MAAM,EAAE,CACR;KACR,CAAA;IAGL,OAAC,mBAAA,CAAA;AAAD,CAhGA,CAAyC,oBAAoB,CAgG5D,EAAA;AACD,mBAAmB,CAAC,SAAS,CAAC,MAAM,IAAI,+BAA+B,CAAC;AASxE,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,iEAAiE,EAAE,IAAI,EAAE,EAAC,QAAQ,EAAC,IAAI,EAAC,CAAC,CAAC;AACrK,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,UAAU,EAAE,QAAQ,EAAE,8CAA8C,CAAC;;;;","x_google_ignoreList":[1,2]}