You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AdminLTE/plugins/fullcalendar-timegrid/main.js.map

1 line
107 KiB

{"version":3,"file":"main.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/timegrid/TimeGridEventRenderer.ts","../../src/timegrid/TimeGridMirrorRenderer.ts","../../src/timegrid/TimeGridFillRenderer.ts","../../src/timegrid/TimeGrid.ts","../../src/timegrid/AllDaySplitter.ts","../../src/timegrid/AbstractTimeGridView.ts","../../src/timegrid/SimpleTimeGrid.ts","../../src/timegrid/TimeGridView.ts","../../src/timegrid/main.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\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); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import {\n htmlEscape, cssToStr,\n removeElement, applyStyle,\n createFormatter, DateFormatter,\n FgEventRenderer, buildSegCompareObj,\n Seg, isMultiDayRange, compareByFieldSpecs\n} from '@fullcalendar/core'\nimport TimeGrid from './TimeGrid'\n\n/*\nOnly handles foreground segs.\nDoes not own rendering. Use for low-level util methods by TimeGrid.\n*/\nexport default class TimeGridEventRenderer extends FgEventRenderer {\n\n timeGrid: TimeGrid\n segsByCol: any // within each col, events are ordered\n fullTimeFormat: DateFormatter\n\n\n constructor(timeGrid: TimeGrid) {\n super(timeGrid.context)\n\n this.timeGrid = timeGrid\n\n this.fullTimeFormat = createFormatter({\n hour: 'numeric',\n minute: '2-digit',\n separator: this.context.options.defaultRangeSeparator\n })\n }\n\n\n // Given an array of foreground segments, render a DOM element for each, computes position,\n // and attaches to the column inner-container elements.\n attachSegs(segs: Seg[], mirrorInfo) {\n let segsByCol = this.timeGrid.groupSegsByCol(segs)\n\n // order the segs within each column\n // TODO: have groupSegsByCol do this?\n for (let col = 0; col < segsByCol.length; col++) {\n segsByCol[col] = this.sortEventSegs(segsByCol[col])\n }\n\n this.segsByCol = segsByCol\n this.timeGrid.attachSegsByCol(segsByCol, this.timeGrid.fgContainerEls)\n }\n\n\n detachSegs(segs: Seg[]) {\n segs.forEach(function(seg) {\n removeElement(seg.el)\n })\n\n this.segsByCol = null\n }\n\n\n computeSegSizes(allSegs: Seg[]) {\n let { timeGrid, segsByCol } = this\n let colCnt = timeGrid.colCnt\n\n timeGrid.computeSegVerticals(allSegs) // horizontals relies on this\n\n if (segsByCol) {\n for (let col = 0; col < colCnt; col++) {\n this.computeSegHorizontals(segsByCol[col]) // compute horizontal coordinates, z-index's, and reorder the array\n }\n }\n }\n\n\n assignSegSizes(allSegs: Seg[]) {\n let { timeGrid, segsByCol } = this\n let colCnt = timeGrid.colCnt\n\n timeGrid.assignSegVerticals(allSegs) // horizontals relies on this\n\n if (segsByCol) {\n for (let col = 0; col < colCnt; col++) {\n this.assignSegCss(segsByCol[col])\n }\n }\n }\n\n\n // Computes a default event time formatting string if `eventTimeFormat` is not explicitly defined\n computeEventTimeFormat() {\n return {\n hour: 'numeric',\n minute: '2-digit',\n meridiem: false\n }\n }\n\n\n // Computes a default `displayEventEnd` value if one is not expliclty defined\n computeDisplayEventEnd() {\n return true\n }\n\n\n // Renders the HTML for a single event segment's default rendering\n renderSegHtml(seg: Seg, mirrorInfo) {\n let eventRange = seg.eventRange\n let eventDef = eventRange.def\n let eventUi = eventRange.ui\n let allDay = eventDef.allDay\n let isDraggable = eventUi.startEditable\n let isResizableFromStart = seg.isStart && eventUi.durationEditable && this.context.options.eventResizableFromStart\n let isResizableFromEnd = seg.isEnd && eventUi.durationEditable\n let classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd, mirrorInfo)\n let skinCss = cssToStr(this.getSkinCss(eventUi))\n let timeText\n let fullTimeText // more verbose time text. for the print stylesheet\n let startTimeText // just the start time text\n\n classes.unshift('fc-time-grid-event')\n\n // if the event appears to span more than one day...\n if (isMultiDayRange(eventRange.range)) {\n // Don't display time text on segments that run entirely through a day.\n // That would appear as midnight-midnight and would look dumb.\n // Otherwise, display the time text for the *segment's* times (like 6pm-midnight or midnight-10am)\n if (seg.isStart || seg.isEnd) {\n let unzonedStart = seg.start\n let unzonedEnd = seg.end\n timeText = this._getTimeText(unzonedStart, unzonedEnd, allDay) // TODO: give the timezones\n fullTimeText = this._getTimeText(unzonedStart, unzonedEnd, allDay, this.fullTimeFormat)\n startTimeText = this._getTimeText(unzonedStart, unzonedEnd, allDay, null, false) // displayEnd=false\n }\n } else {\n // Display the normal time text for the *event's* times\n timeText = this.getTimeText(eventRange)\n fullTimeText = this.getTimeText(eventRange, this.fullTimeFormat)\n startTimeText = this.getTimeText(eventRange, null, false) // displayEnd=false\n }\n\n return '<a class=\"' + classes.join(' ') + '\"' +\n (eventDef.url ?\n ' href=\"' + htmlEscape(eventDef.url) + '\"' :\n ''\n ) +\n (skinCss ?\n ' style=\"' + skinCss + '\"' :\n ''\n ) +\n '>' +\n '<div class=\"fc-content\">' +\n (timeText ?\n '<div class=\"fc-time\"' +\n ' data-start=\"' + htmlEscape(startTimeText) + '\"' +\n ' data-full=\"' + htmlEscape(fullTimeText) + '\"' +\n '>' +\n '<span>' + htmlEscape(timeText) + '</span>' +\n '</div>' :\n ''\n ) +\n (eventDef.title ?\n '<div class=\"fc-title\">' +\n htmlEscape(eventDef.title) +\n '</div>' :\n ''\n ) +\n '</div>' +\n /* TODO: write CSS for this\n (isResizableFromStart ?\n '<div class=\"fc-resizer fc-start-resizer\"></div>' :\n ''\n ) +\n */\n (isResizableFromEnd ?\n '<div class=\"fc-resizer fc-end-resizer\"></div>' :\n ''\n ) +\n '</a>'\n }\n\n\n // Given an array of segments that are all in the same column, sets the backwardCoord and forwardCoord on each.\n // Assumed the segs are already ordered.\n // NOTE: Also reorders the given array by date!\n computeSegHorizontals(segs: Seg[]) {\n let levels\n let level0\n let i\n\n levels = buildSlotSegLevels(segs)\n computeForwardSlotSegs(levels)\n\n if ((level0 = levels[0])) {\n\n for (i = 0; i < level0.length; i++) {\n computeSlotSegPressures(level0[i])\n }\n\n for (i = 0; i < level0.length; i++) {\n this.computeSegForwardBack(level0[i], 0, 0)\n }\n }\n }\n\n\n // Calculate seg.forwardCoord and seg.backwardCoord for the segment, where both values range\n // from 0 to 1. If the calendar is left-to-right, the seg.backwardCoord maps to \"left\" and\n // seg.forwardCoord maps to \"right\" (via percentage). Vice-versa if the calendar is right-to-left.\n //\n // The segment might be part of a \"series\", which means consecutive segments with the same pressure\n // who's width is unknown until an edge has been hit. `seriesBackwardPressure` is the number of\n // segments behind this one in the current series, and `seriesBackwardCoord` is the starting\n // coordinate of the first segment in the series.\n computeSegForwardBack(seg: Seg, seriesBackwardPressure, seriesBackwardCoord) {\n let forwardSegs = seg.forwardSegs\n let i\n\n if (seg.forwardCoord === undefined) { // not already computed\n\n if (!forwardSegs.length) {\n\n // if there are no forward segments, this segment should butt up against the edge\n seg.forwardCoord = 1\n } else {\n\n // sort highest pressure first\n this.sortForwardSegs(forwardSegs)\n\n // this segment's forwardCoord will be calculated from the backwardCoord of the\n // highest-pressure forward segment.\n this.computeSegForwardBack(forwardSegs[0], seriesBackwardPressure + 1, seriesBackwardCoord)\n seg.forwardCoord = forwardSegs[0].backwardCoord\n }\n\n // calculate the backwardCoord from the forwardCoord. consider the series\n seg.backwardCoord = seg.forwardCoord -\n (seg.forwardCoord - seriesBackwardCoord) / // available width for series\n (seriesBackwardPressure + 1) // # of segments in the series\n\n // use this segment's coordinates to computed the coordinates of the less-pressurized\n // forward segments\n for (i = 0; i < forwardSegs.length; i++) {\n this.computeSegForwardBack(forwardSegs[i], 0, seg.forwardCoord)\n }\n }\n }\n\n\n sortForwardSegs(forwardSegs: Seg[]) {\n let objs = forwardSegs.map(buildTimeGridSegCompareObj)\n\n let specs = [\n // put higher-pressure first\n { field: 'forwardPressure', order: -1 },\n // put segments that are closer to initial edge first (and favor ones with no coords yet)\n { field: 'backwardCoord', order: 1 }\n ].concat(\n this.context.view.eventOrderSpecs\n )\n\n objs.sort(function(obj0, obj1) {\n return compareByFieldSpecs(obj0, obj1, specs)\n })\n\n return objs.map(function(c) {\n return c._seg\n })\n }\n\n\n // Given foreground event segments that have already had their position coordinates computed,\n // assigns position-related CSS values to their elements.\n assignSegCss(segs: Seg[]) {\n\n for (let seg of segs) {\n applyStyle(seg.el, this.generateSegCss(seg))\n\n if (seg.level > 0) {\n seg.el.classList.add('fc-time-grid-event-inset')\n }\n\n // if the event is short that the title will be cut off,\n // attach a className that condenses the title into the time area.\n if (seg.eventRange.def.title && seg.bottom - seg.top < 30) {\n seg.el.classList.add('fc-short') // TODO: \"condensed\" is a better name\n }\n }\n }\n\n\n // Generates an object with CSS properties/values that should be applied to an event segment element.\n // Contains important positioning-related properties that should be applied to any event element, customized or not.\n generateSegCss(seg: Seg) {\n let shouldOverlap = this.context.options.slotEventOverlap\n let backwardCoord = seg.backwardCoord // the left side if LTR. the right side if RTL. floating-point\n let forwardCoord = seg.forwardCoord // the right side if LTR. the left side if RTL. floating-point\n let props = this.timeGrid.generateSegVerticalCss(seg) as any // get top/bottom first\n let isRtl = this.timeGrid.isRtl\n let left // amount of space from left edge, a fraction of the total width\n let right // amount of space from right edge, a fraction of the total width\n\n if (shouldOverlap) {\n // double the width, but don't go beyond the maximum forward coordinate (1.0)\n forwardCoord = Math.min(1, backwardCoord + (forwardCoord - backwardCoord) * 2)\n }\n\n if (isRtl) {\n left = 1 - forwardCoord\n right = backwardCoord\n } else {\n left = backwardCoord\n right = 1 - forwardCoord\n }\n\n props.zIndex = seg.level + 1 // convert from 0-base to 1-based\n props.left = left * 100 + '%'\n props.right = right * 100 + '%'\n\n if (shouldOverlap && seg.forwardPressure) {\n // add padding to the edge so that forward stacked events don't cover the resizer's icon\n props[isRtl ? 'marginLeft' : 'marginRight'] = 10 * 2 // 10 is a guesstimate of the icon's width\n }\n\n return props\n }\n\n}\n\n\n// Builds an array of segments \"levels\". The first level will be the leftmost tier of segments if the calendar is\n// left-to-right, or the rightmost if the calendar is right-to-left. Assumes the segments are already ordered by date.\nfunction buildSlotSegLevels(segs: Seg[]) {\n let levels = []\n let i\n let seg\n let j\n\n for (i = 0; i < segs.length; i++) {\n seg = segs[i]\n\n // go through all the levels and stop on the first level where there are no collisions\n for (j = 0; j < levels.length; j++) {\n if (!computeSlotSegCollisions(seg, levels[j]).length) {\n break\n }\n }\n\n seg.level = j;\n\n (levels[j] || (levels[j] = [])).push(seg)\n }\n\n return levels\n}\n\n\n// For every segment, figure out the other segments that are in subsequent\n// levels that also occupy the same vertical space. Accumulate in seg.forwardSegs\nfunction computeForwardSlotSegs(levels) {\n let i\n let level\n let j\n let seg\n let k\n\n for (i = 0; i < levels.length; i++) {\n level = levels[i]\n\n for (j = 0; j < level.length; j++) {\n seg = level[j]\n\n seg.forwardSegs = []\n for (k = i + 1; k < levels.length; k++) {\n computeSlotSegCollisions(seg, levels[k], seg.forwardSegs)\n }\n }\n }\n}\n\n\n// Figure out which path forward (via seg.forwardSegs) results in the longest path until\n// the furthest edge is reached. The number of segments in this path will be seg.forwardPressure\nfunction computeSlotSegPressures(seg: Seg) {\n let forwardSegs = seg.forwardSegs\n let forwardPressure = 0\n let i\n let forwardSeg\n\n if (seg.forwardPressure === undefined) { // not already computed\n\n for (i = 0; i < forwardSegs.length; i++) {\n forwardSeg = forwardSegs[i]\n\n // figure out the child's maximum forward path\n computeSlotSegPressures(forwardSeg)\n\n // either use the existing maximum, or use the child's forward pressure\n // plus one (for the forwardSeg itself)\n forwardPressure = Math.max(\n forwardPressure,\n 1 + forwardSeg.forwardPressure\n )\n }\n\n seg.forwardPressure = forwardPressure\n }\n}\n\n\n// Find all the segments in `otherSegs` that vertically collide with `seg`.\n// Append into an optionally-supplied `results` array and return.\nfunction computeSlotSegCollisions(seg: Seg, otherSegs: Seg[], results= []) {\n\n for (let i = 0; i < otherSegs.length; i++) {\n if (isSlotSegCollision(seg, otherSegs[i])) {\n results.push(otherSegs[i])\n }\n }\n\n return results\n}\n\n\n// Do these segments occupy the same vertical space?\nfunction isSlotSegCollision(seg1: Seg, seg2: Seg) {\n return seg1.bottom > seg2.top && seg1.top < seg2.bottom\n}\n\n\nfunction buildTimeGridSegCompareObj(seg: Seg) {\n let obj = buildSegCompareObj(seg)\n\n obj.forwardPressure = seg.forwardPressure\n obj.backwardCoord = seg.backwardCoord\n\n return obj\n}\n","import { Seg } from '@fullcalendar/core'\nimport TimeGridEventRenderer from './TimeGridEventRenderer'\n\n\nexport default class TimeGridMirrorRenderer extends TimeGridEventRenderer {\n\n sourceSeg: Seg\n\n attachSegs(segs: Seg[], mirrorInfo) {\n this.segsByCol = this.timeGrid.groupSegsByCol(segs)\n this.timeGrid.attachSegsByCol(this.segsByCol, this.timeGrid.mirrorContainerEls)\n\n this.sourceSeg = mirrorInfo.sourceSeg\n }\n\n generateSegCss(seg: Seg) {\n let props = super.generateSegCss(seg)\n let { sourceSeg } = this\n\n if (sourceSeg && sourceSeg.col === seg.col) {\n let sourceSegProps = super.generateSegCss(sourceSeg)\n\n props.left = sourceSegProps.left\n props.right = sourceSegProps.right\n props.marginLeft = sourceSegProps.marginLeft\n props.marginRight = sourceSegProps.marginRight\n }\n\n return props\n }\n\n}\n","import {\n FillRenderer, Seg\n} from '@fullcalendar/core'\nimport TimeGrid from './TimeGrid'\n\n\nexport default class TimeGridFillRenderer extends FillRenderer {\n\n timeGrid: TimeGrid\n\n constructor(timeGrid: TimeGrid) {\n super(timeGrid.context)\n\n this.timeGrid = timeGrid\n }\n\n attachSegs(type, segs: Seg[]) {\n let { timeGrid } = this\n let containerEls\n\n // TODO: more efficient lookup\n if (type === 'bgEvent') {\n containerEls = timeGrid.bgContainerEls\n } else if (type === 'businessHours') {\n containerEls = timeGrid.businessContainerEls\n } else if (type === 'highlight') {\n containerEls = timeGrid.highlightContainerEls\n }\n\n timeGrid.attachSegsByCol(timeGrid.groupSegsByCol(segs), containerEls)\n\n return segs.map(function(seg) {\n return seg.el\n })\n }\n\n computeSegSizes(segs: Seg[]) {\n this.timeGrid.computeSegVerticals(segs)\n }\n\n assignSegSizes(segs: Seg[]) {\n this.timeGrid.assignSegVerticals(segs)\n }\n\n}\n","import {\n htmlEscape,\n htmlToElement,\n findElements,\n removeElement,\n applyStyle,\n createElement,\n PositionCache,\n Duration,\n createDuration,\n addDurations,\n multiplyDuration,\n wholeDivideDurations,\n asRoughMs,\n startOfDay,\n DateMarker,\n DateFormatter,\n createFormatter,\n formatIsoTimeString,\n ComponentContext,\n DateComponent,\n Seg,\n EventSegUiInteractionState,\n DateProfile,\n memoizeRendering,\n MemoizedRendering\n} from '@fullcalendar/core'\nimport { DayBgRow } from '@fullcalendar/daygrid'\nimport TimeGridEventRenderer from './TimeGridEventRenderer'\nimport TimeGridMirrorRenderer from './TimeGridMirrorRenderer'\nimport TimeGridFillRenderer from './TimeGridFillRenderer'\n\n\n/* A component that renders one or more columns of vertical time slots\n----------------------------------------------------------------------------------------------------------------------*/\n\n// potential nice values for the slot-duration and interval-duration\n// from largest to smallest\nconst AGENDA_STOCK_SUB_DURATIONS = [\n { hours: 1 },\n { minutes: 30 },\n { minutes: 15 },\n { seconds: 30 },\n { seconds: 15 }\n]\n\nexport interface RenderProps {\n renderBgIntroHtml: () => string\n renderIntroHtml: () => string\n}\n\nexport interface TimeGridSeg extends Seg {\n col: number\n start: DateMarker\n end: DateMarker\n}\n\nexport interface TimeGridCell {\n date: DateMarker\n htmlAttrs?: string\n}\n\nexport interface TimeGridProps {\n dateProfile: DateProfile\n cells: TimeGridCell[]\n businessHourSegs: TimeGridSeg[]\n bgEventSegs: TimeGridSeg[]\n fgEventSegs: TimeGridSeg[]\n dateSelectionSegs: TimeGridSeg[]\n eventSelection: string\n eventDrag: EventSegUiInteractionState | null\n eventResize: EventSegUiInteractionState | null\n}\n\nexport default class TimeGrid extends DateComponent<TimeGridProps> {\n\n renderProps: RenderProps\n\n slotDuration: Duration // duration of a \"slot\", a distinct time segment on given day, visualized by lines\n snapDuration: Duration // granularity of time for dragging and selecting\n snapsPerSlot: any\n labelFormat: DateFormatter // formatting string for times running along vertical axis\n labelInterval: Duration // duration of how often a label should be displayed for a slot\n\n colCnt: number\n colEls: HTMLElement[] // cells elements in the day-row background\n slatContainerEl: HTMLElement // div that wraps all the slat rows\n slatEls: HTMLElement[] // elements running horizontally across all columns\n nowIndicatorEls: HTMLElement[]\n\n colPositions: PositionCache\n slatPositions: PositionCache\n isSlatSizesDirty: boolean = false\n isColSizesDirty: boolean = false\n\n rootBgContainerEl: HTMLElement\n bottomRuleEl: HTMLElement // hidden by default\n contentSkeletonEl: HTMLElement\n colContainerEls: HTMLElement[] // containers for each column\n\n // inner-containers for each column where different types of segs live\n fgContainerEls: HTMLElement[]\n bgContainerEls: HTMLElement[]\n mirrorContainerEls: HTMLElement[]\n highlightContainerEls: HTMLElement[]\n businessContainerEls: HTMLElement[]\n\n private renderSlats = memoizeRendering(this._renderSlats)\n private renderColumns: MemoizedRendering<[TimeGridCell[], DateProfile]>\n private renderBusinessHours: MemoizedRendering<[TimeGridSeg[]]>\n private renderDateSelection: MemoizedRendering<[TimeGridSeg[]]>\n private renderBgEvents: MemoizedRendering<[TimeGridSeg[]]>\n private renderFgEvents: MemoizedRendering<[TimeGridSeg[]]>\n private renderEventSelection: MemoizedRendering<[string]>\n private renderEventDrag: MemoizedRendering<[EventSegUiInteractionState]>\n private renderEventResize: MemoizedRendering<[EventSegUiInteractionState]>\n\n\n constructor(context: ComponentContext, el: HTMLElement, renderProps: RenderProps) {\n super(context, el)\n\n let eventRenderer = this.eventRenderer = new TimeGridEventRenderer(this)\n let fillRenderer = this.fillRenderer = new TimeGridFillRenderer(this)\n this.mirrorRenderer = new TimeGridMirrorRenderer(this)\n\n let renderColumns = this.renderColumns = memoizeRendering(\n this._renderColumns,\n this._unrenderColumns\n )\n\n this.renderBusinessHours = memoizeRendering(\n fillRenderer.renderSegs.bind(fillRenderer, 'businessHours'),\n fillRenderer.unrender.bind(fillRenderer, 'businessHours'),\n [ renderColumns ]\n )\n\n this.renderDateSelection = memoizeRendering(\n this._renderDateSelection,\n this._unrenderDateSelection,\n [ renderColumns ]\n )\n\n this.renderFgEvents = memoizeRendering(\n eventRenderer.renderSegs.bind(eventRenderer),\n eventRenderer.unrender.bind(eventRenderer),\n [ renderColumns ]\n )\n\n this.renderBgEvents = memoizeRendering(\n fillRenderer.renderSegs.bind(fillRenderer, 'bgEvent'),\n fillRenderer.unrender.bind(fillRenderer, 'bgEvent'),\n [ renderColumns ]\n )\n\n this.renderEventSelection = memoizeRendering(\n eventRenderer.selectByInstanceId.bind(eventRenderer),\n eventRenderer.unselectByInstanceId.bind(eventRenderer),\n [ this.renderFgEvents ]\n )\n\n this.renderEventDrag = memoizeRendering(\n this._renderEventDrag,\n this._unrenderEventDrag,\n [ renderColumns ]\n )\n\n this.renderEventResize = memoizeRendering(\n this._renderEventResize,\n this._unrenderEventResize,\n [ renderColumns ]\n )\n\n this.processOptions()\n\n el.innerHTML =\n '<div class=\"fc-bg\"></div>' +\n '<div class=\"fc-slats\"></div>' +\n '<hr class=\"fc-divider ' + this.theme.getClass('widgetHeader') + '\" style=\"display:none\" />'\n\n this.rootBgContainerEl = el.querySelector('.fc-bg')\n this.slatContainerEl = el.querySelector('.fc-slats')\n this.bottomRuleEl = el.querySelector('.fc-divider')\n\n this.renderProps = renderProps\n }\n\n\n /* Options\n ------------------------------------------------------------------------------------------------------------------*/\n\n\n // Parses various options into properties of this object\n processOptions() {\n let slotDuration = this.opt('slotDuration')\n let snapDuration = this.opt('snapDuration')\n let snapsPerSlot\n let input\n\n slotDuration = createDuration(slotDuration)\n snapDuration = snapDuration ? createDuration(snapDuration) : slotDuration\n snapsPerSlot = wholeDivideDurations(slotDuration, snapDuration)\n\n if (snapsPerSlot === null) {\n snapDuration = slotDuration\n snapsPerSlot = 1\n // TODO: say warning?\n }\n\n this.slotDuration = slotDuration\n this.snapDuration = snapDuration\n this.snapsPerSlot = snapsPerSlot\n\n // might be an array value (for TimelineView).\n // if so, getting the most granular entry (the last one probably).\n input = this.opt('slotLabelFormat')\n if (Array.isArray(input)) {\n input = input[input.length - 1]\n }\n\n this.labelFormat = createFormatter(input || {\n hour: 'numeric',\n minute: '2-digit',\n omitZeroMinute: true,\n meridiem: 'short'\n })\n\n input = this.opt('slotLabelInterval')\n this.labelInterval = input ?\n createDuration(input) :\n this.computeLabelInterval(slotDuration)\n }\n\n\n // Computes an automatic value for slotLabelInterval\n computeLabelInterval(slotDuration) {\n let i\n let labelInterval\n let slotsPerLabel\n\n // find the smallest stock label interval that results in more than one slots-per-label\n for (i = AGENDA_STOCK_SUB_DURATIONS.length - 1; i >= 0; i--) {\n labelInterval = createDuration(AGENDA_STOCK_SUB_DURATIONS[i])\n slotsPerLabel = wholeDivideDurations(labelInterval, slotDuration)\n if (slotsPerLabel !== null && slotsPerLabel > 1) {\n return labelInterval\n }\n }\n\n return slotDuration // fall back\n }\n\n\n /* Rendering\n ------------------------------------------------------------------------------------------------------------------*/\n\n\n render(props: TimeGridProps) {\n let cells = props.cells\n this.colCnt = cells.length\n\n this.renderSlats(props.dateProfile)\n this.renderColumns(props.cells, props.dateProfile)\n this.renderBusinessHours(props.businessHourSegs)\n this.renderDateSelection(props.dateSelectionSegs)\n this.renderFgEvents(props.fgEventSegs)\n this.renderBgEvents(props.bgEventSegs)\n this.renderEventSelection(props.eventSelection)\n this.renderEventDrag(props.eventDrag)\n this.renderEventResize(props.eventResize)\n }\n\n\n destroy() {\n super.destroy()\n\n // should unrender everything else too\n this.renderSlats.unrender()\n this.renderColumns.unrender()\n }\n\n\n updateSize(isResize: boolean) {\n let { fillRenderer, eventRenderer, mirrorRenderer } = this\n\n if (isResize || this.isSlatSizesDirty) {\n this.buildSlatPositions()\n this.isSlatSizesDirty = false\n }\n\n if (isResize || this.isColSizesDirty) {\n this.buildColPositions()\n this.isColSizesDirty = false\n }\n\n fillRenderer.computeSizes(isResize)\n eventRenderer.computeSizes(isResize)\n mirrorRenderer.computeSizes(isResize)\n\n fillRenderer.assignSizes(isResize)\n eventRenderer.assignSizes(isResize)\n mirrorRenderer.assignSizes(isResize)\n }\n\n\n _renderSlats(dateProfile: DateProfile) {\n let { theme } = this\n\n this.slatContainerEl.innerHTML =\n '<table class=\"' + theme.getClass('tableGrid') + '\">' +\n this.renderSlatRowHtml(dateProfile) +\n '</table>'\n\n this.slatEls = findElements(this.slatContainerEl, 'tr')\n\n this.slatPositions = new PositionCache(\n this.el,\n this.slatEls,\n false,\n true // vertical\n )\n\n this.isSlatSizesDirty = true\n }\n\n\n // Generates the HTML for the horizontal \"slats\" that run width-wise. Has a time axis on a side. Depends on RTL.\n renderSlatRowHtml(dateProfile: DateProfile) {\n let { dateEnv, theme, isRtl } = this\n let html = ''\n let dayStart = startOfDay(dateProfile.renderRange.start)\n let slotTime = dateProfile.minTime\n let slotIterator = createDuration(0)\n let slotDate // will be on the view's first day, but we only care about its time\n let isLabeled\n let axisHtml\n\n // Calculate the time for each slot\n while (asRoughMs(slotTime) < asRoughMs(dateProfile.maxTime)) {\n slotDate = dateEnv.add(dayStart, slotTime)\n isLabeled = wholeDivideDurations(slotIterator, this.labelInterval) !== null\n\n axisHtml =\n '<td class=\"fc-axis fc-time ' + theme.getClass('widgetContent') + '\">' +\n (isLabeled ?\n '<span>' + // for matchCellWidths\n htmlEscape(dateEnv.format(slotDate, this.labelFormat)) +\n '</span>' :\n ''\n ) +\n '</td>'\n\n html +=\n '<tr data-time=\"' + formatIsoTimeString(slotDate) + '\"' +\n (isLabeled ? '' : ' class=\"fc-minor\"') +\n '>' +\n (!isRtl ? axisHtml : '') +\n '<td class=\"' + theme.getClass('widgetContent') + '\"></td>' +\n (isRtl ? axisHtml : '') +\n '</tr>'\n\n slotTime = addDurations(slotTime, this.slotDuration)\n slotIterator = addDurations(slotIterator, this.slotDuration)\n }\n\n return html\n }\n\n\n _renderColumns(cells: TimeGridCell[], dateProfile: DateProfile) {\n let { theme, dateEnv, view } = this\n\n let bgRow = new DayBgRow(this.context)\n this.rootBgContainerEl.innerHTML =\n '<table class=\"' + theme.getClass('tableGrid') + '\">' +\n bgRow.renderHtml({\n cells,\n dateProfile,\n renderIntroHtml: this.renderProps.renderBgIntroHtml\n }) +\n '</table>'\n\n this.colEls = findElements(this.el, '.fc-day, .fc-disabled-day')\n\n for (let col = 0; col < this.colCnt; col++) {\n this.publiclyTrigger('dayRender', [\n {\n date: dateEnv.toDate(cells[col].date),\n el: this.colEls[col],\n view\n }\n ])\n }\n\n if (this.isRtl) {\n this.colEls.reverse()\n }\n\n this.colPositions = new PositionCache(\n this.el,\n this.colEls,\n true, // horizontal\n false\n )\n\n this.renderContentSkeleton()\n this.isColSizesDirty = true\n }\n\n\n _unrenderColumns() {\n this.unrenderContentSkeleton()\n }\n\n\n /* Content Skeleton\n ------------------------------------------------------------------------------------------------------------------*/\n\n\n // Renders the DOM that the view's content will live in\n renderContentSkeleton() {\n let parts = []\n let skeletonEl: HTMLElement\n\n parts.push(\n this.renderProps.renderIntroHtml()\n )\n\n for (let i = 0; i < this.colCnt; i++) {\n parts.push(\n '<td>' +\n '<div class=\"fc-content-col\">' +\n '<div class=\"fc-event-container fc-mirror-container\"></div>' +\n '<div class=\"fc-event-container\"></div>' +\n '<div class=\"fc-highlight-container\"></div>' +\n '<div class=\"fc-bgevent-container\"></div>' +\n '<div class=\"fc-business-container\"></div>' +\n '</div>' +\n '</td>'\n )\n }\n\n if (this.isRtl) {\n parts.reverse()\n }\n\n skeletonEl = this.contentSkeletonEl = htmlToElement(\n '<div class=\"fc-content-skeleton\">' +\n '<table>' +\n '<tr>' + parts.join('') + '</tr>' +\n '</table>' +\n '</div>'\n )\n\n this.colContainerEls = findElements(skeletonEl, '.fc-content-col')\n this.mirrorContainerEls = findElements(skeletonEl, '.fc-mirror-container')\n this.fgContainerEls = findElements(skeletonEl, '.fc-event-container:not(.fc-mirror-container)')\n this.bgContainerEls = findElements(skeletonEl, '.fc-bgevent-container')\n this.highlightContainerEls = findElements(skeletonEl, '.fc-highlight-container')\n this.businessContainerEls = findElements(skeletonEl, '.fc-business-container')\n\n if (this.isRtl) {\n this.colContainerEls.reverse()\n this.mirrorContainerEls.reverse()\n this.fgContainerEls.reverse()\n this.bgContainerEls.reverse()\n this.highlightContainerEls.reverse()\n this.businessContainerEls.reverse()\n }\n\n this.el.appendChild(skeletonEl)\n }\n\n\n unrenderContentSkeleton() {\n removeElement(this.contentSkeletonEl)\n }\n\n\n // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's col\n groupSegsByCol(segs) {\n let segsByCol = []\n let i\n\n for (i = 0; i < this.colCnt; i++) {\n segsByCol.push([])\n }\n\n for (i = 0; i < segs.length; i++) {\n segsByCol[segs[i].col].push(segs[i])\n }\n\n return segsByCol\n }\n\n\n // Given segments grouped by column, insert the segments' elements into a parallel array of container\n // elements, each living within a column.\n attachSegsByCol(segsByCol, containerEls: HTMLElement[]) {\n let col\n let segs\n let i\n\n for (col = 0; col < this.colCnt; col++) { // iterate each column grouping\n segs = segsByCol[col]\n\n for (i = 0; i < segs.length; i++) {\n containerEls[col].appendChild(segs[i].el)\n }\n }\n }\n\n\n /* Now Indicator\n ------------------------------------------------------------------------------------------------------------------*/\n\n\n getNowIndicatorUnit() {\n return 'minute' // will refresh on the minute\n }\n\n\n renderNowIndicator(segs: TimeGridSeg[], date) {\n\n // HACK: if date columns not ready for some reason (scheduler)\n if (!this.colContainerEls) {\n return\n }\n\n let top = this.computeDateTop(date)\n let nodes = []\n let i\n\n // render lines within the columns\n for (i = 0; i < segs.length; i++) {\n let lineEl = createElement('div', { className: 'fc-now-indicator fc-now-indicator-line' })\n lineEl.style.top = top + 'px'\n this.colContainerEls[segs[i].col].appendChild(lineEl)\n nodes.push(lineEl)\n }\n\n // render an arrow over the axis\n if (segs.length > 0) { // is the current time in view?\n let arrowEl = createElement('div', { className: 'fc-now-indicator fc-now-indicator-arrow' })\n arrowEl.style.top = top + 'px'\n this.contentSkeletonEl.appendChild(arrowEl)\n nodes.push(arrowEl)\n }\n\n this.nowIndicatorEls = nodes\n }\n\n\n unrenderNowIndicator() {\n if (this.nowIndicatorEls) {\n this.nowIndicatorEls.forEach(removeElement)\n this.nowIndicatorEls = null\n }\n }\n\n\n /* Coordinates\n ------------------------------------------------------------------------------------------------------------------*/\n\n\n getTotalSlatHeight() {\n return this.slatContainerEl.offsetHeight\n }\n\n\n // Computes the top coordinate, relative to the bounds of the grid, of the given date.\n // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.\n computeDateTop(when: DateMarker, startOfDayDate?: DateMarker) {\n if (!startOfDayDate) {\n startOfDayDate = startOfDay(when)\n }\n return this.computeTimeTop(when.valueOf() - startOfDayDate.valueOf())\n }\n\n\n // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).\n computeTimeTop(timeMs: number) {\n let len = this.slatEls.length\n let dateProfile = this.props.dateProfile\n let slatCoverage = (timeMs - asRoughMs(dateProfile.minTime)) / asRoughMs(this.slotDuration) // floating-point value of # of slots covered\n let slatIndex\n let slatRemainder\n\n // compute a floating-point number for how many slats should be progressed through.\n // from 0 to number of slats (inclusive)\n // constrained because minTime/maxTime might be customized.\n slatCoverage = Math.max(0, slatCoverage)\n slatCoverage = Math.min(len, slatCoverage)\n\n // an integer index of the furthest whole slat\n // from 0 to number slats (*exclusive*, so len-1)\n slatIndex = Math.floor(slatCoverage)\n slatIndex = Math.min(slatIndex, len - 1)\n\n // how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition.\n // could be 1.0 if slatCoverage is covering *all* the slots\n slatRemainder = slatCoverage - slatIndex\n\n return this.slatPositions.tops[slatIndex] +\n this.slatPositions.getHeight(slatIndex) * slatRemainder\n }\n\n\n // For each segment in an array, computes and assigns its top and bottom properties\n computeSegVerticals(segs) {\n let eventMinHeight = this.opt('timeGridEventMinHeight')\n let i\n let seg\n let dayDate\n\n for (i = 0; i < segs.length; i++) {\n seg = segs[i]\n dayDate = this.props.cells[seg.col].date\n\n seg.top = this.computeDateTop(seg.start, dayDate)\n seg.bottom = Math.max(\n seg.top + eventMinHeight,\n this.computeDateTop(seg.end, dayDate)\n )\n }\n }\n\n\n // Given segments that already have their top/bottom properties computed, applies those values to\n // the segments' elements.\n assignSegVerticals(segs) {\n let i\n let seg\n\n for (i = 0; i < segs.length; i++) {\n seg = segs[i]\n applyStyle(seg.el, this.generateSegVerticalCss(seg))\n }\n }\n\n\n // Generates an object with CSS properties for the top/bottom coordinates of a segment element\n generateSegVerticalCss(seg) {\n return {\n top: seg.top,\n bottom: -seg.bottom // flipped because needs to be space beyond bottom edge of event container\n }\n }\n\n\n /* Sizing\n ------------------------------------------------------------------------------------------------------------------*/\n\n\n buildPositionCaches() {\n this.buildColPositions()\n this.buildSlatPositions()\n }\n\n\n buildColPositions() {\n this.colPositions.build()\n }\n\n\n buildSlatPositions() {\n this.slatPositions.build()\n }\n\n\n /* Hit System\n ------------------------------------------------------------------------------------------------------------------*/\n\n positionToHit(positionLeft, positionTop) {\n let { dateEnv, snapsPerSlot, slatPositions, colPositions } = this\n\n let colIndex = colPositions.leftToIndex(positionLeft)\n let slatIndex = slatPositions.topToIndex(positionTop)\n\n if (colIndex != null && slatIndex != null) {\n let slatTop = slatPositions.tops[slatIndex]\n let slatHeight = slatPositions.getHeight(slatIndex)\n let partial = (positionTop - slatTop) / slatHeight // floating point number between 0 and 1\n let localSnapIndex = Math.floor(partial * snapsPerSlot) // the snap # relative to start of slat\n let snapIndex = slatIndex * snapsPerSlot + localSnapIndex\n\n let dayDate = this.props.cells[colIndex].date\n let time = addDurations(\n this.props.dateProfile.minTime,\n multiplyDuration(this.snapDuration, snapIndex)\n )\n\n let start = dateEnv.add(dayDate, time)\n let end = dateEnv.add(start, this.snapDuration)\n\n return {\n col: colIndex,\n dateSpan: {\n range: { start, end },\n allDay: false\n },\n dayEl: this.colEls[colIndex],\n relativeRect: {\n left: colPositions.lefts[colIndex],\n right: colPositions.rights[colIndex],\n top: slatTop,\n bottom: slatTop + slatHeight\n }\n }\n }\n }\n\n\n /* Event Drag Visualization\n ------------------------------------------------------------------------------------------------------------------*/\n\n\n _renderEventDrag(state: EventSegUiInteractionState) {\n if (state) {\n this.eventRenderer.hideByHash(state.affectedInstances)\n\n if (state.isEvent) {\n this.mirrorRenderer.renderSegs(state.segs, { isDragging: true, sourceSeg: state.sourceSeg })\n } else {\n this.fillRenderer.renderSegs('highlight', state.segs)\n }\n }\n }\n\n\n _unrenderEventDrag(state: EventSegUiInteractionState) {\n if (state) {\n this.eventRenderer.showByHash(state.affectedInstances)\n this.mirrorRenderer.unrender(state.segs, { isDragging: true, sourceSeg: state.sourceSeg })\n this.fillRenderer.unrender('highlight')\n }\n }\n\n\n /* Event Resize Visualization\n ------------------------------------------------------------------------------------------------------------------*/\n\n\n _renderEventResize(state: EventSegUiInteractionState) {\n if (state) {\n this.eventRenderer.hideByHash(state.affectedInstances)\n this.mirrorRenderer.renderSegs(state.segs, { isResizing: true, sourceSeg: state.sourceSeg })\n }\n }\n\n\n _unrenderEventResize(state: EventSegUiInteractionState) {\n if (state) {\n this.eventRenderer.showByHash(state.affectedInstances)\n this.mirrorRenderer.unrender(state.segs, { isResizing: true, sourceSeg: state.sourceSeg })\n }\n }\n\n\n /* Selection\n ------------------------------------------------------------------------------------------------------------------*/\n\n\n // Renders a visual indication of a selection. Overrides the default, which was to simply render a highlight.\n _renderDateSelection(segs: Seg[]) {\n if (segs) {\n if (this.opt('selectMirror')) {\n this.mirrorRenderer.renderSegs(segs, { isSelecting: true })\n } else {\n this.fillRenderer.renderSegs('highlight', segs)\n }\n }\n }\n\n\n _unrenderDateSelection(segs: Seg[]) {\n this.mirrorRenderer.unrender(segs, { isSelecting: true })\n this.fillRenderer.unrender('highlight')\n }\n\n}\n","import {\n Splitter,\n hasBgRendering,\n EventDef,\n DateSpan\n} from '@fullcalendar/core'\n\nexport default class AllDaySplitter extends Splitter {\n\n getKeyInfo() {\n return {\n allDay: {},\n timed: {}\n }\n }\n\n getKeysForDateSpan(dateSpan: DateSpan): string[] {\n if (dateSpan.allDay) {\n return [ 'allDay' ]\n } else {\n return [ 'timed' ]\n }\n }\n\n getKeysForEventDef(eventDef: EventDef): string[] {\n if (!eventDef.allDay) {\n return [ 'timed' ]\n } else if (hasBgRendering(eventDef)) {\n return [ 'timed', 'allDay' ]\n } else {\n return [ 'allDay' ]\n }\n }\n\n}\n","import {\n findElements, createElement, htmlEscape,\n matchCellWidths, uncompensateScroll, compensateScroll, subtractInnerElHeight,\n ScrollComponent,\n View, ViewSpec, DateProfileGenerator,\n ComponentContext,\n createFormatter, diffDays,\n buildGotoAnchorHtml, getAllDayHtml\n} from '@fullcalendar/core'\nimport { DayGrid } from '@fullcalendar/daygrid'\nimport TimeGrid from './TimeGrid'\nimport AllDaySplitter from './AllDaySplitter'\n\nconst TIMEGRID_ALL_DAY_EVENT_LIMIT = 5\nconst WEEK_HEADER_FORMAT = createFormatter({ week: 'short' })\n\n\n/* An abstract class for all timegrid-related views. Displays one more columns with time slots running vertically.\n----------------------------------------------------------------------------------------------------------------------*/\n// Is a manager for the TimeGrid subcomponent and possibly the DayGrid subcomponent (if allDaySlot is on).\n// Responsible for managing width/height.\n\nexport default abstract class TimeGridView extends View {\n\n timeGrid: TimeGrid // the main time-grid subcomponent of this view\n dayGrid: DayGrid // the \"all-day\" subcomponent. if all-day is turned off, this will be null\n\n scroller: ScrollComponent\n axisWidth: any // the width of the time axis running down the side\n\n protected splitter = new AllDaySplitter()\n\n\n constructor(\n context: ComponentContext,\n viewSpec: ViewSpec,\n dateProfileGenerator: DateProfileGenerator,\n parentEl: HTMLElement\n ) {\n super(context, viewSpec, dateProfileGenerator, parentEl)\n\n this.el.classList.add('fc-timeGrid-view')\n this.el.innerHTML = this.renderSkeletonHtml()\n\n this.scroller = new ScrollComponent(\n 'hidden', // overflow x\n 'auto' // overflow y\n )\n\n let timeGridWrapEl = this.scroller.el\n this.el.querySelector('.fc-body > tr > td').appendChild(timeGridWrapEl)\n timeGridWrapEl.classList.add('fc-time-grid-container')\n let timeGridEl = createElement('div', { className: 'fc-time-grid' })\n timeGridWrapEl.appendChild(timeGridEl)\n\n this.timeGrid = new TimeGrid(\n this.context,\n timeGridEl,\n {\n renderBgIntroHtml: this.renderTimeGridBgIntroHtml,\n renderIntroHtml: this.renderTimeGridIntroHtml\n }\n )\n\n if (this.opt('allDaySlot')) { // should we display the \"all-day\" area?\n\n this.dayGrid = new DayGrid( // the all-day subcomponent of this view\n this.context,\n this.el.querySelector('.fc-day-grid'),\n {\n renderNumberIntroHtml: this.renderDayGridIntroHtml, // don't want numbers\n renderBgIntroHtml: this.renderDayGridBgIntroHtml,\n renderIntroHtml: this.renderDayGridIntroHtml,\n colWeekNumbersVisible: false,\n cellWeekNumbersVisible: false\n }\n )\n\n // have the day-grid extend it's coordinate area over the <hr> dividing the two grids\n this.dayGrid.bottomCoordPadding = (this.el.querySelector('.fc-divider') as HTMLElement).offsetHeight\n }\n }\n\n\n destroy() {\n super.destroy()\n\n this.timeGrid.destroy()\n\n if (this.dayGrid) {\n this.dayGrid.destroy()\n }\n\n this.scroller.destroy()\n }\n\n\n /* Rendering\n ------------------------------------------------------------------------------------------------------------------*/\n\n\n // Builds the HTML skeleton for the view.\n // The day-grid and time-grid components will render inside containers defined by this HTML.\n renderSkeletonHtml() {\n let { theme } = this\n\n return '' +\n '<table class=\"' + theme.getClass('tableGrid') + '\">' +\n (this.opt('columnHeader') ?\n '<thead class=\"fc-head\">' +\n '<tr>' +\n '<td class=\"fc-head-container ' + theme.getClass('widgetHeader') + '\">&nbsp;</td>' +\n '</tr>' +\n '</thead>' :\n ''\n ) +\n '<tbody class=\"fc-body\">' +\n '<tr>' +\n '<td class=\"' + theme.getClass('widgetContent') + '\">' +\n (this.opt('allDaySlot') ?\n '<div class=\"fc-day-grid\"></div>' +\n '<hr class=\"fc-divider ' + theme.getClass('widgetHeader') + '\" />' :\n ''\n ) +\n '</td>' +\n '</tr>' +\n '</tbody>' +\n '</table>'\n }\n\n\n /* Now Indicator\n ------------------------------------------------------------------------------------------------------------------*/\n\n\n getNowIndicatorUnit() {\n return this.timeGrid.getNowIndicatorUnit()\n }\n\n\n // subclasses should implement\n // renderNowIndicator(date: DateMarker) {\n // }\n\n\n unrenderNowIndicator() {\n this.timeGrid.unrenderNowIndicator()\n }\n\n\n /* Dimensions\n ------------------------------------------------------------------------------------------------------------------*/\n\n\n updateSize(isResize: boolean, viewHeight: number, isAuto: boolean) {\n super.updateSize(isResize, viewHeight, isAuto) // will call updateBaseSize. important that executes first\n\n this.timeGrid.updateSize(isResize)\n\n if (this.dayGrid) {\n this.dayGrid.updateSize(isResize)\n }\n }\n\n\n // Adjusts the vertical dimensions of the view to the specified values\n updateBaseSize(isResize, viewHeight, isAuto) {\n let eventLimit\n let scrollerHeight\n let scrollbarWidths\n\n // make all axis cells line up\n this.axisWidth = matchCellWidths(findElements(this.el, '.fc-axis'))\n\n // hack to give the view some height prior to timeGrid's columns being rendered\n // TODO: separate setting height from scroller VS timeGrid.\n if (!this.timeGrid.colEls) {\n if (!isAuto) {\n scrollerHeight = this.computeScrollerHeight(viewHeight)\n this.scroller.setHeight(scrollerHeight)\n }\n return\n }\n\n // set of fake row elements that must compensate when scroller has scrollbars\n let noScrollRowEls: HTMLElement[] = findElements(this.el, '.fc-row').filter((node) => {\n return !this.scroller.el.contains(node)\n })\n\n // reset all dimensions back to the original state\n this.timeGrid.bottomRuleEl.style.display = 'none' // will be shown later if this <hr> is necessary\n this.scroller.clear() // sets height to 'auto' and clears overflow\n noScrollRowEls.forEach(uncompensateScroll)\n\n // limit number of events in the all-day area\n if (this.dayGrid) {\n this.dayGrid.removeSegPopover() // kill the \"more\" popover if displayed\n\n eventLimit = this.opt('eventLimit')\n if (eventLimit && typeof eventLimit !== 'number') {\n eventLimit = TIMEGRID_ALL_DAY_EVENT_LIMIT // make sure \"auto\" goes to a real number\n }\n if (eventLimit) {\n this.dayGrid.limitRows(eventLimit)\n }\n }\n\n if (!isAuto) { // should we force dimensions of the scroll container?\n\n scrollerHeight = this.computeScrollerHeight(viewHeight)\n this.scroller.setHeight(scrollerHeight)\n scrollbarWidths = this.scroller.getScrollbarWidths()\n\n if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?\n\n // make the all-day and header rows lines up\n noScrollRowEls.forEach(function(rowEl) {\n compensateScroll(rowEl, scrollbarWidths)\n })\n\n // the scrollbar compensation might have changed text flow, which might affect height, so recalculate\n // and reapply the desired height to the scroller.\n scrollerHeight = this.computeScrollerHeight(viewHeight)\n this.scroller.setHeight(scrollerHeight)\n }\n\n // guarantees the same scrollbar widths\n this.scroller.lockOverflow(scrollbarWidths)\n\n // if there's any space below the slats, show the horizontal rule.\n // this won't cause any new overflow, because lockOverflow already called.\n if (this.timeGrid.getTotalSlatHeight() < scrollerHeight) {\n this.timeGrid.bottomRuleEl.style.display = ''\n }\n }\n }\n\n\n // given a desired total height of the view, returns what the height of the scroller should be\n computeScrollerHeight(viewHeight) {\n return viewHeight -\n subtractInnerElHeight(this.el, this.scroller.el) // everything that's NOT the scroller\n }\n\n\n /* Scroll\n ------------------------------------------------------------------------------------------------------------------*/\n\n\n // Computes the initial pre-configured scroll state prior to allowing the user to change it\n computeDateScroll(timeMs: number) {\n let top = this.timeGrid.computeTimeTop(timeMs)\n\n // zoom can give weird floating-point values. rather scroll a little bit further\n top = Math.ceil(top)\n\n if (top) {\n top++ // to overcome top border that slots beyond the first have. looks better\n }\n\n return { top }\n }\n\n\n queryDateScroll() {\n return { top: this.scroller.getScrollTop() }\n }\n\n\n applyDateScroll(scroll) {\n if (scroll.top !== undefined) {\n this.scroller.setScrollTop(scroll.top)\n }\n }\n\n\n /* Header Render Methods\n ------------------------------------------------------------------------------------------------------------------*/\n\n\n // Generates the HTML that will go before the day-of week header cells\n renderHeadIntroHtml = () => {\n let { theme, dateEnv } = this\n let range = this.props.dateProfile.renderRange\n let dayCnt = diffDays(range.start, range.end)\n let weekText\n\n if (this.opt('weekNumbers')) {\n weekText = dateEnv.format(range.start, WEEK_HEADER_FORMAT)\n\n return '' +\n '<th class=\"fc-axis fc-week-number ' + theme.getClass('widgetHeader') + '\" ' + this.axisStyleAttr() + '>' +\n buildGotoAnchorHtml( // aside from link, important for matchCellWidths\n this,\n { date: range.start, type: 'week', forceOff: dayCnt > 1 },\n htmlEscape(weekText) // inner HTML\n ) +\n '</th>'\n } else {\n return '<th class=\"fc-axis ' + theme.getClass('widgetHeader') + '\" ' + this.axisStyleAttr() + '></th>'\n }\n }\n\n\n // Generates an HTML attribute string for setting the width of the axis, if it is known\n axisStyleAttr() {\n if (this.axisWidth != null) {\n return 'style=\"width:' + this.axisWidth + 'px\"'\n }\n return ''\n }\n\n\n /* Time Grid Render Methods\n ------------------------------------------------------------------------------------------------------------------*/\n\n\n // Generates the HTML that goes before the bg of the TimeGrid slot area. Long vertical column.\n renderTimeGridBgIntroHtml = () => {\n let { theme } = this\n\n return '<td class=\"fc-axis ' + theme.getClass('widgetContent') + '\" ' + this.axisStyleAttr() + '></td>'\n }\n\n\n // Generates the HTML that goes before all other types of cells.\n // Affects content-skeleton, mirror-skeleton, highlight-skeleton for both the time-grid and day-grid.\n renderTimeGridIntroHtml = () => {\n return '<td class=\"fc-axis\" ' + this.axisStyleAttr() + '></td>'\n }\n\n\n /* Day Grid Render Methods\n ------------------------------------------------------------------------------------------------------------------*/\n\n\n // Generates the HTML that goes before the all-day cells\n renderDayGridBgIntroHtml = () => {\n let { theme } = this\n\n return '' +\n '<td class=\"fc-axis ' + theme.getClass('widgetContent') + '\" ' + this.axisStyleAttr() + '>' +\n '<span>' + // needed for matchCellWidths\n getAllDayHtml(this) +\n '</span>' +\n '</td>'\n }\n\n\n // Generates the HTML that goes before all other types of cells.\n // Affects content-skeleton, mirror-skeleton, highlight-skeleton for both the time-grid and day-grid.\n renderDayGridIntroHtml = () => {\n return '<td class=\"fc-axis\" ' + this.axisStyleAttr() + '></td>'\n }\n\n}\n\nTimeGridView.prototype.usesMinMaxTime = true // indicates that minTime/maxTime affects rendering\n","import {\n DateComponent,\n DateProfile,\n EventStore,\n EventUiHash,\n EventInteractionState,\n DateSpan,\n memoize,\n intersectRanges, DateRange,\n DayTable,\n DateEnv,\n DateMarker,\n Slicer,\n Hit,\n ComponentContext\n} from '@fullcalendar/core'\nimport TimeGrid, { TimeGridSeg } from './TimeGrid'\n\nexport interface SimpleTimeGridProps {\n dateProfile: DateProfile | null\n dayTable: DayTable\n businessHours: EventStore\n eventStore: EventStore\n eventUiBases: EventUiHash\n dateSelection: DateSpan | null\n eventSelection: string\n eventDrag: EventInteractionState | null\n eventResize: EventInteractionState | null\n}\n\nexport default class SimpleTimeGrid extends DateComponent<SimpleTimeGridProps> {\n\n timeGrid: TimeGrid\n\n private buildDayRanges = memoize(buildDayRanges)\n private dayRanges: DateRange[] // for now indicator\n private slicer = new TimeGridSlicer()\n\n constructor(context: ComponentContext, timeGrid: TimeGrid) {\n super(context, timeGrid.el)\n\n this.timeGrid = timeGrid\n\n context.calendar.registerInteractiveComponent(this, {\n el: this.timeGrid.el\n })\n }\n\n destroy() {\n super.destroy()\n\n this.calendar.unregisterInteractiveComponent(this)\n }\n\n render(props: SimpleTimeGridProps) {\n let { dateProfile, dayTable } = props\n let dayRanges = this.dayRanges = this.buildDayRanges(dayTable, dateProfile, this.dateEnv)\n\n this.timeGrid.receiveProps({\n ...this.slicer.sliceProps(props, dateProfile, null, this.timeGrid, dayRanges),\n dateProfile,\n cells: dayTable.cells[0]\n })\n }\n\n renderNowIndicator(date: DateMarker) {\n this.timeGrid.renderNowIndicator(\n this.slicer.sliceNowDate(date, this.timeGrid, this.dayRanges),\n date\n )\n }\n\n buildPositionCaches() {\n this.timeGrid.buildPositionCaches()\n }\n\n queryHit(positionLeft: number, positionTop: number): Hit {\n let rawHit = this.timeGrid.positionToHit(positionLeft, positionTop)\n\n if (rawHit) {\n return {\n component: this.timeGrid,\n dateSpan: rawHit.dateSpan,\n dayEl: rawHit.dayEl,\n rect: {\n left: rawHit.relativeRect.left,\n right: rawHit.relativeRect.right,\n top: rawHit.relativeRect.top,\n bottom: rawHit.relativeRect.bottom\n },\n layer: 0\n }\n }\n }\n\n}\n\n\nexport function buildDayRanges(dayTable: DayTable, dateProfile: DateProfile, dateEnv: DateEnv): DateRange[] {\n let ranges: DateRange[] = []\n\n for (let date of dayTable.headerDates) {\n ranges.push({\n start: dateEnv.add(date, dateProfile.minTime),\n end: dateEnv.add(date, dateProfile.maxTime)\n })\n }\n\n return ranges\n}\n\n\nexport class TimeGridSlicer extends Slicer<TimeGridSeg, [DateRange[]]> {\n\n sliceRange(range: DateRange, dayRanges: DateRange[]): TimeGridSeg[] {\n let segs: TimeGridSeg[] = []\n\n for (let col = 0; col < dayRanges.length; col++) {\n let segRange = intersectRanges(range, dayRanges[col])\n\n if (segRange) {\n segs.push({\n start: segRange.start,\n end: segRange.end,\n isStart: segRange.start.valueOf() === range.start.valueOf(),\n isEnd: segRange.end.valueOf() === range.end.valueOf(),\n col\n })\n }\n }\n\n return segs\n }\n\n}\n","import {\n DateProfileGenerator, DateProfile,\n ComponentContext,\n ViewSpec,\n DayHeader,\n DaySeries,\n DayTable,\n memoize,\n ViewProps\n} from '@fullcalendar/core'\nimport { SimpleDayGrid } from '@fullcalendar/daygrid'\nimport SimpleTimeGrid from './SimpleTimeGrid'\nimport AbstractTimeGridView from './AbstractTimeGridView'\n\n\nexport default class TimeGridView extends AbstractTimeGridView {\n\n header: DayHeader\n simpleDayGrid: SimpleDayGrid\n simpleTimeGrid: SimpleTimeGrid\n\n private buildDayTable = memoize(buildDayTable)\n\n constructor(\n _context: ComponentContext,\n viewSpec: ViewSpec,\n dateProfileGenerator: DateProfileGenerator,\n parentEl: HTMLElement\n ) {\n super(_context, viewSpec, dateProfileGenerator, parentEl)\n\n if (this.opt('columnHeader')) {\n this.header = new DayHeader(\n this.context,\n this.el.querySelector('.fc-head-container')\n )\n }\n\n this.simpleTimeGrid = new SimpleTimeGrid(this.context, this.timeGrid)\n\n if (this.dayGrid) {\n this.simpleDayGrid = new SimpleDayGrid(this.context, this.dayGrid)\n }\n }\n\n destroy() {\n super.destroy()\n\n if (this.header) {\n this.header.destroy()\n }\n\n this.simpleTimeGrid.destroy()\n\n if (this.simpleDayGrid) {\n this.simpleDayGrid.destroy()\n }\n }\n\n render(props: ViewProps) {\n super.render(props) // for flags for updateSize\n\n let { dateProfile } = this.props\n let dayTable = this.buildDayTable(dateProfile, this.dateProfileGenerator)\n let splitProps = this.splitter.splitProps(props)\n\n if (this.header) {\n this.header.receiveProps({\n dateProfile,\n dates: dayTable.headerDates,\n datesRepDistinctDays: true,\n renderIntroHtml: this.renderHeadIntroHtml\n })\n }\n\n this.simpleTimeGrid.receiveProps({\n ...splitProps['timed'],\n dateProfile,\n dayTable\n })\n\n if (this.simpleDayGrid) {\n this.simpleDayGrid.receiveProps({\n ...splitProps['allDay'],\n dateProfile,\n dayTable,\n nextDayThreshold: this.nextDayThreshold,\n isRigid: false\n })\n }\n }\n\n renderNowIndicator(date) {\n this.simpleTimeGrid.renderNowIndicator(date)\n }\n\n}\n\nexport function buildDayTable(dateProfile: DateProfile, dateProfileGenerator: DateProfileGenerator): DayTable {\n let daySeries = new DaySeries(dateProfile.renderRange, dateProfileGenerator)\n\n return new DayTable(daySeries, false)\n}\n","import { createPlugin } from '@fullcalendar/core'\nimport AbstractTimeGridView from './AbstractTimeGridView'\nimport TimeGridView, { buildDayTable } from './TimeGridView'\nimport { TimeGridSeg } from './TimeGrid'\nimport { TimeGridSlicer, buildDayRanges } from './SimpleTimeGrid'\n\nexport { TimeGridView, AbstractTimeGridView, buildDayTable, buildDayRanges, TimeGridSlicer, TimeGridSeg }\nexport { default as TimeGrid } from './TimeGrid'\n\nexport default createPlugin({\n defaultView: 'timeGridWeek',\n views: {\n\n timeGrid: {\n class: TimeGridView,\n allDaySlot: true,\n slotDuration: '00:30:00',\n slotEventOverlap: true // a bad name. confused with overlap/constraint system\n },\n\n timeGridDay: {\n type: 'timeGrid',\n duration: { days: 1 }\n },\n\n timeGridWeek: {\n type: 'timeGrid',\n duration: { weeks: 1 }\n }\n\n }\n})\n"],"names":["tslib_1.__extends","createFormatter","removeElement","cssToStr","isMultiDayRange","htmlEscape","compareByFieldSpecs","applyStyle","FgEventRenderer","buildSegCompareObj","FillRenderer","memoizeRendering","createDuration","wholeDivideDurations","findElements","PositionCache","startOfDay","asRoughMs","formatIsoTimeString","addDurations","DayBgRow","htmlToElement","createElement","multiplyDuration","DateComponent","hasBgRendering","Splitter","diffDays","buildGotoAnchorHtml","getAllDayHtml","ScrollComponent","DayGrid","matchCellWidths","uncompensateScroll","compensateScroll","subtractInnerElHeight","View","memoize","intersectRanges","Slicer","DayHeader","SimpleDayGrid","AbstractTimeGridView","DaySeries","DayTable","createPlugin","TimeGridView"],"mappings":";;;;;;IAAA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;;IAEA,IAAI,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;IACnC,IAAI,aAAa,GAAG,MAAM,CAAC,cAAc;IACzC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;IACpF,QAAQ,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,IAAI,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;;AAEF,IAAO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;IAChC,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,IAAI,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IAC3C,IAAI,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;IACzF,CAAC;;AAED,IAAO,IAAI,QAAQ,GAAG,WAAW;IACjC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;IACrD,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7B,YAAY,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;IACzF,SAAS;IACT,QAAQ,OAAO,CAAC,CAAC;IACjB,MAAK;IACL,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC;;IC7BD;;;;IAIA;QAAmDA,yCAAe;QAOhE,+BAAY,QAAkB;YAA9B,YACE,kBAAM,QAAQ,CAAC,OAAO,CAAC,SASxB;YAPC,KAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;YAExB,KAAI,CAAC,cAAc,GAAGC,oBAAe,CAAC;gBACpC,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB;aACtD,CAAC,CAAA;;SACH;;;QAKD,0CAAU,GAAV,UAAW,IAAW,EAAE,UAAU;YAChC,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;;;YAIlD,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC/C,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;aACpD;YAED,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;YAC1B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;SACvE;QAGD,0CAAU,GAAV,UAAW,IAAW;YACpB,IAAI,CAAC,OAAO,CAAC,UAAS,GAAG;gBACvBC,kBAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;aACtB,CAAC,CAAA;YAEF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;SACtB;QAGD,+CAAe,GAAf,UAAgB,OAAc;YACxB,IAAA,SAA8B,EAA5B,sBAAQ,EAAE,wBAAkB,CAAA;YAClC,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;YAE5B,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;YAErC,IAAI,SAAS,EAAE;gBACb,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE;oBACrC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;iBAC3C;aACF;SACF;QAGD,8CAAc,GAAd,UAAe,OAAc;YACvB,IAAA,SAA8B,EAA5B,sBAAQ,EAAE,wBAAkB,CAAA;YAClC,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;YAE5B,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;YAEpC,IAAI,SAAS,EAAE;gBACb,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE;oBACrC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;iBAClC;aACF;SACF;;QAID,sDAAsB,GAAtB;YACE,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,KAAK;aAChB,CAAA;SACF;;QAID,sDAAsB,GAAtB;YACE,OAAO,IAAI,CAAA;SACZ;;QAID,6CAAa,GAAb,UAAc,GAAQ,EAAE,UAAU;YAChC,IAAI,UAAU,GAAG,GAAG,CAAC,UAAU,CAAA;YAC/B,IAAI,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAA;YAC7B,IAAI,OAAO,GAAG,UAAU,CAAC,EAAE,CAAA;YAC3B,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;YAC5B,IAAI,WAAW,GAAG,OAAO,CAAC,aAAa,CAAA;YACvC,IAAI,oBAAoB,GAAG,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAA;YAClH,IAAI,kBAAkB,GAAG,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,gBAAgB,CAAA;YAC9D,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,oBAAoB,IAAI,kBAAkB,EAAE,UAAU,CAAC,CAAA;YAC1G,IAAI,OAAO,GAAGC,aAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;YAChD,IAAI,QAAQ,CAAA;YACZ,IAAI,YAAY,CAAA;YAChB,IAAI,aAAa,CAAA;YAEjB,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;;YAGrC,IAAIC,oBAAe,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;;;;gBAIrC,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,EAAE;oBAC5B,IAAI,YAAY,GAAG,GAAG,CAAC,KAAK,CAAA;oBAC5B,IAAI,UAAU,GAAG,GAAG,CAAC,GAAG,CAAA;oBACxB,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;oBAC9D,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;oBACvF,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;iBACjF;aACF;iBAAM;;gBAEL,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;gBACvC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;gBAChE,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;aAC1D;YAED,OAAO,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;iBAC1C,QAAQ,CAAC,GAAG;oBACX,SAAS,GAAGC,eAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG;oBAC1C,EAAE,CACD;iBACF,OAAO;oBACN,UAAU,GAAG,OAAO,GAAG,GAAG;oBAC1B,EAAE,CACD;gBACH,GAAG;gBACD,0BAA0B;iBACvB,QAAQ;oBACP,sBAAsB;wBACtB,eAAe,GAAGA,eAAU,CAAC,aAAa,CAAC,GAAG,GAAG;wBACjD,cAAc,GAAGA,eAAU,CAAC,YAAY,CAAC,GAAG,GAAG;wBAC/C,GAAG;wBACD,QAAQ,GAAGA,eAAU,CAAC,QAAQ,CAAC,GAAG,SAAS;wBAC7C,QAAQ;oBACR,EAAE,CACD;iBACF,QAAQ,CAAC,KAAK;oBACb,wBAAwB;wBACtBA,eAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAC5B,QAAQ;oBACR,EAAE,CACD;gBACL,QAAQ;;;;;;;iBAOP,kBAAkB;oBACjB,+CAA+C;oBAC/C,EAAE,CACD;gBACL,MAAM,CAAA;SACT;;;;QAMD,qDAAqB,GAArB,UAAsB,IAAW;YAC/B,IAAI,MAAM,CAAA;YACV,IAAI,MAAM,CAAA;YACV,IAAI,CAAC,CAAA;YAEL,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;YACjC,sBAAsB,CAAC,MAAM,CAAC,CAAA;YAE9B,KAAK,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG;gBAExB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAClC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;iBACnC;gBAED,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAClC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;iBAC5C;aACF;SACF;;;;;;;;;QAWD,qDAAqB,GAArB,UAAsB,GAAQ,EAAE,sBAAsB,EAAE,mBAAmB;YACzE,IAAI,WAAW,GAAG,GAAG,CAAC,WAAW,CAAA;YACjC,IAAI,CAAC,CAAA;YAEL,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,EAAE;gBAElC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;;oBAGvB,GAAG,CAAC,YAAY,GAAG,CAAC,CAAA;iBACrB;qBAAM;;oBAGL,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;;;oBAIjC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,sBAAsB,GAAG,CAAC,EAAE,mBAAmB,CAAC,CAAA;oBAC3F,GAAG,CAAC,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,CAAA;iBAChD;;gBAGD,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,YAAY;oBAClC,CAAC,GAAG,CAAC,YAAY,GAAG,mBAAmB;yBACtC,sBAAsB,GAAG,CAAC,CAAC,CAAA;;;gBAI9B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACvC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,CAAA;iBAChE;aACF;SACF;QAGD,+CAAe,GAAf,UAAgB,WAAkB;YAChC,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;YAEtD,IAAI,KAAK,GAAG;;gBAEV,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE;;gBAEvC,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE;aACrC,CAAC,MAAM,CACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAClC,CAAA;YAED,IAAI,CAAC,IAAI,CAAC,UAAS,IAAI,EAAE,IAAI;gBAC3B,OAAOC,wBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;aAC9C,CAAC,CAAA;YAEF,OAAO,IAAI,CAAC,GAAG,CAAC,UAAS,CAAC;gBACxB,OAAO,CAAC,CAAC,IAAI,CAAA;aACd,CAAC,CAAA;SACH;;;QAKD,4CAAY,GAAZ,UAAa,IAAW;YAEtB,KAAgB,UAAI,EAAJ,aAAI,EAAJ,kBAAI,EAAJ,IAAI,EAAE;gBAAjB,IAAI,GAAG,aAAA;gBACVC,eAAU,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAA;gBAE5C,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE;oBACjB,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;iBACjD;;;gBAID,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE;oBACzD,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;iBACjC;aACF;SACF;;;QAKD,8CAAc,GAAd,UAAe,GAAQ;YACrB,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAA;YACzD,IAAI,aAAa,GAAG,GAAG,CAAC,aAAa,CAAA;YACrC,IAAI,YAAY,GAAG,GAAG,CAAC,YAAY,CAAA;YACnC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,GAAG,CAAQ,CAAA;YAC5D,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA;YAC/B,IAAI,IAAI,CAAA;YACR,IAAI,KAAK,CAAA;YAET,IAAI,aAAa,EAAE;;gBAEjB,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,YAAY,GAAG,aAAa,IAAI,CAAC,CAAC,CAAA;aAC/E;YAED,IAAI,KAAK,EAAE;gBACT,IAAI,GAAG,CAAC,GAAG,YAAY,CAAA;gBACvB,KAAK,GAAG,aAAa,CAAA;aACtB;iBAAM;gBACL,IAAI,GAAG,aAAa,CAAA;gBACpB,KAAK,GAAG,CAAC,GAAG,YAAY,CAAA;aACzB;YAED,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAA;YAC5B,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAA;YAC7B,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,CAAA;YAE/B,IAAI,aAAa,IAAI,GAAG,CAAC,eAAe,EAAE;;gBAExC,KAAK,CAAC,KAAK,GAAG,YAAY,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;aACrD;YAED,OAAO,KAAK,CAAA;SACb;QAEH,4BAAC;IAAD,CAvTA,CAAmDC,oBAAe,GAuTjE;IAGD;IACA;IACA,SAAS,kBAAkB,CAAC,IAAW;QACrC,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,CAAC,CAAA;QACL,IAAI,GAAG,CAAA;QACP,IAAI,CAAC,CAAA;QAEL,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;;YAGb,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAClC,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;oBACpD,MAAK;iBACN;aACF;YAED,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;YAEd,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;SAC1C;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAGD;IACA;IACA,SAAS,sBAAsB,CAAC,MAAM;QACpC,IAAI,CAAC,CAAA;QACL,IAAI,KAAK,CAAA;QACT,IAAI,CAAC,CAAA;QACL,IAAI,GAAG,CAAA;QACP,IAAI,CAAC,CAAA;QAEL,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YAEjB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACjC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;gBAEd,GAAG,CAAC,WAAW,GAAG,EAAE,CAAA;gBACpB,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACtC,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;iBAC1D;aACF;SACF;IACH,CAAC;IAGD;IACA;IACA,SAAS,uBAAuB,CAAC,GAAQ;QACvC,IAAI,WAAW,GAAG,GAAG,CAAC,WAAW,CAAA;QACjC,IAAI,eAAe,GAAG,CAAC,CAAA;QACvB,IAAI,CAAC,CAAA;QACL,IAAI,UAAU,CAAA;QAEd,IAAI,GAAG,CAAC,eAAe,KAAK,SAAS,EAAE;YAErC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvC,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;;gBAG3B,uBAAuB,CAAC,UAAU,CAAC,CAAA;;;gBAInC,eAAe,GAAG,IAAI,CAAC,GAAG,CACxB,eAAe,EACf,CAAC,GAAG,UAAU,CAAC,eAAe,CAC/B,CAAA;aACF;YAED,GAAG,CAAC,eAAe,GAAG,eAAe,CAAA;SACtC;IACH,CAAC;IAGD;IACA;IACA,SAAS,wBAAwB,CAAC,GAAQ,EAAE,SAAgB,EAAE,OAAW;QAAX,wBAAA,EAAA,YAAW;QAEvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;aAC3B;SACF;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAGD;IACA,SAAS,kBAAkB,CAAC,IAAS,EAAE,IAAS;QAC9C,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;IACzD,CAAC;IAGD,SAAS,0BAA0B,CAAC,GAAQ;QAC1C,IAAI,GAAG,GAAGC,uBAAkB,CAAC,GAAG,CAAC,CAAA;QAEjC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAA;QACzC,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,CAAA;QAErC,OAAO,GAAG,CAAA;IACZ,CAAC;;IC9aD;QAAoDT,0CAAqB;QAAzE;;SA2BC;QAvBC,2CAAU,GAAV,UAAW,IAAW,EAAE,UAAU;YAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;YACnD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;YAE/E,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAA;SACtC;QAED,+CAAc,GAAd,UAAe,GAAQ;YACrB,IAAI,KAAK,GAAG,iBAAM,cAAc,YAAC,GAAG,CAAC,CAAA;YAC/B,IAAA,0BAAS,CAAS;YAExB,IAAI,SAAS,IAAI,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE;gBAC1C,IAAI,cAAc,GAAG,iBAAM,cAAc,YAAC,SAAS,CAAC,CAAA;gBAEpD,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAA;gBAChC,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAA;gBAClC,KAAK,CAAC,UAAU,GAAG,cAAc,CAAC,UAAU,CAAA;gBAC5C,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW,CAAA;aAC/C;YAED,OAAO,KAAK,CAAA;SACb;QAEH,6BAAC;IAAD,CA3BA,CAAoD,qBAAqB,GA2BxE;;ICzBD;QAAkDA,wCAAY;QAI5D,8BAAY,QAAkB;YAA9B,YACE,kBAAM,QAAQ,CAAC,OAAO,CAAC,SAGxB;YADC,KAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;;SACzB;QAED,yCAAU,GAAV,UAAW,IAAI,EAAE,IAAW;YACpB,IAAA,wBAAQ,CAAS;YACvB,IAAI,YAAY,CAAA;;YAGhB,IAAI,IAAI,KAAK,SAAS,EAAE;gBACtB,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAA;aACvC;iBAAM,IAAI,IAAI,KAAK,eAAe,EAAE;gBACnC,YAAY,GAAG,QAAQ,CAAC,oBAAoB,CAAA;aAC7C;iBAAM,IAAI,IAAI,KAAK,WAAW,EAAE;gBAC/B,YAAY,GAAG,QAAQ,CAAC,qBAAqB,CAAA;aAC9C;YAED,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAA;YAErE,OAAO,IAAI,CAAC,GAAG,CAAC,UAAS,GAAG;gBAC1B,OAAO,GAAG,CAAC,EAAE,CAAA;aACd,CAAC,CAAA;SACH;QAED,8CAAe,GAAf,UAAgB,IAAW;YACzB,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;SACxC;QAED,6CAAc,GAAd,UAAe,IAAW;YACxB,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;SACvC;QAEH,2BAAC;IAAD,CAtCA,CAAkDU,iBAAY,GAsC7D;;ICXD;;IAGA;IACA;IACA,IAAM,0BAA0B,GAAG;QACjC,EAAE,KAAK,EAAE,CAAC,EAAE;QACZ,EAAE,OAAO,EAAE,EAAE,EAAE;QACf,EAAE,OAAO,EAAE,EAAE,EAAE;QACf,EAAE,OAAO,EAAE,EAAE,EAAE;QACf,EAAE,OAAO,EAAE,EAAE,EAAE;KAChB,CAAA;IA8BD;QAAsCV,4BAA4B;QA4ChE,kBAAY,OAAyB,EAAE,EAAe,EAAE,WAAwB;YAAhF,YACE,kBAAM,OAAO,EAAE,EAAE,CAAC,SAiEnB;YA5FD,sBAAgB,GAAY,KAAK,CAAA;YACjC,qBAAe,GAAY,KAAK,CAAA;YAcxB,iBAAW,GAAGW,qBAAgB,CAAC,KAAI,CAAC,YAAY,CAAC,CAAA;YAcvD,IAAI,aAAa,GAAG,KAAI,CAAC,aAAa,GAAG,IAAI,qBAAqB,CAAC,KAAI,CAAC,CAAA;YACxE,IAAI,YAAY,GAAG,KAAI,CAAC,YAAY,GAAG,IAAI,oBAAoB,CAAC,KAAI,CAAC,CAAA;YACrE,KAAI,CAAC,cAAc,GAAG,IAAI,sBAAsB,CAAC,KAAI,CAAC,CAAA;YAEtD,IAAI,aAAa,GAAG,KAAI,CAAC,aAAa,GAAGA,qBAAgB,CACvD,KAAI,CAAC,cAAc,EACnB,KAAI,CAAC,gBAAgB,CACtB,CAAA;YAED,KAAI,CAAC,mBAAmB,GAAGA,qBAAgB,CACzC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,EAC3D,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,EACzD,CAAE,aAAa,CAAE,CAClB,CAAA;YAED,KAAI,CAAC,mBAAmB,GAAGA,qBAAgB,CACzC,KAAI,CAAC,oBAAoB,EACzB,KAAI,CAAC,sBAAsB,EAC3B,CAAE,aAAa,CAAE,CAClB,CAAA;YAED,KAAI,CAAC,cAAc,GAAGA,qBAAgB,CACpC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAC5C,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAC1C,CAAE,aAAa,CAAE,CAClB,CAAA;YAED,KAAI,CAAC,cAAc,GAAGA,qBAAgB,CACpC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,EACrD,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,EACnD,CAAE,aAAa,CAAE,CAClB,CAAA;YAED,KAAI,CAAC,oBAAoB,GAAGA,qBAAgB,CAC1C,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,EACpD,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,EACtD,CAAE,KAAI,CAAC,cAAc,CAAE,CACxB,CAAA;YAED,KAAI,CAAC,eAAe,GAAGA,qBAAgB,CACrC,KAAI,CAAC,gBAAgB,EACrB,KAAI,CAAC,kBAAkB,EACvB,CAAE,aAAa,CAAE,CAClB,CAAA;YAED,KAAI,CAAC,iBAAiB,GAAGA,qBAAgB,CACvC,KAAI,CAAC,kBAAkB,EACvB,KAAI,CAAC,oBAAoB,EACzB,CAAE,aAAa,CAAE,CAClB,CAAA;YAED,KAAI,CAAC,cAAc,EAAE,CAAA;YAErB,EAAE,CAAC,SAAS;gBACV,2BAA2B;oBAC3B,8BAA8B;oBAC9B,wBAAwB,GAAG,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,2BAA2B,CAAA;YAE9F,KAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;YACnD,KAAI,CAAC,eAAe,GAAG,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,CAAA;YACpD,KAAI,CAAC,YAAY,GAAG,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;YAEnD,KAAI,CAAC,WAAW,GAAG,WAAW,CAAA;;SAC/B;;;;QAQD,iCAAc,GAAd;YACE,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;YAC3C,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;YAC3C,IAAI,YAAY,CAAA;YAChB,IAAI,KAAK,CAAA;YAET,YAAY,GAAGC,mBAAc,CAAC,YAAY,CAAC,CAAA;YAC3C,YAAY,GAAG,YAAY,GAAGA,mBAAc,CAAC,YAAY,CAAC,GAAG,YAAY,CAAA;YACzE,YAAY,GAAGC,yBAAoB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;YAE/D,IAAI,YAAY,KAAK,IAAI,EAAE;gBACzB,YAAY,GAAG,YAAY,CAAA;gBAC3B,YAAY,GAAG,CAAC,CAAA;;aAEjB;YAED,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;YAChC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;YAChC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;;;YAIhC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;YACnC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;aAChC;YAED,IAAI,CAAC,WAAW,GAAGZ,oBAAe,CAAC,KAAK,IAAI;gBAC1C,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,SAAS;gBACjB,cAAc,EAAE,IAAI;gBACpB,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAA;YAEF,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;YACrC,IAAI,CAAC,aAAa,GAAG,KAAK;gBACxBW,mBAAc,CAAC,KAAK,CAAC;gBACrB,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAA;SAC1C;;QAID,uCAAoB,GAApB,UAAqB,YAAY;YAC/B,IAAI,CAAC,CAAA;YACL,IAAI,aAAa,CAAA;YACjB,IAAI,aAAa,CAAA;;YAGjB,KAAK,CAAC,GAAG,0BAA0B,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC3D,aAAa,GAAGA,mBAAc,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC7D,aAAa,GAAGC,yBAAoB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;gBACjE,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa,GAAG,CAAC,EAAE;oBAC/C,OAAO,aAAa,CAAA;iBACrB;aACF;YAED,OAAO,YAAY,CAAA;SACpB;;;QAOD,yBAAM,GAAN,UAAO,KAAoB;YACzB,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;YACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;YAE1B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YACnC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;YAClD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;YAChD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;YACjD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YACtC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YACtC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;YAC/C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YACrC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;SAC1C;QAGD,0BAAO,GAAP;YACE,iBAAM,OAAO,WAAE,CAAA;;YAGf,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAA;YAC3B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;SAC9B;QAGD,6BAAU,GAAV,UAAW,QAAiB;YACtB,IAAA,SAAsD,EAApD,8BAAY,EAAE,gCAAa,EAAE,kCAAuB,CAAA;YAE1D,IAAI,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACrC,IAAI,CAAC,kBAAkB,EAAE,CAAA;gBACzB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;aAC9B;YAED,IAAI,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;gBACpC,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACxB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAA;aAC7B;YAED,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;YACnC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;YACpC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;YAErC,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;YAClC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;YACnC,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;SACrC;QAGD,+BAAY,GAAZ,UAAa,WAAwB;YAC7B,IAAA,kBAAK,CAAS;YAEpB,IAAI,CAAC,eAAe,CAAC,SAAS;gBAC5B,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI;oBACnD,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;oBACrC,UAAU,CAAA;YAEZ,IAAI,CAAC,OAAO,GAAGC,iBAAY,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;YAEvD,IAAI,CAAC,aAAa,GAAG,IAAIC,kBAAa,CACpC,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,OAAO,EACZ,KAAK,EACL,IAAI;aACL,CAAA;YAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;SAC7B;;QAID,oCAAiB,GAAjB,UAAkB,WAAwB;YACpC,IAAA,SAAgC,EAA9B,oBAAO,EAAE,gBAAK,EAAE,gBAAc,CAAA;YACpC,IAAI,IAAI,GAAG,EAAE,CAAA;YACb,IAAI,QAAQ,GAAGC,eAAU,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YACxD,IAAI,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAA;YAClC,IAAI,YAAY,GAAGJ,mBAAc,CAAC,CAAC,CAAC,CAAA;YACpC,IAAI,QAAQ,CAAA;YACZ,IAAI,SAAS,CAAA;YACb,IAAI,QAAQ,CAAA;;YAGZ,OAAOK,cAAS,CAAC,QAAQ,CAAC,GAAGA,cAAS,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;gBAC3D,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;gBAC1C,SAAS,GAAGJ,yBAAoB,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAA;gBAE3E,QAAQ;oBACN,6BAA6B,GAAG,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,IAAI;yBACnE,SAAS;4BACR,QAAQ;gCACNR,eAAU,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gCACxD,SAAS;4BACT,EAAE,CACD;wBACL,OAAO,CAAA;gBAET,IAAI;oBACF,iBAAiB,GAAGa,wBAAmB,CAAC,QAAQ,CAAC,GAAG,GAAG;yBACpD,SAAS,GAAG,EAAE,GAAG,mBAAmB,CAAC;wBACtC,GAAG;yBACF,CAAC,KAAK,GAAG,QAAQ,GAAG,EAAE,CAAC;wBACxB,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,SAAS;yBAC1D,KAAK,GAAG,QAAQ,GAAG,EAAE,CAAC;wBACzB,OAAO,CAAA;gBAET,QAAQ,GAAGC,iBAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;gBACpD,YAAY,GAAGA,iBAAY,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;aAC7D;YAED,OAAO,IAAI,CAAA;SACZ;QAGD,iCAAc,GAAd,UAAe,KAAqB,EAAE,WAAwB;YACxD,IAAA,SAA+B,EAA7B,gBAAK,EAAE,oBAAO,EAAE,cAAa,CAAA;YAEnC,IAAI,KAAK,GAAG,IAAIC,gBAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACtC,IAAI,CAAC,iBAAiB,CAAC,SAAS;gBAC9B,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI;oBACnD,KAAK,CAAC,UAAU,CAAC;wBACf,KAAK,OAAA;wBACL,WAAW,aAAA;wBACX,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,iBAAiB;qBACpD,CAAC;oBACJ,UAAU,CAAA;YAEZ,IAAI,CAAC,MAAM,GAAGN,iBAAY,CAAC,IAAI,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAA;YAEhE,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC1C,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;oBAChC;wBACE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACrC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;wBACpB,IAAI,MAAA;qBACL;iBACF,CAAC,CAAA;aACH;YAED,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;aACtB;YAED,IAAI,CAAC,YAAY,GAAG,IAAIC,kBAAa,CACnC,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,MAAM,EACX,IAAI;YACJ,KAAK,CACN,CAAA;YAED,IAAI,CAAC,qBAAqB,EAAE,CAAA;YAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;SAC5B;QAGD,mCAAgB,GAAhB;YACE,IAAI,CAAC,uBAAuB,EAAE,CAAA;SAC/B;;;;QAQD,wCAAqB,GAArB;YACE,IAAI,KAAK,GAAG,EAAE,CAAA;YACd,IAAI,UAAuB,CAAA;YAE3B,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CACnC,CAAA;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpC,KAAK,CAAC,IAAI,CACR,MAAM;oBACJ,8BAA8B;oBAC5B,4DAA4D;oBAC5D,wCAAwC;oBACxC,4CAA4C;oBAC5C,0CAA0C;oBAC1C,2CAA2C;oBAC7C,QAAQ;oBACV,OAAO,CACR,CAAA;aACF;YAED,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,KAAK,CAAC,OAAO,EAAE,CAAA;aAChB;YAED,UAAU,GAAG,IAAI,CAAC,iBAAiB,GAAGM,kBAAa,CACjD,mCAAmC;gBACjC,SAAS;gBACP,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO;gBACnC,UAAU;gBACZ,QAAQ,CACT,CAAA;YAED,IAAI,CAAC,eAAe,GAAGP,iBAAY,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;YAClE,IAAI,CAAC,kBAAkB,GAAGA,iBAAY,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAA;YAC1E,IAAI,CAAC,cAAc,GAAGA,iBAAY,CAAC,UAAU,EAAE,+CAA+C,CAAC,CAAA;YAC/F,IAAI,CAAC,cAAc,GAAGA,iBAAY,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAA;YACvE,IAAI,CAAC,qBAAqB,GAAGA,iBAAY,CAAC,UAAU,EAAE,yBAAyB,CAAC,CAAA;YAChF,IAAI,CAAC,oBAAoB,GAAGA,iBAAY,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAA;YAE9E,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAA;gBAC9B,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAA;gBACjC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAA;gBAC7B,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAA;gBAC7B,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAA;gBACpC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAA;aACpC;YAED,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;SAChC;QAGD,0CAAuB,GAAvB;YACEZ,kBAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;SACtC;;QAID,iCAAc,GAAd,UAAe,IAAI;YACjB,IAAI,SAAS,GAAG,EAAE,CAAA;YAClB,IAAI,CAAC,CAAA;YAEL,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;aACnB;YAED,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;aACrC;YAED,OAAO,SAAS,CAAA;SACjB;;;QAKD,kCAAe,GAAf,UAAgB,SAAS,EAAE,YAA2B;YACpD,IAAI,GAAG,CAAA;YACP,IAAI,IAAI,CAAA;YACR,IAAI,CAAC,CAAA;YAEL,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;gBACtC,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;gBAErB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAChC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;iBAC1C;aACF;SACF;;;QAOD,sCAAmB,GAAnB;YACE,OAAO,QAAQ,CAAA;SAChB;QAGD,qCAAkB,GAAlB,UAAmB,IAAmB,EAAE,IAAI;;YAG1C,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB,OAAM;aACP;YAED,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;YACnC,IAAI,KAAK,GAAG,EAAE,CAAA;YACd,IAAI,CAAC,CAAA;;YAGL,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChC,IAAI,MAAM,GAAGoB,kBAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,wCAAwC,EAAE,CAAC,CAAA;gBAC1F,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAA;gBAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;gBACrD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;aACnB;;YAGD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnB,IAAI,OAAO,GAAGA,kBAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,yCAAyC,EAAE,CAAC,CAAA;gBAC5F,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAA;gBAC9B,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;gBAC3C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;aACpB;YAED,IAAI,CAAC,eAAe,GAAG,KAAK,CAAA;SAC7B;QAGD,uCAAoB,GAApB;YACE,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,IAAI,CAAC,eAAe,CAAC,OAAO,CAACpB,kBAAa,CAAC,CAAA;gBAC3C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;aAC5B;SACF;;;QAOD,qCAAkB,GAAlB;YACE,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAA;SACzC;;;QAKD,iCAAc,GAAd,UAAe,IAAgB,EAAE,cAA2B;YAC1D,IAAI,CAAC,cAAc,EAAE;gBACnB,cAAc,GAAGc,eAAU,CAAC,IAAI,CAAC,CAAA;aAClC;YACD,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAA;SACtE;;QAID,iCAAc,GAAd,UAAe,MAAc;YAC3B,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;YAC7B,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAA;YACxC,IAAI,YAAY,GAAG,CAAC,MAAM,GAAGC,cAAS,CAAC,WAAW,CAAC,OAAO,CAAC,IAAIA,cAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAC3F,IAAI,SAAS,CAAA;YACb,IAAI,aAAa,CAAA;;;;YAKjB,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;YACxC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;;;YAI1C,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;YACpC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;;;YAIxC,aAAa,GAAG,YAAY,GAAG,SAAS,CAAA;YAExC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;gBACvC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,aAAa,CAAA;SAC1D;;QAID,sCAAmB,GAAnB,UAAoB,IAAI;YACtB,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;YACvD,IAAI,CAAC,CAAA;YACL,IAAI,GAAG,CAAA;YACP,IAAI,OAAO,CAAA;YAEX,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACb,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;gBAExC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;gBACjD,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CACnB,GAAG,CAAC,GAAG,GAAG,cAAc,EACxB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CACtC,CAAA;aACF;SACF;;;QAKD,qCAAkB,GAAlB,UAAmB,IAAI;YACrB,IAAI,CAAC,CAAA;YACL,IAAI,GAAG,CAAA;YAEP,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACbV,eAAU,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAA;aACrD;SACF;;QAID,yCAAsB,GAAtB,UAAuB,GAAG;YACxB,OAAO;gBACL,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM;aACpB,CAAA;SACF;;;QAOD,sCAAmB,GAAnB;YACE,IAAI,CAAC,iBAAiB,EAAE,CAAA;YACxB,IAAI,CAAC,kBAAkB,EAAE,CAAA;SAC1B;QAGD,oCAAiB,GAAjB;YACE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;SAC1B;QAGD,qCAAkB,GAAlB;YACE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;SAC3B;;;QAMD,gCAAa,GAAb,UAAc,YAAY,EAAE,WAAW;YACjC,IAAA,SAA6D,EAA3D,oBAAO,EAAE,8BAAY,EAAE,gCAAa,EAAE,8BAAqB,CAAA;YAEjE,IAAI,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;YACrD,IAAI,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;YAErD,IAAI,QAAQ,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE;gBACzC,IAAI,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC3C,IAAI,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;gBACnD,IAAI,OAAO,GAAG,CAAC,WAAW,GAAG,OAAO,IAAI,UAAU,CAAA;gBAClD,IAAI,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,CAAA;gBACvD,IAAI,SAAS,GAAG,SAAS,GAAG,YAAY,GAAG,cAAc,CAAA;gBAEzD,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAA;gBAC7C,IAAI,IAAI,GAAGY,iBAAY,CACrB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAC9BI,qBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAC/C,CAAA;gBAED,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBACtC,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;gBAE/C,OAAO;oBACL,GAAG,EAAE,QAAQ;oBACb,QAAQ,EAAE;wBACR,KAAK,EAAE,EAAE,KAAK,OAAA,EAAE,GAAG,KAAA,EAAE;wBACrB,MAAM,EAAE,KAAK;qBACd;oBACD,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;oBAC5B,YAAY,EAAE;wBACZ,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC;wBAClC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;wBACpC,GAAG,EAAE,OAAO;wBACZ,MAAM,EAAE,OAAO,GAAG,UAAU;qBAC7B;iBACF,CAAA;aACF;SACF;;;QAOD,mCAAgB,GAAhB,UAAiB,KAAiC;YAChD,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;gBAEtD,IAAI,KAAK,CAAC,OAAO,EAAE;oBACjB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;iBAC7F;qBAAM;oBACL,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;iBACtD;aACF;SACF;QAGD,qCAAkB,GAAlB,UAAmB,KAAiC;YAClD,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;gBACtD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;gBAC1F,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;aACxC;SACF;;;QAOD,qCAAkB,GAAlB,UAAmB,KAAiC;YAClD,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;gBACtD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;aAC7F;SACF;QAGD,uCAAoB,GAApB,UAAqB,KAAiC;YACpD,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;gBACtD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;aAC3F;SACF;;;;QAQD,uCAAoB,GAApB,UAAqB,IAAW;YAC9B,IAAI,IAAI,EAAE;gBACR,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;oBAC5B,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;iBAC5D;qBAAM;oBACL,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;iBAChD;aACF;SACF;QAGD,yCAAsB,GAAtB,UAAuB,IAAW;YAChC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;YACzD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;SACxC;QAEH,eAAC;IAAD,CAjsBA,CAAsCC,kBAAa,GAisBlD;;ICpwBD;QAA4CxB,kCAAQ;QAApD;;SA2BC;QAzBC,mCAAU,GAAV;YACE,OAAO;gBACL,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,EAAE;aACV,CAAA;SACF;QAED,2CAAkB,GAAlB,UAAmB,QAAkB;YACnC,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACnB,OAAO,CAAE,QAAQ,CAAE,CAAA;aACpB;iBAAM;gBACL,OAAO,CAAE,OAAO,CAAE,CAAA;aACnB;SACF;QAED,2CAAkB,GAAlB,UAAmB,QAAkB;YACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;gBACpB,OAAO,CAAE,OAAO,CAAE,CAAA;aACnB;iBAAM,IAAIyB,mBAAc,CAAC,QAAQ,CAAC,EAAE;gBACnC,OAAO,CAAE,OAAO,EAAE,QAAQ,CAAE,CAAA;aAC7B;iBAAM;gBACL,OAAO,CAAE,QAAQ,CAAE,CAAA;aACpB;SACF;QAEH,qBAAC;IAAD,CA3BA,CAA4CC,aAAQ,GA2BnD;;ICrBD,IAAM,4BAA4B,GAAG,CAAC,CAAA;IACtC,IAAM,kBAAkB,GAAGzB,oBAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAG7D;;IAEA;IACA;IAEA;QAAmDD,gCAAI;QAWrD,sBACE,OAAyB,EACzB,QAAkB,EAClB,oBAA0C,EAC1C,QAAqB;YAJvB,YAME,kBAAM,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,QAAQ,CAAC,SA0CzD;YAnDS,cAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;;;;YA2PzC,yBAAmB,GAAG;gBAChB,IAAA,UAAyB,EAAvB,gBAAK,EAAE,oBAAgB,CAAA;gBAC7B,IAAI,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAA;gBAC9C,IAAI,MAAM,GAAG2B,aAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;gBAC7C,IAAI,QAAQ,CAAA;gBAEZ,IAAI,KAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;oBAC3B,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;oBAE1D,OAAO,EAAE;wBACP,oCAAoC,GAAG,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,GAAG,KAAI,CAAC,aAAa,EAAE,GAAG,GAAG;wBACvGC,wBAAmB;wBACjB,KAAI,EACJ,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,EAAE,EACzDvB,eAAU,CAAC,QAAQ,CAAC;yBACrB;wBACH,OAAO,CAAA;iBACV;qBAAM;oBACL,OAAO,qBAAqB,GAAG,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,GAAG,KAAI,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAA;iBACvG;aACF,CAAA;;;;YAiBD,+BAAyB,GAAG;gBACpB,IAAA,mBAAK,CAAS;gBAEpB,OAAO,qBAAqB,GAAG,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,IAAI,GAAG,KAAI,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAA;aACxG,CAAA;;;YAKD,6BAAuB,GAAG;gBACxB,OAAO,sBAAsB,GAAG,KAAI,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAA;aAChE,CAAA;;;;YAQD,8BAAwB,GAAG;gBACnB,IAAA,mBAAK,CAAS;gBAEpB,OAAO,EAAE;oBACP,qBAAqB,GAAG,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,IAAI,GAAG,KAAI,CAAC,aAAa,EAAE,GAAG,GAAG;oBACzF,QAAQ;oBACNwB,kBAAa,CAAC,KAAI,CAAC;oBACrB,SAAS;oBACX,OAAO,CAAA;aACV,CAAA;;;YAKD,4BAAsB,GAAG;gBACvB,OAAO,sBAAsB,GAAG,KAAI,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAA;aAChE,CAAA;YAxTC,KAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;YACzC,KAAI,CAAC,EAAE,CAAC,SAAS,GAAG,KAAI,CAAC,kBAAkB,EAAE,CAAA;YAE7C,KAAI,CAAC,QAAQ,GAAG,IAAIC,oBAAe,CACjC,QAAQ;YACR,MAAM;aACP,CAAA;YAED,IAAI,cAAc,GAAG,KAAI,CAAC,QAAQ,CAAC,EAAE,CAAA;YACrC,KAAI,CAAC,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;YACvE,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;YACtD,IAAI,UAAU,GAAGR,kBAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAA;YACpE,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;YAEtC,KAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAC1B,KAAI,CAAC,OAAO,EACZ,UAAU,EACV;gBACE,iBAAiB,EAAE,KAAI,CAAC,yBAAyB;gBACjD,eAAe,EAAE,KAAI,CAAC,uBAAuB;aAC9C,CACF,CAAA;YAED,IAAI,KAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;gBAE1B,KAAI,CAAC,OAAO,GAAG,IAAIS,eAAO;gBACxB,KAAI,CAAC,OAAO,EACZ,KAAI,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC,EACrC;oBACE,qBAAqB,EAAE,KAAI,CAAC,sBAAsB;oBAClD,iBAAiB,EAAE,KAAI,CAAC,wBAAwB;oBAChD,eAAe,EAAE,KAAI,CAAC,sBAAsB;oBAC5C,qBAAqB,EAAE,KAAK;oBAC5B,sBAAsB,EAAE,KAAK;iBAC9B,CACF,CAAA;;gBAGD,KAAI,CAAC,OAAO,CAAC,kBAAkB,GAAI,KAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAiB,CAAC,YAAY,CAAA;aACrG;;SACF;QAGD,8BAAO,GAAP;YACE,iBAAM,OAAO,WAAE,CAAA;YAEf,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;YAEvB,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;aACvB;YAED,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;SACxB;;;;;QASD,yCAAkB,GAAlB;YACQ,IAAA,kBAAK,CAAS;YAEpB,OAAO,EAAE;gBACP,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI;iBAClD,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;oBACvB,yBAAyB;wBACvB,MAAM;wBACJ,+BAA+B,GAAG,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,eAAe;wBACpF,OAAO;wBACT,UAAU;oBACV,EAAE,CACD;gBACH,yBAAyB;gBACvB,MAAM;gBACJ,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,IAAI;iBACnD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;oBACrB,iCAAiC;wBACjC,wBAAwB,GAAG,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,MAAM;oBAClE,EAAE,CACD;gBACL,OAAO;gBACT,OAAO;gBACT,UAAU;gBACZ,UAAU,CAAA;SACb;;;QAOD,0CAAmB,GAAnB;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAA;SAC3C;;;;QAQD,2CAAoB,GAApB;YACE,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAA;SACrC;;;QAOD,iCAAU,GAAV,UAAW,QAAiB,EAAE,UAAkB,EAAE,MAAe;YAC/D,iBAAM,UAAU,YAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;YAE9C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;YAElC,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;aAClC;SACF;;QAID,qCAAc,GAAd,UAAe,QAAQ,EAAE,UAAU,EAAE,MAAM;YAA3C,iBAqEC;YApEC,IAAI,UAAU,CAAA;YACd,IAAI,cAAc,CAAA;YAClB,IAAI,eAAe,CAAA;;YAGnB,IAAI,CAAC,SAAS,GAAGC,oBAAe,CAAClB,iBAAY,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAA;;;YAInE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;gBACzB,IAAI,CAAC,MAAM,EAAE;oBACX,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;oBACvD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;iBACxC;gBACD,OAAM;aACP;;YAGD,IAAI,cAAc,GAAkBA,iBAAY,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,UAAC,IAAI;gBAC/E,OAAO,CAAC,KAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;aACxC,CAAC,CAAA;;YAGF,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;YACjD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;YACrB,cAAc,CAAC,OAAO,CAACmB,uBAAkB,CAAC,CAAA;;YAG1C,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAA;gBAE/B,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;gBACnC,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;oBAChD,UAAU,GAAG,4BAA4B,CAAA;iBAC1C;gBACD,IAAI,UAAU,EAAE;oBACd,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;iBACnC;aACF;YAED,IAAI,CAAC,MAAM,EAAE;gBAEX,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;gBACvD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;gBACvC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAA;gBAEpD,IAAI,eAAe,CAAC,IAAI,IAAI,eAAe,CAAC,KAAK,EAAE;;oBAGjD,cAAc,CAAC,OAAO,CAAC,UAAS,KAAK;wBACnCC,qBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;qBACzC,CAAC,CAAA;;;oBAIF,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;oBACvD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;iBACxC;;gBAGD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CAAC,CAAA;;;gBAI3C,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,cAAc,EAAE;oBACvD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAA;iBAC9C;aACF;SACF;;QAID,4CAAqB,GAArB,UAAsB,UAAU;YAC9B,OAAO,UAAU;gBACfC,0BAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;SACnD;;;;QAQD,wCAAiB,GAAjB,UAAkB,MAAc;YAC9B,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;;YAG9C,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAEpB,IAAI,GAAG,EAAE;gBACP,GAAG,EAAE,CAAA;aACN;YAED,OAAO,EAAE,GAAG,KAAA,EAAE,CAAA;SACf;QAGD,sCAAe,GAAf;YACE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAA;SAC7C;QAGD,sCAAe,GAAf,UAAgB,MAAM;YACpB,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE;gBAC5B,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;aACvC;SACF;;QAgCD,oCAAa,GAAb;YACE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;gBAC1B,OAAO,eAAe,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;aAChD;YACD,OAAO,EAAE,CAAA;SACV;QA6CH,mBAAC;IAAD,CA7UA,CAAmDC,SAAI,GA6UtD;IAED,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAA,oDAAoD;;ICvUhG;QAA4CpC,kCAAkC;QAQ5E,wBAAY,OAAyB,EAAE,QAAkB;YAAzD,YACE,kBAAM,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,SAO5B;YAZO,oBAAc,GAAGqC,YAAO,CAAC,cAAc,CAAC,CAAA;YAExC,YAAM,GAAG,IAAI,cAAc,EAAE,CAAA;YAKnC,KAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;YAExB,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAC,KAAI,EAAE;gBAClD,EAAE,EAAE,KAAI,CAAC,QAAQ,CAAC,EAAE;aACrB,CAAC,CAAA;;SACH;QAED,gCAAO,GAAP;YACE,iBAAM,OAAO,WAAE,CAAA;YAEf,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAA;SACnD;QAED,+BAAM,GAAN,UAAO,KAA0B;YACzB,IAAA,+BAAW,EAAE,yBAAQ,CAAU;YACrC,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YAEzF,IAAI,CAAC,QAAQ,CAAC,YAAY,cACrB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,IAC7E,WAAW,aAAA,EACX,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IACxB,CAAA;SACH;QAED,2CAAkB,GAAlB,UAAmB,IAAgB;YACjC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAC9B,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAC7D,IAAI,CACL,CAAA;SACF;QAED,4CAAmB,GAAnB;YACE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAA;SACpC;QAED,iCAAQ,GAAR,UAAS,YAAoB,EAAE,WAAmB;YAChD,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;YAEnE,IAAI,MAAM,EAAE;gBACV,OAAO;oBACL,SAAS,EAAE,IAAI,CAAC,QAAQ;oBACxB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI;wBAC9B,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK;wBAChC,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG;wBAC5B,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM;qBACnC;oBACD,KAAK,EAAE,CAAC;iBACT,CAAA;aACF;SACF;QAEH,qBAAC;IAAD,CAjEA,CAA4Cb,kBAAa,GAiExD;aAGe,cAAc,CAAC,QAAkB,EAAE,WAAwB,EAAE,OAAgB;QAC3F,IAAI,MAAM,GAAgB,EAAE,CAAA;QAE5B,KAAiB,UAAoB,EAApB,KAAA,QAAQ,CAAC,WAAW,EAApB,cAAoB,EAApB,IAAoB,EAAE;YAAlC,IAAI,IAAI,SAAA;YACX,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;gBAC7C,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;aAC5C,CAAC,CAAA;SACH;QAED,OAAO,MAAM,CAAA;IACf,CAAC;AAGD;QAAoCxB,kCAAkC;QAAtE;;SAsBC;QApBC,mCAAU,GAAV,UAAW,KAAgB,EAAE,SAAsB;YACjD,IAAI,IAAI,GAAkB,EAAE,CAAA;YAE5B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC/C,IAAI,QAAQ,GAAGsC,oBAAe,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;gBAErD,IAAI,QAAQ,EAAE;oBACZ,IAAI,CAAC,IAAI,CAAC;wBACR,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,GAAG,EAAE,QAAQ,CAAC,GAAG;wBACjB,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE;wBAC3D,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE;wBACrD,GAAG,KAAA;qBACJ,CAAC,CAAA;iBACH;aACF;YAED,OAAO,IAAI,CAAA;SACZ;QAEH,qBAAC;IAAD,CAtBA,CAAoCC,WAAM;;ICjG1C;QAA0CvC,gCAAoB;QAQ5D,sBACE,QAA0B,EAC1B,QAAkB,EAClB,oBAA0C,EAC1C,QAAqB;YAJvB,YAME,kBAAM,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,EAAE,QAAQ,CAAC,SAc1D;YAtBO,mBAAa,GAAGqC,YAAO,CAAC,aAAa,CAAC,CAAA;YAU5C,IAAI,KAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;gBAC5B,KAAI,CAAC,MAAM,GAAG,IAAIG,cAAS,CACzB,KAAI,CAAC,OAAO,EACZ,KAAI,CAAC,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAC5C,CAAA;aACF;YAED,KAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,KAAI,CAAC,OAAO,EAAE,KAAI,CAAC,QAAQ,CAAC,CAAA;YAErE,IAAI,KAAI,CAAC,OAAO,EAAE;gBAChB,KAAI,CAAC,aAAa,GAAG,IAAIC,qBAAa,CAAC,KAAI,CAAC,OAAO,EAAE,KAAI,CAAC,OAAO,CAAC,CAAA;aACnE;;SACF;QAED,8BAAO,GAAP;YACE,iBAAM,OAAO,WAAE,CAAA;YAEf,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;aACtB;YAED,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAA;YAE7B,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAA;aAC7B;SACF;QAED,6BAAM,GAAN,UAAO,KAAgB;YACrB,iBAAM,MAAM,YAAC,KAAK,CAAC,CAAA;YAEb,IAAA,oCAAW,CAAe;YAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAA;YACzE,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YAEhD,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;oBACvB,WAAW,aAAA;oBACX,KAAK,EAAE,QAAQ,CAAC,WAAW;oBAC3B,oBAAoB,EAAE,IAAI;oBAC1B,eAAe,EAAE,IAAI,CAAC,mBAAmB;iBAC1C,CAAC,CAAA;aACH;YAED,IAAI,CAAC,cAAc,CAAC,YAAY,cAC3B,UAAU,CAAC,OAAO,CAAC,IACtB,WAAW,aAAA;gBACX,QAAQ,UAAA,IACR,CAAA;YAEF,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,aAAa,CAAC,YAAY,cAC1B,UAAU,CAAC,QAAQ,CAAC,IACvB,WAAW,aAAA;oBACX,QAAQ,UAAA,EACR,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,OAAO,EAAE,KAAK,IACd,CAAA;aACH;SACF;QAED,yCAAkB,GAAlB,UAAmB,IAAI;YACrB,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;SAC7C;QAEH,mBAAC;IAAD,CAjFA,CAA0CC,YAAoB,GAiF7D;aAEe,aAAa,CAAC,WAAwB,EAAE,oBAA0C;QAChG,IAAI,SAAS,GAAG,IAAIC,cAAS,CAAC,WAAW,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAA;QAE5E,OAAO,IAAIC,aAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IACvC,CAAC;;AC7FD,eAAeC,iBAAY,CAAC;QAC1B,WAAW,EAAE,cAAc;QAC3B,KAAK,EAAE;YAEL,QAAQ,EAAE;gBACR,KAAK,EAAEC,cAAY;gBACnB,UAAU,EAAE,IAAI;gBAChB,YAAY,EAAE,UAAU;gBACxB,gBAAgB,EAAE,IAAI;aACvB;YAED,WAAW,EAAE;gBACX,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;aACtB;YAED,YAAY,EAAE;gBACZ,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;aACvB;SAEF;KACF,CAAC,CAAA;;;;;;;;;;;;;;;;;;"}