diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6d9bc67b0..d8440b1e0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -35,13 +35,13 @@ The documentation is written in Markdown, for more information about Markdown [s If you want to preview the documentation site on your machine, you need to install `docsify-cli`: -``` +```sh $ npm i docsify-cli -g -```` +``` If you are more familiar with Yarn, you can use the following command: -``` +```sh $ yarn global add docsify-cli ``` @@ -50,7 +50,7 @@ If the installation is successful, the command `docsify` will be available in yo You can now run the following command to serve the documentation site: -``` +```sh $ docsify serve docs ``` @@ -85,7 +85,7 @@ The rendering tests are very straightforward to create. There is a function imgS When running in ci it will take a snapshot of the rendered diagram and compare it with the snapshot from last build and flag for review it if it differs. This is what a rendering test looks like: -``` +```javascript it('should render forks and joins', () => { imgSnapshotTest( ` diff --git a/dist/mermaid.core.js b/dist/mermaid.core.js index 8cbdfac4e..22b582502 100644 --- a/dist/mermaid.core.js +++ b/dist/mermaid.core.js @@ -8811,14 +8811,11 @@ var updateCurrentConfig = function updateCurrentConfig(siteCfg, _directives) { * * **Notes:** Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls * to reset() will reset the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) - * will reset siteConfig and current Config to the defaultConfig + * will reset siteConfig and currentConfig to the defaultConfig Note: currentConfig is set in this + * function *Default value: At default, will mirror Global Config** * - * Note: currentConfig is set in this function - * - * Default value: At default, will mirror Global Config - * - * @param {any} conf - The base currentConfig to use as siteConfig - * @returns {any} - The siteConfig + * @param conf - The base currentConfig to use as siteConfig + * @returns {object} - The siteConfig */ var setSiteConfig = function setSiteConfig(conf) { @@ -8843,13 +8840,13 @@ var updateSiteConfig = function updateSiteConfig(conf) { /** * ## getSiteConfig * - * | Function | Description | Type | Values | - * | ------------- | ------------------------------------------------- | ----------- | --------------------------------- | - * | setSiteConfig | Returns the current siteConfig base configuration | Get Request | Returns Any Values in site Config | + * | Function | Description | Type | Values | + * | ------------- | ------------------------------------------------- | ----------- | -------------------------------- | + * | setSiteConfig | Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig | * * **Notes**: Returns **any** values in siteConfig. * - * @returns {any} + * @returns {object} - The siteConfig */ var getSiteConfig = function getSiteConfig() { @@ -8937,6 +8934,12 @@ var sanitize = function sanitize(options) { } }); }; +/** + * Pushes in a directive to the configuration + * + * @param {object} directive The directive to push in + */ + var addDirective = function addDirective(directive) { if (directive.fontFamily) { if (!directive.themeVariables) { @@ -13568,8 +13571,12 @@ var conf = { /** * Function that adds the vertices found during parsing to the graph to be rendered. * - * @param classes - * @param g The graph that is to be drawn. + * @param {Object< + * string, + * { cssClasses: string[]; text: string; id: string; type: string; domId: string } + * >} classes + * Object containing the vertices. + * @param {SVGGElement} g The graph that is to be drawn. */ var addClasses = function addClasses(classes, g) { @@ -13769,19 +13776,29 @@ var addRelations = function addRelations(relations, g) { g.setEdge(edge.id1, edge.id2, edgeData, cnt); }); -}; // Todo optimize +}; +/** + * Gets the ID with the same label as in the cache + * + * @param {string} label The label to look for + * @returns {string} The resulting ID + */ var getGraphId = function getGraphId(label) { - var keys = Object.keys(idCache); + var foundEntry = Object.entries(idCache).find(function (entry) { + return entry[1].label === label; + }); - for (var i = 0; i < keys.length; i++) { - if (idCache[keys[i]].label === label) { - return keys[i]; - } + if (foundEntry) { + return foundEntry[0]; } - - return undefined; }; +/** + * Merges the value of `conf` with the passed `cnf` + * + * @param {object} cnf Config to merge + */ + var setConf = function setConf(cnf) { var keys = Object.keys(cnf); @@ -13792,8 +13809,8 @@ var setConf = function setConf(cnf) { /** * Draws a flowchart in the tag with id: id based on the graph definition in text. * - * @param text - * @param id + * @param {string} text + * @param {string} id */ var drawOld = function drawOld(text, id) { @@ -13982,11 +13999,12 @@ var draw = function draw(text, id) { // }); }; -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - setConf: setConf, - draw: draw -}); -/** @param type */ +/** + * Gets the arrow marker for a type index + * + * @param {number} type The type to look for + * @returns {'aggregation' | 'extension' | 'composition' | 'dependency'} The arrow marker + */ function getArrowMarker(type) { var marker; @@ -14015,6 +14033,11 @@ function getArrowMarker(type) { return marker; } +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + setConf: setConf, + draw: draw +}); + /***/ }), /***/ "./src/diagrams/class/classRenderer.js": @@ -14057,23 +14080,27 @@ var conf = { dividerMargin: 10, padding: 5, textHeight: 10 -}; // Todo optimize +}; +/** + * Gets the ID with the same label as in the cache + * + * @param {string} label The label to look for + * @returns {string} The resulting ID + */ var getGraphId = function getGraphId(label) { - var keys = Object.keys(idCache); + var foundEntry = Object.entries(idCache).find(function (entry) { + return entry[1].label === label; + }); - for (var i = 0; i < keys.length; i++) { - if (idCache[keys[i]].label === label) { - return keys[i]; - } + if (foundEntry) { + return foundEntry[0]; } - - return undefined; }; /** * Setup arrow head and define the marker. The result is appended to the svg. * - * @param elem + * @param {SVGSVGElement} elem The SVG element to append to */ @@ -14088,6 +14115,12 @@ var insertMarkers = function insertMarkers(elem) { elem.append('defs').append('marker').attr('id', 'dependencyStart').attr('class', 'extension').attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z'); elem.append('defs').append('marker').attr('id', 'dependencyEnd').attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z'); }; +/** + * Merges the value of `conf` with the passed `cnf` + * + * @param {object} cnf Config to merge + */ + var setConf = function setConf(cnf) { var keys = Object.keys(cnf); @@ -14098,8 +14131,8 @@ var setConf = function setConf(cnf) { /** * Draws a flowchart in the tag with id: id based on the graph definition in text. * - * @param text - * @param id + * @param {string} text + * @param {string} id */ var draw = function draw(text, id) { @@ -14309,6 +14342,12 @@ var drawEdge = function drawEdge(elem, path, relation, conf) { edgeCount++; }; +/** + * Renders a class diagram + * @param {SVGSVGElement} elem The element to draw it into + * @todo Add more information in the JSDOC here + */ + var drawClass = function drawClass(elem, classDef, conf) { _logger__WEBPACK_IMPORTED_MODULE_3__.log.info('Rendering class ' + classDef); var id = classDef.id; @@ -14495,6 +14534,14 @@ var buildLegacyDisplay = function buildLegacyDisplay(text) { cssStyle: cssStyle }; }; +/** + * Adds a for a member in a diagram + * @param {SVGElement} textEl The element to append to + * @param {string} txt The member + * @param {boolean} isFirst + * @param {{ padding: string; textHeight: string; }} conf The configuration for the member + */ + var addTspan = function addTspan(textEl, txt, isFirst, conf) { var member = parseMember(txt); @@ -14508,6 +14555,15 @@ var addTspan = function addTspan(textEl, txt, isFirst, conf) { tSpan.attr('dy', conf.textHeight); } }; +/** + * Makes generics in typescript syntax + * @example Array of array of strings in typescript syntax + * // returns "Array>" + * parseGenericTypes("Array~Array~string~~"); + * @param {string} text The text to convert + * @returns {string} The converted string + */ + var parseGenericTypes = function parseGenericTypes(text) { var cleanedText = text; @@ -14520,6 +14576,12 @@ var parseGenericTypes = function parseGenericTypes(text) { return cleanedText; } }; +/** + * Gives the styles for a classifier + * @param {"+" | "-" | "#" | "~" | "*" | "$"} classifier The classifier string + * @returns {string} Styling for the classifier + */ + var parseClassifier = function parseClassifier(classifier) { switch (classifier) { @@ -14563,12 +14625,24 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dompurify */ "dompurify"); /* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dompurify__WEBPACK_IMPORTED_MODULE_0__); +/** + * Gets the number of lines in a string + * @param {string | undefined} s The string to check the lines for + * @returns {number} The number of lines in that string + */ + var getRows = function getRows(s) { if (!s) return 1; var str = breakToPlaceholder(s); str = str.replace(/\\n/g, '#br#'); return str.split('#br#'); }; +/** + * Removes script tags from a text + * @param {string} txt The text to sanitize + * @returns {string} The safer text + */ + var removeScript = function removeScript(txt) { var rs = ''; var idx = 0; @@ -14631,20 +14705,49 @@ var sanitizeText = function sanitizeText(text, config) { return txt; }; var lineBreakRegex = //gi; +/** + * Whether or not a text has any linebreaks + * @param {string} text The text to test + * @returns {boolean} Whether or not the text has breaks + */ + var hasBreaks = function hasBreaks(text) { - return //gi.test(text); + return lineBreakRegex.test(text); }; +/** + * Splits on
tags + * @param {string} text Text to split + * @returns {Array} List of lines as strings + */ + var splitBreaks = function splitBreaks(text) { - return text.split(//gi); + return text.split(lineBreakRegex); }; +/** + * Converts placeholders to linebreaks in HTML + * @param {string} s HTML with placeholders + * @returns {string} HTML with breaks instead of placeholders + */ var placeholderToBreak = function placeholderToBreak(s) { return s.replace(/#br#/g, '
'); }; +/** + * Opposite of `placeholderToBreak`, converts breaks to placeholders + * @param {string} s HTML string + * @returns {string} String with placeholders + */ + var breakToPlaceholder = function breakToPlaceholder(s) { return s.replace(lineBreakRegex, '#br#'); }; +/** + * Gets the current URL + * @param {boolean} useAbsolute Whether to return the absolute URL or not + * @returns {string} The current URL + */ + var getUrl = function getUrl(useAbsolute) { var url = ''; @@ -14657,6 +14760,12 @@ var getUrl = function getUrl(useAbsolute) { return url; }; +/** + * Converts a string/boolean into a boolean + * @param {string | boolean} val String or boolean to convert + * @returns {boolean} The result from the input + */ + var evaluate = function evaluate(val) { return val === 'false' || val === false ? false : true; @@ -17758,8 +17867,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); +/** + * Returns the styles given options + * @param {{ fontFamily: string; nodeTextColor: string; textColor: string; titleColor: string; mainBkg: string; nodeBorder: string; arrowheadColor: string; lineColor: string; edgeLabelBackground: string; clusterBkg: string; clusterBorder: string; tertiaryColor: string; border2: string; }} options The options for the styles + * @returns {string} The resulting styles + */ var getStyles = function getStyles(options) { - return ".label {\n font-family: ".concat(options.fontFamily, ";\n color: ").concat(options.nodeTextColor || options.textColor, ";\n }\n .cluster-label text {\n fill: ").concat(options.titleColor, ";\n }\n .cluster-label span {\n color: ").concat(options.titleColor, ";\n }\n\n .label text,span {\n fill: ").concat(options.nodeTextColor || options.textColor, ";\n color: ").concat(options.nodeTextColor || options.textColor, ";\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ").concat(options.mainBkg, ";\n stroke: ").concat(options.nodeBorder, ";\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ").concat(options.arrowheadColor, ";\n }\n\n .edgePath .path {\n stroke: ").concat(options.lineColor, ";\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ").concat(options.lineColor, ";\n fill: none;\n }\n\n .edgeLabel {\n background-color: ").concat(options.edgeLabelBackground, ";\n rect {\n opacity: 0.5;\n background-color: ").concat(options.edgeLabelBackground, ";\n fill: ").concat(options.edgeLabelBackground, ";\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ").concat(options.clusterBkg, ";\n stroke: ").concat(options.clusterBorder, ";\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ").concat(options.titleColor, ";\n }\n\n .cluster span {\n color: ").concat(options.titleColor, ";\n }\n // .cluster div {\n // color: ").concat(options.titleColor, ";\n // }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ").concat(options.fontFamily, ";\n font-size: 12px;\n background: ").concat(options.tertiaryColor, ";\n border: 1px solid ").concat(options.border2, ";\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n"); + return ".label {\n font-family: ".concat(options.fontFamily, ";\n color: ").concat(options.nodeTextColor || options.textColor, ";\n }\n .cluster-label text {\n fill: ").concat(options.titleColor, ";\n }\n .cluster-label span {\n color: ").concat(options.titleColor, ";\n }\n\n .label text,span {\n fill: ").concat(options.nodeTextColor || options.textColor, ";\n color: ").concat(options.nodeTextColor || options.textColor, ";\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ").concat(options.mainBkg, ";\n stroke: ").concat(options.nodeBorder, ";\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ").concat(options.arrowheadColor, ";\n }\n\n .edgePath .path {\n stroke: ").concat(options.lineColor, ";\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ").concat(options.lineColor, ";\n fill: none;\n }\n\n .edgeLabel {\n background-color: ").concat(options.edgeLabelBackground, ";\n rect {\n opacity: 0.5;\n background-color: ").concat(options.edgeLabelBackground, ";\n fill: ").concat(options.edgeLabelBackground, ";\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ").concat(options.clusterBkg, ";\n stroke: ").concat(options.clusterBorder, ";\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ").concat(options.titleColor, ";\n }\n\n .cluster span {\n color: ").concat(options.titleColor, ";\n }\n /* .cluster div {\n color: ").concat(options.titleColor, ";\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ").concat(options.fontFamily, ";\n font-size: 12px;\n background: ").concat(options.tertiaryColor, ";\n border: 1px solid ").concat(options.border2, ";\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n"); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getStyles); @@ -19090,9 +19204,6 @@ var branches = { var curBranch = 'master'; var direction = 'LR'; var seq = 0; -/** - * - */ function getId() { return (0,_utils__WEBPACK_IMPORTED_MODULE_0__.random)({ @@ -25334,6 +25445,12 @@ __webpack_require__.r(__webpack_exports__); var conf = {}; +/** + * Merges the value of `conf` with the passed `cnf` + * + * @param {object} cnf Config to merge + */ + var setConf = function setConf(cnf) { var keys = Object.keys(cnf); keys.forEach(function (key) { @@ -25343,8 +25460,8 @@ var setConf = function setConf(cnf) { /** * Draws a an info picture in the tag with id: id based on the graph definition in text. * - * @param {any} id - * @param {any} ver + * @param {string} id The text for the error + * @param {string} ver The version */ var draw = function draw(id, ver) { @@ -25418,6 +25535,14 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var moment_mini__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment-mini */ "moment-mini"); /* harmony import */ var moment_mini__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment_mini__WEBPACK_IMPORTED_MODULE_0__); +/** + * @typedef {"debug" | "info" | "warn" | "error" | "fatal"} LogLevel A log level + */ + +/** + * @type {Object} + */ + var LEVELS = { debug: 1, info: 2, @@ -25432,6 +25557,11 @@ var log = { error: function error() {}, fatal: function fatal() {} }; +/** + * Sets a log level + * @param {LogLevel} [level="fatal"] The level to set the logging to + */ + var setLogLevel = function setLogLevel() { var level = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'fatal'; @@ -25476,6 +25606,11 @@ var setLogLevel = function setLogLevel() { log.debug = console.debug ? console.debug.bind(console, format('DEBUG'), 'color: lightgreen') : console.log.bind(console, '\x1b[32m', format('DEBUG')); } }; +/** + * Returns a format with the timestamp and the log level + * @param {LogLevel} level The level for the log format + * @returns {string} The format with the timestamp and log level + */ var format = function format(level) { var time = moment_mini__WEBPACK_IMPORTED_MODULE_0___default()().format('ss.SSS'); @@ -25984,7 +26119,7 @@ var decodeEntities = function decodeEntities(text) { /** * Function that renders an svg with a graph from a chart definition. Usage example below. * - * ```js + * ```javascript * mermaidAPI.initialize({ * startOnLoad: true, * }); @@ -28216,7 +28351,11 @@ var detectDirective = function detectDirective(text) { * g-->h * ``` * @param {string} text The text defining the graph - * @param {any} cnf + * @param {{ + * class: { defaultRenderer: string } | undefined; + * state: { defaultRenderer: string } | undefined; + * flowchart: { defaultRenderer: string } | undefined; + * }} [cnf] * @returns {string} A graph definition key */ @@ -28280,6 +28419,13 @@ var detectType = function detectType(text, cnf) { if (cnf && cnf.flowchart && cnf.flowchart.defaultRenderer === 'dagre-wrapper') return 'flowchart-v2'; return 'flowchart'; }; +/** + * Caches results of functions based on input + * + * @param {Function} fn Function to run + * @param {Function} resolver Function that resolves to an ID given arguments the `fn` takes + * @returns {Function} An optimized caching function + */ var memoize = function memoize(fn, resolver) { var cache = {}; @@ -28314,6 +28460,14 @@ var isSubstringInArray = function isSubstringInArray(str, arr) { return -1; }; +/** + * Returns a d3 curve given a curve name + * + * @param {string | undefined} interpolate The interpolation name + * @param {any} defaultCurve The default curve to return + * @returns {import('d3-shape').CurveFactory} The curve factory to use + */ + var interpolateToCurve = function interpolateToCurve(interpolate, defaultCurve) { if (!interpolate) { return defaultCurve; @@ -28322,6 +28476,14 @@ var interpolateToCurve = function interpolateToCurve(interpolate, defaultCurve) var curveName = "curve".concat(interpolate.charAt(0).toUpperCase() + interpolate.slice(1)); return d3CurveTypes[curveName] || defaultCurve; }; +/** + * Formats a URL string + * + * @param {string} linkStr String of the URL + * @param {{ securityLevel: string }} config Configuration passed to MermaidJS + * @returns {string | undefined} The formatted URL + */ + var formatUrl = function formatUrl(linkStr, config) { var url = linkStr.trim(); @@ -28333,6 +28495,13 @@ var formatUrl = function formatUrl(linkStr, config) { return url; } }; +/** + * Runs a function + * + * @param {string} functionName A dot seperated path to the function relative to the `window` + * @param {...any} params Parameters to pass to the function + */ + var runFunc = function runFunc(functionName) { var _obj; @@ -28352,10 +28521,29 @@ var runFunc = function runFunc(functionName) { (_obj = obj)[fnName].apply(_obj, params); }; +/** + * @typedef {object} Point A (x, y) point + * @property {number} x The x value + * @property {number} y The y value + */ + +/** + * Finds the distance between two points using the Distance Formula + * + * @param {Point} p1 The first point + * @param {Point} p2 The second point + * @returns {number} The distance + */ var distance = function distance(p1, p2) { return p1 && p2 ? Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)) : 0; }; +/** + * @param {Point[]} points List of points + * @returns {Point} + * @todo Give this a description + */ + var traverseEdge = function traverseEdge(points) { var prevPoint; @@ -28397,6 +28585,13 @@ var traverseEdge = function traverseEdge(points) { }); return center; }; +/** + * Alias for `traverseEdge` + * + * @param {Point[]} points List of points + * @returns {Point} Return result of `transverseEdge` + */ + var calcLabelPosition = function calcLabelPosition(points) { return traverseEdge(points); @@ -28548,6 +28743,13 @@ var calcTerminalLabelPosition = function calcTerminalLabelPosition(terminalMarke return cardinalityPosition; }; +/** + * Gets styles from an array of declarations + * + * @param {string[]} arr Declarations + * @returns {{ style: string; labelStyle: string }} The styles grouped as strings + */ + var getStylesFromArray = function getStylesFromArray(arr) { var style = ''; @@ -28602,19 +28804,31 @@ var random = function random(options) { * effectively merged with src[`k`]

Additionally, dissimilar types will not clobber unless the * config.clobber parameter === true. Example: * - * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' }; - * let config_1 = { foo: 'foo', bar: 'bar' }; - * let result = assignWithDepth(config_0, config_1); - * console.log(result); - * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }

+ * ```js + * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' }; + * let config_1 = { foo: 'foo', bar: 'bar' }; + * let result = assignWithDepth(config_0, config_1); + * console.log(result); + * //-> result: { foo: { bar: 'bar' }, bar: 'bar' } + * ``` * - * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1.

If src is - * a destructured array of objects and dst is not an array, assignWithDepth will apply each - * element of src to dst in order. + * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1. If src is a + * destructured array of objects and dst is not an array, assignWithDepth will apply each element + * of src to dst in order. + * @param dst + * @param src + * @param config + * @param dst + * @param src + * @param config + * @param dst + * @param src + * @param config * @param {any} dst - The destination of the merge * @param {any} src - The source object(s) to merge into destination - * @param {{ depth: number; clobber: boolean }} config - Depth: depth to traverse within src and dst - * for merging - clobber: should dissimilar types clobber (default: { depth: 2, clobber: false }) + * @param {{ depth: number; clobber: boolean }} [config={ depth: 2, clobber: false }] - Depth: depth + * to traverse within src and dst for merging - clobber: should dissimilar types clobber (default: + * { depth: 2, clobber: false }). Default is `{ depth: 2, clobber: false }` * @returns {any} */ @@ -28682,6 +28896,25 @@ var getTextObj = function getTextObj() { valign: undefined }; }; +/** + * Adds text to an element + * + * @param {SVGElement} elem Element to add text to + * @param {{ + * text: string; + * x: number; + * y: number; + * anchor: 'start' | 'middle' | 'end'; + * fontFamily: string; + * fontSize: string | number; + * fontWeight: string | number; + * fill: string; + * class: string | undefined; + * textMargin: number; + * }} textData + * @returns {SVGTextElement} Text element with given styling and content + */ + var drawSimpleText = function drawSimpleText(elem, textData) { // Remove and ignore br:s var nText = textData.text.replace(_diagrams_common_common__WEBPACK_IMPORTED_MODULE_3__["default"].lineBreakRegex, ' '); @@ -28910,6 +29143,12 @@ var calculateTextDimensions = memoize(function (text, config) { }, function (text, config) { return "".concat(text, "-").concat(config.fontSize, "-").concat(config.fontWeight, "-").concat(config.fontFamily); }); +/** + * Applys d3 attributes + * + * @param {any} d3Elem D3 Element to apply the attributes onto + * @param {[string, string][]} attrs Object.keys equivalent format of key to value mapping of attributes + */ var d3Attrs = function d3Attrs(d3Elem, attrs) { var _iterator2 = _createForOfIteratorHelper(attrs), @@ -28926,6 +29165,15 @@ var d3Attrs = function d3Attrs(d3Elem, attrs) { _iterator2.f(); } }; +/** + * Gives attributes for an SVG's size given arguments + * + * @param {number} height The height of the SVG + * @param {number} width The width of the SVG + * @param {boolean} useMaxWidth Whether or not to use max-width and set width to 100% + * @returns {Map<'height' | 'width' | 'style', string>} Attributes for the SVG + */ + var calculateSvgSizeAttrs = function calculateSvgSizeAttrs(height, width, useMaxWidth) { var attrs = new Map(); @@ -28940,6 +29188,15 @@ var calculateSvgSizeAttrs = function calculateSvgSizeAttrs(height, width, useMax return attrs; }; +/** + * Applies attributes from `calculateSvgSizeAttrs` + * + * @param {SVGSVGElement} svgElem The SVG Element to configure + * @param {number} height The height of the SVG + * @param {number} width The width of the SVG + * @param {boolean} useMaxWidth Whether or not to use max-width and set width to 100% + */ + var configureSvgSize = function configureSvgSize(svgElem, height, width, useMaxWidth) { var attrs = calculateSvgSizeAttrs(height, width, useMaxWidth); d3Attrs(svgElem, attrs); @@ -28962,9 +29219,15 @@ var initIdGeneratior = /*#__PURE__*/function () { }]); return iterator; -}(); // Source https://github.com/shrpne/entity-decode/blob/master/browser.js - +}(); var decoder; +/** + * Decodes HTML, source: {@link https://github.com/shrpne/entity-decode/blob/v2.0.1/browser.js} + * + * @param {string} html HTML as a string + * @returns Unescaped HTML + */ + var entityDecode = function entityDecode(html) { decoder = decoder || document.createElement('div'); // Escape HTML before decoding for HTML Entities @@ -28973,6 +29236,12 @@ var entityDecode = function entityDecode(html) { decoder.innerHTML = html; return unescape(decoder.textContent); }; +/** + * Sanitizes directive objects + * + * @param {object} args Directive's JSON + */ + var directiveSanitizer = function directiveSanitizer(args) { _logger__WEBPACK_IMPORTED_MODULE_2__.log.debug('directiveSanitizer called with', args); diff --git a/dist/mermaid.core.js.map b/dist/mermaid.core.js.map index 6e0a00608..e1f7c2a74 100644 --- a/dist/mermaid.core.js.map +++ b/dist/mermaid.core.js.map @@ -1 +1 @@ -{"version":3,"file":"mermaid.core.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;ACVA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,4uCAA4uC;AACvvC,aAAa,yvBAAyvB;AACtwB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,iDAAiD,wBAAwB;AACzE;AACA;AACA,sBAAsB,mCAAmC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,kCAAkC;AAClC;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,qCAAqC;AACvD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+BAA+B;AACjD;AACA;AACA,kBAAkB,uCAAuC;AACzD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,kEAAkE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,mEAAmE,EAAE,QAAQ,sDAAsD,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,uBAAuB,oBAAoB,sMAAsM,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,eAAe,UAAU,kHAAkH,gFAAgF,GAAG,8CAA8C,8BAA8B,2BAA2B,EAAE,8CAA8C,EAAE,8CAA8C,EAAE,8CAA8C,EAAE,UAAU,eAAe,wDAAwD,gBAAgB,UAAU,mHAAmH,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,gNAAgN,gBAAgB,wDAAwD,EAAE,4DAA4D,gBAAgB,oBAAoB,eAAe,kCAAkC,oGAAoG,oBAAoB,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,2BAA2B,4CAA4C,UAAU,EAAE,UAAU,gBAAgB,8CAA8C,EAAE,wDAAwD,eAAe,kCAAkC,iBAAiB,2BAA2B,EAAE,aAAa,EAAE,8CAA8C,eAAe,UAAU,gBAAgB,oBAAoB,gBAAgB,oBAAoB,gBAAgB,sBAAsB,2DAA2D,+CAA+C,6BAA6B,WAAW,GAAG,WAAW,EAAE,wBAAwB,yDAAyD,WAAW,8BAA8B,WAAW,8BAA8B,WAAW,iBAAiB,cAAc,gBAAgB,UAAU,4CAA4C,WAAW;AACh1F,iBAAiB,8FAA8F;AAC/G;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iCAAiC;AAChE;AACA;AACA;AACA;AACA;AACA,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,yIAAyI,8BAA8B,mBAAmB,yBAAyB,gIAAgI,oBAAoB,WAAW,yBAAyB,0fAA0f,EAAE,MAAM,YAAY,EAAE;AAC56B,aAAa,iBAAiB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,kBAAkB,kCAAkC,kBAAkB,qCAAqC,SAAS,kCAAkC,WAAW,2CAA2C,YAAY,kCAAkC,aAAa,kCAAkC,WAAW,kCAAkC,YAAY;AACpgB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACt3BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,kqBAAkqB;AAC7qB,aAAa,oWAAoW;AACjX;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;AACvE;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mCAAmC;AACrD;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,0BAA0B,EAAE,MAAM,cAAc,IAAI,GAAG,0BAA0B,EAAE,cAAc,EAAE,UAAU,EAAE,qEAAqE,EAAE,QAAQ,EAAE,uBAAuB,gCAAgC,QAAQ,gBAAgB,oCAAoC,uDAAuD,kDAAkD,8CAA8C,UAAU,EAAE,gBAAgB,EAAE,UAAU,eAAe,aAAa,EAAE,mCAAmC,EAAE,0BAA0B,uEAAuE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,gBAAgB,mCAAmC,EAAE,gBAAgB,EAAE,UAAU,EAAE,kCAAkC,8BAA8B,UAAU,EAAE,0BAA0B,gBAAgB,UAAU,eAAe,0BAA0B,2BAA2B,UAAU,uEAAuE,UAAU;AAClkC,iBAAiB,mEAAmE;AACpF;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,yBAAyB,oBAAoB,gGAAgG,2GAA2G,mCAAmC,cAAc,uCAAuC,aAAa;AACpb,aAAa,kBAAkB,8BAA8B,mBAAmB,gCAAgC,kBAAkB,gCAAgC,UAAU,iDAAiD,YAAY;AACzO,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACjwBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,qzDAAqzD;AACh0D,aAAa,wkCAAwkC;AACrlC;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,8CAA8C,WAAW;AACtG;AACA;AACA,+CAA+C,gDAAgD,WAAW;AAC1G;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA,iCAAiC;AACjC;AACA;AACA,mCAAmC,qDAAqD;AACxF;AACA;AACA,oBAAoB;AACpB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA,uBAAuB;AACvB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,6CAA6C,UAAU;AACvD;AACA;AACA,kCAAkC,UAAU;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,qCAAqC;AACvD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+BAA+B;AACjD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,uCAAuC;AACzD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,8CAA8C;AAChE;AACA;AACA,kBAAkB,4CAA4C;AAC9D;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACt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AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qBAAqB;AACrD;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,iBAAiB,8BAA8B,mBAAmB,yBAAyB,mBAAmB,0xBAA0xB,mzJAAmzJ,UAAU;AACttL,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,iBAAiB,kCAAkC,iBAAiB,qCAAqC,SAAS,kCAAkC,UAAU,kCAAkC,WAAW,6BAA6B,QAAQ,6DAA6D,WAAW,gCAAgC,YAAY;AACvjB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;AC7/BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,6iBAA6iB;AACxjB,aAAa,kWAAkW;AAC/W;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,aAAa;AACb;AACA;AACA,oCAAoC;AACpC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC;AAChC;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,2CAA2C;AAC7D;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB,yCAAyC;AAC3D;AACA;AACA,kBAAkB,6CAA6C;AAC/D;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,0BAA0B,EAAE,MAAM,EAAE,0BAA0B,cAAc,IAAI,GAAG,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,2IAA2I,EAAE,uBAAuB,gCAAgC,QAAQ,gBAAgB,0GAA0G,uKAAuK,UAAU,gBAAgB,oBAAoB,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,0CAA0C,oBAAoB,gBAAgB,UAAU,iBAAiB,aAAa,EAAE,UAAU,eAAe,UAAU,8BAA8B,UAAU,GAAG,UAAU;AACv5B,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,0BAA0B,qBAAqB,8TAA8T,2EAA2E,2BAA2B,2BAA2B,6BAA6B,qDAAqD,2BAA2B,kBAAkB,kBAAkB;AACttB,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,iBAAiB,kCAAkC,iBAAiB,qCAAqC,SAAS,kCAAkC,UAAU,kCAAkC,YAAY;AAC/Z,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;AC7vBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,uSAAuS;AAClT,aAAa,0JAA0J;AACvK;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,cAAc,gBAAgB,gBAAgB,sBAAsB,EAAE,QAAQ,EAAE,gFAAgF,eAAe,SAAS,eAAe,UAAU,gBAAgB,0BAA0B,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,0BAA0B,EAAE,QAAQ,eAAe,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,EAAE,oBAAoB,EAAE,UAAU,EAAE,UAAU;AAC1lB,iBAAiB,2GAA2G;AAC5H;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,aAAa,WAAW,kCAAkC,WAAW,kCAAkC,YAAY;AACnH,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACvrBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,mHAAmH;AAC9H,aAAa,gDAAgD;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,iCAAiC,EAAE,QAAQ;AAC7F,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;AC7mBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,sPAAsP,mHAAmH;AACpX,aAAa,wGAAwG,2FAA2F;AAChN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,mDAAmD,EAAE,MAAM,EAAE,oDAAoD,EAAE,oDAAoD,YAAY,cAAc,6CAA6C,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,YAAY,kDAAkD,aAAa,KAAK,GAAG,uBAAuB,iCAAiC,0BAA0B,EAAE,UAAU,EAAE,UAAU,0BAA0B,kDAAkD,iBAAiB,gBAAgB,wDAAwD,aAAa,EAAE,UAAU;AAClqB,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,0BAA0B,oBAAoB;AACrI,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,UAAU,+BAA+B,WAAW,kCAAkC,YAAY;AACrT,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACppBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,6iCAA6iC;AACxjC,aAAa,yrBAAyrB;AACtsB;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,yBAAyB,EAAE,MAAM,EAAE,iCAAiC,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,0BAA0B,EAAE,QAAQ,EAAE,8HAA8H,EAAE,uBAAuB,mBAAmB,QAAQ,EAAE,SAAS,EAAE,8HAA8H,EAAE,8HAA8H,EAAE,8HAA8H,EAAE,8HAA8H,EAAE,8HAA8H,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,oBAAoB,+HAA+H,gBAAgB,eAAe,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,uDAAuD,EAAE,uDAAuD,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,oGAAoG,UAAU,eAAe,+CAA+C,EAAE,iCAAiC,EAAE,oBAAoB,EAAE,oBAAoB,gBAAgB,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,+CAA+C,8BAA8B,UAAU,EAAE,UAAU,EAAE,iCAAiC,4CAA4C,oBAAoB,EAAE,0BAA0B,EAAE,oCAAoC,EAAE,8CAA8C,gBAAgB,4BAA4B,EAAE,6BAA6B,gBAAgB,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,gDAAgD,EAAE,gDAAgD,EAAE,gDAAgD,EAAE,gDAAgD,EAAE,kCAAkC,EAAE,kCAAkC;AAC5qF,iBAAiB,2QAA2Q;AAC5R;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,yHAAyH,WAAW,qoBAAqoB;AACh2B,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,cAAc,6BAA6B,UAAU,6BAA6B,WAAW,kCAAkC,YAAY;AAC9V,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;AC/xBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,m/BAAm/B;AAC9/B,aAAa,kmBAAkmB;AAC/mB;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gDAAgD;AAC/E;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,yBAAyB,gDAAgD;AACzE;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,SAAS,+BAA+B;AACxC;AACA;AACA;AACA,oBAAoB,0FAA0F;AAC9G,iBAAiB,qEAAqE;AACtF;AACA;AACA;AACA;AACA,oBAAoB,wFAAwF;AAC5G,iBAAiB,oFAAoF;AACrG;AACA;AACA;AACA;AACA,oBAAoB,uFAAuF;AAC3G,iBAAiB,mFAAmF;AACpG;AACA;AACA;AACA;AACA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;AACA;AACA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;AACA,4BAA4B,gFAAgF;AAC5G;AACA;AACA,4BAA4B,kFAAkF;AAC9G;AACA;AACA;AACA,uBAAuB,sEAAsE;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qFAAqF;AAC5G;AACA;AACA;AACA,uBAAuB,mDAAmD;AAC1E;AACA;AACA;AACA;AACA,uBAAuB,mDAAmD;AAC1E;AACA;AACA;AACA;AACA,uBAAuB,wDAAwD;AAC/E;AACA;AACA;AACA;AACA,uBAAuB,qDAAqD;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,gBAAgB;AAChB;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,eAAe;AACf;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,sCAAsC,EAAE,MAAM,EAAE,sCAAsC,EAAE,sCAAsC,EAAE,uCAAuC,sEAAsE,KAAK,GAAG,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,iNAAiN,EAAE,uBAAuB,iCAAiC,wLAAwL,4BAA4B,aAAa,EAAE,aAAa,EAAE,SAAS,gBAAgB,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,gBAAgB,sFAAsF,EAAE,oCAAoC,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,iDAAiD,SAAS,EAAE,gBAAgB,EAAE,SAAS,eAAe,mBAAmB,EAAE,mBAAmB,gBAAgB,SAAS,EAAE,SAAS,wEAAwE,SAAS,EAAE,SAAS,YAAY,KAAK,aAAa,KAAK,aAAa,KAAK,aAAa,WAAW,aAAa,WAAW,GAAG,kCAAkC,kHAAkH,cAAc,EAAE,qBAAqB,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,gBAAgB,cAAc,EAAE,UAAU,EAAE,WAAW,gBAAgB,WAAW,0DAA0D,oNAAoN,EAAE,oNAAoN,EAAE,oNAAoN,EAAE,WAAW,EAAE,8NAA8N,EAAE,WAAW,EAAE,8NAA8N,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,0DAA0D,WAAW,gBAAgB,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,sDAAsD,YAAY,aAAa,YAAY,GAAG,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACjiH,iBAAiB,wNAAwN;AACzO;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B;AAC3B;AACA,yCAAyC,qBAAqB;AAC9D;AACA,0BAA0B,iBAAiB,oBAAoB;AAC/D;AACA,0BAA0B,iBAAiB;AAC3C;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,uFAAuF,oBAAoB,kEAAkE,iCAAiC,sKAAsK,oRAAoR,qBAAqB,yCAAyC,4IAA4I;AACz6B,aAAa,kBAAkB,gCAAgC,mBAAmB,kCAAkC,kBAAkB,kCAAkC,OAAO,mCAAmC,UAAU,sCAAsC,SAAS,mCAAmC,YAAY;AAC1T,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACt3BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,khBAAkhB,qJAAqJ;AAClrB,aAAa,iVAAiV,6HAA6H;AAC3d;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC,yBAAyB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,6DAA6D,WAAW;AACxE;AACA;AACA;AACA,2CAA2C,iCAAiC;AAC5E,iBAAiB,4BAA4B,+DAA+D,WAAW;AACvH;AACA;AACA;AACA;AACA,sEAAsE;AACtE,iBAAiB,4BAA4B,+DAA+D,WAAW,8DAA8D;AACrL;AACA;AACA;AACA;AACA,2EAA2E;AAC3E,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,2GAA2G;AAC3G,kBAAkB;AAClB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,6GAA6G;AAC7G,iBAAiB,0CAA0C;AAC3D;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,sCAAsC,EAAE,MAAM,EAAE,sCAAsC,EAAE,sCAAsC,EAAE,uCAAuC,gEAAgE,KAAK,GAAG,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,qKAAqK,EAAE,uBAAuB,iCAAiC,4IAA4I,yCAAyC,oBAAoB,iBAAiB,UAAU,eAAe,UAAU,GAAG,UAAU,0DAA0D,oCAAoC,gIAAgI,gBAAgB,2CAA2C,oBAAoB,0BAA0B,KAAK,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,eAAe,UAAU,GAAG,uKAAuK,eAAe,UAAU,GAAG,UAAU,EAAE,UAAU,sDAAsD,KAAK,+BAA+B,uKAAuK;AACvrD,iBAAiB,gEAAgE;AACjF;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA,6BAA6B,kCAAkC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA,wBAAwB,0CAA0C,yCAAyC;AAC3G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,0CAA0C,yCAAyC;AAC3G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,0CAA0C,yCAAyC;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA,wBAAwB,2BAA2B;AACnD;AACA,wBAAwB,uCAAuC;AAC/D;AACA;AACA;AACA,wDAAwD;AACxD;AACA,oDAAoD;AACpD;AACA;AACA;AACA,wBAAwB,0BAA0B,0CAA0C;AAC5F;AACA,wCAAwC,oBAAoB;AAC5D;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,yBAAyB,0BAA0B;AACnD;AACA,yBAAyB,0BAA0B;AACnD;AACA,yBAAyB;AACzB;AACA,wBAAwB,mCAAmC;AAC3D;AACA;AACA;AACA,2DAA2D;AAC3D;AACA,wBAAwB,8CAA8C;AACtE;AACA,yBAAyB,4BAA4B,6CAA6C;AAClG;AACA,yBAAyB,mDAAmD,2CAA2C;AACvH;AACA,yBAAyB,mDAAmD,6CAA6C;AACzH;AACA,4DAA4D;AAC5D;AACA,4DAA4D;AAC5D;AACA,qDAAqD;AACrD;AACA,iDAAiD;AACjD;AACA,2CAA2C;AAC3C;AACA,yCAAyC,sCAAsC;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,6IAA6I,kBAAkB,gCAAgC,oBAAoB,0BAA0B,oBAAoB,ocAAoc,6CAA6C,wBAAwB,WAAW,gLAAgL,oJAAoJ,qBAAqB;AAC9mC,aAAa,QAAQ,kCAAkC,oBAAoB,kCAAkC,kBAAkB,sCAAsC,mBAAmB,sCAAsC,mBAAmB,oCAAoC,WAAW,yEAAyE,qBAAqB,+BAA+B,kBAAkB,qCAAqC,cAAc,kCAAkC,YAAY,+BAA+B,SAAS,qCAAqC,UAAU,kCAAkC,UAAU,6BAA6B,aAAa,+BAA+B,iBAAiB,kCAAkC,eAAe,6BAA6B,UAAU,mEAAmE,OAAO,kCAAkC,YAAY;AAC77B,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACp0BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,8VAA8V;AACzW,aAAa,gMAAgM;AAC7M;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC;AAChC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,0BAA0B,EAAE,MAAM,cAAc,IAAI,GAAG,0BAA0B,EAAE,cAAc,EAAE,UAAU,EAAE,6EAA6E,EAAE,QAAQ,EAAE,uBAAuB,gCAAgC,QAAQ,gBAAgB,4CAA4C,wDAAwD,UAAU,gBAAgB,UAAU,EAAE,gBAAgB,EAAE,UAAU,0CAA0C,aAAa,EAAE,UAAU,EAAE,UAAU;AACrhB,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,yBAAyB,oBAAoB,2FAA2F,2BAA2B,kBAAkB,kBAAkB;AAC9R,aAAa,kBAAkB,8BAA8B,mBAAmB,gCAAgC,kBAAkB,gCAAgC,YAAY;AAC9K,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9pBA;AACA;AACA;CAGA;;AAEO,IAAMI,aAAa,GAAGC,MAAM,CAACC,MAAP,CAAcH,sDAAd,CAAtB;AAEP,IAAII,UAAU,GAAGP,uDAAe,CAAC,EAAD,EAAKI,aAAL,CAAhC;AACA,IAAII,oBAAJ;AACA,IAAIC,UAAU,GAAG,EAAjB;AACA,IAAIC,aAAa,GAAGV,uDAAe,CAAC,EAAD,EAAKI,aAAL,CAAnC;AAEO,IAAMO,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,OAAD,EAAUC,WAAV,EAA0B;AAC3D;AACA,MAAIC,GAAG,GAAGd,uDAAe,CAAC,EAAD,EAAKY,OAAL,CAAzB,CAF2D,CAG3D;AAEA;;AACA,MAAIG,eAAe,GAAG,EAAtB;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,WAAW,CAACI,MAAhC,EAAwCD,CAAC,EAAzC,EAA6C;AAC3C,QAAME,CAAC,GAAGL,WAAW,CAACG,CAAD,CAArB;AACAG,IAAAA,QAAQ,CAACD,CAAD,CAAR,CAF2C,CAI3C;;AACAH,IAAAA,eAAe,GAAGf,uDAAe,CAACe,eAAD,EAAkBG,CAAlB,CAAjC;AACD;;AAEDJ,EAAAA,GAAG,GAAGd,uDAAe,CAACc,GAAD,EAAMC,eAAN,CAArB;;AAEA,MAAIA,eAAe,CAACb,KAApB,EAA2B;AACzB,QAAMkB,uBAAuB,GAAGpB,uDAAe,CAAC,EAAD,EAAKQ,oBAAL,CAA/C;AACA,QAAMa,cAAc,GAAGrB,uDAAe,CACpCoB,uBAAuB,CAACC,cAAxB,IAA0C,EADN,EAEpCN,eAAe,CAACM,cAFoB,CAAtC;AAIAP,IAAAA,GAAG,CAACO,cAAJ,GAAqBnB,+CAAK,CAACY,GAAG,CAACZ,KAAL,CAAL,CAAiBoB,iBAAjB,CAAmCD,cAAnC,CAArB;AACD;;AAEDX,EAAAA,aAAa,GAAGI,GAAhB;AACA,SAAOA,GAAP;AACD,CA5BM;AA6BP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMS,aAAa,GAAG,SAAhBA,aAAgB,CAACC,IAAD,EAAU;AACrCjB,EAAAA,UAAU,GAAGP,uDAAe,CAAC,EAAD,EAAKI,aAAL,CAA5B;AACAG,EAAAA,UAAU,GAAGP,uDAAe,CAACO,UAAD,EAAaiB,IAAb,CAA5B;;AAEA,MAAIA,IAAI,CAACtB,KAAT,EAAgB;AACdK,IAAAA,UAAU,CAACc,cAAX,GAA4BnB,+CAAK,CAACsB,IAAI,CAACtB,KAAN,CAAL,CAAkBoB,iBAAlB,CAAoCE,IAAI,CAACH,cAAzC,CAA5B;AACD;;AAEDX,EAAAA,aAAa,GAAGC,mBAAmB,CAACJ,UAAD,EAAaE,UAAb,CAAnC;AACA,SAAOF,UAAP;AACD,CAVM;AAYA,IAAMkB,uBAAuB,GAAG,SAA1BA,uBAA0B,CAACD,IAAD,EAAU;AAC/ChB,EAAAA,oBAAoB,GAAGR,uDAAe,CAAC,EAAD,EAAKwB,IAAL,CAAtC;AACD,CAFM;AAIA,IAAME,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACF,IAAD,EAAU;AACxCjB,EAAAA,UAAU,GAAGP,uDAAe,CAACO,UAAD,EAAaiB,IAAb,CAA5B;AACAb,EAAAA,mBAAmB,CAACJ,UAAD,EAAaE,UAAb,CAAnB;AAEA,SAAOF,UAAP;AACD,CALM;AAMP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMoB,aAAa,GAAG,SAAhBA,aAAgB,GAAM;AACjC,SAAO3B,uDAAe,CAAC,EAAD,EAAKO,UAAL,CAAtB;AACD,CAFM;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMqB,SAAS,GAAG,SAAZA,SAAY,CAACJ,IAAD,EAAU;AACjC;AACA;AACA;AACA;AACA;AAEAxB,EAAAA,uDAAe,CAACU,aAAD,EAAgBc,IAAhB,CAAf;AAEA,SAAOK,SAAS,EAAhB;AACD,CAVM;AAYP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMA,SAAS,GAAG,SAAZA,SAAY,GAAM;AAC7B,SAAO7B,uDAAe,CAAC,EAAD,EAAKU,aAAL,CAAtB;AACD,CAFM;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMS,QAAQ,GAAG,SAAXA,QAAW,CAACW,OAAD,EAAa;AACnC;AACAzB,EAAAA,MAAM,CAAC0B,IAAP,CAAYxB,UAAU,CAACyB,MAAvB,EAA+BC,OAA/B,CAAuC,UAACC,GAAD,EAAS;AAC9C,QAAI,OAAOJ,OAAO,CAACvB,UAAU,CAACyB,MAAX,CAAkBE,GAAlB,CAAD,CAAd,KAA2C,WAA/C,EAA4D;AAC1D;AACA;AACAjC,MAAAA,8CAAA,iDAC2CM,UAAU,CAACyB,MAAX,CAAkBE,GAAlB,CAD3C,GAEEJ,OAAO,CAACvB,UAAU,CAACyB,MAAX,CAAkBE,GAAlB,CAAD,CAFT;AAIA,aAAOJ,OAAO,CAACvB,UAAU,CAACyB,MAAX,CAAkBE,GAAlB,CAAD,CAAd;AACD;AACF,GAVD,EAFmC,CAcnC;;AACA7B,EAAAA,MAAM,CAAC0B,IAAP,CAAYD,OAAZ,EAAqBG,OAArB,CAA6B,UAACC,GAAD,EAAS;AACpC,QAAIA,GAAG,CAACE,OAAJ,CAAY,IAAZ,MAAsB,CAA1B,EAA6B;AAC3B,aAAON,OAAO,CAACI,GAAD,CAAd;AACD;AACF,GAJD,EAfmC,CAoBnC;AACA;;AACA7B,EAAAA,MAAM,CAAC0B,IAAP,CAAYD,OAAZ,EAAqBG,OAArB,CAA6B,UAACC,GAAD,EAAS;AACpC,QAAI,OAAOJ,OAAO,CAACI,GAAD,CAAd,KAAwB,QAA5B,EAAsC;AACpC,UACEJ,OAAO,CAACI,GAAD,CAAP,CAAaE,OAAb,CAAqB,GAArB,IAA4B,CAAC,CAA7B,IACAN,OAAO,CAACI,GAAD,CAAP,CAAaE,OAAb,CAAqB,GAArB,IAA4B,CAAC,CAD7B,IAEAN,OAAO,CAACI,GAAD,CAAP,CAAaE,OAAb,CAAqB,WAArB,IAAoC,CAAC,CAHvC,EAIE;AACA,eAAON,OAAO,CAACI,GAAD,CAAd;AACD;AACF;;AACD,QAAI,QAAOJ,OAAO,CAACI,GAAD,CAAd,MAAwB,QAA5B,EAAsC;AACpCf,MAAAA,QAAQ,CAACW,OAAO,CAACI,GAAD,CAAR,CAAR;AACD;AACF,GAbD;AAcD,CApCM;AAsCA,IAAMG,YAAY,GAAG,SAAfA,YAAe,CAACC,SAAD,EAAe;AACzC,MAAIA,SAAS,CAACC,UAAd,EAA0B;AACxB,QAAI,CAACD,SAAS,CAACjB,cAAf,EAA+B;AAC7BiB,MAAAA,SAAS,CAACjB,cAAV,GAA2B;AAAEkB,QAAAA,UAAU,EAAED,SAAS,CAACC;AAAxB,OAA3B;AACD,KAFD,MAEO;AACL,UAAI,CAACD,SAAS,CAACjB,cAAV,CAAyBkB,UAA9B,EAA0C;AACxCD,QAAAA,SAAS,CAACjB,cAAV,GAA2B;AAAEkB,UAAAA,UAAU,EAAED,SAAS,CAACC;AAAxB,SAA3B;AACD;AACF;AACF;;AACD9B,EAAAA,UAAU,CAAC+B,IAAX,CAAgBF,SAAhB;AACA3B,EAAAA,mBAAmB,CAACJ,UAAD,EAAaE,UAAb,CAAnB;AACD,CAZM;AAcP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMgC,KAAK,GAAG,SAARA,KAAQ,GAAM;AACzB;AACAhC,EAAAA,UAAU,GAAG,EAAb;AACAE,EAAAA,mBAAmB,CAACJ,UAAD,EAAaE,UAAb,CAAnB;AACD,CAJM;;;;;;;;;;;;;;;;;;;;;;;;;ACvNP;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMqC,IAAI,GAAG,cAACC,MAAD,EAASC,IAAT,EAAkB;AAC7B/C,EAAAA,8CAAA,CAAU,6BAAV,EAAyC+C,IAAI,CAACE,EAA9C,EAAkDF,IAAlD,EAD6B,CAG7B;;AACA,MAAMG,QAAQ,GAAGJ,MAAM,CACpBK,MADc,CACP,GADO,EAEdC,IAFc,CAET,OAFS,EAEA,aAAaL,IAAI,CAACM,KAAL,GAAa,MAAMN,IAAI,CAACM,KAAxB,GAAgC,EAA7C,CAFA,EAGdD,IAHc,CAGT,IAHS,EAGHL,IAAI,CAACE,EAHF,CAAjB,CAJ6B,CAS7B;;AACA,MAAMJ,IAAI,GAAGK,QAAQ,CAACC,MAAT,CAAgB,MAAhB,EAAwB,cAAxB,CAAb,CAV6B,CAY7B;;AACA,MAAMG,KAAK,GAAGJ,QAAQ,CAACC,MAAT,CAAgB,GAAhB,EAAqBC,IAArB,CAA0B,OAA1B,EAAmC,eAAnC,CAAd;AAEA,MAAMG,IAAI,GAAGD,KAAK,CACfP,IADU,GAEVS,WAFU,CAEEd,wDAAW,CAACK,IAAI,CAACU,SAAN,EAAiBV,IAAI,CAACW,UAAtB,EAAkCC,SAAlC,EAA6C,IAA7C,CAFb,CAAb,CAf6B,CAmB7B;;AACA,MAAIC,IAAI,GAAGL,IAAI,CAACM,OAAL,EAAX;;AAEA,MAAIjB,iEAAQ,CAAChB,kDAAS,GAAGkC,SAAZ,CAAsBC,UAAvB,CAAZ,EAAgD;AAC9C,QAAMC,GAAG,GAAGT,IAAI,CAACU,QAAL,CAAc,CAAd,CAAZ;AACA,QAAMC,EAAE,GAAGvB,0CAAM,CAACY,IAAD,CAAjB;AACAK,IAAAA,IAAI,GAAGI,GAAG,CAACG,qBAAJ,EAAP;AACAD,IAAAA,EAAE,CAACd,IAAH,CAAQ,OAAR,EAAiBQ,IAAI,CAACQ,KAAtB;AACAF,IAAAA,EAAE,CAACd,IAAH,CAAQ,QAAR,EAAkBQ,IAAI,CAACS,MAAvB;AACD;;AAED,MAAMC,OAAO,GAAG,IAAIvB,IAAI,CAACuB,OAAzB;AACA,MAAMC,WAAW,GAAGD,OAAO,GAAG,CAA9B;AAEA,MAAMF,KAAK,GAAGrB,IAAI,CAACqB,KAAL,IAAcR,IAAI,CAACQ,KAAL,GAAaE,OAA3B,GAAqCV,IAAI,CAACQ,KAAL,GAAaE,OAAlD,GAA4DvB,IAAI,CAACqB,KAA/E;;AACA,MAAIrB,IAAI,CAACqB,KAAL,IAAcR,IAAI,CAACQ,KAAL,GAAaE,OAA/B,EAAwC;AACtCvB,IAAAA,IAAI,CAACyB,IAAL,GAAY,CAACZ,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACqB,KAAnB,IAA4B,CAAxC;AACD,GAFD,MAEO;AACLrB,IAAAA,IAAI,CAACyB,IAAL,GAAY,CAACzB,IAAI,CAACuB,OAAN,GAAgB,CAA5B;AACD;;AAEDtE,EAAAA,8CAAA,CAAU,OAAV,EAAmB+C,IAAnB,EAAyB0B,IAAI,CAACC,SAAL,CAAe3B,IAAf,CAAzB,EAxC6B,CAyC7B;;AACAF,EAAAA,IAAI,CACDO,IADH,CACQ,OADR,EACiBL,IAAI,CAAC4B,KADtB,EAEGvB,IAFH,CAEQ,IAFR,EAEcL,IAAI,CAAC6B,EAFnB,EAGGxB,IAHH,CAGQ,IAHR,EAGcL,IAAI,CAAC8B,EAHnB,EAIGzB,IAJH,CAIQ,GAJR,EAIaL,IAAI,CAAC+B,CAAL,GAASV,KAAK,GAAG,CAJ9B,EAKGhB,IALH,CAKQ,GALR,EAKaL,IAAI,CAACgC,CAAL,GAAShC,IAAI,CAACsB,MAAL,GAAc,CAAvB,GAA2BE,WALxC,EAMGnB,IANH,CAMQ,OANR,EAMiBgB,KANjB,EAOGhB,IAPH,CAOQ,QAPR,EAOkBL,IAAI,CAACsB,MAAL,GAAcC,OAPhC,EA1C6B,CAmD7B;;AACAhB,EAAAA,KAAK,CAACF,IAAN,CACE,WADF,EAEE,gBACGL,IAAI,CAAC+B,CAAL,GAASlB,IAAI,CAACQ,KAAL,GAAa,CADzB,IAEE,IAFF,IAGGrB,IAAI,CAACgC,CAAL,GAAShC,IAAI,CAACsB,MAAL,GAAc,CAAvB,GAA2BtB,IAAI,CAACuB,OAAL,GAAe,CAH7C,IAIE,GANJ;AASA,MAAMU,OAAO,GAAGnC,IAAI,CAACE,IAAL,GAAYc,OAAZ,EAAhB;AACAd,EAAAA,IAAI,CAACqB,KAAL,GAAaY,OAAO,CAACZ,KAArB;AACArB,EAAAA,IAAI,CAACsB,MAAL,GAAcW,OAAO,CAACX,MAAtB;;AAEAtB,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOzC,qEAAa,CAACM,IAAD,EAAOmC,KAAP,CAApB;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CAtED;AAwEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMiC,SAAS,GAAG,SAAZA,SAAY,CAACrC,MAAD,EAASC,IAAT,EAAkB;AAClC;AACA,MAAMG,QAAQ,GAAGJ,MAAM,CAACK,MAAP,CAAc,GAAd,EAAmBC,IAAnB,CAAwB,OAAxB,EAAiC,cAAjC,EAAiDA,IAAjD,CAAsD,IAAtD,EAA4DL,IAAI,CAACE,EAAjE,CAAjB,CAFkC,CAIlC;;AACA,MAAMJ,IAAI,GAAGK,QAAQ,CAACC,MAAT,CAAgB,MAAhB,EAAwB,cAAxB,CAAb;AAEA,MAAMmB,OAAO,GAAG,IAAIvB,IAAI,CAACuB,OAAzB;AACA,MAAMC,WAAW,GAAGD,OAAO,GAAG,CAA9B,CARkC,CAUlC;;AACAzB,EAAAA,IAAI,CACDO,IADH,CACQ,IADR,EACcL,IAAI,CAAC6B,EADnB,EAEGxB,IAFH,CAEQ,IAFR,EAEcL,IAAI,CAAC8B,EAFnB,EAGGzB,IAHH,CAGQ,GAHR,EAGaL,IAAI,CAAC+B,CAAL,GAAS/B,IAAI,CAACqB,KAAL,GAAa,CAAtB,GAA0BG,WAHvC,EAIGnB,IAJH,CAIQ,GAJR,EAIaL,IAAI,CAACgC,CAAL,GAAShC,IAAI,CAACsB,MAAL,GAAc,CAAvB,GAA2BE,WAJxC,EAKGnB,IALH,CAKQ,OALR,EAKiBL,IAAI,CAACqB,KAAL,GAAaE,OAL9B,EAMGlB,IANH,CAMQ,QANR,EAMkBL,IAAI,CAACsB,MAAL,GAAcC,OANhC,EAOGlB,IAPH,CAOQ,MAPR,EAOgB,MAPhB;AASA,MAAM4B,OAAO,GAAGnC,IAAI,CAACE,IAAL,GAAYc,OAAZ,EAAhB;AACAd,EAAAA,IAAI,CAACqB,KAAL,GAAaY,OAAO,CAACZ,KAArB;AACArB,EAAAA,IAAI,CAACsB,MAAL,GAAcW,OAAO,CAACX,MAAtB;;AAEAtB,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOzC,qEAAa,CAACM,IAAD,EAAOmC,KAAP,CAApB;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CA7BD;;AA8BA,IAAMkC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACtC,MAAD,EAASC,IAAT,EAAkB;AACzC;AACA,MAAMG,QAAQ,GAAGJ,MAAM,CAACK,MAAP,CAAc,GAAd,EAAmBC,IAAnB,CAAwB,OAAxB,EAAiCL,IAAI,CAACsC,OAAtC,EAA+CjC,IAA/C,CAAoD,IAApD,EAA0DL,IAAI,CAACE,EAA/D,CAAjB,CAFyC,CAIzC;;AACA,MAAMJ,IAAI,GAAGK,QAAQ,CAACC,MAAT,CAAgB,MAAhB,EAAwB,cAAxB,CAAb,CALyC,CAOzC;;AACA,MAAMG,KAAK,GAAGJ,QAAQ,CAACC,MAAT,CAAgB,GAAhB,EAAqBC,IAArB,CAA0B,OAA1B,EAAmC,eAAnC,CAAd;AACA,MAAMkC,SAAS,GAAGpC,QAAQ,CAACqC,MAAT,CAAgB,MAAhB,CAAlB;AAEA,MAAMhC,IAAI,GAAGD,KAAK,CACfP,IADU,GAEVS,WAFU,CAEEd,wDAAW,CAACK,IAAI,CAACU,SAAN,EAAiBV,IAAI,CAACW,UAAtB,EAAkCC,SAAlC,EAA6C,IAA7C,CAFb,CAAb,CAXyC,CAezC;;AACA,MAAIC,IAAI,GAAGL,IAAI,CAACM,OAAL,EAAX;;AACA,MAAIjB,iEAAQ,CAAChB,kDAAS,GAAGkC,SAAZ,CAAsBC,UAAvB,CAAZ,EAAgD;AAC9C,QAAMC,GAAG,GAAGT,IAAI,CAACU,QAAL,CAAc,CAAd,CAAZ;AACA,QAAMC,EAAE,GAAGvB,0CAAM,CAACY,IAAD,CAAjB;AACAK,IAAAA,IAAI,GAAGI,GAAG,CAACG,qBAAJ,EAAP;AACAD,IAAAA,EAAE,CAACd,IAAH,CAAQ,OAAR,EAAiBQ,IAAI,CAACQ,KAAtB;AACAF,IAAAA,EAAE,CAACd,IAAH,CAAQ,QAAR,EAAkBQ,IAAI,CAACS,MAAvB;AACD;;AACDT,EAAAA,IAAI,GAAGL,IAAI,CAACM,OAAL,EAAP;AACA,MAAMS,OAAO,GAAG,IAAIvB,IAAI,CAACuB,OAAzB;AACA,MAAMC,WAAW,GAAGD,OAAO,GAAG,CAA9B;AAEA,MAAMF,KAAK,GAAGrB,IAAI,CAACqB,KAAL,IAAcR,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACuB,OAAhC,GAA0CV,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACuB,OAA5D,GAAsEvB,IAAI,CAACqB,KAAzF;;AACA,MAAIrB,IAAI,CAACqB,KAAL,IAAcR,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACuB,OAApC,EAA6C;AAC3CvB,IAAAA,IAAI,CAACyB,IAAL,GAAY,CAACZ,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACuB,OAAL,GAAe,CAA5B,GAAgCvB,IAAI,CAACqB,KAAtC,IAA+C,CAA3D;AACD,GAFD,MAEO;AACLrB,IAAAA,IAAI,CAACyB,IAAL,GAAY,CAACzB,IAAI,CAACuB,OAAN,GAAgB,CAA5B;AACD,GAjCwC,CAmCzC;;;AACAzB,EAAAA,IAAI,CACDO,IADH,CACQ,OADR,EACiB,OADjB,EAEGA,IAFH,CAEQ,GAFR,EAEaL,IAAI,CAAC+B,CAAL,GAASV,KAAK,GAAG,CAAjB,GAAqBG,WAFlC,EAGGnB,IAHH,CAGQ,GAHR,EAGaL,IAAI,CAACgC,CAAL,GAAShC,IAAI,CAACsB,MAAL,GAAc,CAAvB,GAA2BE,WAHxC,EAIGnB,IAJH,CAIQ,OAJR,EAIiBgB,KAAK,GAAGE,OAJzB,EAKGlB,IALH,CAKQ,QALR,EAKkBL,IAAI,CAACsB,MAAL,GAAcC,OALhC;AAMAgB,EAAAA,SAAS,CACNlC,IADH,CACQ,OADR,EACiB,OADjB,EAEGA,IAFH,CAEQ,GAFR,EAEaL,IAAI,CAAC+B,CAAL,GAASV,KAAK,GAAG,CAAjB,GAAqBG,WAFlC,EAGGnB,IAHH,CAGQ,GAHR,EAGaL,IAAI,CAACgC,CAAL,GAAShC,IAAI,CAACsB,MAAL,GAAc,CAAvB,GAA2BE,WAA3B,GAAyCX,IAAI,CAACS,MAA9C,GAAuD,CAHpE,EAIGjB,IAJH,CAIQ,OAJR,EAIiBgB,KAAK,GAAGE,OAJzB,EAKGlB,IALH,CAKQ,QALR,EAKkBL,IAAI,CAACsB,MAAL,GAAcC,OAAd,GAAwBV,IAAI,CAACS,MAA7B,GAAsC,CALxD,EA1CyC,CAiDzC;;AACAf,EAAAA,KAAK,CAACF,IAAN,CACE,WADF,EAEE,gBACGL,IAAI,CAAC+B,CAAL,GAASlB,IAAI,CAACQ,KAAL,GAAa,CADzB,IAEE,IAFF,IAGGrB,IAAI,CAACgC,CAAL,GACChC,IAAI,CAACsB,MAAL,GAAc,CADf,GAECtB,IAAI,CAACuB,OAAL,GAAe,CAFhB,IAGE1B,iEAAQ,CAAChB,kDAAS,GAAGkC,SAAZ,CAAsBC,UAAvB,CAAR,GAA6C,CAA7C,GAAiD,CAHnD,CAHH,IAOE,GATJ;AAYA,MAAMiB,OAAO,GAAGnC,IAAI,CAACE,IAAL,GAAYc,OAAZ,EAAhB;AACAd,EAAAA,IAAI,CAACsB,MAAL,GAAcW,OAAO,CAACX,MAAtB;;AAEAtB,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOzC,qEAAa,CAACM,IAAD,EAAOmC,KAAP,CAApB;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CAtED;;AAwEA,IAAMsC,OAAO,GAAG,SAAVA,OAAU,CAAC1C,MAAD,EAASC,IAAT,EAAkB;AAChC;AACA,MAAMG,QAAQ,GAAGJ,MAAM,CAACK,MAAP,CAAc,GAAd,EAAmBC,IAAnB,CAAwB,OAAxB,EAAiCL,IAAI,CAACsC,OAAtC,EAA+CjC,IAA/C,CAAoD,IAApD,EAA0DL,IAAI,CAACE,EAA/D,CAAjB,CAFgC,CAIhC;;AACA,MAAMJ,IAAI,GAAGK,QAAQ,CAACC,MAAT,CAAgB,MAAhB,EAAwB,cAAxB,CAAb;AAEA,MAAMmB,OAAO,GAAG,IAAIvB,IAAI,CAACuB,OAAzB;AACA,MAAMC,WAAW,GAAGD,OAAO,GAAG,CAA9B,CARgC,CAUhC;;AACAzB,EAAAA,IAAI,CACDO,IADH,CACQ,OADR,EACiB,SADjB,EAEGA,IAFH,CAEQ,GAFR,EAEaL,IAAI,CAAC+B,CAAL,GAAS/B,IAAI,CAACqB,KAAL,GAAa,CAAtB,GAA0BG,WAFvC,EAGGnB,IAHH,CAGQ,GAHR,EAGaL,IAAI,CAACgC,CAAL,GAAShC,IAAI,CAACsB,MAAL,GAAc,CAHpC,EAIGjB,IAJH,CAIQ,OAJR,EAIiBL,IAAI,CAACqB,KAAL,GAAaE,OAJ9B,EAKGlB,IALH,CAKQ,QALR,EAKkBL,IAAI,CAACsB,MAAL,GAAcC,OALhC;AAOA,MAAMU,OAAO,GAAGnC,IAAI,CAACE,IAAL,GAAYc,OAAZ,EAAhB;AACAd,EAAAA,IAAI,CAACqB,KAAL,GAAaY,OAAO,CAACZ,KAArB;AACArB,EAAAA,IAAI,CAACsB,MAAL,GAAcW,OAAO,CAACX,MAAtB;AACAtB,EAAAA,IAAI,CAACyB,IAAL,GAAY,CAACzB,IAAI,CAACuB,OAAN,GAAgB,CAA5B;;AACAvB,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOzC,qEAAa,CAACM,IAAD,EAAOmC,KAAP,CAApB;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CA3BD;;AA6BA,IAAMuC,MAAM,GAAG;AAAE5C,EAAAA,IAAI,EAAJA,IAAF;AAAQuC,EAAAA,gBAAgB,EAAhBA,gBAAR;AAA0BD,EAAAA,SAAS,EAATA,SAA1B;AAAqCK,EAAAA,OAAO,EAAPA;AAArC,CAAf;AAEA,IAAIE,YAAY,GAAG,EAAnB;AAEO,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAACC,IAAD,EAAO7C,IAAP,EAAgB;AAC3C/C,EAAAA,8CAAA,CAAU,mBAAV;AACA,MAAM6F,KAAK,GAAG9C,IAAI,CAAC8C,KAAL,IAAc,MAA5B;AACAH,EAAAA,YAAY,CAAC3C,IAAI,CAACE,EAAN,CAAZ,GAAwBwC,MAAM,CAACI,KAAD,CAAN,CAAcD,IAAd,EAAoB7C,IAApB,CAAxB;AACD,CAJM;AAKA,IAAM+C,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACF,IAAD,EAAO7C,IAAP,EAAgB;AAClD,MAAMO,KAAK,GAAGZ,wDAAW,CAACK,IAAI,CAACU,SAAN,EAAiBV,IAAI,CAACW,UAAtB,EAAkCC,SAAlC,EAA6C,IAA7C,CAAzB;AACAiC,EAAAA,IAAI,CAAC7C,IAAL,GAAYS,WAAZ,CAAwBF,KAAxB;AACA,MAAMc,KAAK,GAAGd,KAAK,CAACO,OAAN,GAAgBO,KAA9B;AACAwB,EAAAA,IAAI,CAAC7C,IAAL,GAAYgD,WAAZ,CAAwBzC,KAAxB;AACA,SAAOc,KAAP;AACD,CANM;AAQA,IAAM4B,KAAK,GAAG,SAARA,KAAQ,GAAM;AACzBN,EAAAA,YAAY,GAAG,EAAf;AACD,CAFM;AAIA,IAAMO,eAAe,GAAG,SAAlBA,eAAkB,CAAClD,IAAD,EAAU;AACvC/C,EAAAA,6CAAA,CAAS,uBAAuB+C,IAAI,CAACE,EAA5B,GAAiC,IAAjC,GAAwCF,IAAI,CAAC+B,CAA7C,GAAiD,IAAjD,GAAwD/B,IAAI,CAACgC,CAA7D,GAAiE,GAA1E;AACA,MAAMoB,EAAE,GAAGT,YAAY,CAAC3C,IAAI,CAACE,EAAN,CAAvB;AAEAkD,EAAAA,EAAE,CAAC/C,IAAH,CAAQ,WAAR,EAAqB,eAAeL,IAAI,CAAC+B,CAApB,GAAwB,IAAxB,GAA+B/B,IAAI,CAACgC,CAApC,GAAwC,GAA7D;AACD,CALM;;;;;;;;;;;;;;;;;;;;;;AC9OP;CACiC;;AACjC;AACA;AAEA;AACA;AACA;AACA;;AACA,SAASqB,UAAT,CAAoBC,GAApB,EAAyBC,OAAzB,EAAkC;AAChC,MAAIA,OAAJ,EAAa;AACXD,IAAAA,GAAG,CAACjD,IAAJ,CAAS,OAAT,EAAkBkD,OAAlB;AACD;AACF;AAED;AACA;AACA;AACA;;;AACA,SAASC,YAAT,CAAsBxD,IAAtB,EAA4B;AAC1B,MAAMyD,EAAE,GAAG7D,0CAAM,CAAC8D,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,eAAvD,CAAD,CAAjB;AACA,MAAM1C,GAAG,GAAGwC,EAAE,CAACjB,MAAH,CAAU,WAAV,CAAZ;AAEA,MAAMjC,KAAK,GAAGP,IAAI,CAACO,KAAnB;AACA,MAAMqD,UAAU,GAAG5D,IAAI,CAAC6D,MAAL,GAAc,WAAd,GAA4B,WAA/C;AACA5C,EAAAA,GAAG,CAAC6C,IAAJ,CACE,kBACEF,UADF,GAEE,IAFF,IAGG5D,IAAI,CAACW,UAAL,GAAkB,YAAYX,IAAI,CAACW,UAAjB,GAA8B,GAAhD,GAAsD,EAHzD,IAIE,GAJF,GAKEJ,KALF,GAME,SAPJ;AAUA8C,EAAAA,UAAU,CAACpC,GAAD,EAAMjB,IAAI,CAACW,UAAX,CAAV;AACAM,EAAAA,GAAG,CAACW,KAAJ,CAAU,SAAV,EAAqB,cAArB,EAjB0B,CAkB1B;;AACAX,EAAAA,GAAG,CAACW,KAAJ,CAAU,aAAV,EAAyB,QAAzB;AACAX,EAAAA,GAAG,CAACZ,IAAJ,CAAS,OAAT,EAAkB,8BAAlB;AACA,SAAOoD,EAAE,CAACzD,IAAH,EAAP;AACD;;AAED,IAAML,WAAW,GAAG,SAAdA,WAAc,CAACoE,WAAD,EAAcnC,KAAd,EAAqBoC,OAArB,EAA8BH,MAA9B,EAAyC;AAC3D,MAAII,UAAU,GAAGF,WAAW,IAAI,EAAhC;AACA,MAAI,QAAOE,UAAP,MAAsB,QAA1B,EAAoCA,UAAU,GAAGA,UAAU,CAAC,CAAD,CAAvB;;AACpC,MAAIpE,iEAAQ,CAAChB,kDAAS,GAAGkC,SAAZ,CAAsBC,UAAvB,CAAZ,EAAgD;AAC9C;AACAiD,IAAAA,UAAU,GAAGA,UAAU,CAACC,OAAX,CAAmB,SAAnB,EAA8B,QAA9B,CAAb;AACAjH,IAAAA,6CAAA,CAAS,eAAegH,UAAxB;AACA,QAAMjE,IAAI,GAAG;AACX6D,MAAAA,MAAM,EAANA,MADW;AAEXtD,MAAAA,KAAK,EAAE0D,UAAU,CAACC,OAAX,CACL,sBADK,EAEL,UAACC,CAAD;AAAA,mCAAoBA,CAAC,CAACD,OAAF,CAAU,GAAV,EAAe,GAAf,CAApB;AAAA,OAFK,CAFI;AAMXvD,MAAAA,UAAU,EAAEiB,KAAK,CAACsC,OAAN,CAAc,OAAd,EAAuB,QAAvB;AAND,KAAb;AAQA,QAAIE,UAAU,GAAGZ,YAAY,CAACxD,IAAD,CAA7B,CAZ8C,CAa9C;;AACA,WAAOoE,UAAP;AACD,GAfD,MAeO;AACL,QAAMC,QAAQ,GAAGX,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,MAAvD,CAAjB;AACAU,IAAAA,QAAQ,CAACC,YAAT,CAAsB,OAAtB,EAA+B1C,KAAK,CAACsC,OAAN,CAAc,QAAd,EAAwB,OAAxB,CAA/B;AACA,QAAIK,IAAI,GAAG,EAAX;;AACA,QAAI,OAAON,UAAP,KAAsB,QAA1B,EAAoC;AAClCM,MAAAA,IAAI,GAAGN,UAAU,CAACO,KAAX,CAAiB,qBAAjB,CAAP;AACD,KAFD,MAEO,IAAIC,KAAK,CAACC,OAAN,CAAcT,UAAd,CAAJ,EAA+B;AACpCM,MAAAA,IAAI,GAAGN,UAAP;AACD,KAFM,MAEA;AACLM,MAAAA,IAAI,GAAG,EAAP;AACD;;AAED,SAAK,IAAII,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,IAAI,CAACtG,MAAzB,EAAiC0G,CAAC,EAAlC,EAAsC;AACpC,UAAMC,KAAK,GAAGlB,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,OAAvD,CAAd;AACAiB,MAAAA,KAAK,CAACC,cAAN,CAAqB,sCAArB,EAA6D,WAA7D,EAA0E,UAA1E;AACAD,MAAAA,KAAK,CAACN,YAAN,CAAmB,IAAnB,EAAyB,KAAzB;AACAM,MAAAA,KAAK,CAACN,YAAN,CAAmB,GAAnB,EAAwB,GAAxB;;AACA,UAAIN,OAAJ,EAAa;AACXY,QAAAA,KAAK,CAACN,YAAN,CAAmB,OAAnB,EAA4B,WAA5B;AACD,OAFD,MAEO;AACLM,QAAAA,KAAK,CAACN,YAAN,CAAmB,OAAnB,EAA4B,KAA5B;AACD;;AACDM,MAAAA,KAAK,CAACE,WAAN,GAAoBP,IAAI,CAACI,CAAD,CAAJ,CAAQI,IAAR,EAApB;AACAV,MAAAA,QAAQ,CAAC5D,WAAT,CAAqBmE,KAArB;AACD;;AACD,WAAOP,QAAP;AACD;AACF,CA7CD;;AA+CA,iEAAe1E,WAAf;;;;;;;;;;;;;;;;;;;;;;;;;;CC1FiC;;AACjC;AACA;AACA;AACA;AACA;AAEA,IAAIwF,UAAU,GAAG,EAAjB;AACA,IAAIC,cAAc,GAAG,EAArB;AAEO,IAAMnC,KAAK,GAAG,SAARA,KAAQ,GAAM;AACzBkC,EAAAA,UAAU,GAAG,EAAb;AACAC,EAAAA,cAAc,GAAG,EAAjB;AACD,CAHM;AAKA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAACxC,IAAD,EAAOyC,IAAP,EAAgB;AAC7C;AACA,MAAMC,YAAY,GAAG5F,wDAAW,CAAC2F,IAAI,CAAC/E,KAAN,EAAa+E,IAAI,CAAC3E,UAAlB,CAAhC,CAF6C,CAI7C;;AACA,MAAM6E,SAAS,GAAG3C,IAAI,CAACzC,MAAL,CAAY,GAAZ,EAAiBC,IAAjB,CAAsB,OAAtB,EAA+B,WAA/B,CAAlB,CAL6C,CAO7C;;AACA,MAAME,KAAK,GAAGiF,SAAS,CAACpF,MAAV,CAAiB,GAAjB,EAAsBC,IAAtB,CAA2B,OAA3B,EAAoC,OAApC,CAAd;AACAE,EAAAA,KAAK,CAACP,IAAN,GAAaS,WAAb,CAAyB8E,YAAzB,EAT6C,CAW7C;;AACA,MAAI1E,IAAI,GAAG0E,YAAY,CAACzE,OAAb,EAAX;;AACA,MAAIjB,iEAAQ,CAAChB,kDAAS,GAAGkC,SAAZ,CAAsBC,UAAvB,CAAZ,EAAgD;AAC9C,QAAMC,GAAG,GAAGsE,YAAY,CAACrE,QAAb,CAAsB,CAAtB,CAAZ;AACA,QAAMC,EAAE,GAAGvB,0CAAM,CAAC2F,YAAD,CAAjB;AACA1E,IAAAA,IAAI,GAAGI,GAAG,CAACG,qBAAJ,EAAP;AACAD,IAAAA,EAAE,CAACd,IAAH,CAAQ,OAAR,EAAiBQ,IAAI,CAACQ,KAAtB;AACAF,IAAAA,EAAE,CAACd,IAAH,CAAQ,QAAR,EAAkBQ,IAAI,CAACS,MAAvB;AACD;;AACDf,EAAAA,KAAK,CAACF,IAAN,CAAW,WAAX,EAAwB,eAAe,CAACQ,IAAI,CAACQ,KAAN,GAAc,CAA7B,GAAiC,IAAjC,GAAwC,CAACR,IAAI,CAACS,MAAN,GAAe,CAAvD,GAA2D,GAAnF,EApB6C,CAsB7C;;AACA6D,EAAAA,UAAU,CAACG,IAAI,CAACpF,EAAN,CAAV,GAAsBsF,SAAtB,CAvB6C,CAyB7C;;AACAF,EAAAA,IAAI,CAACjE,KAAL,GAAaR,IAAI,CAACQ,KAAlB;AACAiE,EAAAA,IAAI,CAAChE,MAAL,GAAcT,IAAI,CAACS,MAAnB;AAEA,MAAImC,EAAJ;;AACA,MAAI6B,IAAI,CAACG,cAAT,EAAyB;AACvB;AACA,QAAMC,iBAAiB,GAAG/F,wDAAW,CAAC2F,IAAI,CAACG,cAAN,EAAsBH,IAAI,CAAC3E,UAA3B,CAArC;AACA,QAAMgF,kBAAkB,GAAG9C,IAAI,CAACzC,MAAL,CAAY,GAAZ,EAAiBC,IAAjB,CAAsB,OAAtB,EAA+B,eAA/B,CAA3B;AACA,QAAMuF,KAAK,GAAGD,kBAAkB,CAACvF,MAAnB,CAA0B,GAA1B,EAA+BC,IAA/B,CAAoC,OAApC,EAA6C,OAA7C,CAAd;AACAoD,IAAAA,EAAE,GAAGmC,KAAK,CAAC5F,IAAN,GAAaS,WAAb,CAAyBiF,iBAAzB,CAAL;AACA,QAAMG,KAAK,GAAGH,iBAAiB,CAAC5E,OAAlB,EAAd;AACA8E,IAAAA,KAAK,CAACvF,IAAN,CAAW,WAAX,EAAwB,eAAe,CAACwF,KAAK,CAACxE,KAAP,GAAe,CAA9B,GAAkC,IAAlC,GAAyC,CAACwE,KAAK,CAACvE,MAAP,GAAgB,CAAzD,GAA6D,GAArF;;AACA,QAAI,CAAC8D,cAAc,CAACE,IAAI,CAACpF,EAAN,CAAnB,EAA8B;AAC5BkF,MAAAA,cAAc,CAACE,IAAI,CAACpF,EAAN,CAAd,GAA0B,EAA1B;AACD;;AACDkF,IAAAA,cAAc,CAACE,IAAI,CAACpF,EAAN,CAAd,CAAwB4F,SAAxB,GAAoCH,kBAApC;AACAI,IAAAA,gBAAgB,CAACtC,EAAD,EAAK6B,IAAI,CAACG,cAAV,CAAhB;AACD;;AACD,MAAIH,IAAI,CAACU,eAAT,EAA0B;AACxB;AACA,QAAMN,kBAAiB,GAAG/F,wDAAW,CAAC2F,IAAI,CAACU,eAAN,EAAuBV,IAAI,CAAC3E,UAA5B,CAArC;;AACA,QAAMsF,mBAAmB,GAAGpD,IAAI,CAACzC,MAAL,CAAY,GAAZ,EAAiBC,IAAjB,CAAsB,OAAtB,EAA+B,eAA/B,CAA5B;;AACA,QAAMuF,MAAK,GAAGK,mBAAmB,CAAC7F,MAApB,CAA2B,GAA3B,EAAgCC,IAAhC,CAAqC,OAArC,EAA8C,OAA9C,CAAd;;AACAoD,IAAAA,EAAE,GAAGwC,mBAAmB,CAACjG,IAApB,GAA2BS,WAA3B,CAAuCiF,kBAAvC,CAAL;;AACAE,IAAAA,MAAK,CAAC5F,IAAN,GAAaS,WAAb,CAAyBiF,kBAAzB;;AACA,QAAMG,MAAK,GAAGH,kBAAiB,CAAC5E,OAAlB,EAAd;;AACA8E,IAAAA,MAAK,CAACvF,IAAN,CAAW,WAAX,EAAwB,eAAe,CAACwF,MAAK,CAACxE,KAAP,GAAe,CAA9B,GAAkC,IAAlC,GAAyC,CAACwE,MAAK,CAACvE,MAAP,GAAgB,CAAzD,GAA6D,GAArF;;AAEA,QAAI,CAAC8D,cAAc,CAACE,IAAI,CAACpF,EAAN,CAAnB,EAA8B;AAC5BkF,MAAAA,cAAc,CAACE,IAAI,CAACpF,EAAN,CAAd,GAA0B,EAA1B;AACD;;AACDkF,IAAAA,cAAc,CAACE,IAAI,CAACpF,EAAN,CAAd,CAAwBgG,UAAxB,GAAqCD,mBAArC;AACAF,IAAAA,gBAAgB,CAACtC,EAAD,EAAK6B,IAAI,CAACU,eAAV,CAAhB;AACD;;AACD,MAAIV,IAAI,CAACa,YAAT,EAAuB;AACrB;AACA,QAAMC,eAAe,GAAGzG,wDAAW,CAAC2F,IAAI,CAACa,YAAN,EAAoBb,IAAI,CAAC3E,UAAzB,CAAnC;AACA,QAAM0F,gBAAgB,GAAGxD,IAAI,CAACzC,MAAL,CAAY,GAAZ,EAAiBC,IAAjB,CAAsB,OAAtB,EAA+B,eAA/B,CAAzB;;AACA,QAAMuF,OAAK,GAAGS,gBAAgB,CAACjG,MAAjB,CAAwB,GAAxB,EAA6BC,IAA7B,CAAkC,OAAlC,EAA2C,OAA3C,CAAd;;AACAoD,IAAAA,EAAE,GAAGmC,OAAK,CAAC5F,IAAN,GAAaS,WAAb,CAAyB2F,eAAzB,CAAL;;AACA,QAAMP,OAAK,GAAGO,eAAe,CAACtF,OAAhB,EAAd;;AACA8E,IAAAA,OAAK,CAACvF,IAAN,CAAW,WAAX,EAAwB,eAAe,CAACwF,OAAK,CAACxE,KAAP,GAAe,CAA9B,GAAkC,IAAlC,GAAyC,CAACwE,OAAK,CAACvE,MAAP,GAAgB,CAAzD,GAA6D,GAArF;;AAEA+E,IAAAA,gBAAgB,CAACrG,IAAjB,GAAwBS,WAAxB,CAAoC2F,eAApC;;AAEA,QAAI,CAAChB,cAAc,CAACE,IAAI,CAACpF,EAAN,CAAnB,EAA8B;AAC5BkF,MAAAA,cAAc,CAACE,IAAI,CAACpF,EAAN,CAAd,GAA0B,EAA1B;AACD;;AACDkF,IAAAA,cAAc,CAACE,IAAI,CAACpF,EAAN,CAAd,CAAwBoG,OAAxB,GAAkCD,gBAAlC;AACAN,IAAAA,gBAAgB,CAACtC,EAAD,EAAK6B,IAAI,CAACa,YAAV,CAAhB;AACD;;AACD,MAAIb,IAAI,CAACiB,aAAT,EAAwB;AACtB;AACA,QAAMH,gBAAe,GAAGzG,wDAAW,CAAC2F,IAAI,CAACiB,aAAN,EAAqBjB,IAAI,CAAC3E,UAA1B,CAAnC;;AACA,QAAM6F,iBAAiB,GAAG3D,IAAI,CAACzC,MAAL,CAAY,GAAZ,EAAiBC,IAAjB,CAAsB,OAAtB,EAA+B,eAA/B,CAA1B;;AACA,QAAMuF,OAAK,GAAGY,iBAAiB,CAACpG,MAAlB,CAAyB,GAAzB,EAA8BC,IAA9B,CAAmC,OAAnC,EAA4C,OAA5C,CAAd;;AAEAoD,IAAAA,EAAE,GAAGmC,OAAK,CAAC5F,IAAN,GAAaS,WAAb,CAAyB2F,gBAAzB,CAAL;;AACA,QAAMP,OAAK,GAAGO,gBAAe,CAACtF,OAAhB,EAAd;;AACA8E,IAAAA,OAAK,CAACvF,IAAN,CAAW,WAAX,EAAwB,eAAe,CAACwF,OAAK,CAACxE,KAAP,GAAe,CAA9B,GAAkC,IAAlC,GAAyC,CAACwE,OAAK,CAACvE,MAAP,GAAgB,CAAzD,GAA6D,GAArF;;AAEAkF,IAAAA,iBAAiB,CAACxG,IAAlB,GAAyBS,WAAzB,CAAqC2F,gBAArC;;AACA,QAAI,CAAChB,cAAc,CAACE,IAAI,CAACpF,EAAN,CAAnB,EAA8B;AAC5BkF,MAAAA,cAAc,CAACE,IAAI,CAACpF,EAAN,CAAd,GAA0B,EAA1B;AACD;;AACDkF,IAAAA,cAAc,CAACE,IAAI,CAACpF,EAAN,CAAd,CAAwBuG,QAAxB,GAAmCD,iBAAnC;AACAT,IAAAA,gBAAgB,CAACtC,EAAD,EAAK6B,IAAI,CAACiB,aAAV,CAAhB;AACD;AACF,CA9FM;AAgGP;AACA;AACA;AACA;;AACA,SAASR,gBAAT,CAA0BtC,EAA1B,EAA8BiD,KAA9B,EAAqC;AACnC,MAAI7H,kDAAS,GAAGkC,SAAZ,CAAsBC,UAAtB,IAAoCyC,EAAxC,EAA4C;AAC1CA,IAAAA,EAAE,CAAC7B,KAAH,CAASP,KAAT,GAAiBqF,KAAK,CAACzI,MAAN,GAAe,CAAf,GAAmB,IAApC;AACAwF,IAAAA,EAAE,CAAC7B,KAAH,CAASN,MAAT,GAAkB,MAAlB;AACD;AACF;;AAEM,IAAMqF,iBAAiB,GAAG,SAApBA,iBAAoB,CAACrB,IAAD,EAAOsB,KAAP,EAAiB;AAChD3J,EAAAA,6CAAA,CAAS,qBAAT,EAAgCqI,IAAI,CAACpF,EAArC,EAAyCoF,IAAI,CAAC/E,KAA9C,EAAqD4E,UAAU,CAACG,IAAI,CAACpF,EAAN,CAA/D;AACA,MAAI2G,IAAI,GAAGD,KAAK,CAACE,WAAN,GAAoBF,KAAK,CAACE,WAA1B,GAAwCF,KAAK,CAACG,YAAzD;;AACA,MAAIzB,IAAI,CAAC/E,KAAT,EAAgB;AACd,QAAM6C,EAAE,GAAG+B,UAAU,CAACG,IAAI,CAACpF,EAAN,CAArB;AACA,QAAI6B,CAAC,GAAGuD,IAAI,CAACvD,CAAb;AACA,QAAIC,CAAC,GAAGsD,IAAI,CAACtD,CAAb;;AACA,QAAI6E,IAAJ,EAAU;AACR;AACA,UAAMG,GAAG,GAAG9B,gEAAA,CAAwB2B,IAAxB,CAAZ;AACA5J,MAAAA,6CAAA,CAAS,qBAAT,EAAgC8E,CAAhC,EAAmC,GAAnC,EAAwCC,CAAxC,EAA2C,QAA3C,EAAqDgF,GAAG,CAACjF,CAAzD,EAA4D,GAA5D,EAAiEiF,GAAG,CAAChF,CAArE,EAAwE,SAAxE,EAHQ,CAIR;AACA;AACD;;AACDoB,IAAAA,EAAE,CAAC/C,IAAH,CAAQ,WAAR,EAAqB,eAAe0B,CAAf,GAAmB,IAAnB,GAA0BC,CAA1B,GAA8B,GAAnD;AACD,GAf+C,CAiBhD;;;AACA,MAAIsD,IAAI,CAACG,cAAT,EAAyB;AACvB,QAAMrC,GAAE,GAAGgC,cAAc,CAACE,IAAI,CAACpF,EAAN,CAAd,CAAwB4F,SAAnC;AACA,QAAI/D,GAAC,GAAGuD,IAAI,CAACvD,CAAb;AACA,QAAIC,GAAC,GAAGsD,IAAI,CAACtD,CAAb;;AACA,QAAI6E,IAAJ,EAAU;AACR;AACA,UAAMG,IAAG,GAAG9B,wEAAA,CAAgCI,IAAI,CAAC6B,cAAL,GAAsB,EAAtB,GAA2B,CAA3D,EAA8D,YAA9D,EAA4EN,IAA5E,CAAZ;;AACA9E,MAAAA,GAAC,GAAGiF,IAAG,CAACjF,CAAR;AACAC,MAAAA,GAAC,GAAGgF,IAAG,CAAChF,CAAR;AACD;;AACDoB,IAAAA,GAAE,CAAC/C,IAAH,CAAQ,WAAR,EAAqB,eAAe0B,GAAf,GAAmB,IAAnB,GAA0BC,GAA1B,GAA8B,GAAnD;AACD;;AACD,MAAIsD,IAAI,CAACU,eAAT,EAA0B;AACxB,QAAM5C,IAAE,GAAGgC,cAAc,CAACE,IAAI,CAACpF,EAAN,CAAd,CAAwBgG,UAAnC;AACA,QAAInE,GAAC,GAAGuD,IAAI,CAACvD,CAAb;AACA,QAAIC,GAAC,GAAGsD,IAAI,CAACtD,CAAb;;AACA,QAAI6E,IAAJ,EAAU;AACR;AACA,UAAMG,KAAG,GAAG9B,wEAAA,CACVI,IAAI,CAAC6B,cAAL,GAAsB,EAAtB,GAA2B,CADjB,EAEV,aAFU,EAGVN,IAHU,CAAZ;;AAKA9E,MAAAA,GAAC,GAAGiF,KAAG,CAACjF,CAAR;AACAC,MAAAA,GAAC,GAAGgF,KAAG,CAAChF,CAAR;AACD;;AACDoB,IAAAA,IAAE,CAAC/C,IAAH,CAAQ,WAAR,EAAqB,eAAe0B,GAAf,GAAmB,IAAnB,GAA0BC,GAA1B,GAA8B,GAAnD;AACD;;AACD,MAAIsD,IAAI,CAACa,YAAT,EAAuB;AACrB,QAAM/C,IAAE,GAAGgC,cAAc,CAACE,IAAI,CAACpF,EAAN,CAAd,CAAwBoG,OAAnC;AACA,QAAIvE,GAAC,GAAGuD,IAAI,CAACvD,CAAb;AACA,QAAIC,GAAC,GAAGsD,IAAI,CAACtD,CAAb;;AACA,QAAI6E,IAAJ,EAAU;AACR;AACA,UAAMG,KAAG,GAAG9B,wEAAA,CAAgCI,IAAI,CAAC8B,YAAL,GAAoB,EAApB,GAAyB,CAAzD,EAA4D,UAA5D,EAAwEP,IAAxE,CAAZ;;AACA9E,MAAAA,GAAC,GAAGiF,KAAG,CAACjF,CAAR;AACAC,MAAAA,GAAC,GAAGgF,KAAG,CAAChF,CAAR;AACD;;AACDoB,IAAAA,IAAE,CAAC/C,IAAH,CAAQ,WAAR,EAAqB,eAAe0B,GAAf,GAAmB,IAAnB,GAA0BC,GAA1B,GAA8B,GAAnD;AACD;;AACD,MAAIsD,IAAI,CAACiB,aAAT,EAAwB;AACtB,QAAMnD,IAAE,GAAGgC,cAAc,CAACE,IAAI,CAACpF,EAAN,CAAd,CAAwBuG,QAAnC;AACA,QAAI1E,GAAC,GAAGuD,IAAI,CAACvD,CAAb;AACA,QAAIC,GAAC,GAAGsD,IAAI,CAACtD,CAAb;;AACA,QAAI6E,IAAJ,EAAU;AACR;AACA,UAAMG,KAAG,GAAG9B,wEAAA,CAAgCI,IAAI,CAAC8B,YAAL,GAAoB,EAApB,GAAyB,CAAzD,EAA4D,WAA5D,EAAyEP,IAAzE,CAAZ;;AACA9E,MAAAA,GAAC,GAAGiF,KAAG,CAACjF,CAAR;AACAC,MAAAA,GAAC,GAAGgF,KAAG,CAAChF,CAAR;AACD;;AACDoB,IAAAA,IAAE,CAAC/C,IAAH,CAAQ,WAAR,EAAqB,eAAe0B,GAAf,GAAmB,IAAnB,GAA0BC,GAA1B,GAA8B,GAAnD;AACD;AACF,CAtEM,EAwEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMqF,WAAW,GAAG,SAAdA,WAAc,CAACrH,IAAD,EAAOmC,KAAP,EAAiB;AACnC;AACA,MAAMJ,CAAC,GAAG/B,IAAI,CAAC+B,CAAf;AACA,MAAMC,CAAC,GAAGhC,IAAI,CAACgC,CAAf;AACA,MAAMsF,EAAE,GAAGC,IAAI,CAACC,GAAL,CAASrF,KAAK,CAACJ,CAAN,GAAUA,CAAnB,CAAX;AACA,MAAM0F,EAAE,GAAGF,IAAI,CAACC,GAAL,CAASrF,KAAK,CAACH,CAAN,GAAUA,CAAnB,CAAX;AACA,MAAM0F,CAAC,GAAG1H,IAAI,CAACqB,KAAL,GAAa,CAAvB;AACA,MAAMsG,CAAC,GAAG3H,IAAI,CAACsB,MAAL,GAAc,CAAxB;;AACA,MAAIgG,EAAE,IAAII,CAAN,IAAWD,EAAE,IAAIE,CAArB,EAAwB;AACtB,WAAO,IAAP;AACD;;AACD,SAAO,KAAP;AACD,CAZD;;AAcO,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAAC5H,IAAD,EAAO6H,YAAP,EAAqBC,WAArB,EAAqC;AAC/D7K,EAAAA,6CAAA,qDACgByE,IAAI,CAACC,SAAL,CAAekG,YAAf,CADhB,+BAEgBnG,IAAI,CAACC,SAAL,CAAemG,WAAf,CAFhB,iCAGkB9H,IAAI,CAAC+B,CAHvB,gBAG8B/B,IAAI,CAACgC,CAHnC,gBAG0ChC,IAAI,CAACqB,KAH/C,gBAG0DrB,IAAI,CAACsB,MAH/D;AAIA,MAAMS,CAAC,GAAG/B,IAAI,CAAC+B,CAAf;AACA,MAAMC,CAAC,GAAGhC,IAAI,CAACgC,CAAf;AAEA,MAAMsF,EAAE,GAAGC,IAAI,CAACC,GAAL,CAASzF,CAAC,GAAG+F,WAAW,CAAC/F,CAAzB,CAAX,CAR+D,CAS/D;;AACA,MAAM2F,CAAC,GAAG1H,IAAI,CAACqB,KAAL,GAAa,CAAvB;AACA,MAAI2G,CAAC,GAAGF,WAAW,CAAC/F,CAAZ,GAAgB8F,YAAY,CAAC9F,CAA7B,GAAiC2F,CAAC,GAAGJ,EAArC,GAA0CI,CAAC,GAAGJ,EAAtD;AACA,MAAMK,CAAC,GAAG3H,IAAI,CAACsB,MAAL,GAAc,CAAxB,CAZ+D,CAc/D;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM2G,CAAC,GAAGV,IAAI,CAACC,GAAL,CAASK,YAAY,CAAC7F,CAAb,GAAiB8F,WAAW,CAAC9F,CAAtC,CAAV;AACA,MAAMkG,CAAC,GAAGX,IAAI,CAACC,GAAL,CAASK,YAAY,CAAC9F,CAAb,GAAiB+F,WAAW,CAAC/F,CAAtC,CAAV,CAhC+D,CAiC/D;;AACA,MAAIwF,IAAI,CAACC,GAAL,CAASxF,CAAC,GAAG6F,YAAY,CAAC7F,CAA1B,IAA+B0F,CAA/B,GAAmCH,IAAI,CAACC,GAAL,CAASzF,CAAC,GAAG8F,YAAY,CAAC9F,CAA1B,IAA+B4F,CAAtE,EAAyE;AAAE;AACzE;AACA;AACA,QAAIQ,CAAC,GAAGL,WAAW,CAAC9F,CAAZ,GAAgB6F,YAAY,CAAC7F,CAA7B,GAAiC6F,YAAY,CAAC7F,CAAb,GAAiB2F,CAAjB,GAAqB3F,CAAtD,GAA0DA,CAAC,GAAG2F,CAAJ,GAAQE,YAAY,CAAC7F,CAAvF;AACAgG,IAAAA,CAAC,GAAIE,CAAC,GAAGC,CAAL,GAAUF,CAAd;AACA,QAAMG,GAAG,GAAG;AACVrG,MAAAA,CAAC,EAAE+F,WAAW,CAAC/F,CAAZ,GAAgB8F,YAAY,CAAC9F,CAA7B,GAAiC+F,WAAW,CAAC/F,CAAZ,GAAgBiG,CAAjD,GAAqDF,WAAW,CAAC/F,CAAZ,GAAgBmG,CAAhB,GAAoBF,CADlE;AAEVhG,MAAAA,CAAC,EAAE8F,WAAW,CAAC9F,CAAZ,GAAgB6F,YAAY,CAAC7F,CAA7B,GAAiC8F,WAAW,CAAC9F,CAAZ,GAAgBiG,CAAhB,GAAoBE,CAArD,GAAyDL,WAAW,CAAC9F,CAAZ,GAAgBiG,CAAhB,GAAoBE;AAFtE,KAAZ;;AAKA,QAAIH,CAAC,KAAK,CAAV,EAAa;AACXI,MAAAA,GAAG,CAACrG,CAAJ,GAAQ8F,YAAY,CAAC9F,CAArB;AACAqG,MAAAA,GAAG,CAACpG,CAAJ,GAAQ6F,YAAY,CAAC7F,CAArB;AACD;;AACD,QAAIkG,CAAC,KAAK,CAAV,EAAa;AACXE,MAAAA,GAAG,CAACrG,CAAJ,GAAQ8F,YAAY,CAAC9F,CAArB;AACD;;AACD,QAAIkG,CAAC,KAAK,CAAV,EAAa;AACXG,MAAAA,GAAG,CAACpG,CAAJ,GAAQ6F,YAAY,CAAC7F,CAArB;AACD;;AAED/E,IAAAA,6CAAA,mCAAoCgL,CAApC,iBAA4CE,CAA5C,iBAAoDD,CAApD,iBAA4DF,CAA5D,GAAiEI,GAAjE;AAEA,WAAOA,GAAP;AACD,GAxBD,MAwBO;AACL;AACA,QAAIN,WAAW,CAAC/F,CAAZ,GAAgB8F,YAAY,CAAC9F,CAAjC,EAAoC;AAClCiG,MAAAA,CAAC,GAAGH,YAAY,CAAC9F,CAAb,GAAiB2F,CAAjB,GAAqB3F,CAAzB;AACD,KAFD,MAEO;AACL;AACAiG,MAAAA,CAAC,GAAGjG,CAAC,GAAG2F,CAAJ,GAAQG,YAAY,CAAC9F,CAAzB;AACD;;AACD,QAAIoG,EAAC,GAAIF,CAAC,GAAGD,CAAL,GAAUE,CAAlB,CARK,CASL;AACA;;;AACA,QAAIG,EAAE,GAAGP,WAAW,CAAC/F,CAAZ,GAAgB8F,YAAY,CAAC9F,CAA7B,GAAiC+F,WAAW,CAAC/F,CAAZ,GAAgBmG,CAAhB,GAAoBF,CAArD,GAAyDF,WAAW,CAAC/F,CAAZ,GAAgBmG,CAAhB,GAAoBF,CAAtF,CAXK,CAYL;;;AACA,QAAIM,EAAE,GAAGR,WAAW,CAAC9F,CAAZ,GAAgB6F,YAAY,CAAC7F,CAA7B,GAAiC8F,WAAW,CAAC9F,CAAZ,GAAgBmG,EAAjD,GAAqDL,WAAW,CAAC9F,CAAZ,GAAgBmG,EAA9E;;AACAlL,IAAAA,6CAAA,+BAAgCgL,CAAhC,iBAAwCE,EAAxC,iBAAgDD,CAAhD,iBAAwDF,CAAxD,GAA6D;AAAEK,MAAAA,EAAE,EAAFA,EAAF;AAAMC,MAAAA,EAAE,EAAFA;AAAN,KAA7D;;AACA,QAAIN,CAAC,KAAK,CAAV,EAAa;AACXK,MAAAA,EAAE,GAAGR,YAAY,CAAC9F,CAAlB;AACAuG,MAAAA,EAAE,GAAGT,YAAY,CAAC7F,CAAlB;AACD;;AACD,QAAIkG,CAAC,KAAK,CAAV,EAAa;AACXG,MAAAA,EAAE,GAAGR,YAAY,CAAC9F,CAAlB;AACD;;AACD,QAAIkG,CAAC,KAAK,CAAV,EAAa;AACXK,MAAAA,EAAE,GAAGT,YAAY,CAAC7F,CAAlB;AACD;;AAED,WAAO;AAAED,MAAAA,CAAC,EAAEsG,EAAL;AAASrG,MAAAA,CAAC,EAAEsG;AAAZ,KAAP;AACD;AACF,CAtFM;AAuFP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,OAAD,EAAUC,WAAV,EAA0B;AACnDxL,EAAAA,6CAAA,CAAS,0BAAT,EAAqCuL,OAArC,EAA8CC,WAA9C;AACA,MAAIC,MAAM,GAAG,EAAb;AACA,MAAIC,gBAAgB,GAAGH,OAAO,CAAC,CAAD,CAA9B;AACA,MAAII,QAAQ,GAAG,KAAf;;AACAJ,EAAAA,OAAO,CAACvJ,OAAR,CAAgB,UAACkD,KAAD,EAAW;AACzB;AACAlF,IAAAA,6CAAA,CAAS,sBAAT,EAAiCkF,KAAjC,EAAwCsG,WAAxC,EAFyB,CAIzB;;AACA,QAAI,CAACpB,WAAW,CAACoB,WAAD,EAActG,KAAd,CAAZ,IAAoC,CAACyG,QAAzC,EAAmD;AACjD;AACA;AACA,UAAMC,KAAK,GAAGjB,YAAY,CAACa,WAAD,EAAcE,gBAAd,EAAgCxG,KAAhC,CAA1B;AACAlF,MAAAA,6CAAA,CAAS,cAAT,EAAyBkF,KAAzB,EAAgCwG,gBAAhC,EAAkDE,KAAlD;AACA5L,MAAAA,6CAAA,CAAS,oBAAT,EAA+B4L,KAA/B,EALiD,CAOjD;;AACA,UAAIC,YAAY,GAAG,KAAnB;AACAJ,MAAAA,MAAM,CAACzJ,OAAP,CAAe,UAAC8J,CAAD,EAAO;AACpBD,QAAAA,YAAY,GAAGA,YAAY,IAAKC,CAAC,CAAChH,CAAF,KAAQ8G,KAAK,CAAC9G,CAAd,IAAmBgH,CAAC,CAAC/G,CAAF,KAAQ6G,KAAK,CAAC7G,CAAjE;AACD,OAFD,EATiD,CAYjD;;AACA,UAAI,CAAC0G,MAAM,CAACM,IAAP,CAAY,UAACC,CAAD;AAAA,eAAOA,CAAC,CAAClH,CAAF,KAAQ8G,KAAK,CAAC9G,CAAd,IAAmBkH,CAAC,CAACjH,CAAF,KAAQ6G,KAAK,CAAC7G,CAAxC;AAAA,OAAZ,CAAL,EAA6D;AAC3D0G,QAAAA,MAAM,CAAClJ,IAAP,CAAYqJ,KAAZ;AACD,OAFD,MAEO;AACL5L,QAAAA,6CAAA,CAAS,oBAAT,EAA+B4L,KAA/B,EAAsCH,MAAtC;AACD,OAjBgD,CAkBjD;;;AACAE,MAAAA,QAAQ,GAAG,IAAX;AACD,KApBD,MAoBO;AACL;AACA3L,MAAAA,6CAAA,CAAS,eAAT,EAA0BkF,KAA1B,EAAiCwG,gBAAjC;AACAA,MAAAA,gBAAgB,GAAGxG,KAAnB,CAHK,CAIL;;AACA,UAAI,CAACyG,QAAL,EAAeF,MAAM,CAAClJ,IAAP,CAAY2C,KAAZ;AAChB;AACF,GAhCD;;AAiCAlF,EAAAA,6CAAA,CAAS,wBAAT,EAAmCyL,MAAnC;AACA,SAAOA,MAAP;AACD,CAxCD,EA0CA;;;AACO,IAAMQ,UAAU,GAAG,SAAbA,UAAa,CAAUrG,IAAV,EAAgBoG,CAAhB,EAAmB3D,IAAnB,EAAyB6D,SAAzB,EAAoCC,WAApC,EAAiDC,KAAjD,EAAwD;AAChF,MAAIX,MAAM,GAAGpD,IAAI,CAACoD,MAAlB;AACA,MAAIY,gBAAgB,GAAG,KAAvB;AACA,MAAMC,IAAI,GAAGF,KAAK,CAACrJ,IAAN,CAAWiJ,CAAC,CAACO,CAAb,CAAb;AACA,MAAIC,IAAI,GAAGJ,KAAK,CAACrJ,IAAN,CAAWiJ,CAAC,CAACvB,CAAb,CAAX;AAEAzK,EAAAA,6CAAA,CAAS,oBAAT,EAA+BqI,IAA/B;;AACA,MAAImE,IAAI,CAACvH,SAAL,IAAkBqH,IAAI,CAACrH,SAA3B,EAAsC;AACpCwG,IAAAA,MAAM,GAAGA,MAAM,CAACgB,KAAP,CAAa,CAAb,EAAgBpE,IAAI,CAACoD,MAAL,CAAYzK,MAAZ,GAAqB,CAArC,CAAT;AACAyK,IAAAA,MAAM,CAACiB,OAAP,CAAeJ,IAAI,CAACrH,SAAL,CAAewG,MAAM,CAAC,CAAD,CAArB,CAAf;AACAzL,IAAAA,6CAAA,CACE,YADF,EAEEyL,MAAM,CAACA,MAAM,CAACzK,MAAP,GAAgB,CAAjB,CAFR,EAGEwL,IAHF,EAIEA,IAAI,CAACvH,SAAL,CAAewG,MAAM,CAACA,MAAM,CAACzK,MAAP,GAAgB,CAAjB,CAArB,CAJF;AAMAyK,IAAAA,MAAM,CAAClJ,IAAP,CAAYiK,IAAI,CAACvH,SAAL,CAAewG,MAAM,CAACA,MAAM,CAACzK,MAAP,GAAgB,CAAjB,CAArB,CAAZ;AACD;;AACD,MAAIqH,IAAI,CAACsE,SAAT,EAAoB;AAClB3M,IAAAA,6CAAA,CAAS,kBAAT,EAA6BkM,SAAS,CAAC7D,IAAI,CAACsE,SAAN,CAAtC;AACAlB,IAAAA,MAAM,GAAGH,kBAAkB,CAACjD,IAAI,CAACoD,MAAN,EAAcS,SAAS,CAAC7D,IAAI,CAACsE,SAAN,CAAT,CAA0B5J,IAAxC,CAA3B,CAFkB,CAGlB;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACAsJ,IAAAA,gBAAgB,GAAG,IAAnB;AACD;;AAED,MAAIhE,IAAI,CAACuE,WAAT,EAAsB;AACpB5M,IAAAA,6CAAA,CAAS,oBAAT,EAA+BkM,SAAS,CAAC7D,IAAI,CAACuE,WAAN,CAAxC;AACAnB,IAAAA,MAAM,GAAGH,kBAAkB,CAACG,MAAM,CAACoB,OAAP,EAAD,EAAmBX,SAAS,CAAC7D,IAAI,CAACuE,WAAN,CAAT,CAA4B7J,IAA/C,CAAlB,CAAuE8J,OAAvE,EAAT,CAFoB,CAGpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACAR,IAAAA,gBAAgB,GAAG,IAAnB;AACD,GAlG+E,CAoGhF;;;AACA,MAAMS,QAAQ,GAAGrB,MAAM,CAACsB,MAAP,CAAc,UAACjB,CAAD;AAAA,WAAO,CAACkB,MAAM,CAACC,KAAP,CAAanB,CAAC,CAAC/G,CAAf,CAAR;AAAA,GAAd,CAAjB,CArGgF,CAuGhF;;AACA,MAAImI,KAAJ,CAxGgF,CAyGhF;AACA;AACA;;AACA,MAAIf,WAAW,KAAK,OAAhB,IAA2BA,WAAW,KAAK,WAA/C,EAA4D;AAC1De,IAAAA,KAAK,GAAG7E,IAAI,CAAC6E,KAAL,IAAclF,0CAAtB;AACD,GAFD,MAEO;AACLkF,IAAAA,KAAK,GAAGlF,0CAAR;AACD,GAhH+E,CAiHhF;;;AACA,MAAMmF,YAAY,GAAGpF,wCAAI,GACtBjD,CADkB,CAChB,UAAU7D,CAAV,EAAa;AACd,WAAOA,CAAC,CAAC6D,CAAT;AACD,GAHkB,EAIlBC,CAJkB,CAIhB,UAAU9D,CAAV,EAAa;AACd,WAAOA,CAAC,CAAC8D,CAAT;AACD,GANkB,EAOlBmI,KAPkB,CAOZA,KAPY,CAArB,CAlHgF,CA2HhF;;AACA,MAAIE,aAAJ;;AACA,UAAQ/E,IAAI,CAACgF,SAAb;AACE,SAAK,QAAL;AACED,MAAAA,aAAa,GAAG,uBAAhB;AACA;;AACF,SAAK,OAAL;AACEA,MAAAA,aAAa,GAAG,sBAAhB;AACA;;AACF;AACEA,MAAAA,aAAa,GAAG,EAAhB;AARJ;;AAUA,UAAQ/E,IAAI,CAACiF,OAAb;AACE,SAAK,OAAL;AACEF,MAAAA,aAAa,IAAI,qBAAjB;AACA;;AACF,SAAK,QAAL;AACEA,MAAAA,aAAa,IAAI,sBAAjB;AACA;;AACF,SAAK,QAAL;AACEA,MAAAA,aAAa,IAAI,sBAAjB;AACA;AATJ;;AAYA,MAAMG,OAAO,GAAG3H,IAAI,CACjBL,MADa,CACN,MADM,EAEbnC,IAFa,CAER,GAFQ,EAEH+J,YAAY,CAACL,QAAD,CAFT,EAGb1J,IAHa,CAGR,IAHQ,EAGFiF,IAAI,CAACpF,EAHH,EAIbG,IAJa,CAIR,OAJQ,EAIC,MAAMgK,aAAN,IAAuB/E,IAAI,CAAChD,OAAL,GAAe,MAAMgD,IAAI,CAAChD,OAA1B,GAAoC,EAA3D,CAJD,EAKbjC,IALa,CAKR,OALQ,EAKCiF,IAAI,CAAC1D,KALN,CAAhB,CAnJgF,CA0JhF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAI6I,GAAG,GAAG,EAAV;;AACA,MAAI5L,kDAAS,GAAG6L,KAAZ,CAAkBC,mBAAtB,EAA2C;AACzCF,IAAAA,GAAG,GACDG,MAAM,CAACC,QAAP,CAAgBC,QAAhB,GACA,IADA,GAEAF,MAAM,CAACC,QAAP,CAAgBE,IAFhB,GAGAH,MAAM,CAACC,QAAP,CAAgBG,QAHhB,GAIAJ,MAAM,CAACC,QAAP,CAAgBI,MALlB;AAMAR,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACAuG,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACD;;AACDjH,EAAAA,6CAAA,CAAS,gBAAT,EAA2BqI,IAAI,CAAC6B,cAAhC;AACAlK,EAAAA,6CAAA,CAAS,cAAT,EAAyBqI,IAAI,CAAC8B,YAA9B;;AAEA,UAAQ9B,IAAI,CAAC6B,cAAb;AACE,SAAK,aAAL;AACEqD,MAAAA,OAAO,CAACnK,IAAR,CAAa,cAAb,EAA6B,SAASoK,GAAT,GAAe,GAAf,GAAqBrB,WAArB,GAAmC,aAAnC,GAAmD,GAAhF;AACA;;AACF,SAAK,aAAL;AACEoB,MAAAA,OAAO,CAACnK,IAAR,CAAa,cAAb,EAA6B,SAASoK,GAAT,GAAe,GAAf,GAAqBrB,WAArB,GAAmC,aAAnC,GAAmD,GAAhF;AACA;;AACF,SAAK,YAAL;AACEoB,MAAAA,OAAO,CAACnK,IAAR,CAAa,cAAb,EAA6B,SAASoK,GAAT,GAAe,GAAf,GAAqBrB,WAArB,GAAmC,YAAnC,GAAkD,GAA/E;AACA;;AACF,SAAK,cAAL;AACEoB,MAAAA,OAAO,CAACnK,IAAR,CAAa,cAAb,EAA6B,SAASoK,GAAT,GAAe,GAAf,GAAqBrB,WAArB,GAAmC,cAAnC,GAAoD,GAAjF;AACA;;AACF,SAAK,aAAL;AACEoB,MAAAA,OAAO,CAACnK,IAAR,CAAa,cAAb,EAA6B,SAASoK,GAAT,GAAe,GAAf,GAAqBrB,WAArB,GAAmC,mBAAnC,GAAyD,GAAtF;AACA;;AACF,SAAK,WAAL;AACEoB,MAAAA,OAAO,CAACnK,IAAR,CAAa,cAAb,EAA6B,SAASoK,GAAT,GAAe,GAAf,GAAqBrB,WAArB,GAAmC,iBAAnC,GAAuD,GAApF;AACA;;AACF,SAAK,aAAL;AACEoB,MAAAA,OAAO,CAACnK,IAAR,CAAa,cAAb,EAA6B,SAASoK,GAAT,GAAe,GAAf,GAAqBrB,WAArB,GAAmC,mBAAnC,GAAyD,GAAtF;AACA;;AACF,SAAK,YAAL;AACEoB,MAAAA,OAAO,CAACnK,IAAR,CAAa,cAAb,EAA6B,SAASoK,GAAT,GAAe,GAAf,GAAqBrB,WAArB,GAAmC,kBAAnC,GAAwD,GAArF;AACA;;AACF;AAzBF;;AA2BA,UAAQ9D,IAAI,CAAC8B,YAAb;AACE,SAAK,aAAL;AACEoD,MAAAA,OAAO,CAACnK,IAAR,CAAa,YAAb,EAA2B,SAASoK,GAAT,GAAe,GAAf,GAAqBrB,WAArB,GAAmC,WAAnC,GAAiD,GAA5E;AACA;;AACF,SAAK,aAAL;AACEoB,MAAAA,OAAO,CAACnK,IAAR,CAAa,YAAb,EAA2B,SAASoK,GAAT,GAAe,GAAf,GAAqBrB,WAArB,GAAmC,WAAnC,GAAiD,GAA5E;AACA;;AACF,SAAK,YAAL;AACEoB,MAAAA,OAAO,CAACnK,IAAR,CAAa,YAAb,EAA2B,SAASoK,GAAT,GAAe,GAAf,GAAqBrB,WAArB,GAAmC,UAAnC,GAAgD,GAA3E;AACA;;AACF,SAAK,cAAL;AACEoB,MAAAA,OAAO,CAACnK,IAAR,CAAa,YAAb,EAA2B,SAASoK,GAAT,GAAe,GAAf,GAAqBrB,WAArB,GAAmC,YAAnC,GAAkD,GAA7E;AACA;;AACF,SAAK,aAAL;AACEoB,MAAAA,OAAO,CAACnK,IAAR,CAAa,YAAb,EAA2B,SAASoK,GAAT,GAAe,GAAf,GAAqBrB,WAArB,GAAmC,iBAAnC,GAAuD,GAAlF;AACA;;AACF,SAAK,WAAL;AACEoB,MAAAA,OAAO,CAACnK,IAAR,CAAa,YAAb,EAA2B,SAASoK,GAAT,GAAe,GAAf,GAAqBrB,WAArB,GAAmC,eAAnC,GAAqD,GAAhF;AACA;;AACF,SAAK,aAAL;AACEoB,MAAAA,OAAO,CAACnK,IAAR,CAAa,YAAb,EAA2B,SAASoK,GAAT,GAAe,GAAf,GAAqBrB,WAArB,GAAmC,iBAAnC,GAAuD,GAAlF;AACA;;AACF,SAAK,YAAL;AACEoB,MAAAA,OAAO,CAACnK,IAAR,CAAa,YAAb,EAA2B,SAASoK,GAAT,GAAe,GAAf,GAAqBrB,WAArB,GAAmC,gBAAnC,GAAsD,GAAjF;AACA;;AACF;AAzBF;;AA2BA,MAAIxC,KAAK,GAAG,EAAZ;;AACA,MAAI0C,gBAAJ,EAAsB;AACpB1C,IAAAA,KAAK,CAACE,WAAN,GAAoB4B,MAApB;AACD;;AACD9B,EAAAA,KAAK,CAACG,YAAN,GAAqBzB,IAAI,CAACoD,MAA1B;AACA,SAAO9B,KAAP;AACD,CA/OM;;;;;;;;;;;;;;;;;;;;;;;;;;ACvWP;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;;AAEA,IAAMoF,eAAe,GAAG,SAAlBA,eAAkB,CAACC,KAAD,EAAQ5C,KAAR,EAAe6C,WAAf,EAA4BC,aAA5B,EAA8C;AACpElP,EAAAA,6CAAA,CAAS,gCAAT,EAA2CkO,0DAAA,CAAoB9B,KAApB,CAA3C,EAAuE8C,aAAvE;AACA,MAAMG,GAAG,GAAGjD,KAAK,CAACA,KAAN,GAAckD,OAA1B;AACAtP,EAAAA,8CAAA,CAAU,gCAAV,EAA4CqP,GAA5C;;AAEA,MAAMzJ,IAAI,GAAGoJ,KAAK,CAAC7L,MAAN,CAAa,GAAb,EAAkBC,IAAlB,CAAuB,OAAvB,EAAgC,MAAhC,CAAb,CALoE,CAKd;;;AACtD,MAAI,CAACgJ,KAAK,CAACmD,KAAN,EAAL,EAAoB;AAClBvP,IAAAA,6CAAA,CAAS,oBAAT,EAA+BoM,KAA/B;AACD,GAFD,MAEO;AACLpM,IAAAA,6CAAA,CAAS,sBAAT,EAAiCoM,KAAK,CAACmD,KAAN,EAAjC;AACD;;AACD,MAAInD,KAAK,CAACoD,KAAN,GAAcxO,MAAd,GAAuB,CAA3B,EAA8B;AAC5BhB,IAAAA,8CAAA,CAAU,iBAAV,EAA6BoM,KAAK,CAAC/D,IAAN,CAAW+D,KAAK,CAACoD,KAAN,GAAc,CAAd,CAAX,CAA7B;AACD;;AACD,MAAMC,QAAQ,GAAG7J,IAAI,CAACzC,MAAL,CAAY,GAAZ,EAAiBC,IAAjB,CAAsB,OAAtB,EAA+B,UAA/B,CAAjB,CAdoE,CAcP;;AAC7D,MAAMsM,SAAS,GAAG9J,IAAI,CAACzC,MAAL,CAAY,GAAZ,EAAiBC,IAAjB,CAAsB,OAAtB,EAA+B,WAA/B,CAAlB;AACA,MAAM8E,UAAU,GAAGtC,IAAI,CAACzC,MAAL,CAAY,GAAZ,EAAiBC,IAAjB,CAAsB,OAAtB,EAA+B,YAA/B,CAAnB;AACA,MAAMmM,KAAK,GAAG3J,IAAI,CAACzC,MAAL,CAAY,GAAZ,EAAiBC,IAAjB,CAAsB,OAAtB,EAA+B,OAA/B,CAAd,CAjBoE,CAmBpE;AACA;;AACAgJ,EAAAA,KAAK,CAACmD,KAAN,GAAcvN,OAAd,CAAsB,UAAUuK,CAAV,EAAa;AACjC,QAAMxJ,IAAI,GAAGqJ,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,CAAb;;AACA,QAAI,OAAO2C,aAAP,KAAyB,WAA7B,EAA0C;AACxC,UAAMS,IAAI,GAAGlL,IAAI,CAACmL,KAAL,CAAWnL,IAAI,CAACC,SAAL,CAAewK,aAAa,CAACW,WAA7B,CAAX,CAAb,CADwC,CAExC;;AACA7P,MAAAA,6CAAA,CAAS,gCAAT,EAA2CuM,CAA3C,EAA8C,IAA9C,EAAoDoD,IAApD,EAA0DT,aAA1D;AACA9C,MAAAA,KAAK,CAAC0D,OAAN,CAAcZ,aAAa,CAACjM,EAA5B,EAAgC0M,IAAhC;;AACA,UAAI,CAACvD,KAAK,CAACtJ,MAAN,CAAayJ,CAAb,CAAL,EAAsB;AACpBvM,QAAAA,8CAAA,CAAU,gBAAV,EAA4BuM,CAA5B,EAA+B2C,aAAa,CAACjM,EAA7C;AACAmJ,QAAAA,KAAK,CAAC2D,SAAN,CAAgBxD,CAAhB,EAAmB2C,aAAa,CAACjM,EAAjC,EAAqC0M,IAArC;AACD;AACF;;AACD3P,IAAAA,6CAAA,CAAS,sBAAsBuM,CAAtB,GAA0B,IAA1B,GAAiC9H,IAAI,CAACC,SAAL,CAAe0H,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,CAAf,CAA1C;;AACA,QAAIxJ,IAAI,IAAIA,IAAI,CAACiN,WAAjB,EAA8B;AAC5B;AACAhQ,MAAAA,6CAAA,CAAS,oBAAT,EAA+BuM,CAA/B,EAAkCxJ,IAAI,CAACqB,KAAvC,EAA8CgI,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,CAA9C;AACA,UAAM0D,CAAC,GAAGlB,eAAe,CAACQ,KAAD,EAAQxM,IAAI,CAACqJ,KAAb,EAAoB6C,WAApB,EAAiC7C,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,CAAjC,CAAzB;AACA,UAAM2D,KAAK,GAAGD,CAAC,CAACrK,IAAhB;AACAwI,MAAAA,8DAAgB,CAACrL,IAAD,EAAOmN,KAAP,CAAhB;AACAnN,MAAAA,IAAI,CAACyB,IAAL,GAAYyL,CAAC,CAACzL,IAAF,IAAU,CAAtB;AACAxE,MAAAA,6CAAA,CAAS,sBAAT,EAAiCuM,CAAjC,EAAoCxJ,IAApC,EAA0CA,IAAI,CAACqB,KAA/C,EAAsDrB,IAAI,CAAC+B,CAA3D,EAA8D/B,IAAI,CAACgC,CAAnE;AACA6J,MAAAA,mDAAW,CAACsB,KAAD,EAAQnN,IAAR,CAAX;AAEA/C,MAAAA,6CAAA,CAAS,4BAAT,EAAuCkQ,KAAvC,EAA8CnN,IAA9C;AACD,KAXD,MAWO;AACL,UAAIqJ,KAAK,CAACnI,QAAN,CAAesI,CAAf,EAAkBvL,MAAlB,GAA2B,CAA/B,EAAkC;AAChC;AACA;AACAhB,QAAAA,6CAAA,CAAS,sCAAT,EAAiDuM,CAAjD,EAAoDxJ,IAAI,CAACE,EAAzD,EAA6DF,IAA7D,EAAmEqJ,KAAnE;AACApM,QAAAA,6CAAA,CAASuO,sEAAmB,CAACxL,IAAI,CAACE,EAAN,EAAUmJ,KAAV,CAA5B;AACAF,QAAAA,wDAAS,CAACnJ,IAAI,CAACE,EAAN,CAAT,GAAqB;AAAEA,UAAAA,EAAE,EAAEsL,sEAAmB,CAACxL,IAAI,CAACE,EAAN,EAAUmJ,KAAV,CAAzB;AAA2CrJ,UAAAA,IAAI,EAAJA;AAA3C,SAArB,CALgC,CAMhC;AACD,OAPD,MAOO;AACL/C,QAAAA,6CAAA,CAAS,+BAAT,EAA0CuM,CAA1C,EAA6CxJ,IAAI,CAACE,EAAlD,EAAsDF,IAAtD;AACA0L,QAAAA,kDAAU,CAACc,KAAD,EAAQnD,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,CAAR,EAAuB8C,GAAvB,CAAV;AACD;AACF;AACF,GArCD,EArBoE,CA4DpE;AACA;AACA;AACA;;AACAjD,EAAAA,KAAK,CAACoD,KAAN,GAAcxN,OAAd,CAAsB,UAAUgK,CAAV,EAAa;AACjC,QAAM3D,IAAI,GAAG+D,KAAK,CAAC/D,IAAN,CAAW2D,CAAC,CAACO,CAAb,EAAgBP,CAAC,CAACvB,CAAlB,EAAqBuB,CAAC,CAACmE,IAAvB,CAAb;AACAnQ,IAAAA,6CAAA,CAAS,UAAUgM,CAAC,CAACO,CAAZ,GAAgB,MAAhB,GAAyBP,CAAC,CAACvB,CAA3B,GAA+B,IAA/B,GAAsChG,IAAI,CAACC,SAAL,CAAesH,CAAf,CAA/C;AACAhM,IAAAA,6CAAA,CAAS,UAAUgM,CAAC,CAACO,CAAZ,GAAgB,MAAhB,GAAyBP,CAAC,CAACvB,CAA3B,GAA+B,IAAxC,EAA8CuB,CAA9C,EAAiD,GAAjD,EAAsDvH,IAAI,CAACC,SAAL,CAAe0H,KAAK,CAAC/D,IAAN,CAAW2D,CAAX,CAAf,CAAtD,EAHiC,CAKjC;;AACAhM,IAAAA,6CAAA,CAAS,KAAT,EAAgBkM,wDAAhB,EAA2B,MAA3B,EAAmCF,CAAC,CAACO,CAArC,EAAwCP,CAAC,CAACvB,CAA1C,EAA6C,gBAA7C,EAA+DyB,wDAAS,CAACF,CAAC,CAACO,CAAH,CAAxE,EAA+EL,wDAAS,CAACF,CAAC,CAACvB,CAAH,CAAxF;AACArC,IAAAA,uDAAe,CAACF,UAAD,EAAaG,IAAb,CAAf;AACD,GARD;AAUA+D,EAAAA,KAAK,CAACoD,KAAN,GAAcxN,OAAd,CAAsB,UAAUgK,CAAV,EAAa;AACjChM,IAAAA,6CAAA,CAAS,UAAUgM,CAAC,CAACO,CAAZ,GAAgB,MAAhB,GAAyBP,CAAC,CAACvB,CAA3B,GAA+B,IAA/B,GAAsChG,IAAI,CAACC,SAAL,CAAesH,CAAf,CAA/C;AACD,GAFD;AAGAhM,EAAAA,6CAAA,CAAS,+CAAT;AACAA,EAAAA,6CAAA,CAAS,+CAAT;AACAA,EAAAA,6CAAA,CAAS,+CAAT;AACAA,EAAAA,6CAAA,CAASoM,KAAT;AACA6B,EAAAA,mDAAA,CAAa7B,KAAb;AACApM,EAAAA,6CAAA,CAAS,qBAAT,EAAgCkO,0DAAA,CAAoB9B,KAApB,CAAhC,EAlFoE,CAmFpE;;AACA,MAAI5H,IAAI,GAAG,CAAX;AACAgK,EAAAA,uEAAoB,CAACpC,KAAD,CAApB,CAA4BpK,OAA5B,CAAoC,UAAUuK,CAAV,EAAa;AAC/C,QAAMxJ,IAAI,GAAGqJ,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,CAAb;AACAvM,IAAAA,6CAAA,CAAS,cAAcuM,CAAd,GAAkB,IAAlB,GAAyB9H,IAAI,CAACC,SAAL,CAAe0H,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,CAAf,CAAlC;AACAvM,IAAAA,6CAAA,CACE,cAAcuM,CAAd,GAAkB,KAAlB,GAA0BxJ,IAAI,CAAC+B,CADjC,EAEE,MAAM/B,IAAI,CAACgC,CAFb,EAGE,WAHF,EAIEhC,IAAI,CAACqB,KAJP,EAKE,WALF,EAMErB,IAAI,CAACsB,MANP;;AAQA,QAAItB,IAAI,IAAIA,IAAI,CAACiN,WAAjB,EAA8B;AAC5B;AAEAtB,MAAAA,oDAAY,CAAC3L,IAAD,CAAZ;AACD,KAJD,MAIO;AACL;AACA,UAAIqJ,KAAK,CAACnI,QAAN,CAAesI,CAAf,EAAkBvL,MAAlB,GAA2B,CAA/B,EAAkC;AAChC;AACA;AACA2E,QAAAA,wDAAa,CAAC8J,QAAD,EAAW1M,IAAX,CAAb;AACAmJ,QAAAA,wDAAS,CAACnJ,IAAI,CAACE,EAAN,CAAT,CAAmBF,IAAnB,GAA0BA,IAA1B;AACD,OALD,MAKO;AACL2L,QAAAA,oDAAY,CAAC3L,IAAD,CAAZ;AACD;AACF;AACF,GA1BD,EArFoE,CAiHpE;;AACAqJ,EAAAA,KAAK,CAACoD,KAAN,GAAcxN,OAAd,CAAsB,UAAUgK,CAAV,EAAa;AACjC,QAAM3D,IAAI,GAAG+D,KAAK,CAAC/D,IAAN,CAAW2D,CAAX,CAAb;AACAhM,IAAAA,6CAAA,CAAS,UAAUgM,CAAC,CAACO,CAAZ,GAAgB,MAAhB,GAAyBP,CAAC,CAACvB,CAA3B,GAA+B,IAA/B,GAAsChG,IAAI,CAACC,SAAL,CAAe2D,IAAf,CAA/C,EAAqEA,IAArE;AAEA,QAAMsB,KAAK,GAAGsC,kDAAU,CAACyD,SAAD,EAAY1D,CAAZ,EAAe3D,IAAf,EAAqB6D,wDAArB,EAAgC+C,WAAhC,EAA6C7C,KAA7C,CAAxB;AACA1C,IAAAA,yDAAiB,CAACrB,IAAD,EAAOsB,KAAP,CAAjB;AACD,GAND;AAQAyC,EAAAA,KAAK,CAACmD,KAAN,GAAcvN,OAAd,CAAsB,UAAUuK,CAAV,EAAa;AACjC,QAAM8D,CAAC,GAAGjE,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,CAAV;AACAvM,IAAAA,6CAAA,CAASuM,CAAT,EAAY8D,CAAC,CAACC,IAAd,EAAoBD,CAAC,CAAC7L,IAAtB;;AACA,QAAI6L,CAAC,CAACC,IAAF,KAAW,OAAf,EAAwB;AACtB9L,MAAAA,IAAI,GAAG6L,CAAC,CAAC7L,IAAT;AACD;AACF,GAND;AAOA,SAAO;AAAEoB,IAAAA,IAAI,EAAJA,IAAF;AAAQpB,IAAAA,IAAI,EAAJA;AAAR,GAAP;AACD,CAlID;;AAoIO,IAAM+L,MAAM,GAAG,SAATA,MAAS,CAAC3K,IAAD,EAAOwG,KAAP,EAAcoE,OAAd,EAAuBvB,WAAvB,EAAoChM,EAApC,EAA2C;AAC/DkL,EAAAA,oDAAa,CAACvI,IAAD,EAAO4K,OAAP,EAAgBvB,WAAhB,EAA6BhM,EAA7B,CAAb;AACA0L,EAAAA,6CAAU;AACVG,EAAAA,6CAAU;AACVD,EAAAA,gDAAa;AACbR,EAAAA,wDAAa;AAEbrO,EAAAA,6CAAA,CAAS,iBAAT,EAA4BkO,0DAAA,CAAoB9B,KAApB,CAA5B;AACAkC,EAAAA,yEAAsB,CAAClC,KAAD,CAAtB;AACApM,EAAAA,6CAAA,CAAS,cAAT,EAAyBkO,0DAAA,CAAoB9B,KAApB,CAAzB,EAT+D,CAU/D;;AACA2C,EAAAA,eAAe,CAACnJ,IAAD,EAAOwG,KAAP,EAAc6C,WAAd,CAAf;AACD,CAZM,EAcP;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC1KA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA,iEAAe;AACblM,EAAAA,IAAI,EAAJA,2DADa;AAEb0N,EAAAA,MAAM,EAANA,4DAFa;AAGbC,EAAAA,OAAO,EAAPA,6DAHa;AAIbC,EAAAA,OAAO,EAAPA,6DAJa;AAKb9N,EAAAA,IAAI,EAAJA,0DAAIA;AALS,CAAf;;;;;;;;;;;;;;;;ACVA;AAEA;AACA;AACA;AACA;AACA;;AACA,SAASgO,eAAT,CAAyB9N,IAAzB,EAA+B6B,EAA/B,EAAmCM,KAAnC,EAA0C;AACxC,SAAO0L,8DAAgB,CAAC7N,IAAD,EAAO6B,EAAP,EAAWA,EAAX,EAAeM,KAAf,CAAvB;AACD;;AAED,iEAAe2L,eAAf;;;;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA,SAASD,gBAAT,CAA0B7N,IAA1B,EAAgC6B,EAAhC,EAAoCC,EAApC,EAAwCK,KAAxC,EAA+C;AAC7C;AAEA,MAAI4L,EAAE,GAAG/N,IAAI,CAAC+B,CAAd;AACA,MAAIiM,EAAE,GAAGhO,IAAI,CAACgC,CAAd;AAEA,MAAIiM,EAAE,GAAGF,EAAE,GAAG5L,KAAK,CAACJ,CAApB;AACA,MAAImM,EAAE,GAAGF,EAAE,GAAG7L,KAAK,CAACH,CAApB;AAEA,MAAImM,GAAG,GAAG5G,IAAI,CAAC6G,IAAL,CAAUvM,EAAE,GAAGA,EAAL,GAAUqM,EAAV,GAAeA,EAAf,GAAoBpM,EAAE,GAAGA,EAAL,GAAUmM,EAAV,GAAeA,EAA7C,CAAV;AAEA,MAAI3G,EAAE,GAAGC,IAAI,CAACC,GAAL,CAAU3F,EAAE,GAAGC,EAAL,GAAUmM,EAAX,GAAiBE,GAA1B,CAAT;;AACA,MAAIhM,KAAK,CAACJ,CAAN,GAAUgM,EAAd,EAAkB;AAChBzG,IAAAA,EAAE,GAAG,CAACA,EAAN;AACD;;AACD,MAAIG,EAAE,GAAGF,IAAI,CAACC,GAAL,CAAU3F,EAAE,GAAGC,EAAL,GAAUoM,EAAX,GAAiBC,GAA1B,CAAT;;AACA,MAAIhM,KAAK,CAACH,CAAN,GAAUgM,EAAd,EAAkB;AAChBvG,IAAAA,EAAE,GAAG,CAACA,EAAN;AACD;;AAED,SAAO;AAAE1F,IAAAA,CAAC,EAAEgM,EAAE,GAAGzG,EAAV;AAActF,IAAAA,CAAC,EAAEgM,EAAE,GAAGvG;AAAtB,GAAP;AACD;;AAED,iEAAeoG,gBAAf;;;;;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASQ,aAAT,CAAuBC,EAAvB,EAA2BC,EAA3B,EAA+BC,EAA/B,EAAmCC,EAAnC,EAAuC;AACrC;AACA;AAEA,MAAIC,EAAJ,EAAQC,EAAR,EAAYC,EAAZ,EAAgBC,EAAhB,EAAoBC,EAApB,EAAwBC,EAAxB;AACA,MAAIC,EAAJ,EAAQC,EAAR,EAAYC,EAAZ,EAAgBC,EAAhB;AACA,MAAIC,KAAJ,EAAWC,MAAX,EAAmBC,GAAnB;AACA,MAAIvN,CAAJ,EAAOC,CAAP,CAPqC,CASrC;AACA;;AACA0M,EAAAA,EAAE,GAAGH,EAAE,CAACvM,CAAH,GAAOsM,EAAE,CAACtM,CAAf;AACA4M,EAAAA,EAAE,GAAGN,EAAE,CAACvM,CAAH,GAAOwM,EAAE,CAACxM,CAAf;AACA+M,EAAAA,EAAE,GAAGP,EAAE,CAACxM,CAAH,GAAOuM,EAAE,CAACtM,CAAV,GAAcsM,EAAE,CAACvM,CAAH,GAAOwM,EAAE,CAACvM,CAA7B,CAbqC,CAerC;;AACAkN,EAAAA,EAAE,GAAGR,EAAE,GAAGF,EAAE,CAACzM,CAAR,GAAY6M,EAAE,GAAGJ,EAAE,CAACxM,CAApB,GAAwB8M,EAA7B;AACAK,EAAAA,EAAE,GAAGT,EAAE,GAAGD,EAAE,CAAC1M,CAAR,GAAY6M,EAAE,GAAGH,EAAE,CAACzM,CAApB,GAAwB8M,EAA7B,CAjBqC,CAmBrC;AACA;;AACA,MAAII,EAAE,KAAK,CAAP,IAAYC,EAAE,KAAK,CAAnB,IAAwBI,QAAQ,CAACL,EAAD,EAAKC,EAAL,CAApC,EAA8C;AAC5C;AACD,GAvBoC,CAyBrC;;;AACAR,EAAAA,EAAE,GAAGF,EAAE,CAACzM,CAAH,GAAOwM,EAAE,CAACxM,CAAf;AACA6M,EAAAA,EAAE,GAAGL,EAAE,CAACzM,CAAH,GAAO0M,EAAE,CAAC1M,CAAf;AACAgN,EAAAA,EAAE,GAAGN,EAAE,CAAC1M,CAAH,GAAOyM,EAAE,CAACxM,CAAV,GAAcwM,EAAE,CAACzM,CAAH,GAAO0M,EAAE,CAACzM,CAA7B,CA5BqC,CA8BrC;;AACAgN,EAAAA,EAAE,GAAGL,EAAE,GAAGL,EAAE,CAACvM,CAAR,GAAY8M,EAAE,GAAGP,EAAE,CAACtM,CAApB,GAAwB+M,EAA7B;AACAE,EAAAA,EAAE,GAAGN,EAAE,GAAGJ,EAAE,CAACxM,CAAR,GAAY8M,EAAE,GAAGN,EAAE,CAACvM,CAApB,GAAwB+M,EAA7B,CAhCqC,CAkCrC;AACA;AACA;;AACA,MAAIC,EAAE,KAAK,CAAP,IAAYC,EAAE,KAAK,CAAnB,IAAwBM,QAAQ,CAACP,EAAD,EAAKC,EAAL,CAApC,EAA8C;AAC5C;AACD,GAvCoC,CAyCrC;;;AACAG,EAAAA,KAAK,GAAGV,EAAE,GAAGG,EAAL,GAAUF,EAAE,GAAGC,EAAvB;;AACA,MAAIQ,KAAK,KAAK,CAAd,EAAiB;AACf;AACD;;AAEDC,EAAAA,MAAM,GAAG9H,IAAI,CAACC,GAAL,CAAS4H,KAAK,GAAG,CAAjB,CAAT,CA/CqC,CAiDrC;AACA;AACA;;AACAE,EAAAA,GAAG,GAAGV,EAAE,GAAGG,EAAL,GAAUF,EAAE,GAAGC,EAArB;AACA/M,EAAAA,CAAC,GAAGuN,GAAG,GAAG,CAAN,GAAU,CAACA,GAAG,GAAGD,MAAP,IAAiBD,KAA3B,GAAmC,CAACE,GAAG,GAAGD,MAAP,IAAiBD,KAAxD;AAEAE,EAAAA,GAAG,GAAGX,EAAE,GAAGG,EAAL,GAAUJ,EAAE,GAAGK,EAArB;AACA/M,EAAAA,CAAC,GAAGsN,GAAG,GAAG,CAAN,GAAU,CAACA,GAAG,GAAGD,MAAP,IAAiBD,KAA3B,GAAmC,CAACE,GAAG,GAAGD,MAAP,IAAiBD,KAAxD;AAEA,SAAO;AAAErN,IAAAA,CAAC,EAAEA,CAAL;AAAQC,IAAAA,CAAC,EAAEA;AAAX,GAAP;AACD;AAED;AACA;AACA;AACA;;;AACA,SAASuN,QAAT,CAAkBP,EAAlB,EAAsBC,EAAtB,EAA0B;AACxB,SAAOD,EAAE,GAAGC,EAAL,GAAU,CAAjB;AACD;;AAED,iEAAeZ,aAAf;;;;;;;;;;AC7EAmB,MAAM,CAACC,OAAP,GAAiBC,aAAjB;AAEA;AACA;AACA;AACA;;AACA,SAASA,aAAT,CAAuB1P,IAAvB,EAA6BmC,KAA7B,EAAoC;AAClC;AACA,SAAOnC,IAAI,CAACkC,SAAL,CAAeC,KAAf,CAAP;AACD;;;;;;;;;;;;;;;;ACTD;AAEA;AAEA,iEAAewN,gBAAf;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASA,gBAAT,CAA0B3P,IAA1B,EAAgC4P,UAAhC,EAA4CzN,KAA5C,EAAmD;AACjD,MAAI0N,EAAE,GAAG7P,IAAI,CAAC+B,CAAd;AACA,MAAI+N,EAAE,GAAG9P,IAAI,CAACgC,CAAd;AAEA,MAAI+N,aAAa,GAAG,EAApB;AAEA,MAAIC,IAAI,GAAG/F,MAAM,CAACgG,iBAAlB;AACA,MAAIC,IAAI,GAAGjG,MAAM,CAACgG,iBAAlB;;AACA,MAAI,OAAOL,UAAU,CAAC3Q,OAAlB,KAA8B,UAAlC,EAA8C;AAC5C2Q,IAAAA,UAAU,CAAC3Q,OAAX,CAAmB,UAAUkR,KAAV,EAAiB;AAClCH,MAAAA,IAAI,GAAGzI,IAAI,CAAC6I,GAAL,CAASJ,IAAT,EAAeG,KAAK,CAACpO,CAArB,CAAP;AACAmO,MAAAA,IAAI,GAAG3I,IAAI,CAAC6I,GAAL,CAASF,IAAT,EAAeC,KAAK,CAACnO,CAArB,CAAP;AACD,KAHD;AAID,GALD,MAKO;AACLgO,IAAAA,IAAI,GAAGzI,IAAI,CAAC6I,GAAL,CAASJ,IAAT,EAAeJ,UAAU,CAAC7N,CAA1B,CAAP;AACAmO,IAAAA,IAAI,GAAG3I,IAAI,CAAC6I,GAAL,CAASF,IAAT,EAAeN,UAAU,CAAC5N,CAA1B,CAAP;AACD;;AAED,MAAIqO,IAAI,GAAGR,EAAE,GAAG7P,IAAI,CAACqB,KAAL,GAAa,CAAlB,GAAsB2O,IAAjC;AACA,MAAIM,GAAG,GAAGR,EAAE,GAAG9P,IAAI,CAACsB,MAAL,GAAc,CAAnB,GAAuB4O,IAAjC;;AAEA,OAAK,IAAIlS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4R,UAAU,CAAC3R,MAA/B,EAAuCD,CAAC,EAAxC,EAA4C;AAC1C,QAAIsQ,EAAE,GAAGsB,UAAU,CAAC5R,CAAD,CAAnB;AACA,QAAIuQ,EAAE,GAAGqB,UAAU,CAAC5R,CAAC,GAAG4R,UAAU,CAAC3R,MAAX,GAAoB,CAAxB,GAA4BD,CAAC,GAAG,CAAhC,GAAoC,CAArC,CAAnB;AACA,QAAIkE,SAAS,GAAGmM,2DAAa,CAC3BrO,IAD2B,EAE3BmC,KAF2B,EAG3B;AAAEJ,MAAAA,CAAC,EAAEsO,IAAI,GAAG/B,EAAE,CAACvM,CAAf;AAAkBC,MAAAA,CAAC,EAAEsO,GAAG,GAAGhC,EAAE,CAACtM;AAA9B,KAH2B,EAI3B;AAAED,MAAAA,CAAC,EAAEsO,IAAI,GAAG9B,EAAE,CAACxM,CAAf;AAAkBC,MAAAA,CAAC,EAAEsO,GAAG,GAAG/B,EAAE,CAACvM;AAA9B,KAJ2B,CAA7B;;AAMA,QAAIE,SAAJ,EAAe;AACb6N,MAAAA,aAAa,CAACvQ,IAAd,CAAmB0C,SAAnB;AACD;AACF;;AAED,MAAI,CAAC6N,aAAa,CAAC9R,MAAnB,EAA2B;AACzB;AACA,WAAO+B,IAAP;AACD;;AAED,MAAI+P,aAAa,CAAC9R,MAAd,GAAuB,CAA3B,EAA8B;AAC5B;AACA8R,IAAAA,aAAa,CAACQ,IAAd,CAAmB,UAAUxH,CAAV,EAAaZ,CAAb,EAAgB;AACjC,UAAIqI,GAAG,GAAGzH,CAAC,CAAChH,CAAF,GAAMI,KAAK,CAACJ,CAAtB;AACA,UAAI0O,GAAG,GAAG1H,CAAC,CAAC/G,CAAF,GAAMG,KAAK,CAACH,CAAtB;AACA,UAAI0O,KAAK,GAAGnJ,IAAI,CAAC6G,IAAL,CAAUoC,GAAG,GAAGA,GAAN,GAAYC,GAAG,GAAGA,GAA5B,CAAZ;AAEA,UAAIE,GAAG,GAAGxI,CAAC,CAACpG,CAAF,GAAMI,KAAK,CAACJ,CAAtB;AACA,UAAI6O,GAAG,GAAGzI,CAAC,CAACnG,CAAF,GAAMG,KAAK,CAACH,CAAtB;AACA,UAAI6O,KAAK,GAAGtJ,IAAI,CAAC6G,IAAL,CAAUuC,GAAG,GAAGA,GAAN,GAAYC,GAAG,GAAGA,GAA5B,CAAZ;AAEA,aAAOF,KAAK,GAAGG,KAAR,GAAgB,CAAC,CAAjB,GAAqBH,KAAK,KAAKG,KAAV,GAAkB,CAAlB,GAAsB,CAAlD;AACD,KAVD;AAWD;;AACD,SAAOd,aAAa,CAAC,CAAD,CAApB;AACD;;;;;;;;;;;;;;;ACrED,IAAMrQ,aAAa,GAAG,SAAhBA,aAAgB,CAACM,IAAD,EAAOmC,KAAP,EAAiB;AACrC,MAAIJ,CAAC,GAAG/B,IAAI,CAAC+B,CAAb;AACA,MAAIC,CAAC,GAAGhC,IAAI,CAACgC,CAAb,CAFqC,CAIrC;AACA;;AACA,MAAIsF,EAAE,GAAGnF,KAAK,CAACJ,CAAN,GAAUA,CAAnB;AACA,MAAI0F,EAAE,GAAGtF,KAAK,CAACH,CAAN,GAAUA,CAAnB;AACA,MAAI0F,CAAC,GAAG1H,IAAI,CAACqB,KAAL,GAAa,CAArB;AACA,MAAIsG,CAAC,GAAG3H,IAAI,CAACsB,MAAL,GAAc,CAAtB;AAEA,MAAIwP,EAAJ,EAAQC,EAAR;;AACA,MAAIxJ,IAAI,CAACC,GAAL,CAASC,EAAT,IAAeC,CAAf,GAAmBH,IAAI,CAACC,GAAL,CAASF,EAAT,IAAeK,CAAtC,EAAyC;AACvC;AACA,QAAIF,EAAE,GAAG,CAAT,EAAY;AACVE,MAAAA,CAAC,GAAG,CAACA,CAAL;AACD;;AACDmJ,IAAAA,EAAE,GAAGrJ,EAAE,KAAK,CAAP,GAAW,CAAX,GAAgBE,CAAC,GAAGL,EAAL,GAAWG,EAA/B;AACAsJ,IAAAA,EAAE,GAAGpJ,CAAL;AACD,GAPD,MAOO;AACL;AACA,QAAIL,EAAE,GAAG,CAAT,EAAY;AACVI,MAAAA,CAAC,GAAG,CAACA,CAAL;AACD;;AACDoJ,IAAAA,EAAE,GAAGpJ,CAAL;AACAqJ,IAAAA,EAAE,GAAGzJ,EAAE,KAAK,CAAP,GAAW,CAAX,GAAgBI,CAAC,GAAGD,EAAL,GAAWH,EAA/B;AACD;;AAED,SAAO;AAAEvF,IAAAA,CAAC,EAAEA,CAAC,GAAG+O,EAAT;AAAa9O,IAAAA,CAAC,EAAEA,CAAC,GAAG+O;AAApB,GAAP;AACD,CA7BD;;AA+BA,iEAAerR,aAAf;;;;;;;;;;;;;;;;AC/BA;CAIA;;AACA,IAAM0L,aAAa,GAAG,SAAhBA,aAAgB,CAACvI,IAAD,EAAOmO,WAAP,EAAoBzD,IAApB,EAA0BrN,EAA1B,EAAiC;AACrD8Q,EAAAA,WAAW,CAAC/R,OAAZ,CAAoB,UAACgS,UAAD,EAAgB;AAClCxD,IAAAA,OAAO,CAACwD,UAAD,CAAP,CAAoBpO,IAApB,EAA0B0K,IAA1B,EAAgCrN,EAAhC;AACD,GAFD;AAGD,CAJD;;AAMA,IAAMgR,SAAS,GAAG,SAAZA,SAAY,CAACrO,IAAD,EAAO0K,IAAP,EAAarN,EAAb,EAAoB;AACpCjD,EAAAA,8CAAA,CAAU,qBAAV,EAAiCiD,EAAjC;AACA2C,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGckN,IAAI,GAAG,iBAHrB,EAIGlN,IAJH,CAIQ,OAJR,EAIiB,sBAAsBkN,IAJvC,EAKGlN,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,GAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,GARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGmC,MAVH,CAUU,MAVV,EAWGnC,IAXH,CAWQ,GAXR,EAWa,oBAXb;AAaAwC,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGckN,IAAI,GAAG,eAHrB,EAIGlN,IAJH,CAIQ,OAJR,EAIiB,sBAAsBkN,IAJvC,EAKGlN,IALH,CAKQ,MALR,EAKgB,EALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,EAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,EARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGmC,MAVH,CAUU,MAVV,EAWGnC,IAXH,CAWQ,GAXR,EAWa,oBAXb,EAfoC,CA0BA;AACrC,CA3BD;;AA6BA,IAAM8Q,WAAW,GAAG,SAAdA,WAAc,CAACtO,IAAD,EAAO0K,IAAP,EAAgB;AAClC1K,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGckN,IAAI,GAAG,mBAHrB,EAIGlN,IAJH,CAIQ,OAJR,EAIiB,wBAAwBkN,IAJzC,EAKGlN,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,GAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,GARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGmC,MAVH,CAUU,MAVV,EAWGnC,IAXH,CAWQ,GAXR,EAWa,0BAXb;AAaAwC,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGckN,IAAI,GAAG,iBAHrB,EAIGlN,IAJH,CAIQ,OAJR,EAIiB,wBAAwBkN,IAJzC,EAKGlN,IALH,CAKQ,MALR,EAKgB,EALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,EAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,EARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGmC,MAVH,CAUU,MAVV,EAWGnC,IAXH,CAWQ,GAXR,EAWa,0BAXb;AAYD,CA1BD;;AA2BA,IAAM+Q,WAAW,GAAG,SAAdA,WAAc,CAACvO,IAAD,EAAO0K,IAAP,EAAgB;AAClC1K,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGckN,IAAI,GAAG,mBAHrB,EAIGlN,IAJH,CAIQ,OAJR,EAIiB,wBAAwBkN,IAJzC,EAKGlN,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,GAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,GARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGmC,MAVH,CAUU,MAVV,EAWGnC,IAXH,CAWQ,GAXR,EAWa,0BAXb;AAaAwC,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGckN,IAAI,GAAG,iBAHrB,EAIGlN,IAJH,CAIQ,OAJR,EAIiB,wBAAwBkN,IAJzC,EAKGlN,IALH,CAKQ,MALR,EAKgB,EALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,EAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,EARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGmC,MAVH,CAUU,MAVV,EAWGnC,IAXH,CAWQ,GAXR,EAWa,0BAXb;AAYD,CA1BD;;AA2BA,IAAMgR,UAAU,GAAG,SAAbA,UAAa,CAACxO,IAAD,EAAO0K,IAAP,EAAgB;AACjC1K,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGckN,IAAI,GAAG,kBAHrB,EAIGlN,IAJH,CAIQ,OAJR,EAIiB,uBAAuBkN,IAJxC,EAKGlN,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,GAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,GARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGmC,MAVH,CAUU,MAVV,EAWGnC,IAXH,CAWQ,GAXR,EAWa,yBAXb;AAaAwC,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGckN,IAAI,GAAG,gBAHrB,EAIGlN,IAJH,CAIQ,OAJR,EAIiB,uBAAuBkN,IAJxC,EAKGlN,IALH,CAKQ,MALR,EAKgB,EALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,EAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,EARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGmC,MAVH,CAUU,MAVV,EAWGnC,IAXH,CAWQ,GAXR,EAWa,2BAXb;AAYD,CA1BD;;AA2BA,IAAM8B,KAAK,GAAG,SAARA,KAAQ,CAACU,IAAD,EAAO0K,IAAP,EAAgB;AAC5B1K,EAAAA,IAAI,CACDL,MADH,CACU,QADV,EAEGnC,IAFH,CAEQ,IAFR,EAEckN,IAAI,GAAG,WAFrB,EAGGlN,IAHH,CAGQ,OAHR,EAGiB,YAAYkN,IAH7B,EAIGlN,IAJH,CAIQ,SAJR,EAImB,WAJnB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,gBAPvB,EAQGA,IARH,CAQQ,aARR,EAQuB,EARvB,EASGA,IATH,CASQ,cATR,EASwB,EATxB,EAUGA,IAVH,CAUQ,QAVR,EAUkB,MAVlB,EAWGmC,MAXH,CAWU,MAXV,EAYGnC,IAZH,CAYQ,GAZR,EAYa,uBAZb,EAaGA,IAbH,CAaQ,OAbR,EAaiB,iBAbjB,EAcGuB,KAdH,CAcS,cAdT,EAcyB,CAdzB,EAeGA,KAfH,CAeS,kBAfT,EAe6B,KAf7B;AAgBAiB,EAAAA,IAAI,CACDL,MADH,CACU,QADV,EAEGnC,IAFH,CAEQ,IAFR,EAEckN,IAAI,GAAG,aAFrB,EAGGlN,IAHH,CAGQ,OAHR,EAGiB,YAAYkN,IAH7B,EAIGlN,IAJH,CAIQ,SAJR,EAImB,WAJnB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,gBAPvB,EAQGA,IARH,CAQQ,aARR,EAQuB,EARvB,EASGA,IATH,CASQ,cATR,EASwB,EATxB,EAUGA,IAVH,CAUQ,QAVR,EAUkB,MAVlB,EAWGmC,MAXH,CAWU,MAXV,EAYGnC,IAZH,CAYQ,GAZR,EAYa,wBAZb,EAaGA,IAbH,CAaQ,OAbR,EAaiB,iBAbjB,EAcGuB,KAdH,CAcS,cAdT,EAcyB,CAdzB,EAeGA,KAfH,CAeS,kBAfT,EAe6B,KAf7B;AAgBD,CAjCD;;AAkCA,IAAM8L,MAAM,GAAG,SAATA,MAAS,CAAC7K,IAAD,EAAO0K,IAAP,EAAgB;AAC7B1K,EAAAA,IAAI,CACDL,MADH,CACU,QADV,EAEGnC,IAFH,CAEQ,IAFR,EAEckN,IAAI,GAAG,YAFrB,EAGGlN,IAHH,CAGQ,OAHR,EAGiB,YAAYkN,IAH7B,EAIGlN,IAJH,CAIQ,SAJR,EAImB,WAJnB,EAKGA,IALH,CAKQ,MALR,EAKgB,EALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,gBAPvB,EAQGA,IARH,CAQQ,aARR,EAQuB,EARvB,EASGA,IATH,CASQ,cATR,EASwB,EATxB,EAUGA,IAVH,CAUQ,QAVR,EAUkB,MAVlB,EAWGmC,MAXH,CAWU,QAXV,EAYGnC,IAZH,CAYQ,IAZR,EAYc,GAZd,EAaGA,IAbH,CAaQ,IAbR,EAac,GAbd,EAcGA,IAdH,CAcQ,GAdR,EAca,GAdb,EAeGA,IAfH,CAeQ,OAfR,EAeiB,iBAfjB,EAgBGuB,KAhBH,CAgBS,cAhBT,EAgByB,CAhBzB,EAiBGA,KAjBH,CAiBS,kBAjBT,EAiB6B,KAjB7B;AAmBAiB,EAAAA,IAAI,CACDL,MADH,CACU,QADV,EAEGnC,IAFH,CAEQ,IAFR,EAEckN,IAAI,GAAG,cAFrB,EAGGlN,IAHH,CAGQ,OAHR,EAGiB,YAAYkN,IAH7B,EAIGlN,IAJH,CAIQ,SAJR,EAImB,WAJnB,EAKGA,IALH,CAKQ,MALR,EAKgB,CAAC,CALjB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,gBAPvB,EAQGA,IARH,CAQQ,aARR,EAQuB,EARvB,EASGA,IATH,CASQ,cATR,EASwB,EATxB,EAUGA,IAVH,CAUQ,QAVR,EAUkB,MAVlB,EAWGmC,MAXH,CAWU,QAXV,EAYGnC,IAZH,CAYQ,IAZR,EAYc,GAZd,EAaGA,IAbH,CAaQ,IAbR,EAac,GAbd,EAcGA,IAdH,CAcQ,GAdR,EAca,GAdb,EAeGA,IAfH,CAeQ,OAfR,EAeiB,iBAfjB,EAgBGuB,KAhBH,CAgBS,cAhBT,EAgByB,CAhBzB,EAiBGA,KAjBH,CAiBS,kBAjBT,EAiB6B,KAjB7B;AAkBD,CAtCD;;AAuCA,IAAM0P,KAAK,GAAG,SAARA,KAAQ,CAACzO,IAAD,EAAO0K,IAAP,EAAgB;AAC5B1K,EAAAA,IAAI,CACDL,MADH,CACU,QADV,EAEGnC,IAFH,CAEQ,IAFR,EAEckN,IAAI,GAAG,WAFrB,EAGGlN,IAHH,CAGQ,OAHR,EAGiB,kBAAkBkN,IAHnC,EAIGlN,IAJH,CAIQ,SAJR,EAImB,WAJnB,EAKGA,IALH,CAKQ,MALR,EAKgB,EALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,GANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,gBAPvB,EAQGA,IARH,CAQQ,aARR,EAQuB,EARvB,EASGA,IATH,CASQ,cATR,EASwB,EATxB,EAUGA,IAVH,CAUQ,QAVR,EAUkB,MAVlB,EAWGmC,MAXH,CAWU,MAXV,EAYE;AAZF,GAaGnC,IAbH,CAaQ,GAbR,EAaa,2BAbb,EAcGA,IAdH,CAcQ,OAdR,EAciB,iBAdjB,EAeGuB,KAfH,CAeS,cAfT,EAeyB,CAfzB,EAgBGA,KAhBH,CAgBS,kBAhBT,EAgB6B,KAhB7B;AAkBAiB,EAAAA,IAAI,CACDL,MADH,CACU,QADV,EAEGnC,IAFH,CAEQ,IAFR,EAEckN,IAAI,GAAG,aAFrB,EAGGlN,IAHH,CAGQ,OAHR,EAGiB,kBAAkBkN,IAHnC,EAIGlN,IAJH,CAIQ,SAJR,EAImB,WAJnB,EAKGA,IALH,CAKQ,MALR,EAKgB,CAAC,CALjB,EAMGA,IANH,CAMQ,MANR,EAMgB,GANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,gBAPvB,EAQGA,IARH,CAQQ,aARR,EAQuB,EARvB,EASGA,IATH,CASQ,cATR,EASwB,EATxB,EAUGA,IAVH,CAUQ,QAVR,EAUkB,MAVlB,EAWGmC,MAXH,CAWU,MAXV,EAYE;AAZF,GAaGnC,IAbH,CAaQ,GAbR,EAaa,2BAbb,EAcGA,IAdH,CAcQ,OAdR,EAciB,iBAdjB,EAeGuB,KAfH,CAeS,cAfT,EAeyB,CAfzB,EAgBGA,KAhBH,CAgBS,kBAhBT,EAgB6B,KAhB7B;AAiBD,CApCD;;AAqCA,IAAM2P,IAAI,GAAG,SAAPA,IAAO,CAAC1O,IAAD,EAAO0K,IAAP,EAAgB;AAC3B1K,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGckN,IAAI,GAAG,UAHrB,EAIGlN,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,aARR,EAQuB,aARvB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGmC,MAVH,CAUU,MAVV,EAWGnC,IAXH,CAWQ,GAXR,EAWa,2BAXb;AAYD,CAbD,EAeA;;;AACA,IAAMoN,OAAO,GAAG;AACdyD,EAAAA,SAAS,EAATA,SADc;AAEdC,EAAAA,WAAW,EAAXA,WAFc;AAGdC,EAAAA,WAAW,EAAXA,WAHc;AAIdC,EAAAA,UAAU,EAAVA,UAJc;AAKdlP,EAAAA,KAAK,EAALA,KALc;AAMduL,EAAAA,MAAM,EAANA,MANc;AAOd4D,EAAAA,KAAK,EAALA,KAPc;AAQdC,EAAAA,IAAI,EAAJA;AARc,CAAhB;AAUA,iEAAenG,aAAf;;;;;;;;;;;;;;;;;;;;;;;;;ACjQA;AACA;AACA;AAEO,IAAIjC,SAAS,GAAG,EAAhB;AACP,IAAIqI,UAAU,GAAG,EAAjB;AACA,IAAIC,OAAO,GAAG,EAAd;AAEO,IAAMxO,KAAK,GAAG,SAARA,KAAQ,GAAM;AACzBuO,EAAAA,UAAU,GAAG,EAAb;AACAC,EAAAA,OAAO,GAAG,EAAV;AACAtI,EAAAA,SAAS,GAAG,EAAZ;AACD,CAJM;;AAMP,IAAMuI,WAAW,GAAG,SAAdA,WAAc,CAACxR,EAAD,EAAKyR,WAAL,EAAqB;AACvC;AAEA1U,EAAAA,8CAAA,CACE,gBADF,EAEE0U,WAFF,EAGE,GAHF,EAIEzR,EAJF,EAKE,KALF,EAMEsR,UAAU,CAACG,WAAD,CAAV,CAAwBvS,OAAxB,CAAgCc,EAAhC,KAAuC,CANzC;AAQA,MAAIsR,UAAU,CAACG,WAAD,CAAV,CAAwBvS,OAAxB,CAAgCc,EAAhC,KAAuC,CAA3C,EAA8C,OAAO,IAAP;AAE9C,SAAO,KAAP;AACD,CAdD;;AAgBA,IAAM0R,aAAa,GAAG,SAAhBA,aAAgB,CAACtM,IAAD,EAAOuM,SAAP,EAAqB;AACzC5U,EAAAA,6CAAA,CAAS,gBAAT,EAA2B4U,SAA3B,EAAsC,MAAtC,EAA8CL,UAAU,CAACK,SAAD,CAAxD;AACA5U,EAAAA,6CAAA,CAAS,UAAT,EAAqBqI,IAArB,EAFyC,CAGzC;;AACA,MAAIA,IAAI,CAACkE,CAAL,KAAWqI,SAAf,EAA0B,OAAO,KAAP;AAC1B,MAAIvM,IAAI,CAACoC,CAAL,KAAWmK,SAAf,EAA0B,OAAO,KAAP;;AAE1B,MAAI,CAACL,UAAU,CAACK,SAAD,CAAf,EAA4B;AAC1B5U,IAAAA,8CAAA,CAAU,QAAV,EAAoB4U,SAApB,EAA+B,oBAA/B;AACA,WAAO,KAAP;AACD;;AACD5U,EAAAA,6CAAA,CAAS,OAAT;AAEA,MAAIuU,UAAU,CAACK,SAAD,CAAV,CAAsBzS,OAAtB,CAA8BkG,IAAI,CAACkE,CAAnC,KAAyC,CAA7C,EAAgD,OAAO,IAAP;AAChD,MAAIkI,WAAW,CAACpM,IAAI,CAACkE,CAAN,EAASqI,SAAT,CAAf,EAAoC,OAAO,IAAP;AACpC,MAAIH,WAAW,CAACpM,IAAI,CAACoC,CAAN,EAASmK,SAAT,CAAf,EAAoC,OAAO,IAAP;AACpC,MAAIL,UAAU,CAACK,SAAD,CAAV,CAAsBzS,OAAtB,CAA8BkG,IAAI,CAACoC,CAAnC,KAAyC,CAA7C,EAAgD,OAAO,IAAP;AAEhD,SAAO,KAAP;AACD,CAnBD;;AAqBA,IAAMoK,IAAI,GAAG,SAAPA,IAAO,CAACD,SAAD,EAAYxI,KAAZ,EAAmB0I,QAAnB,EAA6BC,MAA7B,EAAwC;AACnD/U,EAAAA,6CAAA,CACE,sBADF,EAEE4U,SAFF,EAGE,MAHF,EAIEG,MAJF,EAKE,MALF,EAME3I,KAAK,CAACrJ,IAAN,CAAW6R,SAAX,CANF,EAOEG,MAPF;AASA,MAAMxF,KAAK,GAAGnD,KAAK,CAACnI,QAAN,CAAe2Q,SAAf,KAA6B,EAA3C,CAVmD,CAYnD;;AACA,MAAIA,SAAS,KAAKG,MAAlB,EAA0B;AACxBxF,IAAAA,KAAK,CAAChN,IAAN,CAAWqS,SAAX;AACD;;AAED5U,EAAAA,6CAAA,CAAS,2BAAT,EAAsC4U,SAAtC,EAAiD,OAAjD,EAA0DrF,KAA1D;AAEAA,EAAAA,KAAK,CAACvN,OAAN,CAAc,UAACe,IAAD,EAAU;AACtB,QAAIqJ,KAAK,CAACnI,QAAN,CAAelB,IAAf,EAAqB/B,MAArB,GAA8B,CAAlC,EAAqC;AACnC6T,MAAAA,IAAI,CAAC9R,IAAD,EAAOqJ,KAAP,EAAc0I,QAAd,EAAwBC,MAAxB,CAAJ;AACD,KAFD,MAEO;AACL,UAAMpF,IAAI,GAAGvD,KAAK,CAACrJ,IAAN,CAAWA,IAAX,CAAb;AACA/C,MAAAA,6CAAA,CAAS,KAAT,EAAgB+C,IAAhB,EAAsB,MAAtB,EAA8BgS,MAA9B,EAAsC,eAAtC,EAAuDH,SAAvD,EAFK,CAE8D;;AACnEE,MAAAA,QAAQ,CAAChF,OAAT,CAAiB/M,IAAjB,EAAuB4M,IAAvB;;AACA,UAAIoF,MAAM,KAAK3I,KAAK,CAACtJ,MAAN,CAAaC,IAAb,CAAf,EAAmC;AACjC/C,QAAAA,6CAAA,CAAS,gBAAT,EAA2B+C,IAA3B,EAAiCqJ,KAAK,CAACtJ,MAAN,CAAaC,IAAb,CAAjC;AACA+R,QAAAA,QAAQ,CAAC/E,SAAT,CAAmBhN,IAAnB,EAAyBqJ,KAAK,CAACtJ,MAAN,CAAaC,IAAb,CAAzB;AACD;;AAED,UAAI6R,SAAS,KAAKG,MAAd,IAAwBhS,IAAI,KAAK6R,SAArC,EAAgD;AAC9C5U,QAAAA,8CAAA,CAAU,gBAAV,EAA4B+C,IAA5B,EAAkC6R,SAAlC;AACAE,QAAAA,QAAQ,CAAC/E,SAAT,CAAmBhN,IAAnB,EAAyB6R,SAAzB;AACD,OAHD,MAGO;AACL5U,QAAAA,6CAAA,CAAS,UAAT,EAAqB4U,SAArB,EAAgC,MAAhC,EAAwCG,MAAxC,EAAgD,MAAhD,EAAwD3I,KAAK,CAACrJ,IAAN,CAAW6R,SAAX,CAAxD,EAA+EG,MAA/E;AACA/U,QAAAA,8CAAA,CACE,8BADF,EAEE+C,IAFF,EAGE,kBAHF,EAIE6R,SAAS,KAAKG,MAJhB,EAKE,kBALF,EAMEhS,IAAI,KAAK6R,SANX;AAQD;;AACD,UAAMpF,KAAK,GAAGpD,KAAK,CAACoD,KAAN,CAAYzM,IAAZ,CAAd;AACA/C,MAAAA,8CAAA,CAAU,eAAV,EAA2BwP,KAA3B;AACAA,MAAAA,KAAK,CAACxN,OAAN,CAAc,UAACqG,IAAD,EAAU;AACtBrI,QAAAA,6CAAA,CAAS,MAAT,EAAiBqI,IAAjB;AACA,YAAMsH,IAAI,GAAGvD,KAAK,CAAC/D,IAAN,CAAWA,IAAI,CAACkE,CAAhB,EAAmBlE,IAAI,CAACoC,CAAxB,EAA2BpC,IAAI,CAAC8H,IAAhC,CAAb;AACAnQ,QAAAA,6CAAA,CAAS,WAAT,EAAsB2P,IAAtB,EAA4BoF,MAA5B;;AACA,YAAI;AACF;AACA,cAAIJ,aAAa,CAACtM,IAAD,EAAO0M,MAAP,CAAjB,EAAiC;AAC/B/U,YAAAA,6CAAA,CAAS,aAAT,EAAwBqI,IAAI,CAACkE,CAA7B,EAAgClE,IAAI,CAACoC,CAArC,EAAwCkF,IAAxC,EAA8CtH,IAAI,CAAC8H,IAAnD;AACA2E,YAAAA,QAAQ,CAACE,OAAT,CAAiB3M,IAAI,CAACkE,CAAtB,EAAyBlE,IAAI,CAACoC,CAA9B,EAAiCkF,IAAjC,EAAuCtH,IAAI,CAAC8H,IAA5C;AACAnQ,YAAAA,6CAAA,CAAS,iBAAT,EAA4B8U,QAAQ,CAACtF,KAAT,EAA5B,EAA8CsF,QAAQ,CAACzM,IAAT,CAAcyM,QAAQ,CAACtF,KAAT,GAAiB,CAAjB,CAAd,CAA9C;AACD,WAJD,MAIO;AACLxP,YAAAA,6CAAA,CACE,wBADF,EAEEqI,IAAI,CAACkE,CAFP,EAGE,KAHF,EAIElE,IAAI,CAACoC,CAJP,EAKE,WALF,EAMEsK,MANF,EAOE,aAPF,EAQEH,SARF;AAUD;AACF,SAlBD,CAkBE,OAAO5I,CAAP,EAAU;AACVhM,UAAAA,8CAAA,CAAUgM,CAAV;AACD;AACF,OAzBD;AA0BD;;AACDhM,IAAAA,8CAAA,CAAU,eAAV,EAA2B+C,IAA3B;AACAqJ,IAAAA,KAAK,CAAC8I,UAAN,CAAiBnS,IAAjB;AACD,GAzDD;AA0DD,CA7ED;;AA8EO,IAAMoS,iBAAiB,GAAG,SAApBA,iBAAoB,CAAClS,EAAD,EAAKmJ,KAAL,EAAe;AAC9C;AACA,MAAMnI,QAAQ,GAAGmI,KAAK,CAACnI,QAAN,CAAehB,EAAf,CAAjB;AACA,MAAIkI,GAAG,GAAG,GAAGiK,MAAH,CAAUnR,QAAV,CAAV;;AAEA,OAAK,IAAIlD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkD,QAAQ,CAACjD,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;AACxCyT,IAAAA,OAAO,CAACvQ,QAAQ,CAAClD,CAAD,CAAT,CAAP,GAAuBkC,EAAvB;AACAkI,IAAAA,GAAG,GAAGA,GAAG,CAACiK,MAAJ,CAAWD,iBAAiB,CAAClR,QAAQ,CAAClD,CAAD,CAAT,EAAcqL,KAAd,CAA5B,CAAN;AACD;;AAED,SAAOjB,GAAP;AACD,CAXM;AAaP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMkK,QAAQ,GAAG,SAAXA,QAAW,CAACjJ,KAAD,EAAW;AACjC,MAAMoD,KAAK,GAAGpD,KAAK,CAACoD,KAAN,EAAd;AACAxP,EAAAA,8CAAA,CAAU,SAAV,EAAqBwP,KAArB;;AACA,OAAK,IAAIzO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyO,KAAK,CAACxO,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,QAAIqL,KAAK,CAACnI,QAAN,CAAeuL,KAAK,CAACzO,CAAD,CAAL,CAASwL,CAAxB,EAA2BvL,MAA3B,GAAoC,CAAxC,EAA2C;AACzChB,MAAAA,8CAAA,CAAU,WAAV,EAAuBwP,KAAK,CAACzO,CAAD,CAAL,CAASwL,CAAhC,EAAmC,kDAAnC;AACA,aAAO,KAAP;AACD;;AACD,QAAIH,KAAK,CAACnI,QAAN,CAAeuL,KAAK,CAACzO,CAAD,CAAL,CAAS0J,CAAxB,EAA2BzJ,MAA3B,GAAoC,CAAxC,EAA2C;AACzChB,MAAAA,8CAAA,CAAU,WAAV,EAAuBwP,KAAK,CAACzO,CAAD,CAAL,CAAS0J,CAAhC,EAAmC,kDAAnC;AACA,aAAO,KAAP;AACD;AACF;;AACD,SAAO,IAAP;AACD,CAdM;AAgBP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM8D,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACtL,EAAD,EAAKmJ,KAAL,EAAe;AAChD;AACApM,EAAAA,8CAAA,CAAU,WAAV,EAAuBiD,EAAvB,EAFgD,CAGhD;;AACA,MAAMgB,QAAQ,GAAGmI,KAAK,CAACnI,QAAN,CAAehB,EAAf,CAAjB,CAJgD,CAIX;;AACrCjD,EAAAA,8CAAA,CAAU,2BAAV,EAAuCiD,EAAvC,EAA2CgB,QAA3C;;AACA,MAAIA,QAAQ,CAACjD,MAAT,GAAkB,CAAtB,EAAyB;AACvBhB,IAAAA,8CAAA,CAAU,sBAAV,EAAkCiD,EAAlC;AACA,WAAOA,EAAP;AACD;;AACD,OAAK,IAAIlC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkD,QAAQ,CAACjD,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;AACxC,QAAMuU,GAAG,GAAG/G,mBAAmB,CAACtK,QAAQ,CAAClD,CAAD,CAAT,EAAcqL,KAAd,CAA/B;;AACA,QAAIkJ,GAAJ,EAAS;AACPtV,MAAAA,8CAAA,CAAU,uBAAV,EAAmCiD,EAAnC,EAAuC,MAAvC,EAA+CqS,GAA/C;AACA,aAAOA,GAAP;AACD;AACF;AACF,CAjBM;;AAmBP,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACtS,EAAD,EAAQ;AAC1B,MAAI,CAACiJ,SAAS,CAACjJ,EAAD,CAAd,EAAoB;AAClB,WAAOA,EAAP;AACD,GAHyB,CAI1B;;;AACA,MAAI,CAACiJ,SAAS,CAACjJ,EAAD,CAAT,CAAcuS,mBAAnB,EAAwC;AACtC,WAAOvS,EAAP;AACD,GAPyB,CAS1B;;;AACA,MAAIiJ,SAAS,CAACjJ,EAAD,CAAb,EAAmB;AACjB,WAAOiJ,SAAS,CAACjJ,EAAD,CAAT,CAAcA,EAArB;AACD;;AACD,SAAOA,EAAP;AACD,CAdD;;AAgBO,IAAMqL,sBAAsB,GAAG,SAAzBA,sBAAyB,CAAClC,KAAD,EAAQqJ,KAAR,EAAkB;AACtD,MAAI,CAACrJ,KAAD,IAAUqJ,KAAK,GAAG,EAAtB,EAA0B;AACxBzV,IAAAA,8CAAA,CAAU,uBAAV;AACA;AACD,GAHD,MAGO;AACLA,IAAAA,8CAAA,CAAU,mBAAV;AACD,GANqD,CAOtD;AACA;;;AACAoM,EAAAA,KAAK,CAACmD,KAAN,GAAcvN,OAAd,CAAsB,UAAUiB,EAAV,EAAc;AAClC,QAAMgB,QAAQ,GAAGmI,KAAK,CAACnI,QAAN,CAAehB,EAAf,CAAjB;;AACA,QAAIgB,QAAQ,CAACjD,MAAT,GAAkB,CAAtB,EAAyB;AACvBhB,MAAAA,6CAAA,CACE,oBADF,EAEEiD,EAFF,EAGE,4BAHF,EAIEsL,mBAAmB,CAACtL,EAAD,EAAKmJ,KAAL,CAJrB;AAMAmI,MAAAA,UAAU,CAACtR,EAAD,CAAV,GAAiBkS,iBAAiB,CAAClS,EAAD,EAAKmJ,KAAL,CAAlC;AACAF,MAAAA,SAAS,CAACjJ,EAAD,CAAT,GAAgB;AAAEA,QAAAA,EAAE,EAAEsL,mBAAmB,CAACtL,EAAD,EAAKmJ,KAAL,CAAzB;AAAsCyD,QAAAA,WAAW,EAAEzD,KAAK,CAACrJ,IAAN,CAAWE,EAAX;AAAnD,OAAhB;AACD;AACF,GAZD,EATsD,CAuBtD;;AACAmJ,EAAAA,KAAK,CAACmD,KAAN,GAAcvN,OAAd,CAAsB,UAAUiB,EAAV,EAAc;AAClC,QAAMgB,QAAQ,GAAGmI,KAAK,CAACnI,QAAN,CAAehB,EAAf,CAAjB;AACA,QAAMuM,KAAK,GAAGpD,KAAK,CAACoD,KAAN,EAAd;;AACA,QAAIvL,QAAQ,CAACjD,MAAT,GAAkB,CAAtB,EAAyB;AACvBhB,MAAAA,8CAAA,CAAU,oBAAV,EAAgCiD,EAAhC,EAAoCsR,UAApC;AACA/E,MAAAA,KAAK,CAACxN,OAAN,CAAc,UAACqG,IAAD,EAAU;AACtB;AAEA;AACA,YAAIA,IAAI,CAACkE,CAAL,KAAWtJ,EAAX,IAAiBoF,IAAI,CAACoC,CAAL,KAAWxH,EAAhC,EAAoC;AAClC;AACA;AAEA,cAAMyS,EAAE,GAAGjB,WAAW,CAACpM,IAAI,CAACkE,CAAN,EAAStJ,EAAT,CAAtB;AACA,cAAM0S,EAAE,GAAGlB,WAAW,CAACpM,IAAI,CAACoC,CAAN,EAASxH,EAAT,CAAtB,CALkC,CAOlC;;AACA,cAAIyS,EAAE,GAAGC,EAAT,EAAa;AACX3V,YAAAA,6CAAA,CAAS,QAAT,EAAmBqI,IAAnB,EAAyB,kBAAzB,EAA6CpF,EAA7C;AACAjD,YAAAA,6CAAA,CAAS,oBAAT,EAA+BiD,EAA/B,EAAmC,IAAnC,EAAyCsR,UAAU,CAACtR,EAAD,CAAnD;AACAiJ,YAAAA,SAAS,CAACjJ,EAAD,CAAT,CAAcuS,mBAAd,GAAoC,IAApC;AACD;AACF;AACF,OAlBD;AAmBD,KArBD,MAqBO;AACLxV,MAAAA,8CAAA,CAAU,gBAAV,EAA4BiD,EAA5B,EAAgCsR,UAAhC;AACD;AACF,GA3BD,EAxBsD,CAqDtD;AACA;;AACAnI,EAAAA,KAAK,CAACoD,KAAN,GAAcxN,OAAd,CAAsB,UAAUgK,CAAV,EAAa;AACjC,QAAM3D,IAAI,GAAG+D,KAAK,CAAC/D,IAAN,CAAW2D,CAAX,CAAb;AACAhM,IAAAA,6CAAA,CAAS,UAAUgM,CAAC,CAACO,CAAZ,GAAgB,MAAhB,GAAyBP,CAAC,CAACvB,CAA3B,GAA+B,IAA/B,GAAsChG,IAAI,CAACC,SAAL,CAAesH,CAAf,CAA/C;AACAhM,IAAAA,6CAAA,CAAS,UAAUgM,CAAC,CAACO,CAAZ,GAAgB,MAAhB,GAAyBP,CAAC,CAACvB,CAA3B,GAA+B,IAA/B,GAAsChG,IAAI,CAACC,SAAL,CAAe0H,KAAK,CAAC/D,IAAN,CAAW2D,CAAX,CAAf,CAA/C;AAEA,QAAIO,CAAC,GAAGP,CAAC,CAACO,CAAV;AACA,QAAI9B,CAAC,GAAGuB,CAAC,CAACvB,CAAV,CANiC,CAOjC;;AACAzK,IAAAA,6CAAA,CACE,SADF,EAEEkM,SAFF,EAGE,MAHF,EAIEF,CAAC,CAACO,CAJJ,EAKEP,CAAC,CAACvB,CALJ,EAME,gBANF,EAOEyB,SAAS,CAACF,CAAC,CAACO,CAAH,CAPX,EAQE,OARF,EASEL,SAAS,CAACF,CAAC,CAACvB,CAAH,CATX;;AAWA,QAAIyB,SAAS,CAACF,CAAC,CAACO,CAAH,CAAT,IAAkBL,SAAS,CAACF,CAAC,CAACvB,CAAH,CAA/B,EAAsC;AACpCzK,MAAAA,6CAAA,CAAS,mCAAT,EAA8CgM,CAAC,CAACO,CAAhD,EAAmDP,CAAC,CAACvB,CAArD,EAAwDuB,CAAC,CAACmE,IAA1D;AACA5D,MAAAA,CAAC,GAAGgJ,WAAW,CAACvJ,CAAC,CAACO,CAAH,CAAf;AACA9B,MAAAA,CAAC,GAAG8K,WAAW,CAACvJ,CAAC,CAACvB,CAAH,CAAf;AACA2B,MAAAA,KAAK,CAACwJ,UAAN,CAAiB5J,CAAC,CAACO,CAAnB,EAAsBP,CAAC,CAACvB,CAAxB,EAA2BuB,CAAC,CAACmE,IAA7B;AACA,UAAI5D,CAAC,KAAKP,CAAC,CAACO,CAAZ,EAAelE,IAAI,CAACuE,WAAL,GAAmBZ,CAAC,CAACO,CAArB;AACf,UAAI9B,CAAC,KAAKuB,CAAC,CAACvB,CAAZ,EAAepC,IAAI,CAACsE,SAAL,GAAiBX,CAAC,CAACvB,CAAnB;AACfzK,MAAAA,6CAAA,CAAS,wBAAT,EAAmCuM,CAAnC,EAAsC9B,CAAtC,EAAyCuB,CAAC,CAACmE,IAA3C;AACA/D,MAAAA,KAAK,CAAC4I,OAAN,CAAczI,CAAd,EAAiB9B,CAAjB,EAAoBpC,IAApB,EAA0B2D,CAAC,CAACmE,IAA5B;AACD;AACF,GA7BD;AA8BAnQ,EAAAA,6CAAA,CAAS,gBAAT,EAA2BkO,0DAAA,CAAoB9B,KAApB,CAA3B;AACAyJ,EAAAA,SAAS,CAACzJ,KAAD,EAAQ,CAAR,CAAT;AAEApM,EAAAA,8CAAA,CAAUkM,SAAV,EAxFsD,CA0FtD;AACA;AACA;AACA;AACA;AACA;AACD,CAhGM;AAkGA,IAAM2J,SAAS,GAAG,SAAZA,SAAY,CAACzJ,KAAD,EAAQqJ,KAAR,EAAkB;AACzCzV,EAAAA,6CAAA,CAAS,cAAT,EAAyByV,KAAzB,EAAgCvH,0DAAA,CAAoB9B,KAApB,CAAhC,EAA4DA,KAAK,CAACnI,QAAN,CAAe,GAAf,CAA5D;;AACA,MAAIwR,KAAK,GAAG,EAAZ,EAAgB;AACdzV,IAAAA,8CAAA,CAAU,aAAV;AACA;AACD,GALwC,CAMzC;AACA;AACA;;;AACA,MAAIuP,KAAK,GAAGnD,KAAK,CAACmD,KAAN,EAAZ;AACA,MAAIuG,WAAW,GAAG,KAAlB;;AACA,OAAK,IAAI/U,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwO,KAAK,CAACvO,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,QAAMgC,IAAI,GAAGwM,KAAK,CAACxO,CAAD,CAAlB;AACA,QAAMkD,QAAQ,GAAGmI,KAAK,CAACnI,QAAN,CAAelB,IAAf,CAAjB;AACA+S,IAAAA,WAAW,GAAGA,WAAW,IAAI7R,QAAQ,CAACjD,MAAT,GAAkB,CAA/C;AACD;;AAED,MAAI,CAAC8U,WAAL,EAAkB;AAChB9V,IAAAA,8CAAA,CAAU,4BAAV,EAAwCoM,KAAK,CAACmD,KAAN,EAAxC;AACA;AACD,GApBwC,CAqBzC;AACA;;;AACAvP,EAAAA,8CAAA,CAAU,UAAV,EAAsBuP,KAAtB,EAA6BkG,KAA7B;;AACA,OAAK,IAAI1U,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGwO,KAAK,CAACvO,MAA1B,EAAkCD,EAAC,EAAnC,EAAuC;AACrC,QAAMgC,KAAI,GAAGwM,KAAK,CAACxO,EAAD,CAAlB;AAEAf,IAAAA,8CAAA,CACE,iBADF,EAEE+C,KAFF,EAGEmJ,SAHF,EAIEA,SAAS,CAACnJ,KAAD,CAAT,IAAmB,CAACmJ,SAAS,CAACnJ,KAAD,CAAT,CAAgByS,mBAJtC,EAKE,CAACpJ,KAAK,CAACtJ,MAAN,CAAaC,KAAb,CALH,EAMEqJ,KAAK,CAACrJ,IAAN,CAAWA,KAAX,CANF,EAOEqJ,KAAK,CAACnI,QAAN,CAAe,GAAf,CAPF,EAQE,SARF,EASEwR,KATF,EAHqC,CAcrC;AACA;;AACA,QAAI,CAACvJ,SAAS,CAACnJ,KAAD,CAAd,EAAsB;AACpB;AACA/C,MAAAA,8CAAA,CAAU,eAAV,EAA2B+C,KAA3B,EAAiC0S,KAAjC,EAFoB,CAGpB;AACD,KAJD,MAIO,IACL,CAACvJ,SAAS,CAACnJ,KAAD,CAAT,CAAgByS,mBAAjB,IACA;AACApJ,IAAAA,KAAK,CAACnI,QAAN,CAAelB,KAAf,CAFA,IAGAqJ,KAAK,CAACnI,QAAN,CAAelB,KAAf,EAAqB/B,MAArB,GAA8B,CAJzB,EAKL;AACAhB,MAAAA,6CAAA,CACE,0EADF,EAEE+C,KAFF,EAGE0S,KAHF;AAMA,UAAMM,aAAa,GAAG3J,KAAK,CAACA,KAAN,EAAtB;AACA,UAAIiD,GAAG,GAAG0G,aAAa,CAACzG,OAAd,KAA0B,IAA1B,GAAiC,IAAjC,GAAwC,IAAlD;;AACA,UAAIpD,SAAS,CAACnJ,KAAD,CAAb,EAAqB;AACnB,YAAImJ,SAAS,CAACnJ,KAAD,CAAT,CAAgB8M,WAAhB,IAA+B3D,SAAS,CAACnJ,KAAD,CAAT,CAAgB8M,WAAhB,CAA4BR,GAA/D,EAAoE;AAClEA,UAAAA,GAAG,GAAGnD,SAAS,CAACnJ,KAAD,CAAT,CAAgB8M,WAAhB,CAA4BR,GAAlC;AACArP,UAAAA,6CAAA,CAAS,YAAT,EAAuBkM,SAAS,CAACnJ,KAAD,CAAT,CAAgB8M,WAAhB,CAA4BR,GAAnD,EAAwDA,GAAxD;AACD;AACF;;AAED,UAAM2G,YAAY,GAAG,IAAI9H,uDAAJ,CAAmB;AACtCgI,QAAAA,UAAU,EAAE,IAD0B;AAEtCC,QAAAA,QAAQ,EAAE;AAF4B,OAAnB,EAIlBC,QAJkB,CAIT;AACR9G,QAAAA,OAAO,EAAED,GADD;AACM;AACdgH,QAAAA,OAAO,EAAE,EAFD;AAGRC,QAAAA,OAAO,EAAE,EAHD;AAIRC,QAAAA,OAAO,EAAE,CAJD;AAKRC,QAAAA,OAAO,EAAE;AALD,OAJS,EAWlBC,mBAXkB,CAWE,YAAY;AAC/B,eAAO,EAAP;AACD,OAbkB,CAArB;AAeAzW,MAAAA,6CAAA,CAAS,uBAAT,EAAkCkO,0DAAA,CAAoB9B,KAApB,CAAlC;AACAyI,MAAAA,IAAI,CAAC9R,KAAD,EAAOqJ,KAAP,EAAc4J,YAAd,EAA4BjT,KAA5B,CAAJ;AACAqJ,MAAAA,KAAK,CAAC0D,OAAN,CAAc/M,KAAd,EAAoB;AAClBiN,QAAAA,WAAW,EAAE,IADK;AAElB/M,QAAAA,EAAE,EAAEF,KAFc;AAGlB8M,QAAAA,WAAW,EAAE3D,SAAS,CAACnJ,KAAD,CAAT,CAAgB8M,WAHX;AAIlBpM,QAAAA,SAAS,EAAEyI,SAAS,CAACnJ,KAAD,CAAT,CAAgBU,SAJT;AAKlB2I,QAAAA,KAAK,EAAE4J;AALW,OAApB;AAOAhW,MAAAA,6CAAA,CAAS,8BAAT,EAAyC+C,KAAzC,EAA+C,GAA/C,EAAoDmL,0DAAA,CAAoB8H,YAApB,CAApD;AACAhW,MAAAA,8CAAA,CAAU,sBAAV,EAAkCkO,0DAAA,CAAoB9B,KAApB,CAAlC;AACD,KA/CM,MA+CA;AACLpM,MAAAA,6CAAA,CACE,aADF,EAEE+C,KAFF,EAGE,mDAHF,EAIE,CAACmJ,SAAS,CAACnJ,KAAD,CAAT,CAAgByS,mBAJnB,EAKE,cALF,EAME,CAACpJ,KAAK,CAACtJ,MAAN,CAAaC,KAAb,CANH,EAOE,YAPF,EAQEqJ,KAAK,CAACnI,QAAN,CAAelB,KAAf,KAAwBqJ,KAAK,CAACnI,QAAN,CAAelB,KAAf,EAAqB/B,MAArB,GAA8B,CARxD,EASEoL,KAAK,CAACnI,QAAN,CAAe,GAAf,CATF,EAUEwR,KAVF;AAYAzV,MAAAA,8CAAA,CAAUkM,SAAV;AACD;AACF;;AAEDqD,EAAAA,KAAK,GAAGnD,KAAK,CAACmD,KAAN,EAAR;AACAvP,EAAAA,6CAAA,CAAS,mBAAT,EAA8BuP,KAA9B;;AACA,OAAK,IAAIxO,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAGwO,KAAK,CAACvO,MAA1B,EAAkCD,GAAC,EAAnC,EAAuC;AACrC,QAAMgC,MAAI,GAAGwM,KAAK,CAACxO,GAAD,CAAlB;AACA,QAAM4O,IAAI,GAAGvD,KAAK,CAACrJ,IAAN,CAAWA,MAAX,CAAb;AACA/C,IAAAA,6CAAA,CAAS,iBAAT,EAA4B+C,MAA5B,EAAkC4M,IAAlC;;AACA,QAAIA,IAAI,CAACK,WAAT,EAAsB;AACpB6F,MAAAA,SAAS,CAAClG,IAAI,CAACvD,KAAN,EAAaqJ,KAAK,GAAG,CAArB,CAAT;AACD;AACF;AACF,CAtHM;;AAwHP,IAAMiB,MAAM,GAAG,SAATA,MAAS,CAACtK,KAAD,EAAQmD,KAAR,EAAkB;AAC/B,MAAIA,KAAK,CAACvO,MAAN,KAAiB,CAArB,EAAwB,OAAO,EAAP;AACxB,MAAI2V,MAAM,GAAGvW,MAAM,CAACwW,MAAP,CAAcrH,KAAd,CAAb;AACAA,EAAAA,KAAK,CAACvN,OAAN,CAAc,UAACe,IAAD,EAAU;AACtB,QAAMkB,QAAQ,GAAGmI,KAAK,CAACnI,QAAN,CAAelB,IAAf,CAAjB;AACA,QAAM8T,MAAM,GAAGH,MAAM,CAACtK,KAAD,EAAQnI,QAAR,CAArB;AACA0S,IAAAA,MAAM,GAAGA,MAAM,CAACvB,MAAP,CAAcyB,MAAd,CAAT;AACD,GAJD;AAMA,SAAOF,MAAP;AACD,CAVD;;AAYO,IAAMnI,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACpC,KAAD;AAAA,SAAWsK,MAAM,CAACtK,KAAD,EAAQA,KAAK,CAACnI,QAAN,EAAR,CAAjB;AAAA,CAA7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnbP;CACiC;;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMiT,QAAQ,GAAG,SAAXA,QAAW,CAACpU,MAAD,EAASC,IAAT,EAAkB;AACjC,qBAA2B+T,yDAAW,CAAChU,MAAD,EAASC,IAAT,EAAeY,SAAf,EAA0B,IAA1B,CAAtC;AAAA,MAAQT,QAAR,gBAAQA,QAAR;AAAA,MAAkBU,IAAlB,gBAAkBA,IAAlB;;AAEA,MAAM6G,CAAC,GAAG7G,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACuB,OAA5B;AACA,MAAMoG,CAAC,GAAG9G,IAAI,CAACS,MAAL,GAActB,IAAI,CAACuB,OAA7B;AACA,MAAM4C,CAAC,GAAGuD,CAAC,GAAGC,CAAd;AACA,MAAMe,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAEoC,CAAC,GAAG,CAAT;AAAYnC,IAAAA,CAAC,EAAE;AAAf,GADa,EAEb;AAAED,IAAAA,CAAC,EAAEoC,CAAL;AAAQnC,IAAAA,CAAC,EAAE,CAACmC,CAAD,GAAK;AAAhB,GAFa,EAGb;AAAEpC,IAAAA,CAAC,EAAEoC,CAAC,GAAG,CAAT;AAAYnC,IAAAA,CAAC,EAAE,CAACmC;AAAhB,GAHa,EAIb;AAAEpC,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE,CAACmC,CAAD,GAAK;AAAhB,GAJa,CAAf;AAOAlH,EAAAA,6CAAA,CAAS,wBAAT;AAEA,MAAMmX,YAAY,GAAGJ,gEAAkB,CAAC7T,QAAD,EAAWgE,CAAX,EAAcA,CAAd,EAAiBuE,MAAjB,CAAvC;AACA0L,EAAAA,YAAY,CAAC/T,IAAb,CAAkB,OAAlB,EAA2BL,IAAI,CAAC4B,KAAhC;AACAyJ,EAAAA,8DAAgB,CAACrL,IAAD,EAAOoU,YAAP,CAAhB;;AAEApU,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChClF,IAAAA,6CAAA,CAAS,kBAAT;AACA,WAAOiF,mEAAA,CAAkBlC,IAAlB,EAAwB0I,MAAxB,EAAgCvG,KAAhC,CAAP;AACD,GAHD;;AAKA,SAAOhC,QAAP;AACD,CAzBD;;AA2BA,IAAMkU,MAAM,GAAG,gBAACtU,MAAD,EAASC,IAAT,EAAkB;AAC/B,MAAMG,QAAQ,GAAGJ,MAAM,CACpBK,MADc,CACP,GADO,EAEdC,IAFc,CAET,OAFS,EAEA,cAFA,EAGdA,IAHc,CAGT,IAHS,EAGHL,IAAI,CAACsU,KAAL,IAActU,IAAI,CAACE,EAHhB,CAAjB;AAKA,MAAMiE,CAAC,GAAG,EAAV;AACA,MAAMuE,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAEmC,CAAC,GAAG;AAAf,GADa,EAEb;AAAEpC,IAAAA,CAAC,EAAEoC,CAAC,GAAG,CAAT;AAAYnC,IAAAA,CAAC,EAAE;AAAf,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE,CAACmC,CAAD,GAAK;AAAhB,GAHa,EAIb;AAAEpC,IAAAA,CAAC,EAAE,CAACoC,CAAD,GAAK,CAAV;AAAanC,IAAAA,CAAC,EAAE;AAAhB,GAJa,CAAf;AAOA,MAAMqS,MAAM,GAAGlU,QAAQ,CAACC,MAAT,CAAgB,SAAhB,EAA2B,cAA3B,EAA2CC,IAA3C,CACb,QADa,EAEbqI,MAAM,CACH6L,GADH,CACO,UAAUrW,CAAV,EAAa;AAChB,WAAOA,CAAC,CAAC6D,CAAF,GAAM,GAAN,GAAY7D,CAAC,CAAC8D,CAArB;AACD,GAHH,EAIGwS,IAJH,CAIQ,GAJR,CAFa,CAAf,CAd+B,CAsB/B;;AACAH,EAAAA,MAAM,CAAChU,IAAP,CAAY,OAAZ,EAAqB,aAArB,EAAoCA,IAApC,CAAyC,GAAzC,EAA8C,CAA9C,EAAiDA,IAAjD,CAAsD,OAAtD,EAA+D,EAA/D,EAAmEA,IAAnE,CAAwE,QAAxE,EAAkF,EAAlF;AACAL,EAAAA,IAAI,CAACqB,KAAL,GAAa,EAAb;AACArB,EAAAA,IAAI,CAACsB,MAAL,GAAc,EAAd;;AAEAtB,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOD,kEAAA,CAAiBlC,IAAjB,EAAuB,EAAvB,EAA2BmC,KAA3B,CAAP;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CAhCD;;AAkCA,IAAMsU,OAAO,GAAG,SAAVA,OAAU,CAAC1U,MAAD,EAASC,IAAT,EAAkB;AAChC,sBAA2B+T,yDAAW,CAAChU,MAAD,EAASC,IAAT,EAAeY,SAAf,EAA0B,IAA1B,CAAtC;AAAA,MAAQT,QAAR,iBAAQA,QAAR;AAAA,MAAkBU,IAAlB,iBAAkBA,IAAlB;;AAEA,MAAM6T,CAAC,GAAG,CAAV;AACA,MAAM/M,CAAC,GAAG9G,IAAI,CAACS,MAAL,GAActB,IAAI,CAACuB,OAA7B;AACA,MAAMoT,CAAC,GAAGhN,CAAC,GAAG+M,CAAd;AACA,MAAMhN,CAAC,GAAG7G,IAAI,CAACQ,KAAL,GAAa,IAAIsT,CAAjB,GAAqB3U,IAAI,CAACuB,OAApC;AACA,MAAMmH,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAE4S,CAAL;AAAQ3S,IAAAA,CAAC,EAAE;AAAX,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAGiN,CAAT;AAAY3S,IAAAA,CAAC,EAAE;AAAf,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE2F,CAAL;AAAQ1F,IAAAA,CAAC,EAAE,CAAC2F,CAAD,GAAK;AAAhB,GAHa,EAIb;AAAE5F,IAAAA,CAAC,EAAE2F,CAAC,GAAGiN,CAAT;AAAY3S,IAAAA,CAAC,EAAE,CAAC2F;AAAhB,GAJa,EAKb;AAAE5F,IAAAA,CAAC,EAAE4S,CAAL;AAAQ3S,IAAAA,CAAC,EAAE,CAAC2F;AAAZ,GALa,EAMb;AAAE5F,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE,CAAC2F,CAAD,GAAK;AAAhB,GANa,CAAf;AASA,MAAMiN,GAAG,GAAGZ,gEAAkB,CAAC7T,QAAD,EAAWuH,CAAX,EAAcC,CAAd,EAAiBe,MAAjB,CAA9B;AACAkM,EAAAA,GAAG,CAACvU,IAAJ,CAAS,OAAT,EAAkBL,IAAI,CAAC4B,KAAvB;AACAyJ,EAAAA,8DAAgB,CAACrL,IAAD,EAAO4U,GAAP,CAAhB;;AAEA5U,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOD,mEAAA,CAAkBlC,IAAlB,EAAwB0I,MAAxB,EAAgCvG,KAAhC,CAAP;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CAzBD;;AA2BA,IAAM0U,mBAAmB,GAAG,SAAtBA,mBAAsB,CAAC9U,MAAD,EAASC,IAAT,EAAkB;AAC5C,sBAA2B+T,yDAAW,CAAChU,MAAD,EAASC,IAAT,EAAeY,SAAf,EAA0B,IAA1B,CAAtC;AAAA,MAAQT,QAAR,iBAAQA,QAAR;AAAA,MAAkBU,IAAlB,iBAAkBA,IAAlB;;AAEA,MAAM6G,CAAC,GAAG7G,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACuB,OAA5B;AACA,MAAMoG,CAAC,GAAG9G,IAAI,CAACS,MAAL,GAActB,IAAI,CAACuB,OAA7B;AACA,MAAMmH,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAE,CAAC4F,CAAD,GAAK,CAAV;AAAa3F,IAAAA,CAAC,EAAE;AAAhB,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE2F,CAAL;AAAQ1F,IAAAA,CAAC,EAAE;AAAX,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE2F,CAAL;AAAQ1F,IAAAA,CAAC,EAAE,CAAC2F;AAAZ,GAHa,EAIb;AAAE5F,IAAAA,CAAC,EAAE,CAAC4F,CAAD,GAAK,CAAV;AAAa3F,IAAAA,CAAC,EAAE,CAAC2F;AAAjB,GAJa,EAKb;AAAE5F,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE,CAAC2F,CAAD,GAAK;AAAhB,GALa,CAAf;AAQA,MAAMvE,EAAE,GAAG4Q,gEAAkB,CAAC7T,QAAD,EAAWuH,CAAX,EAAcC,CAAd,EAAiBe,MAAjB,CAA7B;AACAtF,EAAAA,EAAE,CAAC/C,IAAH,CAAQ,OAAR,EAAiBL,IAAI,CAAC4B,KAAtB;AAEA5B,EAAAA,IAAI,CAACqB,KAAL,GAAaqG,CAAC,GAAGC,CAAjB;AACA3H,EAAAA,IAAI,CAACsB,MAAL,GAAcqG,CAAd;;AAEA3H,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOD,mEAAA,CAAkBlC,IAAlB,EAAwB0I,MAAxB,EAAgCvG,KAAhC,CAAP;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CAxBD;;AA0BA,IAAM2U,UAAU,GAAG,SAAbA,UAAa,CAAC/U,MAAD,EAASC,IAAT,EAAkB;AACnC,sBAA2B+T,yDAAW,CAAChU,MAAD,EAASC,IAAT,EAAeY,SAAf,EAA0B,IAA1B,CAAtC;AAAA,MAAQT,QAAR,iBAAQA,QAAR;AAAA,MAAkBU,IAAlB,iBAAkBA,IAAlB;;AAEA,MAAM6G,CAAC,GAAG7G,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACuB,OAA5B;AACA,MAAMoG,CAAC,GAAG9G,IAAI,CAACS,MAAL,GAActB,IAAI,CAACuB,OAA7B;AACA,MAAMmH,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAG,CAAC,CAAD,GAAK4F,CAAN,GAAW,CAAhB;AAAmB3F,IAAAA,CAAC,EAAE;AAAtB,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB3F,IAAAA,CAAC,EAAE;AAAnB,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAI,IAAIC,CAAL,GAAU,CAAnB;AAAsB3F,IAAAA,CAAC,EAAE,CAAC2F;AAA1B,GAHa,EAIb;AAAE5F,IAAAA,CAAC,EAAE4F,CAAC,GAAG,CAAT;AAAY3F,IAAAA,CAAC,EAAE,CAAC2F;AAAhB,GAJa,CAAf;AAOA,MAAMvE,EAAE,GAAG4Q,gEAAkB,CAAC7T,QAAD,EAAWuH,CAAX,EAAcC,CAAd,EAAiBe,MAAjB,CAA7B;AACAtF,EAAAA,EAAE,CAAC/C,IAAH,CAAQ,OAAR,EAAiBL,IAAI,CAAC4B,KAAtB;AACAyJ,EAAAA,8DAAgB,CAACrL,IAAD,EAAOoD,EAAP,CAAhB;;AAEApD,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOD,mEAAA,CAAkBlC,IAAlB,EAAwB0I,MAAxB,EAAgCvG,KAAhC,CAAP;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CArBD;;AAuBA,IAAM4U,SAAS,GAAG,SAAZA,SAAY,CAAChV,MAAD,EAASC,IAAT,EAAkB;AAClC,sBAA2B+T,yDAAW,CAAChU,MAAD,EAASC,IAAT,EAAeY,SAAf,EAA0B,IAA1B,CAAtC;AAAA,MAAQT,QAAR,iBAAQA,QAAR;AAAA,MAAkBU,IAAlB,iBAAkBA,IAAlB;;AAEA,MAAM6G,CAAC,GAAG7G,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACuB,OAA5B;AACA,MAAMoG,CAAC,GAAG9G,IAAI,CAACS,MAAL,GAActB,IAAI,CAACuB,OAA7B;AACA,MAAMmH,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAG,IAAI4F,CAAL,GAAU,CAAf;AAAkB3F,IAAAA,CAAC,EAAE;AAArB,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB3F,IAAAA,CAAC,EAAE;AAAnB,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAI,IAAIC,CAAL,GAAU,CAAnB;AAAsB3F,IAAAA,CAAC,EAAE,CAAC2F;AAA1B,GAHa,EAIb;AAAE5F,IAAAA,CAAC,EAAE,CAAC4F,CAAD,GAAK,CAAV;AAAa3F,IAAAA,CAAC,EAAE,CAAC2F;AAAjB,GAJa,CAAf;AAOA,MAAMvE,EAAE,GAAG4Q,gEAAkB,CAAC7T,QAAD,EAAWuH,CAAX,EAAcC,CAAd,EAAiBe,MAAjB,CAA7B;AACAtF,EAAAA,EAAE,CAAC/C,IAAH,CAAQ,OAAR,EAAiBL,IAAI,CAAC4B,KAAtB;AACAyJ,EAAAA,8DAAgB,CAACrL,IAAD,EAAOoD,EAAP,CAAhB;;AAEApD,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOD,mEAAA,CAAkBlC,IAAlB,EAAwB0I,MAAxB,EAAgCvG,KAAhC,CAAP;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CArBD;;AAuBA,IAAM6U,SAAS,GAAG,SAAZA,SAAY,CAACjV,MAAD,EAASC,IAAT,EAAkB;AAClC,sBAA2B+T,yDAAW,CAAChU,MAAD,EAASC,IAAT,EAAeY,SAAf,EAA0B,IAA1B,CAAtC;AAAA,MAAQT,QAAR,iBAAQA,QAAR;AAAA,MAAkBU,IAAlB,iBAAkBA,IAAlB;;AAEA,MAAM6G,CAAC,GAAG7G,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACuB,OAA5B;AACA,MAAMoG,CAAC,GAAG9G,IAAI,CAACS,MAAL,GAActB,IAAI,CAACuB,OAA7B;AACA,MAAMmH,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAG,CAAC,CAAD,GAAK4F,CAAN,GAAW,CAAhB;AAAmB3F,IAAAA,CAAC,EAAE;AAAtB,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAI,IAAIC,CAAL,GAAU,CAAnB;AAAsB3F,IAAAA,CAAC,EAAE;AAAzB,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB3F,IAAAA,CAAC,EAAE,CAAC2F;AAApB,GAHa,EAIb;AAAE5F,IAAAA,CAAC,EAAE4F,CAAC,GAAG,CAAT;AAAY3F,IAAAA,CAAC,EAAE,CAAC2F;AAAhB,GAJa,CAAf;AAOA,MAAMvE,EAAE,GAAG4Q,gEAAkB,CAAC7T,QAAD,EAAWuH,CAAX,EAAcC,CAAd,EAAiBe,MAAjB,CAA7B;AACAtF,EAAAA,EAAE,CAAC/C,IAAH,CAAQ,OAAR,EAAiBL,IAAI,CAAC4B,KAAtB;AACAyJ,EAAAA,8DAAgB,CAACrL,IAAD,EAAOoD,EAAP,CAAhB;;AAEApD,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOD,mEAAA,CAAkBlC,IAAlB,EAAwB0I,MAAxB,EAAgCvG,KAAhC,CAAP;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CArBD;;AAuBA,IAAM8U,aAAa,GAAG,SAAhBA,aAAgB,CAAClV,MAAD,EAASC,IAAT,EAAkB;AACtC,sBAA2B+T,yDAAW,CAAChU,MAAD,EAASC,IAAT,EAAeY,SAAf,EAA0B,IAA1B,CAAtC;AAAA,MAAQT,QAAR,iBAAQA,QAAR;AAAA,MAAkBU,IAAlB,iBAAkBA,IAAlB;;AAEA,MAAM6G,CAAC,GAAG7G,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACuB,OAA5B;AACA,MAAMoG,CAAC,GAAG9G,IAAI,CAACS,MAAL,GAActB,IAAI,CAACuB,OAA7B;AACA,MAAMmH,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAE4F,CAAC,GAAG,CAAT;AAAY3F,IAAAA,CAAC,EAAE;AAAf,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB3F,IAAAA,CAAC,EAAE;AAAnB,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAI,IAAIC,CAAL,GAAU,CAAnB;AAAsB3F,IAAAA,CAAC,EAAE,CAAC2F;AAA1B,GAHa,EAIb;AAAE5F,IAAAA,CAAC,EAAG,CAAC,CAAD,GAAK4F,CAAN,GAAW,CAAhB;AAAmB3F,IAAAA,CAAC,EAAE,CAAC2F;AAAvB,GAJa,CAAf;AAOA,MAAMvE,EAAE,GAAG4Q,gEAAkB,CAAC7T,QAAD,EAAWuH,CAAX,EAAcC,CAAd,EAAiBe,MAAjB,CAA7B;AACAtF,EAAAA,EAAE,CAAC/C,IAAH,CAAQ,OAAR,EAAiBL,IAAI,CAAC4B,KAAtB;AACAyJ,EAAAA,8DAAgB,CAACrL,IAAD,EAAOoD,EAAP,CAAhB;;AAEApD,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOD,mEAAA,CAAkBlC,IAAlB,EAAwB0I,MAAxB,EAAgCvG,KAAhC,CAAP;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CArBD;;AAuBA,IAAM+U,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACnV,MAAD,EAASC,IAAT,EAAkB;AAC7C,sBAA2B+T,yDAAW,CAAChU,MAAD,EAASC,IAAT,EAAeY,SAAf,EAA0B,IAA1B,CAAtC;AAAA,MAAQT,QAAR,iBAAQA,QAAR;AAAA,MAAkBU,IAAlB,iBAAkBA,IAAlB;;AAEA,MAAM6G,CAAC,GAAG7G,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACuB,OAA5B;AACA,MAAMoG,CAAC,GAAG9G,IAAI,CAACS,MAAL,GAActB,IAAI,CAACuB,OAA7B;AACA,MAAMmH,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE;AAAX,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB3F,IAAAA,CAAC,EAAE;AAAnB,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE2F,CAAL;AAAQ1F,IAAAA,CAAC,EAAE,CAAC2F,CAAD,GAAK;AAAhB,GAHa,EAIb;AAAE5F,IAAAA,CAAC,EAAE2F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB3F,IAAAA,CAAC,EAAE,CAAC2F;AAApB,GAJa,EAKb;AAAE5F,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE,CAAC2F;AAAZ,GALa,CAAf;AAQA,MAAMvE,EAAE,GAAG4Q,gEAAkB,CAAC7T,QAAD,EAAWuH,CAAX,EAAcC,CAAd,EAAiBe,MAAjB,CAA7B;AACAtF,EAAAA,EAAE,CAAC/C,IAAH,CAAQ,OAAR,EAAiBL,IAAI,CAAC4B,KAAtB;AACAyJ,EAAAA,8DAAgB,CAACrL,IAAD,EAAOoD,EAAP,CAAhB;;AAEApD,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOD,mEAAA,CAAkBlC,IAAlB,EAAwB0I,MAAxB,EAAgCvG,KAAhC,CAAP;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CAtBD;;AAwBA,IAAMgV,QAAQ,GAAG,SAAXA,QAAW,CAACpV,MAAD,EAASC,IAAT,EAAkB;AACjC,sBAA2B+T,yDAAW,CAAChU,MAAD,EAASC,IAAT,EAAeY,SAAf,EAA0B,IAA1B,CAAtC;AAAA,MAAQT,QAAR,iBAAQA,QAAR;AAAA,MAAkBU,IAAlB,iBAAkBA,IAAlB;;AAEA,MAAM6G,CAAC,GAAG7G,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACuB,OAA5B;AACA,MAAMM,EAAE,GAAG6F,CAAC,GAAG,CAAf;AACA,MAAM5F,EAAE,GAAGD,EAAE,IAAI,MAAM6F,CAAC,GAAG,EAAd,CAAb;AACA,MAAMC,CAAC,GAAG9G,IAAI,CAACS,MAAL,GAAcQ,EAAd,GAAmB9B,IAAI,CAACuB,OAAlC;AAEA,MAAMuB,KAAK,GACT,SACAhB,EADA,GAEA,KAFA,GAGAD,EAHA,GAIA,GAJA,GAKAC,EALA,GAMA,SANA,GAOA4F,CAPA,GAQA,OARA,GASA7F,EATA,GAUA,GAVA,GAWAC,EAXA,GAYA,SAZA,GAaA,CAAC4F,CAbD,GAcA,SAdA,GAeAC,CAfA,GAgBA,KAhBA,GAiBA9F,EAjBA,GAkBA,GAlBA,GAmBAC,EAnBA,GAoBA,SApBA,GAqBA4F,CArBA,GAsBA,SAtBA,GAuBA,CAACC,CAxBH;AA0BA,MAAMvE,EAAE,GAAGjD,QAAQ,CAChBE,IADQ,CACH,gBADG,EACeyB,EADf,EAER1B,MAFQ,CAED,MAFC,EAEO,cAFP,EAGRC,IAHQ,CAGH,OAHG,EAGML,IAAI,CAAC4B,KAHX,EAIRvB,IAJQ,CAIH,GAJG,EAIEyC,KAJF,EAKRzC,IALQ,CAKH,WALG,EAKU,eAAe,CAACqH,CAAD,GAAK,CAApB,GAAwB,GAAxB,GAA8B,EAAEC,CAAC,GAAG,CAAJ,GAAQ7F,EAAV,CAA9B,GAA8C,GALxD,CAAX;AAOAuJ,EAAAA,8DAAgB,CAACrL,IAAD,EAAOoD,EAAP,CAAhB;;AAEApD,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,QAAM6E,GAAG,GAAG9E,gEAAA,CAAelC,IAAf,EAAqBmC,KAArB,CAAZ;AACA,QAAMJ,CAAC,GAAGiF,GAAG,CAACjF,CAAJ,GAAQ/B,IAAI,CAAC+B,CAAvB;;AAEA,QACEF,EAAE,IAAI,CAAN,KACC0F,IAAI,CAACC,GAAL,CAASzF,CAAT,IAAc/B,IAAI,CAACqB,KAAL,GAAa,CAA3B,IACEkG,IAAI,CAACC,GAAL,CAASzF,CAAT,KAAe/B,IAAI,CAACqB,KAAL,GAAa,CAA5B,IAAiCkG,IAAI,CAACC,GAAL,CAASR,GAAG,CAAChF,CAAJ,GAAQhC,IAAI,CAACgC,CAAtB,IAA2BhC,IAAI,CAACsB,MAAL,GAAc,CAAd,GAAkBQ,EAFjF,CADF,EAIE;AACA;AACA;AACA,UAAIE,CAAC,GAAGF,EAAE,GAAGA,EAAL,IAAW,IAAKC,CAAC,GAAGA,CAAL,IAAWF,EAAE,GAAGA,EAAhB,CAAf,CAAR;AACA,UAAIG,CAAC,IAAI,CAAT,EAAYA,CAAC,GAAGuF,IAAI,CAAC6G,IAAL,CAAUpM,CAAV,CAAJ;AACZA,MAAAA,CAAC,GAAGF,EAAE,GAAGE,CAAT;AACA,UAAIG,KAAK,CAACH,CAAN,GAAUhC,IAAI,CAACgC,CAAf,GAAmB,CAAvB,EAA0BA,CAAC,GAAG,CAACA,CAAL;AAE1BgF,MAAAA,GAAG,CAAChF,CAAJ,IAASA,CAAT;AACD;;AAED,WAAOgF,GAAP;AACD,GApBD;;AAsBA,SAAO7G,QAAP;AACD,CAlED;;AAoEA,IAAML,IAAI,GAAG,cAACC,MAAD,EAASC,IAAT,EAAkB;AAC7B,uBAAwC+T,yDAAW,CAAChU,MAAD,EAASC,IAAT,EAAe,UAAUA,IAAI,CAACsC,OAA9B,EAAuC,IAAvC,CAAnD;AAAA,MAAQnC,QAAR,kBAAQA,QAAR;AAAA,MAAkBU,IAAlB,kBAAkBA,IAAlB;AAAA,MAAwBW,WAAxB,kBAAwBA,WAAxB;;AAEAvE,EAAAA,8CAAA,CAAU,YAAV,EAAwB+C,IAAI,CAACsC,OAA7B,EAH6B,CAI7B;;AACA,MAAMxC,IAAI,GAAGK,QAAQ,CAACC,MAAT,CAAgB,MAAhB,EAAwB,cAAxB,CAAb;AAEAN,EAAAA,IAAI,CACDO,IADH,CACQ,OADR,EACiB,uBADjB,EAEGA,IAFH,CAEQ,OAFR,EAEiBL,IAAI,CAAC4B,KAFtB,EAGGvB,IAHH,CAGQ,IAHR,EAGcL,IAAI,CAAC6B,EAHnB,EAIGxB,IAJH,CAIQ,IAJR,EAIcL,IAAI,CAAC8B,EAJnB,EAKGzB,IALH,CAKQ,GALR,EAKa,CAACQ,IAAI,CAACQ,KAAN,GAAc,CAAd,GAAkBG,WAL/B,EAMGnB,IANH,CAMQ,GANR,EAMa,CAACQ,IAAI,CAACS,MAAN,GAAe,CAAf,GAAmBE,WANhC,EAOGnB,IAPH,CAOQ,OAPR,EAOiBQ,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACuB,OAPnC,EAQGlB,IARH,CAQQ,QARR,EAQkBQ,IAAI,CAACS,MAAL,GAActB,IAAI,CAACuB,OARrC;AAUA8J,EAAAA,8DAAgB,CAACrL,IAAD,EAAOF,IAAP,CAAhB;;AAEAE,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOD,gEAAA,CAAelC,IAAf,EAAqBmC,KAArB,CAAP;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CAxBD;;AA0BA,IAAMiV,aAAa,GAAG,SAAhBA,aAAgB,CAACrV,MAAD,EAASC,IAAT,EAAkB;AACtC;AAEA,MAAIsC,OAAJ;;AACA,MAAI,CAACtC,IAAI,CAACsC,OAAV,EAAmB;AACjBA,IAAAA,OAAO,GAAG,cAAV;AACD,GAFD,MAEO;AACLA,IAAAA,OAAO,GAAG,UAAUtC,IAAI,CAACsC,OAAzB;AACD,GARqC,CAStC;;;AACA,MAAMnC,QAAQ,GAAGJ,MAAM,CACpBK,MADc,CACP,GADO,EAEdC,IAFc,CAET,OAFS,EAEAiC,OAFA,EAGdjC,IAHc,CAGT,IAHS,EAGHL,IAAI,CAACsU,KAAL,IAActU,IAAI,CAACE,EAHhB,CAAjB,CAVsC,CAetC;;AACA,MAAMJ,IAAI,GAAGK,QAAQ,CAACC,MAAT,CAAgB,MAAhB,EAAwB,cAAxB,CAAb,CAhBsC,CAiBtC;;AACA,MAAMiV,SAAS,GAAGlV,QAAQ,CAACC,MAAT,CAAgB,MAAhB,CAAlB;AAEA,MAAMG,KAAK,GAAGJ,QAAQ,CAACC,MAAT,CAAgB,GAAhB,EAAqBC,IAArB,CAA0B,OAA1B,EAAmC,OAAnC,CAAd;AAEA,MAAMiV,KAAK,GAAGtV,IAAI,CAACU,SAAL,CAAe6U,IAAf,GAAsBvV,IAAI,CAACU,SAAL,CAAe6U,IAAf,EAAtB,GAA8CvV,IAAI,CAACU,SAAjE,CAtBsC,CAuBtC;;AAEA,MAAI8U,KAAK,GAAG,EAAZ;;AACA,MAAI,QAAOF,KAAP,MAAiB,QAArB,EAA+B;AAC7BE,IAAAA,KAAK,GAAGF,KAAK,CAAC,CAAD,CAAb;AACD,GAFD,MAEO;AACLE,IAAAA,KAAK,GAAGF,KAAR;AACD;;AACDrY,EAAAA,6CAAA,CAAS,kBAAT,EAA6BuY,KAA7B,EAAoCF,KAApC,EAA2C,QAAOA,KAAP,MAAiB,QAA5D;AAEA,MAAM9U,IAAI,GAAGD,KAAK,CAACP,IAAN,GAAaS,WAAb,CAAyBd,wDAAW,CAAC6V,KAAD,EAAQxV,IAAI,CAACW,UAAb,EAAyB,IAAzB,EAA+B,IAA/B,CAApC,CAAb;AACA,MAAIE,IAAI,GAAG;AAAEQ,IAAAA,KAAK,EAAE,CAAT;AAAYC,IAAAA,MAAM,EAAE;AAApB,GAAX;;AACA,MAAIzB,iEAAQ,CAAChB,kDAAS,GAAGkC,SAAZ,CAAsBC,UAAvB,CAAZ,EAAgD;AAC9C,QAAMC,GAAG,GAAGT,IAAI,CAACU,QAAL,CAAc,CAAd,CAAZ;AACA,QAAMC,EAAE,GAAGvB,0CAAM,CAACY,IAAD,CAAjB;AACAK,IAAAA,IAAI,GAAGI,GAAG,CAACG,qBAAJ,EAAP;AACAD,IAAAA,EAAE,CAACd,IAAH,CAAQ,OAAR,EAAiBQ,IAAI,CAACQ,KAAtB;AACAF,IAAAA,EAAE,CAACd,IAAH,CAAQ,QAAR,EAAkBQ,IAAI,CAACS,MAAvB;AACD;;AACDrE,EAAAA,6CAAA,CAAS,QAAT,EAAmBqY,KAAnB;AACA,MAAMG,QAAQ,GAAGH,KAAK,CAAC5L,KAAN,CAAY,CAAZ,EAAe4L,KAAK,CAACrX,MAArB,CAAjB;AACA,MAAIyX,QAAQ,GAAGlV,IAAI,CAACM,OAAL,EAAf;AACA,MAAM6U,KAAK,GAAGpV,KAAK,CAChBP,IADW,GAEXS,WAFW,CAGVd,wDAAW,CAAC8V,QAAQ,CAACjB,IAAT,GAAgBiB,QAAQ,CAACjB,IAAT,CAAc,OAAd,CAAhB,GAAyCiB,QAA1C,EAAoDzV,IAAI,CAACW,UAAzD,EAAqE,IAArE,EAA2E,IAA3E,CAHD,CAAd;;AAMA,MAAId,iEAAQ,CAAChB,kDAAS,GAAGkC,SAAZ,CAAsBC,UAAvB,CAAZ,EAAgD;AAC9C,QAAMC,IAAG,GAAG0U,KAAK,CAACzU,QAAN,CAAe,CAAf,CAAZ;;AACA,QAAMC,GAAE,GAAGvB,0CAAM,CAAC+V,KAAD,CAAjB;;AACA9U,IAAAA,IAAI,GAAGI,IAAG,CAACG,qBAAJ,EAAP;;AACAD,IAAAA,GAAE,CAACd,IAAH,CAAQ,OAAR,EAAiBQ,IAAI,CAACQ,KAAtB;;AACAF,IAAAA,GAAE,CAACd,IAAH,CAAQ,QAAR,EAAkBQ,IAAI,CAACS,MAAvB;AACD,GAzDqC,CA0DtC;AACA;;;AACA,MAAME,WAAW,GAAGxB,IAAI,CAACuB,OAAL,GAAe,CAAnC;AACA3B,EAAAA,0CAAM,CAAC+V,KAAD,CAAN,CAActV,IAAd,CACE,WADF,EAEE,kBACE;AACCQ,EAAAA,IAAI,CAACQ,KAAL,GAAaqU,QAAQ,CAACrU,KAAtB,GAA8B,CAA9B,GAAkC,CAACqU,QAAQ,CAACrU,KAAT,GAAiBR,IAAI,CAACQ,KAAvB,IAAgC,CAFrE,IAGE,IAHF,IAIGqU,QAAQ,CAACpU,MAAT,GAAkBE,WAAlB,GAAgC,CAJnC,IAKE,GAPJ;AASA5B,EAAAA,0CAAM,CAACY,IAAD,CAAN,CAAaH,IAAb,CACE,WADF,EAEE,kBACE;AACCQ,EAAAA,IAAI,CAACQ,KAAL,GAAaqU,QAAQ,CAACrU,KAAtB,GAA8B,CAA9B,GAAkC,EAAEqU,QAAQ,CAACrU,KAAT,GAAiBR,IAAI,CAACQ,KAAxB,IAAiC,CAFtE,IAGE,IAHF,GAIE,CAJF,GAKE,GAPJ,EAtEsC,CA+EtC;AAEA;;AACAR,EAAAA,IAAI,GAAGN,KAAK,CAACP,IAAN,GAAac,OAAb,EAAP,CAlFsC,CAoFtC;;AACAP,EAAAA,KAAK,CAACF,IAAN,CACE,WADF,EAEE,eAAe,CAACQ,IAAI,CAACQ,KAAN,GAAc,CAA7B,GAAiC,IAAjC,IAAyC,CAACR,IAAI,CAACS,MAAN,GAAe,CAAf,GAAmBE,WAAnB,GAAiC,CAA1E,IAA+E,GAFjF;AAKA1B,EAAAA,IAAI,CACDO,IADH,CACQ,OADR,EACiB,mBADjB,EAEGA,IAFH,CAEQ,GAFR,EAEa,CAACQ,IAAI,CAACQ,KAAN,GAAc,CAAd,GAAkBG,WAF/B,EAGGnB,IAHH,CAGQ,GAHR,EAGa,CAACQ,IAAI,CAACS,MAAN,GAAe,CAAf,GAAmBE,WAHhC,EAIGnB,IAJH,CAIQ,OAJR,EAIiBQ,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACuB,OAJnC,EAKGlB,IALH,CAKQ,QALR,EAKkBQ,IAAI,CAACS,MAAL,GAActB,IAAI,CAACuB,OALrC;AAOA8T,EAAAA,SAAS,CACNhV,IADH,CACQ,OADR,EACiB,SADjB,EAEGA,IAFH,CAEQ,IAFR,EAEc,CAACQ,IAAI,CAACQ,KAAN,GAAc,CAAd,GAAkBG,WAFhC,EAGGnB,IAHH,CAGQ,IAHR,EAGcQ,IAAI,CAACQ,KAAL,GAAa,CAAb,GAAiBG,WAH/B,EAIGnB,IAJH,CAIQ,IAJR,EAIc,CAACQ,IAAI,CAACS,MAAN,GAAe,CAAf,GAAmBE,WAAnB,GAAiCkU,QAAQ,CAACpU,MAA1C,GAAmDE,WAJjE,EAKGnB,IALH,CAKQ,IALR,EAKc,CAACQ,IAAI,CAACS,MAAN,GAAe,CAAf,GAAmBE,WAAnB,GAAiCkU,QAAQ,CAACpU,MAA1C,GAAmDE,WALjE;AAOA6J,EAAAA,8DAAgB,CAACrL,IAAD,EAAOF,IAAP,CAAhB;;AAEAE,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOD,gEAAA,CAAelC,IAAf,EAAqBmC,KAArB,CAAP;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CA/GD;;AAiHA,IAAMyV,OAAO,GAAG,SAAVA,OAAU,CAAC7V,MAAD,EAASC,IAAT,EAAkB;AAChC,uBAA2B+T,yDAAW,CAAChU,MAAD,EAASC,IAAT,EAAeY,SAAf,EAA0B,IAA1B,CAAtC;AAAA,MAAQT,QAAR,kBAAQA,QAAR;AAAA,MAAkBU,IAAlB,kBAAkBA,IAAlB;;AAEA,MAAM8G,CAAC,GAAG9G,IAAI,CAACS,MAAL,GAActB,IAAI,CAACuB,OAA7B;AACA,MAAMmG,CAAC,GAAG7G,IAAI,CAACQ,KAAL,GAAasG,CAAC,GAAG,CAAjB,GAAqB3H,IAAI,CAACuB,OAApC,CAJgC,CAMhC;;AACA,MAAMzB,IAAI,GAAGK,QAAQ,CAClBC,MADU,CACH,MADG,EACK,cADL,EAEVC,IAFU,CAEL,OAFK,EAEIL,IAAI,CAAC4B,KAFT,EAGVvB,IAHU,CAGL,IAHK,EAGCsH,CAAC,GAAG,CAHL,EAIVtH,IAJU,CAIL,IAJK,EAICsH,CAAC,GAAG,CAJL,EAKVtH,IALU,CAKL,GALK,EAKA,CAACqH,CAAD,GAAK,CALL,EAMVrH,IANU,CAML,GANK,EAMA,CAACsH,CAAD,GAAK,CANL,EAOVtH,IAPU,CAOL,OAPK,EAOIqH,CAPJ,EAQVrH,IARU,CAQL,QARK,EAQKsH,CARL,CAAb;AAUA0D,EAAAA,8DAAgB,CAACrL,IAAD,EAAOF,IAAP,CAAhB;;AAEAE,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOD,gEAAA,CAAelC,IAAf,EAAqBmC,KAArB,CAAP;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CAxBD;;AA0BA,IAAMuN,MAAM,GAAG,gBAAC3N,MAAD,EAASC,IAAT,EAAkB;AAC/B,uBAAwC+T,yDAAW,CAAChU,MAAD,EAASC,IAAT,EAAeY,SAAf,EAA0B,IAA1B,CAAnD;AAAA,MAAQT,QAAR,kBAAQA,QAAR;AAAA,MAAkBU,IAAlB,kBAAkBA,IAAlB;AAAA,MAAwBW,WAAxB,kBAAwBA,WAAxB;;AACA,MAAMkM,MAAM,GAAGvN,QAAQ,CAACC,MAAT,CAAgB,QAAhB,EAA0B,cAA1B,CAAf,CAF+B,CAI/B;;AACAsN,EAAAA,MAAM,CACHrN,IADH,CACQ,OADR,EACiBL,IAAI,CAAC4B,KADtB,EAEGvB,IAFH,CAEQ,IAFR,EAEcL,IAAI,CAAC6B,EAFnB,EAGGxB,IAHH,CAGQ,IAHR,EAGcL,IAAI,CAAC8B,EAHnB,EAIGzB,IAJH,CAIQ,GAJR,EAIaQ,IAAI,CAACQ,KAAL,GAAa,CAAb,GAAiBG,WAJ9B,EAKGnB,IALH,CAKQ,OALR,EAKiBQ,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACuB,OALnC,EAMGlB,IANH,CAMQ,QANR,EAMkBQ,IAAI,CAACS,MAAL,GAActB,IAAI,CAACuB,OANrC;AAQAtE,EAAAA,6CAAA,CAAS,aAAT;AAEAoO,EAAAA,8DAAgB,CAACrL,IAAD,EAAO0N,MAAP,CAAhB;;AAEA1N,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChClF,IAAAA,6CAAA,CAAS,kBAAT,EAA6B+C,IAA7B,EAAmCa,IAAI,CAACQ,KAAL,GAAa,CAAb,GAAiBG,WAApD,EAAiEW,KAAjE;AACA,WAAOD,kEAAA,CAAiBlC,IAAjB,EAAuBa,IAAI,CAACQ,KAAL,GAAa,CAAb,GAAiBG,WAAxC,EAAqDW,KAArD,CAAP;AACD,GAHD;;AAKA,SAAOhC,QAAP;AACD,CAvBD;;AAyBA,IAAM0V,UAAU,GAAG,SAAbA,UAAa,CAAC9V,MAAD,EAASC,IAAT,EAAkB;AACnC,uBAA2B+T,yDAAW,CAAChU,MAAD,EAASC,IAAT,EAAeY,SAAf,EAA0B,IAA1B,CAAtC;AAAA,MAAQT,QAAR,kBAAQA,QAAR;AAAA,MAAkBU,IAAlB,kBAAkBA,IAAlB;;AAEA,MAAM6G,CAAC,GAAG7G,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACuB,OAA5B;AACA,MAAMoG,CAAC,GAAG9G,IAAI,CAACS,MAAL,GAActB,IAAI,CAACuB,OAA7B;AACA,MAAMmH,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE;AAAX,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE2F,CAAL;AAAQ1F,IAAAA,CAAC,EAAE;AAAX,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE2F,CAAL;AAAQ1F,IAAAA,CAAC,EAAE,CAAC2F;AAAZ,GAHa,EAIb;AAAE5F,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE,CAAC2F;AAAZ,GAJa,EAKb;AAAE5F,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE;AAAX,GALa,EAMb;AAAED,IAAAA,CAAC,EAAE,CAAC,CAAN;AAASC,IAAAA,CAAC,EAAE;AAAZ,GANa,EAOb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAG,CAAT;AAAY1F,IAAAA,CAAC,EAAE;AAAf,GAPa,EAQb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAG,CAAT;AAAY1F,IAAAA,CAAC,EAAE,CAAC2F;AAAhB,GARa,EASb;AAAE5F,IAAAA,CAAC,EAAE,CAAC,CAAN;AAASC,IAAAA,CAAC,EAAE,CAAC2F;AAAb,GATa,EAUb;AAAE5F,IAAAA,CAAC,EAAE,CAAC,CAAN;AAASC,IAAAA,CAAC,EAAE;AAAZ,GAVa,CAAf;AAaA,MAAMoB,EAAE,GAAG4Q,gEAAkB,CAAC7T,QAAD,EAAWuH,CAAX,EAAcC,CAAd,EAAiBe,MAAjB,CAA7B;AACAtF,EAAAA,EAAE,CAAC/C,IAAH,CAAQ,OAAR,EAAiBL,IAAI,CAAC4B,KAAtB;AACAyJ,EAAAA,8DAAgB,CAACrL,IAAD,EAAOoD,EAAP,CAAhB;;AAEApD,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOD,mEAAA,CAAkBlC,IAAlB,EAAwB0I,MAAxB,EAAgCvG,KAAhC,CAAP;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CA3BD;;AA6BA,IAAM2V,KAAK,GAAG,SAARA,KAAQ,CAAC/V,MAAD,EAASC,IAAT,EAAkB;AAC9B,MAAMG,QAAQ,GAAGJ,MAAM,CACpBK,MADc,CACP,GADO,EAEdC,IAFc,CAET,OAFS,EAEA,cAFA,EAGdA,IAHc,CAGT,IAHS,EAGHL,IAAI,CAACsU,KAAL,IAActU,IAAI,CAACE,EAHhB,CAAjB;AAIA,MAAMwN,MAAM,GAAGvN,QAAQ,CAACC,MAAT,CAAgB,QAAhB,EAA0B,cAA1B,CAAf,CAL8B,CAO9B;;AACAsN,EAAAA,MAAM,CAACrN,IAAP,CAAY,OAAZ,EAAqB,aAArB,EAAoCA,IAApC,CAAyC,GAAzC,EAA8C,CAA9C,EAAiDA,IAAjD,CAAsD,OAAtD,EAA+D,EAA/D,EAAmEA,IAAnE,CAAwE,QAAxE,EAAkF,EAAlF;AAEAgL,EAAAA,8DAAgB,CAACrL,IAAD,EAAO0N,MAAP,CAAhB;;AAEA1N,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOD,kEAAA,CAAiBlC,IAAjB,EAAuB,CAAvB,EAA0BmC,KAA1B,CAAP;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CAjBD;;AAmBA,IAAM4V,QAAQ,GAAG,SAAXA,QAAW,CAAChW,MAAD,EAASC,IAAT,EAAesM,GAAf,EAAuB;AACtC,MAAMnM,QAAQ,GAAGJ,MAAM,CACpBK,MADc,CACP,GADO,EAEdC,IAFc,CAET,OAFS,EAEA,cAFA,EAGdA,IAHc,CAGT,IAHS,EAGHL,IAAI,CAACsU,KAAL,IAActU,IAAI,CAACE,EAHhB,CAAjB;AAKA,MAAImB,KAAK,GAAG,EAAZ;AACA,MAAIC,MAAM,GAAG,EAAb;;AAEA,MAAIgL,GAAG,KAAK,IAAZ,EAAkB;AAChBjL,IAAAA,KAAK,GAAG,EAAR;AACAC,IAAAA,MAAM,GAAG,EAAT;AACD;;AAED,MAAMwB,KAAK,GAAG3C,QAAQ,CACnBqC,MADW,CACJ,MADI,EAEXnC,IAFW,CAEN,GAFM,EAEA,CAAC,CAAD,GAAKgB,KAAN,GAAe,CAFd,EAGXhB,IAHW,CAGN,GAHM,EAGA,CAAC,CAAD,GAAKiB,MAAN,GAAgB,CAHf,EAIXjB,IAJW,CAIN,OAJM,EAIGgB,KAJH,EAKXhB,IALW,CAKN,QALM,EAKIiB,MALJ,EAMXjB,IANW,CAMN,OANM,EAMG,WANH,CAAd;AAQAgL,EAAAA,8DAAgB,CAACrL,IAAD,EAAO8C,KAAP,CAAhB;AACA9C,EAAAA,IAAI,CAACsB,MAAL,GAActB,IAAI,CAACsB,MAAL,GAActB,IAAI,CAACuB,OAAL,GAAe,CAA3C;AACAvB,EAAAA,IAAI,CAACqB,KAAL,GAAarB,IAAI,CAACqB,KAAL,GAAarB,IAAI,CAACuB,OAAL,GAAe,CAAzC;;AACAvB,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOD,gEAAA,CAAelC,IAAf,EAAqBmC,KAArB,CAAP;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CA9BD;;AAgCA,IAAM6V,GAAG,GAAG,SAANA,GAAM,CAACjW,MAAD,EAASC,IAAT,EAAkB;AAC5B,MAAMG,QAAQ,GAAGJ,MAAM,CACpBK,MADc,CACP,GADO,EAEdC,IAFc,CAET,OAFS,EAEA,cAFA,EAGdA,IAHc,CAGT,IAHS,EAGHL,IAAI,CAACsU,KAAL,IAActU,IAAI,CAACE,EAHhB,CAAjB;AAIA,MAAM+V,WAAW,GAAG9V,QAAQ,CAACC,MAAT,CAAgB,QAAhB,EAA0B,cAA1B,CAApB;AACA,MAAMsN,MAAM,GAAGvN,QAAQ,CAACC,MAAT,CAAgB,QAAhB,EAA0B,cAA1B,CAAf;AAEAsN,EAAAA,MAAM,CAACrN,IAAP,CAAY,OAAZ,EAAqB,aAArB,EAAoCA,IAApC,CAAyC,GAAzC,EAA8C,CAA9C,EAAiDA,IAAjD,CAAsD,OAAtD,EAA+D,EAA/D,EAAmEA,IAAnE,CAAwE,QAAxE,EAAkF,EAAlF;AAEA4V,EAAAA,WAAW,CAAC5V,IAAZ,CAAiB,OAAjB,EAA0B,WAA1B,EAAuCA,IAAvC,CAA4C,GAA5C,EAAiD,CAAjD,EAAoDA,IAApD,CAAyD,OAAzD,EAAkE,EAAlE,EAAsEA,IAAtE,CAA2E,QAA3E,EAAqF,EAArF;AAEAgL,EAAAA,8DAAgB,CAACrL,IAAD,EAAO0N,MAAP,CAAhB;;AAEA1N,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOD,kEAAA,CAAiBlC,IAAjB,EAAuB,CAAvB,EAA0BmC,KAA1B,CAAP;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CAnBD;;AAqBA,IAAM+V,SAAS,GAAG,SAAZA,SAAY,CAACnW,MAAD,EAASC,IAAT,EAAkB;AAClC,MAAMwB,WAAW,GAAGxB,IAAI,CAACuB,OAAL,GAAe,CAAnC;AACA,MAAM4U,UAAU,GAAG,CAAnB;AACA,MAAMC,UAAU,GAAG,CAAnB;AAEA,MAAI9T,OAAJ;;AACA,MAAI,CAACtC,IAAI,CAACsC,OAAV,EAAmB;AACjBA,IAAAA,OAAO,GAAG,cAAV;AACD,GAFD,MAEO;AACLA,IAAAA,OAAO,GAAG,UAAUtC,IAAI,CAACsC,OAAzB;AACD,GAViC,CAWlC;;;AACA,MAAMnC,QAAQ,GAAGJ,MAAM,CACpBK,MADc,CACP,GADO,EAEdC,IAFc,CAET,OAFS,EAEAiC,OAFA,EAGdjC,IAHc,CAGT,IAHS,EAGHL,IAAI,CAACsU,KAAL,IAActU,IAAI,CAACE,EAHhB,CAAjB,CAZkC,CAiBlC;;AACA,MAAMJ,IAAI,GAAGK,QAAQ,CAACC,MAAT,CAAgB,MAAhB,EAAwB,cAAxB,CAAb;AACA,MAAMiW,OAAO,GAAGlW,QAAQ,CAACC,MAAT,CAAgB,MAAhB,CAAhB;AACA,MAAMkW,UAAU,GAAGnW,QAAQ,CAACC,MAAT,CAAgB,MAAhB,CAAnB;AACA,MAAImW,QAAQ,GAAG,CAAf;AACA,MAAIC,SAAS,GAAGL,UAAhB;AAEA,MAAMM,cAAc,GAAGtW,QAAQ,CAACC,MAAT,CAAgB,GAAhB,EAAqBC,IAArB,CAA0B,OAA1B,EAAmC,OAAnC,CAAvB;AACA,MAAIqW,WAAW,GAAG,CAAlB;AACA,MAAMC,YAAY,GAAG3W,IAAI,CAAC4W,SAAL,CAAeC,WAAf,IAA8B7W,IAAI,CAAC4W,SAAL,CAAeC,WAAf,CAA2B,CAA3B,CAAnD,CA1BkC,CA4BlC;;AACA,MAAMC,kBAAkB,GAAG9W,IAAI,CAAC4W,SAAL,CAAeC,WAAf,CAA2B,CAA3B,IACvB,MAAM7W,IAAI,CAAC4W,SAAL,CAAeC,WAAf,CAA2B,CAA3B,CAAN,GAAsC,GADf,GAEvB,EAFJ;AAGA,MAAME,cAAc,GAAGN,cAAc,CAClCzW,IADoB,GAEpBS,WAFoB,CAERd,wDAAW,CAACmX,kBAAD,EAAqB9W,IAAI,CAACW,UAA1B,EAAsC,IAAtC,EAA4C,IAA5C,CAFH,CAAvB;AAGA,MAAIqW,aAAa,GAAGD,cAAc,CAACjW,OAAf,EAApB;;AACA,MAAIjB,iEAAQ,CAAChB,kDAAS,GAAGkC,SAAZ,CAAsBC,UAAvB,CAAZ,EAAgD;AAC9C,QAAMC,GAAG,GAAG8V,cAAc,CAAC7V,QAAf,CAAwB,CAAxB,CAAZ;AACA,QAAMC,EAAE,GAAGvB,0CAAM,CAACmX,cAAD,CAAjB;AACAC,IAAAA,aAAa,GAAG/V,GAAG,CAACG,qBAAJ,EAAhB;AACAD,IAAAA,EAAE,CAACd,IAAH,CAAQ,OAAR,EAAiB2W,aAAa,CAAC3V,KAA/B;AACAF,IAAAA,EAAE,CAACd,IAAH,CAAQ,QAAR,EAAkB2W,aAAa,CAAC1V,MAAhC;AACD;;AACD,MAAItB,IAAI,CAAC4W,SAAL,CAAeC,WAAf,CAA2B,CAA3B,CAAJ,EAAmC;AACjCL,IAAAA,SAAS,IAAIQ,aAAa,CAAC1V,MAAd,GAAuB6U,UAApC;AACAI,IAAAA,QAAQ,IAAIS,aAAa,CAAC3V,KAA1B;AACD;;AAED,MAAI4V,gBAAgB,GAAGjX,IAAI,CAAC4W,SAAL,CAAe1W,EAAtC;;AAEA,MAAIF,IAAI,CAAC4W,SAAL,CAAerJ,IAAf,KAAwB3M,SAAxB,IAAqCZ,IAAI,CAAC4W,SAAL,CAAerJ,IAAf,KAAwB,EAAjE,EAAqE;AACnE,QAAI1O,kDAAS,GAAGkC,SAAZ,CAAsBC,UAA1B,EAAsC;AACpCiW,MAAAA,gBAAgB,IAAI,SAASjX,IAAI,CAAC4W,SAAL,CAAerJ,IAAxB,GAA+B,MAAnD;AACD,KAFD,MAEO;AACL0J,MAAAA,gBAAgB,IAAI,MAAMjX,IAAI,CAAC4W,SAAL,CAAerJ,IAArB,GAA4B,GAAhD;AACD;AACF;;AACD,MAAM2J,eAAe,GAAGT,cAAc,CACnCzW,IADqB,GAErBS,WAFqB,CAETd,wDAAW,CAACsX,gBAAD,EAAmBjX,IAAI,CAACW,UAAxB,EAAoC,IAApC,EAA0C,IAA1C,CAFF,CAAxB;AAGAf,EAAAA,0CAAM,CAACsX,eAAD,CAAN,CAAwB7W,IAAxB,CAA6B,OAA7B,EAAsC,YAAtC;AACA,MAAI8W,cAAc,GAAGD,eAAe,CAACpW,OAAhB,EAArB;;AACA,MAAIjB,iEAAQ,CAAChB,kDAAS,GAAGkC,SAAZ,CAAsBC,UAAvB,CAAZ,EAAgD;AAC9C,QAAMC,KAAG,GAAGiW,eAAe,CAAChW,QAAhB,CAAyB,CAAzB,CAAZ;;AACA,QAAMC,IAAE,GAAGvB,0CAAM,CAACsX,eAAD,CAAjB;;AACAC,IAAAA,cAAc,GAAGlW,KAAG,CAACG,qBAAJ,EAAjB;;AACAD,IAAAA,IAAE,CAACd,IAAH,CAAQ,OAAR,EAAiB8W,cAAc,CAAC9V,KAAhC;;AACAF,IAAAA,IAAE,CAACd,IAAH,CAAQ,QAAR,EAAkB8W,cAAc,CAAC7V,MAAjC;AACD;;AACDkV,EAAAA,SAAS,IAAIW,cAAc,CAAC7V,MAAf,GAAwB6U,UAArC;;AACA,MAAIgB,cAAc,CAAC9V,KAAf,GAAuBkV,QAA3B,EAAqC;AACnCA,IAAAA,QAAQ,GAAGY,cAAc,CAAC9V,KAA1B;AACD;;AACD,MAAM+V,eAAe,GAAG,EAAxB;AACApX,EAAAA,IAAI,CAAC4W,SAAL,CAAeS,OAAf,CAAuBpY,OAAvB,CAA+B,UAACqY,GAAD,EAAS;AACtC,QAAMC,UAAU,GAAGrD,oEAAW,CAACoD,GAAD,CAA9B;AACA,QAAIE,UAAU,GAAGD,UAAU,CAACE,WAA5B;;AACA,QAAI5Y,kDAAS,GAAGkC,SAAZ,CAAsBC,UAA1B,EAAsC;AACpCwW,MAAAA,UAAU,GAAGA,UAAU,CAACtT,OAAX,CAAmB,IAAnB,EAAyB,MAAzB,EAAiCA,OAAjC,CAAyC,IAAzC,EAA+C,MAA/C,CAAb;AACD;;AACD,QAAMwT,GAAG,GAAGjB,cAAc,CACvBzW,IADS,GAETS,WAFS,CAGRd,wDAAW,CACT6X,UADS,EAETD,UAAU,CAACI,QAAX,GAAsBJ,UAAU,CAACI,QAAjC,GAA4C3X,IAAI,CAACW,UAFxC,EAGT,IAHS,EAIT,IAJS,CAHH,CAAZ;AAUA,QAAIE,IAAI,GAAG6W,GAAG,CAAC5W,OAAJ,EAAX;;AACA,QAAIjB,iEAAQ,CAAChB,kDAAS,GAAGkC,SAAZ,CAAsBC,UAAvB,CAAZ,EAAgD;AAC9C,UAAMC,KAAG,GAAGyW,GAAG,CAACxW,QAAJ,CAAa,CAAb,CAAZ;;AACA,UAAMC,IAAE,GAAGvB,0CAAM,CAAC8X,GAAD,CAAjB;;AACA7W,MAAAA,IAAI,GAAGI,KAAG,CAACG,qBAAJ,EAAP;;AACAD,MAAAA,IAAE,CAACd,IAAH,CAAQ,OAAR,EAAiBQ,IAAI,CAACQ,KAAtB;;AACAF,MAAAA,IAAE,CAACd,IAAH,CAAQ,QAAR,EAAkBQ,IAAI,CAACS,MAAvB;AACD;;AACD,QAAIT,IAAI,CAACQ,KAAL,GAAakV,QAAjB,EAA2B;AACzBA,MAAAA,QAAQ,GAAG1V,IAAI,CAACQ,KAAhB;AACD;;AACDmV,IAAAA,SAAS,IAAI3V,IAAI,CAACS,MAAL,GAAc6U,UAA3B;AACAiB,IAAAA,eAAe,CAAC5X,IAAhB,CAAqBkY,GAArB;AACD,GA7BD;AA+BAlB,EAAAA,SAAS,IAAIJ,UAAb;AAEA,MAAMwB,YAAY,GAAG,EAArB;AACA5X,EAAAA,IAAI,CAAC4W,SAAL,CAAeiB,OAAf,CAAuB5Y,OAAvB,CAA+B,UAACqY,GAAD,EAAS;AACtC,QAAMC,UAAU,GAAGrD,oEAAW,CAACoD,GAAD,CAA9B;AACA,QAAIG,WAAW,GAAGF,UAAU,CAACE,WAA7B;;AACA,QAAI5Y,kDAAS,GAAGkC,SAAZ,CAAsBC,UAA1B,EAAsC;AACpCyW,MAAAA,WAAW,GAAGA,WAAW,CAACvT,OAAZ,CAAoB,IAApB,EAA0B,MAA1B,EAAkCA,OAAlC,CAA0C,IAA1C,EAAgD,MAAhD,CAAd;AACD;;AACD,QAAMwT,GAAG,GAAGjB,cAAc,CACvBzW,IADS,GAETS,WAFS,CAGRd,wDAAW,CACT8X,WADS,EAETF,UAAU,CAACI,QAAX,GAAsBJ,UAAU,CAACI,QAAjC,GAA4C3X,IAAI,CAACW,UAFxC,EAGT,IAHS,EAIT,IAJS,CAHH,CAAZ;AAUA,QAAIE,IAAI,GAAG6W,GAAG,CAAC5W,OAAJ,EAAX;;AACA,QAAIjB,iEAAQ,CAAChB,kDAAS,GAAGkC,SAAZ,CAAsBC,UAAvB,CAAZ,EAAgD;AAC9C,UAAMC,KAAG,GAAGyW,GAAG,CAACxW,QAAJ,CAAa,CAAb,CAAZ;;AACA,UAAMC,IAAE,GAAGvB,0CAAM,CAAC8X,GAAD,CAAjB;;AACA7W,MAAAA,IAAI,GAAGI,KAAG,CAACG,qBAAJ,EAAP;;AACAD,MAAAA,IAAE,CAACd,IAAH,CAAQ,OAAR,EAAiBQ,IAAI,CAACQ,KAAtB;;AACAF,MAAAA,IAAE,CAACd,IAAH,CAAQ,QAAR,EAAkBQ,IAAI,CAACS,MAAvB;AACD;;AACD,QAAIT,IAAI,CAACQ,KAAL,GAAakV,QAAjB,EAA2B;AACzBA,MAAAA,QAAQ,GAAG1V,IAAI,CAACQ,KAAhB;AACD;;AACDmV,IAAAA,SAAS,IAAI3V,IAAI,CAACS,MAAL,GAAc6U,UAA3B;AAEAyB,IAAAA,YAAY,CAACpY,IAAb,CAAkBkY,GAAlB;AACD,GA9BD;AAgCAlB,EAAAA,SAAS,IAAIJ,UAAb,CA5IkC,CA8IlC;AAEA;;AACA,MAAIO,YAAJ,EAAkB;AAChB,QAAImB,MAAK,GAAG,CAACvB,QAAQ,GAAGS,aAAa,CAAC3V,KAA1B,IAAmC,CAA/C;;AACAzB,IAAAA,0CAAM,CAACmX,cAAD,CAAN,CAAuB1W,IAAvB,CACE,WADF,EAEE,iBAAkB,CAAC,CAAD,GAAKkW,QAAN,GAAkB,CAAlB,GAAsBuB,MAAvC,IAAgD,IAAhD,GAAwD,CAAC,CAAD,GAAKtB,SAAN,GAAmB,CAA1E,GAA8E,GAFhF;AAIAE,IAAAA,WAAW,GAAGM,aAAa,CAAC1V,MAAd,GAAuB6U,UAArC;AACD,GAxJiC,CAyJlC;;;AACA,MAAI2B,KAAK,GAAG,CAACvB,QAAQ,GAAGY,cAAc,CAAC9V,KAA3B,IAAoC,CAAhD;AACAzB,EAAAA,0CAAM,CAACsX,eAAD,CAAN,CAAwB7W,IAAxB,CACE,WADF,EAEE,iBACI,CAAC,CAAD,GAAKkW,QAAN,GAAkB,CAAlB,GAAsBuB,KADzB,IAEE,IAFF,IAGI,CAAC,CAAD,GAAKtB,SAAN,GAAmB,CAAnB,GAAuBE,WAH1B,IAIE,GANJ;AAQAA,EAAAA,WAAW,IAAIS,cAAc,CAAC7V,MAAf,GAAwB6U,UAAvC;AAEAE,EAAAA,OAAO,CACJhW,IADH,CACQ,OADR,EACiB,SADjB,EAEGA,IAFH,CAEQ,IAFR,EAEc,CAACkW,QAAD,GAAY,CAAZ,GAAgB/U,WAF9B,EAGGnB,IAHH,CAGQ,IAHR,EAGckW,QAAQ,GAAG,CAAX,GAAe/U,WAH7B,EAIGnB,IAJH,CAIQ,IAJR,EAIc,CAACmW,SAAD,GAAa,CAAb,GAAiBhV,WAAjB,GAA+B4U,UAA/B,GAA4CM,WAJ1D,EAKGrW,IALH,CAKQ,IALR,EAKc,CAACmW,SAAD,GAAa,CAAb,GAAiBhV,WAAjB,GAA+B4U,UAA/B,GAA4CM,WAL1D;AAOAA,EAAAA,WAAW,IAAIN,UAAf;AAEAgB,EAAAA,eAAe,CAACnY,OAAhB,CAAwB,UAACyY,GAAD,EAAS;AAC/B9X,IAAAA,0CAAM,CAAC8X,GAAD,CAAN,CAAYrX,IAAZ,CACE,WADF,EAEE,gBACE,CAACkW,QAAD,GAAY,CADd,GAEE,IAFF,IAGI,CAAC,CAAD,GAAKC,SAAN,GAAmB,CAAnB,GAAuBE,WAAvB,GAAqCN,UAAU,GAAG,CAHrD,IAIE,GANJ;AAQAM,IAAAA,WAAW,IAAIS,cAAc,CAAC7V,MAAf,GAAwB6U,UAAvC;AACD,GAVD;AAYAO,EAAAA,WAAW,IAAIN,UAAf;AACAE,EAAAA,UAAU,CACPjW,IADH,CACQ,OADR,EACiB,SADjB,EAEGA,IAFH,CAEQ,IAFR,EAEc,CAACkW,QAAD,GAAY,CAAZ,GAAgB/U,WAF9B,EAGGnB,IAHH,CAGQ,IAHR,EAGckW,QAAQ,GAAG,CAAX,GAAe/U,WAH7B,EAIGnB,IAJH,CAIQ,IAJR,EAIc,CAACmW,SAAD,GAAa,CAAb,GAAiBhV,WAAjB,GAA+B4U,UAA/B,GAA4CM,WAJ1D,EAKGrW,IALH,CAKQ,IALR,EAKc,CAACmW,SAAD,GAAa,CAAb,GAAiBhV,WAAjB,GAA+B4U,UAA/B,GAA4CM,WAL1D;AAOAA,EAAAA,WAAW,IAAIN,UAAf;AAEAwB,EAAAA,YAAY,CAAC3Y,OAAb,CAAqB,UAACyY,GAAD,EAAS;AAC5B9X,IAAAA,0CAAM,CAAC8X,GAAD,CAAN,CAAYrX,IAAZ,CACE,WADF,EAEE,gBAAgB,CAACkW,QAAD,GAAY,CAA5B,GAAgC,IAAhC,IAAyC,CAAC,CAAD,GAAKC,SAAN,GAAmB,CAAnB,GAAuBE,WAA/D,IAA8E,GAFhF;AAIAA,IAAAA,WAAW,IAAIS,cAAc,CAAC7V,MAAf,GAAwB6U,UAAvC;AACD,GAND,EApMkC,CA2MlC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAEArW,EAAAA,IAAI,CACDO,IADH,CACQ,OADR,EACiB,mBADjB,EAEGA,IAFH,CAEQ,GAFR,EAEa,CAACkW,QAAD,GAAY,CAAZ,GAAgB/U,WAF7B,EAGGnB,IAHH,CAGQ,GAHR,EAGa,EAAEmW,SAAS,GAAG,CAAd,IAAmBhV,WAHhC,EAIGnB,IAJH,CAIQ,OAJR,EAIiBkW,QAAQ,GAAGvW,IAAI,CAACuB,OAJjC,EAKGlB,IALH,CAKQ,QALR,EAKkBmW,SAAS,GAAGxW,IAAI,CAACuB,OALnC,EAnQkC,CA0QlC;AACA;AACA;AACA;AACA;AACA;;AAEA8J,EAAAA,8DAAgB,CAACrL,IAAD,EAAOF,IAAP,CAAhB;;AAEAE,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOD,gEAAA,CAAelC,IAAf,EAAqBmC,KAArB,CAAP;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CAxRD;;AA0RA,IAAMuC,MAAM,GAAG;AACbyR,EAAAA,QAAQ,EAARA,QADa;AAEbrU,EAAAA,IAAI,EAAJA,IAFa;AAGbsV,EAAAA,aAAa,EAAbA,aAHa;AAIbf,EAAAA,MAAM,EAANA,MAJa;AAKb3G,EAAAA,MAAM,EAANA,MALa;AAMbkI,EAAAA,OAAO,EAAPA,OANa;AAObnB,EAAAA,OAAO,EAAPA,OAPa;AAQbI,EAAAA,mBAAmB,EAAnBA,mBARa;AASbC,EAAAA,UAAU,EAAVA,UATa;AAUbC,EAAAA,SAAS,EAATA,SAVa;AAWbC,EAAAA,SAAS,EAATA,SAXa;AAYbC,EAAAA,aAAa,EAAbA,aAZa;AAabC,EAAAA,oBAAoB,EAApBA,oBAba;AAcbC,EAAAA,QAAQ,EAARA,QAda;AAebW,EAAAA,KAAK,EAALA,KAfa;AAgBbE,EAAAA,GAAG,EAAHA,GAhBa;AAiBb/B,EAAAA,IAAI,EAAJA,oDAjBa;AAkBb4B,EAAAA,UAAU,EAAVA,UAlBa;AAmBbkC,EAAAA,IAAI,EAAEhC,QAnBO;AAoBbvB,EAAAA,IAAI,EAAEuB,QApBO;AAqBbG,EAAAA,SAAS,EAATA;AArBa,CAAf;AAwBA,IAAI8B,SAAS,GAAG,EAAhB;AAEO,IAAMtM,UAAU,GAAG,SAAbA,UAAa,CAAC7I,IAAD,EAAO7C,IAAP,EAAasM,GAAb,EAAqB;AAC7C,MAAIa,KAAJ;AACA,MAAI/J,EAAJ,CAF6C,CAI7C;;AACA,MAAIpD,IAAI,CAACiY,IAAT,EAAe;AACb9K,IAAAA,KAAK,GAAGtK,IAAI,CACTzC,MADK,CACE,OADF,EAELC,IAFK,CAEA,YAFA,EAEcL,IAAI,CAACiY,IAFnB,EAGL5X,IAHK,CAGA,QAHA,EAGUL,IAAI,CAACkY,UAAL,IAAmB,QAH7B,CAAR;AAIA9U,IAAAA,EAAE,GAAGV,MAAM,CAAC1C,IAAI,CAAC8C,KAAN,CAAN,CAAmBqK,KAAnB,EAA0BnN,IAA1B,EAAgCsM,GAAhC,CAAL;AACD,GAND,MAMO;AACLlJ,IAAAA,EAAE,GAAGV,MAAM,CAAC1C,IAAI,CAAC8C,KAAN,CAAN,CAAmBD,IAAnB,EAAyB7C,IAAzB,EAA+BsM,GAA/B,CAAL;AACAa,IAAAA,KAAK,GAAG/J,EAAR;AACD;;AACD,MAAIpD,IAAI,CAACmY,OAAT,EAAkB;AAChB/U,IAAAA,EAAE,CAAC/C,IAAH,CAAQ,OAAR,EAAiBL,IAAI,CAACmY,OAAtB;AACD;;AACD,MAAInY,IAAI,CAACM,KAAT,EAAgB;AACd8C,IAAAA,EAAE,CAAC/C,IAAH,CAAQ,OAAR,EAAiB,kBAAkBL,IAAI,CAACM,KAAxC;AACD;;AAED0X,EAAAA,SAAS,CAAChY,IAAI,CAACE,EAAN,CAAT,GAAqBiN,KAArB;;AAEA,MAAInN,IAAI,CAACoY,YAAT,EAAuB;AACrBJ,IAAAA,SAAS,CAAChY,IAAI,CAACE,EAAN,CAAT,CAAmBG,IAAnB,CAAwB,OAAxB,EAAiC2X,SAAS,CAAChY,IAAI,CAACE,EAAN,CAAT,CAAmBG,IAAnB,CAAwB,OAAxB,IAAmC,YAApE;AACD;AACF,CA3BM;AA4BA,IAAMwL,WAAW,GAAG,SAAdA,WAAc,CAAChJ,IAAD,EAAO7C,IAAP,EAAgB;AACzCgY,EAAAA,SAAS,CAAChY,IAAI,CAACE,EAAN,CAAT,GAAqB2C,IAArB;AACD,CAFM;AAGA,IAAMI,KAAK,GAAG,SAARA,KAAQ,GAAM;AACzB+U,EAAAA,SAAS,GAAG,EAAZ;AACD,CAFM;AAIA,IAAMrM,YAAY,GAAG,SAAfA,YAAe,CAAC3L,IAAD,EAAU;AACpC,MAAMoD,EAAE,GAAG4U,SAAS,CAAChY,IAAI,CAACE,EAAN,CAApB;AACAjD,EAAAA,8CAAA,CACE,mBADF,EAEE+C,IAAI,CAACyB,IAFP,EAGEzB,IAHF,EAIE,gBAAgBA,IAAI,CAAC+B,CAAL,GAAS/B,IAAI,CAACqB,KAAL,GAAa,CAAtB,GAA0B,CAA1C,IAA+C,IAA/C,GAAsDrB,IAAI,CAACqB,KAAL,GAAa,CAAnE,GAAuE,GAJzE;AAMA,MAAME,OAAO,GAAG,CAAhB;AACA,MAAME,IAAI,GAAGzB,IAAI,CAACyB,IAAL,IAAa,CAA1B;;AACA,MAAIzB,IAAI,CAACiN,WAAT,EAAsB;AACpB7J,IAAAA,EAAE,CAAC/C,IAAH,CACE,WADF,EAEE,gBACGL,IAAI,CAAC+B,CAAL,GAASN,IAAT,GAAgBzB,IAAI,CAACqB,KAAL,GAAa,CADhC,IAEE,IAFF,IAGGrB,IAAI,CAACgC,CAAL,GAAShC,IAAI,CAACsB,MAAL,GAAc,CAAvB,GAA2BC,OAH9B,IAIE,GANJ;AAQD,GATD,MASO;AACL6B,IAAAA,EAAE,CAAC/C,IAAH,CAAQ,WAAR,EAAqB,eAAeL,IAAI,CAAC+B,CAApB,GAAwB,IAAxB,GAA+B/B,IAAI,CAACgC,CAApC,GAAwC,GAA7D;AACD;;AACD,SAAOP,IAAP;AACD,CAvBM;;;;;;;;;;;;;;;;;;AC96BP;CACoC;;AACpC;;AAEA,IAAMwS,IAAI,GAAG,SAAPA,IAAO,CAAClU,MAAD,EAASC,IAAT,EAAkB;AAC7B,qBAAwC+T,kDAAW,CAAChU,MAAD,EAASC,IAAT,EAAe,UAAUA,IAAI,CAACsC,OAA9B,EAAuC,IAAvC,CAAnD;AAAA,MAAQnC,QAAR,gBAAQA,QAAR;AAAA,MAAkBU,IAAlB,gBAAkBA,IAAlB;AAAA,MAAwBW,WAAxB,gBAAwBA,WAAxB;;AAEAvE,EAAAA,6CAAA,CAAS,YAAT,EAAuB+C,IAAI,CAACsC,OAA5B,EAH6B,CAI7B;;AACA,MAAMxC,IAAI,GAAGK,QAAQ,CAACC,MAAT,CAAgB,MAAhB,EAAwB,cAAxB,CAAb;AAEAN,EAAAA,IAAI,CACDO,IADH,CACQ,IADR,EACcL,IAAI,CAAC6B,EADnB,EAEGxB,IAFH,CAEQ,IAFR,EAEcL,IAAI,CAAC8B,EAFnB,EAGGzB,IAHH,CAGQ,GAHR,EAGa,CAACQ,IAAI,CAACQ,KAAN,GAAc,CAAd,GAAkBG,WAH/B,EAIGnB,IAJH,CAIQ,GAJR,EAIa,CAACQ,IAAI,CAACS,MAAN,GAAe,CAAf,GAAmBE,WAJhC,EAKGnB,IALH,CAKQ,OALR,EAKiBQ,IAAI,CAACQ,KAAL,GAAarB,IAAI,CAACuB,OALnC,EAMGlB,IANH,CAMQ,QANR,EAMkBQ,IAAI,CAACS,MAAL,GAActB,IAAI,CAACuB,OANrC;AAQA8J,EAAAA,uDAAgB,CAACrL,IAAD,EAAOF,IAAP,CAAhB;;AAEAE,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOD,gEAAA,CAAelC,IAAf,EAAqBmC,KAArB,CAAP;AACD,GAFD;;AAIA,SAAOhC,QAAP;AACD,CAtBD;;AAwBA,iEAAe8T,IAAf;;;;;;;;;;;;;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACO,IAAMF,WAAW,GAAG,SAAdA,WAAc,CAAChU,MAAD,EAASC,IAAT,EAAeuY,QAAf,EAAyB1U,MAAzB,EAAoC;AAC7D,MAAIvB,OAAJ;;AACA,MAAI,CAACiW,QAAL,EAAe;AACbjW,IAAAA,OAAO,GAAG,cAAV;AACD,GAFD,MAEO;AACLA,IAAAA,OAAO,GAAGiW,QAAV;AACD,GAN4D,CAO7D;;;AACA,MAAMpY,QAAQ,GAAGJ,MAAM,CACpBK,MADc,CACP,GADO,EAEdC,IAFc,CAET,OAFS,EAEAiC,OAFA,EAGdjC,IAHc,CAGT,IAHS,EAGHL,IAAI,CAACsU,KAAL,IAActU,IAAI,CAACE,EAHhB,CAAjB,CAR6D,CAa7D;;AACA,MAAMK,KAAK,GAAGJ,QAAQ,CAACC,MAAT,CAAgB,GAAhB,EAAqBC,IAArB,CAA0B,OAA1B,EAAmC,OAAnC,EAA4CA,IAA5C,CAAiD,OAAjD,EAA0DL,IAAI,CAACW,UAA/D,CAAd;AAEA,MAAMH,IAAI,GAAGD,KAAK,CACfP,IADU,GAEVS,WAFU,CAGTd,wDAAW,CACT2Y,qEAAY,CAACD,2DAAc,CAACrY,IAAI,CAACU,SAAN,CAAf,EAAiC7B,kDAAS,EAA1C,CADH,EAETmB,IAAI,CAACW,UAFI,EAGT,KAHS,EAITkD,MAJS,CAHF,CAAb,CAhB6D,CA2B7D;;AACA,MAAIhD,IAAI,GAAGL,IAAI,CAACM,OAAL,EAAX;;AAEA,MAAIjB,iEAAQ,CAAChB,kDAAS,GAAGkC,SAAZ,CAAsBC,UAAvB,CAAZ,EAAgD;AAC9C,QAAMC,GAAG,GAAGT,IAAI,CAACU,QAAL,CAAc,CAAd,CAAZ;AACA,QAAMC,EAAE,GAAGvB,0CAAM,CAACY,IAAD,CAAjB;AACAK,IAAAA,IAAI,GAAGI,GAAG,CAACG,qBAAJ,EAAP;AACAD,IAAAA,EAAE,CAACd,IAAH,CAAQ,OAAR,EAAiBQ,IAAI,CAACQ,KAAtB;AACAF,IAAAA,EAAE,CAACd,IAAH,CAAQ,QAAR,EAAkBQ,IAAI,CAACS,MAAvB;AACD;;AAED,MAAME,WAAW,GAAGxB,IAAI,CAACuB,OAAL,GAAe,CAAnC,CAtC6D,CAwC7D;;AACAhB,EAAAA,KAAK,CAACF,IAAN,CAAW,WAAX,EAAwB,eAAe,CAACQ,IAAI,CAACQ,KAAN,GAAc,CAA7B,GAAiC,IAAjC,GAAwC,CAACR,IAAI,CAACS,MAAN,GAAe,CAAvD,GAA2D,GAAnF;AAEA,SAAO;AAAEnB,IAAAA,QAAQ,EAARA,QAAF;AAAYU,IAAAA,IAAI,EAAJA,IAAZ;AAAkBW,IAAAA,WAAW,EAAXA,WAAlB;AAA+BjB,IAAAA,KAAK,EAALA;AAA/B,GAAP;AACD,CA5CM;AA8CA,IAAM8K,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACrL,IAAD,EAAOwY,OAAP,EAAmB;AACjD,MAAM3X,IAAI,GAAG2X,OAAO,CAACxY,IAAR,GAAec,OAAf,EAAb;AACAd,EAAAA,IAAI,CAACqB,KAAL,GAAaR,IAAI,CAACQ,KAAlB;AACArB,EAAAA,IAAI,CAACsB,MAAL,GAAcT,IAAI,CAACS,MAAnB;AACD,CAJM;AAMP;AACA;AACA;AACA;AACA;AACA;;AACO,SAAS0S,kBAAT,CAA4BjU,MAA5B,EAAoC2H,CAApC,EAAuCC,CAAvC,EAA0Ce,MAA1C,EAAkD;AACvD,SAAO3I,MAAM,CACVK,MADI,CACG,SADH,EACc,cADd,EAEJC,IAFI,CAGH,QAHG,EAIHqI,MAAM,CACH6L,GADH,CACO,UAAUrW,CAAV,EAAa;AAChB,WAAOA,CAAC,CAAC6D,CAAF,GAAM,GAAN,GAAY7D,CAAC,CAAC8D,CAArB;AACD,GAHH,EAIGwS,IAJH,CAIQ,GAJR,CAJG,EAUJnU,IAVI,CAUC,OAVD,EAUU,iBAVV,EAWJA,IAXI,CAWC,WAXD,EAWc,eAAe,CAACqH,CAAD,GAAK,CAApB,GAAwB,GAAxB,GAA8BC,CAAC,GAAG,CAAlC,GAAsC,GAXpD,CAAP;AAYD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5ED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMxK,MAAM,GAAG;AACb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACED,EAAAA,KAAK,EAAE,SAXM;AAYbmB,EAAAA,cAAc,EAAEnB,4EAAA,EAZH;AAabub,EAAAA,QAAQ,EAAE7X,SAbG;;AAcb;AACA8X,EAAAA,WAAW,EAAE,KAfA;;AAiBb;AACF;AACA;AACA;AACA;AACA;AACA;AACEnZ,EAAAA,UAAU,EAAE,6CAxBC;;AA0Bb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEoZ,EAAAA,QAAQ,EAAE,CAvCG;;AAyCb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,aAAa,EAAE,QArDF;;AAuDb;AACF;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,WAAW,EAAE,IA9DA;;AAgEb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACElO,EAAAA,mBAAmB,EAAE,KA3ER;;AA6Eb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE3L,EAAAA,MAAM,EAAE,CAAC,QAAD,EAAW,eAAX,EAA4B,aAA5B,EAA2C,aAA3C,CAvFK;;AAyFb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE8Z,EAAAA,gBAAgB,EAAE,KArGL;;AAuGb;AACF;AACA;AACA;AACA;AACEC,EAAAA,mBAAmB,EAAEnY,SA5GR;;AA8Gb;AACAG,EAAAA,SAAS,EAAE;AACT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIiY,IAAAA,cAAc,EAAE,CAbP;;AAeT;AACJ;AACA;AACA;AACA;AACA;AACA;AACIhY,IAAAA,UAAU,EAAE,IAtBH;;AAwBT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIiY,IAAAA,WAAW,EAAE,EApCJ;;AAsCT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EAlDJ;;AAoDT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI/O,IAAAA,KAAK,EAAE,OA7DE;AA8DT;AACA;AACA5I,IAAAA,OAAO,EAAE,EAhEA;;AAkET;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI4X,IAAAA,WAAW,EAAE,IA9EJ;;AAgFT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE;AA5FR,GA/GE;;AA8Mb;AACAC,EAAAA,QAAQ,EAAE;AACR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,EART;;AAUR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EAjBR;;AAmBR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EA1BR;;AA4BR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EAnCL;;AAqCR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIpY,IAAAA,KAAK,EAAE,GA5CC;;AA8CR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,EArDA;;AAuDR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIoY,IAAAA,SAAS,EAAE,EA9DH;;AAgER;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,CAvEP;;AAyER;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,EAhFJ;;AAkFR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EAzFP;;AA2FR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,QAlGN;;AAoGR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,IA3GN;;AA6GR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,KAtHJ;;AAwHR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,CAnIT;;AAqIR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACId,IAAAA,WAAW,EAAE,IA/IL;;AAiJR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIe,IAAAA,WAAW,EAAE,KA5JL;;AA8JR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,mBAAmB,EAAE,KArKb;;AAuKR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EA9KP;;AAgLR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,2BAvLT;;AAyLR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,GA9LT;;AAgMR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,EAvMN;;AAyMR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,4CAhNR;;AAkNR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,GAvNR;;AAyNR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,SAAS,EAAE,QAhOH;;AAkOR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,EAzOT;;AA2OR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,iBAAiB,EAAE,4CAlPX;;AAoPR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,iBAAiB,EAAE,GAzPX;;AA2PR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,IAAI,EAAE,KAhQE;;AAkQR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EAvQL;;AAyQR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EA9QP;;AAgRR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EArRR;AAuRRC,IAAAA,WAAW,EAAE,uBAAY;AACvB,aAAO;AACL3b,QAAAA,UAAU,EAAE,KAAKqb,iBADZ;AAELO,QAAAA,QAAQ,EAAE,KAAKR,eAFV;AAGLS,QAAAA,UAAU,EAAE,KAAKP;AAHZ,OAAP;AAKD,KA7RO;AA8RRQ,IAAAA,QAAQ,EAAE,oBAAY;AACpB,aAAO;AACL9b,QAAAA,UAAU,EAAE,KAAKib,cADZ;AAELW,QAAAA,QAAQ,EAAE,KAAKZ,YAFV;AAGLa,QAAAA,UAAU,EAAE,KAAKX;AAHZ,OAAP;AAKD,KApSO;AAqSRa,IAAAA,SAAS,EAAE,qBAAY;AACrB,aAAO;AACL/b,QAAAA,UAAU,EAAE,KAAK8a,eADZ;AAELc,QAAAA,QAAQ,EAAE,KAAKf,aAFV;AAGLgB,QAAAA,UAAU,EAAE,KAAKd;AAHZ,OAAP;AAKD;AA3SO,GA/MG;;AA6fb;AACAiB,EAAAA,KAAK,EAAE;AACL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EAVX;;AAYL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,SAAS,EAAE,EAnBN;;AAqBL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,CA5BH;;AA8BL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,EArCP;;AAuCL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,EA9CT;;AAgDL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EAvDR;;AAyDL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,oBAAoB,EAAE,EAhEjB;;AAkEL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIX,IAAAA,QAAQ,EAAE,EAzEL;;AA2EL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIY,IAAAA,eAAe,EAAE,EAlFZ;;AAoFL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,mBAAmB,EAAE,CA3FhB;;AA6FL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,UAxGP;;AA0GL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI9C,IAAAA,WAAW,EAAE,IAtHR;;AAwHL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI+C,IAAAA,OAAO,EAAE,KAjIJ;AAmILC,IAAAA,QAAQ,EAAEvb;AAnIL,GA9fM;;AAooBb;AACAwb,EAAAA,OAAO,EAAE;AACP;AACJ;AACA;AACA;AACA;AACA;AACA;AACI7C,IAAAA,cAAc,EAAE,EART;;AAUP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EAjBT;;AAmBP;AACJ;AACA;AACA;AACA;AACA;AACA;AACI6C,IAAAA,UAAU,EAAE,GA1BL;;AA4BP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIhb,IAAAA,KAAK,EAAE,GAnCA;;AAqCP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,EA5CD;;AA8CP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIoY,IAAAA,SAAS,EAAE,EArDJ;;AAuDP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,CA9DR;;AAgEP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,EAvEL;;AAyEP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EApFR;;AAsFP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,QA7FP;;AA+FP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIG,IAAAA,eAAe,EAAE,CA1GV;;AA4GP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACId,IAAAA,WAAW,EAAE,IAxHN;;AA0HP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIe,IAAAA,WAAW,EAAE,KArIN;AAsIPoC,IAAAA,YAAY,EAAE,EAtIP;AAuIPC,IAAAA,cAAc,EAAE,2BAvIT;AAwIPC,IAAAA,UAAU,EAAE,EAxIL;AAyIP;AACAlD,IAAAA,eAAe,EAAE,EA1IV;AA4IP;AACAmD,IAAAA,aAAa,EAAE,IA7IR;AA8IPC,IAAAA,YAAY,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,CA9IP;AAgJPC,IAAAA,YAAY,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,CAhJP;AAiJPC,IAAAA,cAAc,EAAE,CAAC,MAAD;AAjJT,GAroBI;AAwxBbtc,EAAAA,KAAK,EAAE;AACLqK,IAAAA,mBAAmB,EAAE,KADhB;;AAGL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIwO,IAAAA,WAAW,EAAE,IAfR;;AAgBL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE;AA5BZ,GAxxBM;AAszBbyD,EAAAA,GAAG,EAAE;AACHlS,IAAAA,mBAAmB,EAAE,KADlB;AAGHwR,IAAAA,QAAQ,EAAEvb,SAHP;;AAKH;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIuY,IAAAA,WAAW,EAAE;AAjBV,GAtzBQ;AAy0BbzO,EAAAA,KAAK,EAAE;AACLoS,IAAAA,aAAa,EAAE,EADV;AAELC,IAAAA,QAAQ,EAAE,CAFL;AAGLxb,IAAAA,OAAO,EAAE,CAHJ;AAILyb,IAAAA,UAAU,EAAE,EAJP;AAKLC,IAAAA,UAAU,EAAE,CAAC,EALR;AAMLrD,IAAAA,UAAU,EAAE,EANP;AAOLsD,IAAAA,SAAS,EAAE,EAPN;AAQLC,IAAAA,UAAU,EAAE,CARP;AASL;AACAC,IAAAA,WAAW,EAAE,CAVR;AAWL;AACA;AACAC,IAAAA,cAAc,EAAE,IAbX;AAcLlC,IAAAA,QAAQ,EAAE,EAdL;AAeLmC,IAAAA,WAAW,EAAE,EAfR;AAgBLC,IAAAA,gBAAgB,EAAE,IAhBb;AAiBLC,IAAAA,iBAAiB,EAAE,EAjBd;AAkBLC,IAAAA,MAAM,EAAE,CAlBH;;AAmBL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACItE,IAAAA,WAAW,EAAE,IA/BR;;AAgCL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE;AA5CZ,GAz0BM;;AAw3Bb;AACAsE,EAAAA,EAAE,EAAE;AACF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI1E,IAAAA,cAAc,EAAE,EAbd;;AAeF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI2E,IAAAA,eAAe,EAAE,IA5Bf;;AA8BF;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,GArCd;;AAuCF;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,EA9Cf;;AAgDF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EA5Db;;AA8DF;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,MArEN;;AAuEF;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,IAAI,EAAE,UA9EJ;;AAgFF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI7C,IAAAA,QAAQ,EAAE,EAzFR;;AA2FF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIhC,IAAAA,WAAW,EAAE;AAvGX,GAz3BS;;AAm+Bb;AACA8E,EAAAA,GAAG,EAAE;AACH9B,IAAAA,QAAQ,EAAEvb,SADP;;AAGH;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIuY,IAAAA,WAAW,EAAE;AAfV,GAp+BQ;;AAs/Bb;AACA+E,EAAAA,WAAW,EAAE;AACX/B,IAAAA,QAAQ,EAAEvb,SADC;;AAGX;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIuY,IAAAA,WAAW,EAAE,IAfF;AAiBXgF,IAAAA,SAAS,EAAE,SAjBA;AAkBXC,IAAAA,UAAU,EAAE,MAlBD;AAmBXC,IAAAA,gBAAgB,EAAE,OAnBP;AAoBXC,IAAAA,iBAAiB,EAAE,MApBR;AAqBXC,IAAAA,cAAc,EAAE,GArBL;AAsBXC,IAAAA,eAAe,EAAE,GAtBN;AAuBXrD,IAAAA,QAAQ,EAAE,EAvBC;AAwBXsD,IAAAA,YAAY,EAAE,EAxBH;AAyBXC,IAAAA,WAAW,EAAE;AAzBF;AAv/BA,CAAf;AAohCAvhB,MAAM,CAACmD,KAAP,CAAaqK,mBAAb,GAAmCxN,MAAM,CAACwN,mBAA1C;AACAxN,MAAM,CAAC0f,GAAP,CAAWlS,mBAAX,GAAiCxN,MAAM,CAACwN,mBAAxC;;AAEA,IAAMgU,MAAM,GAAG,SAATA,MAAS,CAACC,GAAD;AAAA,MAAMC,MAAN,uEAAe,EAAf;AAAA,SACbxhB,MAAM,CAAC0B,IAAP,CAAY6f,GAAZ,EAAiBE,MAAjB,CAAwB,UAAC1W,GAAD,EAAMhF,EAAN,EAAa;AACnC,QAAIqB,KAAK,CAACC,OAAN,CAAcka,GAAG,CAACxb,EAAD,CAAjB,CAAJ,EAA4B;AAC1B,aAAOgF,GAAP;AACD,KAFD,MAEO,IAAI,QAAOwW,GAAG,CAACxb,EAAD,CAAV,MAAmB,QAAnB,IAA+Bwb,GAAG,CAACxb,EAAD,CAAH,KAAY,IAA/C,EAAqD;AAC1D,0CAAWgF,GAAX,IAAgByW,MAAM,GAAGzb,EAAzB,sBAAgCub,MAAM,CAACC,GAAG,CAACxb,EAAD,CAAJ,EAAU,EAAV,CAAtC;AACD;;AACD,wCAAWgF,GAAX,IAAgByW,MAAM,GAAGzb,EAAzB;AACD,GAPD,EAOG,EAPH,CADa;AAAA,CAAf;;AAUO,IAAM2b,UAAU,GAAGJ,MAAM,CAACxhB,MAAD,EAAS,EAAT,CAAzB;AACP,iEAAeA,MAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzjCA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMgiB,qBAAqB,GAAG,UAA9B;AAEA,IAAIC,SAAS,GAAG,EAAhB;AACA,IAAI9c,OAAO,GAAG,EAAd;AACA,IAAI+c,YAAY,GAAG,CAAnB;AAEA,IAAIC,IAAI,GAAG,EAAX;AAEO,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BlS,IAA9B,EAAoC;AAChE2R,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDlS,IAApD;AACD,CAFM;;AAIP,IAAMmS,qBAAqB,GAAG,SAAxBA,qBAAwB,CAAUxf,EAAV,EAAc;AAC1C,MAAIyf,WAAW,GAAG,EAAlB;AACA,MAAIC,SAAS,GAAG1f,EAAhB;;AAEA,MAAIA,EAAE,CAACd,OAAH,CAAW,GAAX,IAAkB,CAAtB,EAAyB;AACvB,QAAIoF,KAAK,GAAGtE,EAAE,CAACsE,KAAH,CAAS,GAAT,CAAZ;AACAob,IAAAA,SAAS,GAAGpb,KAAK,CAAC,CAAD,CAAjB;AAEAmb,IAAAA,WAAW,GAAGnb,KAAK,CAAC,CAAD,CAAnB;AACD;;AAED,SAAO;AAAEob,IAAAA,SAAS,EAAEA,SAAb;AAAwBrS,IAAAA,IAAI,EAAEoS;AAA9B,GAAP;AACD,CAZD;AAcA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAME,QAAQ,GAAG,SAAXA,QAAW,CAAU3f,EAAV,EAAc;AACpC,MAAI4f,OAAO,GAAGJ,qBAAqB,CAACxf,EAAD,CAAnC,CADoC,CAEpC;;AACA,MAAI,OAAOoC,OAAO,CAACwd,OAAO,CAACF,SAAT,CAAd,KAAsC,WAA1C,EAAuD;AAEvDtd,EAAAA,OAAO,CAACwd,OAAO,CAACF,SAAT,CAAP,GAA6B;AAC3B1f,IAAAA,EAAE,EAAE4f,OAAO,CAACF,SADe;AAE3BrS,IAAAA,IAAI,EAAEuS,OAAO,CAACvS,IAFa;AAG3BwS,IAAAA,UAAU,EAAE,EAHe;AAI3BlI,IAAAA,OAAO,EAAE,EAJkB;AAK3BR,IAAAA,OAAO,EAAE,EALkB;AAM3BR,IAAAA,WAAW,EAAE,EANc;AAO3BvC,IAAAA,KAAK,EAAE6K,qBAAqB,GAAGW,OAAO,CAACF,SAAhC,GAA4C,GAA5C,GAAkDP;AAP9B,GAA7B;AAUAA,EAAAA,YAAY;AACb,CAhBM;AAkBP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMW,WAAW,GAAG,SAAdA,WAAc,CAAU9f,EAAV,EAAc;AACvC,MAAM+f,SAAS,GAAG5iB,MAAM,CAAC0B,IAAP,CAAYuD,OAAZ,CAAlB;;AACA,OAAK,IAAItE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiiB,SAAS,CAAChiB,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;AACzC,QAAIsE,OAAO,CAAC2d,SAAS,CAACjiB,CAAD,CAAV,CAAP,CAAsBkC,EAAtB,KAA6BA,EAAjC,EAAqC;AACnC,aAAOoC,OAAO,CAAC2d,SAAS,CAACjiB,CAAD,CAAV,CAAP,CAAsBsW,KAA7B;AACD;AACF;AACF,CAPM;AASA,IAAMrR,KAAK,GAAG,SAARA,KAAQ,GAAY;AAC/Bmc,EAAAA,SAAS,GAAG,EAAZ;AACA9c,EAAAA,OAAO,GAAG,EAAV;AACAgd,EAAAA,IAAI,GAAG,EAAP;AACAA,EAAAA,IAAI,CAAC9f,IAAL,CAAU0gB,aAAV;AACD,CALM;AAOA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAUjgB,EAAV,EAAc;AACpC,SAAOoC,OAAO,CAACpC,EAAD,CAAd;AACD,CAFM;AAGA,IAAMkgB,UAAU,GAAG,SAAbA,UAAa,GAAY;AACpC,SAAO9d,OAAP;AACD,CAFM;AAIA,IAAM+d,YAAY,GAAG,SAAfA,YAAe,GAAY;AACtC,SAAOjB,SAAP;AACD,CAFM;AAIA,IAAMkB,WAAW,GAAG,SAAdA,WAAc,CAAUC,QAAV,EAAoB;AAC7CtjB,EAAAA,8CAAA,CAAU,sBAAsByE,IAAI,CAACC,SAAL,CAAe4e,QAAf,CAAhC;AACAV,EAAAA,QAAQ,CAACU,QAAQ,CAACC,GAAV,CAAR;AACAX,EAAAA,QAAQ,CAACU,QAAQ,CAACE,GAAV,CAAR;AAEAF,EAAAA,QAAQ,CAACC,GAAT,GAAed,qBAAqB,CAACa,QAAQ,CAACC,GAAV,CAArB,CAAoCZ,SAAnD;AACAW,EAAAA,QAAQ,CAACE,GAAT,GAAef,qBAAqB,CAACa,QAAQ,CAACE,GAAV,CAArB,CAAoCb,SAAnD;AAEAR,EAAAA,SAAS,CAAC5f,IAAV,CAAe+gB,QAAf;AACD,CATM;AAWP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMG,aAAa,GAAG,SAAhBA,aAAgB,CAAUd,SAAV,EAAqBe,UAArB,EAAiC;AAC5D,MAAMC,kBAAkB,GAAGlB,qBAAqB,CAACE,SAAD,CAArB,CAAiCA,SAA5D;AACAtd,EAAAA,OAAO,CAACse,kBAAD,CAAP,CAA4B/J,WAA5B,CAAwCrX,IAAxC,CAA6CmhB,UAA7C;AACD,CAHM;AAKP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAME,SAAS,GAAG,SAAZA,SAAY,CAAUjB,SAAV,EAAqBkB,MAArB,EAA6B;AACpD,MAAMF,kBAAkB,GAAGlB,qBAAqB,CAACE,SAAD,CAArB,CAAiCA,SAA5D;AACA,MAAMmB,QAAQ,GAAGze,OAAO,CAACse,kBAAD,CAAxB;;AAEA,MAAI,OAAOE,MAAP,KAAkB,QAAtB,EAAgC;AAC9B;AACA,QAAME,YAAY,GAAGF,MAAM,CAAC/b,IAAP,EAArB;;AAEA,QAAIic,YAAY,CAACC,UAAb,CAAwB,IAAxB,KAAiCD,YAAY,CAACE,QAAb,CAAsB,IAAtB,CAArC,EAAkE;AAChE;AACAH,MAAAA,QAAQ,CAAClK,WAAT,CAAqBrX,IAArB,CAA0BwhB,YAAY,CAACG,SAAb,CAAuB,CAAvB,EAA0BH,YAAY,CAAC/iB,MAAb,GAAsB,CAAhD,CAA1B;AACD,KAHD,MAGO,IAAI+iB,YAAY,CAAC5hB,OAAb,CAAqB,GAArB,IAA4B,CAAhC,EAAmC;AACxC2hB,MAAAA,QAAQ,CAAClJ,OAAT,CAAiBrY,IAAjB,CAAsBwhB,YAAtB;AACD,KAFM,MAEA,IAAIA,YAAJ,EAAkB;AACvBD,MAAAA,QAAQ,CAAC1J,OAAT,CAAiB7X,IAAjB,CAAsBwhB,YAAtB;AACD;AACF;AACF,CAjBM;AAmBA,IAAMI,UAAU,GAAG,SAAbA,UAAa,CAAUxB,SAAV,EAAqBvI,OAArB,EAA8B;AACtD,MAAI5S,KAAK,CAACC,OAAN,CAAc2S,OAAd,CAAJ,EAA4B;AAC1BA,IAAAA,OAAO,CAACvN,OAAR;AACAuN,IAAAA,OAAO,CAACpY,OAAR,CAAgB,UAAC6hB,MAAD;AAAA,aAAYD,SAAS,CAACjB,SAAD,EAAYkB,MAAZ,CAArB;AAAA,KAAhB;AACD;AACF,CALM;AAOA,IAAMO,YAAY,GAAG,SAAfA,YAAe,CAAU9gB,KAAV,EAAiB;AAC3C,MAAIA,KAAK,CAAC4gB,SAAN,CAAgB,CAAhB,EAAmB,CAAnB,MAA0B,GAA9B,EAAmC;AACjC,WAAO5gB,KAAK,CAAC+gB,MAAN,CAAa,CAAb,EAAgBvc,IAAhB,EAAP;AACD,GAFD,MAEO;AACL,WAAOxE,KAAK,CAACwE,IAAN,EAAP;AACD;AACF,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMwc,WAAW,GAAG,SAAdA,WAAc,CAAUC,GAAV,EAAe5B,SAAf,EAA0B;AACnD4B,EAAAA,GAAG,CAAChd,KAAJ,CAAU,GAAV,EAAevF,OAAf,CAAuB,UAAUsT,GAAV,EAAe;AACpC,QAAIrS,EAAE,GAAGqS,GAAT;AACA,QAAIA,GAAG,CAAC,CAAD,CAAH,CAAOkP,KAAP,CAAa,IAAb,CAAJ,EAAwBvhB,EAAE,GAAGif,qBAAqB,GAAGjf,EAA7B;;AACxB,QAAI,OAAOoC,OAAO,CAACpC,EAAD,CAAd,KAAuB,WAA3B,EAAwC;AACtCoC,MAAAA,OAAO,CAACpC,EAAD,CAAP,CAAY6f,UAAZ,CAAuBvgB,IAAvB,CAA4BogB,SAA5B;AACD;AACF,GAND;AAOD,CARM;AAUP;AACA;AACA;AACA;AACA;AACA;;AACA,IAAM8B,UAAU,GAAG,SAAbA,UAAa,CAAUF,GAAV,EAAerJ,OAAf,EAAwB;AACzC,MAAMhb,MAAM,GAAG6hB,8CAAA,EAAf;AACAwC,EAAAA,GAAG,CAAChd,KAAJ,CAAU,GAAV,EAAevF,OAAf,CAAuB,UAAUiB,EAAV,EAAc;AACnC,QAAI,OAAOiY,OAAP,KAAmB,WAAvB,EAAoC;AAClC7V,MAAAA,OAAO,CAACpC,EAAD,CAAP,CAAYiY,OAAZ,GAAsB8G,mEAAA,CAAoB9G,OAApB,EAA6Bhb,MAA7B,CAAtB;AACD;AACF,GAJD;AAKD,CAPD;AASA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMwkB,OAAO,GAAG,SAAVA,OAAU,CAAUH,GAAV,EAAeI,OAAf,EAAwBC,MAAxB,EAAgC;AACrD,MAAM1kB,MAAM,GAAG6hB,8CAAA,EAAf;AACAwC,EAAAA,GAAG,CAAChd,KAAJ,CAAU,GAAV,EAAevF,OAAf,CAAuB,UAAUsT,GAAV,EAAe;AACpC,QAAIrS,EAAE,GAAGqS,GAAT;AACA,QAAIA,GAAG,CAAC,CAAD,CAAH,CAAOkP,KAAP,CAAa,IAAb,CAAJ,EAAwBvhB,EAAE,GAAGif,qBAAqB,GAAGjf,EAA7B;;AACxB,QAAI,OAAOoC,OAAO,CAACpC,EAAD,CAAd,KAAuB,WAA3B,EAAwC;AACtCoC,MAAAA,OAAO,CAACpC,EAAD,CAAP,CAAY+X,IAAZ,GAAmB/S,wDAAA,CAAgB0c,OAAhB,EAAyBzkB,MAAzB,CAAnB;;AACA,UAAI,OAAO0kB,MAAP,KAAkB,QAAtB,EAAgC;AAC9Bvf,QAAAA,OAAO,CAACpC,EAAD,CAAP,CAAYgY,UAAZ,GAAyB2J,MAAzB;AACD,OAFD,MAEO;AACLvf,QAAAA,OAAO,CAACpC,EAAD,CAAP,CAAYgY,UAAZ,GAAyB,QAAzB;AACD;AACF;AACF,GAXD;AAYAqJ,EAAAA,WAAW,CAACC,GAAD,EAAM,WAAN,CAAX;AACD,CAfM;AAiBP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMO,aAAa,GAAG,SAAhBA,aAAgB,CAAUP,GAAV,EAAeQ,YAAf,EAA6BC,YAA7B,EAA2C;AACtET,EAAAA,GAAG,CAAChd,KAAJ,CAAU,GAAV,EAAevF,OAAf,CAAuB,UAAUiB,EAAV,EAAc;AACnCgiB,IAAAA,YAAY,CAAChiB,EAAD,EAAK8hB,YAAL,EAAmBC,YAAnB,CAAZ;AACA3f,IAAAA,OAAO,CAACpC,EAAD,CAAP,CAAYkY,YAAZ,GAA2B,IAA3B;AACD,GAHD;AAIAmJ,EAAAA,WAAW,CAACC,GAAD,EAAM,WAAN,CAAX;AACD,CANM;;AAQP,IAAMU,YAAY,GAAG,SAAfA,YAAe,CAAU5N,KAAV,EAAiB0N,YAAjB,EAA+BC,YAA/B,EAA6C;AAChE,MAAM9kB,MAAM,GAAG6hB,8CAAA,EAAf;AACA,MAAI9e,EAAE,GAAGoU,KAAT;AACA,MAAI6N,MAAM,GAAGnC,WAAW,CAAC9f,EAAD,CAAxB;;AAEA,MAAI/C,MAAM,CAACyb,aAAP,KAAyB,OAA7B,EAAsC;AACpC;AACD;;AACD,MAAI,OAAOoJ,YAAP,KAAwB,WAA5B,EAAyC;AACvC;AACD;;AACD,MAAI,OAAO1f,OAAO,CAACpC,EAAD,CAAd,KAAuB,WAA3B,EAAwC;AACtC,QAAIkiB,OAAO,GAAG,EAAd;;AACA,QAAI,OAAOH,YAAP,KAAwB,QAA5B,EAAsC;AACpC;AACAG,MAAAA,OAAO,GAAGH,YAAY,CAACzd,KAAb,CAAmB,+BAAnB,CAAV;;AACA,WAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGokB,OAAO,CAACnkB,MAA5B,EAAoCD,CAAC,EAArC,EAAyC;AACvC,YAAIqkB,IAAI,GAAGD,OAAO,CAACpkB,CAAD,CAAP,CAAW+G,IAAX,EAAX;AACA;;AACA;;AACA,YAAIsd,IAAI,CAACC,MAAL,CAAY,CAAZ,MAAmB,GAAnB,IAA0BD,IAAI,CAACC,MAAL,CAAYD,IAAI,CAACpkB,MAAL,GAAc,CAA1B,MAAiC,GAA/D,EAAoE;AAClEokB,UAAAA,IAAI,GAAGA,IAAI,CAACf,MAAL,CAAY,CAAZ,EAAee,IAAI,CAACpkB,MAAL,GAAc,CAA7B,CAAP;AACD;;AACDmkB,QAAAA,OAAO,CAACpkB,CAAD,CAAP,GAAaqkB,IAAb;AACD;AACF;AAED;;;AACA,QAAID,OAAO,CAACnkB,MAAR,KAAmB,CAAvB,EAA0B;AACxBmkB,MAAAA,OAAO,CAAC5iB,IAAR,CAAa2iB,MAAb;AACD;;AAED7C,IAAAA,IAAI,CAAC9f,IAAL,CAAU,YAAY;AACpB,UAAMqD,IAAI,GAAGa,QAAQ,CAAC6e,aAAT,iBAA+BJ,MAA/B,SAAb;;AACA,UAAItf,IAAI,KAAK,IAAb,EAAmB;AACjBA,QAAAA,IAAI,CAAC2f,gBAAL,CACE,OADF,EAEE,YAAY;AACVtd,UAAAA,4DAAA,CAAAA,8CAAK,GAAS8c,YAAT,4BAA0BI,OAA1B,GAAL;AACD,SAJH,EAKE,KALF;AAOD;AACF,KAXD;AAYD;AACF,CA7CD;;AA+CO,IAAMM,aAAa,GAAG,SAAhBA,aAAgB,CAAUlK,OAAV,EAAmB;AAC9C8G,EAAAA,IAAI,CAACrgB,OAAL,CAAa,UAAU0jB,GAAV,EAAe;AAC1BA,IAAAA,GAAG,CAACnK,OAAD,CAAH;AACD,GAFD;AAGD,CAJM;AAMA,IAAMoK,QAAQ,GAAG;AACtBC,EAAAA,IAAI,EAAE,CADgB;AAEtBC,EAAAA,WAAW,EAAE;AAFS,CAAjB;AAKA,IAAMC,YAAY,GAAG;AAC1BC,EAAAA,WAAW,EAAE,CADa;AAE1BC,EAAAA,SAAS,EAAE,CAFe;AAG1BC,EAAAA,WAAW,EAAE,CAHa;AAI1BC,EAAAA,UAAU,EAAE;AAJc,CAArB;;AAOP,IAAMjD,aAAa,GAAG,SAAhBA,aAAgB,CAAU1H,OAAV,EAAmB;AACvC,MAAI4K,WAAW,GAAGxjB,0CAAM,CAAC,iBAAD,CAAxB;;AACA,MAAI,CAACwjB,WAAW,CAACC,OAAZ,IAAuBD,WAAxB,EAAqC,CAArC,EAAwC,CAAxC,MAA+C,IAAnD,EAAyD;AACvDA,IAAAA,WAAW,GAAGxjB,0CAAM,CAAC,MAAD,CAAN,CAAe4C,MAAf,CAAsB,KAAtB,EAA6BnC,IAA7B,CAAkC,OAAlC,EAA2C,gBAA3C,EAA6DuB,KAA7D,CAAmE,SAAnE,EAA8E,CAA9E,CAAd;AACD;;AAED,MAAM0hB,GAAG,GAAG1jB,0CAAM,CAAC4Y,OAAD,CAAN,CAAgB5Y,MAAhB,CAAuB,KAAvB,CAAZ;AAEA,MAAM4M,KAAK,GAAG8W,GAAG,CAACC,SAAJ,CAAc,QAAd,CAAd;AACA/W,EAAAA,KAAK,CACFgX,EADH,CACM,WADN,EACmB,YAAY;AAC3B,QAAMpgB,EAAE,GAAGxD,0CAAM,CAAC,IAAD,CAAjB;AACA,QAAM4V,KAAK,GAAGpS,EAAE,CAAC/C,IAAH,CAAQ,OAAR,CAAd,CAF2B,CAG3B;;AACA,QAAImV,KAAK,KAAK,IAAd,EAAoB;AAClB;AACD;;AACD,QAAM1V,IAAI,GAAG,KAAKsB,qBAAL,EAAb;AAEAgiB,IAAAA,WAAW,CAACK,UAAZ,GAAyBC,QAAzB,CAAkC,GAAlC,EAAuC9hB,KAAvC,CAA6C,SAA7C,EAAwD,IAAxD;AACAwhB,IAAAA,WAAW,CACRtf,IADH,CACQV,EAAE,CAAC/C,IAAH,CAAQ,OAAR,CADR,EAEGuB,KAFH,CAES,MAFT,EAEiBgJ,MAAM,CAAC+Y,OAAP,GAAiB7jB,IAAI,CAACuQ,IAAtB,GAA6B,CAACvQ,IAAI,CAAC8jB,KAAL,GAAa9jB,IAAI,CAACuQ,IAAnB,IAA2B,CAAxD,GAA4D,IAF7E,EAGGzO,KAHH,CAGS,KAHT,EAGgBgJ,MAAM,CAACiZ,OAAP,GAAiB/jB,IAAI,CAACwQ,GAAtB,GAA4B,EAA5B,GAAiC5M,QAAQ,CAACogB,IAAT,CAAcC,SAA/C,GAA2D,IAH3E;AAIA3gB,IAAAA,EAAE,CAAC4gB,OAAH,CAAW,OAAX,EAAoB,IAApB;AACD,GAhBH,EAiBGR,EAjBH,CAiBM,UAjBN,EAiBkB,YAAY;AAC1BJ,IAAAA,WAAW,CAACK,UAAZ,GAAyBC,QAAzB,CAAkC,GAAlC,EAAuC9hB,KAAvC,CAA6C,SAA7C,EAAwD,CAAxD;AACA,QAAMwB,EAAE,GAAGxD,0CAAM,CAAC,IAAD,CAAjB;AACAwD,IAAAA,EAAE,CAAC4gB,OAAH,CAAW,OAAX,EAAoB,KAApB;AACD,GArBH;AAsBD,CA/BD;;AAgCA1E,IAAI,CAAC9f,IAAL,CAAU0gB,aAAV;AAEA,IAAI+D,SAAS,GAAG,IAAhB;;AACA,IAAMC,YAAY,GAAG,SAAfA,YAAe;AAAA,SAAMD,SAAN;AAAA,CAArB;;AACA,IAAME,YAAY,GAAG,SAAfA,YAAe,CAAC7X,GAAD,EAAS;AAC5B2X,EAAAA,SAAS,GAAG3X,GAAZ;AACD,CAFD;;AAIA,iEAAe;AACbiT,EAAAA,cAAc,EAAdA,cADa;AAEb1gB,EAAAA,SAAS,EAAE;AAAA,WAAMmgB,8CAAA,GAAsB1e,KAA5B;AAAA,GAFE;AAGbuf,EAAAA,QAAQ,EAARA,QAHa;AAIb6C,EAAAA,aAAa,EAAbA,aAJa;AAKbzf,EAAAA,KAAK,EAALA,KALa;AAMbkd,EAAAA,QAAQ,EAARA,QANa;AAObC,EAAAA,UAAU,EAAVA,UAPa;AAQbM,EAAAA,aAAa,EAAbA,aARa;AASbL,EAAAA,YAAY,EAAZA,YATa;AAUbC,EAAAA,WAAW,EAAXA,WAVa;AAWb4D,EAAAA,YAAY,EAAZA,YAXa;AAYbC,EAAAA,YAAY,EAAZA,YAZa;AAabtD,EAAAA,SAAS,EAATA,SAba;AAcbO,EAAAA,UAAU,EAAVA,UAda;AAebC,EAAAA,YAAY,EAAZA,YAfa;AAgBbuB,EAAAA,QAAQ,EAARA,QAhBa;AAiBbG,EAAAA,YAAY,EAAZA,YAjBa;AAkBbhB,EAAAA,aAAa,EAAbA,aAlBa;AAmBbR,EAAAA,WAAW,EAAXA,WAnBa;AAoBbI,EAAAA,OAAO,EAAPA,OApBa;AAqBbD,EAAAA,UAAU,EAAVA,UArBa;AAsBb1B,EAAAA,WAAW,EAAXA;AAtBa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CAEA;;AACA;AACA;AACA;AAEAqE,2DAAA,GAAYD,gDAAZ;AAEA,IAAIQ,OAAO,GAAG,EAAd;AACA,IAAMrjB,OAAO,GAAG,EAAhB;AAEA,IAAM/C,IAAI,GAAG;AACXse,EAAAA,aAAa,EAAE,EADJ;AAEXvb,EAAAA,OAAO,EAAE,CAFE;AAGXyb,EAAAA,UAAU,EAAE;AAHD,CAAb;AAMA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM6H,UAAU,GAAG,SAAbA,UAAa,CAAUviB,OAAV,EAAmBwiB,CAAnB,EAAsB;AAC9C;AACA,MAAM/lB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYuD,OAAZ,CAAb;AACArF,EAAAA,6CAAA,CAAS,OAAT,EAAkB8B,IAAlB;AACA9B,EAAAA,6CAAA,CAASqF,OAAT,EAJ8C,CAM9C;;AACAvD,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUiB,EAAV,EAAc;AACzB,QAAM6kB,MAAM,GAAGziB,OAAO,CAACpC,EAAD,CAAtB;AAEA;AACJ;AACA;AACA;AACA;;AACI,QAAI8kB,WAAW,GAAG,EAAlB;;AACA,QAAID,MAAM,CAAChF,UAAP,CAAkB9hB,MAAlB,GAA2B,CAA/B,EAAkC;AAChC+mB,MAAAA,WAAW,GAAGA,WAAW,GAAG,GAAd,GAAoBD,MAAM,CAAChF,UAAP,CAAkBvL,IAAlB,CAAuB,GAAvB,CAAlC;AACD,KAXwB,CAYzB;AACA;AACA;;;AAEA,QAAMyQ,MAAM,GAAG;AAAEtkB,MAAAA,UAAU,EAAE;AAAd,KAAf,CAhByB,CAgBU;AAEnC;;AACA,QAAIsD,UAAU,GAAG8gB,MAAM,CAACvkB,IAAP,KAAgBI,SAAhB,GAA4BmkB,MAAM,CAACvkB,IAAnC,GAA0CukB,MAAM,CAAC7kB,EAAlE,CAnByB,CAqBzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAIglB,OAAO,GAAG,CAAd;AACA,QAAIC,MAAM,GAAG,EAAb,CAlDyB,CAmDzB;;AACA,YAAQJ,MAAM,CAACxX,IAAf;AACE,WAAK,OAAL;AACE4X,QAAAA,MAAM,GAAG,WAAT;AACA;;AACF;AACEA,QAAAA,MAAM,GAAG,WAAT;AALJ,KApDyB,CA2DzB;;;AACAL,IAAAA,CAAC,CAAC/X,OAAF,CAAUgY,MAAM,CAAC7kB,EAAjB,EAAqB;AACnBS,MAAAA,UAAU,EAAEskB,MAAM,CAACtkB,UADA;AAEnBmC,MAAAA,KAAK,EAAEqiB,MAFY;AAGnBzkB,MAAAA,SAAS,EAAEuD,UAHQ;AAInB2S,MAAAA,SAAS,EAAEmO,MAJQ;AAKnBljB,MAAAA,EAAE,EAAEqjB,OALe;AAMnBpjB,MAAAA,EAAE,EAAEojB,OANe;AAOnB5kB,MAAAA,KAAK,EAAE0kB,WAPY;AAQnBpjB,MAAAA,KAAK,EAAEqjB,MAAM,CAACrjB,KARK;AASnB1B,MAAAA,EAAE,EAAE6kB,MAAM,CAAC7kB,EATQ;AAUnBoU,MAAAA,KAAK,EAAEyQ,MAAM,CAACzQ,KAVK;AAWnB8D,MAAAA,YAAY,EAAE2M,MAAM,CAAC3M,YAXF;AAYnBH,MAAAA,IAAI,EAAE8M,MAAM,CAAC9M,IAZM;AAanB5W,MAAAA,KAAK,EAAE0jB,MAAM,CAACxX,IAAP,KAAgB,OAAhB,GAA0B,GAA1B,GAAgC3M,SAbpB;AAcnB2M,MAAAA,IAAI,EAAEwX,MAAM,CAACxX,IAdM;AAenBhM,MAAAA,OAAO,EAAE1C,kDAAS,GAAGkC,SAAZ,CAAsBQ;AAfZ,KAArB;AAkBAtE,IAAAA,6CAAA,CAAS,SAAT,EAAoB;AAClB0D,MAAAA,UAAU,EAAEskB,MAAM,CAACtkB,UADD;AAElBmC,MAAAA,KAAK,EAAEqiB,MAFW;AAGlBzkB,MAAAA,SAAS,EAAEuD,UAHO;AAIlBpC,MAAAA,EAAE,EAAEqjB,OAJc;AAKlBpjB,MAAAA,EAAE,EAAEojB,OALc;AAMlB5kB,MAAAA,KAAK,EAAE0kB,WANW;AAOlBpjB,MAAAA,KAAK,EAAEqjB,MAAM,CAACrjB,KAPI;AAQlB1B,MAAAA,EAAE,EAAE6kB,MAAM,CAAC7kB,EARO;AASlBmB,MAAAA,KAAK,EAAE0jB,MAAM,CAACxX,IAAP,KAAgB,OAAhB,GAA0B,GAA1B,GAAgC3M,SATrB;AAUlB2M,MAAAA,IAAI,EAAEwX,MAAM,CAACxX,IAVK;AAWlBhM,MAAAA,OAAO,EAAE1C,kDAAS,GAAGkC,SAAZ,CAAsBQ;AAXb,KAApB;AAaD,GA3FD;AA4FD,CAnGM;AAqGP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM6jB,YAAY,GAAG,SAAfA,YAAe,CAAUhG,SAAV,EAAqB0F,CAArB,EAAwB;AAClD,MAAIO,GAAG,GAAG,CAAV;AAEA,MAAIC,YAAJ;AACA,MAAIC,iBAAJ,CAJkD,CAMlD;AACA;AACA;AACA;AACA;;AAEAnG,EAAAA,SAAS,CAACngB,OAAV,CAAkB,UAAUqG,IAAV,EAAgB;AAChC+f,IAAAA,GAAG;AACH,QAAMG,QAAQ,GAAG,EAAjB,CAFgC,CAGhC;;AACAA,IAAAA,QAAQ,CAACljB,OAAT,GAAmB,UAAnB;AACAkjB,IAAAA,QAAQ,CAACjb,OAAT,GAAmBjF,IAAI,CAACib,QAAL,CAAcqC,QAAd,IAA0B,CAA1B,GAA8B,QAA9B,GAAyC,OAA5D;AAEA4C,IAAAA,QAAQ,CAACtlB,EAAT,GAAc,OAAOmlB,GAArB,CAPgC,CAQhC;;AACA,QAAI/f,IAAI,CAACiI,IAAL,KAAc,YAAlB,EAAgC;AAC9BiY,MAAAA,QAAQ,CAACC,SAAT,GAAqB,MAArB;AACD,KAFD,MAEO;AACLD,MAAAA,QAAQ,CAACC,SAAT,GAAqB,QAArB;AACD;;AAEDxoB,IAAAA,6CAAA,CAASuoB,QAAT,EAAmBlgB,IAAnB,EAfgC,CAgBhC;AACA;;AACAkgB,IAAAA,QAAQ,CAACxf,eAAT,GAA2BV,IAAI,CAACogB,cAAL,KAAwB,MAAxB,GAAiC,EAAjC,GAAsCpgB,IAAI,CAACogB,cAAtE;AACAF,IAAAA,QAAQ,CAACrf,YAAT,GAAwBb,IAAI,CAACqgB,cAAL,KAAwB,MAAxB,GAAiC,EAAjC,GAAsCrgB,IAAI,CAACqgB,cAAnE,CAnBgC,CAoBhC;AAEA;;AACAH,IAAAA,QAAQ,CAACre,cAAT,GAA0Bye,cAAc,CAACtgB,IAAI,CAACib,QAAL,CAAcsF,KAAf,CAAxC;AACAL,IAAAA,QAAQ,CAACpe,YAAT,GAAwBwe,cAAc,CAACtgB,IAAI,CAACib,QAAL,CAAcuF,KAAf,CAAtC;AACA,QAAIlkB,KAAK,GAAG,EAAZ;AACA,QAAIjB,UAAU,GAAG,EAAjB;;AAEA,QAAI,OAAO2E,IAAI,CAAC1D,KAAZ,KAAsB,WAA1B,EAAuC;AACrC,UAAMqjB,MAAM,GAAGR,0DAAkB,CAACnf,IAAI,CAAC1D,KAAN,CAAjC;AACAA,MAAAA,KAAK,GAAGqjB,MAAM,CAACrjB,KAAf;AACAjB,MAAAA,UAAU,GAAGskB,MAAM,CAACtkB,UAApB;AACD,KAJD,MAIO;AACLiB,MAAAA,KAAK,GAAG,WAAR;;AACA,UAAI,OAAO0jB,YAAP,KAAwB,WAA5B,EAAyC;AACvC1jB,QAAAA,KAAK,GAAG0jB,YAAR;AACD;;AACD,UAAI,OAAOC,iBAAP,KAA6B,WAAjC,EAA8C;AAC5C5kB,QAAAA,UAAU,GAAG4kB,iBAAb;AACD;AACF;;AAEDC,IAAAA,QAAQ,CAAC5jB,KAAT,GAAiBA,KAAjB;AACA4jB,IAAAA,QAAQ,CAAC7kB,UAAT,GAAsBA,UAAtB;;AAEA,QAAI,OAAO2E,IAAI,CAACygB,WAAZ,KAA4B,WAAhC,EAA6C;AAC3CP,MAAAA,QAAQ,CAACrb,KAAT,GAAiBqa,0DAAkB,CAAClf,IAAI,CAACygB,WAAN,EAAmBxB,2CAAnB,CAAnC;AACD,KAFD,MAEO,IAAI,OAAOnF,SAAS,CAAC4G,kBAAjB,KAAwC,WAA5C,EAAyD;AAC9DR,MAAAA,QAAQ,CAACrb,KAAT,GAAiBqa,0DAAkB,CAACpF,SAAS,CAAC4G,kBAAX,EAA+BzB,2CAA/B,CAAnC;AACD,KAFM,MAEA;AACLiB,MAAAA,QAAQ,CAACrb,KAAT,GAAiBqa,0DAAkB,CAAChmB,IAAI,CAAC2L,KAAN,EAAaoa,2CAAb,CAAnC;AACD;;AAEDjf,IAAAA,IAAI,CAAC9E,IAAL,GAAY8E,IAAI,CAACkQ,KAAjB;;AACA,QAAI,OAAOlQ,IAAI,CAAC9E,IAAZ,KAAqB,WAAzB,EAAsC;AACpC,UAAI,OAAO8E,IAAI,CAAC1D,KAAZ,KAAsB,WAA1B,EAAuC;AACrC4jB,QAAAA,QAAQ,CAACS,cAAT,GAA0B,YAA1B;AACD;AACF,KAJD,MAIO;AACLT,MAAAA,QAAQ,CAACS,cAAT,GAA0B,YAA1B;AACAT,MAAAA,QAAQ,CAACU,QAAT,GAAoB,GAApB;;AAEA,UAAIrnB,kDAAS,GAAGkC,SAAZ,CAAsBC,UAA1B,EAAsC;AAAE;AACtCwkB,QAAAA,QAAQ,CAACW,SAAT,GAAqB,MAArB;AACAX,QAAAA,QAAQ,CAACjlB,KAAT,GAAiB,6BAA6B+E,IAAI,CAAC9E,IAAlC,GAAyC,SAA1D;AACD,OAHD,MAGO;AACLglB,QAAAA,QAAQ,CAACW,SAAT,GAAqB,MAArB;AACAX,QAAAA,QAAQ,CAACjlB,KAAT,GAAiB+E,IAAI,CAAC9E,IAAL,CAAU0D,OAAV,CAAkB+a,qEAAlB,EAAyC,IAAzC,CAAjB;;AAEA,YAAI,OAAO3Z,IAAI,CAAC1D,KAAZ,KAAsB,WAA1B,EAAuC;AACrC4jB,UAAAA,QAAQ,CAAC5jB,KAAT,GAAiB4jB,QAAQ,CAAC5jB,KAAT,IAAkB,6CAAnC;AACD;;AAED4jB,QAAAA,QAAQ,CAAC7kB,UAAT,GAAsB6kB,QAAQ,CAAC7kB,UAAT,CAAoBuD,OAApB,CAA4B,QAA5B,EAAsC,OAAtC,CAAtB;AACD;AACF,KA3E+B,CA4EhC;;;AACA4gB,IAAAA,CAAC,CAAC7S,OAAF,CAAU3M,IAAI,CAACkb,GAAf,EAAoBlb,IAAI,CAACmb,GAAzB,EAA8B+E,QAA9B,EAAwCH,GAAxC;AACD,GA9ED;AA+ED,CA3FM,EA6FP;;AACA,IAAMgB,UAAU,GAAG,SAAbA,UAAa,CAAU9lB,KAAV,EAAiB;AAClC,MAAMxB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAY6lB,OAAZ,CAAb;;AAEA,OAAK,IAAI5mB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,IAAI,CAACd,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpC,QAAI4mB,OAAO,CAAC7lB,IAAI,CAACf,CAAD,CAAL,CAAP,CAAiBuC,KAAjB,KAA2BA,KAA/B,EAAsC;AACpC,aAAOxB,IAAI,CAACf,CAAD,CAAX;AACD;AACF;;AAED,SAAO4C,SAAP;AACD,CAVD;;AAYO,IAAM0lB,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMxnB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYwnB,GAAZ,CAAb;AAEAxnB,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUC,GAAV,EAAe;AAC1BV,IAAAA,IAAI,CAACU,GAAD,CAAJ,GAAYqnB,GAAG,CAACrnB,GAAD,CAAf;AACD,GAFD;AAGD,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMsnB,OAAO,GAAG,SAAVA,OAAU,CAAUhmB,IAAV,EAAgBN,EAAhB,EAAoB;AACzC0kB,EAAAA,OAAO,GAAG,EAAV;AACAP,EAAAA,iEAAA;AACAA,EAAAA,8DAAA,CAAa7jB,IAAb;AAEAvD,EAAAA,6CAAA,CAAS,uBAAuBuD,IAAhC,EALyC,CAOzC;;AACA,MAAMimB,OAAO,GAAG7mB,0CAAM,gBAASM,EAAT,QAAtB,CARyC,CASzC;AAEA;;AACA,MAAM4kB,CAAC,GAAG,IAAI3Z,uDAAJ,CAAmB;AAC3BgI,IAAAA,UAAU,EAAE;AADe,GAAnB,CAAV,CAZyC,CAgBzC;;AACA2R,EAAAA,CAAC,CAACzR,QAAF,CAAW;AACTqT,IAAAA,YAAY,EAAE;AADL,GAAX,EAjByC,CAqBzC;;AACA5B,EAAAA,CAAC,CAACpR,mBAAF,CAAsB,YAAY;AAChC,WAAO,EAAP;AACD,GAFD;AAIA,MAAMpR,OAAO,GAAG8hB,2DAAA,EAAhB;AACAnnB,EAAAA,6CAAA,CAAS,UAAT;AACAA,EAAAA,6CAAA,CAASqF,OAAT;AACA,MAAMvD,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYuD,OAAZ,CAAb;;AACA,OAAK,IAAItE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,IAAI,CAACd,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpC,QAAM2oB,QAAQ,GAAGrkB,OAAO,CAACvD,IAAI,CAACf,CAAD,CAAL,CAAxB;AACA,QAAMgC,IAAI,GAAGskB,0DAAA,CAAkBmC,OAAlB,EAA2BE,QAA3B,EAAqCnoB,IAArC,CAAb;AACAomB,IAAAA,OAAO,CAAC5kB,IAAI,CAACE,EAAN,CAAP,GAAmBF,IAAnB,CAHoC,CAKpC;AACA;AACA;;AACA8kB,IAAAA,CAAC,CAAC/X,OAAF,CAAU/M,IAAI,CAACE,EAAf,EAAmBF,IAAnB;AAEA/C,IAAAA,6CAAA,CAAS,iBAAiB+C,IAAI,CAACsB,MAA/B;AACD;;AAED,MAAM8d,SAAS,GAAGgF,6DAAA,EAAlB;AACAnnB,EAAAA,6CAAA,CAAS,YAAT,EAAuBmiB,SAAvB;AACAA,EAAAA,SAAS,CAACngB,OAAV,CAAkB,UAAUshB,QAAV,EAAoB;AACpCtjB,IAAAA,6CAAA,CACE,UAAUopB,UAAU,CAAC9F,QAAQ,CAACC,GAAV,CAApB,GAAqC6F,UAAU,CAAC9F,QAAQ,CAACE,GAAV,CAA/C,GAAgE/e,IAAI,CAACC,SAAL,CAAe4e,QAAf,CADlE;AAGAuE,IAAAA,CAAC,CAAC7S,OAAF,CACEoU,UAAU,CAAC9F,QAAQ,CAACC,GAAV,CADZ,EAEE6F,UAAU,CAAC9F,QAAQ,CAACE,GAAV,CAFZ,EAGE;AACEF,MAAAA,QAAQ,EAAEA;AADZ,KAHF,EAMEA,QAAQ,CAAC/K,KAAT,IAAkB,SANpB;AAQD,GAZD;AAcAtK,EAAAA,mDAAA,CAAa4Z,CAAb;AACAA,EAAAA,CAAC,CAACtY,KAAF,GAAUvN,OAAV,CAAkB,UAAUuK,CAAV,EAAa;AAC7B,QAAI,OAAOA,CAAP,KAAa,WAAb,IAA4B,OAAOsb,CAAC,CAAC9kB,IAAF,CAAOwJ,CAAP,CAAP,KAAqB,WAArD,EAAkE;AAChEvM,MAAAA,8CAAA,CAAU,UAAUuM,CAAV,GAAc,IAAd,GAAqB9H,IAAI,CAACC,SAAL,CAAemjB,CAAC,CAAC9kB,IAAF,CAAOwJ,CAAP,CAAf,CAA/B;AACA5J,MAAAA,0CAAM,CAAC,MAAMogB,qDAAW,CAACxW,CAAD,CAAlB,CAAN,CAA6BnJ,IAA7B,CACE,WADF,EAEE,gBACGykB,CAAC,CAAC9kB,IAAF,CAAOwJ,CAAP,EAAUzH,CAAV,GAAc+iB,CAAC,CAAC9kB,IAAF,CAAOwJ,CAAP,EAAUnI,KAAV,GAAkB,CADnC,IAEE,GAFF,IAGGyjB,CAAC,CAAC9kB,IAAF,CAAOwJ,CAAP,EAAUxH,CAAV,GAAc8iB,CAAC,CAAC9kB,IAAF,CAAOwJ,CAAP,EAAUlI,MAAV,GAAmB,CAHpC,IAIE,IANJ;AAQD;AACF,GAZD;AAcAwjB,EAAAA,CAAC,CAACrY,KAAF,GAAUxN,OAAV,CAAkB,UAAUgK,CAAV,EAAa;AAC7B,QAAI,OAAOA,CAAP,KAAa,WAAb,IAA4B,OAAO6b,CAAC,CAACxf,IAAF,CAAO2D,CAAP,CAAP,KAAqB,WAArD,EAAkE;AAChEhM,MAAAA,8CAAA,CAAU,UAAUgM,CAAC,CAACO,CAAZ,GAAgB,MAAhB,GAAyBP,CAAC,CAACvB,CAA3B,GAA+B,IAA/B,GAAsChG,IAAI,CAACC,SAAL,CAAemjB,CAAC,CAACxf,IAAF,CAAO2D,CAAP,CAAf,CAAhD;AACAqb,MAAAA,yDAAA,CAAiBmC,OAAjB,EAA0B3B,CAAC,CAACxf,IAAF,CAAO2D,CAAP,CAA1B,EAAqC6b,CAAC,CAACxf,IAAF,CAAO2D,CAAP,EAAUsX,QAA/C,EAAyD/hB,IAAzD;AACD;AACF,GALD;AAOA,MAAMsoB,SAAS,GAAGL,OAAO,CAACzmB,IAAR,GAAec,OAAf,EAAlB;AACA,MAAMO,KAAK,GAAGylB,SAAS,CAACzlB,KAAV,GAAkBE,OAAO,GAAG,CAA1C;AACA,MAAMD,MAAM,GAAGwlB,SAAS,CAACxlB,MAAV,GAAmBC,OAAO,GAAG,CAA5C;AAEAmjB,EAAAA,wDAAgB,CAAC+B,OAAD,EAAUnlB,MAAV,EAAkBD,KAAlB,EAAyB7C,IAAI,CAAC2a,WAA9B,CAAhB,CArFyC,CAuFzC;;AACA,MAAM4N,IAAI,aAAMD,SAAS,CAAC/kB,CAAV,GAAcR,OAApB,cAA+BulB,SAAS,CAAC9kB,CAAV,GAAcT,OAA7C,cAAwDF,KAAxD,cAAiEC,MAAjE,CAAV;AACArE,EAAAA,8CAAA,mBAAqB8pB,IAArB;AACAN,EAAAA,OAAO,CAACpmB,IAAR,CAAa,SAAb,EAAwB0mB,IAAxB;AACD,CA3FM;AA6FA,IAAMC,IAAI,GAAG,SAAPA,IAAO,CAAUxmB,IAAV,EAAgBN,EAAhB,EAAoB;AACtCjD,EAAAA,6CAAA,CAAS,eAAT;AACAmnB,EAAAA,sDAAA,GAFsC,CAGtC;AACA;AAEA;AACA;;AACAC,EAAAA,8DAAA,CAAa7jB,IAAb,EARsC,CAStC;AACA;AACA;AAEA;AACA;;AAEA,MAAMhC,IAAI,GAAGK,kDAAS,GAAGkC,SAAzB;AACA9D,EAAAA,6CAAA,CAAS,SAAT,EAAoBuB,IAApB;AACA,MAAMya,WAAW,GAAGza,IAAI,CAACya,WAAL,IAAoB,EAAxC;AACA,MAAMC,WAAW,GAAG1a,IAAI,CAAC0a,WAAL,IAAoB,EAAxC,CAnBsC,CAqBtC;;AACA,MAAM4L,CAAC,GAAG,IAAI3Z,uDAAJ,CAAmB;AAC3BgI,IAAAA,UAAU,EAAE,IADe;AAE3BC,IAAAA,QAAQ,EAAE;AAFiB,GAAnB,EAIPC,QAJO,CAIE;AACR9G,IAAAA,OAAO,EAAE6X,6DAAA,EADD;AAER9Q,IAAAA,OAAO,EAAE2F,WAFD;AAGR1F,IAAAA,OAAO,EAAE2F,WAHD;AAIR1F,IAAAA,OAAO,EAAE,CAJD;AAKRC,IAAAA,OAAO,EAAE;AALD,GAJF,EAWPC,mBAXO,CAWa,YAAY;AAC/B,WAAO,EAAP;AACD,GAbO,CAAV,CAtBsC,CAqCtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA,MAAMpR,OAAO,GAAG8hB,2DAAA,EAAhB;AACA,MAAMhF,SAAS,GAAGgF,6DAAA,EAAlB;AAEAnnB,EAAAA,6CAAA,CAASmiB,SAAT,EAlDsC,CAmDtC;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;;AACAyF,EAAAA,UAAU,CAACviB,OAAD,EAAUwiB,CAAV,EAAa5kB,EAAb,CAAV;AACAklB,EAAAA,YAAY,CAAChG,SAAD,EAAY0F,CAAZ,CAAZ,CA9DsC,CAgEtC;AACA;AAEA;;AACA,MAAMxB,GAAG,GAAG1jB,0CAAM,iBAASM,EAAT,SAAlB;AACAojB,EAAAA,GAAG,CAACjjB,IAAJ,CAAS,aAAT,EAAwB,8BAAxB,EArEsC,CAuEtC;;AACA,MAAMmY,OAAO,GAAG5Y,0CAAM,CAAC,MAAMM,EAAN,GAAW,IAAZ,CAAtB;AACAsN,EAAAA,gEAAM,CAACgL,OAAD,EAAUsM,CAAV,EAAa,CAAC,aAAD,EAAgB,WAAhB,EAA6B,aAA7B,EAA4C,YAA5C,CAAb,EAAwE,cAAxE,EAAwF5kB,EAAxF,CAAN,CAzEsC,CA2EtC;AACA;AACA;;AAEA,MAAMqB,OAAO,GAAG,CAAhB;AACA,MAAMulB,SAAS,GAAGxD,GAAG,CAACtjB,IAAJ,GAAWc,OAAX,EAAlB;AACA,MAAMO,KAAK,GAAGylB,SAAS,CAACzlB,KAAV,GAAkBE,OAAO,GAAG,CAA1C;AACA,MAAMD,MAAM,GAAGwlB,SAAS,CAACxlB,MAAV,GAAmBC,OAAO,GAAG,CAA5C;AACAtE,EAAAA,8CAAA,2BACqBoE,KADrB,cAC8BC,MAD9B,uBAEeC,OAAO,GAAGujB,CAAC,CAACmC,MAAF,CAASzT,OAFlC,eAE8CjS,OAAO,GAAGujB,CAAC,CAACmC,MAAF,CAASxT,OAFjE;AAKAiR,EAAAA,wDAAgB,CAACpB,GAAD,EAAMhiB,MAAN,EAAcD,KAAd,EAAqB7C,IAAI,CAAC2a,WAA1B,CAAhB;AAEAmK,EAAAA,GAAG,CAACjjB,IAAJ,CAAS,SAAT,gBAA2BgB,KAA3B,cAAoCC,MAApC;AACAgiB,EAAAA,GAAG,CACA1jB,MADH,CACU,GADV,EAEGS,IAFH,CAEQ,WAFR,sBAEkCkB,OAAO,GAAGujB,CAAC,CAACmC,MAAF,CAASzT,OAFrD,eAEiEjS,OAAO,GAAGulB,SAAS,CAAC9kB,CAFrF,QA3FsC,CA+FtC;AACA;AAEA;;AACA,MAAI,CAACxD,IAAI,CAACwC,UAAV,EAAsB;AACpB,QAAMkmB,MAAM,GAAGxjB,QAAQ,CAACyjB,gBAAT,CAA0B,UAAUjnB,EAAV,GAAe,sBAAzC,CAAf;;AACA,SAAK,IAAIknB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,MAAM,CAACjpB,MAA3B,EAAmCmpB,CAAC,EAApC,EAAwC;AACtC,UAAM7mB,KAAK,GAAG2mB,MAAM,CAACE,CAAD,CAApB,CADsC,CAGtC;;AACA,UAAMC,GAAG,GAAG9mB,KAAK,CAACO,OAAN,EAAZ;AAEA,UAAMhB,IAAI,GAAG4D,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,MAAvD,CAAb;AACA7D,MAAAA,IAAI,CAACwE,YAAL,CAAkB,IAAlB,EAAwB,CAAxB;AACAxE,MAAAA,IAAI,CAACwE,YAAL,CAAkB,IAAlB,EAAwB,CAAxB;AACAxE,MAAAA,IAAI,CAACwE,YAAL,CAAkB,OAAlB,EAA2B+iB,GAAG,CAAChmB,KAA/B;AACAvB,MAAAA,IAAI,CAACwE,YAAL,CAAkB,QAAlB,EAA4B+iB,GAAG,CAAC/lB,MAAhC,EAVsC,CAWtC;;AAEAf,MAAAA,KAAK,CAAC+mB,YAAN,CAAmBxnB,IAAnB,EAAyBS,KAAK,CAACgnB,UAA/B;AACD;AACF,GApHqC,CAsHtC;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACD,CAvJM;AAyJP,iEAAe;AACbjB,EAAAA,OAAO,EAAPA,OADa;AAEbU,EAAAA,IAAI,EAAJA;AAFa,CAAf;AAIA;;AACA,SAASpB,cAAT,CAAwBrY,IAAxB,EAA8B;AAC5B,MAAIia,MAAJ;;AACA,UAAQja,IAAR;AACE,SAAK,CAAL;AACEia,MAAAA,MAAM,GAAG,aAAT;AACA;;AACF,SAAK,CAAL;AACEA,MAAAA,MAAM,GAAG,WAAT;AACA;;AACF,SAAK,CAAL;AACEA,MAAAA,MAAM,GAAG,aAAT;AACA;;AACF,SAAK,CAAL;AACEA,MAAAA,MAAM,GAAG,YAAT;AACA;;AACF;AACEA,MAAAA,MAAM,GAAG,MAAT;AAdJ;;AAgBA,SAAOA,MAAP;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChhBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEAnD,2DAAA,GAAYD,gDAAZ;AAEA,IAAIQ,OAAO,GAAG,EAAd;AACA,IAAMrjB,OAAO,GAAG,EAAhB;AAEA,IAAM/C,IAAI,GAAG;AACXse,EAAAA,aAAa,EAAE,EADJ;AAEXvb,EAAAA,OAAO,EAAE,CAFE;AAGXyb,EAAAA,UAAU,EAAE;AAHD,CAAb,EAMA;;AACA,IAAMqJ,UAAU,GAAG,SAAbA,UAAa,CAAU9lB,KAAV,EAAiB;AAClC,MAAMxB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAY6lB,OAAZ,CAAb;;AAEA,OAAK,IAAI5mB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,IAAI,CAACd,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpC,QAAI4mB,OAAO,CAAC7lB,IAAI,CAACf,CAAD,CAAL,CAAP,CAAiBuC,KAAjB,KAA2BA,KAA/B,EAAsC;AACpC,aAAOxB,IAAI,CAACf,CAAD,CAAX;AACD;AACF;;AAED,SAAO4C,SAAP;AACD,CAVD;AAYA;AACA;AACA;AACA;AACA;;;AACA,IAAMwK,aAAa,GAAG,SAAhBA,aAAgB,CAAUvI,IAAV,EAAgB;AACpCA,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc,gBAHd,EAIGA,IAJH,CAIQ,OAJR,EAIiB,WAJjB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,GAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,GARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGmC,MAVH,CAUU,MAVV,EAWGnC,IAXH,CAWQ,GAXR,EAWa,oBAXb;AAaAwC,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc,cAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGmC,MATH,CASU,MATV,EAUGnC,IAVH,CAUQ,GAVR,EAUa,oBAVb,EAdoC,CAwBA;;AAEpCwC,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc,kBAHd,EAIGA,IAJH,CAIQ,OAJR,EAIiB,WAJjB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,GAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,GARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGmC,MAVH,CAUU,MAVV,EAWGnC,IAXH,CAWQ,GAXR,EAWa,0BAXb;AAaAwC,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc,gBAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGmC,MATH,CASU,MATV,EAUGnC,IAVH,CAUQ,GAVR,EAUa,0BAVb;AAYAwC,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc,kBAHd,EAIGA,IAJH,CAIQ,OAJR,EAIiB,WAJjB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,GAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,GARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGmC,MAVH,CAUU,MAVV,EAWGnC,IAXH,CAWQ,GAXR,EAWa,0BAXb;AAaAwC,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc,gBAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGmC,MATH,CASU,MATV,EAUGnC,IAVH,CAUQ,GAVR,EAUa,0BAVb;AAYAwC,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc,iBAHd,EAIGA,IAJH,CAIQ,OAJR,EAIiB,WAJjB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,GAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,GARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGmC,MAVH,CAUU,MAVV,EAWGnC,IAXH,CAWQ,GAXR,EAWa,yBAXb;AAaAwC,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc,eAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGmC,MATH,CASU,MATV,EAUGnC,IAVH,CAUQ,GAVR,EAUa,2BAVb;AAWD,CApGD;;AAsGO,IAAMimB,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMxnB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYwnB,GAAZ,CAAb;AAEAxnB,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUC,GAAV,EAAe;AAC1BV,IAAAA,IAAI,CAACU,GAAD,CAAJ,GAAYqnB,GAAG,CAACrnB,GAAD,CAAf;AACD,GAFD;AAGD,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM8nB,IAAI,GAAG,SAAPA,IAAO,CAAUxmB,IAAV,EAAgBN,EAAhB,EAAoB;AACtC0kB,EAAAA,OAAO,GAAG,EAAV;AACAP,EAAAA,iEAAA;AACAA,EAAAA,8DAAA,CAAa7jB,IAAb;AAEAvD,EAAAA,6CAAA,CAAS,uBAAuBuD,IAAhC,EALsC,CAOtC;;AACA,MAAMimB,OAAO,GAAG7mB,0CAAM,gBAASM,EAAT,QAAtB;AACAumB,EAAAA,OAAO,CAACpmB,IAAR,CAAa,aAAb,EAA4B,8BAA5B;AACA+K,EAAAA,aAAa,CAACqb,OAAD,CAAb,CAVsC,CAYtC;;AACA,MAAM3B,CAAC,GAAG,IAAI3Z,uDAAJ,CAAmB;AAC3BgI,IAAAA,UAAU,EAAE;AADe,GAAnB,CAAV,CAbsC,CAiBtC;;AACA2R,EAAAA,CAAC,CAACzR,QAAF,CAAW;AACTqT,IAAAA,YAAY,EAAE;AADL,GAAX,EAlBsC,CAsBtC;;AACA5B,EAAAA,CAAC,CAACpR,mBAAF,CAAsB,YAAY;AAChC,WAAO,EAAP;AACD,GAFD;AAIA,MAAMpR,OAAO,GAAG8hB,2DAAA,EAAhB;AACA,MAAMrlB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYuD,OAAZ,CAAb;;AAEA,OAAK,IAAItE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,IAAI,CAACd,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpC,QAAM2oB,QAAQ,GAAGrkB,OAAO,CAACvD,IAAI,CAACf,CAAD,CAAL,CAAxB;AACA,QAAMgC,IAAI,GAAGskB,0DAAA,CAAkBmC,OAAlB,EAA2BE,QAA3B,EAAqCnoB,IAArC,CAAb;AACAomB,IAAAA,OAAO,CAAC5kB,IAAI,CAACE,EAAN,CAAP,GAAmBF,IAAnB,CAHoC,CAKpC;AACA;AACA;;AACA8kB,IAAAA,CAAC,CAAC/X,OAAF,CAAU/M,IAAI,CAACE,EAAf,EAAmBF,IAAnB;AAEA/C,IAAAA,6CAAA,CAAS,iBAAiB+C,IAAI,CAACsB,MAA/B;AACD;;AAED,MAAM8d,SAAS,GAAGgF,6DAAA,EAAlB;AACAhF,EAAAA,SAAS,CAACngB,OAAV,CAAkB,UAAUshB,QAAV,EAAoB;AACpCtjB,IAAAA,6CAAA,CACE,UAAUopB,UAAU,CAAC9F,QAAQ,CAACC,GAAV,CAApB,GAAqC6F,UAAU,CAAC9F,QAAQ,CAACE,GAAV,CAA/C,GAAgE/e,IAAI,CAACC,SAAL,CAAe4e,QAAf,CADlE;AAGAuE,IAAAA,CAAC,CAAC7S,OAAF,CACEoU,UAAU,CAAC9F,QAAQ,CAACC,GAAV,CADZ,EAEE6F,UAAU,CAAC9F,QAAQ,CAACE,GAAV,CAFZ,EAGE;AACEF,MAAAA,QAAQ,EAAEA;AADZ,KAHF,EAMEA,QAAQ,CAAC/K,KAAT,IAAkB,SANpB;AAQD,GAZD;AAcAtK,EAAAA,mDAAA,CAAa4Z,CAAb;AACAA,EAAAA,CAAC,CAACtY,KAAF,GAAUvN,OAAV,CAAkB,UAAUuK,CAAV,EAAa;AAC7B,QAAI,OAAOA,CAAP,KAAa,WAAb,IAA4B,OAAOsb,CAAC,CAAC9kB,IAAF,CAAOwJ,CAAP,CAAP,KAAqB,WAArD,EAAkE;AAChEvM,MAAAA,8CAAA,CAAU,UAAUuM,CAAV,GAAc,IAAd,GAAqB9H,IAAI,CAACC,SAAL,CAAemjB,CAAC,CAAC9kB,IAAF,CAAOwJ,CAAP,CAAf,CAA/B;AACA5J,MAAAA,0CAAM,CAAC,MAAMogB,qDAAW,CAACxW,CAAD,CAAlB,CAAN,CAA6BnJ,IAA7B,CACE,WADF,EAEE,gBACGykB,CAAC,CAAC9kB,IAAF,CAAOwJ,CAAP,EAAUzH,CAAV,GAAc+iB,CAAC,CAAC9kB,IAAF,CAAOwJ,CAAP,EAAUnI,KAAV,GAAkB,CADnC,IAEE,GAFF,IAGGyjB,CAAC,CAAC9kB,IAAF,CAAOwJ,CAAP,EAAUxH,CAAV,GAAc8iB,CAAC,CAAC9kB,IAAF,CAAOwJ,CAAP,EAAUlI,MAAV,GAAmB,CAHpC,IAIE,IANJ;AAQD;AACF,GAZD;AAcAwjB,EAAAA,CAAC,CAACrY,KAAF,GAAUxN,OAAV,CAAkB,UAAUgK,CAAV,EAAa;AAC7B,QAAI,OAAOA,CAAP,KAAa,WAAb,IAA4B,OAAO6b,CAAC,CAACxf,IAAF,CAAO2D,CAAP,CAAP,KAAqB,WAArD,EAAkE;AAChEhM,MAAAA,8CAAA,CAAU,UAAUgM,CAAC,CAACO,CAAZ,GAAgB,MAAhB,GAAyBP,CAAC,CAACvB,CAA3B,GAA+B,IAA/B,GAAsChG,IAAI,CAACC,SAAL,CAAemjB,CAAC,CAACxf,IAAF,CAAO2D,CAAP,CAAf,CAAhD;AACAqb,MAAAA,yDAAA,CAAiBmC,OAAjB,EAA0B3B,CAAC,CAACxf,IAAF,CAAO2D,CAAP,CAA1B,EAAqC6b,CAAC,CAACxf,IAAF,CAAO2D,CAAP,EAAUsX,QAA/C,EAAyD/hB,IAAzD;AACD;AACF,GALD;AAOA,MAAMsoB,SAAS,GAAGL,OAAO,CAACzmB,IAAR,GAAec,OAAf,EAAlB;AACA,MAAMO,KAAK,GAAGylB,SAAS,CAACzlB,KAAV,GAAkBE,OAAO,GAAG,CAA1C;AACA,MAAMD,MAAM,GAAGwlB,SAAS,CAACxlB,MAAV,GAAmBC,OAAO,GAAG,CAA5C;AAEAmjB,EAAAA,wDAAgB,CAAC+B,OAAD,EAAUnlB,MAAV,EAAkBD,KAAlB,EAAyB7C,IAAI,CAAC2a,WAA9B,CAAhB,CApFsC,CAsFtC;;AACA,MAAM4N,IAAI,aAAMD,SAAS,CAAC/kB,CAAV,GAAcR,OAApB,cAA+BulB,SAAS,CAAC9kB,CAAV,GAAcT,OAA7C,cAAwDF,KAAxD,cAAiEC,MAAjE,CAAV;AACArE,EAAAA,8CAAA,mBAAqB8pB,IAArB;AACAN,EAAAA,OAAO,CAACpmB,IAAR,CAAa,SAAb,EAAwB0mB,IAAxB;AACD,CA1FM;AA4FP,iEAAe;AACbT,EAAAA,OAAO,EAAPA,OADa;AAEbU,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;ACtPA,IAAMS,SAAS,GAAG,SAAZA,SAAY,CAAC3oB,OAAD;AAAA,gDAERA,OAAO,CAAC4oB,UAFA,wBAGR5oB,OAAO,CAAC6oB,SAHA,gDAKD7oB,OAAO,CAACS,UALP,2HAePT,OAAO,CAAC6oB,SAfD,qDAkBR7oB,OAAO,CAAC8oB,OAlBA,0CAqBR9oB,OAAO,CAAC6oB,SArBA,2DAwBF7oB,OAAO,CAAC8oB,OAxBN,2JAmCN9oB,OAAO,CAAC8oB,OAnCF,4BAoCJ9oB,OAAO,CAAC4oB,UApCJ,uEA0CN5oB,OAAO,CAAC4oB,UA1CF,wGAmDR5oB,OAAO,CAAC8oB,OAnDA,0BAoDN9oB,OAAO,CAAC4oB,UApDF,oDAwDN5oB,OAAO,CAAC4oB,UAxDF,0GA+DR5oB,OAAO,CAAC8oB,OA/DA,oEAoER9oB,OAAO,CAAC4oB,UApEA,gEAyEN5oB,OAAO,CAAC+oB,SAzEF,+IAmFR/oB,OAAO,CAAC+oB,SAnFA,qCAoFN/oB,OAAO,CAAC+oB,SApFF,6FAyFR/oB,OAAO,CAAC+oB,SAzFA,qCA0FN/oB,OAAO,CAAC+oB,SA1FF,6FA+FR/oB,OAAO,CAAC+oB,SA/FA,qCAgGN/oB,OAAO,CAAC+oB,SAhGF,6FAqGR/oB,OAAO,CAAC+oB,SArGA,qCAsGN/oB,OAAO,CAAC+oB,SAtGF,2FA2GR/oB,OAAO,CAAC+oB,SA3GA,qCA4GN/oB,OAAO,CAAC+oB,SA5GF,yFAiHR/oB,OAAO,CAAC+oB,SAjHA,qCAkHN/oB,OAAO,CAAC+oB,SAlHF,+FAuHR/oB,OAAO,CAAC8oB,OAvHA,qCAwHN9oB,OAAO,CAAC+oB,SAxHF,6FA6HR/oB,OAAO,CAAC8oB,OA7HA,qCA8HN9oB,OAAO,CAAC+oB,SA9HF;AAAA,CAAlB;;AAwIA,iEAAeJ,SAAf;;;;;;;;;;;;;;;;;;;;;;;ACxIA;AACA;AACA;AACA;AAEA,IAAIK,SAAS,GAAG,CAAhB;AACO,IAAMjB,QAAQ,GAAG,SAAXA,QAAW,CAAUhkB,IAAV,EAAgBgE,IAAhB,EAAsB0Z,QAAtB,EAAgC/hB,IAAhC,EAAsC;AAC5D,MAAMupB,eAAe,GAAG,SAAlBA,eAAkB,CAAUxa,IAAV,EAAgB;AACtC,YAAQA,IAAR;AACE,WAAKwV,8DAAL;AACE,eAAO,aAAP;;AACF,WAAKA,4DAAL;AACE,eAAO,WAAP;;AACF,WAAKA,8DAAL;AACE,eAAO,aAAP;;AACF,WAAKA,6DAAL;AACE,eAAO,YAAP;AARJ;AAUD,GAXD;;AAaAlc,EAAAA,IAAI,CAAC6B,MAAL,GAAc7B,IAAI,CAAC6B,MAAL,CAAYsB,MAAZ,CAAmB,UAACjB,CAAD;AAAA,WAAO,CAACkB,MAAM,CAACC,KAAP,CAAanB,CAAC,CAAC/G,CAAf,CAAR;AAAA,GAAnB,CAAd,CAd4D,CAgB5D;;AACA,MAAM+H,QAAQ,GAAGlD,IAAI,CAAC6B,MAAtB,CAjB4D,CAmB5D;;AACA,MAAM0B,YAAY,GAAGpF,wCAAI,GACtBjD,CADkB,CAChB,UAAU7D,CAAV,EAAa;AACd,WAAOA,CAAC,CAAC6D,CAAT;AACD,GAHkB,EAIlBC,CAJkB,CAIhB,UAAU9D,CAAV,EAAa;AACd,WAAOA,CAAC,CAAC8D,CAAT;AACD,GANkB,EAOlBmI,KAPkB,CAOZlF,0CAPY,CAArB;AASA,MAAMuF,OAAO,GAAG3H,IAAI,CACjBL,MADa,CACN,MADM,EAEbnC,IAFa,CAER,GAFQ,EAEH+J,YAAY,CAACL,QAAD,CAFT,EAGb1J,IAHa,CAGR,IAHQ,EAGF,SAASynB,SAHP,EAIbznB,IAJa,CAIR,OAJQ,EAIC,UAJD,CAAhB;AAKA,MAAIoK,GAAG,GAAG,EAAV;;AACA,MAAIjM,IAAI,CAACmM,mBAAT,EAA8B;AAC5BF,IAAAA,GAAG,GACDG,MAAM,CAACC,QAAP,CAAgBC,QAAhB,GACA,IADA,GAEAF,MAAM,CAACC,QAAP,CAAgBE,IAFhB,GAGAH,MAAM,CAACC,QAAP,CAAgBG,QAHhB,GAIAJ,MAAM,CAACC,QAAP,CAAgBI,MALlB;AAMAR,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACAuG,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACD;;AAED,MAAIqc,QAAQ,CAACA,QAAT,CAAkBqC,QAAlB,IAA8B,CAAlC,EAAqC;AACnCpY,IAAAA,OAAO,CAACnK,IAAR,CAAa,OAAb,EAAsB,sBAAtB;AACD;;AACD,MAAIkgB,QAAQ,CAACA,QAAT,CAAkBsF,KAAlB,KAA4B,MAAhC,EAAwC;AACtCrb,IAAAA,OAAO,CAACnK,IAAR,CACE,cADF,EAEE,SAASoK,GAAT,GAAe,GAAf,GAAqBsd,eAAe,CAACxH,QAAQ,CAACA,QAAT,CAAkBsF,KAAnB,CAApC,GAAgE,OAAhE,GAA0E,GAF5E;AAID;;AACD,MAAItF,QAAQ,CAACA,QAAT,CAAkBuF,KAAlB,KAA4B,MAAhC,EAAwC;AACtCtb,IAAAA,OAAO,CAACnK,IAAR,CACE,YADF,EAEE,SAASoK,GAAT,GAAe,GAAf,GAAqBsd,eAAe,CAACxH,QAAQ,CAACA,QAAT,CAAkBuF,KAAnB,CAApC,GAAgE,KAAhE,GAAwE,GAF1E;AAID;;AAED,MAAI/jB,CAAJ,EAAOC,CAAP;AACA,MAAMgmB,CAAC,GAAGnhB,IAAI,CAAC6B,MAAL,CAAYzK,MAAtB,CA/D4D,CAgE5D;;AACA,MAAIgqB,aAAa,GAAG/iB,gEAAA,CAAwB2B,IAAI,CAAC6B,MAA7B,CAApB;AACA3G,EAAAA,CAAC,GAAGkmB,aAAa,CAAClmB,CAAlB;AACAC,EAAAA,CAAC,GAAGimB,aAAa,CAACjmB,CAAlB;AAEA,MAAIkmB,SAAJ,EAAeC,SAAf;AACA,MAAIC,SAAJ,EAAeC,SAAf;;AAEA,MAAIL,CAAC,GAAG,CAAJ,KAAU,CAAV,IAAeA,CAAC,GAAG,CAAvB,EAA0B;AACxB,QAAIM,mBAAmB,GAAGpjB,sEAAA,CACxBqb,QAAQ,CAACA,QAAT,CAAkBsF,KAAlB,KAA4B,MADJ,EAExBhf,IAAI,CAAC6B,MAFmB,EAGxB7B,IAAI,CAAC6B,MAAL,CAAY,CAAZ,CAHwB,CAA1B;AAKA,QAAI8f,mBAAmB,GAAGtjB,sEAAA,CACxBqb,QAAQ,CAACA,QAAT,CAAkBuF,KAAlB,KAA4B,MADJ,EAExBjf,IAAI,CAAC6B,MAFmB,EAGxB7B,IAAI,CAAC6B,MAAL,CAAYsf,CAAC,GAAG,CAAhB,CAHwB,CAA1B;AAMA/qB,IAAAA,8CAAA,CAAU,yBAAyByE,IAAI,CAACC,SAAL,CAAe2mB,mBAAf,CAAnC;AACArrB,IAAAA,8CAAA,CAAU,yBAAyByE,IAAI,CAACC,SAAL,CAAe6mB,mBAAf,CAAnC;AAEAN,IAAAA,SAAS,GAAGI,mBAAmB,CAACvmB,CAAhC;AACAomB,IAAAA,SAAS,GAAGG,mBAAmB,CAACtmB,CAAhC;AACAomB,IAAAA,SAAS,GAAGI,mBAAmB,CAACzmB,CAAhC;AACAsmB,IAAAA,SAAS,GAAGG,mBAAmB,CAACxmB,CAAhC;AACD;;AAED,MAAI,OAAOue,QAAQ,CAAC/K,KAAhB,KAA0B,WAA9B,EAA2C;AACzC,QAAMsP,CAAC,GAAGjiB,IAAI,CAACL,MAAL,CAAY,GAAZ,EAAiBnC,IAAjB,CAAsB,OAAtB,EAA+B,YAA/B,CAAV;AACA,QAAME,KAAK,GAAGukB,CAAC,CACZtiB,MADW,CACJ,MADI,EAEXnC,IAFW,CAEN,OAFM,EAEG,OAFH,EAGXA,IAHW,CAGN,GAHM,EAGD0B,CAHC,EAIX1B,IAJW,CAIN,GAJM,EAID2B,CAJC,EAKX3B,IALW,CAKN,MALM,EAKE,KALF,EAMXA,IANW,CAMN,aANM,EAMS,QANT,EAOXG,IAPW,CAON+f,QAAQ,CAAC/K,KAPH,CAAd;AASA5K,IAAAA,MAAM,CAACrK,KAAP,GAAeA,KAAf;AACA,QAAMkoB,MAAM,GAAGloB,KAAK,CAACP,IAAN,GAAac,OAAb,EAAf;AAEAgkB,IAAAA,CAAC,CAAC1kB,MAAF,CAAS,MAAT,EAAiB,cAAjB,EACGC,IADH,CACQ,OADR,EACiB,KADjB,EAEGA,IAFH,CAEQ,GAFR,EAEaooB,MAAM,CAAC1mB,CAAP,GAAWvD,IAAI,CAAC+C,OAAL,GAAe,CAFvC,EAGGlB,IAHH,CAGQ,GAHR,EAGaooB,MAAM,CAACzmB,CAAP,GAAWxD,IAAI,CAAC+C,OAAL,GAAe,CAHvC,EAIGlB,IAJH,CAIQ,OAJR,EAIiBooB,MAAM,CAACpnB,KAAP,GAAe7C,IAAI,CAAC+C,OAJrC,EAKGlB,IALH,CAKQ,QALR,EAKkBooB,MAAM,CAACnnB,MAAP,GAAgB9C,IAAI,CAAC+C,OALvC;AAMD;;AAEDtE,EAAAA,6CAAA,CAAS,wBAAwByE,IAAI,CAACC,SAAL,CAAe4e,QAAf,CAAjC;;AACA,MAAI,OAAOA,QAAQ,CAACmF,cAAhB,KAAmC,WAAnC,IAAkDnF,QAAQ,CAACmF,cAAT,KAA4B,MAAlF,EAA0F;AACxF,QAAMZ,EAAC,GAAGjiB,IAAI,CAACL,MAAL,CAAY,GAAZ,EAAiBnC,IAAjB,CAAsB,OAAtB,EAA+B,aAA/B,CAAV;;AACAykB,IAAAA,EAAC,CAACtiB,MAAF,CAAS,MAAT,EACGnC,IADH,CACQ,OADR,EACiB,OADjB,EAEGA,IAFH,CAEQ,GAFR,EAEa6nB,SAFb,EAGG7nB,IAHH,CAGQ,GAHR,EAGa8nB,SAHb,EAIG9nB,IAJH,CAIQ,MAJR,EAIgB,OAJhB,EAKGA,IALH,CAKQ,WALR,EAKqB,GALrB,EAMGG,IANH,CAMQ+f,QAAQ,CAACmF,cANjB;AAOD;;AACD,MAAI,OAAOnF,QAAQ,CAACoF,cAAhB,KAAmC,WAAnC,IAAkDpF,QAAQ,CAACoF,cAAT,KAA4B,MAAlF,EAA0F;AACxF,QAAMb,GAAC,GAAGjiB,IAAI,CAACL,MAAL,CAAY,GAAZ,EAAiBnC,IAAjB,CAAsB,OAAtB,EAA+B,aAA/B,CAAV;;AACAykB,IAAAA,GAAC,CAACtiB,MAAF,CAAS,MAAT,EACGnC,IADH,CACQ,OADR,EACiB,OADjB,EAEGA,IAFH,CAEQ,GAFR,EAEa+nB,SAFb,EAGG/nB,IAHH,CAGQ,GAHR,EAGagoB,SAHb,EAIGhoB,IAJH,CAIQ,MAJR,EAIgB,OAJhB,EAKGA,IALH,CAKQ,WALR,EAKqB,GALrB,EAMGG,IANH,CAMQ+f,QAAQ,CAACoF,cANjB;AAOD;;AAEDmC,EAAAA,SAAS;AACV,CA1IM;AA4IA,IAAMlB,SAAS,GAAG,SAAZA,SAAY,CAAU/jB,IAAV,EAAgB8jB,QAAhB,EAA0BnoB,IAA1B,EAAgC;AACvDvB,EAAAA,6CAAA,CAAS,qBAAqB0pB,QAA9B;AAEA,MAAMzmB,EAAE,GAAGymB,QAAQ,CAACzmB,EAApB;AACA,MAAMwoB,SAAS,GAAG;AAChBxoB,IAAAA,EAAE,EAAEA,EADY;AAEhBK,IAAAA,KAAK,EAAEomB,QAAQ,CAACzmB,EAFA;AAGhBmB,IAAAA,KAAK,EAAE,CAHS;AAIhBC,IAAAA,MAAM,EAAE;AAJQ,GAAlB,CAJuD,CAWvD;;AACA,MAAMwjB,CAAC,GAAGjiB,IAAI,CAACL,MAAL,CAAY,GAAZ,EAAiBnC,IAAjB,CAAsB,IAAtB,EAA4B2f,qDAAW,CAAC9f,EAAD,CAAvC,EAA6CG,IAA7C,CAAkD,OAAlD,EAA2D,YAA3D,CAAV,CAZuD,CAcvD;;AACA,MAAImV,KAAJ;;AACA,MAAImR,QAAQ,CAAC1O,IAAb,EAAmB;AACjBzC,IAAAA,KAAK,GAAGsP,CAAC,CACNtiB,MADK,CACE,OADF,EAELnC,IAFK,CAEA,YAFA,EAEcsmB,QAAQ,CAAC1O,IAFvB,EAGL5X,IAHK,CAGA,QAHA,EAGUsmB,QAAQ,CAACzO,UAHnB,EAIL1V,MAJK,CAIE,MAJF,EAKLnC,IALK,CAKA,GALA,EAKK7B,IAAI,CAACwe,UAAL,GAAkBxe,IAAI,CAAC+C,OAL5B,EAMLlB,IANK,CAMA,GANA,EAMK,CANL,CAAR;AAOD,GARD,MAQO;AACLmV,IAAAA,KAAK,GAAGsP,CAAC,CACNtiB,MADK,CACE,MADF,EAELnC,IAFK,CAEA,GAFA,EAEK7B,IAAI,CAACwe,UAAL,GAAkBxe,IAAI,CAAC+C,OAF5B,EAGLlB,IAHK,CAGA,GAHA,EAGK,CAHL,CAAR;AAID,GA7BsD,CA+BvD;;;AACA,MAAIsoB,OAAO,GAAG,IAAd;AACAhC,EAAAA,QAAQ,CAAC9P,WAAT,CAAqB5X,OAArB,CAA6B,UAAU6hB,MAAV,EAAkB;AAC7C,QAAM8H,UAAU,GAAGpT,KAAK,CAAChT,MAAN,CAAa,OAAb,EAAsBhC,IAAtB,CAA2B,MAAMsgB,MAAN,GAAe,GAA1C,CAAnB;AACA,QAAI,CAAC6H,OAAL,EAAcC,UAAU,CAACvoB,IAAX,CAAgB,IAAhB,EAAsB7B,IAAI,CAACwe,UAA3B;AACd2L,IAAAA,OAAO,GAAG,KAAV;AACD,GAJD;AAMA,MAAI1R,gBAAgB,GAAG0P,QAAQ,CAACzmB,EAAhC;;AAEA,MAAIymB,QAAQ,CAACpZ,IAAT,KAAkB3M,SAAlB,IAA+B+lB,QAAQ,CAACpZ,IAAT,KAAkB,EAArD,EAAyD;AACvD0J,IAAAA,gBAAgB,IAAI,MAAM0P,QAAQ,CAACpZ,IAAf,GAAsB,GAA1C;AACD;;AAED,MAAMsb,UAAU,GAAGrT,KAAK,CAAChT,MAAN,CAAa,OAAb,EAAsBhC,IAAtB,CAA2ByW,gBAA3B,EAA6C5W,IAA7C,CAAkD,OAAlD,EAA2D,OAA3D,CAAnB,CA7CuD,CA+CvD;;AACA,MAAI,CAACsoB,OAAL,EAAcE,UAAU,CAACxoB,IAAX,CAAgB,IAAhB,EAAsB7B,IAAI,CAACwe,UAA3B;AAEd,MAAM8L,WAAW,GAAGtT,KAAK,CAACxV,IAAN,GAAac,OAAb,GAAuBQ,MAA3C;AAEA,MAAMynB,WAAW,GAAGjE,CAAC,CAClBtiB,MADiB,CACV,MADU,EACF;AADE,GAEjBnC,IAFiB,CAEZ,IAFY,EAEN,CAFM,EAGjBA,IAHiB,CAGZ,IAHY,EAGN7B,IAAI,CAAC+C,OAAL,GAAeunB,WAAf,GAA6BtqB,IAAI,CAACse,aAAL,GAAqB,CAH5C,EAIjBzc,IAJiB,CAIZ,IAJY,EAIN7B,IAAI,CAAC+C,OAAL,GAAeunB,WAAf,GAA6BtqB,IAAI,CAACse,aAAL,GAAqB,CAJ5C,CAApB;AAMA,MAAMzF,OAAO,GAAGyN,CAAC,CACdtiB,MADa,CACN,MADM,EACE;AADF,GAEbnC,IAFa,CAER,GAFQ,EAEH7B,IAAI,CAAC+C,OAFF,EAGblB,IAHa,CAGR,GAHQ,EAGHyoB,WAAW,GAAGtqB,IAAI,CAACse,aAAnB,GAAmCte,IAAI,CAACwe,UAHrC,EAIb3c,IAJa,CAIR,MAJQ,EAIA,OAJA,EAKbA,IALa,CAKR,OALQ,EAKC,WALD,CAAhB;AAOAsoB,EAAAA,OAAO,GAAG,IAAV;AACAhC,EAAAA,QAAQ,CAACtP,OAAT,CAAiBpY,OAAjB,CAAyB,UAAU6hB,MAAV,EAAkB;AACzCkI,IAAAA,QAAQ,CAAC3R,OAAD,EAAUyJ,MAAV,EAAkB6H,OAAlB,EAA2BnqB,IAA3B,CAAR;AACAmqB,IAAAA,OAAO,GAAG,KAAV;AACD,GAHD;AAKA,MAAMM,UAAU,GAAG5R,OAAO,CAACrX,IAAR,GAAec,OAAf,EAAnB;AAEA,MAAMooB,WAAW,GAAGpE,CAAC,CAClBtiB,MADiB,CACV,MADU,EACF;AADE,GAEjBnC,IAFiB,CAEZ,IAFY,EAEN,CAFM,EAGjBA,IAHiB,CAGZ,IAHY,EAGN7B,IAAI,CAAC+C,OAAL,GAAeunB,WAAf,GAA6BtqB,IAAI,CAACse,aAAlC,GAAkDmM,UAAU,CAAC3nB,MAHvD,EAIjBjB,IAJiB,CAIZ,IAJY,EAIN7B,IAAI,CAAC+C,OAAL,GAAeunB,WAAf,GAA6BtqB,IAAI,CAACse,aAAlC,GAAkDmM,UAAU,CAAC3nB,MAJvD,CAApB;AAMA,MAAMuW,OAAO,GAAGiN,CAAC,CACdtiB,MADa,CACN,MADM,EACE;AADF,GAEbnC,IAFa,CAER,GAFQ,EAEH7B,IAAI,CAAC+C,OAFF,EAGblB,IAHa,CAGR,GAHQ,EAGHyoB,WAAW,GAAG,IAAItqB,IAAI,CAACse,aAAvB,GAAuCmM,UAAU,CAAC3nB,MAAlD,GAA2D9C,IAAI,CAACwe,UAH7D,EAIb3c,IAJa,CAIR,MAJQ,EAIA,OAJA,EAKbA,IALa,CAKR,OALQ,EAKC,WALD,CAAhB;AAOAsoB,EAAAA,OAAO,GAAG,IAAV;AAEAhC,EAAAA,QAAQ,CAAC9O,OAAT,CAAiB5Y,OAAjB,CAAyB,UAAUkqB,MAAV,EAAkB;AACzCH,IAAAA,QAAQ,CAACnR,OAAD,EAAUsR,MAAV,EAAkBR,OAAlB,EAA2BnqB,IAA3B,CAAR;AACAmqB,IAAAA,OAAO,GAAG,KAAV;AACD,GAHD;AAKA,MAAMS,QAAQ,GAAGtE,CAAC,CAAC9kB,IAAF,GAASc,OAAT,EAAjB;AACA,MAAIkkB,WAAW,GAAG,GAAlB;;AAEA,MAAI2B,QAAQ,CAAC5G,UAAT,CAAoB9hB,MAApB,GAA6B,CAAjC,EAAoC;AAClC+mB,IAAAA,WAAW,GAAGA,WAAW,GAAG2B,QAAQ,CAAC5G,UAAT,CAAoBvL,IAApB,CAAyB,GAAzB,CAA5B;AACD;;AAED,MAAM1U,IAAI,GAAGglB,CAAC,CACX1kB,MADU,CACH,MADG,EACK,cADL,EAEVC,IAFU,CAEL,GAFK,EAEA,CAFA,EAGVA,IAHU,CAGL,GAHK,EAGA,CAHA,EAIVA,IAJU,CAIL,OAJK,EAII+oB,QAAQ,CAAC/nB,KAAT,GAAiB,IAAI7C,IAAI,CAAC+C,OAJ9B,EAKVlB,IALU,CAKL,QALK,EAKK+oB,QAAQ,CAAC9nB,MAAT,GAAkB9C,IAAI,CAAC+C,OAAvB,GAAiC,MAAM/C,IAAI,CAACse,aALjD,EAMVzc,IANU,CAML,OANK,EAMI2kB,WANJ,CAAb;AAQA,MAAMqE,SAAS,GAAGvpB,IAAI,CAACE,IAAL,GAAYc,OAAZ,GAAsBO,KAAxC,CA5GuD,CA8GvD;AACA;;AACAmU,EAAAA,KAAK,CAACxV,IAAN,GAAaspB,UAAb,CAAwBrqB,OAAxB,CAAgC,UAAU8C,CAAV,EAAa;AAC3CA,IAAAA,CAAC,CAACuC,YAAF,CAAe,GAAf,EAAoB,CAAC+kB,SAAS,GAAGtnB,CAAC,CAACjB,OAAF,GAAYO,KAAzB,IAAkC,CAAtD;AACD,GAFD;;AAIA,MAAIslB,QAAQ,CAACxO,OAAb,EAAsB;AACpB3C,IAAAA,KAAK,CAACpV,MAAN,CAAa,OAAb,EAAsBI,IAAtB,CAA2BmmB,QAAQ,CAACxO,OAApC;AACD;;AAED4Q,EAAAA,WAAW,CAAC1oB,IAAZ,CAAiB,IAAjB,EAAuBgpB,SAAvB;AACAH,EAAAA,WAAW,CAAC7oB,IAAZ,CAAiB,IAAjB,EAAuBgpB,SAAvB;AAEAX,EAAAA,SAAS,CAACrnB,KAAV,GAAkBgoB,SAAlB;AACAX,EAAAA,SAAS,CAACpnB,MAAV,GAAmB8nB,QAAQ,CAAC9nB,MAAT,GAAkB9C,IAAI,CAAC+C,OAAvB,GAAiC,MAAM/C,IAAI,CAACse,aAA/D;AAEA,SAAO4L,SAAP;AACD,CA/HM;AAiIA,IAAMxU,WAAW,GAAG,SAAdA,WAAc,CAAU1T,IAAV,EAAgB;AACzC,MAAM+oB,UAAU,GAAG,mDAAnB;AACA,MAAMC,WAAW,GAAG,mEAApB;AAEA,MAAIC,UAAU,GAAGjpB,IAAI,CAACihB,KAAL,CAAW8H,UAAX,CAAjB;AACA,MAAIG,WAAW,GAAGlpB,IAAI,CAACihB,KAAL,CAAW+H,WAAX,CAAlB;;AAEA,MAAIC,UAAU,IAAI,CAACC,WAAnB,EAAgC;AAC9B,WAAOC,iBAAiB,CAACF,UAAD,CAAxB;AACD,GAFD,MAEO,IAAIC,WAAJ,EAAiB;AACtB,WAAOE,kBAAkB,CAACF,WAAD,CAAzB;AACD,GAFM,MAEA;AACL,WAAOG,kBAAkB,CAACrpB,IAAD,CAAzB;AACD;AACF,CAdM;;AAgBP,IAAMmpB,iBAAiB,GAAG,SAApBA,iBAAoB,CAAUnS,UAAV,EAAsB;AAC9C,MAAIG,QAAQ,GAAG,EAAf;AACA,MAAIF,WAAW,GAAG,EAAlB;;AAEA,MAAI;AACF,QAAIqS,UAAU,GAAGtS,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAAczS,IAAd,EAAhB,GAAuC,EAAxD;AACA,QAAIglB,SAAS,GAAGvS,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAAczS,IAAd,EAAhB,GAAuC,EAAvD;AACA,QAAI4a,WAAW,GAAGnI,UAAU,CAAC,CAAD,CAAV,GAAgBwS,iBAAiB,CAACxS,UAAU,CAAC,CAAD,CAAV,CAAczS,IAAd,EAAD,CAAjC,GAA0D,EAA5E;AACA,QAAIklB,SAAS,GAAGzS,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAAczS,IAAd,EAAhB,GAAuC,EAAvD;AACA,QAAImlB,UAAU,GAAG1S,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAAczS,IAAd,EAAhB,GAAuC,EAAxD;AAEA0S,IAAAA,WAAW,GAAGqS,UAAU,GAAGC,SAAb,GAAyBpK,WAAzB,GAAuC,GAAvC,GAA6CsK,SAA3D;AACAtS,IAAAA,QAAQ,GAAGwS,eAAe,CAACD,UAAD,CAA1B;AACD,GATD,CASE,OAAOE,GAAP,EAAY;AACZ3S,IAAAA,WAAW,GAAGD,UAAd;AACD;;AAED,SAAO;AACLC,IAAAA,WAAW,EAAEA,WADR;AAELE,IAAAA,QAAQ,EAAEA;AAFL,GAAP;AAID,CArBD;;AAuBA,IAAMiS,kBAAkB,GAAG,SAArBA,kBAAqB,CAAUpS,UAAV,EAAsB;AAC/C,MAAIG,QAAQ,GAAG,EAAf;AACA,MAAIF,WAAW,GAAG,EAAlB;;AAEA,MAAI;AACF,QAAIqS,UAAU,GAAGtS,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAAczS,IAAd,EAAhB,GAAuC,EAAxD;AACA,QAAIslB,UAAU,GAAG7S,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAAczS,IAAd,EAAhB,GAAuC,EAAxD;AACA,QAAIulB,UAAU,GAAG9S,UAAU,CAAC,CAAD,CAAV,GAAgBwS,iBAAiB,CAACxS,UAAU,CAAC,CAAD,CAAV,CAAczS,IAAd,EAAD,CAAjC,GAA0D,EAA3E;AACA,QAAImlB,UAAU,GAAG1S,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAAczS,IAAd,EAAhB,GAAuC,EAAxD;AACA,QAAIwlB,UAAU,GAAG/S,UAAU,CAAC,CAAD,CAAV,GAAgB,QAAQwS,iBAAiB,CAACxS,UAAU,CAAC,CAAD,CAAX,CAAjB,CAAiCzS,IAAjC,EAAxB,GAAkE,EAAnF;AAEA0S,IAAAA,WAAW,GAAGqS,UAAU,GAAGO,UAAb,GAA0B,GAA1B,GAAgCC,UAAhC,GAA6C,GAA7C,GAAmDC,UAAjE;AACA5S,IAAAA,QAAQ,GAAGwS,eAAe,CAACD,UAAD,CAA1B;AACD,GATD,CASE,OAAOE,GAAP,EAAY;AACZ3S,IAAAA,WAAW,GAAGD,UAAd;AACD;;AAED,SAAO;AACLC,IAAAA,WAAW,EAAEA,WADR;AAELE,IAAAA,QAAQ,EAAEA;AAFL,GAAP;AAID,CArBD;;AAuBA,IAAMkS,kBAAkB,GAAG,SAArBA,kBAAqB,CAAUrpB,IAAV,EAAgB;AACzC;AACA,MAAIiX,WAAW,GAAG,EAAlB;AACA,MAAIE,QAAQ,GAAG,EAAf;AACA,MAAI6S,UAAU,GAAG,EAAjB;AACA,MAAID,UAAU,GAAG,EAAjB;AACA,MAAIE,WAAW,GAAGjqB,IAAI,CAACpB,OAAL,CAAa,GAAb,CAAlB;AACA,MAAIsrB,SAAS,GAAGlqB,IAAI,CAACpB,OAAL,CAAa,GAAb,CAAhB;;AAEA,MAAIqrB,WAAW,GAAG,CAAd,IAAmBC,SAAS,GAAGD,WAA/B,IAA8CC,SAAS,IAAIlqB,IAAI,CAACvC,MAApE,EAA4E;AAC1E,QAAI6rB,UAAU,GAAG,EAAjB;AACA,QAAIO,UAAU,GAAG,EAAjB;AAEA,QAAIM,SAAS,GAAGnqB,IAAI,CAAC2gB,SAAL,CAAe,CAAf,EAAkB,CAAlB,CAAhB;;AACA,QAAIwJ,SAAS,CAAClJ,KAAV,CAAgB,IAAhB,CAAJ,EAA2B;AACzB4I,MAAAA,UAAU,GAAG7pB,IAAI,CAAC2gB,SAAL,CAAe,CAAf,EAAkBsJ,WAAlB,EAA+B1lB,IAA/B,EAAb;AACD,KAFD,MAEO;AACL,UAAI4lB,SAAS,CAAClJ,KAAV,CAAgB,UAAhB,CAAJ,EAAiC;AAC/BqI,QAAAA,UAAU,GAAGa,SAAb;AACD;;AAEDN,MAAAA,UAAU,GAAG7pB,IAAI,CAAC2gB,SAAL,CAAe,CAAf,EAAkBsJ,WAAlB,EAA+B1lB,IAA/B,EAAb;AACD;;AAED,QAAIulB,UAAU,GAAG9pB,IAAI,CAAC2gB,SAAL,CAAesJ,WAAW,GAAG,CAA7B,EAAgCC,SAAhC,CAAjB;AACA,QAAIR,UAAU,GAAG1pB,IAAI,CAAC2gB,SAAL,CAAeuJ,SAAS,GAAG,CAA3B,EAA8B,CAA9B,CAAjB;AACA/S,IAAAA,QAAQ,GAAGwS,eAAe,CAACD,UAAD,CAA1B;AAEAzS,IAAAA,WAAW,GAAGqS,UAAU,GAAGO,UAAb,GAA0B,GAA1B,GAAgCL,iBAAiB,CAACM,UAAU,CAACvlB,IAAX,EAAD,CAAjD,GAAuE,GAArF;;AAEA,QAAI2lB,SAAS,GAAGF,UAAU,CAACvsB,MAA3B,EAAmC;AACjCssB,MAAAA,UAAU,GAAG/pB,IAAI,CAAC2gB,SAAL,CAAeuJ,SAAS,GAAG,CAA3B,EAA8B3lB,IAA9B,EAAb;;AACA,UAAIwlB,UAAU,KAAK,EAAnB,EAAuB;AACrBA,QAAAA,UAAU,GAAG,QAAQP,iBAAiB,CAACO,UAAD,CAAtC;AACD;AACF;AACF,GA3BD,MA2BO;AACL;AACA9S,IAAAA,WAAW,GAAGuS,iBAAiB,CAACxpB,IAAD,CAA/B;AACD;;AAED,SAAO;AACLiX,IAAAA,WAAW,EAAEA,WADR;AAELE,IAAAA,QAAQ,EAAEA;AAFL,GAAP;AAID,CA7CD;;AA+CA,IAAMqR,QAAQ,GAAG,SAAXA,QAAW,CAAU4B,MAAV,EAAkBC,GAAlB,EAAuBlC,OAAvB,EAAgCnqB,IAAhC,EAAsC;AACrD,MAAIsiB,MAAM,GAAG5M,WAAW,CAAC2W,GAAD,CAAxB;AAEA,MAAMC,KAAK,GAAGF,MAAM,CAACpoB,MAAP,CAAc,OAAd,EAAuBnC,IAAvB,CAA4B,GAA5B,EAAiC7B,IAAI,CAAC+C,OAAtC,EAA+Cf,IAA/C,CAAoDsgB,MAAM,CAACrJ,WAA3D,CAAd;;AAEA,MAAIqJ,MAAM,CAACnJ,QAAP,KAAoB,EAAxB,EAA4B;AAC1BmT,IAAAA,KAAK,CAACzqB,IAAN,CAAW,OAAX,EAAoBygB,MAAM,CAACnJ,QAA3B;AACD;;AAED,MAAI,CAACgR,OAAL,EAAc;AACZmC,IAAAA,KAAK,CAACzqB,IAAN,CAAW,IAAX,EAAiB7B,IAAI,CAACwe,UAAtB;AACD;AACF,CAZD;;AAcA,IAAMgN,iBAAiB,GAAG,SAApBA,iBAAoB,CAAUxpB,IAAV,EAAgB;AACxC,MAAIuqB,WAAW,GAAGvqB,IAAlB;;AAEA,MAAIA,IAAI,CAACpB,OAAL,CAAa,GAAb,KAAqB,CAAC,CAA1B,EAA6B;AAC3B2rB,IAAAA,WAAW,GAAGA,WAAW,CAAC7mB,OAAZ,CAAoB,GAApB,EAAyB,GAAzB,CAAd;AACA6mB,IAAAA,WAAW,GAAGA,WAAW,CAAC7mB,OAAZ,CAAoB,GAApB,EAAyB,GAAzB,CAAd;AAEA,WAAO8lB,iBAAiB,CAACe,WAAD,CAAxB;AACD,GALD,MAKO;AACL,WAAOA,WAAP;AACD;AACF,CAXD;;AAaA,IAAMZ,eAAe,GAAG,SAAlBA,eAAkB,CAAUD,UAAV,EAAsB;AAC5C,UAAQA,UAAR;AACE,SAAK,GAAL;AACE,aAAO,oBAAP;;AACF,SAAK,GAAL;AACE,aAAO,4BAAP;;AACF;AACE,aAAO,EAAP;AANJ;AAQD,CATD;;AAWA,iEAAe;AACbtD,EAAAA,SAAS,EAATA,SADa;AAEbC,EAAAA,QAAQ,EAARA,QAFa;AAGb3S,EAAAA,WAAW,EAAXA;AAHa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;ACtaA;AAEO,IAAM+W,OAAO,GAAG,SAAVA,OAAU,CAAC9mB,CAAD,EAAO;AAC5B,MAAI,CAACA,CAAL,EAAQ,OAAO,CAAP;AACR,MAAImT,GAAG,GAAG4T,kBAAkB,CAAC/mB,CAAD,CAA5B;AACAmT,EAAAA,GAAG,GAAGA,GAAG,CAACpT,OAAJ,CAAY,MAAZ,EAAoB,MAApB,CAAN;AACA,SAAOoT,GAAG,CAAC9S,KAAJ,CAAU,MAAV,CAAP;AACD,CALM;AAOA,IAAM2mB,YAAY,GAAG,SAAfA,YAAe,CAACN,GAAD,EAAS;AACnC,MAAIO,EAAE,GAAG,EAAT;AACA,MAAIC,GAAG,GAAG,CAAV;;AAEA,SAAOA,GAAG,IAAI,CAAd,EAAiB;AACfA,IAAAA,GAAG,GAAGR,GAAG,CAACzrB,OAAJ,CAAY,SAAZ,CAAN;;AACA,QAAIisB,GAAG,IAAI,CAAX,EAAc;AACZD,MAAAA,EAAE,IAAIP,GAAG,CAACvJ,MAAJ,CAAW,CAAX,EAAc+J,GAAd,CAAN;AACAR,MAAAA,GAAG,GAAGA,GAAG,CAACvJ,MAAJ,CAAW+J,GAAG,GAAG,CAAjB,CAAN;AAEAA,MAAAA,GAAG,GAAGR,GAAG,CAACzrB,OAAJ,CAAY,WAAZ,CAAN;;AACA,UAAIisB,GAAG,IAAI,CAAX,EAAc;AACZA,QAAAA,GAAG,IAAI,CAAP;AACAR,QAAAA,GAAG,GAAGA,GAAG,CAACvJ,MAAJ,CAAW+J,GAAX,CAAN;AACD;AACF,KATD,MASO;AACLD,MAAAA,EAAE,IAAIP,GAAN;AACAQ,MAAAA,GAAG,GAAG,CAAC,CAAP;AACA;AACD;AACF;;AAEDD,EAAAA,EAAE,GAAGA,EAAE,CAAClnB,OAAH,CAAW,WAAX,EAAwB,GAAxB,CAAL;AACAknB,EAAAA,EAAE,GAAGA,EAAE,CAAClnB,OAAH,CAAW,WAAX,EAAwB,GAAxB,CAAL;AACAknB,EAAAA,EAAE,GAAGA,EAAE,CAAClnB,OAAH,CAAW,eAAX,EAA4B,GAA5B,CAAL;AACAknB,EAAAA,EAAE,GAAGA,EAAE,CAAClnB,OAAH,CAAW,YAAX,EAAyB,UAAzB,CAAL;AACAknB,EAAAA,EAAE,GAAGA,EAAE,CAAClnB,OAAH,CAAW,WAAX,EAAwB,EAAxB,CAAL;AACA,SAAOknB,EAAP;AACD,CA5BM;;AA8BP,IAAME,YAAY,GAAG,SAAfA,YAAe,CAAC9qB,IAAD,EAAOrD,MAAP,EAAkB;AACrC,MAAI0tB,GAAG,GAAGrqB,IAAV;AACA,MAAIQ,UAAU,GAAG,IAAjB;;AACA,MACE7D,MAAM,CAAC4D,SAAP,KACC5D,MAAM,CAAC4D,SAAP,CAAiBC,UAAjB,KAAgC,KAAhC,IAAyC7D,MAAM,CAAC4D,SAAP,CAAiBC,UAAjB,KAAgC,OAD1E,CADF,EAGE;AACAA,IAAAA,UAAU,GAAG,KAAb;AACD;;AAED,MAAIA,UAAJ,EAAgB;AACd,QAAMuqB,KAAK,GAAGpuB,MAAM,CAACyb,aAArB;;AAEA,QAAI2S,KAAK,KAAK,YAAd,EAA4B;AAC1BV,MAAAA,GAAG,GAAGM,YAAY,CAACN,GAAD,CAAlB;AACD,KAFD,MAEO,IAAIU,KAAK,KAAK,OAAd,EAAuB;AAC5B;AACAV,MAAAA,GAAG,GAAGK,kBAAkB,CAACL,GAAD,CAAxB;AACAA,MAAAA,GAAG,GAAGA,GAAG,CAAC3mB,OAAJ,CAAY,IAAZ,EAAkB,MAAlB,EAA0BA,OAA1B,CAAkC,IAAlC,EAAwC,MAAxC,CAAN;AACA2mB,MAAAA,GAAG,GAAGA,GAAG,CAAC3mB,OAAJ,CAAY,IAAZ,EAAkB,UAAlB,CAAN;AACA2mB,MAAAA,GAAG,GAAGW,kBAAkB,CAACX,GAAD,CAAxB;AACD;AACF;;AAED,SAAOA,GAAP;AACD,CAzBD;;AA2BO,IAAMvS,YAAY,GAAG,SAAfA,YAAe,CAAC9X,IAAD,EAAOrD,MAAP,EAAkB;AAC5C,MAAI,CAACqD,IAAL,EAAW,OAAOA,IAAP;AACX,MAAMqqB,GAAG,GAAGG,yDAAA,CAAmBM,YAAY,CAAC9qB,IAAD,EAAOrD,MAAP,CAA/B,CAAZ;AACA,SAAO0tB,GAAP;AACD,CAJM;AAMA,IAAMzE,cAAc,GAAG,cAAvB;AAEA,IAAMqF,SAAS,GAAG,SAAZA,SAAY,CAACjrB,IAAD,EAAU;AACjC,SAAO,gBAAgBkrB,IAAhB,CAAqBlrB,IAArB,CAAP;AACD,CAFM;AAIA,IAAMmrB,WAAW,GAAG,SAAdA,WAAc,CAACnrB,IAAD,EAAU;AACnC,SAAOA,IAAI,CAACgE,KAAL,CAAW,eAAX,CAAP;AACD,CAFM;;AAGP,IAAMgnB,kBAAkB,GAAG,SAArBA,kBAAqB,CAACrnB,CAAD,EAAO;AAChC,SAAOA,CAAC,CAACD,OAAF,CAAU,OAAV,EAAmB,OAAnB,CAAP;AACD,CAFD;;AAGA,IAAMgnB,kBAAkB,GAAG,SAArBA,kBAAqB,CAAC/mB,CAAD,EAAO;AAChC,SAAOA,CAAC,CAACD,OAAF,CAAUkiB,cAAV,EAA0B,MAA1B,CAAP;AACD,CAFD;;AAIA,IAAMwF,MAAM,GAAG,SAATA,MAAS,CAACC,WAAD,EAAiB;AAC9B,MAAIphB,GAAG,GAAG,EAAV;;AACA,MAAIohB,WAAJ,EAAiB;AACfphB,IAAAA,GAAG,GACDG,MAAM,CAACC,QAAP,CAAgBC,QAAhB,GACA,IADA,GAEAF,MAAM,CAACC,QAAP,CAAgBE,IAFhB,GAGAH,MAAM,CAACC,QAAP,CAAgBG,QAHhB,GAIAJ,MAAM,CAACC,QAAP,CAAgBI,MALlB;AAMAR,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACAuG,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACD;;AAED,SAAOuG,GAAP;AACD,CAdD;;AAgBO,IAAM5K,QAAQ,GAAG,SAAXA,QAAW,CAACisB,GAAD;AAAA,SAAUA,GAAG,KAAK,OAAR,IAAmBA,GAAG,KAAK,KAA3B,GAAmC,KAAnC,GAA2C,IAArD;AAAA,CAAjB;AAEP,iEAAe;AACbb,EAAAA,OAAO,EAAPA,OADa;AAEb3S,EAAAA,YAAY,EAAZA,YAFa;AAGbmT,EAAAA,SAAS,EAATA,SAHa;AAIbE,EAAAA,WAAW,EAAXA,WAJa;AAKbvF,EAAAA,cAAc,EAAdA,cALa;AAMb+E,EAAAA,YAAY,EAAZA,YANa;AAObS,EAAAA,MAAM,EAANA,MAPa;AAQb/rB,EAAAA,QAAQ,EAARA;AARa,CAAf;;;;;;;;;;;;;;;;;;;AC1GA;AACA;AACA;AAEA,IAAIksB,QAAQ,GAAG,EAAf;AACA,IAAIC,aAAa,GAAG,EAApB;AACA,IAAIxW,KAAK,GAAG,EAAZ;AAEA,IAAMyW,WAAW,GAAG;AAClBC,EAAAA,WAAW,EAAE,aADK;AAElBC,EAAAA,YAAY,EAAE,cAFI;AAGlBC,EAAAA,WAAW,EAAE,aAHK;AAIlBC,EAAAA,QAAQ,EAAE;AAJQ,CAApB;AAOA,IAAMC,cAAc,GAAG;AACrBC,EAAAA,eAAe,EAAE,iBADI;AAErBC,EAAAA,WAAW,EAAE;AAFQ,CAAvB;AAKO,IAAMjN,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BlS,IAA9B,EAAoC;AAChE2R,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDlS,IAApD;AACD,CAFM;;AAIP,IAAMkf,SAAS,GAAG,SAAZA,SAAY,CAAUrf,IAAV,EAAgB;AAChC,MAAI,OAAO2e,QAAQ,CAAC3e,IAAD,CAAf,KAA0B,WAA9B,EAA2C;AACzC2e,IAAAA,QAAQ,CAAC3e,IAAD,CAAR,GAAiB;AAAEsf,MAAAA,UAAU,EAAE;AAAd,KAAjB;AACAzvB,IAAAA,6CAAA,CAAS,oBAAT,EAA+BmQ,IAA/B;AACD;;AAED,SAAO2e,QAAQ,CAAC3e,IAAD,CAAf;AACD,CAPD;;AASA,IAAMuf,WAAW,GAAG,SAAdA,WAAc;AAAA,SAAMZ,QAAN;AAAA,CAApB;;AAEA,IAAMa,aAAa,GAAG,SAAhBA,aAAgB,CAAUC,UAAV,EAAsBC,OAAtB,EAA+B;AACnD,MAAIC,MAAM,GAAGN,SAAS,CAACI,UAAD,CAAtB,CADmD,CACf;AAEpC;;AACA,MAAI7uB,CAAJ;;AACA,OAAKA,CAAC,GAAG8uB,OAAO,CAAC7uB,MAAR,GAAiB,CAA1B,EAA6BD,CAAC,IAAI,CAAlC,EAAqCA,CAAC,EAAtC,EAA0C;AACxC+uB,IAAAA,MAAM,CAACL,UAAP,CAAkBltB,IAAlB,CAAuBstB,OAAO,CAAC9uB,CAAD,CAA9B;AACAf,IAAAA,8CAAA,CAAU,kBAAV,EAA8B6vB,OAAO,CAAC9uB,CAAD,CAAP,CAAWgvB,aAAzC;AACD;AACF,CATD;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAAUC,IAAV,EAAgBC,IAAhB,EAAsBC,IAAtB,EAA4BC,KAA5B,EAAmC;AACzD,MAAIC,GAAG,GAAG;AACRC,IAAAA,OAAO,EAAEL,IADD;AAERM,IAAAA,KAAK,EAAEL,IAFC;AAGRM,IAAAA,OAAO,EAAEL,IAHD;AAIRM,IAAAA,OAAO,EAAEL;AAJD,GAAV;AAOArB,EAAAA,aAAa,CAACxsB,IAAd,CAAmB8tB,GAAnB;AACArwB,EAAAA,8CAAA,CAAU,0BAAV,EAAsCqwB,GAAtC;AACD,CAVD;;AAYA,IAAMK,gBAAgB,GAAG,SAAnBA,gBAAmB;AAAA,SAAM3B,aAAN;AAAA,CAAzB,EAEA;;;AACA,IAAM4B,QAAQ,GAAG,SAAXA,QAAW,CAAU/C,GAAV,EAAe;AAC9BrV,EAAAA,KAAK,GAAGqV,GAAR;AACD,CAFD;;AAIA,IAAMgD,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAC3B,SAAOrY,KAAP;AACD,CAFD;;AAIA,IAAMvS,KAAK,GAAG,SAARA,KAAQ,GAAY;AACxB8oB,EAAAA,QAAQ,GAAG,EAAX;AACAC,EAAAA,aAAa,GAAG,EAAhB;AACAxW,EAAAA,KAAK,GAAG,EAAR;AACD,CAJD;;AAMA,iEAAe;AACbyW,EAAAA,WAAW,EAAXA,WADa;AAEbK,EAAAA,cAAc,EAAdA,cAFa;AAGb/M,EAAAA,cAAc,EAAdA,cAHa;AAIb1gB,EAAAA,SAAS,EAAE;AAAA,WAAMmgB,8CAAA,GAAsBtB,EAA5B;AAAA,GAJE;AAKb+O,EAAAA,SAAS,EAATA,SALa;AAMbG,EAAAA,aAAa,EAAbA,aANa;AAObD,EAAAA,WAAW,EAAXA,WAPa;AAQbM,EAAAA,eAAe,EAAfA,eARa;AASbU,EAAAA,gBAAgB,EAAhBA,gBATa;AAUb1qB,EAAAA,KAAK,EAALA,KAVa;AAWb2qB,EAAAA,QAAQ,EAARA,QAXa;AAYbC,EAAAA,QAAQ,EAARA;AAZa,CAAf;;;;;;;;;;;;;;;ACnFA,IAAMC,SAAS,GAAG;AAChBC,EAAAA,cAAc,EAAE,gBADA;AAEhBC,EAAAA,YAAY,EAAE,cAFE;AAGhBC,EAAAA,iBAAiB,EAAE,mBAHH;AAIhBC,EAAAA,eAAe,EAAE,iBAJD;AAKhBC,EAAAA,iBAAiB,EAAE,mBALH;AAMhBC,EAAAA,eAAe,EAAE,iBAND;AAOhBC,EAAAA,kBAAkB,EAAE,oBAPJ;AAQhBC,EAAAA,gBAAgB,EAAE;AARF,CAAlB;AAWA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMljB,aAAa,GAAG,SAAhBA,aAAgB,CAAUvI,IAAV,EAAgBrE,IAAhB,EAAsB;AAC1C,MAAIgpB,MAAJ;AAEA3kB,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGcytB,SAAS,CAACC,cAHxB,EAIG1tB,IAJH,CAIQ,MAJR,EAIgB,CAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGmC,MATH,CASU,MATV,EAUGnC,IAVH,CAUQ,QAVR,EAUkB7B,IAAI,CAACuf,MAVvB,EAWG1d,IAXH,CAWQ,MAXR,EAWgB,MAXhB,EAYGA,IAZH,CAYQ,GAZR,EAYa,yBAZb;AAcAwC,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGcytB,SAAS,CAACE,YAHxB,EAIG3tB,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGmC,MATH,CASU,MATV,EAUGnC,IAVH,CAUQ,QAVR,EAUkB7B,IAAI,CAACuf,MAVvB,EAWG1d,IAXH,CAWQ,MAXR,EAWgB,MAXhB,EAYGA,IAZH,CAYQ,GAZR,EAYa,uBAZb;AAcAmnB,EAAAA,MAAM,GAAG3kB,IAAI,CACVL,MADM,CACC,MADD,EAENA,MAFM,CAEC,QAFD,EAGNnC,IAHM,CAGD,IAHC,EAGKytB,SAAS,CAACG,iBAHf,EAIN5tB,IAJM,CAID,MAJC,EAIO,CAJP,EAKNA,IALM,CAKD,MALC,EAKO,CALP,EAMNA,IANM,CAMD,aANC,EAMc,EANd,EAONA,IAPM,CAOD,cAPC,EAOe,EAPf,EAQNA,IARM,CAQD,QARC,EAQS,MART,CAAT;AASAmnB,EAAAA,MAAM,CACHhlB,MADH,CACU,QADV,EAEGnC,IAFH,CAEQ,QAFR,EAEkB7B,IAAI,CAACuf,MAFvB,EAGG1d,IAHH,CAGQ,MAHR,EAGgB,OAHhB,EAIGA,IAJH,CAIQ,IAJR,EAIc,EAJd,EAKGA,IALH,CAKQ,IALR,EAKc,CALd,EAMGA,IANH,CAMQ,GANR,EAMa,CANb;AAOAmnB,EAAAA,MAAM,CAAChlB,MAAP,CAAc,MAAd,EAAsBnC,IAAtB,CAA2B,QAA3B,EAAqC7B,IAAI,CAACuf,MAA1C,EAAkD1d,IAAlD,CAAuD,MAAvD,EAA+D,MAA/D,EAAuEA,IAAvE,CAA4E,GAA5E,EAAiF,YAAjF;AAEAmnB,EAAAA,MAAM,GAAG3kB,IAAI,CACVL,MADM,CACC,MADD,EAENA,MAFM,CAEC,QAFD,EAGNnC,IAHM,CAGD,IAHC,EAGKytB,SAAS,CAACI,eAHf,EAIN7tB,IAJM,CAID,MAJC,EAIO,EAJP,EAKNA,IALM,CAKD,MALC,EAKO,CALP,EAMNA,IANM,CAMD,aANC,EAMc,EANd,EAONA,IAPM,CAOD,cAPC,EAOe,EAPf,EAQNA,IARM,CAQD,QARC,EAQS,MART,CAAT;AASAmnB,EAAAA,MAAM,CACHhlB,MADH,CACU,QADV,EAEGnC,IAFH,CAEQ,QAFR,EAEkB7B,IAAI,CAACuf,MAFvB,EAGG1d,IAHH,CAGQ,MAHR,EAGgB,OAHhB,EAIGA,IAJH,CAIQ,IAJR,EAIc,CAJd,EAKGA,IALH,CAKQ,IALR,EAKc,CALd,EAMGA,IANH,CAMQ,GANR,EAMa,CANb;AAOAmnB,EAAAA,MAAM,CAAChlB,MAAP,CAAc,MAAd,EAAsBnC,IAAtB,CAA2B,QAA3B,EAAqC7B,IAAI,CAACuf,MAA1C,EAAkD1d,IAAlD,CAAuD,MAAvD,EAA+D,MAA/D,EAAuEA,IAAvE,CAA4E,GAA5E,EAAiF,cAAjF;AAEAwC,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGcytB,SAAS,CAACK,iBAHxB,EAIG9tB,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,EALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGmC,MATH,CASU,MATV,EAUGnC,IAVH,CAUQ,QAVR,EAUkB7B,IAAI,CAACuf,MAVvB,EAWG1d,IAXH,CAWQ,MAXR,EAWgB,MAXhB,EAYGA,IAZH,CAYQ,GAZR,EAYa,8CAZb;AAcAwC,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGcytB,SAAS,CAACM,eAHxB,EAIG/tB,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,EALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGmC,MATH,CASU,MATV,EAUGnC,IAVH,CAUQ,QAVR,EAUkB7B,IAAI,CAACuf,MAVvB,EAWG1d,IAXH,CAWQ,MAXR,EAWgB,MAXhB,EAYGA,IAZH,CAYQ,GAZR,EAYa,0CAZb;AAcAmnB,EAAAA,MAAM,GAAG3kB,IAAI,CACVL,MADM,CACC,MADD,EAENA,MAFM,CAEC,QAFD,EAGNnC,IAHM,CAGD,IAHC,EAGKytB,SAAS,CAACO,kBAHf,EAINhuB,IAJM,CAID,MAJC,EAIO,EAJP,EAKNA,IALM,CAKD,MALC,EAKO,EALP,EAMNA,IANM,CAMD,aANC,EAMc,EANd,EAONA,IAPM,CAOD,cAPC,EAOe,EAPf,EAQNA,IARM,CAQD,QARC,EAQS,MART,CAAT;AASAmnB,EAAAA,MAAM,CACHhlB,MADH,CACU,QADV,EAEGnC,IAFH,CAEQ,QAFR,EAEkB7B,IAAI,CAACuf,MAFvB,EAGG1d,IAHH,CAGQ,MAHR,EAGgB,OAHhB,EAIGA,IAJH,CAIQ,IAJR,EAIc,EAJd,EAKGA,IALH,CAKQ,IALR,EAKc,EALd,EAMGA,IANH,CAMQ,GANR,EAMa,CANb;AAOAmnB,EAAAA,MAAM,CACHhlB,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,QAFR,EAEkB7B,IAAI,CAACuf,MAFvB,EAGG1d,IAHH,CAGQ,MAHR,EAGgB,MAHhB,EAIGA,IAJH,CAIQ,GAJR,EAIa,+BAJb;AAMAmnB,EAAAA,MAAM,GAAG3kB,IAAI,CACVL,MADM,CACC,MADD,EAENA,MAFM,CAEC,QAFD,EAGNnC,IAHM,CAGD,IAHC,EAGKytB,SAAS,CAACQ,gBAHf,EAINjuB,IAJM,CAID,MAJC,EAIO,EAJP,EAKNA,IALM,CAKD,MALC,EAKO,EALP,EAMNA,IANM,CAMD,aANC,EAMc,EANd,EAONA,IAPM,CAOD,cAPC,EAOe,EAPf,EAQNA,IARM,CAQD,QARC,EAQS,MART,CAAT;AASAmnB,EAAAA,MAAM,CACHhlB,MADH,CACU,QADV,EAEGnC,IAFH,CAEQ,QAFR,EAEkB7B,IAAI,CAACuf,MAFvB,EAGG1d,IAHH,CAGQ,MAHR,EAGgB,OAHhB,EAIGA,IAJH,CAIQ,IAJR,EAIc,CAJd,EAKGA,IALH,CAKQ,IALR,EAKc,EALd,EAMGA,IANH,CAMQ,GANR,EAMa,CANb;AAOAmnB,EAAAA,MAAM,CACHhlB,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,QAFR,EAEkB7B,IAAI,CAACuf,MAFvB,EAGG1d,IAHH,CAGQ,MAHR,EAGgB,MAHhB,EAIGA,IAJH,CAIQ,GAJR,EAIa,iCAJb;AAMA;AACD,CA5ID;;AA8IA,iEAAe;AACbytB,EAAAA,SAAS,EAATA,SADa;AAEb1iB,EAAAA,aAAa,EAAbA;AAFa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAM5M,IAAI,GAAG,EAAb;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM8nB,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMxnB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYwnB,GAAZ,CAAb;;AACA,OAAK,IAAIvoB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,IAAI,CAACd,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpCQ,IAAAA,IAAI,CAACO,IAAI,CAACf,CAAD,CAAL,CAAJ,GAAgBuoB,GAAG,CAACxnB,IAAI,CAACf,CAAD,CAAL,CAAnB;AACD;AACF,CALM;AAOP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAM0wB,cAAc,GAAG,SAAjBA,cAAiB,CAACC,SAAD,EAAYC,cAAZ,EAA4BlC,UAA5B,EAA2C;AAChE,MAAMmC,aAAa,GAAGrwB,IAAI,CAACsf,aAAL,GAAqB,CAA3C,CADgE,CAClB;;AAC9C,MAAMgR,YAAY,GAAGtwB,IAAI,CAACsf,aAAL,GAAqB,CAA1C,CAFgE,CAEnB;;AAC7C,MAAMiR,YAAY,GAAGvwB,IAAI,CAAC2c,QAAL,GAAgB,IAArC;AACA,MAAM6T,SAAS,GAAGJ,cAAc,CAAC5uB,IAAf,GAAsBc,OAAtB,EAAlB;AACA,MAAMmuB,cAAc,GAAG,EAAvB,CALgE,CAKrC;;AAC3B,MAAIC,UAAU,GAAG,KAAjB;AACA,MAAIC,UAAU,GAAG,KAAjB;AACA,MAAI5Y,QAAQ,GAAG,CAAf;AACA,MAAI6Y,YAAY,GAAG,CAAnB;AACA,MAAIC,YAAY,GAAG,CAAnB;AACA,MAAIC,WAAW,GAAG,CAAlB;AACA,MAAIC,eAAe,GAAG,CAAtB;AACA,MAAIC,gBAAgB,GAAGR,SAAS,CAAC1tB,MAAV,GAAmButB,aAAa,GAAG,CAA1D;AACA,MAAIY,OAAO,GAAG,CAAd;AAEA/C,EAAAA,UAAU,CAACztB,OAAX,CAAmB,UAACojB,IAAD,EAAU;AAC3B,QAAMqN,UAAU,aAAMd,cAAc,CAAC5uB,IAAf,GAAsBE,EAA5B,mBAAuCuvB,OAAvC,CAAhB;AACA,QAAIE,SAAS,GAAG,CAAhB;AACA,QAAIC,UAAU,GAAG,CAAjB,CAH2B,CAK3B;;AACA,QAAMC,QAAQ,GAAGlB,SAAS,CACvBnsB,MADc,CACP,MADO,EAEdnC,IAFc,CAET,OAFS,EAEA,gBAFA,EAGdA,IAHc,CAGT,IAHS,YAGAqvB,UAHA,YAIdrvB,IAJc,CAIT,GAJS,EAIJ,CAJI,EAKdA,IALc,CAKT,GALS,EAKJ,CALI,EAMdA,IANc,CAMT,mBANS,EAMY,QANZ,EAOdA,IAPc,CAOT,aAPS,EAOM,MAPN,EAQdA,IARc,CASb,OATa,EAUb,kBAAkBxB,kDAAS,GAAGU,UAA9B,GAA2C,eAA3C,GAA6DwvB,YAA7D,GAA4E,IAV/D,EAYdvuB,IAZc,CAYT6hB,IAAI,CAACyN,aAZI,CAAjB,CAN2B,CAoB3B;;AACA,QAAMC,QAAQ,GAAGpB,SAAS,CACvBnsB,MADc,CACP,MADO,EAEdnC,IAFc,CAET,OAFS,EAEA,gBAFA,EAGdA,IAHc,CAGT,IAHS,YAGAqvB,UAHA,YAIdrvB,IAJc,CAIT,GAJS,EAIJ,CAJI,EAKdA,IALc,CAKT,GALS,EAKJ,CALI,EAMdA,IANc,CAMT,mBANS,EAMY,QANZ,EAOdA,IAPc,CAOT,aAPS,EAOM,MAPN,EAQdA,IARc,CASb,OATa,EAUb,kBAAkBxB,kDAAS,GAAGU,UAA9B,GAA2C,eAA3C,GAA6DwvB,YAA7D,GAA4E,IAV/D,EAYdvuB,IAZc,CAYT6hB,IAAI,CAAC2K,aAZI,CAAjB;AAcA,QAAMgD,aAAa,GAAG,EAAtB;AACAA,IAAAA,aAAa,CAACC,EAAd,GAAmBJ,QAAnB;AACAG,IAAAA,aAAa,CAACE,EAAd,GAAmBH,QAAnB;AAEA,QAAMI,QAAQ,GAAGN,QAAQ,CAAC7vB,IAAT,GAAgBc,OAAhB,EAAjB;AACA,QAAMsvB,QAAQ,GAAGL,QAAQ,CAAC/vB,IAAT,GAAgBc,OAAhB,EAAjB;AACAsuB,IAAAA,YAAY,GAAG7nB,IAAI,CAAC8oB,GAAL,CAASjB,YAAT,EAAuBe,QAAQ,CAAC9uB,KAAhC,CAAf;AACAguB,IAAAA,YAAY,GAAG9nB,IAAI,CAAC8oB,GAAL,CAAShB,YAAT,EAAuBe,QAAQ,CAAC/uB,KAAhC,CAAf;AACAsuB,IAAAA,SAAS,IAAIQ,QAAQ,CAAC9uB,KAAtB;AACAsuB,IAAAA,SAAS,IAAIS,QAAQ,CAAC/uB,KAAtB;AAEAuuB,IAAAA,UAAU,GAAGroB,IAAI,CAAC8oB,GAAL,CAASF,QAAQ,CAAC7uB,MAAlB,EAA0B8uB,QAAQ,CAAC9uB,MAAnC,CAAb;;AAEA,QAAI4tB,UAAU,IAAI7M,IAAI,CAACiO,gBAAL,KAA0B1vB,SAA5C,EAAuD;AACrD,UAAM2vB,WAAW,GAAG5B,SAAS,CAC1BnsB,MADiB,CACV,MADU,EAEjBnC,IAFiB,CAEZ,OAFY,EAEH,gBAFG,EAGjBA,IAHiB,CAGZ,IAHY,YAGHqvB,UAHG,YAIjBrvB,IAJiB,CAIZ,GAJY,EAIP,CAJO,EAKjBA,IALiB,CAKZ,GALY,EAKP,CALO,EAMjBA,IANiB,CAMZ,mBANY,EAMS,QANT,EAOjBA,IAPiB,CAOZ,aAPY,EAOG,MAPH,EAQjBA,IARiB,CAShB,OATgB,EAUhB,kBAAkBxB,kDAAS,GAAGU,UAA9B,GAA2C,eAA3C,GAA6DwvB,YAA7D,GAA4E,IAV5D,EAYjBvuB,IAZiB,CAYZ6hB,IAAI,CAACiO,gBAAL,IAAyB,EAZb,CAApB;AAcAN,MAAAA,aAAa,CAACQ,EAAd,GAAmBD,WAAnB;AACA,UAAME,WAAW,GAAGF,WAAW,CAACvwB,IAAZ,GAAmBc,OAAnB,EAApB;AACA6uB,MAAAA,SAAS,IAAIc,WAAW,CAACpvB,KAAzB;AACAiuB,MAAAA,WAAW,GAAG/nB,IAAI,CAAC8oB,GAAL,CAASf,WAAT,EAAsBK,SAAtB,CAAd;AACAC,MAAAA,UAAU,GAAGroB,IAAI,CAAC8oB,GAAL,CAAST,UAAT,EAAqBa,WAAW,CAACnvB,MAAjC,CAAb;AACA4tB,MAAAA,UAAU,GAAG,IAAb;AACD;;AAED,QAAIC,UAAU,IAAI9M,IAAI,CAACqO,gBAAL,KAA0B9vB,SAA5C,EAAuD;AACrD,UAAM+vB,WAAW,GAAGhC,SAAS,CAC1BnsB,MADiB,CACV,MADU,EAEjBnC,IAFiB,CAEZ,OAFY,EAEH,gBAFG,EAGjBA,IAHiB,CAGZ,IAHY,YAGHqvB,UAHG,YAIjBrvB,IAJiB,CAIZ,GAJY,EAIP,CAJO,EAKjBA,IALiB,CAKZ,GALY,EAKP,CALO,EAMjBA,IANiB,CAMZ,mBANY,EAMS,QANT,EAOjBA,IAPiB,CAOZ,aAPY,EAOG,MAPH,EAQjBA,IARiB,CAShB,OATgB,EAUhB,kBAAkBxB,kDAAS,GAAGU,UAA9B,GAA2C,eAA3C,GAA6DwvB,YAA7D,GAA4E,IAV5D,EAYjBvuB,IAZiB,CAYZ6hB,IAAI,CAACqO,gBAAL,IAAyB,EAZb,CAApB;AAcAV,MAAAA,aAAa,CAACY,EAAd,GAAmBD,WAAnB;AACA,UAAME,eAAe,GAAGF,WAAW,CAAC3wB,IAAZ,GAAmBc,OAAnB,EAAxB;AACA6uB,MAAAA,SAAS,IAAIkB,eAAe,CAACxvB,KAA7B;AACAkuB,MAAAA,eAAe,GAAGhoB,IAAI,CAAC8oB,GAAL,CAASV,SAAT,EAAoBS,QAAQ,CAAC/uB,KAA7B,CAAlB;AACAuuB,MAAAA,UAAU,GAAGroB,IAAI,CAAC8oB,GAAL,CAAST,UAAT,EAAqBiB,eAAe,CAACvvB,MAArC,CAAb;AACA6tB,MAAAA,UAAU,GAAG,IAAb;AACD;;AAEDa,IAAAA,aAAa,CAAC1uB,MAAd,GAAuBsuB,UAAvB,CA9F2B,CA+F3B;;AACAX,IAAAA,cAAc,CAACzvB,IAAf,CAAoBwwB,aAApB;AACAzZ,IAAAA,QAAQ,GAAGhP,IAAI,CAAC8oB,GAAL,CAAS9Z,QAAT,EAAmBoZ,SAAnB,CAAX;AACAH,IAAAA,gBAAgB,IAAII,UAAU,GAAGf,aAAa,GAAG,CAAjD;AACAY,IAAAA,OAAO,IAAI,CAAX;AACD,GApGD,EAhBgE,CAsHhE;;AACA,MAAMqB,IAAI,GAAG;AACXzvB,IAAAA,KAAK,EAAEkG,IAAI,CAAC8oB,GAAL,CACL7xB,IAAI,CAACof,cADA,EAELrW,IAAI,CAAC8oB,GAAL,CAASrB,SAAS,CAAC3tB,KAAV,GAAkB7C,IAAI,CAACsf,aAAL,GAAqB,CAAhD,EAAmDvH,QAAQ,GAAGuY,YAAY,GAAG,CAA7E,CAFK,CADI;AAKXxtB,IAAAA,MAAM,EACJorB,UAAU,CAACzuB,MAAX,GAAoB,CAApB,GACIuxB,gBADJ,GAEIjoB,IAAI,CAAC8oB,GAAL,CAAS7xB,IAAI,CAACqf,eAAd,EAA+BmR,SAAS,CAAC1tB,MAAV,GAAmB9C,IAAI,CAACsf,aAAL,GAAqB,CAAvE;AARK,GAAb,CAvHgE,CAkIhE;;AACA,MAAMiT,UAAU,GAAGxpB,IAAI,CAAC8oB,GAAL,CAAS,CAAT,EAAYS,IAAI,CAACzvB,KAAL,GAAakV,QAAb,GAAwBuY,YAAY,GAAG,CAAnD,CAAnB;;AAEA,MAAIpC,UAAU,CAACzuB,MAAX,GAAoB,CAAxB,EAA2B;AACzB;AACA2wB,IAAAA,cAAc,CAACvuB,IAAf,CACE,WADF,EAEE,eAAeywB,IAAI,CAACzvB,KAAL,GAAa,CAA5B,GAAgC,GAAhC,IAAuCwtB,aAAa,GAAGG,SAAS,CAAC1tB,MAAV,GAAmB,CAA1E,IAA+E,GAFjF,EAFyB,CAOzB;;AACA,QAAI0vB,YAAY,GAAGhC,SAAS,CAAC1tB,MAAV,GAAmButB,aAAa,GAAG,CAAtD,CARyB,CAQgC;;AACzD,QAAIoC,WAAW,GAAG,iBAAlB,CATyB,CASY;;AAErChC,IAAAA,cAAc,CAAChwB,OAAf,CAAuB,UAAC+wB,aAAD,EAAmB;AACxC;AACA,UAAMkB,MAAM,GAAGF,YAAY,GAAGnC,aAAf,GAA+BmB,aAAa,CAAC1uB,MAAd,GAAuB,CAArE,CAFwC,CAIxC;;AACA0uB,MAAAA,aAAa,CAACC,EAAd,CAAiB5vB,IAAjB,CAAsB,WAAtB,EAAmC,eAAeyuB,YAAf,GAA8B,GAA9B,GAAoCoC,MAApC,GAA6C,GAAhF,EALwC,CAOxC;;AACA,UAAMC,QAAQ,GAAGxC,SAAS,CACvBvuB,MADc,CACP,MADO,EACC,MAAM4vB,aAAa,CAACC,EAAd,CAAiBjwB,IAAjB,GAAwBE,EAD/B,EAEdG,IAFc,CAET,OAFS,eAEM4wB,WAFN,GAGd5wB,IAHc,CAGT,MAHS,EAGD7B,IAAI,CAACwf,IAHJ,EAId3d,IAJc,CAIT,cAJS,EAIO,MAJP,EAKdA,IALc,CAKT,QALS,EAKC7B,IAAI,CAACuf,MALN,EAMd1d,IANc,CAMT,GANS,EAMJ,CANI,EAOdA,IAPc,CAOT,GAPS,EAOJ2wB,YAPI,EAQd3wB,IARc,CAQT,OARS,EAQA+uB,YAAY,GAAG,CAAf,GAAmB2B,UAAU,GAAG,CARhC,EASd1wB,IATc,CAST,QATS,EASC2vB,aAAa,CAACC,EAAd,CAAiBjwB,IAAjB,GAAwBc,OAAxB,GAAkCQ,MAAlC,GAA2CutB,aAAa,GAAG,CAT5D,CAAjB,CARwC,CAmBxC;;AACAmB,MAAAA,aAAa,CAACE,EAAd,CAAiB7vB,IAAjB,CACE,WADF,EAEE,gBAAgB+wB,UAAU,CAACD,QAAQ,CAAC9wB,IAAT,CAAc,OAAd,CAAD,CAAV,GAAqCyuB,YAArD,IAAqE,GAArE,GAA2EoC,MAA3E,GAAoF,GAFtF,EApBwC,CAyBxC;;AACAvC,MAAAA,SAAS,CACNvuB,MADH,CACU,MADV,EACkB,MAAM4vB,aAAa,CAACE,EAAd,CAAiBlwB,IAAjB,GAAwBE,EADhD,EAEGG,IAFH,CAEQ,OAFR,eAEuB4wB,WAFvB,GAGG5wB,IAHH,CAGQ,MAHR,EAGgB7B,IAAI,CAACwf,IAHrB,EAIG3d,IAJH,CAIQ,cAJR,EAIwB,MAJxB,EAKGA,IALH,CAKQ,QALR,EAKkB7B,IAAI,CAACuf,MALvB,EAMG1d,IANH,CAMQ,GANR,YAMgB8wB,QAAQ,CAAC9wB,IAAT,CAAc,GAAd,IAAqB8wB,QAAQ,CAAC9wB,IAAT,CAAc,OAAd,CANrC,GAOGA,IAPH,CAOQ,GAPR,EAOa2wB,YAPb,EAQG3wB,IARH,CAQQ,OARR,EAQiBgvB,YAAY,GAAGP,YAAY,GAAG,CAA9B,GAAkCiC,UAAU,GAAG,CARhE,EASG1wB,IATH,CASQ,QATR,EASkB2vB,aAAa,CAACE,EAAd,CAAiBlwB,IAAjB,GAAwBc,OAAxB,GAAkCQ,MAAlC,GAA2CutB,aAAa,GAAG,CAT7E;;AAWA,UAAIK,UAAJ,EAAgB;AACd;AACAc,QAAAA,aAAa,CAACQ,EAAd,CAAiBnwB,IAAjB,CACE,WADF,EAEE,gBAAgB+wB,UAAU,CAACD,QAAQ,CAAC9wB,IAAT,CAAc,OAAd,CAAD,CAAV,GAAqCyuB,YAArD,IAAqE,GAArE,GAA2EoC,MAA3E,GAAoF,GAFtF,EAFc,CAOd;;AACAvC,QAAAA,SAAS,CACNvuB,MADH,CACU,MADV,EACkB,MAAM4vB,aAAa,CAACQ,EAAd,CAAiBxwB,IAAjB,GAAwBE,EADhD,EAEGG,IAFH,CAEQ,OAFR,eAEuB4wB,WAFvB,GAGG5wB,IAHH,CAGQ,MAHR,EAGgB7B,IAAI,CAACwf,IAHrB,EAIG3d,IAJH,CAIQ,cAJR,EAIwB,MAJxB,EAKGA,IALH,CAKQ,QALR,EAKkB7B,IAAI,CAACuf,MALvB,EAMG1d,IANH,CAMQ,GANR,YAMgB8wB,QAAQ,CAAC9wB,IAAT,CAAc,GAAd,IAAqB8wB,QAAQ,CAAC9wB,IAAT,CAAc,OAAd,CANrC,GAOGA,IAPH,CAOQ,GAPR,EAOa2wB,YAPb,EAQG3wB,IARH,CAQQ,OARR,EAQiBivB,WAAW,GAAGR,YAAY,GAAG,CAA7B,GAAiCiC,UAAU,GAAG,CAR/D,EASG1wB,IATH,CASQ,QATR,EASkB2vB,aAAa,CAACQ,EAAd,CAAiBxwB,IAAjB,GAAwBc,OAAxB,GAAkCQ,MAAlC,GAA2CutB,aAAa,GAAG,CAT7E;AAUD;;AAED,UAAIM,UAAJ,EAAgB;AACd;AACAa,QAAAA,aAAa,CAACY,EAAd,CAAiBvwB,IAAjB,CACE,WADF,EAEE,gBAAgB+wB,UAAU,CAACD,QAAQ,CAAC9wB,IAAT,CAAc,OAAd,CAAD,CAAV,GAAqCyuB,YAArD,IAAqE,GAArE,GAA2EoC,MAA3E,GAAoF,GAFtF,EAFc,CAOd;;AACAvC,QAAAA,SAAS,CACNvuB,MADH,CACU,MADV,EACkB,MAAM4vB,aAAa,CAACY,EAAd,CAAiB5wB,IAAjB,GAAwBE,EADhD,EAEGG,IAFH,CAEQ,OAFR,eAEuB4wB,WAFvB,GAGG5wB,IAHH,CAGQ,MAHR,EAGgB7B,IAAI,CAACwf,IAHrB,EAIG3d,IAJH,CAIQ,cAJR,EAIwB,MAJxB,EAKGA,IALH,CAKQ,QALR,EAKkB7B,IAAI,CAACuf,MALvB,EAMG1d,IANH,CAMQ,GANR,YAMgB8wB,QAAQ,CAAC9wB,IAAT,CAAc,GAAd,IAAqB8wB,QAAQ,CAAC9wB,IAAT,CAAc,OAAd,CANrC,GAOGA,IAPH,CAOQ,GAPR,EAOa2wB,YAPb,EAQG3wB,IARH,CAQQ,OARR,EAQiBkvB,eAAe,GAAGT,YAAY,GAAG,CAAjC,GAAqCiC,UAAU,GAAG,CARnE,EASG1wB,IATH,CASQ,QATR,EASkB2vB,aAAa,CAACY,EAAd,CAAiB5wB,IAAjB,GAAwBc,OAAxB,GAAkCQ,MAAlC,GAA2CutB,aAAa,GAAG,CAT7E;AAUD,OA3EuC,CA6ExC;;;AACAmC,MAAAA,YAAY,IAAIhB,aAAa,CAAC1uB,MAAd,GAAuButB,aAAa,GAAG,CAAvD,CA9EwC,CAgFxC;;AACAoC,MAAAA,WAAW,GAAGA,WAAW,IAAI,iBAAf,GAAmC,kBAAnC,GAAwD,iBAAtE;AACD,KAlFD;AAmFD,GA9FD,MA8FO;AACL;AACAH,IAAAA,IAAI,CAACxvB,MAAL,GAAciG,IAAI,CAAC8oB,GAAL,CAAS7xB,IAAI,CAACqf,eAAd,EAA+B2R,gBAA/B,CAAd,CAFK,CAIL;;AACAZ,IAAAA,cAAc,CAACvuB,IAAf,CAAoB,WAApB,EAAiC,eAAeywB,IAAI,CAACzvB,KAAL,GAAa,CAA5B,GAAgC,GAAhC,GAAsCyvB,IAAI,CAACxvB,MAAL,GAAc,CAApD,GAAwD,GAAzF;AACD;;AAED,SAAOwvB,IAAP;AACD,CA5OD;AA8OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMO,YAAY,GAAG,SAAfA,YAAe,CAAUC,OAAV,EAAmBvF,QAAnB,EAA6B1iB,KAA7B,EAAoC;AACvD,MAAMtK,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYgtB,QAAZ,CAAb;AACA,MAAIwF,QAAJ;AAEAxyB,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUiB,EAAV,EAAc;AACzB;AACA,QAAMyuB,SAAS,GAAG2C,OAAO,CAAC9uB,MAAR,CAAe,GAAf,EAAoBnC,IAApB,CAAyB,IAAzB,EAA+BH,EAA/B,CAAlB;AAEAqxB,IAAAA,QAAQ,GAAGA,QAAQ,KAAK3wB,SAAb,GAAyBV,EAAzB,GAA8BqxB,QAAzC,CAJyB,CAMzB;AACA;;AACA,QAAMC,MAAM,GAAG,YAAYtxB,EAA3B;AACA,QAAMuxB,QAAQ,GAAG9C,SAAS,CACvBnsB,MADc,CACP,MADO,EAEdnC,IAFc,CAET,OAFS,EAEA,gBAFA,EAGdA,IAHc,CAGT,IAHS,EAGHmxB,MAHG,EAIdnxB,IAJc,CAIT,GAJS,EAIJ,CAJI,EAKdA,IALc,CAKT,GALS,EAKJ,CALI,EAMdA,IANc,CAMT,mBANS,EAMY,QANZ,EAOdA,IAPc,CAOT,aAPS,EAOM,QAPN,EAQdA,IARc,CASb,OATa,EAUb,kBAAkBxB,kDAAS,GAAGU,UAA9B,GAA2C,eAA3C,GAA6Df,IAAI,CAAC2c,QAAlE,GAA6E,IAVhE,EAYd3a,IAZc,CAYTN,EAZS,CAAjB;;AAcA,0BAAqDwuB,cAAc,CACjEC,SADiE,EAEjE8C,QAFiE,EAGjE1F,QAAQ,CAAC7rB,EAAD,CAAR,CAAawsB,UAHoD,CAAnE;AAAA,QAAegF,WAAf,mBAAQrwB,KAAR;AAAA,QAAoCswB,YAApC,mBAA4BrwB,MAA5B,CAvByB,CA6BzB;;;AACA,QAAMswB,QAAQ,GAAGjD,SAAS,CACvBvuB,MADc,CACP,MADO,EACC,MAAMoxB,MADP,EAEdnxB,IAFc,CAET,OAFS,EAEA,cAFA,EAGdA,IAHc,CAGT,MAHS,EAGD7B,IAAI,CAACwf,IAHJ,EAId3d,IAJc,CAIT,cAJS,EAIO,MAJP,EAKdA,IALc,CAKT,QALS,EAKC7B,IAAI,CAACuf,MALN,EAMd1d,IANc,CAMT,GANS,EAMJ,CANI,EAOdA,IAPc,CAOT,GAPS,EAOJ,CAPI,EAQdA,IARc,CAQT,OARS,EAQAqxB,WARA,EASdrxB,IATc,CAST,QATS,EASCsxB,YATD,CAAjB;AAWA,QAAME,QAAQ,GAAGD,QAAQ,CAAC5xB,IAAT,GAAgBc,OAAhB,EAAjB,CAzCyB,CA2CzB;;AACAuI,IAAAA,KAAK,CAAC0D,OAAN,CAAc7M,EAAd,EAAkB;AAChBmB,MAAAA,KAAK,EAAEwwB,QAAQ,CAACxwB,KADA;AAEhBC,MAAAA,MAAM,EAAEuwB,QAAQ,CAACvwB,MAFD;AAGhBwB,MAAAA,KAAK,EAAE,MAHS;AAIhB5C,MAAAA,EAAE,EAAEA;AAJY,KAAlB;AAMD,GAlDD;AAmDA,SAAOqxB,QAAP;AACD,CAxDD,EAwDG;;;AAEH,IAAMO,cAAc,GAAG,SAAjBA,cAAiB,CAAUR,OAAV,EAAmBjoB,KAAnB,EAA0B;AAC/CA,EAAAA,KAAK,CAACmD,KAAN,GAAcvN,OAAd,CAAsB,UAAUuK,CAAV,EAAa;AACjC,QAAI,OAAOA,CAAP,KAAa,WAAb,IAA4B,OAAOH,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,CAAP,KAAyB,WAAzD,EAAsE;AACpE8nB,MAAAA,OAAO,CACJ1xB,MADH,CACU,MAAM4J,CADhB,EAEGnJ,IAFH,CAGI,WAHJ,EAII,gBACGgJ,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,EAAczH,CAAd,GAAkBsH,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,EAAcnI,KAAd,GAAsB,CAD3C,IAEE,GAFF,IAGGgI,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,EAAcxH,CAAd,GAAkBqH,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,EAAclI,MAAd,GAAuB,CAH5C,IAIE,IARN;AAUD;AACF,GAbD;AAcA;AACD,CAhBD;;AAkBA,IAAMywB,WAAW,GAAG,SAAdA,WAAc,CAAUzE,GAAV,EAAe;AACjC,SAAO,CAACA,GAAG,CAACC,OAAJ,GAAcD,GAAG,CAACE,KAAlB,GAA0BF,GAAG,CAACG,OAA/B,EAAwCvpB,OAAxC,CAAgD,KAAhD,EAAuD,EAAvD,CAAP;AACD,CAFD;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAM8tB,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAUhG,aAAV,EAAyBlH,CAAzB,EAA4B;AACnDkH,EAAAA,aAAa,CAAC/sB,OAAd,CAAsB,UAAU+I,CAAV,EAAa;AACjC8c,IAAAA,CAAC,CAAC7S,OAAF,CAAUjK,CAAC,CAACulB,OAAZ,EAAqBvlB,CAAC,CAACylB,OAAvB,EAAgC;AAAEwE,MAAAA,YAAY,EAAEjqB;AAAhB,KAAhC,EAAqD+pB,WAAW,CAAC/pB,CAAD,CAAhE;AACD,GAFD;AAGA,SAAOgkB,aAAP;AACD,CALD,EAKG;;;AAEH,IAAIkG,MAAM,GAAG,CAAb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMC,0BAA0B,GAAG,SAA7BA,0BAA6B,CAAU7O,GAAV,EAAegK,GAAf,EAAoBxI,CAApB,EAAuB1kB,MAAvB,EAA+B;AAChE8xB,EAAAA,MAAM,GAD0D,CAGhE;;AACA,MAAM5sB,IAAI,GAAGwf,CAAC,CAACxf,IAAF,CAAOgoB,GAAG,CAACC,OAAX,EAAoBD,GAAG,CAACG,OAAxB,EAAiCsE,WAAW,CAACzE,GAAD,CAA5C,CAAb,CAJgE,CAMhE;;AACA,MAAMljB,YAAY,GAAGpF,wCAAI,GACtBjD,CADkB,CAChB,UAAU7D,CAAV,EAAa;AACd,WAAOA,CAAC,CAAC6D,CAAT;AACD,GAHkB,EAIlBC,CAJkB,CAIhB,UAAU9D,CAAV,EAAa;AACd,WAAOA,CAAC,CAAC8D,CAAT;AACD,GANkB,EAOlBmI,KAPkB,CAOZlF,0CAPY,CAArB,CAPgE,CAgBhE;;AACA,MAAMuF,OAAO,GAAG8Y,GAAG,CAChBljB,MADa,CACN,MADM,EACE,MAAMA,MADR,EAEbC,IAFa,CAER,OAFQ,EAEC,qBAFD,EAGbA,IAHa,CAGR,GAHQ,EAGH+J,YAAY,CAAC9E,IAAI,CAACoD,MAAN,CAHT,EAIbrI,IAJa,CAIR,QAJQ,EAIE7B,IAAI,CAACuf,MAJP,EAKb1d,IALa,CAKR,MALQ,EAKA,MALA,CAAhB,CAjBgE,CAwBhE;;AACA,MAAIitB,GAAG,CAACI,OAAJ,CAAY0E,OAAZ,KAAwB7D,4EAA5B,EAAiE;AAC/D/jB,IAAAA,OAAO,CAACnK,IAAR,CAAa,kBAAb,EAAiC,KAAjC;AACD,GA3B+D,CA6BhE;;;AACA,MAAIoK,GAAG,GAAG,EAAV;;AACA,MAAIjM,IAAI,CAACmM,mBAAT,EAA8B;AAC5BF,IAAAA,GAAG,GACDG,MAAM,CAACC,QAAP,CAAgBC,QAAhB,GACA,IADA,GAEAF,MAAM,CAACC,QAAP,CAAgBE,IAFhB,GAGAH,MAAM,CAACC,QAAP,CAAgBG,QAHhB,GAIAJ,MAAM,CAACC,QAAP,CAAgBI,MALlB;AAMAR,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACAuG,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACD,GAxC+D,CA0ChE;AACA;AAEA;;;AACA,UAAQopB,GAAG,CAACI,OAAJ,CAAY2E,KAApB;AACE,SAAK9D,qEAAL;AACE/jB,MAAAA,OAAO,CAACnK,IAAR,CAAa,YAAb,EAA2B,SAASoK,GAAT,GAAe,GAAf,GAAqBgkB,4EAArB,GAA2D,GAAtF;AACA;;AACF,SAAKF,sEAAL;AACE/jB,MAAAA,OAAO,CAACnK,IAAR,CAAa,YAAb,EAA2B,SAASoK,GAAT,GAAe,GAAf,GAAqBgkB,6EAArB,GAA4D,GAAvF;AACA;;AACF,SAAKF,qEAAL;AACE/jB,MAAAA,OAAO,CAACnK,IAAR,CAAa,YAAb,EAA2B,SAASoK,GAAT,GAAe,GAAf,GAAqBgkB,4EAArB,GAA2D,GAAtF;AACA;;AACF,SAAKF,kEAAL;AACE/jB,MAAAA,OAAO,CAACnK,IAAR,CAAa,YAAb,EAA2B,SAASoK,GAAT,GAAe,GAAf,GAAqBgkB,yEAArB,GAAwD,GAAnF;AACA;AAZJ;;AAeA,UAAQnB,GAAG,CAACI,OAAJ,CAAY4E,KAApB;AACE,SAAK/D,qEAAL;AACE/jB,MAAAA,OAAO,CAACnK,IAAR,CACE,cADF,EAEE,SAASoK,GAAT,GAAe,GAAf,GAAqBgkB,8EAArB,GAA6D,GAF/D;AAIA;;AACF,SAAKF,sEAAL;AACE/jB,MAAAA,OAAO,CAACnK,IAAR,CACE,cADF,EAEE,SAASoK,GAAT,GAAe,GAAf,GAAqBgkB,+EAArB,GAA8D,GAFhE;AAIA;;AACF,SAAKF,qEAAL;AACE/jB,MAAAA,OAAO,CAACnK,IAAR,CACE,cADF,EAEE,SAASoK,GAAT,GAAe,GAAf,GAAqBgkB,8EAArB,GAA6D,GAF/D;AAIA;;AACF,SAAKF,kEAAL;AACE/jB,MAAAA,OAAO,CAACnK,IAAR,CAAa,cAAb,EAA6B,SAASoK,GAAT,GAAe,GAAf,GAAqBgkB,2EAArB,GAA0D,GAAvF;AACA;AArBJ,GA7DgE,CAqFhE;AAEA;;;AACA,MAAM8D,GAAG,GAAG/nB,OAAO,CAACxK,IAAR,GAAewyB,cAAf,EAAZ;AACA,MAAMC,UAAU,GAAGjoB,OAAO,CAACxK,IAAR,GAAe0yB,gBAAf,CAAgCH,GAAG,GAAG,GAAtC,CAAnB,CAzFgE,CA2FhE;;AACA,MAAMI,OAAO,GAAG,QAAQT,MAAxB;AAEA,MAAMU,SAAS,GAAGtP,GAAG,CAClB9gB,MADe,CACR,MADQ,EAEfnC,IAFe,CAEV,OAFU,EAED,sBAFC,EAGfA,IAHe,CAGV,IAHU,EAGJsyB,OAHI,EAIftyB,IAJe,CAIV,GAJU,EAILoyB,UAAU,CAAC1wB,CAJN,EAKf1B,IALe,CAKV,GALU,EAKLoyB,UAAU,CAACzwB,CALN,EAMf3B,IANe,CAMV,aANU,EAMK,QANL,EAOfA,IAPe,CAOV,mBAPU,EAOW,QAPX,EAQfA,IARe,CASd,OATc,EAUd,kBAAkBxB,kDAAS,GAAGU,UAA9B,GAA2C,eAA3C,GAA6Df,IAAI,CAAC2c,QAAlE,GAA6E,IAV/D,EAYf3a,IAZe,CAYV8sB,GAAG,CAACE,KAZM,CAAlB,CA9FgE,CA4GhE;;AACA,MAAMwB,SAAS,GAAG4D,SAAS,CAAC5yB,IAAV,GAAiBc,OAAjB,EAAlB,CA7GgE,CA+GhE;;AACAwiB,EAAAA,GAAG,CACAljB,MADH,CACU,MADV,EACkB,MAAMuyB,OADxB,EAEGtyB,IAFH,CAEQ,OAFR,EAEiB,yBAFjB,EAGGA,IAHH,CAGQ,GAHR,EAGaoyB,UAAU,CAAC1wB,CAAX,GAAeitB,SAAS,CAAC3tB,KAAV,GAAkB,CAH9C,EAIGhB,IAJH,CAIQ,GAJR,EAIaoyB,UAAU,CAACzwB,CAAX,GAAegtB,SAAS,CAAC1tB,MAAV,GAAmB,CAJ/C,EAKGjB,IALH,CAKQ,OALR,EAKiB2uB,SAAS,CAAC3tB,KAL3B,EAMGhB,IANH,CAMQ,QANR,EAMkB2uB,SAAS,CAAC1tB,MAN5B,EAOGjB,IAPH,CAOQ,MAPR,EAOgB,OAPhB,EAQGA,IARH,CAQQ,cARR,EAQwB,KARxB;AAUA;AACD,CA3HD;AA6HA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAM2mB,IAAI,GAAG,SAAPA,IAAO,CAAUxmB,IAAV,EAAgBN,EAAhB,EAAoB;AACtCjD,EAAAA,6CAAA,CAAS,oBAAT;AACAsxB,EAAAA,mDAAA;AACA,MAAMlK,MAAM,GAAGmK,iEAAf;AACAnK,EAAAA,MAAM,CAACM,EAAP,GAAY4J,6CAAZ,CAJsC,CAMtC;;AACA,MAAI;AACFlK,IAAAA,MAAM,CAACxX,KAAP,CAAarM,IAAb;AACD,GAFD,CAEE,OAAO4pB,GAAP,EAAY;AACZntB,IAAAA,8CAAA,CAAU,gBAAV;AACD,GAXqC,CAatC;;;AACA,MAAMqmB,GAAG,GAAG1jB,0CAAM,gBAASM,EAAT,QAAlB,CAdsC,CAgBtC;;AACAuuB,EAAAA,gEAAA,CAAwBnL,GAAxB,EAA6B9kB,IAA7B,EAjBsC,CAmBtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA,MAAIsmB,CAAJ,CAlCsC,CAoCtC;AACA;AACA;AACA;AACA;;AACAA,EAAAA,CAAC,GAAG,IAAI3Z,uDAAJ,CAAmB;AACrBgI,IAAAA,UAAU,EAAE,IADS;AAErB0f,IAAAA,QAAQ,EAAE,IAFW;AAGrBzf,IAAAA,QAAQ,EAAE;AAHW,GAAnB,EAKDC,QALC,CAKQ;AACR9G,IAAAA,OAAO,EAAE/N,IAAI,CAACmf,eADN;AAERnK,IAAAA,OAAO,EAAE,EAFD;AAGRC,IAAAA,OAAO,EAAE,EAHD;AAIRH,IAAAA,OAAO,EAAE,GAJD;AAKRwf,IAAAA,OAAO,EAAE,GALD;AAMRvf,IAAAA,OAAO,EAAE;AAND,GALR,EAaDG,mBAbC,CAamB,YAAY;AAC/B,WAAO,EAAP;AACD,GAfC,CAAJ,CAzCsC,CA0DtC;AACA;;AACA,MAAMqf,WAAW,GAAG1B,YAAY,CAAC/N,GAAD,EAAMiL,yDAAA,EAAN,EAA0BzJ,CAA1B,CAAhC,CA5DsC,CA8DtC;AAEA;;AACA,MAAMkH,aAAa,GAAGgG,gBAAgB,CAACzD,8DAAA,EAAD,EAA0BzJ,CAA1B,CAAtC;AAEA5Z,EAAAA,mDAAA,CAAa4Z,CAAb,EAnEsC,CAmErB;AAEjB;;AACAgN,EAAAA,cAAc,CAACxO,GAAD,EAAMwB,CAAN,CAAd,CAtEsC,CAwEtC;;AACAkH,EAAAA,aAAa,CAAC/sB,OAAd,CAAsB,UAAUquB,GAAV,EAAe;AACnC6E,IAAAA,0BAA0B,CAAC7O,GAAD,EAAMgK,GAAN,EAAWxI,CAAX,EAAciO,WAAd,CAA1B;AACD,GAFD;AAIA,MAAMxxB,OAAO,GAAG/C,IAAI,CAACwa,cAArB;AAEA,MAAM8N,SAAS,GAAGxD,GAAG,CAACtjB,IAAJ,GAAWc,OAAX,EAAlB;AACA,MAAMO,KAAK,GAAGylB,SAAS,CAACzlB,KAAV,GAAkBE,OAAO,GAAG,CAA1C;AACA,MAAMD,MAAM,GAAGwlB,SAAS,CAACxlB,MAAV,GAAmBC,OAAO,GAAG,CAA5C;AAEAmjB,EAAAA,wDAAgB,CAACpB,GAAD,EAAMhiB,MAAN,EAAcD,KAAd,EAAqB7C,IAAI,CAAC2a,WAA1B,CAAhB;AAEAmK,EAAAA,GAAG,CAACjjB,IAAJ,CAAS,SAAT,YAAuBymB,SAAS,CAAC/kB,CAAV,GAAcR,OAArC,cAAgDulB,SAAS,CAAC9kB,CAAV,GAAcT,OAA9D,cAAyEF,KAAzE,cAAkFC,MAAlF;AACD,CAtFM,EAsFJ;;AAEH,iEAAe;AACbglB,EAAAA,OAAO,EAAPA,OADa;AAEbU,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;AC3lBA,IAAMS,SAAS,GAAG,SAAZA,SAAY,CAAC3oB,OAAD;AAAA,+CAGNA,OAAO,CAAC8oB,OAHF,4BAIJ9oB,OAAO,CAAC4oB,UAJJ,6EASJ5oB,OAAO,CAAC4oB,UATJ,8EAcJ5oB,OAAO,CAAC4oB,UAdJ,4DAkBN5oB,OAAO,CAACk0B,aAlBF,yDAoBMl0B,OAAO,CAACk0B,aApBd,4GA2BFl0B,OAAO,CAAC+oB,SA3BN;AAAA,CAAlB;;AA+BA,iEAAeJ,SAAf;;;;;;;;;;;;;;;;;;;AC/BA;AAEA;AACA;AACA;AACA;AACA;;AACA,SAAStT,QAAT,CAAkBpU,MAAlB,EAA0Bc,IAA1B,EAAgCb,IAAhC,EAAsC;AACpC,MAAM0H,CAAC,GAAG7G,IAAI,CAACQ,KAAf;AACA,MAAMsG,CAAC,GAAG9G,IAAI,CAACS,MAAf;AACA,MAAM6C,CAAC,GAAG,CAACuD,CAAC,GAAGC,CAAL,IAAU,GAApB;AACA,MAAMe,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAEoC,CAAC,GAAG,CAAT;AAAYnC,IAAAA,CAAC,EAAE;AAAf,GADa,EAEb;AAAED,IAAAA,CAAC,EAAEoC,CAAL;AAAQnC,IAAAA,CAAC,EAAE,CAACmC,CAAD,GAAK;AAAhB,GAFa,EAGb;AAAEpC,IAAAA,CAAC,EAAEoC,CAAC,GAAG,CAAT;AAAYnC,IAAAA,CAAC,EAAE,CAACmC;AAAhB,GAHa,EAIb;AAAEpC,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE,CAACmC,CAAD,GAAK;AAAhB,GAJa,CAAf;AAMA,MAAMhE,QAAQ,GAAG6T,kBAAkB,CAACjU,MAAD,EAASoE,CAAT,EAAYA,CAAZ,EAAeuE,MAAf,CAAnC;;AACA1I,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAO8wB,iEAAA,CAA0BjzB,IAA1B,EAAgC0I,MAAhC,EAAwCvG,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAOhC,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASsU,OAAT,CAAiB1U,MAAjB,EAAyBc,IAAzB,EAA+Bb,IAA/B,EAAqC;AACnC,MAAM0U,CAAC,GAAG,CAAV;AACA,MAAM/M,CAAC,GAAG9G,IAAI,CAACS,MAAf;AACA,MAAMqT,CAAC,GAAGhN,CAAC,GAAG+M,CAAd;AACA,MAAMhN,CAAC,GAAG7G,IAAI,CAACQ,KAAL,GAAa,IAAIsT,CAA3B;AACA,MAAMjM,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAE4S,CAAL;AAAQ3S,IAAAA,CAAC,EAAE;AAAX,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAGiN,CAAT;AAAY3S,IAAAA,CAAC,EAAE;AAAf,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE2F,CAAL;AAAQ1F,IAAAA,CAAC,EAAE,CAAC2F,CAAD,GAAK;AAAhB,GAHa,EAIb;AAAE5F,IAAAA,CAAC,EAAE2F,CAAC,GAAGiN,CAAT;AAAY3S,IAAAA,CAAC,EAAE,CAAC2F;AAAhB,GAJa,EAKb;AAAE5F,IAAAA,CAAC,EAAE4S,CAAL;AAAQ3S,IAAAA,CAAC,EAAE,CAAC2F;AAAZ,GALa,EAMb;AAAE5F,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE,CAAC2F,CAAD,GAAK;AAAhB,GANa,CAAf;AAQA,MAAMxH,QAAQ,GAAG6T,kBAAkB,CAACjU,MAAD,EAAS2H,CAAT,EAAYC,CAAZ,EAAee,MAAf,CAAnC;;AACA1I,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAO8wB,iEAAA,CAA0BjzB,IAA1B,EAAgC0I,MAAhC,EAAwCvG,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAOhC,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS0U,mBAAT,CAA6B9U,MAA7B,EAAqCc,IAArC,EAA2Cb,IAA3C,EAAiD;AAC/C,MAAM0H,CAAC,GAAG7G,IAAI,CAACQ,KAAf;AACA,MAAMsG,CAAC,GAAG9G,IAAI,CAACS,MAAf;AACA,MAAMoH,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAE,CAAC4F,CAAD,GAAK,CAAV;AAAa3F,IAAAA,CAAC,EAAE;AAAhB,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE2F,CAAL;AAAQ1F,IAAAA,CAAC,EAAE;AAAX,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE2F,CAAL;AAAQ1F,IAAAA,CAAC,EAAE,CAAC2F;AAAZ,GAHa,EAIb;AAAE5F,IAAAA,CAAC,EAAE,CAAC4F,CAAD,GAAK,CAAV;AAAa3F,IAAAA,CAAC,EAAE,CAAC2F;AAAjB,GAJa,EAKb;AAAE5F,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE,CAAC2F,CAAD,GAAK;AAAhB,GALa,CAAf;AAOA,MAAMxH,QAAQ,GAAG6T,kBAAkB,CAACjU,MAAD,EAAS2H,CAAT,EAAYC,CAAZ,EAAee,MAAf,CAAnC;;AACA1I,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAO8wB,iEAAA,CAA0BjzB,IAA1B,EAAgC0I,MAAhC,EAAwCvG,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAOhC,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS2U,UAAT,CAAoB/U,MAApB,EAA4Bc,IAA5B,EAAkCb,IAAlC,EAAwC;AACtC,MAAM0H,CAAC,GAAG7G,IAAI,CAACQ,KAAf;AACA,MAAMsG,CAAC,GAAG9G,IAAI,CAACS,MAAf;AACA,MAAMoH,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAG,CAAC,CAAD,GAAK4F,CAAN,GAAW,CAAhB;AAAmB3F,IAAAA,CAAC,EAAE;AAAtB,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB3F,IAAAA,CAAC,EAAE;AAAnB,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAI,IAAIC,CAAL,GAAU,CAAnB;AAAsB3F,IAAAA,CAAC,EAAE,CAAC2F;AAA1B,GAHa,EAIb;AAAE5F,IAAAA,CAAC,EAAE4F,CAAC,GAAG,CAAT;AAAY3F,IAAAA,CAAC,EAAE,CAAC2F;AAAhB,GAJa,CAAf;AAMA,MAAMxH,QAAQ,GAAG6T,kBAAkB,CAACjU,MAAD,EAAS2H,CAAT,EAAYC,CAAZ,EAAee,MAAf,CAAnC;;AACA1I,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAO8wB,iEAAA,CAA0BjzB,IAA1B,EAAgC0I,MAAhC,EAAwCvG,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAOhC,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS4U,SAAT,CAAmBhV,MAAnB,EAA2Bc,IAA3B,EAAiCb,IAAjC,EAAuC;AACrC,MAAM0H,CAAC,GAAG7G,IAAI,CAACQ,KAAf;AACA,MAAMsG,CAAC,GAAG9G,IAAI,CAACS,MAAf;AACA,MAAMoH,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAG,IAAI4F,CAAL,GAAU,CAAf;AAAkB3F,IAAAA,CAAC,EAAE;AAArB,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB3F,IAAAA,CAAC,EAAE;AAAnB,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAI,IAAIC,CAAL,GAAU,CAAnB;AAAsB3F,IAAAA,CAAC,EAAE,CAAC2F;AAA1B,GAHa,EAIb;AAAE5F,IAAAA,CAAC,EAAE,CAAC4F,CAAD,GAAK,CAAV;AAAa3F,IAAAA,CAAC,EAAE,CAAC2F;AAAjB,GAJa,CAAf;AAMA,MAAMxH,QAAQ,GAAG6T,kBAAkB,CAACjU,MAAD,EAAS2H,CAAT,EAAYC,CAAZ,EAAee,MAAf,CAAnC;;AACA1I,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAO8wB,iEAAA,CAA0BjzB,IAA1B,EAAgC0I,MAAhC,EAAwCvG,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAOhC,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS6U,SAAT,CAAmBjV,MAAnB,EAA2Bc,IAA3B,EAAiCb,IAAjC,EAAuC;AACrC,MAAM0H,CAAC,GAAG7G,IAAI,CAACQ,KAAf;AACA,MAAMsG,CAAC,GAAG9G,IAAI,CAACS,MAAf;AACA,MAAMoH,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAG,CAAC,CAAD,GAAK4F,CAAN,GAAW,CAAhB;AAAmB3F,IAAAA,CAAC,EAAE;AAAtB,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAI,IAAIC,CAAL,GAAU,CAAnB;AAAsB3F,IAAAA,CAAC,EAAE;AAAzB,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB3F,IAAAA,CAAC,EAAE,CAAC2F;AAApB,GAHa,EAIb;AAAE5F,IAAAA,CAAC,EAAE4F,CAAC,GAAG,CAAT;AAAY3F,IAAAA,CAAC,EAAE,CAAC2F;AAAhB,GAJa,CAAf;AAMA,MAAMxH,QAAQ,GAAG6T,kBAAkB,CAACjU,MAAD,EAAS2H,CAAT,EAAYC,CAAZ,EAAee,MAAf,CAAnC;;AACA1I,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAO8wB,iEAAA,CAA0BjzB,IAA1B,EAAgC0I,MAAhC,EAAwCvG,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAOhC,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS8U,aAAT,CAAuBlV,MAAvB,EAA+Bc,IAA/B,EAAqCb,IAArC,EAA2C;AACzC,MAAM0H,CAAC,GAAG7G,IAAI,CAACQ,KAAf;AACA,MAAMsG,CAAC,GAAG9G,IAAI,CAACS,MAAf;AACA,MAAMoH,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAE4F,CAAC,GAAG,CAAT;AAAY3F,IAAAA,CAAC,EAAE;AAAf,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB3F,IAAAA,CAAC,EAAE;AAAnB,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAI,IAAIC,CAAL,GAAU,CAAnB;AAAsB3F,IAAAA,CAAC,EAAE,CAAC2F;AAA1B,GAHa,EAIb;AAAE5F,IAAAA,CAAC,EAAG,CAAC,CAAD,GAAK4F,CAAN,GAAW,CAAhB;AAAmB3F,IAAAA,CAAC,EAAE,CAAC2F;AAAvB,GAJa,CAAf;AAMA,MAAMxH,QAAQ,GAAG6T,kBAAkB,CAACjU,MAAD,EAAS2H,CAAT,EAAYC,CAAZ,EAAee,MAAf,CAAnC;;AACA1I,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAO8wB,iEAAA,CAA0BjzB,IAA1B,EAAgC0I,MAAhC,EAAwCvG,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAOhC,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS+U,oBAAT,CAA8BnV,MAA9B,EAAsCc,IAAtC,EAA4Cb,IAA5C,EAAkD;AAChD,MAAM0H,CAAC,GAAG7G,IAAI,CAACQ,KAAf;AACA,MAAMsG,CAAC,GAAG9G,IAAI,CAACS,MAAf;AACA,MAAMoH,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE;AAAX,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB3F,IAAAA,CAAC,EAAE;AAAnB,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE2F,CAAL;AAAQ1F,IAAAA,CAAC,EAAE,CAAC2F,CAAD,GAAK;AAAhB,GAHa,EAIb;AAAE5F,IAAAA,CAAC,EAAE2F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB3F,IAAAA,CAAC,EAAE,CAAC2F;AAApB,GAJa,EAKb;AAAE5F,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE,CAAC2F;AAAZ,GALa,CAAf;AAOA,MAAMxH,QAAQ,GAAG6T,kBAAkB,CAACjU,MAAD,EAAS2H,CAAT,EAAYC,CAAZ,EAAee,MAAf,CAAnC;;AACA1I,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAO8wB,iEAAA,CAA0BjzB,IAA1B,EAAgC0I,MAAhC,EAAwCvG,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAOhC,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASyV,OAAT,CAAiB7V,MAAjB,EAAyBc,IAAzB,EAA+Bb,IAA/B,EAAqC;AACnC,MAAM2H,CAAC,GAAG9G,IAAI,CAACS,MAAf;AACA,MAAMoG,CAAC,GAAG7G,IAAI,CAACQ,KAAL,GAAasG,CAAC,GAAG,CAA3B;AAEA,MAAMxH,QAAQ,GAAGJ,MAAM,CACpBK,MADc,CACP,MADO,EACC,cADD,EAEdC,IAFc,CAET,IAFS,EAEHsH,CAAC,GAAG,CAFD,EAGdtH,IAHc,CAGT,IAHS,EAGHsH,CAAC,GAAG,CAHD,EAIdtH,IAJc,CAIT,GAJS,EAIJ,CAACqH,CAAD,GAAK,CAJD,EAKdrH,IALc,CAKT,GALS,EAKJ,CAACsH,CAAD,GAAK,CALD,EAMdtH,IANc,CAMT,OANS,EAMAqH,CANA,EAOdrH,IAPc,CAOT,QAPS,EAOCsH,CAPD,CAAjB;;AASA3H,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAO8wB,8DAAA,CAAuBjzB,IAAvB,EAA6BmC,KAA7B,CAAP;AACD,GAFD;;AAGA,SAAOhC,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS0V,UAAT,CAAoB9V,MAApB,EAA4Bc,IAA5B,EAAkCb,IAAlC,EAAwC;AACtC,MAAM0H,CAAC,GAAG7G,IAAI,CAACQ,KAAf;AACA,MAAMsG,CAAC,GAAG9G,IAAI,CAACS,MAAf;AACA,MAAMoH,MAAM,GAAG,CACb;AAAE3G,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE;AAAX,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE2F,CAAL;AAAQ1F,IAAAA,CAAC,EAAE;AAAX,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE2F,CAAL;AAAQ1F,IAAAA,CAAC,EAAE,CAAC2F;AAAZ,GAHa,EAIb;AAAE5F,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE,CAAC2F;AAAZ,GAJa,EAKb;AAAE5F,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE;AAAX,GALa,EAMb;AAAED,IAAAA,CAAC,EAAE,CAAC,CAAN;AAASC,IAAAA,CAAC,EAAE;AAAZ,GANa,EAOb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAG,CAAT;AAAY1F,IAAAA,CAAC,EAAE;AAAf,GAPa,EAQb;AAAED,IAAAA,CAAC,EAAE2F,CAAC,GAAG,CAAT;AAAY1F,IAAAA,CAAC,EAAE,CAAC2F;AAAhB,GARa,EASb;AAAE5F,IAAAA,CAAC,EAAE,CAAC,CAAN;AAASC,IAAAA,CAAC,EAAE,CAAC2F;AAAb,GATa,EAUb;AAAE5F,IAAAA,CAAC,EAAE,CAAC,CAAN;AAASC,IAAAA,CAAC,EAAE;AAAZ,GAVa,CAAf;AAYA,MAAM7B,QAAQ,GAAG6T,kBAAkB,CAACjU,MAAD,EAAS2H,CAAT,EAAYC,CAAZ,EAAee,MAAf,CAAnC;;AACA1I,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAO8wB,iEAAA,CAA0BjzB,IAA1B,EAAgC0I,MAAhC,EAAwCvG,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAOhC,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASgV,QAAT,CAAkBpV,MAAlB,EAA0Bc,IAA1B,EAAgCb,IAAhC,EAAsC;AACpC,MAAM0H,CAAC,GAAG7G,IAAI,CAACQ,KAAf;AACA,MAAMQ,EAAE,GAAG6F,CAAC,GAAG,CAAf;AACA,MAAM5F,EAAE,GAAGD,EAAE,IAAI,MAAM6F,CAAC,GAAG,EAAd,CAAb;AACA,MAAMC,CAAC,GAAG9G,IAAI,CAACS,MAAL,GAAcQ,EAAxB;AAEA,MAAMgB,KAAK,GACT,SACAhB,EADA,GAEA,KAFA,GAGAD,EAHA,GAIA,GAJA,GAKAC,EALA,GAMA,SANA,GAOA4F,CAPA,GAQA,OARA,GASA7F,EATA,GAUA,GAVA,GAWAC,EAXA,GAYA,SAZA,GAaA,CAAC4F,CAbD,GAcA,SAdA,GAeAC,CAfA,GAgBA,KAhBA,GAiBA9F,EAjBA,GAkBA,GAlBA,GAmBAC,EAnBA,GAoBA,SApBA,GAqBA4F,CArBA,GAsBA,SAtBA,GAuBA,CAACC,CAxBH;AA0BA,MAAMxH,QAAQ,GAAGJ,MAAM,CACpBM,IADc,CACT,gBADS,EACSyB,EADT,EAEd1B,MAFc,CAEP,MAFO,EAEC,cAFD,EAGdC,IAHc,CAGT,GAHS,EAGJyC,KAHI,EAIdzC,IAJc,CAIT,WAJS,EAII,eAAe,CAACqH,CAAD,GAAK,CAApB,GAAwB,GAAxB,GAA8B,EAAEC,CAAC,GAAG,CAAJ,GAAQ7F,EAAV,CAA9B,GAA8C,GAJlD,CAAjB;;AAMA9B,EAAAA,IAAI,CAACkC,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,QAAM6E,GAAG,GAAGisB,8DAAA,CAAuBjzB,IAAvB,EAA6BmC,KAA7B,CAAZ;AACA,QAAMJ,CAAC,GAAGiF,GAAG,CAACjF,CAAJ,GAAQ/B,IAAI,CAAC+B,CAAvB;;AAEA,QACEF,EAAE,IAAI,CAAN,KACC0F,IAAI,CAACC,GAAL,CAASzF,CAAT,IAAc/B,IAAI,CAACqB,KAAL,GAAa,CAA3B,IACEkG,IAAI,CAACC,GAAL,CAASzF,CAAT,KAAe/B,IAAI,CAACqB,KAAL,GAAa,CAA5B,IAAiCkG,IAAI,CAACC,GAAL,CAASR,GAAG,CAAChF,CAAJ,GAAQhC,IAAI,CAACgC,CAAtB,IAA2BhC,IAAI,CAACsB,MAAL,GAAc,CAAd,GAAkBQ,EAFjF,CADF,EAIE;AACA;AACA;AACA,UAAIE,CAAC,GAAGF,EAAE,GAAGA,EAAL,IAAW,IAAKC,CAAC,GAAGA,CAAL,IAAWF,EAAE,GAAGA,EAAhB,CAAf,CAAR;AACA,UAAIG,CAAC,IAAI,CAAT,EAAYA,CAAC,GAAGuF,IAAI,CAAC6G,IAAL,CAAUpM,CAAV,CAAJ;AACZA,MAAAA,CAAC,GAAGF,EAAE,GAAGE,CAAT;AACA,UAAIG,KAAK,CAACH,CAAN,GAAUhC,IAAI,CAACgC,CAAf,GAAmB,CAAvB,EAA0BA,CAAC,GAAG,CAACA,CAAL;AAE1BgF,MAAAA,GAAG,CAAChF,CAAJ,IAASA,CAAT;AACD;;AAED,WAAOgF,GAAP;AACD,GApBD;;AAsBA,SAAO7G,QAAP;AACD;AAED;;;AACO,SAAS+yB,WAAT,CAAqB1lB,MAArB,EAA6B;AAClCA,EAAAA,MAAM,CAAC9K,MAAP,GAAgByR,QAAhB,GAA2BA,QAA3B;AACA3G,EAAAA,MAAM,CAAC9K,MAAP,GAAgB+R,OAAhB,GAA0BA,OAA1B;AACAjH,EAAAA,MAAM,CAAC9K,MAAP,GAAgBkT,OAAhB,GAA0BA,OAA1B;AACApI,EAAAA,MAAM,CAAC9K,MAAP,GAAgBmT,UAAhB,GAA6BA,UAA7B;AACArI,EAAAA,MAAM,CAAC9K,MAAP,GAAgByS,QAAhB,GAA2BA,QAA3B,CALkC,CAOlC;;AACA3H,EAAAA,MAAM,CAAC9K,MAAP,GAAgBmS,mBAAhB,GAAsCA,mBAAtC,CARkC,CAUlC;;AACArH,EAAAA,MAAM,CAAC9K,MAAP,GAAgBoS,UAAhB,GAA6BA,UAA7B,CAXkC,CAalC;;AACAtH,EAAAA,MAAM,CAAC9K,MAAP,GAAgBqS,SAAhB,GAA4BA,SAA5B,CAdkC,CAgBlC;;AACAvH,EAAAA,MAAM,CAAC9K,MAAP,GAAgBsS,SAAhB,GAA4BA,SAA5B,CAjBkC,CAmBlC;;AACAxH,EAAAA,MAAM,CAAC9K,MAAP,GAAgBuS,aAAhB,GAAgCA,aAAhC,CApBkC,CAsBlC;;AACAzH,EAAAA,MAAM,CAAC9K,MAAP,GAAgBwS,oBAAhB,GAAuCA,oBAAvC;AACD;AAED;;AACO,SAASie,aAAT,CAAuBC,QAAvB,EAAiC;AACtCA,EAAAA,QAAQ,CAAC;AAAEjf,IAAAA,QAAQ,EAARA;AAAF,GAAD,CAAR;AACAif,EAAAA,QAAQ,CAAC;AAAE3e,IAAAA,OAAO,EAAPA;AAAF,GAAD,CAAR;AACA2e,EAAAA,QAAQ,CAAC;AAAExd,IAAAA,OAAO,EAAPA;AAAF,GAAD,CAAR;AACAwd,EAAAA,QAAQ,CAAC;AAAEvd,IAAAA,UAAU,EAAVA;AAAF,GAAD,CAAR;AACAud,EAAAA,QAAQ,CAAC;AAAEje,IAAAA,QAAQ,EAARA;AAAF,GAAD,CAAR,CALsC,CAOtC;;AACAie,EAAAA,QAAQ,CAAC;AAAEve,IAAAA,mBAAmB,EAAnBA;AAAF,GAAD,CAAR,CARsC,CAUtC;;AACAue,EAAAA,QAAQ,CAAC;AAAEte,IAAAA,UAAU,EAAVA;AAAF,GAAD,CAAR,CAXsC,CAatC;;AACAse,EAAAA,QAAQ,CAAC;AAAEre,IAAAA,SAAS,EAATA;AAAF,GAAD,CAAR,CAdsC,CAgBtC;;AACAqe,EAAAA,QAAQ,CAAC;AAAEpe,IAAAA,SAAS,EAATA;AAAF,GAAD,CAAR,CAjBsC,CAmBtC;;AACAoe,EAAAA,QAAQ,CAAC;AAAEne,IAAAA,aAAa,EAAbA;AAAF,GAAD,CAAR,CApBsC,CAsBtC;;AACAme,EAAAA,QAAQ,CAAC;AAAEle,IAAAA,oBAAoB,EAApBA;AAAF,GAAD,CAAR;AACD;AAED;AACA;AACA;AACA;AACA;AACA;;AACA,SAASlB,kBAAT,CAA4BjU,MAA5B,EAAoC2H,CAApC,EAAuCC,CAAvC,EAA0Ce,MAA1C,EAAkD;AAChD,SAAO3I,MAAM,CACVK,MADI,CACG,SADH,EACc,cADd,EAEJC,IAFI,CAGH,QAHG,EAIHqI,MAAM,CACH6L,GADH,CACO,UAAUrW,CAAV,EAAa;AAChB,WAAOA,CAAC,CAAC6D,CAAF,GAAM,GAAN,GAAY7D,CAAC,CAAC8D,CAArB;AACD,GAHH,EAIGwS,IAJH,CAIQ,GAJR,CAJG,EAUJnU,IAVI,CAUC,WAVD,EAUc,eAAe,CAACqH,CAAD,GAAK,CAApB,GAAwB,GAAxB,GAA8BC,CAAC,GAAG,CAAlC,GAAsC,GAVpD,CAAP;AAWD;;AAED,iEAAe;AACburB,EAAAA,WAAW,EAAXA,WADa;AAEbC,EAAAA,aAAa,EAAbA;AAFa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClXA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMhU,qBAAqB,GAAG,YAA9B;AACA,IAAIkU,aAAa,GAAG,CAApB;AACA,IAAIl2B,MAAM,GAAG6hB,8CAAA,EAAb;AACA,IAAIsU,QAAQ,GAAG,EAAf;AACA,IAAI7mB,KAAK,GAAG,EAAZ;AACA,IAAInK,OAAO,GAAG,EAAd;AACA,IAAIixB,SAAS,GAAG,EAAhB;AACA,IAAIC,cAAc,GAAG,EAArB;AACA,IAAIC,QAAQ,GAAG,EAAf;AACA,IAAIC,QAAQ,GAAG,CAAf;AACA,IAAIC,cAAc,GAAG,IAArB;AACA,IAAI1P,SAAJ;AAEA,IAAI2P,OAAJ,EAAa;AAEb;;AACA,IAAItU,IAAI,GAAG,EAAX;AAEO,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BlS,IAA9B,EAAoC;AAChE2R,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDlS,IAApD;AACD,CAFM;AAIP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMyS,WAAW,GAAG,SAAdA,WAAc,CAAU9f,EAAV,EAAc;AACvC,MAAM2zB,WAAW,GAAGx2B,MAAM,CAAC0B,IAAP,CAAYu0B,QAAZ,CAApB;;AACA,OAAK,IAAIt1B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG61B,WAAW,CAAC51B,MAAhC,EAAwCD,CAAC,EAAzC,EAA6C;AAC3C,QAAIs1B,QAAQ,CAACO,WAAW,CAAC71B,CAAD,CAAZ,CAAR,CAAyBkC,EAAzB,KAAgCA,EAApC,EAAwC;AACtC,aAAOozB,QAAQ,CAACO,WAAW,CAAC71B,CAAD,CAAZ,CAAR,CAAyBsW,KAAhC;AACD;AACF;;AACD,SAAOpU,EAAP;AACD,CARM;AAUP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM4zB,SAAS,GAAG,SAAZA,SAAY,CAAUvhB,GAAV,EAAe/R,IAAf,EAAqB+M,IAArB,EAA2B3L,KAA3B,EAAkCU,OAAlC,EAA2CgK,GAA3C,EAAgD;AACvE,MAAIue,GAAJ;AACA,MAAI3qB,EAAE,GAAGqS,GAAT;;AACA,MAAI,OAAOrS,EAAP,KAAc,WAAlB,EAA+B;AAC7B;AACD;;AACD,MAAIA,EAAE,CAAC6E,IAAH,GAAU9G,MAAV,KAAqB,CAAzB,EAA4B;AAC1B;AACD,GARsE,CAUvE;;;AAEA,MAAI,OAAOq1B,QAAQ,CAACpzB,EAAD,CAAf,KAAwB,WAA5B,EAAyC;AACvCozB,IAAAA,QAAQ,CAACpzB,EAAD,CAAR,GAAe;AACbA,MAAAA,EAAE,EAAEA,EADS;AAEboU,MAAAA,KAAK,EAAE6K,qBAAqB,GAAGjf,EAAxB,GAA6B,GAA7B,GAAmCmzB,aAF7B;AAGbpO,MAAAA,MAAM,EAAE,EAHK;AAIb3iB,MAAAA,OAAO,EAAE;AAJI,KAAf;AAMD;;AACD+wB,EAAAA,aAAa;;AACb,MAAI,OAAO7yB,IAAP,KAAgB,WAApB,EAAiC;AAC/BrD,IAAAA,MAAM,GAAG6hB,8CAAA,EAAT;AACA6L,IAAAA,GAAG,GAAG5L,mEAAA,CAAoBze,IAAI,CAACuE,IAAL,EAApB,EAAiC5H,MAAjC,CAAN,CAF+B,CAI/B;;AACA,QAAI0tB,GAAG,CAAC,CAAD,CAAH,KAAW,GAAX,IAAkBA,GAAG,CAACA,GAAG,CAAC5sB,MAAJ,GAAa,CAAd,CAAH,KAAwB,GAA9C,EAAmD;AACjD4sB,MAAAA,GAAG,GAAGA,GAAG,CAAC1J,SAAJ,CAAc,CAAd,EAAiB0J,GAAG,CAAC5sB,MAAJ,GAAa,CAA9B,CAAN;AACD;;AAEDq1B,IAAAA,QAAQ,CAACpzB,EAAD,CAAR,CAAaM,IAAb,GAAoBqqB,GAApB;AACD,GAVD,MAUO;AACL,QAAI,OAAOyI,QAAQ,CAACpzB,EAAD,CAAR,CAAaM,IAApB,KAA6B,WAAjC,EAA8C;AAC5C8yB,MAAAA,QAAQ,CAACpzB,EAAD,CAAR,CAAaM,IAAb,GAAoB+R,GAApB;AACD;AACF;;AACD,MAAI,OAAOhF,IAAP,KAAgB,WAApB,EAAiC;AAC/B+lB,IAAAA,QAAQ,CAACpzB,EAAD,CAAR,CAAaqN,IAAb,GAAoBA,IAApB;AACD;;AACD,MAAI,OAAO3L,KAAP,KAAiB,WAArB,EAAkC;AAChC,QAAIA,KAAK,KAAK,IAAd,EAAoB;AAClBA,MAAAA,KAAK,CAAC3C,OAAN,CAAc,UAAUkF,CAAV,EAAa;AACzBmvB,QAAAA,QAAQ,CAACpzB,EAAD,CAAR,CAAa+kB,MAAb,CAAoBzlB,IAApB,CAAyB2E,CAAzB;AACD,OAFD;AAGD;AACF;;AACD,MAAI,OAAO7B,OAAP,KAAmB,WAAvB,EAAoC;AAClC,QAAIA,OAAO,KAAK,IAAhB,EAAsB;AACpBA,MAAAA,OAAO,CAACrD,OAAR,CAAgB,UAAUkF,CAAV,EAAa;AAC3BmvB,QAAAA,QAAQ,CAACpzB,EAAD,CAAR,CAAaoC,OAAb,CAAqB9C,IAArB,CAA0B2E,CAA1B;AACD,OAFD;AAGD;AACF;;AACD,MAAI,OAAOmI,GAAP,KAAe,WAAnB,EAAgC;AAC9BgnB,IAAAA,QAAQ,CAACpzB,EAAD,CAAR,CAAaoM,GAAb,GAAmBA,GAAnB;AACD;AACF,CAxDM;AA0DP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMynB,aAAa,GAAG,SAAhBA,aAAgB,CAAUC,MAAV,EAAkBC,IAAlB,EAAwB1mB,IAAxB,EAA8B2mB,QAA9B,EAAwC;AACnE,MAAIpe,KAAK,GAAGke,MAAZ;AACA,MAAIhe,GAAG,GAAGie,IAAV,CAFmE,CAGnE;AACA;AACA;;AAEA,MAAM3uB,IAAI,GAAG;AAAEwQ,IAAAA,KAAK,EAAEA,KAAT;AAAgBE,IAAAA,GAAG,EAAEA,GAArB;AAA0BzI,IAAAA,IAAI,EAAE3M,SAAhC;AAA2CJ,IAAAA,IAAI,EAAE;AAAjD,GAAb;AACA0zB,EAAAA,QAAQ,GAAG3mB,IAAI,CAAC/M,IAAhB;;AAEA,MAAI,OAAO0zB,QAAP,KAAoB,WAAxB,EAAqC;AACnC5uB,IAAAA,IAAI,CAAC9E,IAAL,GAAYye,mEAAA,CAAoBiV,QAAQ,CAACnvB,IAAT,EAApB,EAAqC5H,MAArC,CAAZ,CADmC,CAGnC;;AACA,QAAImI,IAAI,CAAC9E,IAAL,CAAU,CAAV,MAAiB,GAAjB,IAAwB8E,IAAI,CAAC9E,IAAL,CAAU8E,IAAI,CAAC9E,IAAL,CAAUvC,MAAV,GAAmB,CAA7B,MAAoC,GAAhE,EAAqE;AACnEqH,MAAAA,IAAI,CAAC9E,IAAL,GAAY8E,IAAI,CAAC9E,IAAL,CAAU2gB,SAAV,CAAoB,CAApB,EAAuB7b,IAAI,CAAC9E,IAAL,CAAUvC,MAAV,GAAmB,CAA1C,CAAZ;AACD;AACF;;AAED,MAAI,OAAOsP,IAAP,KAAgB,WAApB,EAAiC;AAC/BjI,IAAAA,IAAI,CAACiI,IAAL,GAAYA,IAAI,CAACA,IAAjB;AACAjI,IAAAA,IAAI,CAACyY,MAAL,GAAcxQ,IAAI,CAACwQ,MAAnB;AACAzY,IAAAA,IAAI,CAACrH,MAAL,GAAcsP,IAAI,CAACtP,MAAnB;AACD;;AACDwO,EAAAA,KAAK,CAACjN,IAAN,CAAW8F,IAAX;AACD,CAzBM;AA0BA,IAAM6uB,OAAO,GAAG,SAAVA,OAAU,CAAUH,MAAV,EAAkBC,IAAlB,EAAwB1mB,IAAxB,EAA8B2mB,QAA9B,EAAwC;AAC7D,MAAIl2B,CAAJ,EAAO2G,CAAP;;AACA,OAAK3G,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGg2B,MAAM,CAAC/1B,MAAvB,EAA+BD,CAAC,EAAhC,EAAoC;AAClC,SAAK2G,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGsvB,IAAI,CAACh2B,MAArB,EAA6B0G,CAAC,EAA9B,EAAkC;AAChCovB,MAAAA,aAAa,CAACC,MAAM,CAACh2B,CAAD,CAAP,EAAYi2B,IAAI,CAACtvB,CAAD,CAAhB,EAAqB4I,IAArB,EAA2B2mB,QAA3B,CAAb;AACD;AACF;AACF,CAPM;AASP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAME,qBAAqB,GAAG,SAAxBA,qBAAwB,CAAUC,SAAV,EAAqBC,MAArB,EAA6B;AAChED,EAAAA,SAAS,CAACp1B,OAAV,CAAkB,UAAU+H,GAAV,EAAe;AAC/B,QAAIA,GAAG,KAAK,SAAZ,EAAuB;AACrByF,MAAAA,KAAK,CAACuZ,kBAAN,GAA2BsO,MAA3B;AACD,KAFD,MAEO;AACL7nB,MAAAA,KAAK,CAACzF,GAAD,CAAL,CAAW+e,WAAX,GAAyBuO,MAAzB;AACD;AACF,GAND;AAOD,CARM;AAUP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAAUF,SAAV,EAAqBzyB,KAArB,EAA4B;AACpDyyB,EAAAA,SAAS,CAACp1B,OAAV,CAAkB,UAAU+H,GAAV,EAAe;AAC/B,QAAIA,GAAG,KAAK,SAAZ,EAAuB;AACrByF,MAAAA,KAAK,CAAC6Y,YAAN,GAAqB1jB,KAArB;AACD,KAFD,MAEO;AACL,UAAIsD,iEAAA,CAAyB,MAAzB,EAAiCtD,KAAjC,MAA4C,CAAC,CAAjD,EAAoD;AAClDA,QAAAA,KAAK,CAACpC,IAAN,CAAW,WAAX;AACD;;AACDiN,MAAAA,KAAK,CAACzF,GAAD,CAAL,CAAWpF,KAAX,GAAmBA,KAAnB;AACD;AACF,GATD;AAUD,CAXM;AAaA,IAAMie,QAAQ,GAAG,SAAXA,QAAW,CAAU3f,EAAV,EAAc0B,KAAd,EAAqB;AAC3C,MAAI,OAAOU,OAAO,CAACpC,EAAD,CAAd,KAAuB,WAA3B,EAAwC;AACtCoC,IAAAA,OAAO,CAACpC,EAAD,CAAP,GAAc;AAAEA,MAAAA,EAAE,EAAEA,EAAN;AAAU+kB,MAAAA,MAAM,EAAE,EAAlB;AAAsBwP,MAAAA,UAAU,EAAE;AAAlC,KAAd;AACD;;AAED,MAAI,OAAO7yB,KAAP,KAAiB,WAArB,EAAkC;AAChC,QAAIA,KAAK,KAAK,IAAd,EAAoB;AAClBA,MAAAA,KAAK,CAAC3C,OAAN,CAAc,UAAUkF,CAAV,EAAa;AACzB,YAAIA,CAAC,CAACsd,KAAF,CAAQ,OAAR,CAAJ,EAAsB;AACpB,cAAMiT,SAAS,GAAGvwB,CAAC,CAACD,OAAF,CAAU,MAAV,EAAkB,QAAlB,CAAlB;AACA,cAAMywB,SAAS,GAAGD,SAAS,CAACxwB,OAAV,CAAkB,OAAlB,EAA2B,MAA3B,CAAlB;AACA5B,UAAAA,OAAO,CAACpC,EAAD,CAAP,CAAYu0B,UAAZ,CAAuBj1B,IAAvB,CAA4Bm1B,SAA5B;AACD;;AACDryB,QAAAA,OAAO,CAACpC,EAAD,CAAP,CAAY+kB,MAAZ,CAAmBzlB,IAAnB,CAAwB2E,CAAxB;AACD,OAPD;AAQD;AACF;AACF,CAjBM;AAmBP;AACA;AACA;AACA;AACA;;AACO,IAAMggB,YAAY,GAAG,SAAfA,YAAe,CAAU7X,GAAV,EAAe;AACzC2X,EAAAA,SAAS,GAAG3X,GAAZ;;AACA,MAAI2X,SAAS,CAACxC,KAAV,CAAgB,KAAhB,CAAJ,EAA4B;AAC1BwC,IAAAA,SAAS,GAAG,IAAZ;AACD;;AACD,MAAIA,SAAS,CAACxC,KAAV,CAAgB,MAAhB,CAAJ,EAA6B;AAC3BwC,IAAAA,SAAS,GAAG,IAAZ;AACD;;AACD,MAAIA,SAAS,CAACxC,KAAV,CAAgB,KAAhB,CAAJ,EAA4B;AAC1BwC,IAAAA,SAAS,GAAG,IAAZ;AACD;;AACD,MAAIA,SAAS,CAACxC,KAAV,CAAgB,KAAhB,CAAJ,EAA4B;AAC1BwC,IAAAA,SAAS,GAAG,IAAZ;AACD;AACF,CAdM;AAgBP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM2Q,QAAQ,GAAG,SAAXA,QAAW,CAAUpT,GAAV,EAAe5B,SAAf,EAA0B;AAChD4B,EAAAA,GAAG,CAAChd,KAAJ,CAAU,GAAV,EAAevF,OAAf,CAAuB,UAAUsT,GAAV,EAAe;AACpC;AACA,QAAIrS,EAAE,GAAGqS,GAAT,CAFoC,CAGpC;;AACA,QAAI,OAAO+gB,QAAQ,CAACpzB,EAAD,CAAf,KAAwB,WAA5B,EAAyC;AACvCozB,MAAAA,QAAQ,CAACpzB,EAAD,CAAR,CAAaoC,OAAb,CAAqB9C,IAArB,CAA0BogB,SAA1B;AACD;;AAED,QAAI,OAAO4T,cAAc,CAACtzB,EAAD,CAArB,KAA8B,WAAlC,EAA+C;AAC7CszB,MAAAA,cAAc,CAACtzB,EAAD,CAAd,CAAmBoC,OAAnB,CAA2B9C,IAA3B,CAAgCogB,SAAhC;AACD;AACF,GAXD;AAYD,CAbM;;AAeP,IAAM8B,UAAU,GAAG,SAAbA,UAAa,CAAUF,GAAV,EAAerJ,OAAf,EAAwB;AACzCqJ,EAAAA,GAAG,CAAChd,KAAJ,CAAU,GAAV,EAAevF,OAAf,CAAuB,UAAUiB,EAAV,EAAc;AACnC,QAAI,OAAOiY,OAAP,KAAmB,WAAvB,EAAoC;AAClCsb,MAAAA,QAAQ,CAACG,OAAO,KAAK,OAAZ,GAAsB5T,WAAW,CAAC9f,EAAD,CAAjC,GAAwCA,EAAzC,CAAR,GAAuD+e,mEAAA,CAAoB9G,OAApB,EAA6Bhb,MAA7B,CAAvD;AACD;AACF,GAJD;AAKD,CAND;;AAQA,IAAM03B,WAAW,GAAG,SAAdA,WAAc,CAAU30B,EAAV,EAAc8hB,YAAd,EAA4BC,YAA5B,EAA0C;AAC5D,MAAI3N,KAAK,GAAG0L,WAAW,CAAC9f,EAAD,CAAvB,CAD4D,CAE5D;;AACA,MAAI8e,8CAAA,GAAsBpG,aAAtB,KAAwC,OAA5C,EAAqD;AACnD;AACD;;AACD,MAAI,OAAOoJ,YAAP,KAAwB,WAA5B,EAAyC;AACvC;AACD;;AACD,MAAII,OAAO,GAAG,EAAd;;AACA,MAAI,OAAOH,YAAP,KAAwB,QAA5B,EAAsC;AACpC;AACAG,IAAAA,OAAO,GAAGH,YAAY,CAACzd,KAAb,CAAmB,+BAAnB,CAAV;;AACA,SAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGokB,OAAO,CAACnkB,MAA5B,EAAoCD,CAAC,EAArC,EAAyC;AACvC,UAAIqkB,IAAI,GAAGD,OAAO,CAACpkB,CAAD,CAAP,CAAW+G,IAAX,EAAX;AACA;;AACA;;AACA,UAAIsd,IAAI,CAACC,MAAL,CAAY,CAAZ,MAAmB,GAAnB,IAA0BD,IAAI,CAACC,MAAL,CAAYD,IAAI,CAACpkB,MAAL,GAAc,CAA1B,MAAiC,GAA/D,EAAoE;AAClEokB,QAAAA,IAAI,GAAGA,IAAI,CAACf,MAAL,CAAY,CAAZ,EAAee,IAAI,CAACpkB,MAAL,GAAc,CAA7B,CAAP;AACD;;AACDmkB,MAAAA,OAAO,CAACpkB,CAAD,CAAP,GAAaqkB,IAAb;AACD;AACF;AAED;;;AACA,MAAID,OAAO,CAACnkB,MAAR,KAAmB,CAAvB,EAA0B;AACxBmkB,IAAAA,OAAO,CAAC5iB,IAAR,CAAaU,EAAb;AACD;;AAED,MAAI,OAAOozB,QAAQ,CAACpzB,EAAD,CAAf,KAAwB,WAA5B,EAAyC;AACvCozB,IAAAA,QAAQ,CAACpzB,EAAD,CAAR,CAAakY,YAAb,GAA4B,IAA5B;AACAkH,IAAAA,IAAI,CAAC9f,IAAL,CAAU,YAAY;AACpB,UAAMqD,IAAI,GAAGa,QAAQ,CAAC6e,aAAT,iBAA+BjO,KAA/B,SAAb;;AACA,UAAIzR,IAAI,KAAK,IAAb,EAAmB;AACjBA,QAAAA,IAAI,CAAC2f,gBAAL,CACE,OADF,EAEE,YAAY;AACVtd,UAAAA,4DAAA,CAAAA,8CAAK,GAAS8c,YAAT,4BAA0BI,OAA1B,GAAL;AACD,SAJH,EAKE,KALF;AAOD;AACF,KAXD;AAYD;AACF,CA5CD;AA8CA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMT,OAAO,GAAG,SAAVA,OAAU,CAAUH,GAAV,EAAeI,OAAf,EAAwBC,MAAxB,EAAgC;AACrDL,EAAAA,GAAG,CAAChd,KAAJ,CAAU,GAAV,EAAevF,OAAf,CAAuB,UAAUiB,EAAV,EAAc;AACnC,QAAI,OAAOozB,QAAQ,CAACpzB,EAAD,CAAf,KAAwB,WAA5B,EAAyC;AACvCozB,MAAAA,QAAQ,CAACpzB,EAAD,CAAR,CAAa+X,IAAb,GAAoB/S,wDAAA,CAAgB0c,OAAhB,EAAyBzkB,MAAzB,CAApB;AACAm2B,MAAAA,QAAQ,CAACpzB,EAAD,CAAR,CAAagY,UAAb,GAA0B2J,MAA1B;AACD;AACF,GALD;AAMA+S,EAAAA,QAAQ,CAACpT,GAAD,EAAM,WAAN,CAAR;AACD,CARM;AASA,IAAMsT,UAAU,GAAG,SAAbA,UAAa,CAAU50B,EAAV,EAAc;AACtC,SAAOuzB,QAAQ,CAACvzB,EAAD,CAAf;AACD,CAFM;AAIP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM6hB,aAAa,GAAG,SAAhBA,aAAgB,CAAUP,GAAV,EAAeQ,YAAf,EAA6BC,YAA7B,EAA2C;AACtET,EAAAA,GAAG,CAAChd,KAAJ,CAAU,GAAV,EAAevF,OAAf,CAAuB,UAAUiB,EAAV,EAAc;AACnC20B,IAAAA,WAAW,CAAC30B,EAAD,EAAK8hB,YAAL,EAAmBC,YAAnB,CAAX;AACD,GAFD;AAGA2S,EAAAA,QAAQ,CAACpT,GAAD,EAAM,WAAN,CAAR;AACD,CALM;AAOA,IAAMkB,aAAa,GAAG,SAAhBA,aAAgB,CAAUlK,OAAV,EAAmB;AAC9C8G,EAAAA,IAAI,CAACrgB,OAAL,CAAa,UAAU0jB,GAAV,EAAe;AAC1BA,IAAAA,GAAG,CAACnK,OAAD,CAAH;AACD,GAFD;AAGD,CAJM;AAKA,IAAM0L,YAAY,GAAG,SAAfA,YAAe,GAAY;AACtC,SAAOD,SAAS,CAAClf,IAAV,EAAP;AACD,CAFM;AAGP;AACA;AACA;AACA;AACA;;AACO,IAAMgwB,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAOzB,QAAP;AACD,CAFM;AAIP;AACA;AACA;AACA;AACA;;AACO,IAAM0B,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAClC,SAAOvoB,KAAP;AACD,CAFM;AAIP;AACA;AACA;AACA;AACA;;AACO,IAAM2T,UAAU,GAAG,SAAbA,UAAa,GAAY;AACpC,SAAO9d,OAAP;AACD,CAFM;;AAIP,IAAM4d,aAAa,GAAG,SAAhBA,aAAgB,CAAU1H,OAAV,EAAmB;AACvC,MAAI4K,WAAW,GAAGxjB,0CAAM,CAAC,iBAAD,CAAxB;;AACA,MAAI,CAACwjB,WAAW,CAACC,OAAZ,IAAuBD,WAAxB,EAAqC,CAArC,EAAwC,CAAxC,MAA+C,IAAnD,EAAyD;AACvDA,IAAAA,WAAW,GAAGxjB,0CAAM,CAAC,MAAD,CAAN,CAAe4C,MAAf,CAAsB,KAAtB,EAA6BnC,IAA7B,CAAkC,OAAlC,EAA2C,gBAA3C,EAA6DuB,KAA7D,CAAmE,SAAnE,EAA8E,CAA9E,CAAd;AACD;;AAED,MAAM0hB,GAAG,GAAG1jB,0CAAM,CAAC4Y,OAAD,CAAN,CAAgB5Y,MAAhB,CAAuB,KAAvB,CAAZ;AAEA,MAAM4M,KAAK,GAAG8W,GAAG,CAACC,SAAJ,CAAc,QAAd,CAAd;AACA/W,EAAAA,KAAK,CACFgX,EADH,CACM,WADN,EACmB,YAAY;AAC3B,QAAMpgB,EAAE,GAAGxD,0CAAM,CAAC,IAAD,CAAjB;AACA,QAAM4V,KAAK,GAAGpS,EAAE,CAAC/C,IAAH,CAAQ,OAAR,CAAd,CAF2B,CAI3B;;AACA,QAAImV,KAAK,KAAK,IAAd,EAAoB;AAClB;AACD;;AACD,QAAM1V,IAAI,GAAG,KAAKsB,qBAAL,EAAb;AAEAgiB,IAAAA,WAAW,CAACK,UAAZ,GAAyBC,QAAzB,CAAkC,GAAlC,EAAuC9hB,KAAvC,CAA6C,SAA7C,EAAwD,IAAxD;AACAwhB,IAAAA,WAAW,CACRtf,IADH,CACQV,EAAE,CAAC/C,IAAH,CAAQ,OAAR,CADR,EAEGuB,KAFH,CAES,MAFT,EAEiBgJ,MAAM,CAAC+Y,OAAP,GAAiB7jB,IAAI,CAACuQ,IAAtB,GAA6B,CAACvQ,IAAI,CAAC8jB,KAAL,GAAa9jB,IAAI,CAACuQ,IAAnB,IAA2B,CAAxD,GAA4D,IAF7E,EAGGzO,KAHH,CAGS,KAHT,EAGgBgJ,MAAM,CAACiZ,OAAP,GAAiB/jB,IAAI,CAACwQ,GAAtB,GAA4B,EAA5B,GAAiC5M,QAAQ,CAACogB,IAAT,CAAcC,SAA/C,GAA2D,IAH3E;AAIA3gB,IAAAA,EAAE,CAAC4gB,OAAH,CAAW,OAAX,EAAoB,IAApB;AACD,GAjBH,EAkBGR,EAlBH,CAkBM,UAlBN,EAkBkB,YAAY;AAC1BJ,IAAAA,WAAW,CAACK,UAAZ,GAAyBC,QAAzB,CAAkC,GAAlC,EAAuC9hB,KAAvC,CAA6C,SAA7C,EAAwD,CAAxD;AACA,QAAMwB,EAAE,GAAGxD,0CAAM,CAAC,IAAD,CAAjB;AACAwD,IAAAA,EAAE,CAAC4gB,OAAH,CAAW,OAAX,EAAoB,KAApB;AACD,GAtBH;AAuBD,CAhCD;;AAiCA1E,IAAI,CAAC9f,IAAL,CAAU0gB,aAAV;AAEA;AACA;AACA;AACA;AACA;;AACO,IAAMjd,KAAK,GAAG,SAARA,KAAQ,CAAUgyB,GAAV,EAAe;AAClC3B,EAAAA,QAAQ,GAAG,EAAX;AACAhxB,EAAAA,OAAO,GAAG,EAAV;AACAmK,EAAAA,KAAK,GAAG,EAAR;AACA6S,EAAAA,IAAI,GAAG,EAAP;AACAA,EAAAA,IAAI,CAAC9f,IAAL,CAAU0gB,aAAV;AACAqT,EAAAA,SAAS,GAAG,EAAZ;AACAC,EAAAA,cAAc,GAAG,EAAjB;AACAE,EAAAA,QAAQ,GAAG,CAAX;AACAD,EAAAA,QAAQ,GAAG,EAAX;AACAE,EAAAA,cAAc,GAAG,IAAjB;AACAC,EAAAA,OAAO,GAAGqB,GAAG,IAAI,OAAjB;AACD,CAZM;AAaA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACD,GAAD,EAAS;AAC7BrB,EAAAA,OAAO,GAAGqB,GAAG,IAAI,OAAjB;AACD,CAFM;AAGP;;AACO,IAAM3P,YAAY,GAAG,SAAfA,YAAe,GAAY;AACtC,SAAO,2FAAP;AACD,CAFM;AAIP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM6P,WAAW,GAAG,SAAdA,WAAc,CAAU5iB,GAAV,EAAe6iB,IAAf,EAAqBC,MAArB,EAA6B;AACtD;AACA,MAAIn1B,EAAE,GAAGqS,GAAG,CAACxN,IAAJ,EAAT;;AACA,MAAIyQ,KAAK,GAAG6f,MAAZ;;AACA,MAAI9iB,GAAG,KAAK8iB,MAAR,IAAkBA,MAAM,CAAC5T,KAAP,CAAa,IAAb,CAAtB,EAA0C;AACxCvhB,IAAAA,EAAE,GAAGU,SAAL;AACD;AACD;;;AACA,WAAS00B,IAAT,CAAcC,CAAd,EAAiB;AACf,QAAMC,KAAK,GAAG;AAAEC,MAAAA,OAAO,EAAE,EAAX;AAAeC,MAAAA,MAAM,EAAE,EAAvB;AAA2BC,MAAAA,MAAM,EAAE;AAAnC,KAAd;AACA,QAAMC,IAAI,GAAG,EAAb;AAEA,QAAItpB,GAAJ,CAJe,CAIN;;AACT,QAAMupB,QAAQ,GAAGN,CAAC,CAACvrB,MAAF,CAAS,UAAUqY,IAAV,EAAgB;AACxC,UAAM9U,IAAI,WAAU8U,IAAV,CAAV;;AACA,UAAIA,IAAI,CAACyT,IAAL,IAAazT,IAAI,CAACyT,IAAL,KAAc,KAA/B,EAAsC;AACpCxpB,QAAAA,GAAG,GAAG+V,IAAI,CAAC3b,KAAX;AACA,eAAO,KAAP;AACD;;AACD,UAAI2b,IAAI,CAACtd,IAAL,OAAgB,EAApB,EAAwB;AACtB,eAAO,KAAP;AACD;;AACD,UAAIwI,IAAI,IAAIioB,KAAZ,EAAmB;AACjB,eAAOA,KAAK,CAACjoB,IAAD,CAAL,CAAYwoB,cAAZ,CAA2B1T,IAA3B,IAAmC,KAAnC,GAA4CmT,KAAK,CAACjoB,IAAD,CAAL,CAAY8U,IAAZ,IAAoB,IAAvE,CADiB,CAC6D;AAC/E,OAFD,MAEO;AACL,eAAOuT,IAAI,CAACx2B,OAAL,CAAaijB,IAAb,KAAsB,CAAtB,GAA0B,KAA1B,GAAkCuT,IAAI,CAACp2B,IAAL,CAAU6iB,IAAV,CAAzC;AACD;AACF,KAdgB,CAAjB;AAeA,WAAO;AAAEwT,MAAAA,QAAQ,EAARA,QAAF;AAAYvpB,MAAAA,GAAG,EAAHA;AAAZ,KAAP;AACD;;AAED,MAAIupB,QAAQ,GAAG,EAAf;;AAEA,cAA8BP,IAAI,CAACO,QAAQ,CAACxjB,MAAT,CAAgB2jB,KAAhB,CAAsBH,QAAtB,EAAgCT,IAAhC,CAAD,CAAlC;AAAA,MAAkBa,EAAlB,SAAQJ,QAAR;AAAA,MAAsBvpB,GAAtB,SAAsBA,GAAtB;;AACAupB,EAAAA,QAAQ,GAAGI,EAAX;;AACA,MAAIrC,OAAO,KAAK,OAAhB,EAAyB;AACvB32B,IAAAA,6CAAA,CAAS,YAAT;;AACA,SAAK,IAAIe,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG63B,QAAQ,CAAC53B,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;AACxC63B,MAAAA,QAAQ,CAAC73B,CAAD,CAAR,GAAcgiB,WAAW,CAAC6V,QAAQ,CAAC73B,CAAD,CAAT,CAAzB;AACD;AACF;;AAEDkC,EAAAA,EAAE,GAAGA,EAAE,IAAI,aAAawzB,QAAxB,CA1CsD,CA2CtD;;AACAle,EAAAA,KAAK,GAAGA,KAAK,IAAI,EAAjB;AACAA,EAAAA,KAAK,GAAGyJ,mEAAA,CAAoBzJ,KAApB,EAA2BrY,MAA3B,CAAR;AACAu2B,EAAAA,QAAQ,GAAGA,QAAQ,GAAG,CAAtB;AACA,MAAMwC,QAAQ,GAAG;AAAEh2B,IAAAA,EAAE,EAAEA,EAAN;AAAUsM,IAAAA,KAAK,EAAEqpB,QAAjB;AAA2BrgB,IAAAA,KAAK,EAAEA,KAAK,CAACzQ,IAAN,EAAlC;AAAgDzC,IAAAA,OAAO,EAAE,EAAzD;AAA6DgK,IAAAA,GAAG,EAAHA;AAA7D,GAAjB;AAEArP,EAAAA,6CAAA,CAAS,QAAT,EAAmBi5B,QAAQ,CAACh2B,EAA5B,EAAgCg2B,QAAQ,CAAC1pB,KAAzC,EAAgD0pB,QAAQ,CAAC5pB,GAAzD;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;;AACA4pB,EAAAA,QAAQ,CAAC1pB,KAAT,GAAiB2pB,QAAQ,CAACD,QAAD,EAAW3C,SAAX,CAAR,CAA8B/mB,KAA/C;AACA+mB,EAAAA,SAAS,CAAC/zB,IAAV,CAAe02B,QAAf;AACA1C,EAAAA,cAAc,CAACtzB,EAAD,CAAd,GAAqBg2B,QAArB;AACA,SAAOh2B,EAAP;AACD,CArEM;;AAuEP,IAAMk2B,WAAW,GAAG,SAAdA,WAAc,CAAUl2B,EAAV,EAAc;AAChC,OAAK,IAAIlC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGu1B,SAAS,CAACt1B,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;AACzC,QAAIu1B,SAAS,CAACv1B,CAAD,CAAT,CAAakC,EAAb,KAAoBA,EAAxB,EAA4B;AAC1B,aAAOlC,CAAP;AACD;AACF;;AACD,SAAO,CAAC,CAAR;AACD,CAPD;;AAQA,IAAIq4B,QAAQ,GAAG,CAAC,CAAhB;AACA,IAAMC,WAAW,GAAG,EAApB;;AACA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAAUr2B,EAAV,EAAc8G,GAAd,EAAmB;AACrC,MAAMwF,KAAK,GAAG+mB,SAAS,CAACvsB,GAAD,CAAT,CAAewF,KAA7B;AACA6pB,EAAAA,QAAQ,GAAGA,QAAQ,GAAG,CAAtB;;AACA,MAAIA,QAAQ,GAAG,IAAf,EAAqB;AACnB;AACD;;AACDC,EAAAA,WAAW,CAACD,QAAD,CAAX,GAAwBrvB,GAAxB,CANqC,CAOrC;;AACA,MAAIusB,SAAS,CAACvsB,GAAD,CAAT,CAAe9G,EAAf,KAAsBA,EAA1B,EAA8B;AAC5B,WAAO;AACL0T,MAAAA,MAAM,EAAE,IADH;AAEL4iB,MAAAA,KAAK,EAAE;AAFF,KAAP;AAID;;AAED,MAAIA,KAAK,GAAG,CAAZ;AACA,MAAIC,QAAQ,GAAG,CAAf;;AACA,SAAOD,KAAK,GAAGhqB,KAAK,CAACvO,MAArB,EAA6B;AAC3B,QAAMy4B,QAAQ,GAAGN,WAAW,CAAC5pB,KAAK,CAACgqB,KAAD,CAAN,CAA5B,CAD2B,CAE3B;;AACA,QAAIE,QAAQ,IAAI,CAAhB,EAAmB;AACjB,UAAMtuB,GAAG,GAAGmuB,WAAW,CAACr2B,EAAD,EAAKw2B,QAAL,CAAvB;;AACA,UAAItuB,GAAG,CAACwL,MAAR,EAAgB;AACd,eAAO;AACLA,UAAAA,MAAM,EAAE,IADH;AAEL4iB,UAAAA,KAAK,EAAEC,QAAQ,GAAGruB,GAAG,CAACouB;AAFjB,SAAP;AAID,OALD,MAKO;AACLC,QAAAA,QAAQ,GAAGA,QAAQ,GAAGruB,GAAG,CAACouB,KAA1B;AACD;AACF;;AACDA,IAAAA,KAAK,GAAGA,KAAK,GAAG,CAAhB;AACD;;AAED,SAAO;AACL5iB,IAAAA,MAAM,EAAE,KADH;AAEL4iB,IAAAA,KAAK,EAAEC;AAFF,GAAP;AAID,CAtCD;;AAwCO,IAAME,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAU3vB,GAAV,EAAe;AAC7C,SAAOsvB,WAAW,CAACtvB,GAAD,CAAlB;AACD,CAFM;AAGA,IAAM4vB,UAAU,GAAG,SAAbA,UAAa,GAAY;AACpCP,EAAAA,QAAQ,GAAG,CAAC,CAAZ;;AACA,MAAI9C,SAAS,CAACt1B,MAAV,GAAmB,CAAvB,EAA0B;AACxBs4B,IAAAA,WAAW,CAAC,MAAD,EAAShD,SAAS,CAACt1B,MAAV,GAAmB,CAA5B,EAA+B,CAA/B,CAAX;AACD;AACF,CALM;AAOA,IAAM44B,YAAY,GAAG,SAAfA,YAAe,GAAY;AACtC,SAAOtD,SAAP;AACD,CAFM;AAIA,IAAMuD,UAAU,GAAG,SAAbA,UAAa,GAAM;AAC9B,MAAInD,cAAJ,EAAoB;AAClBA,IAAAA,cAAc,GAAG,KAAjB;AACA,WAAO,IAAP;AACD;;AACD,SAAO,KAAP;AACD,CANM;;AAQP,IAAMoD,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,IAAD,EAAU;AAClC,MAAI1f,GAAG,GAAG0f,IAAI,CAACjyB,IAAL,EAAV;;AACA,MAAIwI,IAAI,GAAG,YAAX;;AAEA,UAAQ+J,GAAG,CAAC,CAAD,CAAX;AACE,SAAK,GAAL;AACE/J,MAAAA,IAAI,GAAG,aAAP;AACA+J,MAAAA,GAAG,GAAGA,GAAG,CAAC5N,KAAJ,CAAU,CAAV,CAAN;AACA;;AACF,SAAK,GAAL;AACE6D,MAAAA,IAAI,GAAG,aAAP;AACA+J,MAAAA,GAAG,GAAGA,GAAG,CAAC5N,KAAJ,CAAU,CAAV,CAAN;AACA;;AACF,SAAK,GAAL;AACE6D,MAAAA,IAAI,GAAG,cAAP;AACA+J,MAAAA,GAAG,GAAGA,GAAG,CAAC5N,KAAJ,CAAU,CAAV,CAAN;AACA;AAZJ;;AAeA,MAAIqU,MAAM,GAAG,QAAb;;AAEA,MAAIzG,GAAG,CAAClY,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAA1B,EAA6B;AAC3B2e,IAAAA,MAAM,GAAG,OAAT;AACD;;AAED,MAAIzG,GAAG,CAAClY,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAA1B,EAA6B;AAC3B2e,IAAAA,MAAM,GAAG,QAAT;AACD;;AAED,SAAO;AAAExQ,IAAAA,IAAI,EAAJA,IAAF;AAAQwQ,IAAAA,MAAM,EAANA;AAAR,GAAP;AACD,CA9BD;;AAgCA,IAAMkZ,SAAS,GAAG,SAAZA,SAAY,CAACC,IAAD,EAAO5f,GAAP,EAAe;AAC/B,MAAMrZ,MAAM,GAAGqZ,GAAG,CAACrZ,MAAnB;AACA,MAAIu4B,KAAK,GAAG,CAAZ;;AACA,OAAK,IAAIx4B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGC,MAApB,EAA4B,EAAED,CAA9B,EAAiC;AAC/B,QAAIsZ,GAAG,CAACtZ,CAAD,CAAH,KAAWk5B,IAAf,EAAqB;AACnB,QAAEV,KAAF;AACD;AACF;;AACD,SAAOA,KAAP;AACD,CATD;;AAWA,IAAMW,eAAe,GAAG,SAAlBA,eAAkB,CAACH,IAAD,EAAU;AAChC,MAAM1f,GAAG,GAAG0f,IAAI,CAACjyB,IAAL,EAAZ;;AACA,MAAIC,IAAI,GAAGsS,GAAG,CAAC5N,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd,CAAX;AACA,MAAI6D,IAAI,GAAG,YAAX;;AAEA,UAAQ+J,GAAG,CAAC5N,KAAJ,CAAU,CAAC,CAAX,CAAR;AACE,SAAK,GAAL;AACE6D,MAAAA,IAAI,GAAG,aAAP;;AACA,UAAI+J,GAAG,CAAC,CAAD,CAAH,KAAW,GAAf,EAAoB;AAClB/J,QAAAA,IAAI,GAAG,YAAYA,IAAnB;AACAvI,QAAAA,IAAI,GAAGA,IAAI,CAAC0E,KAAL,CAAW,CAAX,CAAP;AACD;;AACD;;AACF,SAAK,GAAL;AACE6D,MAAAA,IAAI,GAAG,aAAP;;AACA,UAAI+J,GAAG,CAAC,CAAD,CAAH,KAAW,GAAf,EAAoB;AAClB/J,QAAAA,IAAI,GAAG,YAAYA,IAAnB;AACAvI,QAAAA,IAAI,GAAGA,IAAI,CAAC0E,KAAL,CAAW,CAAX,CAAP;AACD;;AACD;;AACF,SAAK,GAAL;AACE6D,MAAAA,IAAI,GAAG,cAAP;;AACA,UAAI+J,GAAG,CAAC,CAAD,CAAH,KAAW,GAAf,EAAoB;AAClB/J,QAAAA,IAAI,GAAG,YAAYA,IAAnB;AACAvI,QAAAA,IAAI,GAAGA,IAAI,CAAC0E,KAAL,CAAW,CAAX,CAAP;AACD;;AACD;AArBJ;;AAwBA,MAAIqU,MAAM,GAAG,QAAb;AACA,MAAI9f,MAAM,GAAG+G,IAAI,CAAC/G,MAAL,GAAc,CAA3B;;AAEA,MAAI+G,IAAI,CAAC,CAAD,CAAJ,KAAY,GAAhB,EAAqB;AACnB+Y,IAAAA,MAAM,GAAG,OAAT;AACD;;AAED,MAAIqZ,IAAI,GAAGH,SAAS,CAAC,GAAD,EAAMjyB,IAAN,CAApB;;AAEA,MAAIoyB,IAAJ,EAAU;AACRrZ,IAAAA,MAAM,GAAG,QAAT;AACA9f,IAAAA,MAAM,GAAGm5B,IAAT;AACD;;AAED,SAAO;AAAE7pB,IAAAA,IAAI,EAAJA,IAAF;AAAQwQ,IAAAA,MAAM,EAANA,MAAR;AAAgB9f,IAAAA,MAAM,EAANA;AAAhB,GAAP;AACD,CA5CD;;AA8CA,IAAMo5B,YAAY,GAAG,SAAfA,YAAe,CAACL,IAAD,EAAOM,SAAP,EAAqB;AACxC,MAAMn0B,IAAI,GAAGg0B,eAAe,CAACH,IAAD,CAA5B;AACA,MAAIO,SAAJ;;AACA,MAAID,SAAJ,EAAe;AACbC,IAAAA,SAAS,GAAGR,iBAAiB,CAACO,SAAD,CAA7B;;AAEA,QAAIC,SAAS,CAACxZ,MAAV,KAAqB5a,IAAI,CAAC4a,MAA9B,EAAsC;AACpC,aAAO;AAAExQ,QAAAA,IAAI,EAAE,SAAR;AAAmBwQ,QAAAA,MAAM,EAAE;AAA3B,OAAP;AACD;;AAED,QAAIwZ,SAAS,CAAChqB,IAAV,KAAmB,YAAvB,EAAqC;AACnC;AACAgqB,MAAAA,SAAS,CAAChqB,IAAV,GAAiBpK,IAAI,CAACoK,IAAtB;AACD,KAHD,MAGO;AACL;AACA,UAAIgqB,SAAS,CAAChqB,IAAV,KAAmBpK,IAAI,CAACoK,IAA5B,EAAkC,OAAO;AAAEA,QAAAA,IAAI,EAAE,SAAR;AAAmBwQ,QAAAA,MAAM,EAAE;AAA3B,OAAP;AAElCwZ,MAAAA,SAAS,CAAChqB,IAAV,GAAiB,YAAYgqB,SAAS,CAAChqB,IAAvC;AACD;;AAED,QAAIgqB,SAAS,CAAChqB,IAAV,KAAmB,cAAvB,EAAuC;AACrCgqB,MAAAA,SAAS,CAAChqB,IAAV,GAAiB,oBAAjB;AACD;;AAEDgqB,IAAAA,SAAS,CAACt5B,MAAV,GAAmBkF,IAAI,CAAClF,MAAxB;AACA,WAAOs5B,SAAP;AACD;;AAED,SAAOp0B,IAAP;AACD,CA7BD,EA+BA;;;AACA,IAAMq0B,MAAM,GAAG,SAATA,MAAS,CAACC,MAAD,EAASllB,GAAT,EAAiB;AAC9B,MAAInK,GAAG,GAAG,KAAV;AACAqvB,EAAAA,MAAM,CAACx4B,OAAP,CAAe,UAACy4B,EAAD,EAAQ;AACrB,QAAM1wB,GAAG,GAAG0wB,EAAE,CAAClrB,KAAH,CAASpN,OAAT,CAAiBmT,GAAjB,CAAZ;;AACA,QAAIvL,GAAG,IAAI,CAAX,EAAc;AACZoB,MAAAA,GAAG,GAAG,IAAN;AACD;AACF,GALD;AAMA,SAAOA,GAAP;AACD,CATD;AAUA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAM+tB,QAAQ,GAAG,SAAXA,QAAW,CAACuB,EAAD,EAAKC,YAAL,EAAsB;AACrC,MAAMvvB,GAAG,GAAG,EAAZ;AACAsvB,EAAAA,EAAE,CAAClrB,KAAH,CAASvN,OAAT,CAAiB,UAACsT,GAAD,EAAMvL,GAAN,EAAc;AAC7B,QAAI,CAACwwB,MAAM,CAACG,YAAD,EAAeplB,GAAf,CAAX,EAAgC;AAC9BnK,MAAAA,GAAG,CAAC5I,IAAJ,CAASk4B,EAAE,CAAClrB,KAAH,CAASxF,GAAT,CAAT;AACD;AACF,GAJD;AAKA,SAAO;AAAEwF,IAAAA,KAAK,EAAEpE;AAAT,GAAP;AACD,CARD;;AAUA,iEAAe;AACbmX,EAAAA,cAAc,EAAdA,cADa;AAEbniB,EAAAA,aAAa,EAAE;AAAA,WAAM4hB,4DAAN;AAAA,GAFF;AAGb8U,EAAAA,SAAS,EAATA,SAHa;AAIb9T,EAAAA,WAAW,EAAXA,WAJa;AAKbmU,EAAAA,OAAO,EAAPA,OALa;AAMbC,EAAAA,qBAAqB,EAArBA,qBANa;AAObG,EAAAA,UAAU,EAAVA,UAPa;AAQb1U,EAAAA,QAAQ,EAARA,QARa;AASbsE,EAAAA,YAAY,EAAZA,YATa;AAUbyQ,EAAAA,QAAQ,EAARA,QAVa;AAWblT,EAAAA,UAAU,EAAVA,UAXa;AAYboT,EAAAA,UAAU,EAAVA,UAZa;AAab/S,EAAAA,aAAa,EAAbA,aAba;AAcbJ,EAAAA,OAAO,EAAPA,OAda;AAebe,EAAAA,aAAa,EAAbA,aAfa;AAgBbwB,EAAAA,YAAY,EAAZA,YAhBa;AAiBb6Q,EAAAA,WAAW,EAAXA,WAjBa;AAkBbC,EAAAA,QAAQ,EAARA,QAlBa;AAmBb5U,EAAAA,UAAU,EAAVA,UAnBa;AAoBbnd,EAAAA,KAAK,EAALA,KApBa;AAqBbiyB,EAAAA,MAAM,EAANA,MArBa;AAsBb5P,EAAAA,YAAY,EAAZA,YAtBa;AAuBb6P,EAAAA,WAAW,EAAXA,WAvBa;AAwBbwB,EAAAA,gBAAgB,EAAhBA,gBAxBa;AAyBbC,EAAAA,UAAU,EAAVA,UAzBa;AA0BbC,EAAAA,YAAY,EAAZA,YA1Ba;AA2BbQ,EAAAA,YAAY,EAAZA,YA3Ba;AA4BbO,EAAAA,GAAG,EAAE;AACHd,IAAAA,UAAU,EAAVA;AADG,GA5BQ;AA+BbU,EAAAA,MAAM,EAANA,MA/Ba;AAgCbrB,EAAAA,QAAQ,EAARA;AAhCa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7tBA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA,IAAM33B,IAAI,GAAG,EAAb;AACO,IAAM8nB,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMxnB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYwnB,GAAZ,CAAb;;AACA,OAAK,IAAIvoB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,IAAI,CAACd,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpCQ,IAAAA,IAAI,CAACO,IAAI,CAACf,CAAD,CAAL,CAAJ,GAAgBuoB,GAAG,CAACxnB,IAAI,CAACf,CAAD,CAAL,CAAnB;AACD;AACF,CALM;AAOP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM+5B,WAAW,GAAG,SAAdA,WAAc,CAAUC,IAAV,EAAgBlT,CAAhB,EAAmBmT,KAAnB,EAA0B;AACnD,MAAM3U,GAAG,GAAG1jB,0CAAM,iBAASq4B,KAAT,SAAlB;AACA,MAAMl5B,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYi5B,IAAZ,CAAb,CAFmD,CAInD;;AACAj5B,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUiB,EAAV,EAAc;AACzB,QAAM6kB,MAAM,GAAGiT,IAAI,CAAC93B,EAAD,CAAnB;AAEA;AACJ;AACA;AACA;AACA;;AACI,QAAIg4B,QAAQ,GAAG,SAAf;;AACA,QAAInT,MAAM,CAACziB,OAAP,CAAerE,MAAf,GAAwB,CAA5B,EAA+B;AAC7Bi6B,MAAAA,QAAQ,GAAGnT,MAAM,CAACziB,OAAP,CAAekS,IAAf,CAAoB,GAApB,CAAX;AACD;;AAED,QAAMyQ,MAAM,GAAGR,0DAAkB,CAACM,MAAM,CAACE,MAAR,CAAjC,CAbyB,CAezB;;AACA,QAAIhhB,UAAU,GAAG8gB,MAAM,CAACvkB,IAAP,KAAgBI,SAAhB,GAA4BmkB,MAAM,CAACvkB,IAAnC,GAA0CukB,MAAM,CAAC7kB,EAAlE,CAhByB,CAkBzB;;AACA,QAAIkE,UAAJ;;AACA,QAAIvE,wDAAQ,CAAChB,kDAAS,GAAGkC,SAAZ,CAAsBC,UAAvB,CAAZ,EAAgD;AAC9C;AACA,UAAMhB,IAAI,GAAG;AACXO,QAAAA,KAAK,EAAE0D,UAAU,CAACC,OAAX,CACL,sBADK,EAEL,UAACC,CAAD;AAAA,qCAAoBA,CAAC,CAACD,OAAF,CAAU,GAAV,EAAe,GAAf,CAApB;AAAA,SAFK;AADI,OAAb;AAMAE,MAAAA,UAAU,GAAGZ,2EAAY,CAAC8f,GAAD,EAAMtjB,IAAN,CAAZ,CAAwBA,IAAxB,EAAb;AACAoE,MAAAA,UAAU,CAAC+zB,UAAX,CAAsBn1B,WAAtB,CAAkCoB,UAAlC;AACD,KAVD,MAUO;AACL,UAAMC,QAAQ,GAAGX,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,MAAvD,CAAjB;AACAU,MAAAA,QAAQ,CAACC,YAAT,CAAsB,OAAtB,EAA+B2gB,MAAM,CAACtkB,UAAP,CAAkBuD,OAAlB,CAA0B,QAA1B,EAAoC,OAApC,CAA/B;AAEA,UAAMK,IAAI,GAAGN,UAAU,CAACO,KAAX,CAAiBya,qEAAjB,CAAb;;AAEA,WAAK,IAAIta,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,IAAI,CAACtG,MAAzB,EAAiC0G,CAAC,EAAlC,EAAsC;AACpC,YAAMC,KAAK,GAAGlB,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,OAAvD,CAAd;AACAiB,QAAAA,KAAK,CAACC,cAAN,CAAqB,sCAArB,EAA6D,WAA7D,EAA0E,UAA1E;AACAD,QAAAA,KAAK,CAACN,YAAN,CAAmB,IAAnB,EAAyB,KAAzB;AACAM,QAAAA,KAAK,CAACN,YAAN,CAAmB,GAAnB,EAAwB,GAAxB;AACAM,QAAAA,KAAK,CAACE,WAAN,GAAoBP,IAAI,CAACI,CAAD,CAAxB;AACAN,QAAAA,QAAQ,CAAC5D,WAAT,CAAqBmE,KAArB;AACD;;AACDR,MAAAA,UAAU,GAAGC,QAAb;AACD;;AAED,QAAI6gB,OAAO,GAAG,CAAd;AACA,QAAIC,MAAM,GAAG,EAAb,CAhDyB,CAiDzB;;AACA,YAAQJ,MAAM,CAACxX,IAAf;AACE,WAAK,OAAL;AACE2X,QAAAA,OAAO,GAAG,CAAV;AACAC,QAAAA,MAAM,GAAG,MAAT;AACA;;AACF,WAAK,QAAL;AACEA,QAAAA,MAAM,GAAG,MAAT;AACA;;AACF,WAAK,SAAL;AACEA,QAAAA,MAAM,GAAG,UAAT;AACA;;AACF,WAAK,SAAL;AACEA,QAAAA,MAAM,GAAG,SAAT;AACA;;AACF,WAAK,KAAL;AACEA,QAAAA,MAAM,GAAG,qBAAT;AACA;;AACF,WAAK,YAAL;AACEA,QAAAA,MAAM,GAAG,YAAT;AACA;;AACF,WAAK,WAAL;AACEA,QAAAA,MAAM,GAAG,WAAT;AACA;;AACF,WAAK,WAAL;AACEA,QAAAA,MAAM,GAAG,WAAT;AACA;;AACF,WAAK,eAAL;AACEA,QAAAA,MAAM,GAAG,eAAT;AACA;;AACF,WAAK,WAAL;AACEA,QAAAA,MAAM,GAAG,qBAAT;AACA;;AACF,WAAK,QAAL;AACEA,QAAAA,MAAM,GAAG,QAAT;AACA;;AACF,WAAK,SAAL;AACEA,QAAAA,MAAM,GAAG,SAAT;AACA;;AACF,WAAK,SAAL;AACEA,QAAAA,MAAM,GAAG,SAAT;AACA;;AACF,WAAK,YAAL;AACEA,QAAAA,MAAM,GAAG,YAAT;AACA;;AACF,WAAK,UAAL;AACEA,QAAAA,MAAM,GAAG,UAAT;AACA;;AACF,WAAK,OAAL;AACEA,QAAAA,MAAM,GAAG,MAAT;AACA;;AACF;AACEA,QAAAA,MAAM,GAAG,MAAT;AAnDJ,KAlDyB,CAuGzB;;;AACAL,IAAAA,CAAC,CAAC/X,OAAF,CAAUgY,MAAM,CAAC7kB,EAAjB,EAAqB;AACnBS,MAAAA,UAAU,EAAEskB,MAAM,CAACtkB,UADA;AAEnBmC,MAAAA,KAAK,EAAEqiB,MAFY;AAGnBzkB,MAAAA,SAAS,EAAEuD,UAHQ;AAInBpC,MAAAA,EAAE,EAAEqjB,OAJe;AAKnBpjB,MAAAA,EAAE,EAAEojB,OALe;AAMnB5kB,MAAAA,KAAK,EAAE43B,QANY;AAOnBt2B,MAAAA,KAAK,EAAEqjB,MAAM,CAACrjB,KAPK;AAQnB1B,MAAAA,EAAE,EAAE6kB,MAAM,CAAC7kB,EARQ;AASnB+X,MAAAA,IAAI,EAAE8M,MAAM,CAAC9M,IATM;AAUnBC,MAAAA,UAAU,EAAE6M,MAAM,CAAC7M,UAVA;AAWnBC,MAAAA,OAAO,EAAE0f,0DAAA,CAAkB9S,MAAM,CAAC7kB,EAAzB,KAAgC,EAXtB;AAYnBoU,MAAAA,KAAK,EAAEujB,2DAAA,CAAmB9S,MAAM,CAAC7kB,EAA1B,CAZY;AAanBkY,MAAAA,YAAY,EAAE2M,MAAM,CAAC3M,YAbF;AAcnB/W,MAAAA,KAAK,EAAE0jB,MAAM,CAACxX,IAAP,KAAgB,OAAhB,GAA0B,GAA1B,GAAgC3M,SAdpB;AAenB0L,MAAAA,GAAG,EAAEyY,MAAM,CAACzY,GAfO;AAgBnBiB,MAAAA,IAAI,EAAEwX,MAAM,CAACxX,IAhBM;AAiBnBhM,MAAAA,OAAO,EAAE1C,kDAAS,GAAGkC,SAAZ,CAAsBQ;AAjBZ,KAArB;AAoBAtE,IAAAA,6CAAA,CAAS,SAAT,EAAoB;AAClB0D,MAAAA,UAAU,EAAEskB,MAAM,CAACtkB,UADD;AAElBmC,MAAAA,KAAK,EAAEqiB,MAFW;AAGlBzkB,MAAAA,SAAS,EAAEuD,UAHO;AAIlBpC,MAAAA,EAAE,EAAEqjB,OAJc;AAKlBpjB,MAAAA,EAAE,EAAEojB,OALc;AAMlB5kB,MAAAA,KAAK,EAAE43B,QANW;AAOlBt2B,MAAAA,KAAK,EAAEqjB,MAAM,CAACrjB,KAPI;AAQlB1B,MAAAA,EAAE,EAAE6kB,MAAM,CAAC7kB,EARO;AASlBoU,MAAAA,KAAK,EAAEujB,2DAAA,CAAmB9S,MAAM,CAAC7kB,EAA1B,CATW;AAUlBmB,MAAAA,KAAK,EAAE0jB,MAAM,CAACxX,IAAP,KAAgB,OAAhB,GAA0B,GAA1B,GAAgC3M,SAVrB;AAWlB2M,MAAAA,IAAI,EAAEwX,MAAM,CAACxX,IAXK;AAYlBjB,MAAAA,GAAG,EAAEyY,MAAM,CAACzY,GAZM;AAalB/K,MAAAA,OAAO,EAAE1C,kDAAS,GAAGkC,SAAZ,CAAsBQ;AAbb,KAApB;AAeD,GA3ID;AA4ID,CAjJM;AAmJP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM62B,QAAQ,GAAG,SAAXA,QAAW,CAAU3rB,KAAV,EAAiBqY,CAAjB,EAAoB;AAC1C7nB,EAAAA,6CAAA,CAAS,gBAAT,EAA2BwP,KAA3B;AACA,MAAI4Y,GAAG,GAAG,CAAV;AACA,MAAIgT,SAAS,GAAG,EAAhB;AAEA,MAAI/S,YAAJ;AACA,MAAIC,iBAAJ;;AAEA,MAAI,OAAO9Y,KAAK,CAAC6Y,YAAb,KAA8B,WAAlC,EAA+C;AAC7C,QAAMgT,aAAa,GAAG7T,0DAAkB,CAAChY,KAAK,CAAC6Y,YAAP,CAAxC;AACAA,IAAAA,YAAY,GAAGgT,aAAa,CAAC12B,KAA7B;AACA2jB,IAAAA,iBAAiB,GAAG+S,aAAa,CAAC33B,UAAlC;AACD;;AAED8L,EAAAA,KAAK,CAACxN,OAAN,CAAc,UAAUqG,IAAV,EAAgB;AAC5B+f,IAAAA,GAAG,GADyB,CAG5B;;AACA,QAAIkT,UAAU,GAAG,OAAOjzB,IAAI,CAACwQ,KAAZ,GAAoB,GAApB,GAA0BxQ,IAAI,CAAC0Q,GAAhD,CAJ4B,CAK5B;;AACA,QAAI,OAAOqiB,SAAS,CAACE,UAAD,CAAhB,KAAiC,WAArC,EAAkD;AAChDF,MAAAA,SAAS,CAACE,UAAD,CAAT,GAAwB,CAAxB;AACAt7B,MAAAA,6CAAA,CAAS,iBAAT,EAA4Bs7B,UAA5B,EAAwCF,SAAS,CAACE,UAAD,CAAjD;AACD,KAHD,MAGO;AACLF,MAAAA,SAAS,CAACE,UAAD,CAAT;AACAt7B,MAAAA,6CAAA,CAAS,iBAAT,EAA4Bs7B,UAA5B,EAAwCF,SAAS,CAACE,UAAD,CAAjD;AACD;;AACD,QAAIC,MAAM,GAAGD,UAAU,GAAG,GAAb,GAAmBF,SAAS,CAACE,UAAD,CAAzC;AACAt7B,IAAAA,6CAAA,CAAS,iCAAT,EAA4Cs7B,UAA5C,EAAwDC,MAAxD,EAAgEH,SAAS,CAACE,UAAD,CAAzE;AACA,QAAIE,aAAa,GAAG,QAAQnzB,IAAI,CAACwQ,KAAjC;AACA,QAAI4iB,WAAW,GAAG,QAAQpzB,IAAI,CAAC0Q,GAA/B;AAEA,QAAMwP,QAAQ,GAAG;AAAE5jB,MAAAA,KAAK,EAAE,EAAT;AAAajB,MAAAA,UAAU,EAAE;AAAzB,KAAjB;AACA6kB,IAAAA,QAAQ,CAACmT,MAAT,GAAkBrzB,IAAI,CAACrH,MAAL,IAAe,CAAjC,CAnB4B,CAoB5B;AAEA;;AACA,QAAIqH,IAAI,CAACiI,IAAL,KAAc,YAAlB,EAAgC;AAC9BiY,MAAAA,QAAQ,CAACC,SAAT,GAAqB,MAArB;AACD,KAFD,MAEO;AACLD,MAAAA,QAAQ,CAACC,SAAT,GAAqB,QAArB;AACD,KA3B2B,CA6B5B;;;AACAD,IAAAA,QAAQ,CAACre,cAAT,GAA0B,YAA1B;AACAqe,IAAAA,QAAQ,CAACpe,YAAT,GAAwB,YAAxB;AAEA;;AACA,YAAQ9B,IAAI,CAACiI,IAAb;AACE,WAAK,oBAAL;AACEiY,QAAAA,QAAQ,CAACre,cAAT,GAA0B,aAA1B;;AACF,WAAK,aAAL;AACEqe,QAAAA,QAAQ,CAACpe,YAAT,GAAwB,aAAxB;AACA;;AACF,WAAK,oBAAL;AACEoe,QAAAA,QAAQ,CAACre,cAAT,GAA0B,aAA1B;;AACF,WAAK,aAAL;AACEqe,QAAAA,QAAQ,CAACpe,YAAT,GAAwB,aAAxB;AACA;;AACF,WAAK,qBAAL;AACEoe,QAAAA,QAAQ,CAACre,cAAT,GAA0B,cAA1B;;AACF,WAAK,cAAL;AACEqe,QAAAA,QAAQ,CAACpe,YAAT,GAAwB,cAAxB;AACA;AAfJ;;AAkBA,QAAIxF,KAAK,GAAG,EAAZ;AACA,QAAIjB,UAAU,GAAG,EAAjB;;AAEA,YAAQ2E,IAAI,CAACyY,MAAb;AACE,WAAK,QAAL;AACEnc,QAAAA,KAAK,GAAG,YAAR;;AACA,YAAI,OAAO0jB,YAAP,KAAwB,WAA5B,EAAyC;AACvC1jB,UAAAA,KAAK,GAAG0jB,YAAR;AACD;;AACD,YAAI,OAAOC,iBAAP,KAA6B,WAAjC,EAA8C;AAC5C5kB,UAAAA,UAAU,GAAG4kB,iBAAb;AACD;;AACDC,QAAAA,QAAQ,CAAClb,SAAT,GAAqB,QAArB;AACAkb,QAAAA,QAAQ,CAACjb,OAAT,GAAmB,OAAnB;AACA;;AACF,WAAK,QAAL;AACEib,QAAAA,QAAQ,CAAClb,SAAT,GAAqB,QAArB;AACAkb,QAAAA,QAAQ,CAACjb,OAAT,GAAmB,QAAnB;AACAib,QAAAA,QAAQ,CAAC5jB,KAAT,GAAiB,gDAAjB;AACA;;AACF,WAAK,OAAL;AACE4jB,QAAAA,QAAQ,CAAClb,SAAT,GAAqB,OAArB;AACAkb,QAAAA,QAAQ,CAACjb,OAAT,GAAmB,OAAnB;AACAib,QAAAA,QAAQ,CAAC5jB,KAAT,GAAiB,gCAAjB;AACA;AArBJ;;AAuBA,QAAI,OAAO0D,IAAI,CAAC1D,KAAZ,KAAsB,WAA1B,EAAuC;AACrC,UAAMqjB,MAAM,GAAGR,0DAAkB,CAACnf,IAAI,CAAC1D,KAAN,CAAjC;AACAA,MAAAA,KAAK,GAAGqjB,MAAM,CAACrjB,KAAf;AACAjB,MAAAA,UAAU,GAAGskB,MAAM,CAACtkB,UAApB;AACD;;AAED6kB,IAAAA,QAAQ,CAAC5jB,KAAT,GAAiB4jB,QAAQ,CAAC5jB,KAAT,IAAkBA,KAAnC;AACA4jB,IAAAA,QAAQ,CAAC7kB,UAAT,GAAsB6kB,QAAQ,CAAC7kB,UAAT,IAAuBA,UAA7C;;AAEA,QAAI,OAAO2E,IAAI,CAACygB,WAAZ,KAA4B,WAAhC,EAA6C;AAC3CP,MAAAA,QAAQ,CAACrb,KAAT,GAAiBqa,0DAAkB,CAAClf,IAAI,CAACygB,WAAN,EAAmBxB,2CAAnB,CAAnC;AACD,KAFD,MAEO,IAAI,OAAO9X,KAAK,CAACuZ,kBAAb,KAAoC,WAAxC,EAAqD;AAC1DR,MAAAA,QAAQ,CAACrb,KAAT,GAAiBqa,0DAAkB,CAAC/X,KAAK,CAACuZ,kBAAP,EAA2BzB,2CAA3B,CAAnC;AACD,KAFM,MAEA;AACLiB,MAAAA,QAAQ,CAACrb,KAAT,GAAiBqa,0DAAkB,CAAChmB,IAAI,CAAC2L,KAAN,EAAaoa,2CAAb,CAAnC;AACD;;AAED,QAAI,OAAOjf,IAAI,CAAC9E,IAAZ,KAAqB,WAAzB,EAAsC;AACpC,UAAI,OAAO8E,IAAI,CAAC1D,KAAZ,KAAsB,WAA1B,EAAuC;AACrC4jB,QAAAA,QAAQ,CAACS,cAAT,GAA0B,YAA1B;AACD;AACF,KAJD,MAIO;AACLT,MAAAA,QAAQ,CAACS,cAAT,GAA0B,YAA1B;AACAT,MAAAA,QAAQ,CAACU,QAAT,GAAoB,GAApB;AACD,KAtG2B,CAuG5B;AACA;AACA;AACA;AACA;;;AACAV,IAAAA,QAAQ,CAACW,SAAT,GAAqB,MAArB;AACAX,IAAAA,QAAQ,CAACjlB,KAAT,GAAiB+E,IAAI,CAAC9E,IAAL,CAAU0D,OAAV,CAAkB+a,qEAAlB,EAAyC,IAAzC,CAAjB;;AAEA,QAAI,OAAO3Z,IAAI,CAAC1D,KAAZ,KAAsB,WAA1B,EAAuC;AACrC4jB,MAAAA,QAAQ,CAAC5jB,KAAT,GAAiB4jB,QAAQ,CAAC5jB,KAAT,IAAkB,8CAAnC;AACD;;AAED4jB,IAAAA,QAAQ,CAAC7kB,UAAT,GAAsB6kB,QAAQ,CAAC7kB,UAAT,CAAoBuD,OAApB,CAA4B,QAA5B,EAAsC,OAAtC,CAAtB,CAnH4B,CAoH5B;;AAEAshB,IAAAA,QAAQ,CAACtlB,EAAT,GAAcs4B,MAAd;AACAhT,IAAAA,QAAQ,CAACljB,OAAT,GAAmB,oBAAoBm2B,aAApB,GAAoC,GAApC,GAA0CC,WAA7D,CAvH4B,CAyH5B;;AACA5T,IAAAA,CAAC,CAAC7S,OAAF,CAAU3M,IAAI,CAACwQ,KAAf,EAAsBxQ,IAAI,CAAC0Q,GAA3B,EAAgCwP,QAAhC,EAA0CH,GAA1C;AACD,GA3HD;AA4HD,CA1IM;AA4IP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMjF,UAAU,GAAG,SAAbA,UAAa,CAAU5f,IAAV,EAAgB;AACxCvD,EAAAA,6CAAA,CAAS,oBAAT;AACA46B,EAAAA,qDAAA;AACA,MAAMxT,MAAM,GAAGyT,4DAAf;AACAzT,EAAAA,MAAM,CAACM,EAAP,GAAYkT,+CAAZ;;AAEA,MAAI;AACF;AACAxT,IAAAA,MAAM,CAACxX,KAAP,CAAarM,IAAb;AACD,GAHD,CAGE,OAAOyI,CAAP,EAAU;AACV;AACD;;AAED,SAAO4uB,0DAAA,EAAP;AACD,CAdM;AAgBP;AACA;AACA;AACA;AACA;AACA;;AAEO,IAAM7Q,IAAI,GAAG,SAAPA,IAAO,CAAUxmB,IAAV,EAAgBN,EAAhB,EAAoB;AACtCjD,EAAAA,6CAAA,CAAS,mBAAT;AACA46B,EAAAA,qDAAA;AACAA,EAAAA,sDAAA,CAAc,OAAd;AACA,MAAMxT,MAAM,GAAGyT,4DAAf;AACAzT,EAAAA,MAAM,CAACM,EAAP,GAAYkT,+CAAZ,CALsC,CAOtC;AACA;;AACAxT,EAAAA,MAAM,CAACxX,KAAP,CAAarM,IAAb,EATsC,CAUtC;AACA;AACA;AAEA;;AACA,MAAI8L,GAAG,GAAGurB,4DAAA,EAAV;;AACA,MAAI,OAAOvrB,GAAP,KAAe,WAAnB,EAAgC;AAC9BA,IAAAA,GAAG,GAAG,IAAN;AACD;;AAED,MAAM9N,IAAI,GAAGK,kDAAS,GAAGkC,SAAzB;AACA,MAAMkY,WAAW,GAAGza,IAAI,CAACya,WAAL,IAAoB,EAAxC;AACA,MAAMC,WAAW,GAAG1a,IAAI,CAAC0a,WAAL,IAAoB,EAAxC,CAtBsC,CAwBtC;;AACA,MAAM4L,CAAC,GAAG,IAAI3Z,uDAAJ,CAAmB;AAC3BgI,IAAAA,UAAU,EAAE,IADe;AAE3BC,IAAAA,QAAQ,EAAE;AAFiB,GAAnB,EAIPC,QAJO,CAIE;AACR9G,IAAAA,OAAO,EAAED,GADD;AAERgH,IAAAA,OAAO,EAAE2F,WAFD;AAGR1F,IAAAA,OAAO,EAAE2F,WAHD;AAIR1F,IAAAA,OAAO,EAAE,CAJD;AAKRC,IAAAA,OAAO,EAAE;AALD,GAJF,EAWPC,mBAXO,CAWa,YAAY;AAC/B,WAAO,EAAP;AACD,GAbO,CAAV;AAeA,MAAIklB,IAAJ;AACA,MAAMrF,SAAS,GAAGsE,4DAAA,EAAlB;AACA56B,EAAAA,6CAAA,CAAS,cAAT,EAAyBs2B,SAAzB;;AACA,OAAK,IAAIv1B,EAAC,GAAGu1B,SAAS,CAACt1B,MAAV,GAAmB,CAAhC,EAAmCD,EAAC,IAAI,CAAxC,EAA2CA,EAAC,EAA5C,EAAgD;AAC9C46B,IAAAA,IAAI,GAAGrF,SAAS,CAACv1B,EAAD,CAAhB;AACAf,IAAAA,6CAAA,CAAS,aAAT,EAAwB27B,IAAxB;AACAf,IAAAA,yDAAA,CAAiBe,IAAI,CAAC14B,EAAtB,EAA0B04B,IAAI,CAACpjB,KAA/B,EAAsC,OAAtC,EAA+C5U,SAA/C,EAA0Dg4B,IAAI,CAACt2B,OAA/D,EAAwEs2B,IAAI,CAACtsB,GAA7E;AACD,GA/CqC,CAiDtC;;;AACA,MAAM0rB,IAAI,GAAGH,2DAAA,EAAb;AAEA,MAAMprB,KAAK,GAAGorB,wDAAA,EAAd;AAEA56B,EAAAA,6CAAA,CAASwP,KAAT;AACA,MAAIzO,CAAC,GAAG,CAAR;;AACA,OAAKA,CAAC,GAAGu1B,SAAS,CAACt1B,MAAV,GAAmB,CAA5B,EAA+BD,CAAC,IAAI,CAApC,EAAuCA,CAAC,EAAxC,EAA4C;AAC1C;AACA46B,IAAAA,IAAI,GAAGrF,SAAS,CAACv1B,CAAD,CAAhB;AAEAulB,IAAAA,6CAAS,CAAC,SAAD,CAAT,CAAqB/gB,MAArB,CAA4B,MAA5B;;AAEA,SAAK,IAAImC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGi0B,IAAI,CAACpsB,KAAL,CAAWvO,MAA/B,EAAuC0G,CAAC,EAAxC,EAA4C;AAC1C1H,MAAAA,6CAAA,CAAS,sBAAT,EAAiC27B,IAAI,CAACpsB,KAAL,CAAW7H,CAAX,CAAjC,EAAgDi0B,IAAI,CAAC14B,EAArD;AACA4kB,MAAAA,CAAC,CAAC9X,SAAF,CAAY4rB,IAAI,CAACpsB,KAAL,CAAW7H,CAAX,CAAZ,EAA2Bi0B,IAAI,CAAC14B,EAAhC;AACD;AACF;;AACD63B,EAAAA,WAAW,CAACC,IAAD,EAAOlT,CAAP,EAAU5kB,EAAV,CAAX;AACAk4B,EAAAA,QAAQ,CAAC3rB,KAAD,EAAQqY,CAAR,CAAR,CApEsC,CAsEtC;AACA;AAEA;;AACA,MAAMxB,GAAG,GAAG1jB,0CAAM,iBAASM,EAAT,SAAlB;AACAojB,EAAAA,GAAG,CAACjjB,IAAJ,CAAS,aAAT,EAAwB,8BAAxB,EA3EsC,CA6EtC;;AACA,MAAMmY,OAAO,GAAG5Y,0CAAM,CAAC,MAAMM,EAAN,GAAW,IAAZ,CAAtB;AACAsN,EAAAA,+DAAM,CAACgL,OAAD,EAAUsM,CAAV,EAAa,CAAC,OAAD,EAAU,QAAV,EAAoB,OAApB,CAAb,EAA2C,WAA3C,EAAwD5kB,EAAxD,CAAN;AAEA,MAAMqB,OAAO,GAAG/C,IAAI,CAACwa,cAArB;AACA,MAAM8N,SAAS,GAAGxD,GAAG,CAACtjB,IAAJ,GAAWc,OAAX,EAAlB;AACA,MAAMO,KAAK,GAAGylB,SAAS,CAACzlB,KAAV,GAAkBE,OAAO,GAAG,CAA1C;AACA,MAAMD,MAAM,GAAGwlB,SAAS,CAACxlB,MAAV,GAAmBC,OAAO,GAAG,CAA5C;AACAtE,EAAAA,8CAAA,2BACqBoE,KADrB,cAC8BC,MAD9B,uBAEeC,OAAO,GAAGujB,CAAC,CAACmC,MAAF,CAASzT,OAFlC,eAE8CjS,OAAO,GAAGujB,CAAC,CAACmC,MAAF,CAASxT,OAFjE;AAKAiR,EAAAA,wDAAgB,CAACpB,GAAD,EAAMhiB,MAAN,EAAcD,KAAd,EAAqB7C,IAAI,CAAC2a,WAA1B,CAAhB;AAEAmK,EAAAA,GAAG,CAACjjB,IAAJ,CAAS,SAAT,gBAA2BgB,KAA3B,cAAoCC,MAApC;AACAgiB,EAAAA,GAAG,CACA1jB,MADH,CACU,GADV,EAEGS,IAFH,CAEQ,WAFR,sBAEkCkB,OAAO,GAAGujB,CAAC,CAACmC,MAAF,CAASzT,OAFrD,eAEiEjS,OAAO,GAAGulB,SAAS,CAAC9kB,CAFrF,QA7FsC,CAiGtC;;AACA61B,EAAAA,0DAAA,CAAkB,aAAa75B,CAA/B,EAlGsC,CAoGtC;;AACA,MAAI,CAACQ,IAAI,CAACwC,UAAV,EAAsB;AACpB,QAAMkmB,MAAM,GAAGxjB,QAAQ,CAACyjB,gBAAT,CAA0B,UAAUjnB,EAAV,GAAe,sBAAzC,CAAf;;AACA,SAAK,IAAIknB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,MAAM,CAACjpB,MAA3B,EAAmCmpB,CAAC,EAApC,EAAwC;AACtC,UAAM7mB,KAAK,GAAG2mB,MAAM,CAACE,CAAD,CAApB,CADsC,CAGtC;;AACA,UAAMC,GAAG,GAAG9mB,KAAK,CAACO,OAAN,EAAZ;AAEA,UAAMhB,IAAI,GAAG4D,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,MAAvD,CAAb;AACA7D,MAAAA,IAAI,CAACwE,YAAL,CAAkB,IAAlB,EAAwB,CAAxB;AACAxE,MAAAA,IAAI,CAACwE,YAAL,CAAkB,IAAlB,EAAwB,CAAxB;AACAxE,MAAAA,IAAI,CAACwE,YAAL,CAAkB,OAAlB,EAA2B+iB,GAAG,CAAChmB,KAA/B;AACAvB,MAAAA,IAAI,CAACwE,YAAL,CAAkB,QAAlB,EAA4B+iB,GAAG,CAAC/lB,MAAhC,EAVsC,CAWtC;;AAEAf,MAAAA,KAAK,CAAC+mB,YAAN,CAAmBxnB,IAAnB,EAAyBS,KAAK,CAACgnB,UAA/B;AACD;AACF,GAtHqC,CAwHtC;;;AACA,MAAMxoB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYi5B,IAAZ,CAAb;AACAj5B,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUC,GAAV,EAAe;AAC1B,QAAM6lB,MAAM,GAAGiT,IAAI,CAAC94B,GAAD,CAAnB;;AAEA,QAAI6lB,MAAM,CAAC9M,IAAX,EAAiB;AACf,UAAMjY,IAAI,GAAGJ,0CAAM,CAAC,MAAMM,EAAN,GAAW,QAAX,GAAsBhB,GAAtB,GAA4B,IAA7B,CAAnB;;AACA,UAAIc,IAAJ,EAAU;AACR,YAAMiY,IAAI,GAAGvU,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,GAAvD,CAAb;AACAsU,QAAAA,IAAI,CAACpT,cAAL,CAAoB,4BAApB,EAAkD,OAAlD,EAA2DkgB,MAAM,CAACziB,OAAP,CAAekS,IAAf,CAAoB,GAApB,CAA3D;AACAyD,QAAAA,IAAI,CAACpT,cAAL,CAAoB,4BAApB,EAAkD,MAAlD,EAA0DkgB,MAAM,CAAC9M,IAAjE;AACAA,QAAAA,IAAI,CAACpT,cAAL,CAAoB,4BAApB,EAAkD,KAAlD,EAAyD,UAAzD;;AACA,YAAIkgB,MAAM,CAAC7M,UAAX,EAAuB;AACrBD,UAAAA,IAAI,CAACpT,cAAL,CAAoB,4BAApB,EAAkD,QAAlD,EAA4DkgB,MAAM,CAAC7M,UAAnE;AACD;;AAED,YAAM2gB,QAAQ,GAAG74B,IAAI,CAACI,MAAL,CAAY,YAAY;AACvC,iBAAO6X,IAAP;AACD,SAFgB,EAEd,cAFc,CAAjB;AAIA,YAAMnV,KAAK,GAAG9C,IAAI,CAACJ,MAAL,CAAY,kBAAZ,CAAd;;AACA,YAAIkD,KAAJ,EAAW;AACT+1B,UAAAA,QAAQ,CAACr2B,MAAT,CAAgB,YAAY;AAC1B,mBAAOM,KAAK,CAAC9C,IAAN,EAAP;AACD,WAFD;AAGD;;AAED,YAAMO,MAAK,GAAGP,IAAI,CAACJ,MAAL,CAAY,QAAZ,CAAd;;AACA,YAAIW,MAAJ,EAAW;AACTs4B,UAAAA,QAAQ,CAACr2B,MAAT,CAAgB,YAAY;AAC1B,mBAAOjC,MAAK,CAACP,IAAN,EAAP;AACD,WAFD;AAGD;AACF;AACF;AACF,GAjCD;AAkCD,CA5JM;AA8JP,iEAAe;AACbsmB,EAAAA,OAAO,EAAPA,OADa;AAEbyR,EAAAA,WAAW,EAAXA,WAFa;AAGbK,EAAAA,QAAQ,EAARA,QAHa;AAIbhY,EAAAA,UAAU,EAAVA,UAJa;AAKb4G,EAAAA,IAAI,EAAJA;AALa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5fA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMxoB,IAAI,GAAG,EAAb;AACO,IAAM8nB,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMxnB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYwnB,GAAZ,CAAb;;AACA,OAAK,IAAIvoB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,IAAI,CAACd,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpCQ,IAAAA,IAAI,CAACO,IAAI,CAACf,CAAD,CAAL,CAAJ,GAAgBuoB,GAAG,CAACxnB,IAAI,CAACf,CAAD,CAAL,CAAnB;AACD;AACF,CALM;AAOP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM+5B,WAAW,GAAG,SAAdA,WAAc,CAAUC,IAAV,EAAgBlT,CAAhB,EAAmBmT,KAAnB,EAA0B;AACnD,MAAM3U,GAAG,GAAG1jB,0CAAM,iBAASq4B,KAAT,SAAlB;AACA,MAAMl5B,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYi5B,IAAZ,CAAb,CAFmD,CAInD;;AACAj5B,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUiB,EAAV,EAAc;AACzB,QAAM6kB,MAAM,GAAGiT,IAAI,CAAC93B,EAAD,CAAnB;AAEA;AACJ;AACA;AACA;AACA;;AACI,QAAIg4B,QAAQ,GAAG,SAAf;;AACA,QAAInT,MAAM,CAACziB,OAAP,CAAerE,MAAf,GAAwB,CAA5B,EAA+B;AAC7Bi6B,MAAAA,QAAQ,GAAGnT,MAAM,CAACziB,OAAP,CAAekS,IAAf,CAAoB,GAApB,CAAX;AACD;;AAED,QAAMyQ,MAAM,GAAGR,0DAAkB,CAACM,MAAM,CAACE,MAAR,CAAjC,CAbyB,CAezB;;AACA,QAAIhhB,UAAU,GAAG8gB,MAAM,CAACvkB,IAAP,KAAgBI,SAAhB,GAA4BmkB,MAAM,CAACvkB,IAAnC,GAA0CukB,MAAM,CAAC7kB,EAAlE,CAhByB,CAkBzB;;AACA,QAAIkE,UAAJ;;AACA,QAAIvE,wDAAQ,CAAChB,kDAAS,GAAGkC,SAAZ,CAAsBC,UAAvB,CAAZ,EAAgD;AAC9C;AACA,UAAMhB,IAAI,GAAG;AACXO,QAAAA,KAAK,EAAE0D,UAAU,CAACC,OAAX,CACL,sBADK,EAEL,UAACC,CAAD;AAAA,qCAAoBA,CAAC,CAACD,OAAF,CAAU,GAAV,EAAe,GAAf,CAApB;AAAA,SAFK;AADI,OAAb;AAMAE,MAAAA,UAAU,GAAGZ,2EAAY,CAAC8f,GAAD,EAAMtjB,IAAN,CAAZ,CAAwBA,IAAxB,EAAb;AACAoE,MAAAA,UAAU,CAAC+zB,UAAX,CAAsBn1B,WAAtB,CAAkCoB,UAAlC;AACD,KAVD,MAUO;AACL,UAAMC,QAAQ,GAAGX,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,MAAvD,CAAjB;AACAU,MAAAA,QAAQ,CAACC,YAAT,CAAsB,OAAtB,EAA+B2gB,MAAM,CAACtkB,UAAP,CAAkBuD,OAAlB,CAA0B,QAA1B,EAAoC,OAApC,CAA/B;AAEA,UAAMK,IAAI,GAAGN,UAAU,CAACO,KAAX,CAAiBya,qEAAjB,CAAb;;AAEA,WAAK,IAAIta,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,IAAI,CAACtG,MAAzB,EAAiC0G,CAAC,EAAlC,EAAsC;AACpC,YAAMC,KAAK,GAAGlB,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,OAAvD,CAAd;AACAiB,QAAAA,KAAK,CAACC,cAAN,CAAqB,sCAArB,EAA6D,WAA7D,EAA0E,UAA1E;AACAD,QAAAA,KAAK,CAACN,YAAN,CAAmB,IAAnB,EAAyB,KAAzB;AACAM,QAAAA,KAAK,CAACN,YAAN,CAAmB,GAAnB,EAAwB,GAAxB;AACAM,QAAAA,KAAK,CAACE,WAAN,GAAoBP,IAAI,CAACI,CAAD,CAAxB;AACAN,QAAAA,QAAQ,CAAC5D,WAAT,CAAqBmE,KAArB;AACD;;AACDR,MAAAA,UAAU,GAAGC,QAAb;AACD;;AAED,QAAI6gB,OAAO,GAAG,CAAd;AACA,QAAIC,MAAM,GAAG,EAAb,CAhDyB,CAiDzB;;AACA,YAAQJ,MAAM,CAACxX,IAAf;AACE,WAAK,OAAL;AACE2X,QAAAA,OAAO,GAAG,CAAV;AACAC,QAAAA,MAAM,GAAG,MAAT;AACA;;AACF,WAAK,QAAL;AACEA,QAAAA,MAAM,GAAG,MAAT;AACA;;AACF,WAAK,SAAL;AACEA,QAAAA,MAAM,GAAG,UAAT;AACA;;AACF,WAAK,SAAL;AACEA,QAAAA,MAAM,GAAG,SAAT;AACA;;AACF,WAAK,KAAL;AACEA,QAAAA,MAAM,GAAG,qBAAT;AACA;;AACF,WAAK,YAAL;AACEA,QAAAA,MAAM,GAAG,YAAT;AACA;;AACF,WAAK,WAAL;AACEA,QAAAA,MAAM,GAAG,WAAT;AACA;;AACF,WAAK,WAAL;AACEA,QAAAA,MAAM,GAAG,WAAT;AACA;;AACF,WAAK,eAAL;AACEA,QAAAA,MAAM,GAAG,eAAT;AACA;;AACF,WAAK,WAAL;AACEA,QAAAA,MAAM,GAAG,qBAAT;AACA;;AACF,WAAK,QAAL;AACEA,QAAAA,MAAM,GAAG,QAAT;AACA;;AACF,WAAK,SAAL;AACEA,QAAAA,MAAM,GAAG,SAAT;AACA;;AACF,WAAK,SAAL;AACEA,QAAAA,MAAM,GAAG,SAAT;AACA;;AACF,WAAK,YAAL;AACEA,QAAAA,MAAM,GAAG,YAAT;AACA;;AACF,WAAK,UAAL;AACEA,QAAAA,MAAM,GAAG,UAAT;AACA;;AACF,WAAK,OAAL;AACEA,QAAAA,MAAM,GAAG,MAAT;AACA;;AACF;AACEA,QAAAA,MAAM,GAAG,MAAT;AAnDJ,KAlDyB,CAuGzB;;;AACAloB,IAAAA,6CAAA,CAAS,aAAT,EAAwB8nB,MAAM,CAAC7kB,EAA/B,EAAmC6kB,MAAM,CAACzQ,KAA1C;AACAwQ,IAAAA,CAAC,CAAC/X,OAAF,CAAU8qB,2DAAA,CAAmB9S,MAAM,CAAC7kB,EAA1B,CAAV,EAAyC;AACvCimB,MAAAA,SAAS,EAAE,KAD4B;AAEvCxlB,MAAAA,UAAU,EAAEskB,MAAM,CAACtkB,UAFoB;AAGvCmC,MAAAA,KAAK,EAAEqiB,MAHgC;AAIvC5kB,MAAAA,KAAK,EAAE6D,UAJgC;AAKvCvC,MAAAA,EAAE,EAAEqjB,OALmC;AAMvCpjB,MAAAA,EAAE,EAAEojB,OANmC;AAOvC5kB,MAAAA,KAAK,EAAE43B,QAPgC;AAQvCt2B,MAAAA,KAAK,EAAEqjB,MAAM,CAACrjB,KARyB;AASvC1B,MAAAA,EAAE,EAAE23B,2DAAA,CAAmB9S,MAAM,CAAC7kB,EAA1B;AATmC,KAAzC;AAWD,GApHD;AAqHD,CA1HM;AA4HP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMk4B,QAAQ,GAAG,SAAXA,QAAW,CAAU3rB,KAAV,EAAiBqY,CAAjB,EAAoB;AAC1C,MAAIO,GAAG,GAAG,CAAV;AAEA,MAAIC,YAAJ;AACA,MAAIC,iBAAJ;;AAEA,MAAI,OAAO9Y,KAAK,CAAC6Y,YAAb,KAA8B,WAAlC,EAA+C;AAC7C,QAAMgT,aAAa,GAAG7T,0DAAkB,CAAChY,KAAK,CAAC6Y,YAAP,CAAxC;AACAA,IAAAA,YAAY,GAAGgT,aAAa,CAAC12B,KAA7B;AACA2jB,IAAAA,iBAAiB,GAAG+S,aAAa,CAAC33B,UAAlC;AACD;;AAED8L,EAAAA,KAAK,CAACxN,OAAN,CAAc,UAAUqG,IAAV,EAAgB;AAC5B+f,IAAAA,GAAG,GADyB,CAG5B;;AACA,QAAImT,MAAM,GAAG,OAAOlzB,IAAI,CAACwQ,KAAZ,GAAoB,GAApB,GAA0BxQ,IAAI,CAAC0Q,GAA5C;AACA,QAAIyiB,aAAa,GAAG,QAAQnzB,IAAI,CAACwQ,KAAjC;AACA,QAAI4iB,WAAW,GAAG,QAAQpzB,IAAI,CAAC0Q,GAA/B;AAEA,QAAMwP,QAAQ,GAAG,EAAjB,CAR4B,CAU5B;;AACA,QAAIlgB,IAAI,CAACiI,IAAL,KAAc,YAAlB,EAAgC;AAC9BiY,MAAAA,QAAQ,CAACC,SAAT,GAAqB,MAArB;AACD,KAFD,MAEO;AACLD,MAAAA,QAAQ,CAACC,SAAT,GAAqB,QAArB;AACD;;AAED,QAAI7jB,KAAK,GAAG,EAAZ;AACA,QAAIjB,UAAU,GAAG,EAAjB;;AAEA,QAAI,OAAO2E,IAAI,CAAC1D,KAAZ,KAAsB,WAA1B,EAAuC;AACrC,UAAMqjB,MAAM,GAAGR,0DAAkB,CAACnf,IAAI,CAAC1D,KAAN,CAAjC;AACAA,MAAAA,KAAK,GAAGqjB,MAAM,CAACrjB,KAAf;AACAjB,MAAAA,UAAU,GAAGskB,MAAM,CAACtkB,UAApB;AACD,KAJD,MAIO;AACL,cAAQ2E,IAAI,CAACyY,MAAb;AACE,aAAK,QAAL;AACEnc,UAAAA,KAAK,GAAG,WAAR;;AACA,cAAI,OAAO0jB,YAAP,KAAwB,WAA5B,EAAyC;AACvC1jB,YAAAA,KAAK,GAAG0jB,YAAR;AACD;;AACD,cAAI,OAAOC,iBAAP,KAA6B,WAAjC,EAA8C;AAC5C5kB,YAAAA,UAAU,GAAG4kB,iBAAb;AACD;;AACD;;AACF,aAAK,QAAL;AACE3jB,UAAAA,KAAK,GAAG,gDAAR;AACA;;AACF,aAAK,OAAL;AACEA,UAAAA,KAAK,GAAG,gCAAR;AACA;AAfJ;AAiBD;;AAED4jB,IAAAA,QAAQ,CAAC5jB,KAAT,GAAiBA,KAAjB;AACA4jB,IAAAA,QAAQ,CAAC7kB,UAAT,GAAsBA,UAAtB;;AAEA,QAAI,OAAO2E,IAAI,CAACygB,WAAZ,KAA4B,WAAhC,EAA6C;AAC3CP,MAAAA,QAAQ,CAACrb,KAAT,GAAiBqa,0DAAkB,CAAClf,IAAI,CAACygB,WAAN,EAAmBxB,2CAAnB,CAAnC;AACD,KAFD,MAEO,IAAI,OAAO9X,KAAK,CAACuZ,kBAAb,KAAoC,WAAxC,EAAqD;AAC1DR,MAAAA,QAAQ,CAACrb,KAAT,GAAiBqa,0DAAkB,CAAC/X,KAAK,CAACuZ,kBAAP,EAA2BzB,2CAA3B,CAAnC;AACD,KAFM,MAEA;AACLiB,MAAAA,QAAQ,CAACrb,KAAT,GAAiBqa,0DAAkB,CAAChmB,IAAI,CAAC2L,KAAN,EAAaoa,2CAAb,CAAnC;AACD;;AAED,QAAI,OAAOjf,IAAI,CAAC9E,IAAZ,KAAqB,WAAzB,EAAsC;AACpC,UAAI,OAAO8E,IAAI,CAAC1D,KAAZ,KAAsB,WAA1B,EAAuC;AACrC4jB,QAAAA,QAAQ,CAACS,cAAT,GAA0B,YAA1B;AACD;AACF,KAJD,MAIO;AACLT,MAAAA,QAAQ,CAACS,cAAT,GAA0B,YAA1B;AACAT,MAAAA,QAAQ,CAACU,QAAT,GAAoB,GAApB;;AAEA,UAAIrmB,wDAAQ,CAAChB,kDAAS,GAAGkC,SAAZ,CAAsBC,UAAvB,CAAZ,EAAgD;AAC9CwkB,QAAAA,QAAQ,CAACW,SAAT,GAAqB,MAArB;AACAX,QAAAA,QAAQ,CAACjlB,KAAT,0BAAgCi4B,MAAhC,oCAA8DC,aAA9D,iBAAkFC,WAAlF,gBAAkGpzB,IAAI,CAAC9E,IAAL,CAAU0D,OAAV,CAChG,sBADgG,EAEhG,UAACC,CAAD;AAAA,qCAAoBA,CAAC,CAACD,OAAF,CAAU,GAAV,EAAe,GAAf,CAApB;AAAA,SAFgG,CAAlG;AAID,OAND,MAMO;AACLshB,QAAAA,QAAQ,CAACW,SAAT,GAAqB,MAArB;AACAX,QAAAA,QAAQ,CAACjlB,KAAT,GAAiB+E,IAAI,CAAC9E,IAAL,CAAU0D,OAAV,CAAkB+a,qEAAlB,EAAyC,IAAzC,CAAjB;;AAEA,YAAI,OAAO3Z,IAAI,CAAC1D,KAAZ,KAAsB,WAA1B,EAAuC;AACrC4jB,UAAAA,QAAQ,CAAC5jB,KAAT,GAAiB4jB,QAAQ,CAAC5jB,KAAT,IAAkB,6CAAnC;AACD;;AAED4jB,QAAAA,QAAQ,CAAC7kB,UAAT,GAAsB6kB,QAAQ,CAAC7kB,UAAT,CAAoBuD,OAApB,CAA4B,QAA5B,EAAsC,OAAtC,CAAtB;AACD;AACF;;AAEDshB,IAAAA,QAAQ,CAACtlB,EAAT,GAAcs4B,MAAd;AACAhT,IAAAA,QAAQ,CAACllB,KAAT,GAAiBm4B,aAAa,GAAG,GAAhB,GAAsBC,WAAvC;AACAlT,IAAAA,QAAQ,CAACmT,MAAT,GAAkBrzB,IAAI,CAACrH,MAAL,IAAe,CAAjC,CAnF4B,CAqF5B;;AACA6mB,IAAAA,CAAC,CAAC7S,OAAF,CAAU4lB,2DAAA,CAAmBvyB,IAAI,CAACwQ,KAAxB,CAAV,EAA0C+hB,2DAAA,CAAmBvyB,IAAI,CAAC0Q,GAAxB,CAA1C,EAAwEwP,QAAxE,EAAkFH,GAAlF;AACD,GAvFD;AAwFD,CApGM;AAsGP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMjF,UAAU,GAAG,SAAbA,UAAa,CAAU5f,IAAV,EAAgB;AACxCvD,EAAAA,6CAAA,CAAS,oBAAT;AACA46B,EAAAA,qDAAA;;AACA,MAAI;AACF,QAAMxT,MAAM,GAAGyT,4DAAf;AACAzT,IAAAA,MAAM,CAACM,EAAP,GAAYkT,+CAAZ,CAFE,CAIF;;AACAxT,IAAAA,MAAM,CAACxX,KAAP,CAAarM,IAAb;AACA,WAAOq3B,0DAAA,EAAP;AACD,GAPD,CAOE,OAAO5uB,CAAP,EAAU;AACV;AACD;AACF,CAbM;AAeP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM+d,IAAI,GAAG,SAAPA,IAAO,CAAUxmB,IAAV,EAAgBN,EAAhB,EAAoB;AACtCjD,EAAAA,6CAAA,CAAS,mBAAT;AACA46B,EAAAA,qDAAA;AACAA,EAAAA,sDAAA,CAAc,OAAd;AACA,MAAMxT,MAAM,GAAGyT,4DAAf;AACAzT,EAAAA,MAAM,CAACM,EAAP,GAAYkT,+CAAZ,CALsC,CAOtC;AACA;;AACAxT,EAAAA,MAAM,CAACxX,KAAP,CAAarM,IAAb,EATsC,CAUtC;AACA;AACA;AAEA;;AACA,MAAI8L,GAAG,GAAGurB,4DAAA,EAAV;;AACA,MAAI,OAAOvrB,GAAP,KAAe,WAAnB,EAAgC;AAC9BA,IAAAA,GAAG,GAAG,IAAN;AACD;;AAED,MAAM9N,IAAI,GAAGK,kDAAS,GAAGkC,SAAzB;AACA,MAAMkY,WAAW,GAAGza,IAAI,CAACya,WAAL,IAAoB,EAAxC;AACA,MAAMC,WAAW,GAAG1a,IAAI,CAAC0a,WAAL,IAAoB,EAAxC,CAtBsC,CAwBtC;;AACA,MAAM4L,CAAC,GAAG,IAAI3Z,uDAAJ,CAAmB;AAC3BgI,IAAAA,UAAU,EAAE,IADe;AAE3BC,IAAAA,QAAQ,EAAE;AAFiB,GAAnB,EAIPC,QAJO,CAIE;AACR9G,IAAAA,OAAO,EAAED,GADD;AAERgH,IAAAA,OAAO,EAAE2F,WAFD;AAGR1F,IAAAA,OAAO,EAAE2F,WAHD;AAIR1F,IAAAA,OAAO,EAAE,CAJD;AAKRC,IAAAA,OAAO,EAAE;AALD,GAJF,EAWPC,mBAXO,CAWa,YAAY;AAC/B,WAAO,EAAP;AACD,GAbO,CAAV;AAeA,MAAIklB,IAAJ;AACA,MAAMrF,SAAS,GAAGsE,4DAAA,EAAlB;;AACA,OAAK,IAAI75B,EAAC,GAAGu1B,SAAS,CAACt1B,MAAV,GAAmB,CAAhC,EAAmCD,EAAC,IAAI,CAAxC,EAA2CA,EAAC,EAA5C,EAAgD;AAC9C46B,IAAAA,IAAI,GAAGrF,SAAS,CAACv1B,EAAD,CAAhB;AACA65B,IAAAA,yDAAA,CAAiBe,IAAI,CAAC14B,EAAtB,EAA0B04B,IAAI,CAACpjB,KAA/B,EAAsC,OAAtC,EAA+C5U,SAA/C,EAA0Dg4B,IAAI,CAACt2B,OAA/D;AACD,GA7CqC,CA+CtC;;;AACA,MAAM01B,IAAI,GAAGH,2DAAA,EAAb;AACA56B,EAAAA,6CAAA,CAAS,cAAT,EAAyB+6B,IAAzB;AAEA,MAAMvrB,KAAK,GAAGorB,wDAAA,EAAd;AAEA,MAAI75B,CAAC,GAAG,CAAR;;AACA,OAAKA,CAAC,GAAGu1B,SAAS,CAACt1B,MAAV,GAAmB,CAA5B,EAA+BD,CAAC,IAAI,CAApC,EAAuCA,CAAC,EAAxC,EAA4C;AAC1C46B,IAAAA,IAAI,GAAGrF,SAAS,CAACv1B,CAAD,CAAhB;AAEAulB,IAAAA,6CAAS,CAAC,SAAD,CAAT,CAAqB/gB,MAArB,CAA4B,MAA5B;;AAEA,SAAK,IAAImC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGi0B,IAAI,CAACpsB,KAAL,CAAWvO,MAA/B,EAAuC0G,CAAC,EAAxC,EAA4C;AAC1C1H,MAAAA,6CAAA,CACE,kBADF,EAEE27B,IAAI,CAACpsB,KAAL,CAAW7H,CAAX,CAFF,EAGEkzB,2DAAA,CAAmBe,IAAI,CAACpsB,KAAL,CAAW7H,CAAX,CAAnB,CAHF,EAIEkzB,2DAAA,CAAmBe,IAAI,CAAC14B,EAAxB,CAJF;AAMA4kB,MAAAA,CAAC,CAAC9X,SAAF,CAAY6qB,2DAAA,CAAmBe,IAAI,CAACpsB,KAAL,CAAW7H,CAAX,CAAnB,CAAZ,EAA+CkzB,2DAAA,CAAmBe,IAAI,CAAC14B,EAAxB,CAA/C;AACD;AACF;;AACD63B,EAAAA,WAAW,CAACC,IAAD,EAAOlT,CAAP,EAAU5kB,EAAV,CAAX;AACAk4B,EAAAA,QAAQ,CAAC3rB,KAAD,EAAQqY,CAAR,CAAR,CAtEsC,CAwEtC;;AACA,MAAMiU,MAAM,GAAG9F,wDAAf;AACA,MAAMzlB,MAAM,GAAG,IAAIurB,MAAJ,EAAf,CA1EsC,CA4EtC;;AACAD,EAAAA,qEAAA,CAA4BtrB,MAA5B,EA7EsC,CA+EtC;;AACAA,EAAAA,MAAM,CAACwrB,MAAP,GAAgBC,IAAhB,GAAuB,SAASC,MAAT,CAAgBn5B,MAAhB,EAAwBG,EAAxB,EAA4BoF,IAA5B,EAAkCiI,IAAlC,EAAwC;AAC7D,QAAMia,MAAM,GAAGznB,MAAM,CAClByC,MADY,CACL,QADK,EAEZnC,IAFY,CAEP,IAFO,EAEDH,EAFC,EAGZG,IAHY,CAGP,SAHO,EAGI,WAHJ,EAIZA,IAJY,CAIP,MAJO,EAIC,CAJD,EAKZA,IALY,CAKP,MALO,EAKC,CALD,EAMZA,IANY,CAMP,aANO,EAMQ,aANR,EAOZA,IAPY,CAOP,aAPO,EAOQ,CAPR,EAQZA,IARY,CAQP,cARO,EAQS,CART,EASZA,IATY,CASP,QATO,EASG,MATH,CAAf;AAWA,QAAMwG,IAAI,GAAG2gB,MAAM,CAAChlB,MAAP,CAAc,MAAd,EAAsBnC,IAAtB,CAA2B,GAA3B,EAAgC,qBAAhC,CAAb;AACA4yB,IAAAA,+DAAA,CAAwBpsB,IAAxB,EAA8BvB,IAAI,CAACiI,IAAI,GAAG,OAAR,CAAlC;AACD,GAdD,CAhFsC,CAgGtC;;;AACAC,EAAAA,MAAM,CAACwrB,MAAP,GAAgBE,MAAhB,GAAyB,SAASA,MAAT,CAAgBn5B,MAAhB,EAAwBG,EAAxB,EAA4B;AACnD,QAAMsnB,MAAM,GAAGznB,MAAM,CAClByC,MADY,CACL,QADK,EAEZnC,IAFY,CAEP,IAFO,EAEDH,EAFC,EAGZG,IAHY,CAGP,SAHO,EAGI,WAHJ,EAIZA,IAJY,CAIP,MAJO,EAIC,CAJD,EAKZA,IALY,CAKP,MALO,EAKC,CALD,EAMZA,IANY,CAMP,aANO,EAMQ,aANR,EAOZA,IAPY,CAOP,aAPO,EAOQ,CAPR,EAQZA,IARY,CAQP,cARO,EAQS,CART,EASZA,IATY,CASP,QATO,EASG,MATH,CAAf;AAWAmnB,IAAAA,MAAM,CACHhlB,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,GAFR,EAEa,uBAFb,EAGGA,IAHH,CAGQ,OAHR,EAGiB,eAHjB,EAIGuB,KAJH,CAIS,cAJT,EAIyB,CAJzB,EAKGA,KALH,CAKS,kBALT,EAK6B,KAL7B;AAMD,GAlBD,CAjGsC,CAqHtC;;;AACA,MAAM0hB,GAAG,GAAG1jB,0CAAM,iBAASM,EAAT,SAAlB;AACAojB,EAAAA,GAAG,CAACjjB,IAAJ,CAAS,aAAT,EAAwB,8BAAxB;AAEApD,EAAAA,6CAAA,CAAS6nB,CAAT,EAzHsC,CA2HtC;;AACA,MAAMtM,OAAO,GAAG5Y,0CAAM,CAAC,MAAMM,EAAN,GAAW,IAAZ,CAAtB;AACAsN,EAAAA,MAAM,CAACgL,OAAD,EAAUsM,CAAV,CAAN;AAEAtM,EAAAA,OAAO,CAAC+K,SAAR,CAAkB,QAAlB,EAA4BljB,IAA5B,CAAiC,OAAjC,EAA0C,YAAY;AACpD,WAAOw3B,0DAAA,CAAkB,KAAK33B,EAAvB,CAAP;AACD,GAFD;AAIA,MAAMqB,OAAO,GAAG/C,IAAI,CAACwa,cAArB;AACA,MAAM8N,SAAS,GAAGxD,GAAG,CAACtjB,IAAJ,GAAWc,OAAX,EAAlB;AACA,MAAMO,KAAK,GAAGylB,SAAS,CAACzlB,KAAV,GAAkBE,OAAO,GAAG,CAA1C;AACA,MAAMD,MAAM,GAAGwlB,SAAS,CAACxlB,MAAV,GAAmBC,OAAO,GAAG,CAA5C;AAEAmjB,EAAAA,wDAAgB,CAACpB,GAAD,EAAMhiB,MAAN,EAAcD,KAAd,EAAqB7C,IAAI,CAAC2a,WAA1B,CAAhB,CAxIsC,CA0ItC;;AACA,MAAM4N,IAAI,aAAMD,SAAS,CAAC/kB,CAAV,GAAcR,OAApB,cAA+BulB,SAAS,CAAC9kB,CAAV,GAAcT,OAA7C,cAAwDF,KAAxD,cAAiEC,MAAjE,CAAV;AACArE,EAAAA,8CAAA,mBAAqB8pB,IAArB;AACAzD,EAAAA,GAAG,CAACjjB,IAAJ,CAAS,SAAT,EAAoB0mB,IAApB,EA7IsC,CA+ItC;;AACA8Q,EAAAA,0DAAA,CAAkB,aAAa75B,CAA/B,EAhJsC,CAkJtC;;AACA,OAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGu1B,SAAS,CAACt1B,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC46B,IAAAA,IAAI,GAAGrF,SAAS,CAACv1B,CAAD,CAAhB;;AACA,QAAI46B,IAAI,CAACpjB,KAAL,KAAe,WAAnB,EAAgC;AAC9B,UAAM4jB,YAAY,GAAG11B,QAAQ,CAACyjB,gBAAT,CACnB,MAAMjnB,EAAN,GAAW,QAAX,GAAsB23B,2DAAA,CAAmBe,IAAI,CAAC14B,EAAxB,CAAtB,GAAoD,SADjC,CAArB;AAGA,UAAMm5B,SAAS,GAAG31B,QAAQ,CAACyjB,gBAAT,CAChB,MAAMjnB,EAAN,GAAW,QAAX,GAAsB23B,2DAAA,CAAmBe,IAAI,CAAC14B,EAAxB,CAAtB,GAAoD,IADpC,CAAlB;AAIA,UAAMo5B,IAAI,GAAGF,YAAY,CAAC,CAAD,CAAZ,CAAgBr3B,CAAhB,CAAkBw3B,OAAlB,CAA0B7yB,KAAvC;AACA,UAAM8yB,IAAI,GAAGJ,YAAY,CAAC,CAAD,CAAZ,CAAgBp3B,CAAhB,CAAkBu3B,OAAlB,CAA0B7yB,KAAvC;AACA,UAAMrF,MAAK,GAAG+3B,YAAY,CAAC,CAAD,CAAZ,CAAgB/3B,KAAhB,CAAsBk4B,OAAtB,CAA8B7yB,KAA5C;AACA,UAAM+yB,OAAO,GAAG75B,0CAAM,CAACy5B,SAAS,CAAC,CAAD,CAAV,CAAtB;AACA,UAAMK,EAAE,GAAGD,OAAO,CAAC75B,MAAR,CAAe,QAAf,CAAX;AACA85B,MAAAA,EAAE,CAACr5B,IAAH,CAAQ,WAAR,sBAAkCi5B,IAAI,GAAGj4B,MAAK,GAAG,CAAjD,eAAuDm4B,IAAI,GAAG,EAA9D;AACAE,MAAAA,EAAE,CAACr5B,IAAH,CAAQ,IAAR,EAAcH,EAAE,GAAG,MAAnB;;AAEA,WAAK,IAAIyE,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGi0B,IAAI,CAACt2B,OAAL,CAAarE,MAAjC,EAAyC0G,EAAC,EAA1C,EAA8C;AAC5C00B,QAAAA,SAAS,CAAC,CAAD,CAAT,CAAaM,SAAb,CAAuBC,GAAvB,CAA2BhB,IAAI,CAACt2B,OAAL,CAAaqC,EAAb,CAA3B;AACD;AACF;AACF,GAzKqC,CA2KtC;;;AACA,MAAI,CAAC9E,wDAAQ,CAACrB,IAAI,CAACwC,UAAN,CAAT,IAA8B,IAAlC,EAAwC;AAAE;AACxC,QAAMkmB,MAAM,GAAGxjB,QAAQ,CAACyjB,gBAAT,CAA0B,UAAUjnB,EAAV,GAAe,sBAAzC,CAAf;;AACA,SAAK,IAAIknB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,MAAM,CAACjpB,MAA3B,EAAmCmpB,CAAC,EAApC,EAAwC;AACtC,UAAM7mB,KAAK,GAAG2mB,MAAM,CAACE,CAAD,CAApB,CADsC,CAGtC;;AACA,UAAMC,GAAG,GAAG9mB,KAAK,CAACO,OAAN,EAAZ;AAEA,UAAMhB,IAAI,GAAG4D,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,MAAvD,CAAb;AACA7D,MAAAA,IAAI,CAACwE,YAAL,CAAkB,IAAlB,EAAwB,CAAxB;AACAxE,MAAAA,IAAI,CAACwE,YAAL,CAAkB,IAAlB,EAAwB,CAAxB;AACAxE,MAAAA,IAAI,CAACwE,YAAL,CAAkB,OAAlB,EAA2B+iB,GAAG,CAAChmB,KAA/B;AACAvB,MAAAA,IAAI,CAACwE,YAAL,CAAkB,QAAlB,EAA4B+iB,GAAG,CAAC/lB,MAAhC,EAVsC,CAWtC;;AAEAf,MAAAA,KAAK,CAAC+mB,YAAN,CAAmBxnB,IAAnB,EAAyBS,KAAK,CAACgnB,UAA/B;AACD;AACF,GA7LqC,CA+LtC;;;AACA,MAAMxoB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYi5B,IAAZ,CAAb;AACAj5B,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUC,GAAV,EAAe;AAC1B,QAAM6lB,MAAM,GAAGiT,IAAI,CAAC94B,GAAD,CAAnB;;AAEA,QAAI6lB,MAAM,CAAC9M,IAAX,EAAiB;AACf,UAAMjY,IAAI,GAAGJ,0CAAM,CAAC,MAAMM,EAAN,GAAW,QAAX,GAAsB23B,2DAAA,CAAmB34B,GAAnB,CAAtB,GAAgD,IAAjD,CAAnB;;AACA,UAAIc,IAAJ,EAAU;AACR,YAAMiY,IAAI,GAAGvU,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,GAAvD,CAAb;AACAsU,QAAAA,IAAI,CAACpT,cAAL,CAAoB,4BAApB,EAAkD,OAAlD,EAA2DkgB,MAAM,CAACziB,OAAP,CAAekS,IAAf,CAAoB,GAApB,CAA3D;AACAyD,QAAAA,IAAI,CAACpT,cAAL,CAAoB,4BAApB,EAAkD,MAAlD,EAA0DkgB,MAAM,CAAC9M,IAAjE;AACAA,QAAAA,IAAI,CAACpT,cAAL,CAAoB,4BAApB,EAAkD,KAAlD,EAAyD,UAAzD;;AACA,YAAIkgB,MAAM,CAAC7M,UAAX,EAAuB;AACrBD,UAAAA,IAAI,CAACpT,cAAL,CAAoB,4BAApB,EAAkD,QAAlD,EAA4DkgB,MAAM,CAAC7M,UAAnE;AACD;;AAED,YAAM2gB,QAAQ,GAAG74B,IAAI,CAACI,MAAL,CAAY,YAAY;AACvC,iBAAO6X,IAAP;AACD,SAFgB,EAEd,cAFc,CAAjB;AAIA,YAAMnV,KAAK,GAAG9C,IAAI,CAACJ,MAAL,CAAY,kBAAZ,CAAd;;AACA,YAAIkD,KAAJ,EAAW;AACT+1B,UAAAA,QAAQ,CAACr2B,MAAT,CAAgB,YAAY;AAC1B,mBAAOM,KAAK,CAAC9C,IAAN,EAAP;AACD,WAFD;AAGD;;AAED,YAAMO,MAAK,GAAGP,IAAI,CAACJ,MAAL,CAAY,QAAZ,CAAd;;AACA,YAAIW,MAAJ,EAAW;AACTs4B,UAAAA,QAAQ,CAACr2B,MAAT,CAAgB,YAAY;AAC1B,mBAAOjC,MAAK,CAACP,IAAN,EAAP;AACD,WAFD;AAGD;AACF;AACF;AACF,GAjCD;AAkCD,CAnOM;AAqOP,iEAAe;AACbsmB,EAAAA,OAAO,EAAPA,OADa;AAEbyR,EAAAA,WAAW,EAAXA,WAFa;AAGbK,EAAAA,QAAQ,EAARA,QAHa;AAIbhY,EAAAA,UAAU,EAAVA,UAJa;AAKb4G,EAAAA,IAAI,EAAJA;AALa,CAAf;;;;;;;;;;;;;;;ACrgBA,IAAMS,SAAS,GAAG,SAAZA,SAAY,CAAC3oB,OAAD;AAAA,8CAECA,OAAO,CAACS,UAFT,2BAGLT,OAAO,CAAC+6B,aAAR,IAAyB/6B,OAAO,CAACg7B,SAH5B,wDAMNh7B,OAAO,CAACi7B,UANF,yDASLj7B,OAAO,CAACi7B,UATH,uDAaNj7B,OAAO,CAAC+6B,aAAR,IAAyB/6B,OAAO,CAACg7B,SAb3B,2BAcLh7B,OAAO,CAAC+6B,aAAR,IAAyB/6B,OAAO,CAACg7B,SAd5B,qHAsBNh7B,OAAO,CAAC8oB,OAtBF,4BAuBJ9oB,OAAO,CAAC4oB,UAvBJ,+KAmCN5oB,OAAO,CAACk7B,cAnCF,wDAuCJl7B,OAAO,CAAC+oB,SAvCJ,kFA4CJ/oB,OAAO,CAAC+oB,SA5CJ,8EAiDM/oB,OAAO,CAACm7B,mBAjDd,yEAoDQn7B,OAAO,CAACm7B,mBApDhB,4BAqDJn7B,OAAO,CAACm7B,mBArDJ,oFA2DNn7B,OAAO,CAACo7B,UA3DF,4BA4DJp7B,OAAO,CAACq7B,aA5DJ,4EAiENr7B,OAAO,CAACi7B,UAjEF,qDAqELj7B,OAAO,CAACi7B,UArEH,wDAwEFj7B,OAAO,CAACi7B,UAxEN,+JAgFCj7B,OAAO,CAACS,UAhFT,sDAkFAT,OAAO,CAACk0B,aAlFR,sCAmFMl0B,OAAO,CAACs7B,OAnFd;AAAA,CAAlB;;AA0FA,iEAAe3S,SAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1FA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAI8S,UAAU,GAAG,EAAjB;AACA,IAAIte,UAAU,GAAG,EAAjB;AACA,IAAIue,WAAW,GAAG,EAAlB;AACA,IAAIC,QAAQ,GAAG,EAAf;AACA,IAAIC,QAAQ,GAAG,EAAf;AACA,IAAIllB,KAAK,GAAG,EAAZ;AACA,IAAImlB,QAAQ,GAAG,EAAf;AACA,IAAIC,KAAK,GAAG,EAAZ;AACA,IAAIC,cAAc,GAAG,EAArB;AACA,IAAMC,IAAI,GAAG,CAAC,QAAD,EAAW,MAAX,EAAmB,MAAnB,EAA2B,WAA3B,CAAb;AACA,IAAIxb,IAAI,GAAG,EAAX;AACA,IAAIyb,iBAAiB,GAAG,KAAxB;AACA,IAAI7e,OAAO,GAAG,KAAd,EAEA;;AACA,IAAI8e,SAAS,GAAG,CAAhB;AAEO,IAAMzb,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BlS,IAA9B,EAAoC;AAChE2R,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDlS,IAApD;AACD,CAFM;AAIA,IAAMtK,KAAK,GAAG,SAARA,KAAQ,GAAY;AAC/B03B,EAAAA,QAAQ,GAAG,EAAX;AACAC,EAAAA,KAAK,GAAG,EAAR;AACAC,EAAAA,cAAc,GAAG,EAAjB;AACAvb,EAAAA,IAAI,GAAG,EAAP;AACA9J,EAAAA,KAAK,GAAG,EAAR;AACAylB,EAAAA,OAAO,GAAG,CAAV;AACAC,EAAAA,QAAQ,GAAGt6B,SAAX;AACAu6B,EAAAA,UAAU,GAAGv6B,SAAb;AACAw6B,EAAAA,QAAQ,GAAG,EAAX;AACAb,EAAAA,UAAU,GAAG,EAAb;AACAte,EAAAA,UAAU,GAAG,EAAb;AACAue,EAAAA,WAAW,GAAG,EAAd;AACAC,EAAAA,QAAQ,GAAG,EAAX;AACAC,EAAAA,QAAQ,GAAG,EAAX;AACAK,EAAAA,iBAAiB,GAAG,KAApB;AACA7e,EAAAA,OAAO,GAAG,KAAV;AACA8e,EAAAA,SAAS,GAAG,CAAZ;AACD,CAlBM;AAoBA,IAAMK,aAAa,GAAG,SAAhBA,aAAgB,CAAUxQ,GAAV,EAAe;AAC1C5O,EAAAA,UAAU,GAAG4O,GAAb;AACD,CAFM;AAIA,IAAMyQ,aAAa,GAAG,SAAhBA,aAAgB,GAAY;AACvC,SAAOrf,UAAP;AACD,CAFM;AAIA,IAAMsf,cAAc,GAAG,SAAjBA,cAAiB,CAAU1Q,GAAV,EAAe;AAC3C2P,EAAAA,WAAW,GAAG3P,GAAd;AACD,CAFM;AAIA,IAAM2Q,cAAc,GAAG,SAAjBA,cAAiB,GAAY;AACxC,SAAOhB,WAAP;AACD,CAFM;AAIA,IAAMiB,aAAa,GAAG,SAAhBA,aAAgB,CAAU5Q,GAAV,EAAe;AAC1C0P,EAAAA,UAAU,GAAG1P,GAAb;AACD,CAFM;AAIA,IAAM6Q,uBAAuB,GAAG,SAA1BA,uBAA0B,GAAY;AACjDX,EAAAA,iBAAiB,GAAG,IAApB;AACD,CAFM;AAIA,IAAMY,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAY;AAC9C,SAAOZ,iBAAP;AACD,CAFM;AAIA,IAAMa,aAAa,GAAG,SAAhBA,aAAgB,GAAY;AACvC1f,EAAAA,OAAO,GAAG,IAAV;AACD,CAFM;AAIA,IAAM2f,cAAc,GAAG,SAAjBA,cAAiB,GAAY;AACxC,SAAO3f,OAAP;AACD,CAFM;AAIA,IAAM4f,aAAa,GAAG,SAAhBA,aAAgB,GAAY;AACvC,SAAOvB,UAAP;AACD,CAFM;AAIA,IAAMwB,WAAW,GAAG,SAAdA,WAAc,CAAUlR,GAAV,EAAe;AACxC4P,EAAAA,QAAQ,GAAG5P,GAAG,CAACmR,WAAJ,GAAkBx3B,KAAlB,CAAwB,QAAxB,CAAX;AACD,CAFM;AAIA,IAAMy3B,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAOxB,QAAP;AACD,CAFM;AAGA,IAAMyB,WAAW,GAAG,SAAdA,WAAc,CAAUrR,GAAV,EAAe;AACxC6P,EAAAA,QAAQ,GAAG7P,GAAG,CAACmR,WAAJ,GAAkBx3B,KAAlB,CAAwB,QAAxB,CAAX;AACD,CAFM;AAIA,IAAM23B,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAOzB,QAAP;AACD,CAFM;AAIA,IAAM9M,QAAQ,GAAG,SAAXA,QAAW,CAAU/C,GAAV,EAAe;AACrCrV,EAAAA,KAAK,GAAGqV,GAAR;AACD,CAFM;AAIA,IAAMgD,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAClC,SAAOrY,KAAP;AACD,CAFM;AAIA,IAAM4mB,UAAU,GAAG,SAAbA,UAAa,CAAUvR,GAAV,EAAe;AACvCgQ,EAAAA,cAAc,GAAGhQ,GAAjB;AACA8P,EAAAA,QAAQ,CAACn7B,IAAT,CAAcqrB,GAAd;AACD,CAHM;AAKA,IAAMwR,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAO1B,QAAP;AACD,CAFM;AAIA,IAAM2B,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAClC,MAAIC,iBAAiB,GAAGC,YAAY,EAApC;AACA,MAAMC,QAAQ,GAAG,EAAjB;AACA,MAAIC,cAAc,GAAG,CAArB;;AACA,SAAO,CAACH,iBAAD,IAAsBG,cAAc,GAAGD,QAA9C,EAAwD;AACtDF,IAAAA,iBAAiB,GAAGC,YAAY,EAAhC;AACAE,IAAAA,cAAc;AACf;;AAED9B,EAAAA,KAAK,GAAGQ,QAAR;AAEA,SAAOR,KAAP;AACD,CAZM;AAcA,IAAM+B,aAAa,GAAG,SAAhBA,aAAgB,CAAUC,IAAV,EAAgBrC,UAAhB,EAA4BG,QAA5B,EAAsCD,QAAtC,EAAgD;AAC3E,MAAIA,QAAQ,CAACr7B,OAAT,CAAiBw9B,IAAI,CAACC,MAAL,CAAYtC,UAAU,CAACx1B,IAAX,EAAZ,CAAjB,KAAoD,CAAxD,EAA2D;AACzD,WAAO,KAAP;AACD;;AACD,MAAI63B,IAAI,CAACE,UAAL,MAAqB,CAArB,IAA0BpC,QAAQ,CAACt7B,OAAT,CAAiB,UAAjB,KAAgC,CAA9D,EAAiE;AAC/D,WAAO,IAAP;AACD;;AACD,MAAIs7B,QAAQ,CAACt7B,OAAT,CAAiBw9B,IAAI,CAACC,MAAL,CAAY,MAAZ,EAAoBb,WAApB,EAAjB,KAAuD,CAA3D,EAA8D;AAC5D,WAAO,IAAP;AACD;;AACD,SAAOtB,QAAQ,CAACt7B,OAAT,CAAiBw9B,IAAI,CAACC,MAAL,CAAYtC,UAAU,CAACx1B,IAAX,EAAZ,CAAjB,KAAoD,CAA3D;AACD,CAXM;;AAaP,IAAMg4B,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,IAAV,EAAgBzC,UAAhB,EAA4BG,QAA5B,EAAsCD,QAAtC,EAAgD;AACrE,MAAI,CAACC,QAAQ,CAACz8B,MAAV,IAAoB++B,IAAI,CAACC,aAA7B,EAA4C;AAC5C,MAAIC,SAAS,GAAG7C,kDAAM,CAAC2C,IAAI,CAACE,SAAN,EAAiB3C,UAAjB,EAA6B,IAA7B,CAAtB;AACA2C,EAAAA,SAAS,CAACtD,GAAV,CAAc,CAAd,EAAiB,GAAjB;AACA,MAAIuD,OAAO,GAAG9C,kDAAM,CAAC2C,IAAI,CAACG,OAAN,EAAe5C,UAAf,EAA2B,IAA3B,CAApB;AACA,MAAI6C,aAAa,GAAGC,YAAY,CAACH,SAAD,EAAYC,OAAZ,EAAqB5C,UAArB,EAAiCG,QAAjC,EAA2CD,QAA3C,CAAhC;AACAuC,EAAAA,IAAI,CAACG,OAAL,GAAeA,OAAO,CAACG,MAAR,EAAf;AACAN,EAAAA,IAAI,CAACI,aAAL,GAAqBA,aAArB;AACD,CARD;;AAUA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAAUH,SAAV,EAAqBC,OAArB,EAA8B5C,UAA9B,EAA0CG,QAA1C,EAAoDD,QAApD,EAA8D;AACjF,MAAI8C,OAAO,GAAG,KAAd;AACA,MAAIH,aAAa,GAAG,IAApB;;AACA,SAAOF,SAAS,IAAIC,OAApB,EAA6B;AAC3B,QAAI,CAACI,OAAL,EAAc;AACZH,MAAAA,aAAa,GAAGD,OAAO,CAACG,MAAR,EAAhB;AACD;;AACDC,IAAAA,OAAO,GAAGZ,aAAa,CAACO,SAAD,EAAY3C,UAAZ,EAAwBG,QAAxB,EAAkCD,QAAlC,CAAvB;;AACA,QAAI8C,OAAJ,EAAa;AACXJ,MAAAA,OAAO,CAACvD,GAAR,CAAY,CAAZ,EAAe,GAAf;AACD;;AACDsD,IAAAA,SAAS,CAACtD,GAAV,CAAc,CAAd,EAAiB,GAAjB;AACD;;AACD,SAAOwD,aAAP;AACD,CAdD;;AAgBA,IAAMI,YAAY,GAAG,SAAfA,YAAe,CAAUC,QAAV,EAAoBlD,UAApB,EAAgCjjB,GAAhC,EAAqC;AACxDA,EAAAA,GAAG,GAAGA,GAAG,CAACvS,IAAJ,EAAN,CADwD,CAGxD;;AACA,MAAM24B,EAAE,GAAG,sBAAX;AACA,MAAMC,cAAc,GAAGD,EAAE,CAACE,IAAH,CAAQtmB,GAAG,CAACvS,IAAJ,EAAR,CAAvB;;AAEA,MAAI44B,cAAc,KAAK,IAAvB,EAA6B;AAC3B;AACA,QAAIE,gBAAgB,GAAG,IAAvB;AACAF,IAAAA,cAAc,CAAC,CAAD,CAAd,CAAkBn5B,KAAlB,CAAwB,GAAxB,EAA6BvF,OAA7B,CAAqC,UAAUiB,EAAV,EAAc;AACjD,UAAI88B,IAAI,GAAGc,YAAY,CAAC59B,EAAD,CAAvB;;AACA,UAAI,OAAO88B,IAAP,KAAgB,WAApB,EAAiC;AAC/B,YAAI,CAACa,gBAAL,EAAuB;AACrBA,UAAAA,gBAAgB,GAAGb,IAAnB;AACD,SAFD,MAEO;AACL,cAAIA,IAAI,CAACG,OAAL,GAAeU,gBAAgB,CAACV,OAApC,EAA6C;AAC3CU,YAAAA,gBAAgB,GAAGb,IAAnB;AACD;AACF;AACF;AACF,KAXD;;AAaA,QAAI,CAACa,gBAAL,EAAuB;AACrB,UAAME,EAAE,GAAG,IAAIC,IAAJ,EAAX;AACAD,MAAAA,EAAE,CAACE,QAAH,CAAY,CAAZ,EAAe,CAAf,EAAkB,CAAlB,EAAqB,CAArB;AACA,aAAOF,EAAP;AACD,KAJD,MAIO;AACL,aAAOF,gBAAgB,CAACV,OAAxB;AACD;AACF,GA9BuD,CAgCxD;;;AACA,MAAIe,KAAK,GAAG7D,kDAAM,CAAC/iB,GAAD,EAAMijB,UAAU,CAACx1B,IAAX,EAAN,EAAyB,IAAzB,CAAlB;;AACA,MAAIm5B,KAAK,CAACC,OAAN,EAAJ,EAAqB;AACnB,WAAOD,KAAK,CAACZ,MAAN,EAAP;AACD,GAFD,MAEO;AACLrgC,IAAAA,8CAAA,CAAU,kBAAkBqa,GAA5B;AACAra,IAAAA,8CAAA,CAAU,sBAAsBs9B,UAAU,CAACx1B,IAAX,EAAhC;AACD,GAvCuD,CAyCxD;;;AACA,SAAO,IAAIi5B,IAAJ,EAAP;AACD,CA3CD;;AA6CA,IAAMI,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,iBAAV,EAA6BC,YAA7B,EAA2C;AAChE,MAAID,iBAAiB,KAAK,IAA1B,EAAgC;AAC9B,YAAQA,iBAAiB,CAAC,CAAD,CAAzB;AACE,WAAK,GAAL;AACEC,QAAAA,YAAY,CAAC1E,GAAb,CAAiByE,iBAAiB,CAAC,CAAD,CAAlC,EAAuC,SAAvC;AACA;;AACF,WAAK,GAAL;AACEC,QAAAA,YAAY,CAAC1E,GAAb,CAAiByE,iBAAiB,CAAC,CAAD,CAAlC,EAAuC,SAAvC;AACA;;AACF,WAAK,GAAL;AACEC,QAAAA,YAAY,CAAC1E,GAAb,CAAiByE,iBAAiB,CAAC,CAAD,CAAlC,EAAuC,OAAvC;AACA;;AACF,WAAK,GAAL;AACEC,QAAAA,YAAY,CAAC1E,GAAb,CAAiByE,iBAAiB,CAAC,CAAD,CAAlC,EAAuC,MAAvC;AACA;;AACF,WAAK,GAAL;AACEC,QAAAA,YAAY,CAAC1E,GAAb,CAAiByE,iBAAiB,CAAC,CAAD,CAAlC,EAAuC,OAAvC;AACA;AAfJ;AAiBD,GAnB+D,CAoBhE;;;AACA,SAAOC,YAAY,CAAChB,MAAb,EAAP;AACD,CAtBD;;AAwBA,IAAMiB,UAAU,GAAG,SAAbA,UAAa,CAAUd,QAAV,EAAoBlD,UAApB,EAAgCjjB,GAAhC,EAAqCknB,SAArC,EAAgD;AACjEA,EAAAA,SAAS,GAAGA,SAAS,IAAI,KAAzB;AACAlnB,EAAAA,GAAG,GAAGA,GAAG,CAACvS,IAAJ,EAAN,CAFiE,CAIjE;;AACA,MAAIm5B,KAAK,GAAG7D,kDAAM,CAAC/iB,GAAD,EAAMijB,UAAU,CAACx1B,IAAX,EAAN,EAAyB,IAAzB,CAAlB;;AACA,MAAIm5B,KAAK,CAACC,OAAN,EAAJ,EAAqB;AACnB,QAAIK,SAAJ,EAAe;AACbN,MAAAA,KAAK,CAACtE,GAAN,CAAU,CAAV,EAAa,GAAb;AACD;;AACD,WAAOsE,KAAK,CAACZ,MAAN,EAAP;AACD;;AAED,SAAOc,cAAc,CAAC,oBAAoBR,IAApB,CAAyBtmB,GAAG,CAACvS,IAAJ,EAAzB,CAAD,EAAuCs1B,kDAAM,CAACoD,QAAD,CAA7C,CAArB;AACD,CAdD;;AAgBA,IAAIxC,OAAO,GAAG,CAAd;;AACA,IAAMwD,OAAO,GAAG,SAAVA,OAAU,CAAUC,KAAV,EAAiB;AAC/B,MAAI,OAAOA,KAAP,KAAiB,WAArB,EAAkC;AAChCzD,IAAAA,OAAO,GAAGA,OAAO,GAAG,CAApB;AACA,WAAO,SAASA,OAAhB;AACD;;AACD,SAAOyD,KAAP;AACD,CAND,EAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAAUC,QAAV,EAAoBC,OAApB,EAA6B;AAC/C,MAAIC,EAAJ;;AAEA,MAAID,OAAO,CAACvd,MAAR,CAAe,CAAf,EAAkB,CAAlB,MAAyB,GAA7B,EAAkC;AAChCwd,IAAAA,EAAE,GAAGD,OAAO,CAACvd,MAAR,CAAe,CAAf,EAAkBud,OAAO,CAAC5gC,MAA1B,CAAL;AACD,GAFD,MAEO;AACL6gC,IAAAA,EAAE,GAAGD,OAAL;AACD;;AAED,MAAMjyB,IAAI,GAAGkyB,EAAE,CAACt6B,KAAH,CAAS,GAAT,CAAb;AAEA,MAAMw4B,IAAI,GAAG,EAAb,CAX+C,CAa/C;;AACA+B,EAAAA,WAAW,CAACnyB,IAAD,EAAOowB,IAAP,EAAalC,IAAb,CAAX;;AAEA,OAAK,IAAI98B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4O,IAAI,CAAC3O,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpC4O,IAAAA,IAAI,CAAC5O,CAAD,CAAJ,GAAU4O,IAAI,CAAC5O,CAAD,CAAJ,CAAQ+G,IAAR,EAAV;AACD;;AAED,MAAIi6B,WAAW,GAAG,EAAlB;;AACA,UAAQpyB,IAAI,CAAC3O,MAAb;AACE,SAAK,CAAL;AACE++B,MAAAA,IAAI,CAAC98B,EAAL,GAAUu+B,OAAO,EAAjB;AACAzB,MAAAA,IAAI,CAACE,SAAL,GAAiB0B,QAAQ,CAACzB,OAA1B;AACA6B,MAAAA,WAAW,GAAGpyB,IAAI,CAAC,CAAD,CAAlB;AACA;;AACF,SAAK,CAAL;AACEowB,MAAAA,IAAI,CAAC98B,EAAL,GAAUu+B,OAAO,EAAjB;AACAzB,MAAAA,IAAI,CAACE,SAAL,GAAiBM,YAAY,CAAC58B,SAAD,EAAY25B,UAAZ,EAAwB3tB,IAAI,CAAC,CAAD,CAA5B,CAA7B;AACAoyB,MAAAA,WAAW,GAAGpyB,IAAI,CAAC,CAAD,CAAlB;AACA;;AACF,SAAK,CAAL;AACEowB,MAAAA,IAAI,CAAC98B,EAAL,GAAUu+B,OAAO,CAAC7xB,IAAI,CAAC,CAAD,CAAL,CAAjB;AACAowB,MAAAA,IAAI,CAACE,SAAL,GAAiBM,YAAY,CAAC58B,SAAD,EAAY25B,UAAZ,EAAwB3tB,IAAI,CAAC,CAAD,CAA5B,CAA7B;AACAoyB,MAAAA,WAAW,GAAGpyB,IAAI,CAAC,CAAD,CAAlB;AACA;;AACF;AAhBF;;AAmBA,MAAIoyB,WAAJ,EAAiB;AACfhC,IAAAA,IAAI,CAACG,OAAL,GAAeoB,UAAU,CAACvB,IAAI,CAACE,SAAN,EAAiB3C,UAAjB,EAA6ByE,WAA7B,EAA0CjE,iBAA1C,CAAzB;AACAiC,IAAAA,IAAI,CAACC,aAAL,GAAqB5C,kDAAM,CAAC2E,WAAD,EAAc,YAAd,EAA4B,IAA5B,CAAN,CAAwCb,OAAxC,EAArB;AACApB,IAAAA,cAAc,CAACC,IAAD,EAAOzC,UAAP,EAAmBG,QAAnB,EAA6BD,QAA7B,CAAd;AACD;;AAED,SAAOuC,IAAP;AACD,CA/CD;;AAiDA,IAAMiC,SAAS,GAAG,SAAZA,SAAY,CAAUC,UAAV,EAAsBL,OAAtB,EAA+B;AAC/C,MAAIC,EAAJ;;AACA,MAAID,OAAO,CAACvd,MAAR,CAAe,CAAf,EAAkB,CAAlB,MAAyB,GAA7B,EAAkC;AAChCwd,IAAAA,EAAE,GAAGD,OAAO,CAACvd,MAAR,CAAe,CAAf,EAAkBud,OAAO,CAAC5gC,MAA1B,CAAL;AACD,GAFD,MAEO;AACL6gC,IAAAA,EAAE,GAAGD,OAAL;AACD;;AAED,MAAMjyB,IAAI,GAAGkyB,EAAE,CAACt6B,KAAH,CAAS,GAAT,CAAb;AAEA,MAAMw4B,IAAI,GAAG,EAAb,CAV+C,CAY/C;;AACA+B,EAAAA,WAAW,CAACnyB,IAAD,EAAOowB,IAAP,EAAalC,IAAb,CAAX;;AAEA,OAAK,IAAI98B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4O,IAAI,CAAC3O,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpC4O,IAAAA,IAAI,CAAC5O,CAAD,CAAJ,GAAU4O,IAAI,CAAC5O,CAAD,CAAJ,CAAQ+G,IAAR,EAAV;AACD;;AAED,UAAQ6H,IAAI,CAAC3O,MAAb;AACE,SAAK,CAAL;AACE++B,MAAAA,IAAI,CAAC98B,EAAL,GAAUu+B,OAAO,EAAjB;AACAzB,MAAAA,IAAI,CAACE,SAAL,GAAiB;AACf3vB,QAAAA,IAAI,EAAE,aADS;AAEfrN,QAAAA,EAAE,EAAEg/B;AAFW,OAAjB;AAIAlC,MAAAA,IAAI,CAACG,OAAL,GAAe;AACbvwB,QAAAA,IAAI,EAAEA,IAAI,CAAC,CAAD;AADG,OAAf;AAGA;;AACF,SAAK,CAAL;AACEowB,MAAAA,IAAI,CAAC98B,EAAL,GAAUu+B,OAAO,EAAjB;AACAzB,MAAAA,IAAI,CAACE,SAAL,GAAiB;AACf3vB,QAAAA,IAAI,EAAE,cADS;AAEf4xB,QAAAA,SAAS,EAAEvyB,IAAI,CAAC,CAAD;AAFA,OAAjB;AAIAowB,MAAAA,IAAI,CAACG,OAAL,GAAe;AACbvwB,QAAAA,IAAI,EAAEA,IAAI,CAAC,CAAD;AADG,OAAf;AAGA;;AACF,SAAK,CAAL;AACEowB,MAAAA,IAAI,CAAC98B,EAAL,GAAUu+B,OAAO,CAAC7xB,IAAI,CAAC,CAAD,CAAL,CAAjB;AACAowB,MAAAA,IAAI,CAACE,SAAL,GAAiB;AACf3vB,QAAAA,IAAI,EAAE,cADS;AAEf4xB,QAAAA,SAAS,EAAEvyB,IAAI,CAAC,CAAD;AAFA,OAAjB;AAIAowB,MAAAA,IAAI,CAACG,OAAL,GAAe;AACbvwB,QAAAA,IAAI,EAAEA,IAAI,CAAC,CAAD;AADG,OAAf;AAGA;;AACF;AA/BF;;AAkCA,SAAOowB,IAAP;AACD,CAtDD;;AAwDA,IAAI9B,QAAJ;AACA,IAAIC,UAAJ;AACA,IAAIC,QAAQ,GAAG,EAAf;AACA,IAAMgE,MAAM,GAAG,EAAf;AACO,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAAU1pB,KAAV,EAAiB/I,IAAjB,EAAuB;AAC5C,MAAM0yB,OAAO,GAAG;AACdC,IAAAA,OAAO,EAAE1E,cADK;AAEdttB,IAAAA,IAAI,EAAEstB,cAFQ;AAGd2E,IAAAA,SAAS,EAAE,KAHG;AAIdvC,IAAAA,aAAa,EAAE,KAJD;AAKdG,IAAAA,aAAa,EAAE,IALD;AAMdqC,IAAAA,GAAG,EAAE;AAAE7yB,MAAAA,IAAI,EAAEA;AAAR,KANS;AAOdowB,IAAAA,IAAI,EAAErnB,KAPQ;AAQdrT,IAAAA,OAAO,EAAE;AARK,GAAhB;AAUA,MAAMo9B,QAAQ,GAAGT,SAAS,CAAC9D,UAAD,EAAavuB,IAAb,CAA1B;AACA0yB,EAAAA,OAAO,CAACG,GAAR,CAAYvC,SAAZ,GAAwBwC,QAAQ,CAACxC,SAAjC;AACAoC,EAAAA,OAAO,CAACG,GAAR,CAAYtC,OAAZ,GAAsBuC,QAAQ,CAACvC,OAA/B;AACAmC,EAAAA,OAAO,CAACp/B,EAAR,GAAaw/B,QAAQ,CAACx/B,EAAtB;AACAo/B,EAAAA,OAAO,CAACJ,UAAR,GAAqB/D,UAArB;AACAmE,EAAAA,OAAO,CAACK,MAAR,GAAiBD,QAAQ,CAACC,MAA1B;AACAL,EAAAA,OAAO,CAACM,IAAR,GAAeF,QAAQ,CAACE,IAAxB;AACAN,EAAAA,OAAO,CAACO,IAAR,GAAeH,QAAQ,CAACG,IAAxB;AACAP,EAAAA,OAAO,CAACQ,SAAR,GAAoBJ,QAAQ,CAACI,SAA7B;AACAR,EAAAA,OAAO,CAACS,KAAR,GAAgB/E,SAAhB;AAEAA,EAAAA,SAAS;AAET,MAAMh0B,GAAG,GAAGo0B,QAAQ,CAAC57B,IAAT,CAAc8/B,OAAd,CAAZ;AAEAnE,EAAAA,UAAU,GAAGmE,OAAO,CAACp/B,EAArB,CA1B4C,CA2B5C;;AACAk/B,EAAAA,MAAM,CAACE,OAAO,CAACp/B,EAAT,CAAN,GAAqB8G,GAAG,GAAG,CAA3B;AACD,CA7BM;AA+BA,IAAM82B,YAAY,GAAG,SAAfA,YAAe,CAAU59B,EAAV,EAAc;AACxC,MAAM8G,GAAG,GAAGo4B,MAAM,CAACl/B,EAAD,CAAlB;AACA,SAAOk7B,QAAQ,CAACp0B,GAAD,CAAf;AACD,CAHM;AAKA,IAAMg5B,UAAU,GAAG,SAAbA,UAAa,CAAUrqB,KAAV,EAAiB/I,IAAjB,EAAuB;AAC/C,MAAMqzB,OAAO,GAAG;AACdV,IAAAA,OAAO,EAAE1E,cADK;AAEdttB,IAAAA,IAAI,EAAEstB,cAFQ;AAGdqF,IAAAA,WAAW,EAAEvqB,KAHC;AAIdqnB,IAAAA,IAAI,EAAErnB,KAJQ;AAKdrT,IAAAA,OAAO,EAAE;AALK,GAAhB;AAOA,MAAMo9B,QAAQ,GAAGf,WAAW,CAACzD,QAAD,EAAWtuB,IAAX,CAA5B;AACAqzB,EAAAA,OAAO,CAAC/C,SAAR,GAAoBwC,QAAQ,CAACxC,SAA7B;AACA+C,EAAAA,OAAO,CAAC9C,OAAR,GAAkBuC,QAAQ,CAACvC,OAA3B;AACA8C,EAAAA,OAAO,CAAC//B,EAAR,GAAaw/B,QAAQ,CAACx/B,EAAtB;AACA+/B,EAAAA,OAAO,CAACN,MAAR,GAAiBD,QAAQ,CAACC,MAA1B;AACAM,EAAAA,OAAO,CAACL,IAAR,GAAeF,QAAQ,CAACE,IAAxB;AACAK,EAAAA,OAAO,CAACJ,IAAR,GAAeH,QAAQ,CAACG,IAAxB;AACAI,EAAAA,OAAO,CAACH,SAAR,GAAoBJ,QAAQ,CAACI,SAA7B;AACA5E,EAAAA,QAAQ,GAAG+E,OAAX;AACArF,EAAAA,KAAK,CAACp7B,IAAN,CAAWygC,OAAX;AACD,CAlBM;;AAoBP,IAAMzD,YAAY,GAAG,SAAfA,YAAe,GAAY;AAC/B,MAAM2D,WAAW,GAAG,SAAdA,WAAc,CAAUn5B,GAAV,EAAe;AACjC,QAAMg2B,IAAI,GAAG5B,QAAQ,CAACp0B,GAAD,CAArB;AACA,QAAIk2B,SAAS,GAAG,EAAhB;;AACA,YAAQ9B,QAAQ,CAACp0B,GAAD,CAAR,CAAcy4B,GAAd,CAAkBvC,SAAlB,CAA4B3vB,IAApC;AACE,WAAK,aAAL;AAAoB;AAClB,cAAMqxB,QAAQ,GAAGd,YAAY,CAACd,IAAI,CAACkC,UAAN,CAA7B;AACAlC,UAAAA,IAAI,CAACE,SAAL,GAAiB0B,QAAQ,CAACzB,OAA1B;AACA;AACD;;AACD,WAAK,cAAL;AACED,QAAAA,SAAS,GAAGM,YAAY,CAAC58B,SAAD,EAAY25B,UAAZ,EAAwBa,QAAQ,CAACp0B,GAAD,CAAR,CAAcy4B,GAAd,CAAkBvC,SAAlB,CAA4BiC,SAApD,CAAxB;;AACA,YAAIjC,SAAJ,EAAe;AACb9B,UAAAA,QAAQ,CAACp0B,GAAD,CAAR,CAAck2B,SAAd,GAA0BA,SAA1B;AACD;;AACD;AAXJ;;AAcA,QAAI9B,QAAQ,CAACp0B,GAAD,CAAR,CAAck2B,SAAlB,EAA6B;AAC3B9B,MAAAA,QAAQ,CAACp0B,GAAD,CAAR,CAAcm2B,OAAd,GAAwBoB,UAAU,CAChCnD,QAAQ,CAACp0B,GAAD,CAAR,CAAck2B,SADkB,EAEhC3C,UAFgC,EAGhCa,QAAQ,CAACp0B,GAAD,CAAR,CAAcy4B,GAAd,CAAkBtC,OAAlB,CAA0BvwB,IAHM,EAIhCmuB,iBAJgC,CAAlC;;AAMA,UAAIK,QAAQ,CAACp0B,GAAD,CAAR,CAAcm2B,OAAlB,EAA2B;AACzB/B,QAAAA,QAAQ,CAACp0B,GAAD,CAAR,CAAcw4B,SAAd,GAA0B,IAA1B;AACApE,QAAAA,QAAQ,CAACp0B,GAAD,CAAR,CAAci2B,aAAd,GAA8B5C,kDAAM,CAClCe,QAAQ,CAACp0B,GAAD,CAAR,CAAcy4B,GAAd,CAAkBtC,OAAlB,CAA0BvwB,IADQ,EAElC,YAFkC,EAGlC,IAHkC,CAAN,CAI5BuxB,OAJ4B,EAA9B;AAKApB,QAAAA,cAAc,CAAC3B,QAAQ,CAACp0B,GAAD,CAAT,EAAgBuzB,UAAhB,EAA4BG,QAA5B,EAAsCD,QAAtC,CAAd;AACD;AACF;;AAED,WAAOW,QAAQ,CAACp0B,GAAD,CAAR,CAAcw4B,SAArB;AACD,GApCD;;AAsCA,MAAIY,YAAY,GAAG,IAAnB;;AACA,OAAK,IAAIpiC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGo9B,QAAQ,CAACn9B,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;AACxCmiC,IAAAA,WAAW,CAACniC,CAAD,CAAX;AAEAoiC,IAAAA,YAAY,GAAGA,YAAY,IAAIhF,QAAQ,CAACp9B,CAAD,CAAR,CAAYwhC,SAA3C;AACD;;AACD,SAAOY,YAAP;AACD,CA9CD;AAgDA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMze,OAAO,GAAG,SAAVA,OAAU,CAAUH,GAAV,EAAe6e,QAAf,EAAyB;AAC9C,MAAIze,OAAO,GAAGye,QAAd;;AACA,MAAIrhB,8CAAA,GAAsBpG,aAAtB,KAAwC,OAA5C,EAAqD;AACnDgJ,IAAAA,OAAO,GAAG0Y,oEAAW,CAAC+F,QAAD,CAArB;AACD;;AACD7e,EAAAA,GAAG,CAAChd,KAAJ,CAAU,GAAV,EAAevF,OAAf,CAAuB,UAAUiB,EAAV,EAAc;AACnC,QAAIo/B,OAAO,GAAGxB,YAAY,CAAC59B,EAAD,CAA1B;;AACA,QAAI,OAAOo/B,OAAP,KAAmB,WAAvB,EAAoC;AAClCgB,MAAAA,OAAO,CAACpgC,EAAD,EAAK,YAAM;AAChB0K,QAAAA,MAAM,CAAC21B,IAAP,CAAY3e,OAAZ,EAAqB,OAArB;AACD,OAFM,CAAP;AAGD;AACF,GAPD;AAQAgT,EAAAA,QAAQ,CAACpT,GAAD,EAAM,WAAN,CAAR;AACD,CAdM;AAgBP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMoT,QAAQ,GAAG,SAAXA,QAAW,CAAUpT,GAAV,EAAe5B,SAAf,EAA0B;AAChD4B,EAAAA,GAAG,CAAChd,KAAJ,CAAU,GAAV,EAAevF,OAAf,CAAuB,UAAUiB,EAAV,EAAc;AACnC,QAAIo/B,OAAO,GAAGxB,YAAY,CAAC59B,EAAD,CAA1B;;AACA,QAAI,OAAOo/B,OAAP,KAAmB,WAAvB,EAAoC;AAClCA,MAAAA,OAAO,CAACh9B,OAAR,CAAgB9C,IAAhB,CAAqBogB,SAArB;AACD;AACF,GALD;AAMD,CAPM;;AASP,IAAMiV,WAAW,GAAG,SAAdA,WAAc,CAAU30B,EAAV,EAAc8hB,YAAd,EAA4BC,YAA5B,EAA0C;AAC5D,MAAIjD,8CAAA,GAAsBpG,aAAtB,KAAwC,OAA5C,EAAqD;AACnD;AACD;;AACD,MAAI,OAAOoJ,YAAP,KAAwB,WAA5B,EAAyC;AACvC;AACD;;AAED,MAAII,OAAO,GAAG,EAAd;;AACA,MAAI,OAAOH,YAAP,KAAwB,QAA5B,EAAsC;AACpC;AACAG,IAAAA,OAAO,GAAGH,YAAY,CAACzd,KAAb,CAAmB,+BAAnB,CAAV;;AACA,SAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGokB,OAAO,CAACnkB,MAA5B,EAAoCD,CAAC,EAArC,EAAyC;AACvC,UAAIqkB,IAAI,GAAGD,OAAO,CAACpkB,CAAD,CAAP,CAAW+G,IAAX,EAAX;AACA;;AACA;;AACA,UAAIsd,IAAI,CAACC,MAAL,CAAY,CAAZ,MAAmB,GAAnB,IAA0BD,IAAI,CAACC,MAAL,CAAYD,IAAI,CAACpkB,MAAL,GAAc,CAA1B,MAAiC,GAA/D,EAAoE;AAClEokB,QAAAA,IAAI,GAAGA,IAAI,CAACf,MAAL,CAAY,CAAZ,EAAee,IAAI,CAACpkB,MAAL,GAAc,CAA7B,CAAP;AACD;;AACDmkB,MAAAA,OAAO,CAACpkB,CAAD,CAAP,GAAaqkB,IAAb;AACD;AACF;AAED;;;AACA,MAAID,OAAO,CAACnkB,MAAR,KAAmB,CAAvB,EAA0B;AACxBmkB,IAAAA,OAAO,CAAC5iB,IAAR,CAAaU,EAAb;AACD;;AAED,MAAIo/B,OAAO,GAAGxB,YAAY,CAAC59B,EAAD,CAA1B;;AACA,MAAI,OAAOo/B,OAAP,KAAmB,WAAvB,EAAoC;AAClCgB,IAAAA,OAAO,CAACpgC,EAAD,EAAK,YAAM;AAChBgF,MAAAA,4DAAA,CAAAA,8CAAK,GAAS8c,YAAT,4BAA0BI,OAA1B,GAAL;AACD,KAFM,CAAP;AAGD;AACF,CAlCD;AAoCA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMke,OAAO,GAAG,SAAVA,OAAU,CAAUpgC,EAAV,EAAcsgC,gBAAd,EAAgC;AAC9ClhB,EAAAA,IAAI,CAAC9f,IAAL,CAAU,YAAY;AACpB;AACA,QAAMqD,IAAI,GAAGa,QAAQ,CAAC6e,aAAT,iBAA+BriB,EAA/B,SAAb;;AACA,QAAI2C,IAAI,KAAK,IAAb,EAAmB;AACjBA,MAAAA,IAAI,CAAC2f,gBAAL,CAAsB,OAAtB,EAA+B,YAAY;AACzCge,QAAAA,gBAAgB;AACjB,OAFD;AAGD;AACF,GARD;AASAlhB,EAAAA,IAAI,CAAC9f,IAAL,CAAU,YAAY;AACpB;AACA,QAAMqD,IAAI,GAAGa,QAAQ,CAAC6e,aAAT,iBAA+BriB,EAA/B,cAAb;;AACA,QAAI2C,IAAI,KAAK,IAAb,EAAmB;AACjBA,MAAAA,IAAI,CAAC2f,gBAAL,CAAsB,OAAtB,EAA+B,YAAY;AACzCge,QAAAA,gBAAgB;AACjB,OAFD;AAGD;AACF,GARD;AASD,CAnBD;AAqBA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMze,aAAa,GAAG,SAAhBA,aAAgB,CAAUP,GAAV,EAAeQ,YAAf,EAA6BC,YAA7B,EAA2C;AACtET,EAAAA,GAAG,CAAChd,KAAJ,CAAU,GAAV,EAAevF,OAAf,CAAuB,UAAUiB,EAAV,EAAc;AACnC20B,IAAAA,WAAW,CAAC30B,EAAD,EAAK8hB,YAAL,EAAmBC,YAAnB,CAAX;AACD,GAFD;AAGA2S,EAAAA,QAAQ,CAACpT,GAAD,EAAM,WAAN,CAAR;AACD,CALM;AAOP;AACA;AACA;AACA;AACA;;AACO,IAAMkB,aAAa,GAAG,SAAhBA,aAAgB,CAAUlK,OAAV,EAAmB;AAC9C8G,EAAAA,IAAI,CAACrgB,OAAL,CAAa,UAAU0jB,GAAV,EAAe;AAC1BA,IAAAA,GAAG,CAACnK,OAAD,CAAH;AACD,GAFD;AAGD,CAJM;AAMP,iEAAe;AACb+G,EAAAA,cAAc,EAAdA,cADa;AAEb1gB,EAAAA,SAAS,EAAE;AAAA,WAAMmgB,8CAAA,GAAsBzD,KAA5B;AAAA,GAFE;AAGbtY,EAAAA,KAAK,EAALA,KAHa;AAIbw4B,EAAAA,aAAa,EAAbA,aAJa;AAKbK,EAAAA,aAAa,EAAbA,aALa;AAMbJ,EAAAA,uBAAuB,EAAvBA,uBANa;AAObC,EAAAA,oBAAoB,EAApBA,oBAPa;AAQbC,EAAAA,aAAa,EAAbA,aARa;AASbC,EAAAA,cAAc,EAAdA,cATa;AAUbR,EAAAA,aAAa,EAAbA,aAVa;AAWbC,EAAAA,aAAa,EAAbA,aAXa;AAYbC,EAAAA,cAAc,EAAdA,cAZa;AAabC,EAAAA,cAAc,EAAdA,cAba;AAcb5N,EAAAA,QAAQ,EAARA,QAda;AAebC,EAAAA,QAAQ,EAARA,QAfa;AAgBbuO,EAAAA,UAAU,EAAVA,UAhBa;AAiBbC,EAAAA,WAAW,EAAXA,WAjBa;AAkBbC,EAAAA,QAAQ,EAARA,QAlBa;AAmBb+C,EAAAA,OAAO,EAAPA,OAnBa;AAoBbvB,EAAAA,YAAY,EAAZA,YApBa;AAqBbkC,EAAAA,UAAU,EAAVA,UArBa;AAsBbjE,EAAAA,WAAW,EAAXA,WAtBa;AAuBbE,EAAAA,WAAW,EAAXA,WAvBa;AAwBbC,EAAAA,WAAW,EAAXA,WAxBa;AAyBbC,EAAAA,WAAW,EAAXA,WAzBa;AA0Bbpa,EAAAA,aAAa,EAAbA,aA1Ba;AA2BbJ,EAAAA,OAAO,EAAPA,OA3Ba;AA4Bbe,EAAAA,aAAa,EAAbA,aA5Ba;AA6Bb0b,EAAAA,cAAc,EAAdA,cA7Ba;AA8BbzB,EAAAA,aAAa,EAAbA;AA9Ba,CAAf;AAiCA;AACA;AACA;AACA;AACA;;AACA,SAASoC,WAAT,CAAqBnyB,IAArB,EAA2BowB,IAA3B,EAAiClC,IAAjC,EAAuC;AACrC,MAAI2F,UAAU,GAAG,IAAjB;;AACA,SAAOA,UAAP,EAAmB;AACjBA,IAAAA,UAAU,GAAG,KAAb;AACA3F,IAAAA,IAAI,CAAC77B,OAAL,CAAa,UAAUyhC,CAAV,EAAa;AACxB,UAAMn2B,OAAO,GAAG,UAAUm2B,CAAV,GAAc,OAA9B;AACA,UAAMC,KAAK,GAAG,IAAIC,MAAJ,CAAWr2B,OAAX,CAAd;;AACA,UAAIqC,IAAI,CAAC,CAAD,CAAJ,CAAQ6U,KAAR,CAAckf,KAAd,CAAJ,EAA0B;AACxB3D,QAAAA,IAAI,CAAC0D,CAAD,CAAJ,GAAU,IAAV;AACA9zB,QAAAA,IAAI,CAACi0B,KAAL,CAAW,CAAX;AACAJ,QAAAA,UAAU,GAAG,IAAb;AACD;AACF,KARD;AASD;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5pBD;AACA;AAWA;AACA;AACA;AACA;AACA;AAEApc,oDAAA,GAAY+c,gDAAZ;AACO,IAAM9a,OAAO,GAAG,SAAVA,OAAU,GAAY,CACjC;AACA;AACA;AACA;AACD,CALM;AAMP,IAAI5e,CAAJ;AACO,IAAMsf,IAAI,GAAG,SAAPA,IAAO,CAAUxmB,IAAV,EAAgBN,EAAhB,EAAoB;AACtC,MAAM1B,IAAI,GAAGK,kDAAS,GAAG0c,KAAzB;AACA8I,EAAAA,0DAAA;AACAA,EAAAA,uDAAA,CAAa7jB,IAAb;AAEA,MAAMqC,IAAI,GAAGa,QAAQ,CAAC29B,cAAT,CAAwBnhC,EAAxB,CAAb;AACAwH,EAAAA,CAAC,GAAG7E,IAAI,CAACy+B,aAAL,CAAmBC,WAAvB;;AAEA,MAAI,OAAO75B,CAAP,KAAa,WAAjB,EAA8B;AAC5BA,IAAAA,CAAC,GAAG,IAAJ;AACD;;AAED,MAAI,OAAOlJ,IAAI,CAAC2d,QAAZ,KAAyB,WAA7B,EAA0C;AACxCzU,IAAAA,CAAC,GAAGlJ,IAAI,CAAC2d,QAAT;AACD;;AAED,MAAMqlB,SAAS,GAAGnd,6DAAA,EAAlB,CAhBsC,CAkBtC;;AACA,MAAM1c,CAAC,GAAG65B,SAAS,CAACvjC,MAAV,IAAoBO,IAAI,CAACid,SAAL,GAAiBjd,IAAI,CAACkd,MAA1C,IAAoD,IAAIld,IAAI,CAACmd,UAAvE,CAnBsC,CAqBtC;;AACA9Y,EAAAA,IAAI,CAACyB,YAAL,CAAkB,SAAlB,EAA6B,SAASoD,CAAT,GAAa,GAAb,GAAmBC,CAAhD;AACA,MAAM2b,GAAG,GAAG1jB,0CAAM,iBAASM,EAAT,SAAlB,CAvBsC,CAyBtC;;AACA,MAAMuhC,SAAS,GAAGX,6CAAS,GACxBY,MADe,CACR,CACNtxB,uCAAG,CAACoxB,SAAD,EAAY,UAAUtjC,CAAV,EAAa;AAC1B,WAAOA,CAAC,CAACg/B,SAAT;AACD,GAFE,CADG,EAIN7M,uCAAG,CAACmR,SAAD,EAAY,UAAUtjC,CAAV,EAAa;AAC1B,WAAOA,CAAC,CAACi/B,OAAT;AACD,GAFE,CAJG,CADQ,EASfwE,UATe,CASJ,CAAC,CAAD,EAAIj6B,CAAC,GAAGlJ,IAAI,CAACqd,WAAT,GAAuBrd,IAAI,CAACod,YAAhC,CATI,CAAlB;AAWA,MAAIgmB,UAAU,GAAG,EAAjB;;AAEA,OAAK,IAAI5jC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwjC,SAAS,CAACvjC,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;AACzC4jC,IAAAA,UAAU,CAACpiC,IAAX,CAAgBgiC,SAAS,CAACxjC,CAAD,CAAT,CAAauP,IAA7B;AACD;;AAED,MAAMs0B,cAAc,GAAGD,UAAvB,CA3CsC,CA2CH;;AAEnCA,EAAAA,UAAU,GAAGE,WAAW,CAACF,UAAD,CAAxB;AAEA;AACF;AACA;AACA;;AACE,WAASG,WAAT,CAAqBxM,CAArB,EAAwByM,CAAxB,EAA2B;AACzB,QAAMC,KAAK,GAAG1M,CAAC,CAAC2H,SAAhB;AACA,QAAMgF,KAAK,GAAGF,CAAC,CAAC9E,SAAhB;AACA,QAAItpB,MAAM,GAAG,CAAb;;AACA,QAAIquB,KAAK,GAAGC,KAAZ,EAAmB;AACjBtuB,MAAAA,MAAM,GAAG,CAAT;AACD,KAFD,MAEO,IAAIquB,KAAK,GAAGC,KAAZ,EAAmB;AACxBtuB,MAAAA,MAAM,GAAG,CAAC,CAAV;AACD;;AACD,WAAOA,MAAP;AACD,GA7DqC,CA+DtC;AACA;;;AACA4tB,EAAAA,SAAS,CAACjxB,IAAV,CAAewxB,WAAf;AAEAI,EAAAA,QAAQ,CAACX,SAAD,EAAY95B,CAAZ,EAAeC,CAAf,CAAR;AAEA+c,EAAAA,wDAAgB,CAACpB,GAAD,EAAM3b,CAAN,EAASD,CAAT,EAAYlJ,IAAI,CAAC2a,WAAjB,CAAhB;AAEAmK,EAAAA,GAAG,CACA9gB,MADH,CACU,MADV,EAEGhC,IAFH,CAEQ6jB,6DAAA,EAFR,EAGGhkB,IAHH,CAGQ,GAHR,EAGaqH,CAAC,GAAG,CAHjB,EAIGrH,IAJH,CAIQ,GAJR,EAIa7B,IAAI,CAACgd,cAJlB,EAKGnb,IALH,CAKQ,OALR,EAKiB,WALjB;AAOA;AACF;AACA;AACA;AACA;;AACE,WAAS8hC,QAAT,CAAkBvH,KAAlB,EAAyBwH,SAAzB,EAAoCC,UAApC,EAAgD;AAC9C,QAAM5mB,SAAS,GAAGjd,IAAI,CAACid,SAAvB;AACA,QAAM6mB,GAAG,GAAG7mB,SAAS,GAAGjd,IAAI,CAACkd,MAA7B;AACA,QAAMC,UAAU,GAAGnd,IAAI,CAACmd,UAAxB;AACA,QAAME,WAAW,GAAGrd,IAAI,CAACqd,WAAzB;AAEA,QAAM0mB,UAAU,GAAGxB,+CAAW,GAC3BW,MADgB,CACT,CAAC,CAAD,EAAIE,UAAU,CAAC3jC,MAAf,CADS,EAEhBukC,KAFgB,CAEV,CAAC,SAAD,EAAY,SAAZ,CAFU,EAGhBzc,WAHgB,CAGJib,8CAHI,CAAnB;AAKAyB,IAAAA,eAAe,CACbH,GADa,EAEb3mB,UAFa,EAGbE,WAHa,EAIbumB,SAJa,EAKbC,UALa,EAMbzH,KANa,EAObvW,gEAAA,EAPa,EAQbA,gEAAA,EARa,CAAf;AAUAqe,IAAAA,QAAQ,CAAC7mB,WAAD,EAAcF,UAAd,EAA0BymB,SAA1B,EAAqCC,UAArC,CAAR;AACAM,IAAAA,SAAS,CAAC/H,KAAD,EAAQ0H,GAAR,EAAa3mB,UAAb,EAAyBE,WAAzB,EAAsCJ,SAAtC,EAAiD8mB,UAAjD,EAA6DH,SAA7D,EAAwEC,UAAxE,CAAT;AACAO,IAAAA,UAAU,CAACN,GAAD,EAAM3mB,UAAN,EAAkBE,WAAlB,EAA+BJ,SAA/B,EAA0C8mB,UAA1C,CAAV;AACAM,IAAAA,SAAS,CAAChnB,WAAD,EAAcF,UAAd,EAA0BymB,SAA1B,EAAqCC,UAArC,CAAT;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,WAASM,SAAT,CAAmBG,QAAnB,EAA6BC,MAA7B,EAAqCC,SAArC,EAAgDC,UAAhD,EAA4DC,YAA5D,EAA0EC,aAA1E,EAAyFz7B,CAAzF,EAA4F;AAC1F;AACA4b,IAAAA,GAAG,CACA9gB,MADH,CACU,GADV,EAEG+gB,SAFH,CAEa,MAFb,EAGG3W,IAHH,CAGQk2B,QAHR,EAIGM,KAJH,GAKG5gC,MALH,CAKU,MALV,EAMGnC,IANH,CAMQ,GANR,EAMa,CANb,EAOGA,IAPH,CAOQ,GAPR,EAOa,UAAUnC,CAAV,EAAaF,CAAb,EAAgB;AACzB;AACAA,MAAAA,CAAC,GAAGE,CAAC,CAAC6hC,KAAN;AACA,aAAO/hC,CAAC,GAAG+kC,MAAJ,GAAaC,SAAb,GAAyB,CAAhC;AACD,KAXH,EAYG3iC,IAZH,CAYQ,OAZR,EAYiB,YAAY;AACzB,aAAOqH,CAAC,GAAGlJ,IAAI,CAACod,YAAL,GAAoB,CAA/B;AACD,KAdH,EAeGvb,IAfH,CAeQ,QAfR,EAekB0iC,MAflB,EAgBG1iC,IAhBH,CAgBQ,OAhBR,EAgBiB,UAAUnC,CAAV,EAAa;AAC1B,WAAK,IAAIF,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAG4jC,UAAU,CAAC3jC,MAA/B,EAAuCD,EAAC,EAAxC,EAA4C;AAC1C,YAAIE,CAAC,CAACqP,IAAF,KAAWq0B,UAAU,CAAC5jC,EAAD,CAAzB,EAA8B;AAC5B,iBAAO,oBAAqBA,EAAC,GAAGQ,IAAI,CAACwd,mBAArC;AACD;AACF;;AACD,aAAO,kBAAP;AACD,KAvBH,EAF0F,CA2B1F;;AACA,QAAMqnB,UAAU,GAAG/f,GAAG,CAAC9gB,MAAJ,CAAW,GAAX,EAAgB+gB,SAAhB,CAA0B,MAA1B,EAAkC3W,IAAlC,CAAuCk2B,QAAvC,EAAiDM,KAAjD,EAAnB;AAEAC,IAAAA,UAAU,CACP7gC,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,IAFR,EAEc,UAAUnC,CAAV,EAAa;AACvB,aAAOA,CAAC,CAACgC,EAAT;AACD,KAJH,EAKGG,IALH,CAKQ,IALR,EAKc,CALd,EAMGA,IANH,CAMQ,IANR,EAMc,CANd,EAOGA,IAPH,CAOQ,GAPR,EAOa,UAAUnC,CAAV,EAAa;AACtB,UAAIA,CAAC,CAAC4hC,SAAN,EAAiB;AACf,eACE2B,SAAS,CAACvjC,CAAC,CAACg/B,SAAH,CAAT,GACA+F,UADA,GAEA,OAAOxB,SAAS,CAACvjC,CAAC,CAACi/B,OAAH,CAAT,GAAuBsE,SAAS,CAACvjC,CAAC,CAACg/B,SAAH,CAAvC,CAFA,GAGA,MAAMgG,YAJR;AAMD;;AACD,aAAOzB,SAAS,CAACvjC,CAAC,CAACg/B,SAAH,CAAT,GAAyB+F,UAAhC;AACD,KAjBH,EAkBG5iC,IAlBH,CAkBQ,GAlBR,EAkBa,UAAUnC,CAAV,EAAaF,CAAb,EAAgB;AACzB;AACAA,MAAAA,CAAC,GAAGE,CAAC,CAAC6hC,KAAN;AACA,aAAO/hC,CAAC,GAAG+kC,MAAJ,GAAaC,SAApB;AACD,KAtBH,EAuBG3iC,IAvBH,CAuBQ,OAvBR,EAuBiB,UAAUnC,CAAV,EAAa;AAC1B,UAAIA,CAAC,CAAC4hC,SAAN,EAAiB;AACf,eAAOoD,YAAP;AACD;;AACD,aAAOzB,SAAS,CAACvjC,CAAC,CAACk/B,aAAF,IAAmBl/B,CAAC,CAACi/B,OAAtB,CAAT,GAA0CsE,SAAS,CAACvjC,CAAC,CAACg/B,SAAH,CAA1D;AACD,KA5BH,EA6BG78B,IA7BH,CA6BQ,QA7BR,EA6BkB6iC,YA7BlB,EA8BG7iC,IA9BH,CA8BQ,kBA9BR,EA8B4B,UAAUnC,CAAV,EAAaF,CAAb,EAAgB;AACxC;AACAA,MAAAA,CAAC,GAAGE,CAAC,CAAC6hC,KAAN;AAEA,aACE,CACE0B,SAAS,CAACvjC,CAAC,CAACg/B,SAAH,CAAT,GACA+F,UADA,GAEA,OAAOxB,SAAS,CAACvjC,CAAC,CAACi/B,OAAH,CAAT,GAAuBsE,SAAS,CAACvjC,CAAC,CAACg/B,SAAH,CAAvC,CAHF,EAIEoG,QAJF,KAKA,KALA,GAMA,CAACtlC,CAAC,GAAG+kC,MAAJ,GAAaC,SAAb,GAAyB,MAAME,YAAhC,EAA8CI,QAA9C,EANA,GAOA,IARF;AAUD,KA5CH,EA6CGjjC,IA7CH,CA6CQ,OA7CR,EA6CiB,UAAUnC,CAAV,EAAa;AAC1B,UAAMkK,GAAG,GAAG,MAAZ;AAEA,UAAI8vB,QAAQ,GAAG,EAAf;;AACA,UAAIh6B,CAAC,CAACoE,OAAF,CAAUrE,MAAV,GAAmB,CAAvB,EAA0B;AACxBi6B,QAAAA,QAAQ,GAAGh6B,CAAC,CAACoE,OAAF,CAAUkS,IAAV,CAAe,GAAf,CAAX;AACD;;AAED,UAAI+uB,MAAM,GAAG,CAAb;;AACA,WAAK,IAAIvlC,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAG4jC,UAAU,CAAC3jC,MAA/B,EAAuCD,GAAC,EAAxC,EAA4C;AAC1C,YAAIE,CAAC,CAACqP,IAAF,KAAWq0B,UAAU,CAAC5jC,GAAD,CAAzB,EAA8B;AAC5BulC,UAAAA,MAAM,GAAGvlC,GAAC,GAAGQ,IAAI,CAACwd,mBAAlB;AACD;AACF;;AAED,UAAIwnB,SAAS,GAAG,EAAhB;;AACA,UAAItlC,CAAC,CAACyhC,MAAN,EAAc;AACZ,YAAIzhC,CAAC,CAAC2hC,IAAN,EAAY;AACV2D,UAAAA,SAAS,IAAI,aAAb;AACD,SAFD,MAEO;AACLA,UAAAA,SAAS,GAAG,SAAZ;AACD;AACF,OAND,MAMO,IAAItlC,CAAC,CAAC0hC,IAAN,EAAY;AACjB,YAAI1hC,CAAC,CAAC2hC,IAAN,EAAY;AACV2D,UAAAA,SAAS,GAAG,WAAZ;AACD,SAFD,MAEO;AACLA,UAAAA,SAAS,GAAG,OAAZ;AACD;AACF,OANM,MAMA;AACL,YAAItlC,CAAC,CAAC2hC,IAAN,EAAY;AACV2D,UAAAA,SAAS,IAAI,OAAb;AACD;AACF;;AAED,UAAIA,SAAS,CAACvlC,MAAV,KAAqB,CAAzB,EAA4B;AAC1BulC,QAAAA,SAAS,GAAG,OAAZ;AACD;;AAED,UAAItlC,CAAC,CAAC4hC,SAAN,EAAiB;AACf0D,QAAAA,SAAS,GAAG,gBAAgBA,SAA5B;AACD;;AAEDA,MAAAA,SAAS,IAAID,MAAb;AAEAC,MAAAA,SAAS,IAAI,MAAMtL,QAAnB;AAEA,aAAO9vB,GAAG,GAAGo7B,SAAb;AACD,KA5FH,EA9B0F,CA4H1F;;AACAH,IAAAA,UAAU,CACP7gC,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,IAFR,EAEc,UAAUnC,CAAV,EAAa;AACvB,aAAOA,CAAC,CAACgC,EAAF,GAAO,OAAd;AACD,KAJH,EAKGM,IALH,CAKQ,UAAUtC,CAAV,EAAa;AACjB,aAAOA,CAAC,CAAC8+B,IAAT;AACD,KAPH,EAQG38B,IARH,CAQQ,WARR,EAQqB7B,IAAI,CAAC2c,QAR1B,EASG9a,IATH,CASQ,GATR,EASa,UAAUnC,CAAV,EAAa;AACtB,UAAIulC,MAAM,GAAGhC,SAAS,CAACvjC,CAAC,CAACg/B,SAAH,CAAtB;AACA,UAAIwG,IAAI,GAAGjC,SAAS,CAACvjC,CAAC,CAACk/B,aAAF,IAAmBl/B,CAAC,CAACi/B,OAAtB,CAApB;;AACA,UAAIj/B,CAAC,CAAC4hC,SAAN,EAAiB;AACf2D,QAAAA,MAAM,IAAI,OAAOhC,SAAS,CAACvjC,CAAC,CAACi/B,OAAH,CAAT,GAAuBsE,SAAS,CAACvjC,CAAC,CAACg/B,SAAH,CAAvC,IAAwD,MAAMgG,YAAxE;AACD;;AACD,UAAIhlC,CAAC,CAAC4hC,SAAN,EAAiB;AACf4D,QAAAA,IAAI,GAAGD,MAAM,GAAGP,YAAhB;AACD;;AACD,UAAMS,SAAS,GAAG,KAAK7iC,OAAL,GAAeO,KAAjC,CATsB,CAWtB;;AACA,UAAIsiC,SAAS,GAAGD,IAAI,GAAGD,MAAvB,EAA+B;AAC7B,YAAIC,IAAI,GAAGC,SAAP,GAAmB,MAAMnlC,IAAI,CAACqd,WAA9B,GAA4CnU,CAAhD,EAAmD;AACjD,iBAAO+7B,MAAM,GAAGR,UAAT,GAAsB,CAA7B;AACD,SAFD,MAEO;AACL,iBAAOS,IAAI,GAAGT,UAAP,GAAoB,CAA3B;AACD;AACF,OAND,MAMO;AACL,eAAO,CAACS,IAAI,GAAGD,MAAR,IAAkB,CAAlB,GAAsBA,MAAtB,GAA+BR,UAAtC;AACD;AACF,KA9BH,EA+BG5iC,IA/BH,CA+BQ,GA/BR,EA+Ba,UAAUnC,CAAV,EAAaF,CAAb,EAAgB;AACzB;AACAA,MAAAA,CAAC,GAAGE,CAAC,CAAC6hC,KAAN;AACA,aAAO/hC,CAAC,GAAG+kC,MAAJ,GAAavkC,IAAI,CAACid,SAAL,GAAiB,CAA9B,IAAmCjd,IAAI,CAAC2c,QAAL,GAAgB,CAAhB,GAAoB,CAAvD,IAA4D6nB,SAAnE;AACD,KAnCH,EAoCG3iC,IApCH,CAoCQ,aApCR,EAoCuB6iC,YApCvB,EAqCG7iC,IArCH,CAqCQ,OArCR,EAqCiB,UAAUnC,CAAV,EAAa;AAC1B,UAAMulC,MAAM,GAAGhC,SAAS,CAACvjC,CAAC,CAACg/B,SAAH,CAAxB;AACA,UAAIwG,IAAI,GAAGjC,SAAS,CAACvjC,CAAC,CAACi/B,OAAH,CAApB;;AACA,UAAIj/B,CAAC,CAAC4hC,SAAN,EAAiB;AACf4D,QAAAA,IAAI,GAAGD,MAAM,GAAGP,YAAhB;AACD;;AACD,UAAMS,SAAS,GAAG,KAAK7iC,OAAL,GAAeO,KAAjC;AAEA,UAAI62B,QAAQ,GAAG,EAAf;;AACA,UAAIh6B,CAAC,CAACoE,OAAF,CAAUrE,MAAV,GAAmB,CAAvB,EAA0B;AACxBi6B,QAAAA,QAAQ,GAAGh6B,CAAC,CAACoE,OAAF,CAAUkS,IAAV,CAAe,GAAf,CAAX;AACD;;AAED,UAAI+uB,MAAM,GAAG,CAAb;;AACA,WAAK,IAAIvlC,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAG4jC,UAAU,CAAC3jC,MAA/B,EAAuCD,GAAC,EAAxC,EAA4C;AAC1C,YAAIE,CAAC,CAACqP,IAAF,KAAWq0B,UAAU,CAAC5jC,GAAD,CAAzB,EAA8B;AAC5BulC,UAAAA,MAAM,GAAGvlC,GAAC,GAAGQ,IAAI,CAACwd,mBAAlB;AACD;AACF;;AAED,UAAI4nB,QAAQ,GAAG,EAAf;;AACA,UAAI1lC,CAAC,CAACyhC,MAAN,EAAc;AACZ,YAAIzhC,CAAC,CAAC2hC,IAAN,EAAY;AACV+D,UAAAA,QAAQ,GAAG,mBAAmBL,MAA9B;AACD,SAFD,MAEO;AACLK,UAAAA,QAAQ,GAAG,eAAeL,MAA1B;AACD;AACF;;AAED,UAAIrlC,CAAC,CAAC0hC,IAAN,EAAY;AACV,YAAI1hC,CAAC,CAAC2hC,IAAN,EAAY;AACV+D,UAAAA,QAAQ,GAAGA,QAAQ,GAAG,eAAX,GAA6BL,MAAxC;AACD,SAFD,MAEO;AACLK,UAAAA,QAAQ,GAAGA,QAAQ,GAAG,WAAX,GAAyBL,MAApC;AACD;AACF,OAND,MAMO;AACL,YAAIrlC,CAAC,CAAC2hC,IAAN,EAAY;AACV+D,UAAAA,QAAQ,GAAGA,QAAQ,GAAG,WAAX,GAAyBL,MAApC;AACD;AACF;;AAED,UAAIrlC,CAAC,CAAC4hC,SAAN,EAAiB;AACf8D,QAAAA,QAAQ,IAAI,gBAAZ;AACD,OA3CyB,CA6C1B;;;AACA,UAAID,SAAS,GAAGD,IAAI,GAAGD,MAAvB,EAA+B;AAC7B,YAAIC,IAAI,GAAGC,SAAP,GAAmB,MAAMnlC,IAAI,CAACqd,WAA9B,GAA4CnU,CAAhD,EAAmD;AACjD,iBAAOwwB,QAAQ,GAAG,sCAAX,GAAoDqL,MAApD,GAA6D,GAA7D,GAAmEK,QAA1E;AACD,SAFD,MAEO;AACL,iBACE1L,QAAQ,GACR,uCADA,GAEAqL,MAFA,GAGA,GAHA,GAIAK,QAJA,GAKA,SALA,GAMAD,SAPF;AASD;AACF,OAdD,MAcO;AACL,eAAOzL,QAAQ,GAAG,oBAAX,GAAkCqL,MAAlC,GAA2C,GAA3C,GAAiDK,QAAjD,GAA4D,SAA5D,GAAwED,SAA/E;AACD;AACF,KApGH;AAqGD;AACD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,WAASlB,eAAT,CAAyBM,MAAzB,EAAiCC,SAAjC,EAA4CC,UAA5C,EAAwDv7B,CAAxD,EAA2DC,CAA3D,EAA8DizB,KAA9D,EAAqEF,QAArE,EAA+ED,QAA/E,EAAyF;AACvF,QAAMoJ,OAAO,GAAGjJ,KAAK,CAAC9b,MAAN,CACd,UAAC1O,GAAD;AAAA,UAAQ8sB,SAAR,QAAQA,SAAR;AAAA,aAAyB9sB,GAAG,GAAG7I,IAAI,CAAC6I,GAAL,CAASA,GAAT,EAAc8sB,SAAd,CAAH,GAA8BA,SAA1D;AAAA,KADc,EAEd,CAFc,CAAhB;AAIA,QAAM4G,OAAO,GAAGlJ,KAAK,CAAC9b,MAAN,CAAa,UAACuR,GAAD;AAAA,UAAQ8M,OAAR,SAAQA,OAAR;AAAA,aAAuB9M,GAAG,GAAG9oB,IAAI,CAAC8oB,GAAL,CAASA,GAAT,EAAc8M,OAAd,CAAH,GAA4BA,OAAtD;AAAA,KAAb,EAA6E,CAA7E,CAAhB;AACA,QAAM5C,UAAU,GAAGlW,kEAAA,EAAnB;AACA,QAAI,CAACwf,OAAD,IAAY,CAACC,OAAjB,EAA0B;AAE1B,QAAMC,aAAa,GAAG,EAAtB;AACA,QAAIvB,KAAK,GAAG,IAAZ;AACA,QAAItkC,CAAC,GAAGm8B,kDAAM,CAACwJ,OAAD,CAAd;;AACA,WAAO3lC,CAAC,CAAC8lC,OAAF,MAAeF,OAAtB,EAA+B;AAC7B,UAAIzf,kEAAA,CAAwBnmB,CAAxB,EAA2Bq8B,UAA3B,EAAuCG,QAAvC,EAAiDD,QAAjD,CAAJ,EAAgE;AAC9D,YAAI,CAAC+H,KAAL,EAAY;AACVA,UAAAA,KAAK,GAAG;AACN1sB,YAAAA,KAAK,EAAE5X,CAAC,CAAC+lC,KAAF,EADD;AAENjuB,YAAAA,GAAG,EAAE9X,CAAC,CAAC+lC,KAAF;AAFC,WAAR;AAID,SALD,MAKO;AACLzB,UAAAA,KAAK,CAACxsB,GAAN,GAAY9X,CAAC,CAAC+lC,KAAF,EAAZ;AACD;AACF,OATD,MASO;AACL,YAAIzB,KAAJ,EAAW;AACTuB,UAAAA,aAAa,CAACvkC,IAAd,CAAmBgjC,KAAnB;AACAA,UAAAA,KAAK,GAAG,IAAR;AACD;AACF;;AACDtkC,MAAAA,CAAC,CAAC07B,GAAF,CAAM,CAAN,EAAS,GAAT;AACD;;AAED,QAAMyJ,UAAU,GAAG/f,GAAG,CAAC9gB,MAAJ,CAAW,GAAX,EAAgB+gB,SAAhB,CAA0B,MAA1B,EAAkC3W,IAAlC,CAAuCm3B,aAAvC,EAAsDX,KAAtD,EAAnB;AAEAC,IAAAA,UAAU,CACP7gC,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,IAFR,EAEc,UAAUnC,CAAV,EAAa;AACvB,aAAO,aAAaA,CAAC,CAAC4X,KAAF,CAAQ+mB,MAAR,CAAe,YAAf,CAApB;AACD,KAJH,EAKGx8B,IALH,CAKQ,GALR,EAKa,UAAUnC,CAAV,EAAa;AACtB,aAAOujC,SAAS,CAACvjC,CAAC,CAAC4X,KAAH,CAAT,GAAqBmtB,UAA5B;AACD,KAPH,EAQG5iC,IARH,CAQQ,GARR,EAQa7B,IAAI,CAACsd,oBARlB,EASGzb,IATH,CASQ,OATR,EASiB,UAAUnC,CAAV,EAAa;AAC1B,UAAMgmC,SAAS,GAAGhmC,CAAC,CAAC8X,GAAF,CAAMiuB,KAAN,GAAcrK,GAAd,CAAkB,CAAlB,EAAqB,KAArB,CAAlB;AACA,aAAO6H,SAAS,CAACyC,SAAD,CAAT,GAAuBzC,SAAS,CAACvjC,CAAC,CAAC4X,KAAH,CAAvC;AACD,KAZH,EAaGzV,IAbH,CAaQ,QAbR,EAakBsH,CAAC,GAAGq7B,SAAJ,GAAgBxkC,IAAI,CAACsd,oBAbvC,EAcGzb,IAdH,CAcQ,kBAdR,EAc4B,UAAUnC,CAAV,EAAaF,CAAb,EAAgB;AACxC,aACE,CACEyjC,SAAS,CAACvjC,CAAC,CAAC4X,KAAH,CAAT,GACAmtB,UADA,GAEA,OAAOxB,SAAS,CAACvjC,CAAC,CAAC8X,GAAH,CAAT,GAAmByrB,SAAS,CAACvjC,CAAC,CAAC4X,KAAH,CAAnC,CAHF,EAIEwtB,QAJF,KAKA,KALA,GAMA,CAACtlC,CAAC,GAAG+kC,MAAJ,GAAa,MAAMp7B,CAApB,EAAuB27B,QAAvB,EANA,GAOA,IARF;AAUD,KAzBH,EA0BGjjC,IA1BH,CA0BQ,OA1BR,EA0BiB,eA1BjB;AA2BD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACE,WAASqiC,QAAT,CAAkBO,UAAlB,EAA8BD,SAA9B,EAAyCt7B,CAAzC,EAA4CC,CAA5C,EAA+C;AAC7C,QAAIw8B,WAAW,GAAGlD,8CAAU,CAACQ,SAAD,CAAV,CACf2C,QADe,CACN,CAACz8B,CAAD,GAAKq7B,SAAL,GAAiBxkC,IAAI,CAACsd,oBADhB,EAEfuoB,UAFe,CAEJlD,8CAAU,CAAC9c,kEAAA,MAA6B7lB,IAAI,CAACyd,UAAlC,IAAgD,UAAjD,CAFN,CAAlB;AAIAqH,IAAAA,GAAG,CACA9gB,MADH,CACU,GADV,EAEGnC,IAFH,CAEQ,OAFR,EAEiB,MAFjB,EAGGA,IAHH,CAGQ,WAHR,EAGqB,eAAe4iC,UAAf,GAA4B,IAA5B,IAAoCt7B,CAAC,GAAG,EAAxC,IAA8C,GAHnE,EAIG28B,IAJH,CAIQH,WAJR,EAKG5gB,SALH,CAKa,MALb,EAMG3hB,KANH,CAMS,aANT,EAMwB,QANxB,EAOGvB,IAPH,CAOQ,MAPR,EAOgB,MAPhB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGA,IATH,CASQ,WATR,EASqB,EATrB,EAUGA,IAVH,CAUQ,IAVR,EAUc,KAVd;;AAYA,QAAI+gC,+DAAA,MAA4B5iC,IAAI,CAAC0d,OAArC,EAA8C;AAC5C,UAAIqoB,QAAQ,GAAGrD,2CAAO,CAACO,SAAD,CAAP,CACZ2C,QADY,CACH,CAACz8B,CAAD,GAAKq7B,SAAL,GAAiBxkC,IAAI,CAACsd,oBADnB,EAEZuoB,UAFY,CAEDlD,8CAAU,CAAC9c,kEAAA,MAA6B7lB,IAAI,CAACyd,UAAlC,IAAgD,UAAjD,CAFT,CAAf;AAIAqH,MAAAA,GAAG,CACA9gB,MADH,CACU,GADV,EAEGnC,IAFH,CAEQ,OAFR,EAEiB,MAFjB,EAGGA,IAHH,CAGQ,WAHR,EAGqB,eAAe4iC,UAAf,GAA4B,IAA5B,GAAmCD,SAAnC,GAA+C,GAHpE,EAIGsB,IAJH,CAIQC,QAJR,EAKGhhB,SALH,CAKa,MALb,EAMG3hB,KANH,CAMS,aANT,EAMwB,QANxB,EAOGvB,IAPH,CAOQ,MAPR,EAOgB,MAPhB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGA,IATH,CASQ,WATR,EASqB,EATrB,EAL4C,CAe5C;AACD;AACF;AAED;AACF;AACA;AACA;;;AACE,WAASuiC,UAAT,CAAoBG,MAApB,EAA4BC,SAA5B,EAAuC;AACrC,QAAMwB,aAAa,GAAG,EAAtB;AACA,QAAIC,OAAO,GAAG,CAAd;;AAEA,SAAK,IAAIzmC,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAG4jC,UAAU,CAAC3jC,MAA/B,EAAuCD,GAAC,EAAxC,EAA4C;AAC1CwmC,MAAAA,aAAa,CAACxmC,GAAD,CAAb,GAAmB,CAAC4jC,UAAU,CAAC5jC,GAAD,CAAX,EAAgB0mC,QAAQ,CAAC9C,UAAU,CAAC5jC,GAAD,CAAX,EAAgB6jC,cAAhB,CAAxB,CAAnB;AACD;;AAEDve,IAAAA,GAAG,CACA9gB,MADH,CACU,GADV,EACe;AADf,KAEG+gB,SAFH,CAEa,MAFb,EAGG3W,IAHH,CAGQ43B,aAHR,EAIGpB,KAJH,GAKG5gC,MALH,CAKU,UAAUtE,CAAV,EAAa;AACnB,UAAMqG,IAAI,GAAGrG,CAAC,CAAC,CAAD,CAAD,CAAKsG,KAAL,CAAWya,qEAAX,CAAb;AACA,UAAMxX,EAAE,GAAG,EAAElD,IAAI,CAACtG,MAAL,GAAc,CAAhB,IAAqB,CAAhC;AAEA,UAAMoG,QAAQ,GAAGX,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,MAAvD,CAAjB;AACAU,MAAAA,QAAQ,CAACC,YAAT,CAAsB,IAAtB,EAA4BmD,EAAE,GAAG,IAAjC;;AAEA,WAAK,IAAI9C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,IAAI,CAACtG,MAAzB,EAAiC0G,CAAC,EAAlC,EAAsC;AACpC,YAAMC,KAAK,GAAGlB,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,OAAvD,CAAd;AACAiB,QAAAA,KAAK,CAACN,YAAN,CAAmB,oBAAnB,EAAyC,SAAzC;AACAM,QAAAA,KAAK,CAACN,YAAN,CAAmB,GAAnB,EAAwB,IAAxB;AACA,YAAIK,CAAC,GAAG,CAAR,EAAWC,KAAK,CAACN,YAAN,CAAmB,IAAnB,EAAyB,KAAzB;AACXM,QAAAA,KAAK,CAACE,WAAN,GAAoBP,IAAI,CAACI,CAAD,CAAxB;AACAN,QAAAA,QAAQ,CAAC5D,WAAT,CAAqBmE,KAArB;AACD;;AACD,aAAOP,QAAP;AACD,KArBH,EAsBGhE,IAtBH,CAsBQ,GAtBR,EAsBa,EAtBb,EAuBGA,IAvBH,CAuBQ,GAvBR,EAuBa,UAAUnC,CAAV,EAAaF,CAAb,EAAgB;AACzB,UAAIA,CAAC,GAAG,CAAR,EAAW;AACT,aAAK,IAAI2G,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG3G,CAApB,EAAuB2G,CAAC,EAAxB,EAA4B;AAC1B8/B,UAAAA,OAAO,IAAID,aAAa,CAACxmC,CAAC,GAAG,CAAL,CAAb,CAAqB,CAArB,CAAX;AACA,iBAAQE,CAAC,CAAC,CAAD,CAAD,GAAO6kC,MAAR,GAAkB,CAAlB,GAAsB0B,OAAO,GAAG1B,MAAhC,GAAyCC,SAAhD;AACD;AACF,OALD,MAKO;AACL,eAAQ9kC,CAAC,CAAC,CAAD,CAAD,GAAO6kC,MAAR,GAAkB,CAAlB,GAAsBC,SAA7B;AACD;AACF,KAhCH,EAiCG3iC,IAjCH,CAiCQ,WAjCR,EAiCqB7B,IAAI,CAACud,eAjC1B,EAkCG1b,IAlCH,CAkCQ,WAlCR,EAkCqB7B,IAAI,CAACud,eAlC1B,EAmCG1b,IAnCH,CAmCQ,OAnCR,EAmCiB,UAAUnC,CAAV,EAAa;AAC1B,WAAK,IAAIF,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAG4jC,UAAU,CAAC3jC,MAA/B,EAAuCD,GAAC,EAAxC,EAA4C;AAC1C,YAAIE,CAAC,CAAC,CAAD,CAAD,KAAS0jC,UAAU,CAAC5jC,GAAD,CAAvB,EAA4B;AAC1B,iBAAO,8BAA+BA,GAAC,GAAGQ,IAAI,CAACwd,mBAA/C;AACD;AACF;;AACD,aAAO,cAAP;AACD,KA1CH;AA2CD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACE,WAAS6mB,SAAT,CAAmBI,UAAnB,EAA+BD,SAA/B,EAA0Ct7B,CAA1C,EAA6CC,CAA7C,EAAgD;AAC9C,QAAM6yB,WAAW,GAAG4G,+DAAA,EAApB;;AACA,QAAI5G,WAAW,KAAK,KAApB,EAA2B;AACzB;AACD;;AAED,QAAMmK,MAAM,GAAGrhB,GAAG,CAAC9gB,MAAJ,CAAW,GAAX,EAAgBnC,IAAhB,CAAqB,OAArB,EAA8B,OAA9B,CAAf;AACA,QAAMukC,KAAK,GAAG,IAAI5G,IAAJ,EAAd;AACA,QAAM6G,SAAS,GAAGF,MAAM,CAACniC,MAAP,CAAc,MAAd,CAAlB;AAEAqiC,IAAAA,SAAS,CACNxkC,IADH,CACQ,IADR,EACcohC,SAAS,CAACmD,KAAD,CAAT,GAAmB3B,UADjC,EAEG5iC,IAFH,CAEQ,IAFR,EAEcohC,SAAS,CAACmD,KAAD,CAAT,GAAmB3B,UAFjC,EAGG5iC,IAHH,CAGQ,IAHR,EAGc7B,IAAI,CAACgd,cAHnB,EAIGnb,IAJH,CAIQ,IAJR,EAIcsH,CAAC,GAAGnJ,IAAI,CAACgd,cAJvB,EAKGnb,IALH,CAKQ,OALR,EAKiB,OALjB;;AAOA,QAAIm6B,WAAW,KAAK,EAApB,EAAwB;AACtBqK,MAAAA,SAAS,CAACxkC,IAAV,CAAe,OAAf,EAAwBm6B,WAAW,CAACt2B,OAAZ,CAAoB,IAApB,EAA0B,GAA1B,CAAxB;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;;;AACE,WAAS49B,WAAT,CAAqBgD,GAArB,EAA0B;AACxB,QAAMC,IAAI,GAAG,EAAb;AACA,QAAMnxB,MAAM,GAAG,EAAf;;AACA,SAAK,IAAI5V,GAAC,GAAG,CAAR,EAAWgqB,CAAC,GAAG8c,GAAG,CAAC7mC,MAAxB,EAAgCD,GAAC,GAAGgqB,CAApC,EAAuC,EAAEhqB,GAAzC,EAA4C;AAC1C,UAAI,CAACX,MAAM,CAAC2nC,SAAP,CAAiBjP,cAAjB,CAAgCuO,IAAhC,CAAqCS,IAArC,EAA2CD,GAAG,CAAC9mC,GAAD,CAA9C,CAAL,EAAyD;AACvD;AACA;AACA+mC,QAAAA,IAAI,CAACD,GAAG,CAAC9mC,GAAD,CAAJ,CAAJ,GAAe,IAAf;AACA4V,QAAAA,MAAM,CAACpU,IAAP,CAAYslC,GAAG,CAAC9mC,GAAD,CAAf;AACD;AACF;;AACD,WAAO4V,MAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACE,WAASqxB,SAAT,CAAmBH,GAAnB,EAAwB;AACtB,QAAI9mC,CAAC,GAAG8mC,GAAG,CAAC7mC,MAAZ,CADsB,CACF;;AACpB,QAAM2gB,GAAG,GAAG,EAAZ,CAFsB,CAEN;;AAChB,WAAO5gB,CAAP,EAAU;AACR4gB,MAAAA,GAAG,CAACkmB,GAAG,CAAC,EAAE9mC,CAAH,CAAJ,CAAH,GAAgB,CAAC4gB,GAAG,CAACkmB,GAAG,CAAC9mC,CAAD,CAAJ,CAAH,IAAe,CAAhB,IAAqB,CAArC,CADQ,CACgC;AACzC;;AACD,WAAO4gB,GAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACE,WAAS8lB,QAAT,CAAkBQ,IAAlB,EAAwBJ,GAAxB,EAA6B;AAC3B,WAAOG,SAAS,CAACH,GAAD,CAAT,CAAeI,IAAf,KAAwB,CAA/B;AACD;AACF,CA7kBM;AA+kBP,iEAAe;AACb5e,EAAAA,OAAO,EAAPA,OADa;AAEbU,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;ACzmBA,IAAMS,SAAS,GAAG,SAAZA,SAAY,CAAC3oB,OAAD;AAAA,8LAONA,OAAO,CAACqmC,eAPF,2GAgBNrmC,OAAO,CAACsmC,eAhBF,gDAoBNtmC,OAAO,CAACumC,gBApBF,8DAyBNvmC,OAAO,CAACwmC,kBAzBF,wEA8BNxmC,OAAO,CAACi7B,UA9BF,qDAkCNj7B,OAAO,CAACi7B,UAlCF,qDAsCNj7B,OAAO,CAACi7B,UAtCF,qDA0CNj7B,OAAO,CAACi7B,UA1CF,qFA+CEj7B,OAAO,CAACymC,aA/CV,wNA0DJzmC,OAAO,CAAC0mC,SA1DJ,oGA8DG1mC,OAAO,CAACS,UA9DX,4BA+DJT,OAAO,CAACg7B,SA/DJ,4IA4EJh7B,OAAO,CAAC2mC,cA5EJ,0VAgGE3mC,OAAO,CAACymC,aAhGV,+DAoGNzmC,OAAO,CAAC4mC,iBApGF,2DAsGE5mC,OAAO,CAACymC,aAtGV,yKA6GNzmC,OAAO,CAAC4mC,iBA7GF,yDA+GE5mC,OAAO,CAACymC,aA/GV,gKAwHNzmC,OAAO,CAAC6mC,sBAxHF,8HA8HN7mC,OAAO,CAAC6mC,sBA9HF,+HAoIN7mC,OAAO,CAAC6mC,sBApIF,mLA8IN7mC,OAAO,CAAC8mC,aA9IF,8EAqJN9mC,OAAO,CAAC+mC,YArJF,4BAsJJ/mC,OAAO,CAACgnC,eAtJJ,iFA4JNhnC,OAAO,CAACinC,oBA5JF,8EAiKNjnC,OAAO,CAACinC,oBAjKF,+GA2KNjnC,OAAO,CAACknC,kBA3KF,4BA4KJlnC,OAAO,CAACmnC,qBA5KJ,sGAmLNnnC,OAAO,CAAC4mC,iBAnLF,uHA6LJ5mC,OAAO,CAAConC,mBA7LJ,0BA8LNpnC,OAAO,CAACqnC,gBA9LF,oHAsMNrnC,OAAO,CAAC4mC,iBAtMF,mIAgNJ5mC,OAAO,CAACsnC,eAhNJ,0BAiNNtnC,OAAO,CAACunC,YAjNF,8HAyNJvnC,OAAO,CAACsnC,eAzNJ,0BA0NNtnC,OAAO,CAACknC,kBA1NF,sHAkOJlnC,OAAO,CAACsnC,eAlOJ,0BAmONtnC,OAAO,CAACqnC,gBAnOF,mTAoPNrnC,OAAO,CAAC4mC,iBApPF,iIA2PN5mC,OAAO,CAAC4mC,iBA3PF,4GAiQN5mC,OAAO,CAACg7B,SAjQF;AAAA,CAAlB;;AAuQA,iEAAerS,SAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvQA;AACA;AACA,IAAI8e,OAAO,GAAG,EAAd;AACA,IAAI98B,IAAI,GAAG,IAAX;AACA,IAAI+8B,QAAQ,GAAG;AAAEC,EAAAA,MAAM,EAAEh9B;AAAV,CAAf;AACA,IAAIi9B,SAAS,GAAG,QAAhB;AACA,IAAIziB,SAAS,GAAG,IAAhB;AACA,IAAI0iB,GAAG,GAAG,CAAV;AAEA;AACA;AACA;;AACA,SAASC,KAAT,GAAiB;AACf,SAAON,8CAAM,CAAC;AAAEroC,IAAAA,MAAM,EAAE;AAAV,GAAD,CAAb;AACD;AAED;AACA;AACA;AACA;;;AACA,SAAS4oC,iBAAT,CAA2BC,aAA3B,EAA0CC,WAA1C,EAAuD;AACrD9pC,EAAAA,8CAAA,CAAU,6BAAV,EAAyC6pC,aAAa,CAAC5mC,EAAvD,EAA2D6mC,WAAW,CAAC7mC,EAAvE;;AACA,SAAO4mC,aAAa,CAACH,GAAd,IAAqBI,WAAW,CAACJ,GAAjC,IAAwCG,aAAa,KAAKC,WAAjE,EAA8E;AAC5E;AACA,QAAIA,WAAW,CAAChnC,MAAZ,IAAsB,IAA1B,EAAgC;;AAChC,QAAI0E,KAAK,CAACC,OAAN,CAAcqiC,WAAW,CAAChnC,MAA1B,CAAJ,EAAuC;AACrC9C,MAAAA,8CAAA,CAAU,kBAAV,EAA8B8pC,WAAW,CAAChnC,MAA1C;AACA,aACE8mC,iBAAiB,CAACC,aAAD,EAAgBP,OAAO,CAACQ,WAAW,CAAChnC,MAAZ,CAAmB,CAAnB,CAAD,CAAvB,CAAjB,IACA8mC,iBAAiB,CAACC,aAAD,EAAgBP,OAAO,CAACQ,WAAW,CAAChnC,MAAZ,CAAmB,CAAnB,CAAD,CAAvB,CAFnB;AAID,KAND,MAMO;AACLgnC,MAAAA,WAAW,GAAGR,OAAO,CAACQ,WAAW,CAAChnC,MAAb,CAArB;AACD;AACF;;AACD9C,EAAAA,8CAAA,CAAU6pC,aAAa,CAAC5mC,EAAxB,EAA4B6mC,WAAW,CAAC7mC,EAAxC;AACA,SAAO4mC,aAAa,CAAC5mC,EAAd,KAAqB6mC,WAAW,CAAC7mC,EAAxC;AACD;AAED;AACA;AACA;AACA;;;AACA,SAAS8mC,eAAT,CAAyBF,aAAzB,EAAwCC,WAAxC,EAAqD;AACnD,MAAME,UAAU,GAAGH,aAAa,CAACH,GAAjC;AACA,MAAMO,QAAQ,GAAGH,WAAW,CAACJ,GAA7B;AACA,MAAIM,UAAU,GAAGC,QAAjB,EAA2B,OAAOL,iBAAiB,CAACE,WAAD,EAAcD,aAAd,CAAxB;AAC3B,SAAO,KAAP;AACD;AAED;AACA;AACA;AACA;;;AACA,SAASK,MAAT,CAAgB/R,IAAhB,EAAsBgS,EAAtB,EAA0B;AACxB,MAAMC,SAAS,GAAGhqC,MAAM,CAACiqC,MAAP,CAAc,IAAd,CAAlB;AACA,SAAOlS,IAAI,CAACtW,MAAL,CAAY,UAACyoB,GAAD,EAAMllB,IAAN,EAAe;AAChC,QAAMnjB,GAAG,GAAGkoC,EAAE,CAAC/kB,IAAD,CAAd;;AACA,QAAI,CAACglB,SAAS,CAACnoC,GAAD,CAAd,EAAqB;AACnBmoC,MAAAA,SAAS,CAACnoC,GAAD,CAAT,GAAiB,IAAjB;AACAqoC,MAAAA,GAAG,CAAC/nC,IAAJ,CAAS6iB,IAAT;AACD;;AACD,WAAOklB,GAAP;AACD,GAPM,EAOJ,EAPI,CAAP;AAQD;;AAEM,IAAMpjB,YAAY,GAAG,SAAfA,YAAe,CAAU7X,GAAV,EAAe;AACzC2X,EAAAA,SAAS,GAAG3X,GAAZ;AACD,CAFM;AAGP,IAAIxN,OAAO,GAAG,EAAd;AACO,IAAM0oC,UAAU,GAAG,SAAbA,UAAa,CAAUC,YAAV,EAAwB;AAChDxqC,EAAAA,8CAAA,CAAU,aAAV,EAAyBwqC,YAAzB;AACAA,EAAAA,YAAY,GAAGA,YAAY,IAAIA,YAAY,CAAC1iC,IAAb,EAA/B;AACA0iC,EAAAA,YAAY,GAAGA,YAAY,IAAI,IAA/B;;AACA,MAAI;AACF3oC,IAAAA,OAAO,GAAG4C,IAAI,CAACmL,KAAL,CAAW46B,YAAX,CAAV;AACD,GAFD,CAEE,OAAOx+B,CAAP,EAAU;AACVhM,IAAAA,8CAAA,CAAU,sCAAV,EAAkDgM,CAAC,CAACy+B,OAApD;AACD;AACF,CATM;AAWA,IAAMC,UAAU,GAAG,SAAbA,UAAa,GAAY;AACpC,SAAO7oC,OAAP;AACD,CAFM;AAIA,IAAM8oC,MAAM,GAAG,gBAAUC,GAAV,EAAe;AACnC,MAAMD,MAAM,GAAG;AACb1nC,IAAAA,EAAE,EAAE0mC,KAAK,EADI;AAEbc,IAAAA,OAAO,EAAEG,GAFI;AAGblB,IAAAA,GAAG,EAAEA,GAAG,EAHK;AAIb5mC,IAAAA,MAAM,EAAE0J,IAAI,IAAI,IAAR,GAAe,IAAf,GAAsBA,IAAI,CAACvJ;AAJtB,GAAf;AAMAuJ,EAAAA,IAAI,GAAGm+B,MAAP;AACArB,EAAAA,OAAO,CAACqB,MAAM,CAAC1nC,EAAR,CAAP,GAAqB0nC,MAArB;AACApB,EAAAA,QAAQ,CAACE,SAAD,CAAR,GAAsBkB,MAAM,CAAC1nC,EAA7B;AACAjD,EAAAA,8CAAA,CAAU,mBAAmB2qC,MAAM,CAAC1nC,EAApC;AACD,CAXM;AAaA,IAAM4nC,MAAM,GAAG,SAATA,MAAS,CAAU16B,IAAV,EAAgB;AACpCo5B,EAAAA,QAAQ,CAACp5B,IAAD,CAAR,GAAiB3D,IAAI,IAAI,IAAR,GAAeA,IAAI,CAACvJ,EAApB,GAAyB,IAA1C;AACAjD,EAAAA,8CAAA,CAAU,iBAAV;AACD,CAHM;AAKA,IAAM8qC,KAAK,GAAG,SAARA,KAAQ,CAAUC,WAAV,EAAuB;AAC1C,MAAMlB,aAAa,GAAGP,OAAO,CAACC,QAAQ,CAACE,SAAD,CAAT,CAA7B;AACA,MAAMK,WAAW,GAAGR,OAAO,CAACC,QAAQ,CAACwB,WAAD,CAAT,CAA3B;;AACA,MAAIhB,eAAe,CAACF,aAAD,EAAgBC,WAAhB,CAAnB,EAAiD;AAC/C9pC,IAAAA,8CAAA,CAAU,gBAAV;AACA;AACD;;AACD,MAAI4pC,iBAAiB,CAACC,aAAD,EAAgBC,WAAhB,CAArB,EAAmD;AACjDP,IAAAA,QAAQ,CAACE,SAAD,CAAR,GAAsBF,QAAQ,CAACwB,WAAD,CAA9B;AACAv+B,IAAAA,IAAI,GAAG88B,OAAO,CAACC,QAAQ,CAACE,SAAD,CAAT,CAAd;AACD,GAHD,MAGO;AACL;AACA,QAAMkB,OAAM,GAAG;AACb1nC,MAAAA,EAAE,EAAE0mC,KAAK,EADI;AAEbc,MAAAA,OAAO,EAAE,mBAAmBM,WAAnB,GAAiC,QAAjC,GAA4CtB,SAFxC;AAGbC,MAAAA,GAAG,EAAEA,GAAG,EAHK;AAIb5mC,MAAAA,MAAM,EAAE,CAAC0J,IAAI,IAAI,IAAR,GAAe,IAAf,GAAsBA,IAAI,CAACvJ,EAA5B,EAAgCsmC,QAAQ,CAACwB,WAAD,CAAxC;AAJK,KAAf;AAMAv+B,IAAAA,IAAI,GAAGm+B,OAAP;AACArB,IAAAA,OAAO,CAACqB,OAAM,CAAC1nC,EAAR,CAAP,GAAqB0nC,OAArB;AACApB,IAAAA,QAAQ,CAACE,SAAD,CAAR,GAAsBkB,OAAM,CAAC1nC,EAA7B;AACD;;AACDjD,EAAAA,8CAAA,CAAUupC,QAAV;AACAvpC,EAAAA,8CAAA,CAAU,gBAAV;AACD,CAxBM;AA0BA,IAAMgrC,QAAQ,GAAG,SAAXA,QAAW,CAAUH,MAAV,EAAkB;AACxC7qC,EAAAA,8CAAA,CAAU,aAAV;AACAypC,EAAAA,SAAS,GAAGoB,MAAZ;AACA,MAAM5nC,EAAE,GAAGsmC,QAAQ,CAACE,SAAD,CAAnB;AACAj9B,EAAAA,IAAI,GAAG88B,OAAO,CAACrmC,EAAD,CAAd;AACD,CALM;AAOA,IAAMT,KAAK,GAAG,SAARA,KAAQ,CAAUyoC,SAAV,EAAqB;AACxCjrC,EAAAA,8CAAA,CAAU,UAAV,EAAsBirC,SAAtB;AACA,MAAMC,GAAG,GAAGD,SAAS,CAAC1jC,KAAV,CAAgB,GAAhB,EAAqB,CAArB,CAAZ;AACA,MAAI4jC,WAAW,GAAGC,QAAQ,CAACH,SAAS,CAAC1jC,KAAV,CAAgB,GAAhB,EAAqB,CAArB,CAAD,CAA1B;AACA,MAAIojC,MAAM,GAAGO,GAAG,KAAK,MAAR,GAAiB1+B,IAAjB,GAAwB88B,OAAO,CAACC,QAAQ,CAAC2B,GAAD,CAAT,CAA5C;AACAlrC,EAAAA,8CAAA,CAAU2qC,MAAV,EAAkBQ,WAAlB;;AACA,SAAOA,WAAW,GAAG,CAArB,EAAwB;AACtBR,IAAAA,MAAM,GAAGrB,OAAO,CAACqB,MAAM,CAAC7nC,MAAR,CAAhB;AACAqoC,IAAAA,WAAW;;AACX,QAAI,CAACR,MAAL,EAAa;AACX,UAAMxd,GAAG,GAAG,8DAAZ;AACAntB,MAAAA,8CAAA,CAAUmtB,GAAV;AACA,YAAMA,GAAN;AACD;AACF;;AACD3gB,EAAAA,IAAI,GAAGm+B,MAAP;AACApB,EAAAA,QAAQ,CAACE,SAAD,CAAR,GAAsBkB,MAAM,CAAC1nC,EAA7B;AACD,CAjBM;AAmBP;AACA;AACA;AACA;AACA;;AACA,SAASooC,MAAT,CAAgBxD,GAAhB,EAAqB5lC,GAArB,EAA0BqpC,MAA1B,EAAkC;AAChC,MAAMC,KAAK,GAAG1D,GAAG,CAAC1lC,OAAJ,CAAYF,GAAZ,CAAd;;AACA,MAAIspC,KAAK,KAAK,CAAC,CAAf,EAAkB;AAChB1D,IAAAA,GAAG,CAACtlC,IAAJ,CAAS+oC,MAAT;AACD,GAFD,MAEO;AACLzD,IAAAA,GAAG,CAAC2D,MAAJ,CAAWD,KAAX,EAAkB,CAAlB,EAAqBD,MAArB;AACD;AACF;AAED;;;AACA,SAASG,wBAAT,CAAkCC,SAAlC,EAA6C;AAC3C,MAAMf,MAAM,GAAGe,SAAS,CAAC7pB,MAAV,CAAiB,UAACyoB,GAAD,EAAMK,MAAN,EAAiB;AAC/C,QAAIL,GAAG,CAACZ,GAAJ,GAAUiB,MAAM,CAACjB,GAArB,EAA0B,OAAOY,GAAP;AAC1B,WAAOK,MAAP;AACD,GAHc,EAGZe,SAAS,CAAC,CAAD,CAHG,CAAf;AAIA,MAAI3jC,IAAI,GAAG,EAAX;AACA2jC,EAAAA,SAAS,CAAC1pC,OAAV,CAAkB,UAAU2pC,CAAV,EAAa;AAC7B,QAAIA,CAAC,KAAKhB,MAAV,EAAkB;AAChB5iC,MAAAA,IAAI,IAAI,KAAR;AACD,KAFD,MAEO;AACLA,MAAAA,IAAI,IAAI,KAAR;AACD;AACF,GAND;AAOA,MAAMzE,KAAK,GAAG,CAACyE,IAAD,EAAO4iC,MAAM,CAAC1nC,EAAd,EAAkB0nC,MAAM,CAACjB,GAAzB,CAAd;;AACA,OAAK,IAAImB,OAAT,IAAmBtB,QAAnB,EAA6B;AAC3B,QAAIA,QAAQ,CAACsB,OAAD,CAAR,KAAqBF,MAAM,CAAC1nC,EAAhC,EAAoCK,KAAK,CAACf,IAAN,CAAWsoC,OAAX;AACrC;;AACD7qC,EAAAA,8CAAA,CAAUsD,KAAK,CAACiU,IAAN,CAAW,GAAX,CAAV;;AACA,MAAI/P,KAAK,CAACC,OAAN,CAAckjC,MAAM,CAAC7nC,MAArB,CAAJ,EAAkC;AAChC,QAAM8oC,SAAS,GAAGtC,OAAO,CAACqB,MAAM,CAAC7nC,MAAP,CAAc,CAAd,CAAD,CAAzB;AACAuoC,IAAAA,MAAM,CAACK,SAAD,EAAYf,MAAZ,EAAoBiB,SAApB,CAAN;AACAF,IAAAA,SAAS,CAACnpC,IAAV,CAAe+mC,OAAO,CAACqB,MAAM,CAAC7nC,MAAP,CAAc,CAAd,CAAD,CAAtB;AACD,GAJD,MAIO,IAAI6nC,MAAM,CAAC7nC,MAAP,IAAiB,IAArB,EAA2B;AAChC;AACD,GAFM,MAEA;AACL,QAAM+oC,UAAU,GAAGvC,OAAO,CAACqB,MAAM,CAAC7nC,MAAR,CAA1B;AACAuoC,IAAAA,MAAM,CAACK,SAAD,EAAYf,MAAZ,EAAoBkB,UAApB,CAAN;AACD;;AACDH,EAAAA,SAAS,GAAGxB,MAAM,CAACwB,SAAD,EAAY,UAACC,CAAD;AAAA,WAAOA,CAAC,CAAC1oC,EAAT;AAAA,GAAZ,CAAlB;AACAwoC,EAAAA,wBAAwB,CAACC,SAAD,CAAxB;AACD;;AAEM,IAAMI,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC9rC,EAAAA,8CAAA,CAAUspC,OAAV;AACA,MAAMvmC,IAAI,GAAGgpC,eAAe,GAAG,CAAH,CAA5B;AACAN,EAAAA,wBAAwB,CAAC,CAAC1oC,IAAD,CAAD,CAAxB;AACD,CAJM;AAMA,IAAMiD,KAAK,GAAG,SAARA,KAAQ,GAAY;AAC/BsjC,EAAAA,OAAO,GAAG,EAAV;AACA98B,EAAAA,IAAI,GAAG,IAAP;AACA+8B,EAAAA,QAAQ,GAAG;AAAEC,IAAAA,MAAM,EAAEh9B;AAAV,GAAX;AACAi9B,EAAAA,SAAS,GAAG,QAAZ;AACAC,EAAAA,GAAG,GAAG,CAAN;AACD,CANM;AAQA,IAAMsC,qBAAqB,GAAG,SAAxBA,qBAAwB,GAAY;AAC/C,MAAMC,SAAS,GAAG,EAAlB;;AACA,OAAK,IAAIpB,QAAT,IAAmBtB,QAAnB,EAA6B;AAC3B0C,IAAAA,SAAS,CAAC1pC,IAAV,CAAe;AAAE4N,MAAAA,IAAI,EAAE06B,QAAR;AAAgBF,MAAAA,MAAM,EAAErB,OAAO,CAACC,QAAQ,CAACsB,QAAD,CAAT;AAA/B,KAAf;AACD;;AACD,SAAOoB,SAAP;AACD,CANM;AAQA,IAAMC,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAO3C,QAAP;AACD,CAFM;AAGA,IAAM4C,UAAU,GAAG,SAAbA,UAAa,GAAY;AACpC,SAAO7C,OAAP;AACD,CAFM;AAGA,IAAMyC,eAAe,GAAG,SAAlBA,eAAkB,GAAY;AACzC,MAAML,SAAS,GAAGtrC,MAAM,CAAC0B,IAAP,CAAYwnC,OAAZ,EAAqBhyB,GAArB,CAAyB,UAAUrV,GAAV,EAAe;AACxD,WAAOqnC,OAAO,CAACrnC,GAAD,CAAd;AACD,GAFiB,CAAlB;AAGAypC,EAAAA,SAAS,CAAC1pC,OAAV,CAAkB,UAAUiO,CAAV,EAAa;AAC7BjQ,IAAAA,8CAAA,CAAUiQ,CAAC,CAAChN,EAAZ;AACD,GAFD;AAGAyoC,EAAAA,SAAS,CAACp4B,IAAV,CAAe,UAACglB,CAAD,EAAIyM,CAAJ;AAAA,WAAUA,CAAC,CAAC2E,GAAF,GAAQpR,CAAC,CAACoR,GAApB;AAAA,GAAf;AACA,SAAOgC,SAAP;AACD,CATM;AAUA,IAAMU,gBAAgB,GAAG,SAAnBA,gBAAmB,GAAY;AAC1C,SAAO3C,SAAP;AACD,CAFM;AAGA,IAAMxiB,YAAY,GAAG,SAAfA,YAAe,GAAY;AACtC,SAAOD,SAAP;AACD,CAFM;AAGA,IAAMqlB,OAAO,GAAG,SAAVA,OAAU,GAAY;AACjC,SAAO7/B,IAAP;AACD,CAFM;AAIP,iEAAe;AACb0a,EAAAA,YAAY,EAAZA,YADa;AAEbqjB,EAAAA,UAAU,EAAVA,UAFa;AAGbG,EAAAA,UAAU,EAAVA,UAHa;AAIbC,EAAAA,MAAM,EAANA,MAJa;AAKbE,EAAAA,MAAM,EAANA,MALa;AAMbC,EAAAA,KAAK,EAALA,KANa;AAObE,EAAAA,QAAQ,EAARA,QAPa;AAQbxoC,EAAAA,KAAK,EAALA,KARa;AASbspC,EAAAA,WAAW,EAAXA,WATa;AAUb9lC,EAAAA,KAAK,EAALA,KAVa;AAWbgmC,EAAAA,qBAAqB,EAArBA,qBAXa;AAYbE,EAAAA,WAAW,EAAXA,WAZa;AAabC,EAAAA,UAAU,EAAVA,UAba;AAcbJ,EAAAA,eAAe,EAAfA,eAda;AAebK,EAAAA,gBAAgB,EAAhBA,gBAfa;AAgBbnlB,EAAAA,YAAY,EAAZA,YAhBa;AAiBbolB,EAAAA,OAAO,EAAPA;AAjBa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;AC1PA;AAEA;AACA;AACA;AACA;AAEA,IAAIG,cAAc,GAAG,EAArB;AACA,IAAIC,SAAJ;AACA,IAAIvsC,MAAM,GAAG;AACX8b,EAAAA,WAAW,EAAE,GADF;AAEX0wB,EAAAA,aAAa,EAAE,QAFJ;AAGXC,EAAAA,eAAe,EAAE,CAHN;AAIXC,EAAAA,eAAe,EAAE,MAJN;AAKXC,EAAAA,eAAe,EAAE,CALN;AAMXC,EAAAA,YAAY,EAAE,EANH;AAOXliB,EAAAA,SAAS,EAAE,MAPA;AAQXxL,EAAAA,UAAU,EAAE,EARD;AASX2tB,EAAAA,YAAY,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,CATH;AAUXC,EAAAA,UAAU,EAAE,EAVD;AAWXC,EAAAA,SAAS,EAAE;AACT7oC,IAAAA,KAAK,EAAE,EADE;AAETC,IAAAA,MAAM,EAAE,GAFC;AAGTS,IAAAA,CAAC,EAAE,CAAC,EAHK;AAITC,IAAAA,CAAC,EAAE;AAJM;AAXA,CAAb;AAkBA,IAAImoC,SAAS,GAAG,EAAhB;AACO,IAAM7jB,OAAO,GAAG,SAAVA,OAAU,CAAUsiB,CAAV,EAAa;AAClCuB,EAAAA,SAAS,GAAGvB,CAAZ;AACD,CAFM;AAIP;;AACA,SAASwB,aAAT,CAAuB9mB,GAAvB,EAA4B;AAC1BA,EAAAA,GAAG,CACA9gB,MADH,CACU,MADV,EAEGA,MAFH,CAEU,GAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc,YAHd,EAIGmC,MAJH,CAIU,QAJV,EAKGnC,IALH,CAKQ,GALR,EAKalD,MAAM,CAAC8sC,UALpB,EAMG5pC,IANH,CAMQ,IANR,EAMc,CANd,EAOGA,IAPH,CAOQ,IAPR,EAOc,CAPd;AAQAijB,EAAAA,GAAG,CACA1jB,MADH,CACU,aADV,EAEG4C,MAFH,CAEU,eAFV,EAGGnC,IAHH,CAGQ,OAHR,EAGiBlD,MAAM,CAAC+sC,SAAP,CAAiB7oC,KAHlC,EAIGhB,IAJH,CAIQ,QAJR,EAIkBlD,MAAM,CAAC+sC,SAAP,CAAiB5oC,MAJnC,EAKGjB,IALH,CAKQ,GALR,EAKalD,MAAM,CAAC+sC,SAAP,CAAiBnoC,CAL9B,EAMG1B,IANH,CAMQ,GANR,EAMalD,MAAM,CAAC+sC,SAAP,CAAiBloC,CAN9B,EAOG3B,IAPH,CAOQ,OAPR,EAOiB,YAPjB,EAQGA,IARH,CAQQ,kBARR,EAQ4B,kDAR5B,EASGmC,MATH,CASU,GATV,EAUGsB,IAVH,CAUQ,EAVR;AAWD;AAED;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASumC,WAAT,CAAqB/mB,GAArB,EAA0B5a,MAA1B,EAAkC4hC,QAAlC,EAA4CvkB,WAA5C,EAAyD;AACvD,MAAM5b,KAAK,GAAGqa,0DAAkB,CAACuB,WAAD,EAAc9gB,0CAAd,CAAhC;AACA,MAAMslC,KAAK,GAAGptC,MAAM,CAAC6sC,YAAP,CAAoBM,QAAQ,GAAGntC,MAAM,CAAC6sC,YAAP,CAAoB/rC,MAAnD,CAAd;AACA,MAAMusC,OAAO,GAAGxlC,wCAAI,GACjBjD,CADa,CACX,UAAU7D,CAAV,EAAa;AACd,WAAOqJ,IAAI,CAACkjC,KAAL,CAAWvsC,CAAC,CAAC6D,CAAb,CAAP;AACD,GAHa,EAIbC,CAJa,CAIX,UAAU9D,CAAV,EAAa;AACd,WAAOqJ,IAAI,CAACkjC,KAAL,CAAWvsC,CAAC,CAAC8D,CAAb,CAAP;AACD,GANa,EAObmI,KAPa,CAOPA,KAPO,CAAhB;AASAmZ,EAAAA,GAAG,CACA9gB,MADH,CACU,UADV,EAEGnC,IAFH,CAEQ,GAFR,EAEamqC,OAAO,CAAC9hC,MAAD,CAFpB,EAGG9G,KAHH,CAGS,QAHT,EAGmB2oC,KAHnB,EAIG3oC,KAJH,CAIS,cAJT,EAIyBzE,MAAM,CAAC2sC,eAJhC,EAKGloC,KALH,CAKS,MALT,EAKiB,MALjB;AAMD;AAED;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS8oC,gBAAT,CAA0BlyB,OAA1B,EAAmCmyB,MAAnC,EAA2C;AACzCA,EAAAA,MAAM,GAAGA,MAAM,IAAInyB,OAAO,CAACxY,IAAR,GAAec,OAAf,EAAnB;AACA,MAAM8pC,GAAG,GAAGpyB,OAAO,CAACxY,IAAR,GAAe6qC,MAAf,EAAZ;AACA,MAAMC,EAAE,GAAGF,GAAG,CAAC3hC,CAAJ,GAAQ0hC,MAAM,CAAC5oC,CAAP,GAAW6oC,GAAG,CAACrV,CAAlC;AACA,MAAMwV,EAAE,GAAGH,GAAG,CAACl2B,CAAJ,GAAQi2B,MAAM,CAAC3oC,CAAP,GAAW4oC,GAAG,CAAC1sC,CAAlC;AACA,SAAO;AACLmS,IAAAA,IAAI,EAAEy6B,EADD;AAELx6B,IAAAA,GAAG,EAAEy6B,EAFA;AAGL1pC,IAAAA,KAAK,EAAEspC,MAAM,CAACtpC,KAHT;AAILC,IAAAA,MAAM,EAAEqpC,MAAM,CAACrpC;AAJV,GAAP;AAMD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS0pC,qBAAT,CAA+B1nB,GAA/B,EAAoC2nB,MAApC,EAA4CC,IAA5C,EAAkDjnB,SAAlD,EAA6DsmB,KAA7D,EAAoE;AAClEttC,EAAAA,8CAAA,CAAU,yBAAV,EAAqCguC,MAArC,EAA6CC,IAA7C;AACA,MAAMC,QAAQ,GAAGT,gBAAgB,CAACpnB,GAAG,CAAC1jB,MAAJ,CAAW,WAAWqrC,MAAX,GAAoB,SAA/B,CAAD,CAAjC;AACA,MAAMG,MAAM,GAAGV,gBAAgB,CAACpnB,GAAG,CAAC1jB,MAAJ,CAAW,WAAWsrC,IAAX,GAAkB,SAA7B,CAAD,CAA/B;;AACA,UAAQjnB,SAAR;AACE,SAAK,IAAL;AACE;AACA;AACA;AACA,UAAIknB,QAAQ,CAAC96B,IAAT,GAAgB+6B,MAAM,CAAC/6B,IAAvB,GAA8BlT,MAAM,CAAC8b,WAAzC,EAAsD;AACpD,YAAMoyB,SAAS,GAAG;AAChBtpC,UAAAA,CAAC,EAAEopC,QAAQ,CAAC96B,IAAT,GAAgBlT,MAAM,CAAC8b,WADV;AAEhBjX,UAAAA,CAAC,EAAEopC,MAAM,CAAC96B,GAAP,GAAa86B,MAAM,CAAC9pC,MAAP,GAAgB;AAFhB,SAAlB;AAIA,YAAMgqC,OAAO,GAAG;AAAEvpC,UAAAA,CAAC,EAAEqpC,MAAM,CAAC/6B,IAAP,GAAc+6B,MAAM,CAAC/pC,KAA1B;AAAiCW,UAAAA,CAAC,EAAEopC,MAAM,CAAC96B,GAAP,GAAa86B,MAAM,CAAC9pC,MAAP,GAAgB;AAAjE,SAAhB;AACA+oC,QAAAA,WAAW,CAAC/mB,GAAD,EAAM,CAAC+nB,SAAD,EAAYC,OAAZ,CAAN,EAA4Bf,KAA5B,EAAmC,QAAnC,CAAX;AACAF,QAAAA,WAAW,CACT/mB,GADS,EAET,CACE;AAAEvhB,UAAAA,CAAC,EAAEopC,QAAQ,CAAC96B,IAAd;AAAoBrO,UAAAA,CAAC,EAAEmpC,QAAQ,CAAC76B,GAAT,GAAe66B,QAAQ,CAAC7pC,MAAT,GAAkB;AAAxD,SADF,EAEE;AAAES,UAAAA,CAAC,EAAEopC,QAAQ,CAAC96B,IAAT,GAAgBlT,MAAM,CAAC8b,WAAP,GAAqB,CAA1C;AAA6CjX,UAAAA,CAAC,EAAEmpC,QAAQ,CAAC76B,GAAT,GAAe66B,QAAQ,CAAC7pC,MAAT,GAAkB;AAAjF,SAFF,EAGE;AAAES,UAAAA,CAAC,EAAEopC,QAAQ,CAAC96B,IAAT,GAAgBlT,MAAM,CAAC8b,WAAP,GAAqB,CAA1C;AAA6CjX,UAAAA,CAAC,EAAEqpC,SAAS,CAACrpC;AAA1D,SAHF,EAIEqpC,SAJF,CAFS,EAQTd,KARS,CAAX;AAUD,OAjBD,MAiBO;AACLF,QAAAA,WAAW,CACT/mB,GADS,EAET,CACE;AACEvhB,UAAAA,CAAC,EAAEopC,QAAQ,CAAC96B,IADd;AAEErO,UAAAA,CAAC,EAAEmpC,QAAQ,CAAC76B,GAAT,GAAe66B,QAAQ,CAAC7pC,MAAT,GAAkB;AAFtC,SADF,EAKE;AACES,UAAAA,CAAC,EAAEopC,QAAQ,CAAC96B,IAAT,GAAgBlT,MAAM,CAAC8b,WAAP,GAAqB,CAD1C;AAEEjX,UAAAA,CAAC,EAAEmpC,QAAQ,CAAC76B,GAAT,GAAe66B,QAAQ,CAAC7pC,MAAT,GAAkB;AAFtC,SALF,EASE;AACES,UAAAA,CAAC,EAAEopC,QAAQ,CAAC96B,IAAT,GAAgBlT,MAAM,CAAC8b,WAAP,GAAqB,CAD1C;AAEEjX,UAAAA,CAAC,EAAEopC,MAAM,CAAC96B,GAAP,GAAa86B,MAAM,CAAC9pC,MAAP,GAAgB;AAFlC,SATF,EAaE;AACES,UAAAA,CAAC,EAAEqpC,MAAM,CAAC/6B,IAAP,GAAc+6B,MAAM,CAAC/pC,KAD1B;AAEEW,UAAAA,CAAC,EAAEopC,MAAM,CAAC96B,GAAP,GAAa86B,MAAM,CAAC9pC,MAAP,GAAgB;AAFlC,SAbF,CAFS,EAoBTipC,KApBS,CAAX;AAsBD;;AACD;;AACF,SAAK,IAAL;AACE;AACA;AACA;AACA;AACA,UAAIa,MAAM,CAAC96B,GAAP,GAAa66B,QAAQ,CAAC76B,GAAtB,GAA4BnT,MAAM,CAAC8b,WAAvC,EAAoD;AAClD,YAAMoyB,UAAS,GAAG;AAChBtpC,UAAAA,CAAC,EAAEqpC,MAAM,CAAC/6B,IAAP,GAAc+6B,MAAM,CAAC/pC,KAAP,GAAe,CADhB;AAEhBW,UAAAA,CAAC,EAAEmpC,QAAQ,CAAC76B,GAAT,GAAe66B,QAAQ,CAAC7pC,MAAxB,GAAiCnE,MAAM,CAAC8b;AAF3B,SAAlB;AAIA,YAAMqyB,QAAO,GAAG;AAAEvpC,UAAAA,CAAC,EAAEqpC,MAAM,CAAC/6B,IAAP,GAAc+6B,MAAM,CAAC/pC,KAAP,GAAe,CAAlC;AAAqCW,UAAAA,CAAC,EAAEopC,MAAM,CAAC96B;AAA/C,SAAhB;AACA+5B,QAAAA,WAAW,CAAC/mB,GAAD,EAAM,CAAC+nB,UAAD,EAAYC,QAAZ,CAAN,EAA4Bf,KAA5B,EAAmC,QAAnC,CAAX;AACAF,QAAAA,WAAW,CACT/mB,GADS,EAET,CACE;AAAEvhB,UAAAA,CAAC,EAAEopC,QAAQ,CAAC96B,IAAT,GAAgB86B,QAAQ,CAAC9pC,KAAT,GAAiB,CAAtC;AAAyCW,UAAAA,CAAC,EAAEmpC,QAAQ,CAAC76B,GAAT,GAAe66B,QAAQ,CAAC7pC;AAApE,SADF,EAEE;AACES,UAAAA,CAAC,EAAEopC,QAAQ,CAAC96B,IAAT,GAAgB86B,QAAQ,CAAC9pC,KAAT,GAAiB,CADtC;AAEEW,UAAAA,CAAC,EAAEmpC,QAAQ,CAAC76B,GAAT,GAAe66B,QAAQ,CAAC7pC,MAAxB,GAAiCnE,MAAM,CAAC8b,WAAP,GAAqB;AAF3D,SAFF,EAME;AAAElX,UAAAA,CAAC,EAAEqpC,MAAM,CAAC/6B,IAAP,GAAc+6B,MAAM,CAAC/pC,KAAP,GAAe,CAAlC;AAAqCW,UAAAA,CAAC,EAAEqpC,UAAS,CAACrpC,CAAV,GAAc7E,MAAM,CAAC8b,WAAP,GAAqB;AAA3E,SANF,EAOEoyB,UAPF,CAFS,EAWTd,KAXS,CAAX;AAaD,OApBD,MAoBO;AACLF,QAAAA,WAAW,CACT/mB,GADS,EAET,CACE;AACEvhB,UAAAA,CAAC,EAAEopC,QAAQ,CAAC96B,IAAT,GAAgB86B,QAAQ,CAAC9pC,KAAT,GAAiB,CADtC;AAEEW,UAAAA,CAAC,EAAEmpC,QAAQ,CAAC76B,GAAT,GAAe66B,QAAQ,CAAC7pC;AAF7B,SADF,EAKE;AACES,UAAAA,CAAC,EAAEopC,QAAQ,CAAC96B,IAAT,GAAgB86B,QAAQ,CAAC9pC,KAAT,GAAiB,CADtC;AAEEW,UAAAA,CAAC,EAAEmpC,QAAQ,CAAC76B,GAAT,GAAenT,MAAM,CAAC8b,WAAP,GAAqB;AAFzC,SALF,EASE;AACElX,UAAAA,CAAC,EAAEqpC,MAAM,CAAC/6B,IAAP,GAAc+6B,MAAM,CAAC/pC,KAAP,GAAe,CADlC;AAEEW,UAAAA,CAAC,EAAEopC,MAAM,CAAC96B,GAAP,GAAanT,MAAM,CAAC8b,WAAP,GAAqB;AAFvC,SATF,EAaE;AACElX,UAAAA,CAAC,EAAEqpC,MAAM,CAAC/6B,IAAP,GAAc+6B,MAAM,CAAC/pC,KAAP,GAAe,CADlC;AAEEW,UAAAA,CAAC,EAAEopC,MAAM,CAAC96B;AAFZ,SAbF,CAFS,EAoBTi6B,KApBS,CAAX;AAsBD;;AACD;AAhGJ;AAkGD;AAED;AACA;AACA;AACA;;;AACA,SAASgB,SAAT,CAAmBjoB,GAAnB,EAAwBkoB,QAAxB,EAAkC;AAChC,SAAOloB,GAAG,CAAC1jB,MAAJ,CAAW4rC,QAAX,EAAqBxrC,IAArB,GAA4BurC,SAA5B,CAAsC,IAAtC,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASE,mBAAT,CAA6BnoB,GAA7B,EAAkCooB,QAAlC,EAA4ClF,QAA5C,EAAsDviB,SAAtD,EAAiE;AAC/D,MAAI2jB,MAAJ;AACA,MAAM+D,UAAU,GAAGtuC,MAAM,CAAC0B,IAAP,CAAY0qC,cAAZ,EAA4BxrC,MAA/C;;AACA,MAAI,OAAOytC,QAAP,KAAoB,QAAxB,EAAkC;AAChC,OAAG;AACD9D,MAAAA,MAAM,GAAG6B,cAAc,CAACiC,QAAD,CAAvB;AACAzuC,MAAAA,8CAAA,CAAU,wBAAV,EAAoC2qC,MAAM,CAAC1nC,EAA3C,EAA+C0nC,MAAM,CAACjB,GAAtD;;AACA,UAAIrjB,GAAG,CAAC1jB,MAAJ,CAAW,WAAW8rC,QAAtB,EAAgCE,IAAhC,KAAyC,CAA7C,EAAgD;AAC9C;AACD;;AACDtoB,MAAAA,GAAG,CACA9gB,MADH,CACU,YAAY;AAClB,eAAO+oC,SAAS,CAACjoB,GAAD,EAAM,aAAN,CAAhB;AACD,OAHH,EAIGjjB,IAJH,CAIQ,OAJR,EAIiB,QAJjB,EAKGA,IALH,CAKQ,IALR,EAKc,YAAY;AACtB,eAAO,UAAUunC,MAAM,CAAC1nC,EAAxB;AACD,OAPH,EAQGG,IARH,CAQQ,WARR,EAQqB,YAAY;AAC7B,gBAAQ4jB,SAAR;AACE,eAAK,IAAL;AACE,mBACE,gBACC2jB,MAAM,CAACjB,GAAP,GAAaxpC,MAAM,CAAC8b,WAApB,GAAkC9b,MAAM,CAACkf,UAD1C,IAEA,IAFA,GAGAqtB,SAAS,GAAGvsC,MAAM,CAAC4sC,YAHnB,GAIA,GALF;;AAOF,eAAK,IAAL;AACE,mBACE,gBACCL,SAAS,GAAGvsC,MAAM,CAAC4sC,YAAnB,GAAkC5sC,MAAM,CAACkf,UAD1C,IAEA,IAFA,GAGA,CAACsvB,UAAU,GAAG/D,MAAM,CAACjB,GAArB,IAA4BxpC,MAAM,CAAC8b,WAHnC,GAIA,GALF;AAVJ;AAkBD,OA3BH,EA4BG5Y,IA5BH,CA4BQ,MA5BR,EA4BgBlD,MAAM,CAACwsC,aA5BvB,EA6BGtpC,IA7BH,CA6BQ,QA7BR,EA6BkBlD,MAAM,CAAC0sC,eA7BzB,EA8BGxpC,IA9BH,CA8BQ,cA9BR,EA8BwBlD,MAAM,CAACysC,eA9B/B;AAgCA,UAAI9B,MAAM,SAAV;;AACA,WAAK,IAAI+D,UAAT,IAAuBrF,QAAvB,EAAiC;AAC/B,YAAIA,QAAQ,CAACqF,UAAD,CAAR,CAAqBjE,MAArB,KAAgCA,MAApC,EAA4C;AAC1CE,UAAAA,MAAM,GAAGtB,QAAQ,CAACqF,UAAD,CAAjB;AACA;AACD;AACF;;AACD,UAAI/D,MAAJ,EAAY;AACV7qC,QAAAA,8CAAA,CAAU,eAAV,EAA2B6qC,MAAM,CAAC16B,IAAlC;AACAkW,QAAAA,GAAG,CACA1jB,MADH,CACU,WAAWgoC,MAAM,CAAC1nC,EAAlB,GAAuB,IADjC,EAEGsC,MAFH,CAEU,YAFV,EAGGnC,IAHH,CAGQ,OAHR,EAGiB,cAHjB,EAIGG,IAJH,CAIQsnC,MAAM,CAAC16B,IAAP,GAAc,IAJtB;AAKD;;AACDkW,MAAAA,GAAG,CACA1jB,MADH,CACU,WAAWgoC,MAAM,CAAC1nC,EAAlB,GAAuB,IADjC,EAEGsC,MAFH,CAEU,YAFV,EAGGnC,IAHH,CAGQ,OAHR,EAGiB,WAHjB,EAIGG,IAJH,CAIQonC,MAAM,CAAC1nC,EAJf;;AAKA,UAAI0nC,MAAM,CAACF,OAAP,KAAmB,EAAnB,IAAyBzjB,SAAS,KAAK,IAA3C,EAAiD;AAC/CX,QAAAA,GAAG,CACA1jB,MADH,CACU,WAAWgoC,MAAM,CAAC1nC,EAAlB,GAAuB,IADjC,EAEGsC,MAFH,CAEU,YAFV,EAGGnC,IAHH,CAGQ,OAHR,EAGiB,YAHjB,EAIGG,IAJH,CAIQ,OAAOonC,MAAM,CAACF,OAJtB;AAKD;;AACDgE,MAAAA,QAAQ,GAAG9D,MAAM,CAAC7nC,MAAlB;AACD,KAlED,QAkES2rC,QAAQ,IAAIjC,cAAc,CAACiC,QAAD,CAlEnC;AAmED;;AAED,MAAIjnC,KAAK,CAACC,OAAN,CAAcgnC,QAAd,CAAJ,EAA6B;AAC3BzuC,IAAAA,8CAAA,CAAU,qBAAV,EAAiCyuC,QAAjC;AACAD,IAAAA,mBAAmB,CAACnoB,GAAD,EAAMooB,QAAQ,CAAC,CAAD,CAAd,EAAmBlF,QAAnB,EAA6BviB,SAA7B,CAAnB;AACAylB,IAAAA,SAAS;AACT+B,IAAAA,mBAAmB,CAACnoB,GAAD,EAAMooB,QAAQ,CAAC,CAAD,CAAd,EAAmBlF,QAAnB,EAA6BviB,SAA7B,CAAnB;AACAylB,IAAAA,SAAS;AACV;AACF;AAED;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASoC,WAAT,CAAqBxoB,GAArB,EAA0BskB,MAA1B,EAAkC3jB,SAAlC,EAA6C8nB,WAA7C,EAA0D;AACxDA,EAAAA,WAAW,GAAGA,WAAW,IAAI,CAA7B;;AACA,SAAOnE,MAAM,CAACjB,GAAP,GAAa,CAAb,IAAkB,CAACiB,MAAM,CAACoE,SAAjC,EAA4C;AAC1C,QAAI,OAAOpE,MAAM,CAAC7nC,MAAd,KAAyB,QAA7B,EAAuC;AACrCirC,MAAAA,qBAAqB,CAAC1nB,GAAD,EAAMskB,MAAM,CAAC1nC,EAAb,EAAiB0nC,MAAM,CAAC7nC,MAAxB,EAAgCkkB,SAAhC,EAA2C8nB,WAA3C,CAArB;AACAnE,MAAAA,MAAM,CAACoE,SAAP,GAAmB,IAAnB;AACApE,MAAAA,MAAM,GAAG6B,cAAc,CAAC7B,MAAM,CAAC7nC,MAAR,CAAvB;AACD,KAJD,MAIO,IAAI0E,KAAK,CAACC,OAAN,CAAckjC,MAAM,CAAC7nC,MAArB,CAAJ,EAAkC;AACvCirC,MAAAA,qBAAqB,CAAC1nB,GAAD,EAAMskB,MAAM,CAAC1nC,EAAb,EAAiB0nC,MAAM,CAAC7nC,MAAP,CAAc,CAAd,CAAjB,EAAmCkkB,SAAnC,EAA8C8nB,WAA9C,CAArB;AACAf,MAAAA,qBAAqB,CAAC1nB,GAAD,EAAMskB,MAAM,CAAC1nC,EAAb,EAAiB0nC,MAAM,CAAC7nC,MAAP,CAAc,CAAd,CAAjB,EAAmCkkB,SAAnC,EAA8C8nB,WAAW,GAAG,CAA5D,CAArB;AACAD,MAAAA,WAAW,CAACxoB,GAAD,EAAMmmB,cAAc,CAAC7B,MAAM,CAAC7nC,MAAP,CAAc,CAAd,CAAD,CAApB,EAAwCkkB,SAAxC,EAAmD8nB,WAAW,GAAG,CAAjE,CAAX;AACAnE,MAAAA,MAAM,CAACoE,SAAP,GAAmB,IAAnB;AACApE,MAAAA,MAAM,GAAG6B,cAAc,CAAC7B,MAAM,CAAC7nC,MAAP,CAAc,CAAd,CAAD,CAAvB;AACD;AACF;AACF;;AAEM,IAAMinB,IAAI,GAAG,SAAPA,IAAO,CAAU6D,GAAV,EAAe3qB,EAAf,EAAmB+0B,GAAnB,EAAwB;AAC1C,MAAI;AACF,QAAM5Q,MAAM,GAAGmlB,gEAAf;AACAnlB,IAAAA,MAAM,CAACM,EAAP,GAAY4kB,oDAAZ;AACAllB,IAAAA,MAAM,CAACM,EAAP,CAAU1hB,KAAV;AAEAhG,IAAAA,8CAAA,CAAU,sBAAV,EAAkC4tB,GAAG,GAAG,IAAxC,EAA8C,KAA9C,EAAqD3qB,EAArD,EAAyD+0B,GAAzD,EALE,CAMF;;AACA5Q,IAAAA,MAAM,CAACxX,KAAP,CAAage,GAAG,GAAG,IAAnB;AAEA1tB,IAAAA,MAAM,GAAGE,MAAM,CAACwW,MAAP,CAAc1W,MAAd,EAAsBgtC,SAAtB,EAAiCZ,+DAAA,EAAjC,CAAT;AACAtsC,IAAAA,8CAAA,CAAU,mBAAV,EAA+BE,MAA/B;AACA,QAAM8mB,SAAS,GAAGslB,iEAAA,EAAlB;AACAE,IAAAA,cAAc,GAAGF,+DAAA,EAAjB;AACA,QAAM/C,QAAQ,GAAG+C,0EAAA,EAAjB;;AACA,QAAItlB,SAAS,KAAK,IAAlB,EAAwB;AACtB9mB,MAAAA,MAAM,CAAC+sC,SAAP,CAAiBnoC,CAAjB,GAAqBykC,QAAQ,CAACvoC,MAAT,GAAkBd,MAAM,CAAC4sC,YAA9C;AACA5sC,MAAAA,MAAM,CAAC+sC,SAAP,CAAiB7oC,KAAjB,GAAyB,MAAzB;AACAlE,MAAAA,MAAM,CAAC+sC,SAAP,CAAiBloC,CAAjB,GAAqB,CAAC,CAAD,GAAK,CAAL,GAAS7E,MAAM,CAAC8sC,UAArC;AACD;;AACD,QAAM3mB,GAAG,GAAG1jB,0CAAM,iBAASM,EAAT,SAAlB;AACAkqC,IAAAA,aAAa,CAAC9mB,GAAD,CAAb;AACAomB,IAAAA,SAAS,GAAG,CAAZ;;AACA,SAAK,IAAI5B,MAAT,IAAmBtB,QAAnB,EAA6B;AAC3B,UAAMh9B,CAAC,GAAGg9B,QAAQ,CAACsB,MAAD,CAAlB;AACA2D,MAAAA,mBAAmB,CAACnoB,GAAD,EAAM9Z,CAAC,CAACo+B,MAAF,CAAS1nC,EAAf,EAAmBsmC,QAAnB,EAA6BviB,SAA7B,CAAnB;AACA6nB,MAAAA,WAAW,CAACxoB,GAAD,EAAM9Z,CAAC,CAACo+B,MAAR,EAAgB3jB,SAAhB,CAAX;AACAylB,MAAAA,SAAS;AACV;;AACDpmB,IAAAA,GAAG,CAACjjB,IAAJ,CAAS,QAAT,EAAmB,YAAY;AAC7B,UAAI4jB,SAAS,KAAK,IAAlB,EAAwB,OAAO5mB,MAAM,CAAC0B,IAAP,CAAY0qC,cAAZ,EAA4BxrC,MAA5B,GAAqCd,MAAM,CAAC8b,WAAnD;AACxB,aAAO,CAACutB,QAAQ,CAACvoC,MAAT,GAAkB,CAAnB,IAAwBd,MAAM,CAAC4sC,YAAtC;AACD,KAHD;AAID,GAhCD,CAgCE,OAAO9gC,CAAP,EAAU;AACVhM,IAAAA,8CAAA,CAAU,gCAAV;AACAA,IAAAA,8CAAA,CAAUgM,CAAC,CAACy+B,OAAZ;AACD;AACF,CArCM;AAuCP,iEAAe;AACbphB,EAAAA,OAAO,EAAPA,OADa;AAEbU,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;ACjXA,IAAMS,SAAS,GAAG,SAAZA,SAAY;AAAA;AAAA,CAAlB;;AAYA,iEAAeA,SAAf;;;;;;;;;;;;;;;;;;;;ACZA;AACA;AAEA,IAAIigB,OAAO,GAAG,EAAd;AACA,IAAIvkC,IAAI,GAAG,KAAX;AAEO,IAAM8oC,UAAU,GAAG,SAAbA,UAAa,CAACphB,GAAD,EAAS;AACjC5tB,EAAAA,8CAAA,CAAU,yBAAyB4tB,GAAnC;AACA6c,EAAAA,OAAO,GAAG7c,GAAV;AACD,CAHM;AAKA,IAAMqhB,UAAU,GAAG,SAAbA,UAAa,GAAM;AAC9B,SAAOxE,OAAP;AACD,CAFM;AAIA,IAAMyE,OAAO,GAAG,SAAVA,OAAU,CAACC,GAAD,EAAS;AAC9BjpC,EAAAA,IAAI,GAAGipC,GAAP;AACD,CAFM;AAIA,IAAMC,OAAO,GAAG,SAAVA,OAAU,GAAM;AAC3B,SAAOlpC,IAAP;AACD,CAFM,EAIP;AACA;AACA;;AAEA,iEAAe;AACb8oC,EAAAA,UAAU,EAAVA,UADa;AAEbC,EAAAA,UAAU,EAAVA,UAFa;AAGbC,EAAAA,OAAO,EAAPA,OAHa;AAIbE,EAAAA,OAAO,EAAPA,OAJa,CAKb;;AALa,CAAf;;;;;;;;;;;;;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AAEA,IAAM7tC,IAAI,GAAG,EAAb;AACO,IAAM8nB,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMxnB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYwnB,GAAZ,CAAb;AAEAxnB,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUC,GAAV,EAAe;AAC1BV,IAAAA,IAAI,CAACU,GAAD,CAAJ,GAAYqnB,GAAG,CAACrnB,GAAD,CAAf;AACD,GAFD;AAGD,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM8nB,IAAI,GAAG,SAAPA,IAAO,CAACxmB,IAAD,EAAON,EAAP,EAAW0zB,OAAX,EAAuB;AACzC,MAAI;AACF,QAAMvP,MAAM,GAAGioB,4DAAf;AACAjoB,IAAAA,MAAM,CAACM,EAAP,GAAY4kB,+CAAZ;AACAtsC,IAAAA,8CAAA,CAAU,4BAA4BuD,IAAtC,EAHE,CAIF;;AACA6jB,IAAAA,MAAM,CAACxX,KAAP,CAAarM,IAAb;AACAvD,IAAAA,8CAAA,CAAU,qBAAV,EANE,CAOF;;AACA,QAAMqmB,GAAG,GAAG1jB,0CAAM,CAAC,MAAMM,EAAP,CAAlB;AAEA,QAAM4kB,CAAC,GAAGxB,GAAG,CAAC9gB,MAAJ,CAAW,GAAX,CAAV;AAEAsiB,IAAAA,CAAC,CAACtiB,MAAF,CAAS,MAAT,EAAiB;AAAjB,KACGnC,IADH,CACQ,GADR,EACa,GADb,EAEGA,IAFH,CAEQ,GAFR,EAEa,EAFb,EAGGA,IAHH,CAGQ,OAHR,EAGiB,SAHjB,EAIGA,IAJH,CAIQ,WAJR,EAIqB,MAJrB,EAKGuB,KALH,CAKS,aALT,EAKwB,QALxB,EAMGpB,IANH,CAMQ,OAAOozB,OANf;AAQAtQ,IAAAA,GAAG,CAACjjB,IAAJ,CAAS,QAAT,EAAmB,GAAnB;AACAijB,IAAAA,GAAG,CAACjjB,IAAJ,CAAS,OAAT,EAAkB,GAAlB,EArBE,CAsBF;AACD,GAvBD,CAuBE,OAAO4I,CAAP,EAAU;AACVhM,IAAAA,8CAAA,CAAU,oCAAV;AACAA,IAAAA,8CAAA,CAAUgM,CAAC,CAACy+B,OAAZ;AACD;AACF,CA5BM;AA8BP,iEAAe;AACbphB,EAAAA,OAAO,EAAPA,OADa;AAEbU,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;ACpDA,IAAMS,SAAS,GAAG,SAAZA,SAAY;AAAA;AAAA,CAAlB;;AAEA,iEAAeA,SAAf;;;;;;;;;;;;;;;;;;;ACFA;AACA;AACA;AAEA,IAAIkT,QAAQ,GAAG,EAAf;AACA,IAAInlB,KAAK,GAAG,EAAZ;AACA,IAAI+2B,QAAQ,GAAG,KAAf;AAEO,IAAMhtB,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BlS,IAA9B,EAAoC;AAChE2R,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDlS,IAApD;AACD,CAFM;;AAIP,IAAM6uB,UAAU,GAAG,SAAbA,UAAa,CAAUl8B,EAAV,EAAcwG,KAAd,EAAqB;AACtC,MAAI,OAAOi0B,QAAQ,CAACz6B,EAAD,CAAf,KAAwB,WAA5B,EAAyC;AACvCy6B,IAAAA,QAAQ,CAACz6B,EAAD,CAAR,GAAewG,KAAf;AACAzJ,IAAAA,8CAAA,CAAU,qBAAV,EAAiCiD,EAAjC;AACD;AACF,CALD;;AAMA,IAAMm8B,WAAW,GAAG,SAAdA,WAAc;AAAA,SAAM1B,QAAN;AAAA,CAApB;;AAEA,IAAM/M,QAAQ,GAAG,SAAXA,QAAW,CAAU/C,GAAV,EAAe;AAC9BrV,EAAAA,KAAK,GAAGqV,GAAR;AACD,CAFD;;AAIA,IAAM2hB,WAAW,GAAG,SAAdA,WAAc,CAAUC,MAAV,EAAkB;AACpCF,EAAAA,QAAQ,GAAGE,MAAX;AACD,CAFD;;AAIA,IAAMC,WAAW,GAAG,SAAdA,WAAc,GAAY;AAC9B,SAAOH,QAAP;AACD,CAFD;;AAIA,IAAM1e,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAC3B,SAAOrY,KAAP;AACD,CAFD;;AAGA,IAAMm3B,YAAY,GAAG,SAAfA,YAAe,CAAUjmC,KAAV,EAAiB;AACpC,MAAIA,KAAK,CAACya,SAAN,CAAgB,CAAhB,EAAmB,CAAnB,MAA0B,GAA9B,EAAmC;AACjCza,IAAAA,KAAK,GAAGA,KAAK,CAACya,SAAN,CAAgB,CAAhB,EAAmBpc,IAAnB,EAAR;AACA,WAAOkF,MAAM,CAACvD,KAAK,CAAC3B,IAAN,EAAD,CAAb;AACD,GAHD,MAGO;AACL,WAAOkF,MAAM,CAACvD,KAAK,CAAC3B,IAAN,EAAD,CAAb;AACD;AACF,CAPD;;AASA,IAAM9B,KAAK,GAAG,SAARA,KAAQ,GAAY;AACxB03B,EAAAA,QAAQ,GAAG,EAAX;AACAnlB,EAAAA,KAAK,GAAG,EAAR;AACA+2B,EAAAA,QAAQ,GAAG,KAAX;AACD,CAJD,EAKA;AACA;AACA;;;AAEA,iEAAe;AACbhtB,EAAAA,cAAc,EAAdA,cADa;AAEb1gB,EAAAA,SAAS,EAAE;AAAA,WAAMmgB,8CAAA,GAAsBf,GAA5B;AAAA,GAFE;AAGbme,EAAAA,UAAU,EAAVA,UAHa;AAIbC,EAAAA,WAAW,EAAXA,WAJa;AAKbsQ,EAAAA,YAAY,EAAZA,YALa;AAMb1pC,EAAAA,KAAK,EAALA,KANa;AAOb2qB,EAAAA,QAAQ,EAARA,QAPa;AAQbC,EAAAA,QAAQ,EAARA,QARa;AASb2e,EAAAA,WAAW,EAAXA,WATa;AAUbE,EAAAA,WAAW,EAAXA,WAVa,CAWb;;AAXa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAIluC,IAAI,GAAGwgB,8CAAA,EAAX;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAI3d,KAAJ;AACA,IAAMC,MAAM,GAAG,GAAf;AACO,IAAM0lB,IAAI,GAAG,SAAPA,IAAO,CAAC6D,GAAD,EAAM3qB,EAAN,EAAa;AAC/B,MAAI;AACF1B,IAAAA,IAAI,GAAGwgB,8CAAA,EAAP;AACA,QAAMqF,MAAM,GAAG2oB,2DAAf;AACA3oB,IAAAA,MAAM,CAACM,EAAP,GAAYooB,8CAAZ;AACA9vC,IAAAA,8CAAA,CAAU,6BAA6B4tB,GAAvC,EAJE,CAKF;;AACAxG,IAAAA,MAAM,CAACM,EAAP,CAAU1hB,KAAV;AACAohB,IAAAA,MAAM,CAACxX,KAAP,CAAage,GAAb;AACA5tB,IAAAA,8CAAA,CAAU,qBAAV;AACA,QAAM4F,IAAI,GAAGa,QAAQ,CAAC29B,cAAT,CAAwBnhC,EAAxB,CAAb;AACAmB,IAAAA,KAAK,GAAGwB,IAAI,CAACy+B,aAAL,CAAmBC,WAA3B;;AAEA,QAAI,OAAOlgC,KAAP,KAAiB,WAArB,EAAkC;AAChCA,MAAAA,KAAK,GAAG,IAAR;AACD;;AAED,QAAI,OAAO7C,IAAI,CAAC2d,QAAZ,KAAyB,WAA7B,EAA0C;AACxC9a,MAAAA,KAAK,GAAG7C,IAAI,CAAC2d,QAAb;AACD;;AACD,QAAI,OAAO3d,IAAI,CAACyf,GAAL,CAAS9B,QAAhB,KAA6B,WAAjC,EAA8C;AAC5C9a,MAAAA,KAAK,GAAG7C,IAAI,CAACyf,GAAL,CAAS9B,QAAjB;AACD;;AAED,QAAMsK,OAAO,GAAG7mB,0CAAM,CAAC,MAAMM,EAAP,CAAtB;AACAwkB,IAAAA,wDAAgB,CAAC+B,OAAD,EAAUnlB,MAAV,EAAkBD,KAAlB,EAAyB7C,IAAI,CAACyf,GAAL,CAAS9E,WAAlC,CAAhB,CAxBE,CA0BF;;AACAtW,IAAAA,IAAI,CAACyB,YAAL,CAAkB,SAAlB,EAA6B,SAASjD,KAAT,GAAiB,GAAjB,GAAuBC,MAApD,EA3BE,CA6BF;;AACA,QAAI2rC,MAAM,GAAG,EAAb;AACA,QAAIC,cAAc,GAAG,EAArB;AACA,QAAIC,aAAa,GAAG,CAApB;AAEA,QAAI1vB,MAAM,GAAGlW,IAAI,CAAC6I,GAAL,CAAS/O,KAAT,EAAgBC,MAAhB,IAA0B,CAA1B,GAA8B2rC,MAA3C;AAEA,QAAI3pB,GAAG,GAAGmD,OAAO,CACdjkB,MADO,CACA,GADA,EAEPnC,IAFO,CAEF,WAFE,EAEW,eAAegB,KAAK,GAAG,CAAvB,GAA2B,GAA3B,GAAiCC,MAAM,GAAG,CAA1C,GAA8C,GAFzD,CAAV;AAIA,QAAIsL,IAAI,GAAGmgC,0DAAA,EAAX;AACA,QAAIK,GAAG,GAAG,CAAV;AACA/vC,IAAAA,MAAM,CAAC0B,IAAP,CAAY6N,IAAZ,EAAkB3N,OAAlB,CAA0B,UAAUC,GAAV,EAAe;AACvCkuC,MAAAA,GAAG,IAAIxgC,IAAI,CAAC1N,GAAD,CAAX;AACD,KAFD;AAIA,QAAMb,cAAc,GAAGG,IAAI,CAACH,cAA5B;AACA,QAAIgvC,iBAAiB,GAAG,CACtBhvC,cAAc,CAACivC,IADO,EAEtBjvC,cAAc,CAACkvC,IAFO,EAGtBlvC,cAAc,CAACmvC,IAHO,EAItBnvC,cAAc,CAACovC,IAJO,EAKtBpvC,cAAc,CAACqvC,IALO,EAMtBrvC,cAAc,CAACsvC,IANO,EAOtBtvC,cAAc,CAACuvC,IAPO,EAQtBvvC,cAAc,CAACwvC,IARO,EAStBxvC,cAAc,CAACyvC,IATO,EAUtBzvC,cAAc,CAAC0vC,KAVO,EAWtB1vC,cAAc,CAAC2vC,KAXO,EAYtB3vC,cAAc,CAAC4vC,KAZO,CAAxB,CA/CE,CA8DF;;AACA,QAAI1D,KAAK,GAAGqC,gDAAY,GAAGpK,KAAf,CAAqB6K,iBAArB,CAAZ,CA/DE,CAiEF;;AACA,QAAIpvB,GAAG,GAAG4uB,uCAAK,GAAGnmC,KAAR,CAAc,UAAUxI,CAAV,EAAa;AACnC,aAAOA,CAAC,CAAC,CAAD,CAAR;AACD,KAFS,CAAV;AAGA,QAAIgwC,SAAS,GAAGjwB,GAAG,CAAC5gB,MAAM,CAAC8wC,OAAP,CAAevhC,IAAf,CAAD,CAAnB,CArEE,CAuEF;;AACA,QAAIwhC,YAAY,GAAGtB,uCAAG,GAAGuB,WAAN,CAAkB,CAAlB,EAAqBC,WAArB,CAAiC7wB,MAAjC,CAAnB,CAxEE,CA0EF;;AACA6F,IAAAA,GAAG,CACAC,SADH,CACa,UADb,EAEG3W,IAFH,CAEQshC,SAFR,EAGG9K,KAHH,GAIG5gC,MAJH,CAIU,MAJV,EAKGnC,IALH,CAKQ,GALR,EAKa+tC,YALb,EAMG/tC,IANH,CAMQ,MANR,EAMgB,UAAUnC,CAAV,EAAa;AACzB,aAAOqsC,KAAK,CAACrsC,CAAC,CAAC0O,IAAF,CAAO,CAAP,CAAD,CAAZ;AACD,KARH,EASGvM,IATH,CASQ,OATR,EASiB,WATjB,EA3EE,CAsFF;AACA;;AACAijB,IAAAA,GAAG,CACAC,SADH,CACa,UADb,EAEG3W,IAFH,CAEQshC,SAFR,EAGG9K,KAHH,GAIG5gC,MAJH,CAIU,MAJV,EAKGhC,IALH,CAKQ,UAAUtC,CAAV,EAAa;AACjB,aAAO,CAAEA,CAAC,CAAC0O,IAAF,CAAO,CAAP,IAAYwgC,GAAb,GAAoB,GAArB,EAA0BmB,OAA1B,CAAkC,CAAlC,IAAuC,GAA9C;AACD,KAPH,EAQGluC,IARH,CAQQ,WARR,EAQqB,UAAUnC,CAAV,EAAa;AAC9B,aAAO,eAAekwC,YAAY,CAACI,QAAb,CAAsBtwC,CAAtB,CAAf,GAA0C,GAAjD;AACD,KAVH,EAWG0D,KAXH,CAWS,aAXT,EAWwB,QAXxB,EAYGvB,IAZH,CAYQ,OAZR,EAYiB,OAZjB;AAcAijB,IAAAA,GAAG,CACA9gB,MADH,CACU,MADV,EAEGhC,IAFH,CAEQ6jB,MAAM,CAACM,EAAP,CAAUkJ,QAAV,EAFR,EAGGxtB,IAHH,CAGQ,GAHR,EAGa,CAHb,EAIGA,IAJH,CAIQ,GAJR,EAIa,EAAEiB,MAAM,GAAG,EAAX,IAAiB,CAJ9B,EAKGjB,IALH,CAKQ,OALR,EAKiB,cALjB,EAtGE,CA6GF;;AACA,QAAIouC,MAAM,GAAGnrB,GAAG,CACbC,SADU,CACA,SADA,EAEV3W,IAFU,CAEL29B,KAAK,CAAC7I,MAAN,EAFK,EAGV0B,KAHU,GAIV5gC,MAJU,CAIH,GAJG,EAKVnC,IALU,CAKL,OALK,EAKI,QALJ,EAMVA,IANU,CAML,WANK,EAMQ,UAAUnC,CAAV,EAAaF,CAAb,EAAgB;AACjC,UAAIsD,MAAM,GAAG4rC,cAAc,GAAGC,aAA9B;AACA,UAAI99B,MAAM,GAAI/N,MAAM,GAAGipC,KAAK,CAAC7I,MAAN,GAAezjC,MAAzB,GAAmC,CAAhD;AACA,UAAIywC,IAAI,GAAG,KAAKxB,cAAhB;AACA,UAAIlV,IAAI,GAAGh6B,CAAC,GAAGsD,MAAJ,GAAa+N,MAAxB;AACA,aAAO,eAAeq/B,IAAf,GAAsB,GAAtB,GAA4B1W,IAA5B,GAAmC,GAA1C;AACD,KAZU,CAAb;AAcAyW,IAAAA,MAAM,CACHjsC,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,OAFR,EAEiB6sC,cAFjB,EAGG7sC,IAHH,CAGQ,QAHR,EAGkB6sC,cAHlB,EAIGtrC,KAJH,CAIS,MAJT,EAIiB2oC,KAJjB,EAKG3oC,KALH,CAKS,QALT,EAKmB2oC,KALnB;AAOAkE,IAAAA,MAAM,CACH7hC,IADH,CACQshC,SADR,EAEG1rC,MAFH,CAEU,MAFV,EAGGnC,IAHH,CAGQ,GAHR,EAGa6sC,cAAc,GAAGC,aAH9B,EAIG9sC,IAJH,CAIQ,GAJR,EAIa6sC,cAAc,GAAGC,aAJ9B,EAKG3sC,IALH,CAKQ,UAAUtC,CAAV,EAAa;AACjB,UAAImmB,MAAM,CAACM,EAAP,CAAU+nB,WAAV,MAA2BluC,IAAI,CAAC+tC,QAAhC,IAA4C/tC,IAAI,CAACyf,GAAL,CAASsuB,QAAzD,EAAmE;AACjE,eAAOruC,CAAC,CAAC0O,IAAF,CAAO,CAAP,IAAY,IAAZ,GAAmB1O,CAAC,CAAC0O,IAAF,CAAO,CAAP,CAAnB,GAA+B,GAAtC;AACD,OAFD,MAEO;AACL,eAAO1O,CAAC,CAAC0O,IAAF,CAAO,CAAP,CAAP;AACD;AACF,KAXH;AAYD,GA/ID,CA+IE,OAAO3D,CAAP,EAAU;AACVhM,IAAAA,8CAAA,CAAU,oCAAV;AACAA,IAAAA,8CAAA,CAAUgM,CAAV;AACD;AACF,CApJM;AAsJP,iEAAe;AACb+d,EAAAA,IAAI,EAAJA;AADa,CAAf;;;;;;;;;;;;;;;ACxKA,IAAMS,SAAS,GAAG,SAAZA,SAAY,CAAC3oB,OAAD;AAAA,gDAGJA,OAAO,CAAC6vC,cAHJ,mCAIG7vC,OAAO,CAAC8vC,cAJX,8BAKF9vC,OAAO,CAAC+vC,UALN,iFASD/vC,OAAO,CAACgwC,gBATP,0BAUNhwC,OAAO,CAACiwC,iBAVF,iCAWCjwC,OAAO,CAACS,UAXT,kDAcCT,OAAO,CAACS,UAdT,0BAeNT,OAAO,CAACkwC,mBAfF,8BAgBFlwC,OAAO,CAACmwC,kBAhBN,sEAoBNnwC,OAAO,CAACowC,kBApBF,iCAqBCpwC,OAAO,CAACS,UArBT,+BAsBDT,OAAO,CAACqwC,iBAtBP;AAAA,CAAlB;;AA0BA,iEAAe1nB,SAAf;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AAEA,IAAIrI,SAAS,GAAG,EAAhB;AACA,IAAIgwB,iBAAiB,GAAG,EAAxB;AACA,IAAIC,YAAY,GAAG,EAAnB;AACA,IAAIC,aAAa,GAAG,EAApB;AACA,IAAIC,QAAQ,GAAG,EAAf;AAEA,IAAMC,eAAe,GAAG;AACtBC,EAAAA,WAAW,EAAE,aADS;AAEtBC,EAAAA,sBAAsB,EAAE,wBAFF;AAGtBC,EAAAA,qBAAqB,EAAE,uBAHD;AAItBC,EAAAA,uBAAuB,EAAE,yBAJH;AAKtBC,EAAAA,oBAAoB,EAAE,sBALA;AAMtBC,EAAAA,iBAAiB,EAAE;AANG,CAAxB;AASA,IAAMC,SAAS,GAAG;AAChBC,EAAAA,QAAQ,EAAE,KADM;AAEhBC,EAAAA,QAAQ,EAAE,QAFM;AAGhBC,EAAAA,SAAS,EAAE;AAHK,CAAlB;AAMA,IAAMC,UAAU,GAAG;AACjBC,EAAAA,eAAe,EAAE,UADA;AAEjBC,EAAAA,oBAAoB,EAAE,eAFL;AAGjBC,EAAAA,iBAAiB,EAAE,YAHF;AAIjBC,EAAAA,WAAW,EAAE;AAJI,CAAnB;AAOA,IAAMC,aAAa,GAAG;AACpBC,EAAAA,QAAQ,EAAE,UADU;AAEpBC,EAAAA,MAAM,EAAE,QAFY;AAGpBC,EAAAA,OAAO,EAAE,SAHW;AAIpBC,EAAAA,SAAS,EAAE,WAJS;AAKpBC,EAAAA,QAAQ,EAAE,UALU;AAMpBC,EAAAA,OAAO,EAAE,SANW;AAOpBC,EAAAA,MAAM,EAAE;AAPY,CAAtB;AAUO,IAAMxxB,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BlS,IAA9B,EAAoC;AAChE2R,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDlS,IAApD;AACD,CAFM;;AAIP,IAAMyjC,cAAc,GAAG,SAAjBA,cAAiB,CAAC5jC,IAAD,EAAOG,IAAP,EAAgB;AACrC,MAAI,OAAO8hC,YAAY,CAACjiC,IAAD,CAAnB,KAA8B,WAAlC,EAA+C;AAC7CiiC,IAAAA,YAAY,CAACjiC,IAAD,CAAZ,GAAqB;AACnBA,MAAAA,IAAI,EAAJA,IADmB;AAEnBG,MAAAA,IAAI,EAAJA,IAFmB;AAInBrN,MAAAA,EAAE,EAAEkvC,iBAAiB,CAAClvC,EAJH;AAKnBM,MAAAA,IAAI,EAAE4uC,iBAAiB,CAAC5uC,IALL;AAMnBywC,MAAAA,IAAI,EAAE7B,iBAAiB,CAAC6B,IANL;AAOnBC,MAAAA,YAAY,EAAE9B,iBAAiB,CAAC8B;AAPb,KAArB;AASD;;AACD9B,EAAAA,iBAAiB,GAAG,EAApB;AAEA,SAAOC,YAAY,CAACjiC,IAAD,CAAnB;AACD,CAfD;;AAiBA,IAAM+jC,eAAe,GAAG,SAAlBA,eAAkB;AAAA,SAAM9B,YAAN;AAAA,CAAxB;;AAEA,IAAM+B,WAAW,GAAG,SAAdA,WAAc,CAAClxC,EAAD,EAAQ;AAC1B,MAAI,OAAOkvC,iBAAP,IAA4B,WAAhC,EAA6C;AAC3CA,IAAAA,iBAAiB,CAAClvC,EAAlB,GAAuBA,EAAvB;AACD;AACF,CAJD;;AAMA,IAAMmxC,aAAa,GAAG,SAAhBA,aAAgB,CAAC7wC,IAAD,EAAU;AAC9B,MAAI,OAAO4uC,iBAAP,IAA4B,WAAhC,EAA6C;AAC3CA,IAAAA,iBAAiB,CAAC5uC,IAAlB,GAAyBA,IAAzB;AACD;AACF,CAJD;;AAMA,IAAM8wC,aAAa,GAAG,SAAhBA,aAAgB,CAACL,IAAD,EAAU;AAC9B,MAAI,OAAO7B,iBAAP,IAA4B,WAAhC,EAA6C;AAC3CA,IAAAA,iBAAiB,CAAC6B,IAAlB,GAAyBA,IAAzB;AACD;AACF,CAJD;;AAMA,IAAMM,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACL,YAAD,EAAkB;AAC9C,MAAI,OAAO9B,iBAAP,IAA4B,WAAhC,EAA6C;AAC3CA,IAAAA,iBAAiB,CAAC8B,YAAlB,GAAiCA,YAAjC;AACD;AACF,CAJD;;AAMA,IAAMM,UAAU,GAAG,SAAbA,UAAa,CAACpkC,IAAD,EAAU;AAC3B,MAAI,OAAOmiC,QAAQ,CAACniC,IAAD,CAAf,KAA0B,WAA9B,EAA2C;AACzCmiC,IAAAA,QAAQ,CAACniC,IAAD,CAAR,GAAiB;AACfA,MAAAA,IAAI,EAAJA,IADe;AAGfG,MAAAA,IAAI,EAAE+hC,aAAa,CAAC/hC,IAHL;AAIfkkC,MAAAA,MAAM,EAAEnC,aAAa,CAACmC;AAJP,KAAjB;AAMAx0C,IAAAA,6CAAA,CAAS,yBAAT,EAAoCmQ,IAApC;AACD;;AACDkiC,EAAAA,aAAa,GAAG,EAAhB;AAEA,SAAOC,QAAQ,CAACniC,IAAD,CAAf;AACD,CAbD;;AAeA,IAAMskC,WAAW,GAAG,SAAdA,WAAc;AAAA,SAAMnC,QAAN;AAAA,CAApB;;AAEA,IAAMoC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACpkC,IAAD,EAAU;AAClC,MAAI,OAAO+hC,aAAP,IAAwB,WAA5B,EAAyC;AACvCA,IAAAA,aAAa,CAAC/hC,IAAd,GAAqBA,IAArB;AACD;AACF,CAJD;;AAMA,IAAMqkC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACH,MAAD,EAAY;AACtC,MAAI,OAAOnC,aAAP,IAAwB,WAA5B,EAAyC;AACvCA,IAAAA,aAAa,CAACmC,MAAd,GAAuBA,MAAvB;AACD;AACF,CAJD;;AAMA,IAAMxkB,eAAe,GAAG,SAAlBA,eAAkB,CAAC1f,IAAD,EAAOskC,GAAP,EAAYC,GAAZ,EAAoB;AAC1C1yB,EAAAA,SAAS,CAAC5f,IAAV,CAAe;AACb+N,IAAAA,IAAI,EAAJA,IADa;AAEbskC,IAAAA,GAAG,EAAHA,GAFa;AAGbC,IAAAA,GAAG,EAAHA;AAHa,GAAf;AAKD,CAND;;AAQA,IAAMnkB,gBAAgB,GAAG,SAAnBA,gBAAmB;AAAA,SAAMvO,SAAN;AAAA,CAAzB;;AAEA,IAAMnc,KAAK,GAAG,SAARA,KAAQ,GAAM;AAClBmc,EAAAA,SAAS,GAAG,EAAZ;AACAgwB,EAAAA,iBAAiB,GAAG,EAApB;AACAC,EAAAA,YAAY,GAAG,EAAf;AACAC,EAAAA,aAAa,GAAG,EAAhB;AACAC,EAAAA,QAAQ,GAAG,EAAX;AACD,CAND;;AAQA,iEAAe;AACbC,EAAAA,eAAe,EAAfA,eADa;AAEbO,EAAAA,SAAS,EAATA,SAFa;AAGbI,EAAAA,UAAU,EAAVA,UAHa;AAIbK,EAAAA,aAAa,EAAbA,aAJa;AAMbjxB,EAAAA,cAAc,EAAdA,cANa;AAOb1gB,EAAAA,SAAS,EAAE;AAAA,WAAMmgB,8CAAA,GAAsB+yB,GAA5B;AAAA,GAPE;AASbf,EAAAA,cAAc,EAAdA,cATa;AAUbG,EAAAA,eAAe,EAAfA,eAVa;AAWbC,EAAAA,WAAW,EAAXA,WAXa;AAYbC,EAAAA,aAAa,EAAbA,aAZa;AAabC,EAAAA,aAAa,EAAbA,aAba;AAcbC,EAAAA,qBAAqB,EAArBA,qBAda;AAgBbC,EAAAA,UAAU,EAAVA,UAhBa;AAiBbE,EAAAA,WAAW,EAAXA,WAjBa;AAkBbC,EAAAA,iBAAiB,EAAjBA,iBAlBa;AAmBbC,EAAAA,mBAAmB,EAAnBA,mBAnBa;AAqBb3kB,EAAAA,eAAe,EAAfA,eArBa;AAsBbU,EAAAA,gBAAgB,EAAhBA,gBAtBa;AAwBb1qB,EAAAA,KAAK,EAALA;AAxBa,CAAf;;;;;;;;;;;;;;;ACxIA,IAAM+uC,UAAU,GAAG;AACjBvB,EAAAA,QAAQ,EAAE,UADO;AAEjBwB,EAAAA,KAAK,EAAE;AAFU,CAAnB;;AAKA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAAC/Z,UAAD,EAAa35B,IAAb,EAAsB;AAC9C,MAAI2zC,YAAY,GAAGha,UAAU,CAC1B31B,MADgB,CACT,MADS,EAEhBA,MAFgB,CAET,QAFS,EAGhBnC,IAHgB,CAGX,IAHW,EAGL2xC,UAAU,CAACvB,QAAX,GAAsB,cAHjB,EAIhBpwC,IAJgB,CAIX,MAJW,EAIH,CAJG,EAKhBA,IALgB,CAKX,MALW,EAKH7B,IAAI,CAACkgB,WAAL,GAAmB,CALhB,EAMhBre,IANgB,CAMX,aANW,EAMI7B,IAAI,CAACkgB,WANT,EAOhBre,IAPgB,CAOX,cAPW,EAOK7B,IAAI,CAACkgB,WAPV,EAQhBre,IARgB,CAQX,QARW,EAQD,MARC,EAShBmC,MATgB,CAST,GATS,CAAnB;AAWA2vC,EAAAA,YAAY,CACT3vC,MADH,CACU,QADV,EAEGnC,IAFH,CAEQ,IAFR,EAEc7B,IAAI,CAACkgB,WAAL,GAAmB,CAFjC,EAGGre,IAHH,CAGQ,IAHR,EAGc7B,IAAI,CAACkgB,WAAL,GAAmB,CAHjC,EAIGre,IAJH,CAIQ,GAJR,EAIa7B,IAAI,CAACkgB,WAAL,GAAmB,CAJhC,EAKE;AACA;AANF,GAOGre,IAPH,CAOQ,MAPR,EAOgB,MAPhB;AASA8xC,EAAAA,YAAY,CACT3vC,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,IAFR,EAEc,CAFd,EAGGA,IAHH,CAGQ,IAHR,EAGc7B,IAAI,CAACkgB,WAHnB,EAIGre,IAJH,CAIQ,IAJR,EAIc7B,IAAI,CAACkgB,WAAL,GAAmB,CAJjC,EAKGre,IALH,CAKQ,IALR,EAKc7B,IAAI,CAACkgB,WAAL,GAAmB,CALjC,EAME;AANF,GAOGre,IAPH,CAOQ,cAPR,EAOwB,CAPxB;AASA8xC,EAAAA,YAAY,CACT3vC,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,IAFR,EAEc,CAFd,EAGGA,IAHH,CAGQ,IAHR,EAGc7B,IAAI,CAACkgB,WAHnB,EAIGre,IAJH,CAIQ,IAJR,EAIc7B,IAAI,CAACkgB,WAAL,GAAmB,CAJjC,EAKGre,IALH,CAKQ,IALR,EAKc7B,IAAI,CAACkgB,WAAL,GAAmB,CALjC,EAME;AANF,GAOGre,IAPH,CAOQ,cAPR,EAOwB,CAPxB;AASA83B,EAAAA,UAAU,CACP31B,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc2xC,UAAU,CAACC,KAAX,GAAmB,cAHjC,EAIG5xC,IAJH,CAIQ,MAJR,EAIgB7B,IAAI,CAACkgB,WAJrB,EAKGre,IALH,CAKQ,MALR,EAKgB,MAAM7B,IAAI,CAACkgB,WAL3B,EAMGre,IANH,CAMQ,aANR,EAMuB7B,IAAI,CAACkgB,WAN5B,EAOGre,IAPH,CAOQ,cAPR,EAOwB7B,IAAI,CAACkgB,WAP7B,EAQGre,IARH,CAQQ,QARR,EAQkB,MARlB,EASGmC,MATH,CASU,MATV,EAUGnC,IAVH,CAWI,GAXJ,yBAaO7B,IAAI,CAACkgB,WAbZ,cAa2BlgB,IAAI,CAACkgB,WAAL,GAAmB,CAb9C,sBAcOlgB,IAAI,CAACkgB,WAdZ,cAc2BlgB,IAAI,CAACkgB,WAAL,GAAmB,CAd9C,wBAeSlgB,IAAI,CAACkgB,WAfd,GAiBGre,IAjBH,CAiBQ,cAjBR,EAiBwB,CAjBxB,EAvC8C,CAyD9C;AACD,CA1DD;;AA4DA,iEAAe;AACb2xC,EAAAA,UAAU,EAAVA,UADa;AAEbE,EAAAA,iBAAiB,EAAjBA;AAFa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjEA;AACA;CAEA;;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAM1zC,IAAI,GAAG,EAAb;AACA,IAAI0zB,MAAM,GAAG,CAAb;AAEO,IAAM5L,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAI,OAAOA,GAAP,KAAe,WAAnB,EAAgC;AAC9B;AACD;;AACD,MAAMxnB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYwnB,GAAZ,CAAb;;AACA,OAAK,IAAIvoB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,IAAI,CAACd,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpCQ,IAAAA,IAAI,CAACO,IAAI,CAACf,CAAD,CAAL,CAAJ,GAAgBuoB,GAAG,CAACxnB,IAAI,CAACf,CAAD,CAAL,CAAnB;AACD;AACF,CARM;;AAUP,IAAMq0C,WAAW,GAAG,SAAdA,WAAc,CAACla,UAAD,EAAaj4B,EAAb,EAAoB;AACtC,SAAOi4B,UAAU,CACd/3B,MADI,CACG,MADH,EACW,MAAMF,EADjB,EAEJG,IAFI,CAEC,OAFD,EAEU,YAFV,EAGJA,IAHI,CAGC,GAHD,EAGM,CAHN,EAIJA,IAJI,CAIC,GAJD,EAIM,CAJN,EAKJA,IALI,CAKC,OALD,EAKU7B,IAAI,CAAC+f,cAAL,GAAsB,IALhC,EAMJle,IANI,CAMC,QAND,EAMW7B,IAAI,CAACggB,eAAL,GAAuB,IANlC,CAAP;AAOD,CARD;;AAUA,IAAM8zB,YAAY,GAAG,SAAfA,YAAe,CAACna,UAAD,EAAaj4B,EAAb,EAAiBqyC,IAAjB,EAA0B;AAC7C,MAAIxwC,CAAC,GAAGvD,IAAI,CAAC+f,cAAL,GAAsB,CAA9B;AAEA,MAAI/I,KAAK,GAAG2iB,UAAU,CACnB31B,MADS,CACF,MADE,EAETnC,IAFS,CAEJ,OAFI,EAEK,uBAFL,EAGTA,IAHS,CAGJ,IAHI,EAGEH,EAHF,EAITG,IAJS,CAIJ,GAJI,EAIC0B,CAJD,EAKT1B,IALS,CAKJ,GALI,EAKC7B,IAAI,CAACigB,YALN,EAMTpe,IANS,CAMJ,mBANI,EAMiB,SANjB,CAAZ,CAH6C,CAU7C;AACA;AACA;AACA;;AACA,MAAIrC,CAAC,GAAG,CAAR;AACAu0C,EAAAA,IAAI,CAACtzC,OAAL,CAAa,UAACuzC,OAAD,EAAa;AACxB,QAAIx0C,CAAC,IAAI,CAAT,EAAY;AACVwX,MAAAA,KAAK,CACFhT,MADH,CACU,OADV,EAEGnC,IAFH,CAEQ,aAFR,EAEuB,QAFvB,EAGGA,IAHH,CAGQ,GAHR,EAGa7B,IAAI,CAAC+f,cAAL,GAAsB,CAHnC,EAIGle,IAJH,CAIQ,IAJR,EAIc,CAJd,EAKGG,IALH,CAKQgyC,OALR;AAMD,KAPD,MAOO;AACLh9B,MAAAA,KAAK,CACFhT,MADH,CACU,OADV,EAEGnC,IAFH,CAEQ,aAFR,EAEuB,QAFvB,EAGGA,IAHH,CAGQ,GAHR,EAGa7B,IAAI,CAAC+f,cAAL,GAAsB,CAHnC,EAIGle,IAJH,CAIQ,IAJR,EAIc7B,IAAI,CAACkgB,WAAL,GAAmB,IAJjC,EAKGle,IALH,CAKQgyC,OALR;AAMD;;AACDx0C,IAAAA,CAAC;AACF,GAjBD;AAmBA,MAAIy0C,QAAQ,GAAG,MAAMj0C,IAAI,CAACigB,YAA1B;AACA,MAAIi0B,WAAW,GAAG10C,CAAC,GAAGQ,IAAI,CAACkgB,WAAT,GAAuB,IAAzC;AACA,MAAIi0B,MAAM,GAAGF,QAAQ,GAAGC,WAAxB;AAEAva,EAAAA,UAAU,CACP31B,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,OAFR,EAEiB,gBAFjB,EAGGA,IAHH,CAGQ,IAHR,EAGc,GAHd,EAIGA,IAJH,CAIQ,IAJR,EAIc7B,IAAI,CAAC+f,cAJnB,EAKGle,IALH,CAKQ,IALR,EAKcsyC,MALd,EAMGtyC,IANH,CAMQ,IANR,EAMcsyC,MANd;AAQA,SAAO;AACLC,IAAAA,SAAS,EAAEp9B,KADN;AAELxT,IAAAA,CAAC,EAAE2wC;AAFE,GAAP;AAID,CAlDD;;AAoDA,IAAME,WAAW,GAAG,SAAdA,WAAc,CAAC1a,UAAD,EAAaj4B,EAAb,EAAiBqyC,IAAjB,EAAuBO,MAAvB,EAAkC;AACpD,MAAIhvB,IAAI,GAAGqU,UAAU,CAClB31B,MADQ,CACD,MADC,EAERnC,IAFQ,CAEH,OAFG,EAEM,cAFN,EAGRA,IAHQ,CAGH,IAHG,EAGGH,EAHH,EAIRG,IAJQ,CAIH,GAJG,EAIE7B,IAAI,CAACigB,YAJP,EAKRpe,IALQ,CAKH,GALG,EAKEyyC,MALF,EAMRzyC,IANQ,CAMH,mBANG,EAMkB,SANlB,CAAX,CADoD,CAQpD;AACA;AACA;AACA;;AAEA,MAAI0yC,UAAU,GAAG,CAAjB;AACA,MAAMC,SAAS,GAAG,EAAlB;AACA,MAAIC,WAAW,GAAG,EAAlB;AACAV,EAAAA,IAAI,CAACtzC,OAAL,CAAa,UAACuzC,OAAD,EAAa;AACxB,QAAIU,cAAc,GAAGV,OAAO,CAACv0C,MAA7B;;AACA,WAAOi1C,cAAc,GAAGF,SAAjB,IAA8BD,UAAU,GAAG,CAAlD,EAAqD;AACnD,UAAII,SAAS,GAAGX,OAAO,CAACrxB,SAAR,CAAkB,CAAlB,EAAqB6xB,SAArB,CAAhB;AACAR,MAAAA,OAAO,GAAGA,OAAO,CAACrxB,SAAR,CAAkB6xB,SAAlB,EAA6BR,OAAO,CAACv0C,MAArC,CAAV;AACAi1C,MAAAA,cAAc,GAAGV,OAAO,CAACv0C,MAAzB;AACAg1C,MAAAA,WAAW,CAACA,WAAW,CAACh1C,MAAb,CAAX,GAAkCk1C,SAAlC;AACAJ,MAAAA,UAAU;AACX;;AACD,QAAIA,UAAU,IAAI,CAAlB,EAAqB;AACnB,UAAIK,OAAO,GAAGH,WAAW,CAACA,WAAW,CAACh1C,MAAZ,GAAqB,CAAtB,CAAzB;AACAg1C,MAAAA,WAAW,CAACA,WAAW,CAACh1C,MAAZ,GAAqB,CAAtB,CAAX,GAAsCm1C,OAAO,CAACjyB,SAAR,CAAkB,CAAlB,EAAqBiyB,OAAO,CAACn1C,MAAR,GAAiB,CAAtC,IAA2C,KAAjF;AACD,KAHD,MAGO;AACLg1C,MAAAA,WAAW,CAACA,WAAW,CAACh1C,MAAb,CAAX,GAAkCu0C,OAAlC;AACD;;AACDO,IAAAA,UAAU,GAAG,CAAb;AACD,GAhBD;AAkBAE,EAAAA,WAAW,CAACh0C,OAAZ,CAAoB,UAACuzC,OAAD,EAAa;AAC/B1uB,IAAAA,IAAI,CAACthB,MAAL,CAAY,OAAZ,EAAqBnC,IAArB,CAA0B,GAA1B,EAA+B7B,IAAI,CAACigB,YAApC,EAAkDpe,IAAlD,CAAuD,IAAvD,EAA6D7B,IAAI,CAACkgB,WAAlE,EAA+Ele,IAA/E,CAAoFgyC,OAApF;AACD,GAFD;AAIA,SAAO1uB,IAAP;AACD,CAvCD;;AAyCA,IAAMuvB,YAAY,GAAG,SAAfA,YAAe,CAAClb,UAAD,EAAa3tB,OAAb,EAAsBhM,IAAtB,EAA4BqsB,GAA5B,EAAoC;AACvD;AACA,MAAM0H,GAAG,GAAG/nB,OAAO,CAACxK,IAAR,GAAewyB,cAAf,EAAZ;AACA,MAAMC,UAAU,GAAGjoB,OAAO,CAACxK,IAAR,GAAe0yB,gBAAf,CAAgCH,GAAG,GAAG,GAAtC,CAAnB,CAHuD,CAKvD;;AACA,MAAMI,OAAO,GAAG,QAAQT,MAAxB;AACAA,EAAAA,MAAM;AAEN,MAAMU,SAAS,GAAGuF,UAAU,CACzB31B,MADe,CACR,MADQ,EAEfnC,IAFe,CAEV,OAFU,EAED,uBAFC,EAGfA,IAHe,CAGV,IAHU,EAGJsyB,OAHI,EAIftyB,IAJe,CAIV,GAJU,EAILoyB,UAAU,CAAC1wB,CAJN,EAKf1B,IALe,CAKV,GALU,EAKLoyB,UAAU,CAACzwB,CALN,EAMf3B,IANe,CAMV,aANU,EAMK,QANL,EAOfA,IAPe,CAOV,mBAPU,EAOW,QAPX,EAQhB;AARgB,GASfG,IATe,CASVqqB,GATU,CAAlB,CATuD,CAoBvD;;AACA,MAAMmE,SAAS,GAAG4D,SAAS,CAAC5yB,IAAV,GAAiBc,OAAjB,EAAlB,CArBuD,CAuBvD;;AACAq3B,EAAAA,UAAU,CACP/3B,MADH,CACU,MADV,EACkB,MAAMuyB,OADxB,EAEGtyB,IAFH,CAEQ,OAFR,EAEiB,iBAFjB,EAGGA,IAHH,CAGQ,GAHR,EAGaoyB,UAAU,CAAC1wB,CAAX,GAAeitB,SAAS,CAAC3tB,KAAV,GAAkB,CAH9C,EAIGhB,IAJH,CAIQ,GAJR,EAIaoyB,UAAU,CAACzwB,CAAX,GAAegtB,SAAS,CAAC1tB,MAAV,GAAmB,CAJ/C,EAKGjB,IALH,CAKQ,OALR,EAKiB2uB,SAAS,CAAC3tB,KAL3B,EAMGhB,IANH,CAMQ,QANR,EAMkB2uB,SAAS,CAAC1tB,MAN5B,EAOGjB,IAPH,CAOQ,MAPR,EAOgB,OAPhB,EAQGA,IARH,CAQQ,cARR,EAQwB,KARxB;AASD,CAjCD;;AAmCA,IAAM8xB,0BAA0B,GAAG,SAA7BA,0BAA6B,CAAU7O,GAAV,EAAegK,GAAf,EAAoBxI,CAApB,EAAuB1kB,MAAvB,EAA+B;AAChE;AACA,MAAMkF,IAAI,GAAGwf,CAAC,CAACxf,IAAF,CAAOguC,aAAa,CAAChmB,GAAG,CAACukB,GAAL,CAApB,EAA+ByB,aAAa,CAAChmB,GAAG,CAACwkB,GAAL,CAA5C,CAAb,CAFgE,CAIhE;;AACA,MAAM1nC,YAAY,GAAGpF,wCAAI,GACtBjD,CADkB,CAChB,UAAU7D,CAAV,EAAa;AACd,WAAOA,CAAC,CAAC6D,CAAT;AACD,GAHkB,EAIlBC,CAJkB,CAIhB,UAAU9D,CAAV,EAAa;AACd,WAAOA,CAAC,CAAC8D,CAAT;AACD,GANkB,CAArB,CALgE,CAahE;;AACA,MAAMwI,OAAO,GAAG8Y,GAAG,CAChBljB,MADa,CACN,MADM,EACE,MAAMA,MADR,EAEbC,IAFa,CAER,OAFQ,EAEC,qBAFD,EAGbA,IAHa,CAGR,GAHQ,EAGH+J,YAAY,CAAC9E,IAAI,CAACoD,MAAN,CAHT,EAIbrI,IAJa,CAIR,MAJQ,EAIA,MAJA,CAAhB;;AAMA,MAAIitB,GAAG,CAAC/f,IAAJ,IAAY6kC,6EAAhB,EAAsD;AACpD5nC,IAAAA,OAAO,CAACnK,IAAR,CACE,cADF,EAEE,SAAS4e,6DAAA,CAAczgB,IAAI,CAACmM,mBAAnB,CAAT,GAAmD,GAAnD,GAAyD2iB,GAAG,CAAC/f,IAA7D,GAAoE,cAApE,GAAqF,GAFvF;AAID,GALD,MAKO;AACL/C,IAAAA,OAAO,CAACnK,IAAR,CAAa,kBAAb,EAAiC,MAAjC;AACAmK,IAAAA,OAAO,CAACnK,IAAR,CACE,YADF,EAEE,SACE4e,6DAAA,CAAczgB,IAAI,CAACmM,mBAAnB,CADF,GAEE,GAFF,GAGE8C,4EAHF,GAIE,cAJF,GAKE,GAPJ;AASD;;AAED4lC,EAAAA,YAAY,CAAC/vB,GAAD,EAAM9Y,OAAN,EAAehM,IAAf,cAA0B8uB,GAAG,CAAC/f,IAA9B,QAAZ;AAEA;AACD,CAzCD;;AA2CO,IAAMgmC,QAAQ,GAAG,SAAXA,QAAW,CAACC,IAAD,EAAOnqC,KAAP,EAAcioB,OAAd,EAA0B;AAChDj0B,EAAAA,MAAM,CAAC0B,IAAP,CAAYy0C,IAAZ,EAAkBv0C,OAAlB,CAA0B,UAACw0C,OAAD,EAAa;AACrC,QAAI1B,GAAG,GAAGyB,IAAI,CAACC,OAAD,CAAd;AACAA,IAAAA,OAAO,GAAGH,aAAa,CAACG,OAAD,CAAvB;AACAx2C,IAAAA,6CAAA,CAAS,yBAAT,EAAoCw2C,OAApC;AAEA,QAAM9kB,SAAS,GAAG2C,OAAO,CAAC9uB,MAAR,CAAe,GAAf,EAAoBnC,IAApB,CAAyB,IAAzB,EAA+BozC,OAA/B,CAAlB;AACA,QAAMjiB,MAAM,GAAG,SAASiiB,OAAxB;AACA,QAAM7hB,QAAQ,GAAGygB,WAAW,CAAC1jB,SAAD,EAAY6C,MAAZ,CAA5B;AAEA,QAAIhlB,KAAK,GAAG,EAAZ;AAEA,QAAIknC,aAAa,GAAGpB,YAAY,CAAC3jB,SAAD,EAAY8kB,OAAO,GAAG,QAAtB,EAAgC,aACzD1B,GAAG,CAACxkC,IADqD,mBAE3DwkC,GAAG,CAAC3kC,IAFuD,EAAhC,CAAhC;AAKAZ,IAAAA,KAAK,CAAChN,IAAN,CAAWk0C,aAAa,CAACd,SAAzB;AAEA,QAAIe,QAAQ,GAAGd,WAAW,CACxBlkB,SADwB,EAExB8kB,OAAO,GAAG,OAFc,EAGxB,eACS1B,GAAG,CAAC7xC,EADb,mBAEW6xC,GAAG,CAACvxC,IAFf,mBAGWuxC,GAAG,CAACd,IAHf,2BAImBc,GAAG,CAACb,YAJvB,EAHwB,EASxBwC,aAAa,CAAC1xC,CATU,CAA1B;AAYAwK,IAAAA,KAAK,CAAChN,IAAN,CAAWm0C,QAAX;AAEA,QAAM9hB,QAAQ,GAAGD,QAAQ,CAAC5xB,IAAT,GAAgBc,OAAhB,EAAjB,CAhCqC,CAkCrC;;AACAuI,IAAAA,KAAK,CAAC0D,OAAN,CAAc0mC,OAAd,EAAuB;AACrBpyC,MAAAA,KAAK,EAAEwwB,QAAQ,CAACxwB,KADK;AAErBC,MAAAA,MAAM,EAAEuwB,QAAQ,CAACvwB,MAFI;AAGrBwB,MAAAA,KAAK,EAAE,MAHc;AAIrB5C,MAAAA,EAAE,EAAEuzC;AAJiB,KAAvB;AAMD,GAzCD;AA0CD,CA3CM;AA6CA,IAAMG,YAAY,GAAG,SAAfA,YAAe,CAACC,GAAD,EAAMxqC,KAAN,EAAaioB,OAAb,EAAyB;AACnDj0B,EAAAA,MAAM,CAAC0B,IAAP,CAAY80C,GAAZ,EAAiB50C,OAAjB,CAAyB,UAAC60C,MAAD,EAAY;AACnC,QAAI1wC,EAAE,GAAGywC,GAAG,CAACC,MAAD,CAAZ;AACA,QAAM5zC,EAAE,GAAGozC,aAAa,CAACQ,MAAD,CAAxB;AAEA,QAAMnlB,SAAS,GAAG2C,OAAO,CAAC9uB,MAAR,CAAe,GAAf,EAAoBnC,IAApB,CAAyB,IAAzB,EAA+BH,EAA/B,CAAlB;AACA,QAAMsxB,MAAM,GAAG,aAAatxB,EAA5B;AACA,QAAM0xB,QAAQ,GAAGygB,WAAW,CAAC1jB,SAAD,EAAY6C,MAAZ,CAA5B;AAEA,QAAIhlB,KAAK,GAAG,EAAZ;AAEA,QAAIknC,aAAa,GAAGpB,YAAY,CAAC3jB,SAAD,EAAY6C,MAAM,GAAG,QAArB,EAA+B,0BAAmBsiB,MAAnB,EAA/B,CAAhC;AAEAtnC,IAAAA,KAAK,CAAChN,IAAN,CAAWk0C,aAAa,CAACd,SAAzB;AAEA,QAAIe,QAAQ,GAAGd,WAAW,CACxBlkB,SADwB,EAExB6C,MAAM,GAAG,OAFe,EAGxB,iBAAUpuB,EAAE,CAACmK,IAAH,IAAW,eAArB,sBAAoDnK,EAAE,CAACquC,MAAH,IAAa,MAAjE,EAHwB,EAIxBiC,aAAa,CAAC1xC,CAJU,CAA1B;AAOAwK,IAAAA,KAAK,CAAChN,IAAN,CAAWm0C,QAAX;AAEA,QAAM9hB,QAAQ,GAAGD,QAAQ,CAAC5xB,IAAT,GAAgBc,OAAhB,EAAjB,CAvBmC,CAyBnC;;AACAuI,IAAAA,KAAK,CAAC0D,OAAN,CAAc7M,EAAd,EAAkB;AAChBmB,MAAAA,KAAK,EAAEwwB,QAAQ,CAACxwB,KADA;AAEhBC,MAAAA,MAAM,EAAEuwB,QAAQ,CAACvwB,MAFD;AAGhBwB,MAAAA,KAAK,EAAE,MAHS;AAIhB5C,MAAAA,EAAE,EAAEA;AAJY,KAAlB;AAMD,GAhCD;AAiCD,CAlCM;;AAoCP,IAAM8xB,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAChG,aAAD,EAAgBlH,CAAhB,EAAsB;AAC7CkH,EAAAA,aAAa,CAAC/sB,OAAd,CAAsB,UAAU+I,CAAV,EAAa;AACjC,QAAI6pC,GAAG,GAAGyB,aAAa,CAACtrC,CAAC,CAAC6pC,GAAH,CAAvB;AACA,QAAIC,GAAG,GAAGwB,aAAa,CAACtrC,CAAC,CAAC8pC,GAAH,CAAvB;AACAhtB,IAAAA,CAAC,CAAC7S,OAAF,CAAU4/B,GAAV,EAAeC,GAAf,EAAoB;AAAE7f,MAAAA,YAAY,EAAEjqB;AAAhB,KAApB;AACD,GAJD;AAKA,SAAOgkB,aAAP;AACD,CAPD;;AASA,IAAM8F,cAAc,GAAG,SAAjBA,cAAiB,CAAUR,OAAV,EAAmBjoB,KAAnB,EAA0B;AAC/CA,EAAAA,KAAK,CAACmD,KAAN,GAAcvN,OAAd,CAAsB,UAAUuK,CAAV,EAAa;AACjC,QAAI,OAAOA,CAAP,KAAa,WAAb,IAA4B,OAAOH,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,CAAP,KAAyB,WAAzD,EAAsE;AACpE8nB,MAAAA,OAAO,CAAC1xB,MAAR,CAAe,MAAM4J,CAArB;AACA8nB,MAAAA,OAAO,CACJ1xB,MADH,CACU,MAAM4J,CADhB,EAEGnJ,IAFH,CAGI,WAHJ,EAII,gBACGgJ,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,EAAczH,CAAd,GAAkBsH,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,EAAcnI,KAAd,GAAsB,CAD3C,IAEE,GAFF,IAGGgI,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,EAAcxH,CAAd,GAAkBqH,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,EAAclI,MAAd,GAAuB,CAH5C,IAIE,IARN;AAUD;AACF,GAdD;AAeA;AACD,CAjBD;;AAmBA,IAAMgyC,aAAa,GAAG,SAAhBA,aAAgB,CAACh8B,GAAD,EAAS;AAC7B,SAAOA,GAAG,CAACpT,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,EAAuBA,OAAvB,CAA+B,KAA/B,EAAsC,GAAtC,CAAP;AACD,CAFD;;AAIO,IAAM8iB,IAAI,GAAG,SAAPA,IAAO,CAACxmB,IAAD,EAAON,EAAP,EAAc;AAChCmkB,EAAAA,iEAAA,GAAY+tB,sDAAZ;AACA/tB,EAAAA,uEAAA;AACAA,EAAAA,oEAAA,CAAa7jB,IAAb;AAEA,MAAM8iB,GAAG,GAAG1jB,0CAAM,gBAASM,EAAT,QAAlB;AACAuN,EAAAA,6EAAA,CAA0B6V,GAA1B,EAA+B9kB,IAA/B;AAEA,MAAMsmB,CAAC,GAAG,IAAI3Z,uDAAJ,CAAmB;AAC3BgI,IAAAA,UAAU,EAAE,KADe;AAE3BC,IAAAA,QAAQ,EAAE,KAFiB;AAG3Byf,IAAAA,QAAQ,EAAE;AAHiB,GAAnB,EAKPxf,QALO,CAKE;AACR9G,IAAAA,OAAO,EAAE/N,IAAI,CAACmf,eADN;AAERnK,IAAAA,OAAO,EAAE,EAFD;AAGRC,IAAAA,OAAO,EAAE,EAHD;AAIRH,IAAAA,OAAO,EAAE,GAJD;AAKRwf,IAAAA,OAAO,EAAE,GALD;AAMRvf,IAAAA,OAAO,EAAE;AAND,GALF,EAaPG,mBAbO,CAaa,YAAY;AAC/B,WAAO,EAAP;AACD,GAfO,CAAV;AAiBA,MAAI27B,YAAY,GAAG+C,sEAAA,EAAnB;AACA,MAAI7C,QAAQ,GAAG6C,kEAAA,EAAf;AACA,MAAIpmB,aAAa,GAAGomB,uEAAA,EAApB;AAEAmB,EAAAA,QAAQ,CAAClE,YAAD,EAAevqB,CAAf,EAAkBxB,GAAlB,CAAR;AACAswB,EAAAA,YAAY,CAACrE,QAAD,EAAWzqB,CAAX,EAAcxB,GAAd,CAAZ;AACA0O,EAAAA,gBAAgB,CAAChG,aAAD,EAAgBlH,CAAhB,CAAhB;AACA5Z,EAAAA,mDAAA,CAAa4Z,CAAb;AACAgN,EAAAA,cAAc,CAACxO,GAAD,EAAMwB,CAAN,CAAd;AAEAkH,EAAAA,aAAa,CAAC/sB,OAAd,CAAsB,UAAUquB,GAAV,EAAe;AACnC6E,IAAAA,0BAA0B,CAAC7O,GAAD,EAAMgK,GAAN,EAAWxI,CAAX,EAAc5kB,EAAd,CAA1B;AACD,GAFD,EAnCgC,CAuChC;;AACA,MAAMqB,OAAO,GAAG/C,IAAI,CAACigB,YAArB;AACA,MAAMqI,SAAS,GAAGxD,GAAG,CAACtjB,IAAJ,GAAWc,OAAX,EAAlB;AACA,MAAMO,KAAK,GAAGylB,SAAS,CAACzlB,KAAV,GAAkBE,OAAO,GAAG,CAA1C;AACA,MAAMD,MAAM,GAAGwlB,SAAS,CAACxlB,MAAV,GAAmBC,OAAO,GAAG,CAA5C;AAEAmjB,EAAAA,wDAAgB,CAACpB,GAAD,EAAMhiB,MAAN,EAAcD,KAAd,EAAqB7C,IAAI,CAAC2a,WAA1B,CAAhB;AAEAmK,EAAAA,GAAG,CAACjjB,IAAJ,CAAS,SAAT,YAAuBymB,SAAS,CAAC/kB,CAAV,GAAcR,OAArC,cAAgDulB,SAAS,CAAC9kB,CAAV,GAAcT,OAA9D,cAAyEF,KAAzE,cAAkFC,MAAlF;AACD,CAhDM;AAkDP,iEAAe;AACbglB,EAAAA,OAAO,EAAPA,OADa;AAEbU,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;AChXA,IAAMS,SAAS,GAAG,SAAZA,SAAY,CAAC3oB,OAAD;AAAA,6CAGNA,OAAO,CAACi1C,aAHF,4BAIJj1C,OAAO,CAACi1C,aAJJ,qDAQJj1C,OAAO,CAAC+oB,SARJ,iDAYC/oB,OAAO,CAACS,UAZT,+BAaDT,OAAO,CAACqc,QAbP,8CAiBNrc,OAAO,CAACk1C,qBAjBF,qDAmBJl1C,OAAO,CAACm1C,sBAnBJ,kCAoBEn1C,OAAO,CAACo1C,qBApBV,6DAwBLp1C,OAAO,CAACq1C,oBAxBH,iDA2BNr1C,OAAO,CAACs1C,uBA3BF,iFAgCJt1C,OAAO,CAACm1C,sBAhCJ,kCAiCEn1C,OAAO,CAACo1C,qBAjCV,wDAoCJp1C,OAAO,CAACi1C,aApCJ,6EAwCNj1C,OAAO,CAACu1C,kBAxCF;AAAA,CAAlB,EA4CA;;;AACA,iEAAe5sB,SAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7CA;AACA;AACA;AACA;AAEA,IAAI6sB,SAAS,GAAG1zC,SAAhB;AACA,IAAI2zC,MAAM,GAAG,EAAb;AACA,IAAIC,QAAQ,GAAG,EAAf;AACA,IAAMC,KAAK,GAAG,EAAd;AACA,IAAIj/B,KAAK,GAAG,EAAZ;AACA,IAAIk/B,YAAY,GAAG,KAAnB;AACA,IAAIC,sBAAsB,GAAG,KAA7B;AACA,IAAIC,WAAW,GAAG,KAAlB;AAEO,IAAMr1B,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BlS,IAA9B,EAAoC;AAChE2R,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDlS,IAApD;AACD,CAFM;AAIA,IAAMsnC,QAAQ,GAAG,SAAXA,QAAW,CAAU30C,EAAV,EAAckN,IAAd,EAAoB8yB,WAApB,EAAiC3yB,IAAjC,EAAuC;AAC7D;AACA,MAAMunC,GAAG,GAAGP,MAAM,CAACr0C,EAAD,CAAlB;AACA,MAAI40C,GAAG,IAAI1nC,IAAI,KAAK0nC,GAAG,CAAC1nC,IAApB,IAA4B8yB,WAAW,IAAI,IAA/C,EAAqD,OAHQ,CAK7D;;AACA,MAAIA,WAAW,IAAI,IAAf,IAAuBA,WAAW,CAAC1/B,IAAZ,IAAoB,IAA/C,EAAqD;AACnD0/B,IAAAA,WAAW,GAAG;AAAE1/B,MAAAA,IAAI,EAAE4M,IAAR;AAAc0N,MAAAA,IAAI,EAAE,IAApB;AAA0BvN,MAAAA,IAAI,EAAJA;AAA1B,KAAd;AACD;;AACD,MAAIA,IAAI,IAAI,IAAR,IAAgB2yB,WAAW,CAAC1/B,IAAZ,IAAoB,IAAxC,EAA8C;AAC5C0/B,IAAAA,WAAW,GAAG;AAAE1/B,MAAAA,IAAI,EAAE4M,IAAR;AAAc0N,MAAAA,IAAI,EAAE,IAApB;AAA0BvN,MAAAA,IAAI,EAAJA;AAA1B,KAAd;AACD;;AAEDgnC,EAAAA,MAAM,CAACr0C,EAAD,CAAN,GAAa;AACXkN,IAAAA,IAAI,EAAEA,IADK;AAEX8yB,IAAAA,WAAW,EAAEA,WAAW,CAAC1/B,IAFd;AAGXsa,IAAAA,IAAI,EAAGolB,WAAW,CAACplB,IAAZ,KAAqBla,SAArB,IAAkCm0C,QAAQ,EAA3C,IAAkD,CAAC,CAAC7U,WAAW,CAACplB,IAH3D;AAIXw5B,IAAAA,SAAS,EAAEA,SAJA;AAKXU,IAAAA,KAAK,EAAE,EALI;AAMXC,IAAAA,UAAU,EAAE,EAND;AAOXC,IAAAA,QAAQ,EAAE,IAPC;AAQXC,IAAAA,QAAQ,EAAE,IARC;AASX5nC,IAAAA,IAAI,EAAEA,IAAI,IAAI;AATH,GAAb;;AAWA,MAAI+mC,SAAS,IAAIC,MAAM,CAACD,SAAD,CAAvB,EAAoC;AAClCC,IAAAA,MAAM,CAACD,SAAD,CAAN,CAAkBc,SAAlB,GAA8Bl1C,EAA9B;AACD;;AAEDo0C,EAAAA,SAAS,GAAGp0C,EAAZ;AACD,CA7BM;;AA+BP,IAAMm1C,eAAe,GAAG,SAAlBA,eAAkB,CAACC,IAAD,EAAU;AAChC,MAAIt3C,CAAJ;AACA,MAAIw4B,KAAK,GAAG,CAAZ;;AACA,OAAKx4B,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGw2C,QAAQ,CAACv2C,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpC,QAAIw2C,QAAQ,CAACx2C,CAAD,CAAR,CAAYuP,IAAZ,KAAqBgoC,QAAQ,CAACC,YAAlC,EAAgD;AAC9C,UAAIhB,QAAQ,CAACx2C,CAAD,CAAR,CAAYy3C,IAAZ,CAAiBC,KAAjB,KAA2BJ,IAA/B,EAAqC;AACnC9e,QAAAA,KAAK;AACN;AACF;;AACD,QAAIge,QAAQ,CAACx2C,CAAD,CAAR,CAAYuP,IAAZ,KAAqBgoC,QAAQ,CAACI,UAAlC,EAA8C;AAC5C,UAAInB,QAAQ,CAACx2C,CAAD,CAAR,CAAYy3C,IAAZ,CAAiBC,KAAjB,KAA2BJ,IAA/B,EAAqC;AACnC9e,QAAAA,KAAK;AACN;AACF;AACF;;AACD,SAAOA,KAAP;AACD,CAhBD;;AAkBO,IAAMof,UAAU,GAAG,SAAbA,UAAa,CAAUC,MAAV,EAAkBC,IAAlB,EAAwBpO,OAAxB,EAAiCqO,MAAjC,EAAyC;AACjEvB,EAAAA,QAAQ,CAACh1C,IAAT,CAAc;AACZi2C,IAAAA,IAAI,EAAEI,MADM;AAEZG,IAAAA,EAAE,EAAEF,IAFQ;AAGZpO,IAAAA,OAAO,EAAEA,OAAO,CAAClnC,IAHL;AAIZsa,IAAAA,IAAI,EAAG4sB,OAAO,CAAC5sB,IAAR,KAAiBla,SAAjB,IAA8Bm0C,QAAQ,EAAvC,IAA8C,CAAC,CAACrN,OAAO,CAAC5sB,IAJlD;AAKZi7B,IAAAA,MAAM,EAAEA;AALI,GAAd;AAOD,CARM;AAUA,IAAME,SAAS,GAAG,SAAZA,SAAY,CACvBJ,MADuB,EAEvBC,IAFuB,EAKvB;AAAA,MAFApO,OAEA,uEAFU;AAAElnC,IAAAA,IAAI,EAAEI,SAAR;AAAmBka,IAAAA,IAAI,EAAEla;AAAzB,GAEV;AAAA,MADAs1C,WACA;;AACA,MAAIA,WAAW,KAAKX,QAAQ,CAACI,UAA7B,EAAyC;AACvC,QAAMtwB,GAAG,GAAGgwB,eAAe,CAACQ,MAAM,CAACH,KAAR,CAA3B;;AACA,QAAIrwB,GAAG,GAAG,CAAV,EAAa;AACX;AACA,UAAInT,KAAK,GAAG,IAAIikC,KAAJ,CAAU,mDAAmDN,MAAM,CAACH,KAA1D,GAAkE,GAA5E,CAAZ;AACAxjC,MAAAA,KAAK,CAAC6yB,IAAN,GAAa;AACXvkC,QAAAA,IAAI,EAAE,MADK;AAEX41C,QAAAA,KAAK,EAAE,MAFI;AAGXpxC,QAAAA,IAAI,EAAE,GAHK;AAIXqxC,QAAAA,GAAG,EAAE;AAAEC,UAAAA,UAAU,EAAE,CAAd;AAAiBC,UAAAA,SAAS,EAAE,CAA5B;AAA+BC,UAAAA,YAAY,EAAE,CAA7C;AAAgDC,UAAAA,WAAW,EAAE;AAA7D,SAJM;AAKXC,QAAAA,QAAQ,EAAE,CAAC,sBAAD;AALC,OAAb;AAOA,YAAMxkC,KAAN;AACD;AACF;;AACDsiC,EAAAA,QAAQ,CAACh1C,IAAT,CAAc;AACZi2C,IAAAA,IAAI,EAAEI,MADM;AAEZG,IAAAA,EAAE,EAAEF,IAFQ;AAGZpO,IAAAA,OAAO,EAAEA,OAAO,CAAClnC,IAHL;AAIZsa,IAAAA,IAAI,EAAG4sB,OAAO,CAAC5sB,IAAR,KAAiBla,SAAjB,IAA8Bm0C,QAAQ,EAAvC,IAA8C,CAAC,CAACrN,OAAO,CAAC5sB,IAJlD;AAKZvN,IAAAA,IAAI,EAAE2oC;AALM,GAAd;AAOA,SAAO,IAAP;AACD,CA7BM;AA+BA,IAAMS,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAOnC,QAAP;AACD,CAFM;AAIA,IAAMoC,SAAS,GAAG,SAAZA,SAAY,GAAY;AACnC,SAAOrC,MAAP;AACD,CAFM;AAGA,IAAMsC,QAAQ,GAAG,SAAXA,QAAW,CAAU32C,EAAV,EAAc;AACpC,SAAOq0C,MAAM,CAACr0C,EAAD,CAAb;AACD,CAFM;AAGA,IAAM42C,YAAY,GAAG,SAAfA,YAAe,GAAY;AACtC,SAAOz5C,MAAM,CAAC0B,IAAP,CAAYw1C,MAAZ,CAAP;AACD,CAFM;AAGA,IAAM1mB,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAClC,SAAOrY,KAAP;AACD,CAFM;AAGA,IAAMuhC,eAAe,GAAG,SAAlBA,eAAkB,GAAY;AACzC,SAAOrC,YAAP;AACD,CAFM;AAGA,IAAMsC,qBAAqB,GAAG,SAAxBA,qBAAwB,GAAY;AAC/CrC,EAAAA,sBAAsB,GAAG,IAAzB;AACD,CAFM;AAGA,IAAMx6B,mBAAmB,GAAG,SAAtBA,mBAAsB;AAAA,SAAMw6B,sBAAN;AAAA,CAA5B;AAEA,IAAMsC,OAAO,GAAG,SAAVA,OAAU,CAAUC,WAAV,EAAuB;AAC5CtC,EAAAA,WAAW,GAAGsC,WAAd;AACD,CAFM;AAIA,IAAMnC,QAAQ,GAAG,SAAXA,QAAW;AAAA,SAAMH,WAAN;AAAA,CAAjB;AAEA,IAAM3xC,KAAK,GAAG,SAARA,KAAQ,GAAY;AAC/BsxC,EAAAA,MAAM,GAAG,EAAT;AACAC,EAAAA,QAAQ,GAAG,EAAX;AACD,CAHM;AAKA,IAAM2C,YAAY,GAAG,SAAfA,YAAe,CAAU7/B,GAAV,EAAe;AACzC,MAAM0f,IAAI,GAAG1f,GAAG,CAACvS,IAAJ,EAAb;;AACA,MAAM2iC,OAAO,GAAG;AACdlnC,IAAAA,IAAI,EAAEw2B,IAAI,CAAC9yB,OAAL,CAAa,mBAAb,EAAkC,EAAlC,EAAsCa,IAAtC,EADQ;AAEd+V,IAAAA,IAAI,EACFkc,IAAI,CAACvV,KAAL,CAAW,YAAX,MAA6B,IAA7B,GACI,IADJ,GAEIuV,IAAI,CAACvV,KAAL,CAAW,cAAX,MAA+B,IAA/B,GACA,KADA,GAEA7gB;AAPQ,GAAhB;AASA3D,EAAAA,8CAAA,CAAU,eAAV,EAA2ByqC,OAA3B;AACA,SAAOA,OAAP;AACD,CAbM;AAeA,IAAM6N,QAAQ,GAAG;AACtB6B,EAAAA,KAAK,EAAE,CADe;AAEtBC,EAAAA,MAAM,EAAE,CAFc;AAGtBC,EAAAA,IAAI,EAAE,CAHgB;AAItBC,EAAAA,WAAW,EAAE,CAJS;AAKtBC,EAAAA,YAAY,EAAE,CALQ;AAMtBC,EAAAA,UAAU,EAAE,CANU;AAOtBC,EAAAA,WAAW,EAAE,CAPS;AAQtBC,EAAAA,UAAU,EAAE,EARU;AAStBC,EAAAA,QAAQ,EAAE,EATY;AAUtBC,EAAAA,SAAS,EAAE,EAVW;AAWtBC,EAAAA,QAAQ,EAAE,EAXY;AAYtBC,EAAAA,OAAO,EAAE,EAZa;AAatBC,EAAAA,SAAS,EAAE,EAbW;AActBC,EAAAA,OAAO,EAAE,EAda;AAetBzC,EAAAA,YAAY,EAAE,EAfQ;AAgBtBG,EAAAA,UAAU,EAAE,EAhBU;AAiBtBuC,EAAAA,SAAS,EAAE,EAjBW;AAkBtBC,EAAAA,OAAO,EAAE,EAlBa;AAmBtBC,EAAAA,OAAO,EAAE,EAnBa;AAoBtBC,EAAAA,UAAU,EAAE,EApBU;AAqBtBC,EAAAA,QAAQ,EAAE,EArBY;AAsBtBC,EAAAA,WAAW,EAAE,EAtBS;AAuBtBC,EAAAA,YAAY,EAAE;AAvBQ,CAAjB;AA0BA,IAAMC,SAAS,GAAG;AACvBC,EAAAA,MAAM,EAAE,CADe;AAEvBC,EAAAA,IAAI,EAAE;AAFiB,CAAlB;AAKA,IAAMC,SAAS,GAAG;AACvBC,EAAAA,MAAM,EAAE,CADe;AAEvBC,EAAAA,OAAO,EAAE,CAFc;AAGvBC,EAAAA,IAAI,EAAE;AAHiB,CAAlB;AAMA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAAUtD,KAAV,EAAiBuD,SAAjB,EAA4BvR,OAA5B,EAAqC;AAC1D,MAAMzzB,IAAI,GAAG;AACXyhC,IAAAA,KAAK,EAAEA,KADI;AAEXuD,IAAAA,SAAS,EAAEA,SAFA;AAGXvR,IAAAA,OAAO,EAAEA,OAAO,CAAClnC,IAHN;AAIXsa,IAAAA,IAAI,EAAG4sB,OAAO,CAAC5sB,IAAR,KAAiBla,SAAjB,IAA8Bm0C,QAAQ,EAAvC,IAA8C,CAAC,CAACrN,OAAO,CAAC5sB;AAJnD,GAAb,CAD0D,CAQ1D;;AACA,MAAMy5B,MAAM,GAAG,GAAGliC,MAAH,CAAUqjC,KAAV,EAAiBA,KAAjB,CAAf;AAEAjB,EAAAA,KAAK,CAACj1C,IAAN,CAAWyU,IAAX;AACAugC,EAAAA,QAAQ,CAACh1C,IAAT,CAAc;AACZi2C,IAAAA,IAAI,EAAElB,MAAM,CAAC,CAAD,CADA;AAEZyB,IAAAA,EAAE,EAAEzB,MAAM,CAAC,CAAD,CAFE;AAGZ7M,IAAAA,OAAO,EAAEA,OAAO,CAAClnC,IAHL;AAIZsa,IAAAA,IAAI,EAAG4sB,OAAO,CAAC5sB,IAAR,KAAiBla,SAAjB,IAA8Bm0C,QAAQ,EAAvC,IAA8C,CAAC,CAACrN,OAAO,CAAC5sB,IAJlD;AAKZvN,IAAAA,IAAI,EAAEgoC,QAAQ,CAAC+B,IALH;AAMZ2B,IAAAA,SAAS,EAAEA;AANC,GAAd;AAQD,CApBM;AAsBA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAUC,OAAV,EAAmB34C,IAAnB,EAAyB;AAC/C;AACA,MAAMk1C,KAAK,GAAGmB,QAAQ,CAACsC,OAAD,CAAtB,CAF+C,CAG/C;;AACA,MAAI;AACF,QAAIC,aAAa,GAAG9gC,4DAAY,CAAC9X,IAAI,CAACA,IAAN,EAAYwe,8CAAA,EAAZ,CAAhC;AACAo6B,IAAAA,aAAa,GAAGA,aAAa,CAACl1C,OAAd,CAAsB,QAAtB,EAAgC,GAAhC,CAAhB;AACAk1C,IAAAA,aAAa,GAAGA,aAAa,CAACl1C,OAAd,CAAsB,WAAtB,EAAmC,GAAnC,CAAhB;AACA,QAAM8wC,KAAK,GAAGtzC,IAAI,CAACmL,KAAL,CAAWusC,aAAX,CAAd,CAJE,CAKF;;AACAC,IAAAA,WAAW,CAAC3D,KAAD,EAAQV,KAAR,CAAX;AACD,GAPD,CAOE,OAAO/rC,CAAP,EAAU;AACVhM,IAAAA,8CAAA,CAAU,qCAAV,EAAiDgM,CAAjD;AACD;AACF,CAdM;AAgBA,IAAMqwC,QAAQ,GAAG,SAAXA,QAAW,CAAUH,OAAV,EAAmB34C,IAAnB,EAAyB;AAC/C;AACA,MAAMk1C,KAAK,GAAGmB,QAAQ,CAACsC,OAAD,CAAtB;;AACA,MAAI;AACF,QAAMnE,KAAK,GAAG,EAAd;AACA,QAAIoE,aAAa,GAAG9gC,4DAAY,CAAC9X,IAAI,CAACA,IAAN,EAAYwe,8CAAA,EAAZ,CAAhC;AACA,QAAIu6B,GAAG,GAAGH,aAAa,CAACh6C,OAAd,CAAsB,GAAtB,CAAV;AACAg6C,IAAAA,aAAa,GAAGA,aAAa,CAACl1C,OAAd,CAAsB,QAAtB,EAAgC,GAAhC,CAAhB;AACAk1C,IAAAA,aAAa,GAAGA,aAAa,CAACl1C,OAAd,CAAsB,WAAtB,EAAmC,GAAnC,CAAhB;AACA,QAAI3D,KAAK,GAAG64C,aAAa,CAAC1vC,KAAd,CAAoB,CAApB,EAAuB6vC,GAAG,GAAG,CAA7B,EAAgCx0C,IAAhC,EAAZ;AACA,QAAIkT,IAAI,GAAGmhC,aAAa,CAAC1vC,KAAd,CAAoB6vC,GAAG,GAAG,CAA1B,EAA6Bx0C,IAA7B,EAAX;AAEAiwC,IAAAA,KAAK,CAACz0C,KAAD,CAAL,GAAe0X,IAAf,CATE,CAUF;;AACAohC,IAAAA,WAAW,CAAC3D,KAAD,EAAQV,KAAR,CAAX;AACD,GAZD,CAYE,OAAO/rC,CAAP,EAAU;AACVhM,IAAAA,8CAAA,CAAU,qCAAV,EAAiDgM,CAAjD;AACD;AACF,CAlBM;AAoBP;AACA;AACA;AACA;;AACA,SAASowC,WAAT,CAAqB3D,KAArB,EAA4BV,KAA5B,EAAmC;AACjC,MAAIU,KAAK,CAACV,KAAN,IAAe,IAAnB,EAAyB;AACvBU,IAAAA,KAAK,CAACV,KAAN,GAAcA,KAAd;AACD,GAFD,MAEO;AACL,SAAK,IAAI91C,GAAT,IAAgB81C,KAAhB,EAAuB;AACrBU,MAAAA,KAAK,CAACV,KAAN,CAAY91C,GAAZ,IAAmB81C,KAAK,CAAC91C,GAAD,CAAxB;AACD;AACF;AACF;;AAEM,IAAMs6C,aAAa,GAAG,SAAhBA,aAAgB,CAAUL,OAAV,EAAmB34C,IAAnB,EAAyB;AACpD;AACA,MAAMk1C,KAAK,GAAGmB,QAAQ,CAACsC,OAAD,CAAtB,CAFoD,CAGpD;;AACA,MAAI;AACF,QAAIC,aAAa,GAAG9gC,4DAAY,CAAC9X,IAAI,CAACA,IAAN,EAAYwe,8CAAA,EAAZ,CAAhC;AACA,QAAMi2B,UAAU,GAAGvzC,IAAI,CAACmL,KAAL,CAAWusC,aAAX,CAAnB,CAFE,CAGF;;AACAK,IAAAA,gBAAgB,CAAC/D,KAAD,EAAQT,UAAR,CAAhB;AACD,GALD,CAKE,OAAOhsC,CAAP,EAAU;AACVhM,IAAAA,8CAAA,CAAU,2CAAV,EAAuDgM,CAAvD;AACD;AACF,CAZM;AAcP;AACA;AACA;AACA;;AACA,SAASwwC,gBAAT,CAA0B/D,KAA1B,EAAiCT,UAAjC,EAA6C;AAC3C,MAAIS,KAAK,CAACT,UAAN,IAAoB,IAAxB,EAA8B;AAC5BS,IAAAA,KAAK,CAACT,UAAN,GAAmBA,UAAnB;AACD,GAFD,MAEO;AACL,SAAK,IAAI/1C,GAAT,IAAgB+1C,UAAhB,EAA4B;AAC1BS,MAAAA,KAAK,CAACT,UAAN,CAAiB/1C,GAAjB,IAAwB+1C,UAAU,CAAC/1C,GAAD,CAAlC;AACD;AACF;AACF;;AAEM,IAAMw6C,UAAU,GAAG,SAAbA,UAAa,CAAUP,OAAV,EAAmB34C,IAAnB,EAAyB;AACjD;AACA,MAAMk1C,KAAK,GAAGmB,QAAQ,CAACsC,OAAD,CAAtB;AACA,MAAMt2C,IAAI,GAAGa,QAAQ,CAAC29B,cAAT,CAAwB7gC,IAAI,CAACA,IAA7B,CAAb,CAHiD,CAKjD;;AACA,MAAI;AACF,QAAMA,KAAI,GAAGqC,IAAI,CAAC82C,SAAlB;AACA,QAAMC,OAAO,GAAGl4C,IAAI,CAACmL,KAAL,CAAWrM,KAAX,CAAhB,CAFE,CAGF;;AACA,QAAIo5C,OAAO,CAAC,YAAD,CAAX,EAA2B;AACzBH,MAAAA,gBAAgB,CAAC/D,KAAD,EAAQkE,OAAO,CAAC,YAAD,CAAf,CAAhB;AACD;;AAED,QAAIA,OAAO,CAAC,OAAD,CAAX,EAAsB;AACpBP,MAAAA,WAAW,CAAC3D,KAAD,EAAQkE,OAAO,CAAC,OAAD,CAAf,CAAX;AACD;AACF,GAXD,CAWE,OAAO3wC,CAAP,EAAU;AACVhM,IAAAA,8CAAA,CAAU,wCAAV,EAAoDgM,CAApD;AACD;AACF,CApBM;AAsBA,IAAM4wC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAUnE,KAAV,EAAiBx2C,GAAjB,EAAsB;AACpD,MAAI,OAAOw2C,KAAP,KAAiB,WAAjB,IAAgC,OAAOA,KAAK,CAACT,UAAb,KAA4B,WAAhE,EAA6E;AAC3E,WAAOS,KAAK,CAACT,UAAN,CAAiB/1C,GAAjB,CAAP;AACD;;AAED,SAAO0B,SAAP;AACD,CANM;AAQA,IAAMgtB,QAAQ,GAAG,SAAXA,QAAW,CAAUksB,SAAV,EAAqB;AAC3CtkC,EAAAA,KAAK,GAAGskC,SAAS,CAACt5C,IAAlB;AACAk0C,EAAAA,YAAY,GAAIoF,SAAS,CAACh/B,IAAV,KAAmBla,SAAnB,IAAgCm0C,QAAQ,EAAzC,IAAgD,CAAC,CAAC+E,SAAS,CAACh/B,IAA3E;AACD,CAHM;AAKA,IAAMkb,KAAK,GAAG,SAARA,KAAQ,CAAU+jB,KAAV,EAAiB;AACpC,MAAIA,KAAK,YAAYt1C,KAArB,EAA4B;AAC1Bs1C,IAAAA,KAAK,CAAC96C,OAAN,CAAc,UAAUojB,IAAV,EAAgB;AAC5B2T,MAAAA,KAAK,CAAC3T,IAAD,CAAL;AACD,KAFD;AAGD,GAJD,MAIO;AACL,YAAQ03B,KAAK,CAACxsC,IAAd;AACE,WAAK,gBAAL;AACEsnC,QAAAA,QAAQ,CAACkF,KAAK,CAACrE,KAAP,EAAcqE,KAAK,CAACrE,KAApB,EAA2BqE,KAAK,CAAC7Z,WAAjC,EAA8C,aAA9C,CAAR;AACA;;AACF,WAAK,UAAL;AACE2U,QAAAA,QAAQ,CAACkF,KAAK,CAACrE,KAAP,EAAcqE,KAAK,CAACrE,KAApB,EAA2BqE,KAAK,CAAC7Z,WAAjC,EAA8C,OAA9C,CAAR;AACA;;AACF,WAAK,aAAL;AACE+V,QAAAA,SAAS,CAAC8D,KAAK,CAACrE,KAAP,EAAc90C,SAAd,EAAyBA,SAAzB,EAAoCm5C,KAAK,CAACC,UAA1C,CAAT;AACA;;AACF,WAAK,WAAL;AACE/D,QAAAA,SAAS,CAAC8D,KAAK,CAACrE,KAAP,EAAc90C,SAAd,EAAyBA,SAAzB,EAAoCm5C,KAAK,CAACC,UAA1C,CAAT;AACA;;AACF,WAAK,SAAL;AACEhB,QAAAA,OAAO,CAACe,KAAK,CAACrE,KAAP,EAAcqE,KAAK,CAACd,SAApB,EAA+Bc,KAAK,CAACv5C,IAArC,CAAP;AACA;;AACF,WAAK,UAAL;AACE04C,QAAAA,QAAQ,CAACa,KAAK,CAACrE,KAAP,EAAcqE,KAAK,CAACv5C,IAApB,CAAR;AACA;;AACF,WAAK,UAAL;AACE84C,QAAAA,QAAQ,CAACS,KAAK,CAACrE,KAAP,EAAcqE,KAAK,CAACv5C,IAApB,CAAR;AACA;;AACF,WAAK,eAAL;AACEg5C,QAAAA,aAAa,CAACO,KAAK,CAACrE,KAAP,EAAcqE,KAAK,CAACv5C,IAApB,CAAb;AACA;;AACF,WAAK,YAAL;AACEk5C,QAAAA,UAAU,CAACK,KAAK,CAACrE,KAAP,EAAcqE,KAAK,CAACv5C,IAApB,CAAV;AACA;;AACF,WAAK,YAAL;AACEy1C,QAAAA,SAAS,CAAC8D,KAAK,CAACtE,IAAP,EAAasE,KAAK,CAAC/D,EAAnB,EAAuB+D,KAAK,CAAClS,GAA7B,EAAkCkS,KAAK,CAACC,UAAxC,CAAT;AACA;;AACF,WAAK,WAAL;AACE/D,QAAAA,SAAS,CAACr1C,SAAD,EAAYA,SAAZ,EAAuBm5C,KAAK,CAACE,QAA7B,EAAuCF,KAAK,CAACC,UAA7C,CAAT;AACA;;AACF,WAAK,SAAL;AACE/D,QAAAA,SAAS,CAACr1C,SAAD,EAAYA,SAAZ,EAAuBA,SAAvB,EAAkCm5C,KAAK,CAACC,UAAxC,CAAT;AACA;;AACF,WAAK,WAAL;AACE/D,QAAAA,SAAS,CAACr1C,SAAD,EAAYA,SAAZ,EAAuBm5C,KAAK,CAACxP,KAA7B,EAAoCwP,KAAK,CAACC,UAA1C,CAAT;AACA;;AACF,WAAK,SAAL;AACE/D,QAAAA,SAAS,CAACr1C,SAAD,EAAYA,SAAZ,EAAuBA,SAAvB,EAAkCm5C,KAAK,CAACC,UAAxC,CAAT;AACA;;AACF,WAAK,UAAL;AACE/D,QAAAA,SAAS,CAACr1C,SAAD,EAAYA,SAAZ,EAAuBm5C,KAAK,CAACG,OAA7B,EAAsCH,KAAK,CAACC,UAA5C,CAAT;AACA;;AACF,WAAK,QAAL;AACE/D,QAAAA,SAAS,CAACr1C,SAAD,EAAYA,SAAZ,EAAuBA,SAAvB,EAAkCm5C,KAAK,CAACC,UAAxC,CAAT;AACA;;AACF,WAAK,UAAL;AACE/D,QAAAA,SAAS,CAACr1C,SAAD,EAAYA,SAAZ,EAAuBm5C,KAAK,CAACI,OAA7B,EAAsCJ,KAAK,CAACC,UAA5C,CAAT;AACA;;AACF,WAAK,MAAL;AACE/D,QAAAA,SAAS,CAACr1C,SAAD,EAAYA,SAAZ,EAAuBm5C,KAAK,CAACI,OAA7B,EAAsCJ,KAAK,CAACC,UAA5C,CAAT;AACA;;AACF,WAAK,QAAL;AACE/D,QAAAA,SAAS,CAACr1C,SAAD,EAAYA,SAAZ,EAAuBA,SAAvB,EAAkCm5C,KAAK,CAACC,UAAxC,CAAT;AACA;;AACF,WAAK,UAAL;AACEpsB,QAAAA,QAAQ,CAACmsB,KAAK,CAACv5C,IAAP,CAAR;AACA;;AACF,WAAK,UAAL;AACEy1C,QAAAA,SAAS,CAACr1C,SAAD,EAAYA,SAAZ,EAAuBm5C,KAAK,CAACK,OAA7B,EAAsCL,KAAK,CAACC,UAA5C,CAAT;AACA;;AACF,WAAK,KAAL;AACE/D,QAAAA,SAAS,CAACr1C,SAAD,EAAYA,SAAZ,EAAuBm5C,KAAK,CAACK,OAA7B,EAAsCL,KAAK,CAACC,UAA5C,CAAT;AACA;;AACF,WAAK,QAAL;AACE/D,QAAAA,SAAS,CAACr1C,SAAD,EAAYA,SAAZ,EAAuBA,SAAvB,EAAkCm5C,KAAK,CAACC,UAAxC,CAAT;AACA;AArEJ;AAuED;AACF,CA9EM;AAgFP,iEAAe;AACbnF,EAAAA,QAAQ,EAARA,QADa;AAEbe,EAAAA,UAAU,EAAVA,UAFa;AAGbK,EAAAA,SAAS,EAATA,SAHa;AAIbiD,EAAAA,QAAQ,EAARA,QAJa;AAKbQ,EAAAA,UAAU,EAAVA,UALa;AAMbF,EAAAA,aAAa,EAAbA,aANa;AAObzE,EAAAA,QAAQ,EAARA,QAPa;AAQbkC,EAAAA,OAAO,EAAPA,OARa;AASbD,EAAAA,qBAAqB,EAArBA,qBATa;AAUb78B,EAAAA,mBAAmB,EAAnBA,mBAVa;AAWbw8B,EAAAA,WAAW,EAAXA,WAXa;AAYbC,EAAAA,SAAS,EAATA,SAZa;AAabC,EAAAA,QAAQ,EAARA,QAba;AAcbC,EAAAA,YAAY,EAAZA,YAda;AAeb+C,EAAAA,gBAAgB,EAAhBA,gBAfa;AAgBbhsB,EAAAA,QAAQ,EAARA,QAhBa;AAiBbtO,EAAAA,cAAc,EAAdA,cAjBa;AAkBb1gB,EAAAA,SAAS,EAAE;AAAA,WAAMmgB,8CAAA,GAAsB3F,QAA5B;AAAA,GAlBE;AAmBb09B,EAAAA,eAAe,EAAfA,eAnBa;AAoBb9zC,EAAAA,KAAK,EAALA,KApBa;AAqBbk0C,EAAAA,YAAY,EAAZA,YArBa;AAsBb5B,EAAAA,QAAQ,EAARA,QAtBa;AAuBbkD,EAAAA,SAAS,EAATA,SAvBa;AAwBbG,EAAAA,SAAS,EAATA,SAxBa;AAyBbI,EAAAA,OAAO,EAAPA,OAzBa;AA0BbprB,EAAAA,QAAQ,EAARA,QA1Ba;AA2BboI,EAAAA,KAAK,EAALA;AA3Ba,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1ZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA3R,8DAAA,GAAYk2B,mDAAZ;AAEA,IAAI/7C,IAAI,GAAG,EAAX;AAEO,IAAMiqB,MAAM,GAAG;AACpB7b,EAAAA,IAAI,EAAE;AACJ4tC,IAAAA,MAAM,EAAE55C,SADJ;AAEJ65C,IAAAA,KAAK,EAAE75C,SAFH;AAGJ85C,IAAAA,MAAM,EAAE95C,SAHJ;AAIJ+5C,IAAAA,KAAK,EAAE/5C;AAJH,GADc;AAOpB8V,EAAAA,WAAW,EAAE,CAPO;AAQpBkkC,EAAAA,aAAa,EAAE,EARK;AASpBC,EAAAA,WAAW,EAAE,EATO;AAUpBC,EAAAA,MAAM,EAAE;AACNC,IAAAA,SAAS,EAAE,qBAAY;AACrB,aACExzC,IAAI,CAAC8oB,GAAL,CAAS2F,KAAT,CACE,IADF,EAEE,KAAKue,MAAL,CAAYt2C,MAAZ,KAAuB,CAAvB,GAA2B,CAAC,CAAD,CAA3B,GAAiC,KAAKs2C,MAAL,CAAYhgC,GAAZ,CAAgB,UAACmhC,KAAD;AAAA,eAAWA,KAAK,CAACp0C,MAAN,IAAgB,CAA3B;AAAA,OAAhB,CAFnC,KAIC,KAAK05C,KAAL,CAAW/8C,MAAX,KAAsB,CAAtB,GACG,CADH,GAEG,KAAK+8C,KAAL,CAAWzmC,GAAX,CAAe,UAAC0mC,EAAD;AAAA,eAAQA,EAAE,CAAC35C,MAAH,IAAa,CAArB;AAAA,OAAf,EAAuCwd,MAAvC,CAA8C,UAACo8B,GAAD,EAAMvzC,CAAN;AAAA,eAAYuzC,GAAG,GAAGvzC,CAAlB;AAAA,OAA9C,CANJ,KAOC,KAAK6sC,QAAL,CAAcv2C,MAAd,KAAyB,CAAzB,GACG,CADH,GAEG,KAAKu2C,QAAL,CAAcjgC,GAAd,CAAkB,UAAC0mC,EAAD;AAAA,eAAQA,EAAE,CAAC35C,MAAH,IAAa,CAArB;AAAA,OAAlB,EAA0Cwd,MAA1C,CAAiD,UAACo8B,GAAD,EAAMvzC,CAAN;AAAA,eAAYuzC,GAAG,GAAGvzC,CAAlB;AAAA,OAAjD,CATJ,KAUC,KAAK8sC,KAAL,CAAWx2C,MAAX,KAAsB,CAAtB,GACG,CADH,GAEG,KAAKw2C,KAAL,CAAWlgC,GAAX,CAAe,UAAC0mC,EAAD;AAAA,eAAQA,EAAE,CAAC35C,MAAH,IAAa,CAArB;AAAA,OAAf,EAAuCwd,MAAvC,CAA8C,UAACo8B,GAAD,EAAMvzC,CAAN;AAAA,eAAYuzC,GAAG,GAAGvzC,CAAlB;AAAA,OAA9C,CAZJ,CADF;AAeD,KAjBK;AAkBN1E,IAAAA,KAAK,EAAE,iBAAY;AACjB,WAAKsxC,MAAL,GAAc,EAAd;AACA,WAAKyG,KAAL,GAAa,EAAb;AACA,WAAKxG,QAAL,GAAgB,EAAhB;AACA,WAAKC,KAAL,GAAa,EAAb;AACD,KAvBK;AAwBNI,IAAAA,QAAQ,EAAE,kBAAUsG,UAAV,EAAsB;AAC9B,WAAK5G,MAAL,CAAY/0C,IAAZ,CAAiB27C,UAAjB;AACD,KA1BK;AA2BNC,IAAAA,OAAO,EAAE,iBAAUC,SAAV,EAAqB;AAC5B,WAAKL,KAAL,CAAWx7C,IAAX,CAAgB67C,SAAhB;AACD,KA7BK;AA8BNzF,IAAAA,UAAU,EAAE,oBAAU0F,QAAV,EAAoB;AAC9B,WAAK9G,QAAL,CAAch1C,IAAd,CAAmB87C,QAAnB;AACD,KAhCK;AAiCNtC,IAAAA,OAAO,EAAE,iBAAUuC,SAAV,EAAqB;AAC5B,WAAK9G,KAAL,CAAWj1C,IAAX,CAAgB+7C,SAAhB;AACD,KAnCK;AAoCNC,IAAAA,SAAS,EAAE,qBAAY;AACrB,aAAO,KAAKjH,MAAL,CAAY,KAAKA,MAAL,CAAYt2C,MAAZ,GAAqB,CAAjC,CAAP;AACD,KAtCK;AAuCNw9C,IAAAA,QAAQ,EAAE,oBAAY;AACpB,aAAO,KAAKT,KAAL,CAAW,KAAKA,KAAL,CAAW/8C,MAAX,GAAoB,CAA/B,CAAP;AACD,KAzCK;AA0CNy9C,IAAAA,WAAW,EAAE,uBAAY;AACvB,aAAO,KAAKlH,QAAL,CAAc,KAAKA,QAAL,CAAcv2C,MAAd,GAAuB,CAArC,CAAP;AACD,KA5CK;AA6CN09C,IAAAA,QAAQ,EAAE,oBAAY;AACpB,aAAO,KAAKlH,KAAL,CAAW,KAAKA,KAAL,CAAWx2C,MAAX,GAAoB,CAA/B,CAAP;AACD,KA/CK;AAgDNs2C,IAAAA,MAAM,EAAE,EAhDF;AAiDNyG,IAAAA,KAAK,EAAE,EAjDD;AAkDNxG,IAAAA,QAAQ,EAAE,EAlDJ;AAmDNC,IAAAA,KAAK,EAAE;AAnDD,GAVY;AA+DpBmH,EAAAA,IAAI,EAAE,gBAAY;AAChB,SAAKhB,aAAL,GAAqB,EAArB;AACA,SAAKC,WAAL,GAAmB,EAAnB;AACA,SAAKC,MAAL,CAAY73C,KAAZ;AACA,SAAK2J,IAAL,GAAY;AACV4tC,MAAAA,MAAM,EAAE55C,SADE;AAEV65C,MAAAA,KAAK,EAAE75C,SAFG;AAGV85C,MAAAA,MAAM,EAAE95C,SAHE;AAIV+5C,MAAAA,KAAK,EAAE/5C;AAJG,KAAZ;AAMA,SAAK8V,WAAL,GAAmB,CAAnB;AACA4P,IAAAA,OAAO,CAACjC,wEAAA,EAAD,CAAP;AACD,GA3EmB;AA4EpBw3B,EAAAA,SAAS,EAAE,mBAAUj9B,GAAV,EAAe1f,GAAf,EAAoB4sB,GAApB,EAAyBnJ,GAAzB,EAA8B;AACvC,QAAI,OAAO/D,GAAG,CAAC1f,GAAD,CAAV,KAAoB,WAAxB,EAAqC;AACnC0f,MAAAA,GAAG,CAAC1f,GAAD,CAAH,GAAW4sB,GAAX;AACD,KAFD,MAEO;AACLlN,MAAAA,GAAG,CAAC1f,GAAD,CAAH,GAAWyjB,GAAG,CAACmJ,GAAD,EAAMlN,GAAG,CAAC1f,GAAD,CAAT,CAAd;AACD;AACF,GAlFmB;AAmFpB48C,EAAAA,YAAY,EAAE,sBAAUtB,MAAV,EAAkBE,MAAlB,EAA0BD,KAA1B,EAAiCE,KAAjC,EAAwC;AACpD,QAAMoB,KAAK,GAAG,IAAd;;AACA,QAAI12B,GAAG,GAAG,CAAV;AACA;;AACA,aAAS22B,QAAT,CAAkBzuC,IAAlB,EAAwB;AACtB,aAAO,SAAS0uC,gBAAT,CAA0B55B,IAA1B,EAAgC;AACrCgD,QAAAA,GAAG,GADkC,CAErC;;AACA,YAAM/X,CAAC,GAAGyuC,KAAK,CAACnB,aAAN,CAAoB38C,MAApB,GAA6BonB,GAA7B,GAAmC,CAA7C;;AAEA02B,QAAAA,KAAK,CAACF,SAAN,CAAgBx5B,IAAhB,EAAsB,QAAtB,EAAgCq4B,MAAM,GAAGptC,CAAC,GAAG9O,IAAI,CAACkb,SAAlD,EAA6DnS,IAAI,CAAC6I,GAAlE;;AACA2rC,QAAAA,KAAK,CAACF,SAAN,CAAgBx5B,IAAhB,EAAsB,OAAtB,EAA+Bs4B,KAAK,GAAGrtC,CAAC,GAAG9O,IAAI,CAACkb,SAAhD,EAA2DnS,IAAI,CAAC8oB,GAAhE;;AAEA0rB,QAAAA,KAAK,CAACF,SAAN,CAAgBpzB,MAAM,CAAC7b,IAAvB,EAA6B,QAA7B,EAAuC4tC,MAAM,GAAGltC,CAAC,GAAG9O,IAAI,CAACkb,SAAzD,EAAoEnS,IAAI,CAAC6I,GAAzE;;AACA2rC,QAAAA,KAAK,CAACF,SAAN,CAAgBpzB,MAAM,CAAC7b,IAAvB,EAA6B,OAA7B,EAAsC6tC,KAAK,GAAGntC,CAAC,GAAG9O,IAAI,CAACkb,SAAvD,EAAkEnS,IAAI,CAAC8oB,GAAvE;;AAEA,YAAI,EAAE9iB,IAAI,KAAK,YAAX,CAAJ,EAA8B;AAC5BwuC,UAAAA,KAAK,CAACF,SAAN,CAAgBx5B,IAAhB,EAAsB,QAAtB,EAAgCm4B,MAAM,GAAGltC,CAAC,GAAG9O,IAAI,CAACkb,SAAlD,EAA6DnS,IAAI,CAAC6I,GAAlE;;AACA2rC,UAAAA,KAAK,CAACF,SAAN,CAAgBx5B,IAAhB,EAAsB,OAAtB,EAA+Bo4B,KAAK,GAAGntC,CAAC,GAAG9O,IAAI,CAACkb,SAAhD,EAA2DnS,IAAI,CAAC8oB,GAAhE;;AAEA0rB,UAAAA,KAAK,CAACF,SAAN,CAAgBpzB,MAAM,CAAC7b,IAAvB,EAA6B,QAA7B,EAAuC8tC,MAAM,GAAGptC,CAAC,GAAG9O,IAAI,CAACkb,SAAzD,EAAoEnS,IAAI,CAAC6I,GAAzE;;AACA2rC,UAAAA,KAAK,CAACF,SAAN,CAAgBpzB,MAAM,CAAC7b,IAAvB,EAA6B,OAA7B,EAAsC+tC,KAAK,GAAGrtC,CAAC,GAAG9O,IAAI,CAACkb,SAAvD,EAAkEnS,IAAI,CAAC8oB,GAAvE;AACD;AACF,OAlBD;AAmBD;;AAED,SAAKuqB,aAAL,CAAmB37C,OAAnB,CAA2B+8C,QAAQ,EAAnC;AACA,SAAKnB,WAAL,CAAiB57C,OAAjB,CAAyB+8C,QAAQ,CAAC,YAAD,CAAjC;AACD,GA/GmB;AAgHpB57C,EAAAA,MAAM,EAAE,gBAAUo6C,MAAV,EAAkBE,MAAlB,EAA0BD,KAA1B,EAAiCE,KAAjC,EAAwC;AAC9C,QAAMuB,OAAO,GAAG30C,IAAI,CAAC6I,GAAL,CAASoqC,MAAT,EAAiBC,KAAjB,CAAhB;;AACA,QAAM0B,MAAM,GAAG50C,IAAI,CAAC8oB,GAAL,CAASmqB,MAAT,EAAiBC,KAAjB,CAAf;;AACA,QAAM2B,OAAO,GAAG70C,IAAI,CAAC6I,GAAL,CAASsqC,MAAT,EAAiBC,KAAjB,CAAhB;;AACA,QAAM0B,MAAM,GAAG90C,IAAI,CAAC8oB,GAAL,CAASqqB,MAAT,EAAiBC,KAAjB,CAAf;;AAEA,SAAKkB,SAAL,CAAepzB,MAAM,CAAC7b,IAAtB,EAA4B,QAA5B,EAAsCsvC,OAAtC,EAA+C30C,IAAI,CAAC6I,GAApD;AACA,SAAKyrC,SAAL,CAAepzB,MAAM,CAAC7b,IAAtB,EAA4B,QAA5B,EAAsCwvC,OAAtC,EAA+C70C,IAAI,CAAC6I,GAApD;AACA,SAAKyrC,SAAL,CAAepzB,MAAM,CAAC7b,IAAtB,EAA4B,OAA5B,EAAqCuvC,MAArC,EAA6C50C,IAAI,CAAC8oB,GAAlD;AACA,SAAKwrB,SAAL,CAAepzB,MAAM,CAAC7b,IAAtB,EAA4B,OAA5B,EAAqCyvC,MAArC,EAA6C90C,IAAI,CAAC8oB,GAAlD;AAEA,SAAKyrB,YAAL,CAAkBI,OAAlB,EAA2BE,OAA3B,EAAoCD,MAApC,EAA4CE,MAA5C;AACD,GA5HmB;AA6HpBC,EAAAA,aAAa,EAAE,uBAAU5U,OAAV,EAAmBjhB,OAAnB,EAA4B8tB,MAA5B,EAAoC;AACjD,QAAMgI,SAAS,GAAGhI,MAAM,CAAC7M,OAAO,CAAC+N,IAAR,CAAaC,KAAd,CAAxB;AACA,QAAM8G,WAAW,GAAGC,gBAAgB,CAAC/U,OAAO,CAAC+N,IAAR,CAAaC,KAAd,CAAhB,CAAqCz3C,MAArC,IAA+C,CAAnE;AACA,QAAM8D,CAAC,GAAGw6C,SAAS,CAACx6C,CAAV,GAAcw6C,SAAS,CAACl7C,KAAV,GAAkB,CAAhC,GAAqC,CAACm7C,WAAW,GAAG,CAAf,IAAoBh+C,IAAI,CAAC8a,eAA1B,GAA6C,CAA3F;AACA,SAAKuhC,WAAL,CAAiBr7C,IAAjB,CAAsB;AACpBg7C,MAAAA,MAAM,EAAEz4C,CADY;AAEpB24C,MAAAA,MAAM,EAAE,KAAKhkC,WAAL,GAAmB,CAFP;AAGpB+jC,MAAAA,KAAK,EAAE14C,CAAC,GAAGvD,IAAI,CAAC8a,eAHI;AAIpBqhC,MAAAA,KAAK,EAAE/5C,SAJa;AAKpB80C,MAAAA,KAAK,EAAEhO,OAAO,CAAC+N,IAAR,CAAaC,KALA;AAMpBgH,MAAAA,QAAQ,EAAEp4B,8DAAA,CAAsBmC,OAAtB;AANU,KAAtB;AAQD,GAzImB;AA0IpBm2B,EAAAA,aAAa,EAAE,uBAAUlV,OAAV,EAAmB;AAChC;AACA,QAAMmV,sBAAsB,GAAG,KAAKhC,WAAL,CAC5BtmC,GAD4B,CACxB,UAAUuoC,UAAV,EAAsB;AACzB,aAAOA,UAAU,CAACpH,KAAlB;AACD,KAH4B,EAI5BqH,WAJ4B,CAIhBrV,OAAO,CAAC+N,IAAR,CAAaC,KAJG,CAA/B;AAKA,WAAO,KAAKmF,WAAL,CAAiBpS,MAAjB,CAAwBoU,sBAAxB,EAAgD,CAAhD,EAAmD,CAAnD,CAAP;AACD,GAlJmB;AAmJpBG,EAAAA,UAAU,EAAE,sBAA+E;AAAA,QAArExnC,KAAqE,uEAA7D;AAAEkyB,MAAAA,OAAO,EAAE9mC,SAAX;AAAsBka,MAAAA,IAAI,EAAE,KAA5B;AAAmCzZ,MAAAA,KAAK,EAAET;AAA1C,KAA6D;AAAA,QAANod,IAAM;AACzF,WAAO;AACLw8B,MAAAA,MAAM,EAAE55C,SADH;AAEL85C,MAAAA,MAAM,EAAE,KAAKhkC,WAFR;AAGL+jC,MAAAA,KAAK,EAAE75C,SAHF;AAIL+5C,MAAAA,KAAK,EAAE/5C,SAJF;AAKL4U,MAAAA,KAAK,EAAEA,KAAK,CAACkyB,OALR;AAML5sB,MAAAA,IAAI,EAAEtF,KAAK,CAACsF,IANP;AAOLzZ,MAAAA,KAAK,EAAEmU,KAAK,CAACnU,KAPR;AAQLC,MAAAA,MAAM,EAAE,CARH;AASL0c,MAAAA,IAAI,EAAEA;AATD,KAAP;AAWD,GA/JmB;AAgKpBi/B,EAAAA,OAAO,EAAE,mBAA+E;AAAA,QAArEznC,KAAqE,uEAA7D;AAAEkyB,MAAAA,OAAO,EAAE9mC,SAAX;AAAsBka,MAAAA,IAAI,EAAE,KAA5B;AAAmCzZ,MAAAA,KAAK,EAAET;AAA1C,KAA6D;AAAA,QAANod,IAAM;AACtF,SAAK48B,aAAL,CAAmBp7C,IAAnB,CAAwB,KAAKw9C,UAAL,CAAgBxnC,KAAhB,EAAuBwI,IAAvB,CAAxB;AACD,GAlKmB;AAmKpBk/B,EAAAA,OAAO,EAAE,mBAAY;AACnB,WAAO,KAAKtC,aAAL,CAAmBuC,GAAnB,EAAP;AACD,GArKmB;AAsKpBC,EAAAA,gBAAgB,EAAE,0BAAU1V,OAAV,EAAmB;AACnC,QAAM2V,IAAI,GAAG,KAAKzC,aAAL,CAAmBuC,GAAnB,EAAb;AACAE,IAAAA,IAAI,CAAC1iB,QAAL,GAAgB0iB,IAAI,CAAC1iB,QAAL,IAAiB,EAAjC;AACA0iB,IAAAA,IAAI,CAACC,aAAL,GAAqBD,IAAI,CAACC,aAAL,IAAsB,EAA3C;AACAD,IAAAA,IAAI,CAAC1iB,QAAL,CAAcn7B,IAAd,CAAmB;AAAEwC,MAAAA,CAAC,EAAEymB,MAAM,CAAC80B,cAAP,EAAL;AAA8Bj8C,MAAAA,MAAM,EAAE;AAAtC,KAAnB;AACA+7C,IAAAA,IAAI,CAACC,aAAL,CAAmB99C,IAAnB,CAAwBkoC,OAAxB;AACA,SAAKkT,aAAL,CAAmBp7C,IAAnB,CAAwB69C,IAAxB;AACD,GA7KmB;AA8KpBG,EAAAA,eAAe,EAAE,yBAAUC,IAAV,EAAgB;AAC/B,SAAK/mC,WAAL,GAAmB,KAAKA,WAAL,GAAmB+mC,IAAtC;AACA,SAAK7wC,IAAL,CAAU+tC,KAAV,GAAkB,KAAKjkC,WAAvB;AACD,GAjLmB;AAkLpB6mC,EAAAA,cAAc,EAAE,0BAAY;AAC1B,WAAO,KAAK7mC,WAAZ;AACD,GApLmB;AAqLpBgnC,EAAAA,SAAS,EAAE,qBAAY;AACrB,WAAO;AAAEj1B,MAAAA,MAAM,EAAE,KAAK7b,IAAf;AAAqBkuC,MAAAA,MAAM,EAAE,KAAKA;AAAlC,KAAP;AACD;AAvLmB,CAAf;AA0LP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAM6C,QAAQ,GAAG,SAAXA,QAAW,CAAU96C,IAAV,EAAgB04C,SAAhB,EAA2B;AAC1C9yB,EAAAA,MAAM,CAAC+0B,eAAP,CAAuBh/C,IAAI,CAACkb,SAA5B;AACA6hC,EAAAA,SAAS,CAACj6C,MAAV,GAAmB9C,IAAI,CAACkb,SAAxB;AACA6hC,EAAAA,SAAS,CAACb,MAAV,GAAmBjyB,MAAM,CAAC80B,cAAP,EAAnB;AACA,MAAMz9C,IAAI,GAAGwkB,4DAAA,EAAb;AACAxkB,EAAAA,IAAI,CAACiC,CAAL,GAASw5C,SAAS,CAACf,MAAnB;AACA16C,EAAAA,IAAI,CAACkC,CAAL,GAASu5C,SAAS,CAACb,MAAnB;AACA56C,EAAAA,IAAI,CAACuB,KAAL,GAAak6C,SAAS,CAACl6C,KAAV,IAAmB7C,IAAI,CAAC6C,KAArC;AACAvB,EAAAA,IAAI,CAACQ,KAAL,GAAa,MAAb;AAEA,MAAIwkB,CAAC,GAAGjiB,IAAI,CAACL,MAAL,CAAY,GAAZ,CAAR;AACA,MAAMq7C,QAAQ,GAAGv5B,yDAAA,CAAiBQ,CAAjB,EAAoBhlB,IAApB,CAAjB;AACA,MAAMi+C,OAAO,GAAGz5B,2DAAA,EAAhB;AACAy5B,EAAAA,OAAO,CAACh8C,CAAR,GAAYw5C,SAAS,CAACf,MAAtB;AACAuD,EAAAA,OAAO,CAAC/7C,CAAR,GAAYu5C,SAAS,CAACb,MAAtB;AACAqD,EAAAA,OAAO,CAAC18C,KAAR,GAAgBvB,IAAI,CAACuB,KAArB;AACA08C,EAAAA,OAAO,CAACt2C,EAAR,GAAa,KAAb;AACAs2C,EAAAA,OAAO,CAACv9C,IAAR,GAAe+6C,SAAS,CAAC7T,OAAzB;AACAqW,EAAAA,OAAO,CAACz9C,KAAR,GAAgB,UAAhB;AACAy9C,EAAAA,OAAO,CAACx+C,UAAR,GAAqBf,IAAI,CAACgc,cAA1B;AACAujC,EAAAA,OAAO,CAAC5iC,QAAR,GAAmB3c,IAAI,CAAC+b,YAAxB;AACAwjC,EAAAA,OAAO,CAAC3iC,UAAR,GAAqB5c,IAAI,CAACic,cAA1B;AACAsjC,EAAAA,OAAO,CAACE,MAAR,GAAiBz/C,IAAI,CAACkc,SAAtB;AACAqjC,EAAAA,OAAO,CAACG,UAAR,GAAqB1/C,IAAI,CAACob,UAA1B;AACAmkC,EAAAA,OAAO,CAACI,MAAR,GAAiB3/C,IAAI,CAACkc,SAAtB;AAEA,MAAI0jC,QAAQ,GAAG/D,kDAAQ,CAACv1B,CAAD,EAAIi5B,OAAJ,CAAvB;AAEA,MAAI/gC,UAAU,GAAGzV,IAAI,CAACkjC,KAAL,CACf2T,QAAQ,CACL7pC,GADH,CACO,UAACmlB,EAAD;AAAA,WAAQ,CAACA,EAAE,CAACrW,OAAH,IAAcqW,EAAf,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB54B,OAAzB,GAAmCQ,MAA3C;AAAA,GADP,EAEGwd,MAFH,CAEU,UAACo8B,GAAD,EAAMmD,IAAN;AAAA,WAAenD,GAAG,GAAGmD,IAArB;AAAA,GAFV,CADe,CAAjB;AAMAR,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,QAAd,EAAwB2c,UAAU,GAAG,IAAIxe,IAAI,CAACob,UAA9C;AACA2hC,EAAAA,SAAS,CAACj6C,MAAV,IAAoB0b,UAAU,GAAG,IAAIxe,IAAI,CAACob,UAA1C;AACA6O,EAAAA,MAAM,CAAC+0B,eAAP,CAAuBxgC,UAAU,GAAG,IAAIxe,IAAI,CAACob,UAA7C;AACA2hC,EAAAA,SAAS,CAACZ,KAAV,GAAkBY,SAAS,CAACb,MAAV,GAAmB19B,UAAnB,GAAgC,IAAIxe,IAAI,CAACob,UAA3D;AACA2hC,EAAAA,SAAS,CAACd,KAAV,GAAkBc,SAAS,CAACf,MAAV,GAAmB16C,IAAI,CAACuB,KAA1C;AACAonB,EAAAA,MAAM,CAACroB,MAAP,CAAcm7C,SAAS,CAACf,MAAxB,EAAgCe,SAAS,CAACb,MAA1C,EAAkDa,SAAS,CAACd,KAA5D,EAAmEc,SAAS,CAACZ,KAA7E;AACAlyB,EAAAA,MAAM,CAACqyB,MAAP,CAAc9B,OAAd,CAAsBuC,SAAtB;AACD,CAzCD;;AA2CA,IAAMrgC,WAAW,GAAG,SAAdA,WAAc,CAACqL,GAAD,EAAS;AAC3B,SAAO;AACLhnB,IAAAA,UAAU,EAAEgnB,GAAG,CAAC3L,iBADX;AAELO,IAAAA,QAAQ,EAAEoL,GAAG,CAAC5L,eAFT;AAGLS,IAAAA,UAAU,EAAEmL,GAAG,CAAC1L;AAHX,GAAP;AAKD,CAND;;AAOA,IAAMQ,QAAQ,GAAG,SAAXA,QAAW,CAACkL,GAAD,EAAS;AACxB,SAAO;AACLhnB,IAAAA,UAAU,EAAEgnB,GAAG,CAAC/L,cADX;AAELW,IAAAA,QAAQ,EAAEoL,GAAG,CAAChM,YAFT;AAGLa,IAAAA,UAAU,EAAEmL,GAAG,CAAC9L;AAHX,GAAP;AAKD,CAND;;AAOA,IAAMa,SAAS,GAAG,SAAZA,SAAY,CAACiL,GAAD,EAAS;AACzB,SAAO;AACLhnB,IAAAA,UAAU,EAAEgnB,GAAG,CAAClM,eADX;AAELc,IAAAA,QAAQ,EAAEoL,GAAG,CAACnM,aAFT;AAGLgB,IAAAA,UAAU,EAAEmL,GAAG,CAACjM;AAHX,GAAP;AAKD,CAND;AAQA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMgkC,WAAW,GAAG,SAAdA,WAAc,CAAUx5B,CAAV,EAAaw2B,QAAb,EAAuB;AACzC7yB,EAAAA,MAAM,CAAC+0B,eAAP,CAAuB,EAAvB;AACA,MAAQhD,MAAR,GAAgEc,QAAhE,CAAQd,MAAR;AAAA,MAAgBC,KAAhB,GAAgEa,QAAhE,CAAgBb,KAAhB;AAAA,MAAuBC,MAAvB,GAAgEY,QAAhE,CAAuBZ,MAAvB;AAAA,MAA+BhT,OAA/B,GAAgE4T,QAAhE,CAA+B5T,OAA/B;AAAA,MAAwCn6B,IAAxC,GAAgE+tC,QAAhE,CAAwC/tC,IAAxC;AAAA,MAA8CgxC,aAA9C,GAAgEjD,QAAhE,CAA8CiD,aAA9C;AACA,MAAMC,KAAK,GAAGv/B,kEAAA,CAAmByoB,OAAnB,EAA4BzpC,MAA1C;AACA,MAAIwgD,QAAQ,GAAGv5C,sEAAA,CAA8BwiC,OAA9B,EAAuCxsB,WAAW,CAAC1c,IAAD,CAAlD,CAAf;AACA,MAAM4X,UAAU,GAAGqoC,QAAQ,CAACn9C,MAAT,GAAkBk9C,KAArC;AACAlD,EAAAA,QAAQ,CAACh6C,MAAT,IAAmB8U,UAAnB;AAEAqS,EAAAA,MAAM,CAAC+0B,eAAP,CAAuBpnC,UAAvB;AACA,MAAM2nC,OAAO,GAAGz5B,2DAAA,EAAhB;AACAy5B,EAAAA,OAAO,CAACh8C,CAAR,GAAYy4C,MAAZ;AACAuD,EAAAA,OAAO,CAAC/7C,CAAR,GAAY04C,MAAM,GAAG,EAArB;AACAqD,EAAAA,OAAO,CAAC18C,KAAR,GAAgBo5C,KAAK,GAAGD,MAAxB;AACAuD,EAAAA,OAAO,CAACz9C,KAAR,GAAgB,aAAhB;AACAy9C,EAAAA,OAAO,CAACt2C,EAAR,GAAa,KAAb;AACAs2C,EAAAA,OAAO,CAACv9C,IAAR,GAAeknC,OAAf;AACAqW,EAAAA,OAAO,CAACx+C,UAAR,GAAqBf,IAAI,CAACoc,iBAA1B;AACAmjC,EAAAA,OAAO,CAAC5iC,QAAR,GAAmB3c,IAAI,CAACmc,eAAxB;AACAojC,EAAAA,OAAO,CAAC3iC,UAAR,GAAqB5c,IAAI,CAACqc,iBAA1B;AACAkjC,EAAAA,OAAO,CAACE,MAAR,GAAiBz/C,IAAI,CAACsb,YAAtB;AACAikC,EAAAA,OAAO,CAACI,MAAR,GAAiB3/C,IAAI,CAACsb,YAAtB;AACAikC,EAAAA,OAAO,CAACG,UAAR,GAAqB1/C,IAAI,CAACuc,WAA1B;AACAgjC,EAAAA,OAAO,CAACn5C,KAAR,GAAgB,KAAhB;AAEAy1C,EAAAA,kDAAQ,CAACv1B,CAAD,EAAIi5B,OAAJ,CAAR;AAEA,MAAIY,WAAW,GAAGF,QAAQ,CAACn9C,MAAT,GAAkB,EAApC;AAEA,MAAIqiC,SAAS,GAAG8a,QAAQ,CAACp9C,KAAzB;AAEA,MAAI2D,IAAJ,EAAU45C,UAAV;;AACA,MAAIpE,MAAM,KAAKC,KAAf,EAAsB;AACpBmE,IAAAA,UAAU,GAAGn2B,MAAM,CAAC80B,cAAP,KAA0BoB,WAAvC;;AACA,QAAIngD,IAAI,CAAC0b,WAAT,EAAsB;AACpBlV,MAAAA,IAAI,GAAG8f,CAAC,CACLtiB,MADI,CACG,MADH,EAEJnC,IAFI,CAGH,GAHG,eAIGm6C,MAJH,cAIaoE,UAJb,gBAI6BpE,MAAM,GAAGjzC,IAAI,CAAC8oB,GAAL,CAAS7xB,IAAI,CAAC6C,KAAL,GAAa,CAAtB,EAAyBsiC,SAAS,GAAG,CAArC,CAJtC,gBAKDib,UAAU,GAAG,EALZ,gBAMGpE,MANH,EAAP;AAQD,KATD,MASO;AACLmE,MAAAA,WAAW,IAAIngD,IAAI,CAACkb,SAApB;AAEAklC,MAAAA,UAAU,GAAGn2B,MAAM,CAAC80B,cAAP,KAA0BoB,WAAvC;AACA35C,MAAAA,IAAI,GAAG8f,CAAC,CACLtiB,MADI,CACG,MADH,EAEJnC,IAFI,CAGH,GAHG,EAIH,OACEm6C,MADF,GAEE,GAFF,GAGEoE,UAHF,GAIE,KAJF,IAKGpE,MAAM,GAAG,EALZ,IAME,GANF,IAOGoE,UAAU,GAAG,EAPhB,IAQE,GARF,IASGpE,MAAM,GAAG,EATZ,IAUE,GAVF,IAWGoE,UAAU,GAAG,EAXhB,IAYE,GAZF,GAaEpE,MAbF,GAcE,GAdF,IAeGoE,UAAU,GAAG,EAfhB,CAJG,CAAP;AAqBD;;AAEDD,IAAAA,WAAW,IAAI,EAAf;AACA,QAAMr3C,EAAE,GAAGC,IAAI,CAAC8oB,GAAL,CAASsT,SAAS,GAAG,CAArB,EAAwBnlC,IAAI,CAAC6C,KAAL,GAAa,CAArC,CAAX;AACAonB,IAAAA,MAAM,CAACroB,MAAP,CACEo6C,MAAM,GAAGlzC,EADX,EAEEmhB,MAAM,CAAC80B,cAAP,KAA0B,EAA1B,GAA+BoB,WAFjC,EAGElE,KAAK,GAAGnzC,EAHV,EAIEmhB,MAAM,CAAC80B,cAAP,KAA0B,EAA1B,GAA+BoB,WAJjC;AAMD,GA9CD,MA8CO;AACLA,IAAAA,WAAW,IAAIngD,IAAI,CAACkb,SAApB;AACAklC,IAAAA,UAAU,GAAGn2B,MAAM,CAAC80B,cAAP,KAA0BoB,WAAvC;AACA35C,IAAAA,IAAI,GAAG8f,CAAC,CAACtiB,MAAF,CAAS,MAAT,CAAP;AACAwC,IAAAA,IAAI,CAAC3E,IAAL,CAAU,IAAV,EAAgBm6C,MAAhB;AACAx1C,IAAAA,IAAI,CAAC3E,IAAL,CAAU,IAAV,EAAgBu+C,UAAhB;AACA55C,IAAAA,IAAI,CAAC3E,IAAL,CAAU,IAAV,EAAgBo6C,KAAhB;AACAz1C,IAAAA,IAAI,CAAC3E,IAAL,CAAU,IAAV,EAAgBu+C,UAAhB;AACAn2B,IAAAA,MAAM,CAACroB,MAAP,CAAco6C,MAAd,EAAsBoE,UAAU,GAAG,EAAnC,EAAuCnE,KAAvC,EAA8CmE,UAA9C;AACD,GAtFwC,CAuFzC;AACA;;;AACA,MACErxC,IAAI,KAAK8W,8EAAT,IACA9W,IAAI,KAAK8W,oFADT,IAEA9W,IAAI,KAAK8W,oFAFT,IAGA9W,IAAI,KAAK8W,mFAJX,EAKE;AACArf,IAAAA,IAAI,CAACpD,KAAL,CAAW,kBAAX,EAA+B,MAA/B;AACAoD,IAAAA,IAAI,CAAC3E,IAAL,CAAU,OAAV,EAAmB,cAAnB;AACD,GARD,MAQO;AACL2E,IAAAA,IAAI,CAAC3E,IAAL,CAAU,OAAV,EAAmB,cAAnB;AACD;;AAED,MAAIoK,GAAG,GAAG,EAAV;;AACA,MAAIjM,IAAI,CAACmM,mBAAT,EAA8B;AAC5BF,IAAAA,GAAG,GACDG,MAAM,CAACC,QAAP,CAAgBC,QAAhB,GACA,IADA,GAEAF,MAAM,CAACC,QAAP,CAAgBE,IAFhB,GAGAH,MAAM,CAACC,QAAP,CAAgBG,QAHhB,GAIAJ,MAAM,CAACC,QAAP,CAAgBI,MALlB;AAMAR,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACAuG,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACD;;AAEDc,EAAAA,IAAI,CAAC3E,IAAL,CAAU,cAAV,EAA0B,CAA1B;AACA2E,EAAAA,IAAI,CAAC3E,IAAL,CAAU,QAAV,EAAoB,MAApB,EAlHyC,CAkHZ;;AAC7B2E,EAAAA,IAAI,CAACpD,KAAL,CAAW,MAAX,EAAmB,MAAnB,EAnHyC,CAmHb;;AAC5B,MAAI2L,IAAI,KAAK8W,6EAAT,IAAqC9W,IAAI,KAAK8W,8EAAlD,EAA6E;AAC3Erf,IAAAA,IAAI,CAAC3E,IAAL,CAAU,YAAV,EAAwB,SAASoK,GAAT,GAAe,aAAvC;AACD;;AACD,MAAI8C,IAAI,KAAK8W,mFAAT,IAA2C9W,IAAI,KAAK8W,oFAAxD,EAAyF;AACvFrf,IAAAA,IAAI,CAAC3E,IAAL,CAAU,YAAV,EAAwB,SAASoK,GAAT,GAAe,eAAvC;AACD;;AAED,MAAI8C,IAAI,KAAK8W,mFAAT,IAA2C9W,IAAI,KAAK8W,oFAAxD,EAAyF;AACvFrf,IAAAA,IAAI,CAAC3E,IAAL,CAAU,YAAV,EAAwB,SAASoK,GAAT,GAAe,aAAvC;AACD,GA7HwC,CA+HzC;;;AACA,MAAI8vC,uEAAA,MAAoC/7C,IAAI,CAAC2b,mBAA7C,EAAkE;AAChEnV,IAAAA,IAAI,CAAC3E,IAAL,CAAU,cAAV,EAA0B,SAASoK,GAAT,GAAe,kBAAzC;AACAqa,IAAAA,CAAC,CAACtiB,MAAF,CAAS,MAAT,EACGnC,IADH,CACQ,GADR,EACam6C,MADb,EAEGn6C,IAFH,CAEQ,GAFR,EAEau+C,UAAU,GAAG,CAF1B,EAGGv+C,IAHH,CAGQ,aAHR,EAGuB,YAHvB,EAIGA,IAJH,CAIQ,WAJR,EAIqB,MAJrB,EAKGA,IALH,CAKQ,aALR,EAKuB,QALvB,EAMGA,IANH,CAMQ,YANR,EAMsB,MANtB,EAOGA,IAPH,CAOQ,OAPR,EAOiB,gBAPjB,EAQGG,IARH,CAQQ+9C,aARR;AASD;;AACD91B,EAAAA,MAAM,CAAC+0B,eAAP,CAAuBmB,WAAvB;AACArD,EAAAA,QAAQ,CAACh6C,MAAT,IAAmBq9C,WAAnB;AACArD,EAAAA,QAAQ,CAACX,KAAT,GAAiBW,QAAQ,CAACZ,MAAT,GAAkBY,QAAQ,CAACh6C,MAA5C;AACAmnB,EAAAA,MAAM,CAACroB,MAAP,CAAck7C,QAAQ,CAACuD,UAAvB,EAAmCvD,QAAQ,CAACZ,MAA5C,EAAoDY,QAAQ,CAACwD,QAA7D,EAAuExD,QAAQ,CAACX,KAAhF;AACD,CAhJD;;AAkJO,IAAMoE,UAAU,GAAG,SAAbA,UAAa,CAAUt4B,OAAV,EAAmB8tB,MAAnB,EAA2ByK,SAA3B,EAAsCtoC,WAAtC,EAAmD;AAC3E;AACA,MAAIuoC,SAAS,GAAG,CAAhB;AACA,MAAIC,UAAU,GAAG,CAAjB;AACA,MAAI1oC,SAAS,GAAG,CAAhB;;AACA,OAAK,IAAIxY,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGghD,SAAS,CAAC/gD,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;AACzC,QAAM03C,KAAK,GAAGnB,MAAM,CAACyK,SAAS,CAAChhD,CAAD,CAAV,CAApB,CADyC,CAGzC;;AACA03C,IAAAA,KAAK,CAACr0C,KAAN,GAAcq0C,KAAK,CAACr0C,KAAN,IAAe7C,IAAI,CAAC6C,KAAlC;AACAq0C,IAAAA,KAAK,CAACp0C,MAAN,GAAeiG,IAAI,CAAC8oB,GAAL,CAASqlB,KAAK,CAACp0C,MAAN,IAAgB9C,IAAI,CAAC8C,MAA9B,EAAsC9C,IAAI,CAAC8C,MAA3C,CAAf;AACAo0C,IAAAA,KAAK,CAACzI,MAAN,GAAeyI,KAAK,CAACzI,MAAN,IAAgBzuC,IAAI,CAACib,WAApC;AAEAi8B,IAAAA,KAAK,CAAC3zC,CAAN,GAAUk9C,SAAS,GAAGC,UAAtB;AACAxJ,IAAAA,KAAK,CAAC1zC,CAAN,GAAU0U,WAAV,CATyC,CAWzC;;AACA,QAAMpV,MAAM,GAAGgjB,0DAAA,CAAkBmC,OAAlB,EAA2BivB,KAA3B,EAAkCl3C,IAAlC,CAAf;AACAgY,IAAAA,SAAS,GAAGjP,IAAI,CAAC8oB,GAAL,CAAS7Z,SAAT,EAAoBlV,MAApB,CAAZ;AACAmnB,IAAAA,MAAM,CAACroB,MAAP,CAAcs1C,KAAK,CAAC3zC,CAApB,EAAuB2U,WAAvB,EAAoCg/B,KAAK,CAAC3zC,CAAN,GAAU2zC,KAAK,CAACr0C,KAApD,EAA2Dq0C,KAAK,CAACp0C,MAAjE;AAEA29C,IAAAA,SAAS,IAAIvJ,KAAK,CAACr0C,KAAnB;AACA69C,IAAAA,UAAU,IAAIxJ,KAAK,CAACzI,MAApB;AACAxkB,IAAAA,MAAM,CAACqyB,MAAP,CAAcjG,QAAd,CAAuBa,KAAvB;AACD,GAxB0E,CA0B3E;;;AACAjtB,EAAAA,MAAM,CAAC+0B,eAAP,CAAuBhnC,SAAvB;AACD,CA5BM;AA8BA,IAAM4oC,eAAe,GAAG,SAAlBA,eAAkB,CAAU34B,OAAV,EAAmB8tB,MAAnB,EAA2ByK,SAA3B,EAAsC;AACnE,MAAIxoC,SAAS,GAAG,CAAhB;AACA,MAAID,QAAQ,GAAG,CAAf;;AACA,OAAK,IAAIvY,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGghD,SAAS,CAAC/gD,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;AACzC,QAAM03C,KAAK,GAAGnB,MAAM,CAACyK,SAAS,CAAChhD,CAAD,CAAV,CAApB;AACA,QAAMqhD,YAAY,GAAGC,qBAAqB,CAAC5J,KAAD,CAA1C;AACA,QAAI6J,cAAc,GAAGj7B,0DAAA,CAAkBmC,OAAlB,EAA2BivB,KAA3B,EAAkC2J,YAAlC,EAAgD7gD,IAAhD,EAAsDA,IAAI,CAACwb,UAA3D,CAArB;;AACA,QAAIulC,cAAc,CAACj+C,MAAf,GAAwBkV,SAA5B,EAAuC;AACrCA,MAAAA,SAAS,GAAG+oC,cAAc,CAACj+C,MAA3B;AACD;;AACD,QAAIi+C,cAAc,CAACl+C,KAAf,GAAuBq0C,KAAK,CAAC3zC,CAA7B,GAAiCwU,QAArC,EAA+C;AAC7CA,MAAAA,QAAQ,GAAGgpC,cAAc,CAACl+C,KAAf,GAAuBq0C,KAAK,CAAC3zC,CAAxC;AACD;AACF;;AAED,SAAO;AAAEyU,IAAAA,SAAS,EAAEA,SAAb;AAAwBD,IAAAA,QAAQ,EAAEA;AAAlC,GAAP;AACD,CAhBM;AAkBA,IAAM+P,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpCvpB,EAAAA,uDAAe,CAACwB,IAAD,EAAO+nB,GAAP,CAAf;;AAEA,MAAIA,GAAG,CAAChnB,UAAR,EAAoB;AAClBf,IAAAA,IAAI,CAAC6b,eAAL,GAAuB7b,IAAI,CAACgc,cAAL,GAAsBhc,IAAI,CAACoc,iBAAL,GAAyB2L,GAAG,CAAChnB,UAA1E;AACD;;AACD,MAAIgnB,GAAG,CAACpL,QAAR,EAAkB;AAChB3c,IAAAA,IAAI,CAAC4b,aAAL,GAAqB5b,IAAI,CAAC+b,YAAL,GAAoB/b,IAAI,CAACmc,eAAL,GAAuB4L,GAAG,CAACpL,QAApE;AACD;;AACD,MAAIoL,GAAG,CAACnL,UAAR,EAAoB;AAClB5c,IAAAA,IAAI,CAAC8b,eAAL,GAAuB9b,IAAI,CAACic,cAAL,GAAsBjc,IAAI,CAACqc,iBAAL,GAAyB0L,GAAG,CAACnL,UAA1E;AACD;AACF,CAZM;;AAcP,IAAMqhC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAU/G,KAAV,EAAiB;AACxC,SAAOjtB,MAAM,CAACoyB,WAAP,CAAmB7wC,MAAnB,CAA0B,UAAU8yC,UAAV,EAAsB;AACrD,WAAOA,UAAU,CAACpH,KAAX,KAAqBA,KAA5B;AACD,GAFM,CAAP;AAGD,CAJD;;AAMA,IAAM+J,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAU/J,KAAV,EAAiBnB,MAAjB,EAAyB;AAChD;AACA,MAAMmL,QAAQ,GAAGnL,MAAM,CAACmB,KAAD,CAAvB;AACA,MAAMmF,WAAW,GAAG4B,gBAAgB,CAAC/G,KAAD,CAApC;AAEA,MAAMrlC,IAAI,GAAGwqC,WAAW,CAAC/7B,MAAZ,CAAmB,UAAUo8B,GAAV,EAAe4B,UAAf,EAA2B;AACzD,WAAOv1C,IAAI,CAAC6I,GAAL,CAAS8qC,GAAT,EAAc4B,UAAU,CAACtC,MAAzB,CAAP;AACD,GAFY,EAEVkF,QAAQ,CAAC39C,CAAT,GAAa29C,QAAQ,CAACr+C,KAAT,GAAiB,CAFpB,CAAb;AAGA,MAAMuiB,KAAK,GAAGi3B,WAAW,CAAC/7B,MAAZ,CAAmB,UAAUo8B,GAAV,EAAe4B,UAAf,EAA2B;AAC1D,WAAOv1C,IAAI,CAAC8oB,GAAL,CAAS6qB,GAAT,EAAc4B,UAAU,CAACrC,KAAzB,CAAP;AACD,GAFa,EAEXiF,QAAQ,CAAC39C,CAAT,GAAa29C,QAAQ,CAACr+C,KAAT,GAAiB,CAFnB,CAAd;AAGA,SAAO,CAACgP,IAAD,EAAOuT,KAAP,CAAP;AACD,CAZD;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS+7B,uBAAT,CAAiCC,UAAjC,EAA6C/X,GAA7C,EAAkDgY,SAAlD,EAA6DC,UAA7D,EAAyEC,SAAzE,EAAoF;AAClFt3B,EAAAA,MAAM,CAAC+0B,eAAP,CAAuBqC,SAAvB;AACA,MAAIG,YAAY,GAAGF,UAAnB;;AACA,MAAIjY,GAAG,CAAC3nC,EAAJ,IAAU2nC,GAAG,CAACH,OAAd,IAAyBkY,UAAU,CAAC/X,GAAG,CAAC3nC,EAAL,CAAvC,EAAiD;AAC/C,QAAI+/C,SAAS,GAAGL,UAAU,CAAC/X,GAAG,CAAC3nC,EAAL,CAAV,CAAmBmB,KAAnC;AACA,QAAI6+C,QAAQ,GAAGhlC,WAAW,CAAC1c,IAAD,CAA1B;AACAqpC,IAAAA,GAAG,CAACH,OAAJ,GAAcxiC,wDAAA,YAAoB2iC,GAAG,CAACH,OAAxB,QAAoCuY,SAAS,GAAG,IAAIzhD,IAAI,CAACuc,WAAzD,EAAsEmlC,QAAtE,CAAd;AACArY,IAAAA,GAAG,CAACxmC,KAAJ,GAAY4+C,SAAZ;AACApY,IAAAA,GAAG,CAAC/sB,IAAJ,GAAW,IAAX,CAL+C,CAO/C;;AACA,QAAM2jC,QAAQ,GAAGv5C,sEAAA,CAA8B2iC,GAAG,CAACH,OAAlC,EAA2CwY,QAA3C,CAAjB;AACA,QAAMvB,WAAW,GAAGp3C,IAAI,CAAC8oB,GAAL,CAASouB,QAAQ,CAACn9C,MAAlB,EAA0B9C,IAAI,CAACyc,cAA/B,CAApB;AACA+kC,IAAAA,YAAY,GAAGF,UAAU,GAAGnB,WAA5B;AACA1hD,IAAAA,8CAAA,WAAa0hD,WAAb,gBAA8B9W,GAAG,CAACH,OAAlC;AACD;;AACDqY,EAAAA,SAAS,CAAClY,GAAD,CAAT;AACApf,EAAAA,MAAM,CAAC+0B,eAAP,CAAuBwC,YAAvB;AACD;AAED;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMh5B,IAAI,GAAG,SAAPA,IAAO,CAAUxmB,IAAV,EAAgBN,EAAhB,EAAoB;AACtC1B,EAAAA,IAAI,GAAGwgB,8CAAA,GAAsB3F,QAA7B;AACAgL,EAAAA,oEAAA;AACAA,EAAAA,sEAAA,CAAkB7lB,IAAI,CAACsc,IAAvB;AACAuJ,EAAAA,iEAAA,CAAa7jB,IAAI,GAAG,IAApB;AACAioB,EAAAA,MAAM,CAACmzB,IAAP;AACA3+C,EAAAA,8CAAA,aAAeyE,IAAI,CAACC,SAAL,CAAenD,IAAf,EAAqB,IAArB,EAA2B,CAA3B,CAAf;AAEA,MAAMioB,OAAO,GAAG7mB,0CAAM,iBAASM,EAAT,SAAtB,CARsC,CAUtC;;AACA,MAAMq0C,MAAM,GAAGlwB,wEAAA,EAAf;AACA,MAAM26B,SAAS,GAAG36B,2EAAA,EAAlB;AACA,MAAMmwB,QAAQ,GAAGnwB,0EAAA,EAAjB;AACA,MAAM7O,KAAK,GAAG6O,uEAAA,EAAd;AAEA,MAAM+7B,uBAAuB,GAAGC,0BAA0B,CAAC9L,MAAD,EAASC,QAAT,CAA1D;AACAh2C,EAAAA,IAAI,CAAC8C,MAAL,GAAcg/C,qBAAqB,CAAC/L,MAAD,EAAS6L,uBAAT,CAAnC;AAEA97B,EAAAA,mEAAA,CAA2BmC,OAA3B;AACAnC,EAAAA,mEAAA,CAA2BmC,OAA3B;AACAnC,EAAAA,gEAAA,CAAwBmC,OAAxB;AAEAs4B,EAAAA,UAAU,CAACt4B,OAAD,EAAU8tB,MAAV,EAAkByK,SAAlB,EAA6B,CAA7B,CAAV;AACA,MAAMY,UAAU,GAAGc,mBAAmB,CAAClM,QAAD,EAAWD,MAAX,EAAmB6L,uBAAnB,CAAtC,CAxBsC,CA0BtC;;AACA97B,EAAAA,gEAAA,CAAwBmC,OAAxB;AACAnC,EAAAA,qEAAA,CAA6BmC,OAA7B;AACAnC,EAAAA,sEAAA,CAA8BmC,OAA9B;AACAnC,EAAAA,qEAAA,CAA6BmC,OAA7B;AAEA;AACF;AACA;AACA;;AACE,WAASs6B,SAAT,CAAmBlZ,GAAnB,EAAwBnxB,WAAxB,EAAqC;AACnC,QAAMsqC,cAAc,GAAGv4B,MAAM,CAACm0B,aAAP,CAAqB/U,GAArB,CAAvB;;AACA,QAAImZ,cAAc,CAACtG,MAAf,GAAwB,EAAxB,GAA6BhkC,WAAjC,EAA8C;AAC5CsqC,MAAAA,cAAc,CAACtG,MAAf,GAAwBhkC,WAAW,GAAG,CAAtC;AACAA,MAAAA,WAAW,IAAI,EAAf;AACD;;AACD4N,IAAAA,+DAAA,CACEmC,OADF,EAEEu6B,cAFF,EAGEtqC,WAHF,EAIElY,IAJF,EAKEi+C,gBAAgB,CAAC5U,GAAG,CAAC4N,IAAJ,CAASC,KAAV,CAAhB,CAAiCz3C,MALnC;AAQAwqB,IAAAA,MAAM,CAACroB,MAAP,CAAc4gD,cAAc,CAACxG,MAA7B,EAAqC9jC,WAAW,GAAG,EAAnD,EAAuDsqC,cAAc,CAACvG,KAAtE,EAA6E/jC,WAA7E;AACD,GAnDqC,CAqDtC;;;AACA,MAAI6nC,aAAa,GAAG,CAApB;AACA/J,EAAAA,QAAQ,CAACv1C,OAAT,CAAiB,UAAU4oC,GAAV,EAAe;AAC9B,QAAIwT,SAAJ,EAAeE,SAAf,EAA0BD,QAA1B;;AAEA,YAAQzT,GAAG,CAACt6B,IAAZ;AACE,WAAK8W,4EAAL;AACEk3B,QAAAA,SAAS,GAAG1T,GAAG,CAAC0T,SAAhB;AACAoC,QAAAA,QAAQ,CAACl3B,OAAD,EAAU80B,SAAV,CAAR;AACA;;AACF,WAAKl3B,oFAAL;AACEoE,QAAAA,MAAM,CAAC6zB,aAAP,CAAqBzU,GAArB,EAA0BphB,OAA1B,EAAmC8tB,MAAnC;AACA;;AACF,WAAKlwB,kFAAL;AACE08B,QAAAA,SAAS,CAAClZ,GAAD,EAAMpf,MAAM,CAAC80B,cAAP,EAAN,CAAT;AACA;;AACF,WAAKl5B,kFAAL;AACEs7B,QAAAA,uBAAuB,CACrBC,UADqB,EAErB/X,GAFqB,EAGrBrpC,IAAI,CAACkb,SAHgB,EAIrBlb,IAAI,CAACkb,SAAL,GAAiBlb,IAAI,CAACmb,aAJD,EAKrB,UAAC+tB,OAAD;AAAA,iBAAajf,MAAM,CAACw0B,OAAP,CAAevV,OAAf,CAAb;AAAA,SALqB,CAAvB;AAOA;;AACF,WAAKrjB,gFAAL;AACEg3B,QAAAA,SAAS,GAAG5yB,MAAM,CAACy0B,OAAP,EAAZ;AACA54B,QAAAA,yDAAA,CAAiBmC,OAAjB,EAA0B40B,SAA1B,EAAqC,MAArC,EAA6C78C,IAA7C;AACAiqB,QAAAA,MAAM,CAAC+0B,eAAP,CAAuBnC,SAAS,CAACV,KAAV,GAAkBlyB,MAAM,CAAC80B,cAAP,EAAzC;AACA90B,QAAAA,MAAM,CAACqyB,MAAP,CAAcM,OAAd,CAAsBC,SAAtB;AACA;;AACF,WAAKh3B,kFAAL;AACEs7B,QAAAA,uBAAuB,CAACC,UAAD,EAAa/X,GAAb,EAAkBrpC,IAAI,CAACkb,SAAvB,EAAkClb,IAAI,CAACkb,SAAvC,EAAkD,UAACguB,OAAD;AAAA,iBACvEjf,MAAM,CAACw0B,OAAP,CAAer8C,SAAf,EAA0B8mC,OAAO,CAACA,OAAlC,CADuE;AAAA,SAAlD,CAAvB;AAGA;;AACF,WAAKrjB,gFAAL;AACEg3B,QAAAA,SAAS,GAAG5yB,MAAM,CAACy0B,OAAP,EAAZ;AACA54B,QAAAA,mEAAA,CAA2BmC,OAA3B,EAAoC40B,SAApC;AACA5yB,QAAAA,MAAM,CAACqyB,MAAP,CAAcM,OAAd,CAAsBC,SAAtB;AACA5yB,QAAAA,MAAM,CAAC+0B,eAAP,CAAuBnC,SAAS,CAACV,KAAV,GAAkBlyB,MAAM,CAAC80B,cAAP,EAAzC;AACA;;AACF,WAAKl5B,iFAAL;AACEs7B,QAAAA,uBAAuB,CACrBC,UADqB,EAErB/X,GAFqB,EAGrBrpC,IAAI,CAACkb,SAHgB,EAIrBlb,IAAI,CAACkb,SAAL,GAAiBlb,IAAI,CAACmb,aAJD,EAKrB,UAAC+tB,OAAD;AAAA,iBAAajf,MAAM,CAACw0B,OAAP,CAAevV,OAAf,CAAb;AAAA,SALqB,CAAvB;AAOA;;AACF,WAAKrjB,+EAAL;AACEg3B,QAAAA,SAAS,GAAG5yB,MAAM,CAACy0B,OAAP,EAAZ;AACA54B,QAAAA,yDAAA,CAAiBmC,OAAjB,EAA0B40B,SAA1B,EAAqC,KAArC,EAA4C78C,IAA5C;AACAiqB,QAAAA,MAAM,CAAC+0B,eAAP,CAAuBnC,SAAS,CAACV,KAAV,GAAkBlyB,MAAM,CAAC80B,cAAP,EAAzC;AACA90B,QAAAA,MAAM,CAACqyB,MAAP,CAAcM,OAAd,CAAsBC,SAAtB;AACA;;AACF,WAAKh3B,iFAAL;AACEs7B,QAAAA,uBAAuB,CACrBC,UADqB,EAErB/X,GAFqB,EAGrBrpC,IAAI,CAACkb,SAHgB,EAIrBlb,IAAI,CAACkb,SAAL,GAAiBlb,IAAI,CAACmb,aAJD,EAKrB,UAAC+tB,OAAD;AAAA,iBAAajf,MAAM,CAACw0B,OAAP,CAAevV,OAAf,CAAb;AAAA,SALqB,CAAvB;AAOA;;AACF,WAAKrjB,gFAAL;AACEs7B,QAAAA,uBAAuB,CACrBC,UADqB,EAErB/X,GAFqB,EAGrBrpC,IAAI,CAACkb,SAAL,GAAiBlb,IAAI,CAACmb,aAHD,EAIrBnb,IAAI,CAACkb,SAJgB,EAKrB,UAACguB,OAAD;AAAA,iBAAajf,MAAM,CAAC20B,gBAAP,CAAwB1V,OAAxB,CAAb;AAAA,SALqB,CAAvB;AAOA;;AACF,WAAKrjB,+EAAL;AACEg3B,QAAAA,SAAS,GAAG5yB,MAAM,CAACy0B,OAAP,EAAZ;AACA54B,QAAAA,yDAAA,CAAiBmC,OAAjB,EAA0B40B,SAA1B,EAAqC,KAArC,EAA4C78C,IAA5C;AACAiqB,QAAAA,MAAM,CAAC+0B,eAAP,CAAuBnC,SAAS,CAACV,KAAV,GAAkBlyB,MAAM,CAAC80B,cAAP,EAAzC;AACA90B,QAAAA,MAAM,CAACqyB,MAAP,CAAcM,OAAd,CAAsBC,SAAtB;AACA;;AACF,WAAKh3B,iFAAL;AACEs7B,QAAAA,uBAAuB,CACrBC,UADqB,EAErB/X,GAFqB,EAGrBrpC,IAAI,CAACkb,SAHgB,EAIrBlb,IAAI,CAACkb,SAAL,GAAiBlb,IAAI,CAACmb,aAJD,EAKrB,UAAC+tB,OAAD;AAAA,iBAAajf,MAAM,CAACw0B,OAAP,CAAevV,OAAf,CAAb;AAAA,SALqB,CAAvB;AAOA;;AACF,WAAKrjB,+EAAL;AACEs7B,QAAAA,uBAAuB,CACrBC,UADqB,EAErB/X,GAFqB,EAGrBrpC,IAAI,CAACkb,SAAL,GAAiBlb,IAAI,CAACmb,aAHD,EAIrBnb,IAAI,CAACkb,SAJgB,EAKrB,UAACguB,OAAD;AAAA,iBAAajf,MAAM,CAAC20B,gBAAP,CAAwB1V,OAAxB,CAAb;AAAA,SALqB,CAAvB;AAOA;;AACF,WAAKrjB,+EAAL;AACEg3B,QAAAA,SAAS,GAAG5yB,MAAM,CAACy0B,OAAP,EAAZ;AACA54B,QAAAA,yDAAA,CAAiBmC,OAAjB,EAA0B40B,SAA1B,EAAqC,KAArC,EAA4C78C,IAA5C;AACAiqB,QAAAA,MAAM,CAAC+0B,eAAP,CAAuBnC,SAAS,CAACV,KAAV,GAAkBlyB,MAAM,CAAC80B,cAAP,EAAzC;AACA90B,QAAAA,MAAM,CAACqyB,MAAP,CAAcM,OAAd,CAAsBC,SAAtB;AACA;;AACF;AACE,YAAI;AACF;AACAC,UAAAA,QAAQ,GAAGzT,GAAG,CAACyT,QAAf;AACAA,UAAAA,QAAQ,CAACZ,MAAT,GAAkBjyB,MAAM,CAAC80B,cAAP,EAAlB;AACAjC,UAAAA,QAAQ,CAACiD,aAAT,GAAyBA,aAAzB;AACAD,UAAAA,WAAW,CAAC73B,OAAD,EAAU60B,QAAV,CAAX;AACA7yB,UAAAA,MAAM,CAACqyB,MAAP,CAAclF,UAAd,CAAyB0F,QAAzB;AACD,SAPD,CAOE,OAAOryC,CAAP,EAAU;AACVhM,UAAAA,8CAAA,CAAU,6BAAV,EAAyCgM,CAAzC;AACD;;AA9GL,KAH8B,CAmH9B;;;AACA,QACE,CACEob,kFADF,EAEEA,mFAFF,EAGEA,6EAHF,EAIEA,8EAJF,EAKEA,mFALF,EAMEA,oFANF,EAOEA,mFAPF,EAQEA,oFARF,EASEoW,QATF,CASWoN,GAAG,CAACt6B,IATf,CADF,EAWE;AACAgxC,MAAAA,aAAa;AACd;AACF,GAlID;;AAoIA,MAAI//C,IAAI,CAACub,YAAT,EAAuB;AACrB;AACA0O,IAAAA,MAAM,CAAC+0B,eAAP,CAAuBh/C,IAAI,CAACkb,SAAL,GAAiB,CAAxC;AACAqlC,IAAAA,UAAU,CAACt4B,OAAD,EAAU8tB,MAAV,EAAkByK,SAAlB,EAA6Bv2B,MAAM,CAAC80B,cAAP,EAA7B,CAAV;AACA90B,IAAAA,MAAM,CAAC+0B,eAAP,CAAuBh/C,IAAI,CAACkb,SAA5B;AACA4gC,IAAAA,4DAAkB,CAAC7zB,OAAD,EAAUgC,MAAM,CAAC80B,cAAP,EAAV,CAAlB;AACD,GAjMqC,CAmMtC;;;AACA,MAAI6D,eAAe,GAAGhC,eAAe,CAAC34B,OAAD,EAAU8tB,MAAV,EAAkByK,SAAlB,CAArC;;AAEA,0BAAwBv2B,MAAM,CAACi1B,SAAP,EAAxB;AAAA,MAAgB2D,GAAhB,qBAAQ54B,MAAR,CAtMsC,CAwMtC;;;AACAxrB,EAAAA,8CAAA,CAAU,oCAAoCiD,EAApC,GAAyC,cAAnD;AACA,MAAMohD,UAAU,GAAG/9B,6CAAS,CAAC,MAAMrjB,EAAN,GAAW,cAAZ,CAA5B;AACAohD,EAAAA,UAAU,CAACjhD,IAAX,CAAgB,IAAhB,EAAsBghD,GAAG,CAAC1G,KAA1B,EA3MsC,CA6MtC;;AACA,MAAI4G,SAAS,GAAGF,GAAG,CAAC1G,KAAJ,GAAY0G,GAAG,CAAC3G,MAAhC;;AACA,MAAI6G,SAAS,GAAGH,eAAe,CAAC5qC,SAAhC,EAA2C;AACzC+qC,IAAAA,SAAS,GAAGH,eAAe,CAAC5qC,SAA5B;AACD;;AAED,MAAIlV,MAAM,GAAGigD,SAAS,GAAG,IAAI/iD,IAAI,CAACgb,cAAlC;;AACA,MAAIhb,IAAI,CAACub,YAAT,EAAuB;AACrBzY,IAAAA,MAAM,GAAGA,MAAM,GAAG9C,IAAI,CAACkb,SAAd,GAA0Blb,IAAI,CAACyb,eAAxC;AACD,GAtNqC,CAwNtC;;;AACA,MAAIunC,QAAQ,GAAGH,GAAG,CAAC5G,KAAJ,GAAY4G,GAAG,CAAC7G,MAA/B;;AACA,MAAIgH,QAAQ,GAAGJ,eAAe,CAAC7qC,QAA/B,EAAyC;AACvCirC,IAAAA,QAAQ,GAAGJ,eAAe,CAAC7qC,QAA3B;AACD;;AACD,MAAMlV,KAAK,GAAGmgD,QAAQ,GAAG,IAAIhjD,IAAI,CAAC+a,cAAlC;;AAEA,MAAI/D,KAAJ,EAAW;AACTiR,IAAAA,OAAO,CACJjkB,MADH,CACU,MADV,EAEGhC,IAFH,CAEQgV,KAFR,EAGGnV,IAHH,CAGQ,GAHR,EAGa,CAACghD,GAAG,CAAC5G,KAAJ,GAAY4G,GAAG,CAAC7G,MAAjB,IAA2B,CAA3B,GAA+B,IAAIh8C,IAAI,CAAC+a,cAHrD,EAIGlZ,IAJH,CAIQ,GAJR,EAIa,CAAC,EAJd;AAKD;;AAEDqkB,EAAAA,wDAAgB,CAAC+B,OAAD,EAAUnlB,MAAV,EAAkBD,KAAlB,EAAyB7C,IAAI,CAAC2a,WAA9B,CAAhB;AAEA,MAAMsoC,iBAAiB,GAAGjsC,KAAK,GAAG,EAAH,GAAQ,CAAvC;AACAiR,EAAAA,OAAO,CAACpmB,IAAR,CACE,SADF,EAEEghD,GAAG,CAAC7G,MAAJ,GACEh8C,IAAI,CAAC+a,cADP,GAEE,IAFF,IAGG/a,IAAI,CAACgb,cAAL,GAAsBioC,iBAHzB,IAIE,GAJF,GAKEpgD,KALF,GAME,GANF,IAOGC,MAAM,GAAGmgD,iBAPZ,CAFF;AAWAxkD,EAAAA,8CAAA,YAAqBwrB,MAAM,CAACqyB,MAA5B;AACD,CAtPM;AAwPP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMuF,0BAA0B,GAAG,SAA7BA,0BAA6B,CAAU9L,MAAV,EAAkBC,QAAlB,EAA4B;AAC7D,MAAM4L,uBAAuB,GAAG,EAAhC;AAEA5L,EAAAA,QAAQ,CAACv1C,OAAT,CAAiB,UAAU4oC,GAAV,EAAe;AAC9B,QAAI0M,MAAM,CAAC1M,GAAG,CAACmO,EAAL,CAAN,IAAkBzB,MAAM,CAAC1M,GAAG,CAAC4N,IAAL,CAA5B,EAAwC;AACtC,UAAMC,KAAK,GAAGnB,MAAM,CAAC1M,GAAG,CAACmO,EAAL,CAApB,CADsC,CAGtC;;AACA,UAAInO,GAAG,CAACoR,SAAJ,KAAkB50B,+EAAlB,IAAgD,CAACqxB,KAAK,CAACpB,SAA3D,EAAsE;AACpE;AACD,OANqC,CAQtC;;;AACA,UAAIzM,GAAG,CAACoR,SAAJ,KAAkB50B,gFAAlB,IAAiD,CAACqxB,KAAK,CAACN,SAA5D,EAAuE;AACrE;AACD;;AAED,UAAMsM,MAAM,GAAG7Z,GAAG,CAACoR,SAAJ,KAAkBr4C,SAAjC;AACA,UAAM+gD,SAAS,GAAG,CAACD,MAAnB;AAEA,UAAME,QAAQ,GAAGF,MAAM,GAAGrmC,QAAQ,CAAC7c,IAAD,CAAX,GAAoB0c,WAAW,CAAC1c,IAAD,CAAtD;AACA,UAAIqjD,cAAc,GAAGha,GAAG,CAAC/sB,IAAJ,GACjB5V,wDAAA,CAAgB2iC,GAAG,CAACH,OAApB,EAA6BlpC,IAAI,CAAC6C,KAAL,GAAa,IAAI7C,IAAI,CAACuc,WAAnD,EAAgE6mC,QAAhE,CADiB,GAEjB/Z,GAAG,CAACH,OAFR;AAGA,UAAMoa,iBAAiB,GAAG58C,sEAAA,CAA8B28C,cAA9B,EAA8CD,QAA9C,CAA1B;AACA,UAAMG,YAAY,GAAGD,iBAAiB,CAACzgD,KAAlB,GAA0B,IAAI7C,IAAI,CAACuc,WAAxD;AAEA;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACM,UAAI4mC,SAAS,IAAI9Z,GAAG,CAAC4N,IAAJ,KAAaC,KAAK,CAACN,SAApC,EAA+C;AAC7CgL,QAAAA,uBAAuB,CAACvY,GAAG,CAACmO,EAAL,CAAvB,GAAkCzuC,IAAI,CAAC8oB,GAAL,CAChC+vB,uBAAuB,CAACvY,GAAG,CAACmO,EAAL,CAAvB,IAAmC,CADH,EAEhC+L,YAFgC,CAAlC;AAID,OALD,MAKO,IAAIJ,SAAS,IAAI9Z,GAAG,CAAC4N,IAAJ,KAAaC,KAAK,CAACpB,SAApC,EAA+C;AACpD8L,QAAAA,uBAAuB,CAACvY,GAAG,CAAC4N,IAAL,CAAvB,GAAoCluC,IAAI,CAAC8oB,GAAL,CAClC+vB,uBAAuB,CAACvY,GAAG,CAAC4N,IAAL,CAAvB,IAAqC,CADH,EAElCsM,YAFkC,CAApC;AAID,OALM,MAKA,IAAIJ,SAAS,IAAI9Z,GAAG,CAAC4N,IAAJ,KAAa5N,GAAG,CAACmO,EAAlC,EAAsC;AAC3CoK,QAAAA,uBAAuB,CAACvY,GAAG,CAAC4N,IAAL,CAAvB,GAAoCluC,IAAI,CAAC8oB,GAAL,CAClC+vB,uBAAuB,CAACvY,GAAG,CAAC4N,IAAL,CAAvB,IAAqC,CADH,EAElCsM,YAAY,GAAG,CAFmB,CAApC;AAKA3B,QAAAA,uBAAuB,CAACvY,GAAG,CAACmO,EAAL,CAAvB,GAAkCzuC,IAAI,CAAC8oB,GAAL,CAChC+vB,uBAAuB,CAACvY,GAAG,CAACmO,EAAL,CAAvB,IAAmC,CADH,EAEhC+L,YAAY,GAAG,CAFiB,CAAlC;AAID,OAVM,MAUA,IAAIla,GAAG,CAACoR,SAAJ,KAAkB50B,gFAAtB,EAAmD;AACxD+7B,QAAAA,uBAAuB,CAACvY,GAAG,CAAC4N,IAAL,CAAvB,GAAoCluC,IAAI,CAAC8oB,GAAL,CAClC+vB,uBAAuB,CAACvY,GAAG,CAAC4N,IAAL,CAAvB,IAAqC,CADH,EAElCsM,YAFkC,CAApC;AAID,OALM,MAKA,IAAIla,GAAG,CAACoR,SAAJ,KAAkB50B,+EAAtB,EAAkD;AACvD+7B,QAAAA,uBAAuB,CAAC1K,KAAK,CAACpB,SAAP,CAAvB,GAA2C/sC,IAAI,CAAC8oB,GAAL,CACzC+vB,uBAAuB,CAAC1K,KAAK,CAACpB,SAAP,CAAvB,IAA4C,CADH,EAEzCyN,YAFyC,CAA3C;AAID,OALM,MAKA,IAAIla,GAAG,CAACoR,SAAJ,KAAkB50B,6EAAtB,EAAgD;AACrD,YAAIqxB,KAAK,CAACpB,SAAV,EAAqB;AACnB8L,UAAAA,uBAAuB,CAAC1K,KAAK,CAACpB,SAAP,CAAvB,GAA2C/sC,IAAI,CAAC8oB,GAAL,CACzC+vB,uBAAuB,CAAC1K,KAAK,CAACpB,SAAP,CAAvB,IAA4C,CADH,EAEzCyN,YAAY,GAAG,CAF0B,CAA3C;AAID;;AAED,YAAIrM,KAAK,CAACN,SAAV,EAAqB;AACnBgL,UAAAA,uBAAuB,CAACvY,GAAG,CAAC4N,IAAL,CAAvB,GAAoCluC,IAAI,CAAC8oB,GAAL,CAClC+vB,uBAAuB,CAACvY,GAAG,CAAC4N,IAAL,CAAvB,IAAqC,CADH,EAElCsM,YAAY,GAAG,CAFmB,CAApC;AAID;AACF;AACF;AACF,GAtFD;AAwFA9kD,EAAAA,8CAAA,CAAU,0BAAV,EAAsCmjD,uBAAtC;AACA,SAAOA,uBAAP;AACD,CA7FD;;AA+FA,IAAMd,qBAAqB,GAAG,SAAxBA,qBAAwB,CAAU5J,KAAV,EAAiB;AAC7C,MAAIsM,kBAAkB,GAAG,CAAzB;AACA,MAAMJ,QAAQ,GAAGtmC,SAAS,CAAC9c,IAAD,CAA1B;;AACA,OAAK,IAAIU,GAAT,IAAgBw2C,KAAK,CAACV,KAAtB,EAA6B;AAC3B,QAAIiN,eAAe,GAAG/8C,sEAAA,CAA8BhG,GAA9B,EAAmC0iD,QAAnC,CAAtB;AACA,QAAIM,UAAU,GAAGD,eAAe,CAAC5gD,KAAhB,GAAwB,IAAI7C,IAAI,CAACuc,WAAjC,GAA+C,IAAIvc,IAAI,CAACkb,SAAzE;;AACA,QAAIsoC,kBAAkB,GAAGE,UAAzB,EAAqC;AACnCF,MAAAA,kBAAkB,GAAGE,UAArB;AACD;AACF;;AAED,SAAOF,kBAAP;AACD,CAZD;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAM1B,qBAAqB,GAAG,SAAxBA,qBAAwB,CAAU/L,MAAV,EAAkB4N,mBAAlB,EAAuC;AACnE,MAAI3rC,SAAS,GAAG,CAAhB;AACAnZ,EAAAA,MAAM,CAAC0B,IAAP,CAAYw1C,MAAZ,EAAoBt1C,OAApB,CAA4B,UAACmjD,IAAD,EAAU;AACpC,QAAM1M,KAAK,GAAGnB,MAAM,CAAC6N,IAAD,CAApB;;AACA,QAAI1M,KAAK,CAAC56B,IAAV,EAAgB;AACd46B,MAAAA,KAAK,CAACxV,WAAN,GAAoBh7B,wDAAA,CAClBwwC,KAAK,CAACxV,WADY,EAElB1hC,IAAI,CAAC6C,KAAL,GAAa,IAAI7C,IAAI,CAACuc,WAFJ,EAGlBO,SAAS,CAAC9c,IAAD,CAHS,CAApB;AAKD;;AACD,QAAM6jD,OAAO,GAAGn9C,sEAAA,CAA8BwwC,KAAK,CAACxV,WAApC,EAAiD5kB,SAAS,CAAC9c,IAAD,CAA1D,CAAhB;AACAk3C,IAAAA,KAAK,CAACr0C,KAAN,GAAcq0C,KAAK,CAAC56B,IAAN,GACVtc,IAAI,CAAC6C,KADK,GAEVkG,IAAI,CAAC8oB,GAAL,CAAS7xB,IAAI,CAAC6C,KAAd,EAAqBghD,OAAO,CAAChhD,KAAR,GAAgB,IAAI7C,IAAI,CAACuc,WAA9C,CAFJ;AAIA26B,IAAAA,KAAK,CAACp0C,MAAN,GAAeo0C,KAAK,CAAC56B,IAAN,GAAavT,IAAI,CAAC8oB,GAAL,CAASgyB,OAAO,CAAC/gD,MAAjB,EAAyB9C,IAAI,CAAC8C,MAA9B,CAAb,GAAqD9C,IAAI,CAAC8C,MAAzE;AACAkV,IAAAA,SAAS,GAAGjP,IAAI,CAAC8oB,GAAL,CAAS7Z,SAAT,EAAoBk/B,KAAK,CAACp0C,MAA1B,CAAZ;AACD,GAhBD;;AAkBA,OAAK,IAAIghD,QAAT,IAAqBH,mBAArB,EAA0C;AACxC,QAAMzM,KAAK,GAAGnB,MAAM,CAAC+N,QAAD,CAApB;;AAEA,QAAI,CAAC5M,KAAL,EAAY;AACV;AACD;;AAED,QAAMN,SAAS,GAAGb,MAAM,CAACmB,KAAK,CAACN,SAAP,CAAxB,CAPwC,CASxC;;AACA,QAAI,CAACA,SAAL,EAAgB;AACd;AACD;;AAED,QAAM2M,YAAY,GAAGI,mBAAmB,CAACG,QAAD,CAAxC;AACA,QAAMC,UAAU,GAAGR,YAAY,GAAGvjD,IAAI,CAACib,WAApB,GAAkCi8B,KAAK,CAACr0C,KAAN,GAAc,CAAhD,GAAoD+zC,SAAS,CAAC/zC,KAAV,GAAkB,CAAzF;AAEAq0C,IAAAA,KAAK,CAACzI,MAAN,GAAe1lC,IAAI,CAAC8oB,GAAL,CAASkyB,UAAT,EAAqB/jD,IAAI,CAACib,WAA1B,CAAf;AACD;;AAED,SAAOlS,IAAI,CAAC8oB,GAAL,CAAS7Z,SAAT,EAAoBhY,IAAI,CAAC8C,MAAzB,CAAP;AACD,CAzCD;;AA2CA,IAAMkhD,cAAc,GAAG,SAAjBA,cAAiB,CAAU3a,GAAV,EAAe0M,MAAf,EAAuB;AAC5C,MAAIiG,MAAM,GAAGjG,MAAM,CAAC1M,GAAG,CAAC4N,IAAL,CAAN,CAAiB1zC,CAA9B;AACA,MAAI04C,KAAK,GAAGlG,MAAM,CAAC1M,GAAG,CAACmO,EAAL,CAAN,CAAej0C,CAA3B;AACA,MAAI0gD,UAAU,GAAG5a,GAAG,CAAC/sB,IAAJ,IAAY+sB,GAAG,CAACH,OAAjC;AAEA,MAAIgb,cAAc,GAAGx9C,sEAAA,CACnBu9C,UAAU,GAAGv9C,wDAAA,CAAgB2iC,GAAG,CAACH,OAApB,EAA6BlpC,IAAI,CAAC6C,KAAlC,EAAyCga,QAAQ,CAAC7c,IAAD,CAAjD,CAAH,GAA8DqpC,GAAG,CAACH,OADzD,EAEnBrsB,QAAQ,CAAC7c,IAAD,CAFW,CAArB;AAIA,MAAI+8C,SAAS,GAAG;AACdl6C,IAAAA,KAAK,EAAEohD,UAAU,GACbjkD,IAAI,CAAC6C,KADQ,GAEbkG,IAAI,CAAC8oB,GAAL,CAAS7xB,IAAI,CAAC6C,KAAd,EAAqBqhD,cAAc,CAACrhD,KAAf,GAAuB,IAAI7C,IAAI,CAACob,UAArD,CAHU;AAIdtY,IAAAA,MAAM,EAAE,CAJM;AAKdk5C,IAAAA,MAAM,EAAEjG,MAAM,CAAC1M,GAAG,CAAC4N,IAAL,CAAN,CAAiB1zC,CALX;AAMd04C,IAAAA,KAAK,EAAE,CANO;AAOdC,IAAAA,MAAM,EAAE,CAPM;AAQdC,IAAAA,KAAK,EAAE,CARO;AASdjT,IAAAA,OAAO,EAAEG,GAAG,CAACH;AATC,GAAhB;;AAWA,MAAIG,GAAG,CAACoR,SAAJ,KAAkB50B,gFAAtB,EAAmD;AACjDk3B,IAAAA,SAAS,CAACl6C,KAAV,GAAkBohD,UAAU,GACxBl7C,IAAI,CAAC8oB,GAAL,CAAS7xB,IAAI,CAAC6C,KAAd,EAAqBqhD,cAAc,CAACrhD,KAApC,CADwB,GAExBkG,IAAI,CAAC8oB,GAAL,CACEkkB,MAAM,CAAC1M,GAAG,CAAC4N,IAAL,CAAN,CAAiBp0C,KAAjB,GAAyB,CAAzB,GAA6BkzC,MAAM,CAAC1M,GAAG,CAACmO,EAAL,CAAN,CAAe30C,KAAf,GAAuB,CADtD,EAEEqhD,cAAc,CAACrhD,KAAf,GAAuB,IAAI7C,IAAI,CAACob,UAFlC,CAFJ;AAMA2hC,IAAAA,SAAS,CAACf,MAAV,GAAmBA,MAAM,GAAG,CAACjG,MAAM,CAAC1M,GAAG,CAAC4N,IAAL,CAAN,CAAiBp0C,KAAjB,GAAyB7C,IAAI,CAACib,WAA/B,IAA8C,CAA1E;AACD,GARD,MAQO,IAAIouB,GAAG,CAACoR,SAAJ,KAAkB50B,+EAAtB,EAAkD;AACvDk3B,IAAAA,SAAS,CAACl6C,KAAV,GAAkBohD,UAAU,GACxBl7C,IAAI,CAAC8oB,GAAL,CAAS7xB,IAAI,CAAC6C,KAAd,EAAqBqhD,cAAc,CAACrhD,KAAf,GAAuB,IAAI7C,IAAI,CAACob,UAArD,CADwB,GAExBrS,IAAI,CAAC8oB,GAAL,CACEkkB,MAAM,CAAC1M,GAAG,CAAC4N,IAAL,CAAN,CAAiBp0C,KAAjB,GAAyB,CAAzB,GAA6BkzC,MAAM,CAAC1M,GAAG,CAACmO,EAAL,CAAN,CAAe30C,KAAf,GAAuB,CADtD,EAEEqhD,cAAc,CAACrhD,KAAf,GAAuB,IAAI7C,IAAI,CAACob,UAFlC,CAFJ;AAMA2hC,IAAAA,SAAS,CAACf,MAAV,GAAmBA,MAAM,GAAGe,SAAS,CAACl6C,KAAnB,GAA2B,CAACkzC,MAAM,CAAC1M,GAAG,CAAC4N,IAAL,CAAN,CAAiBp0C,KAAjB,GAAyB7C,IAAI,CAACib,WAA/B,IAA8C,CAA5F;AACD,GARM,MAQA,IAAIouB,GAAG,CAACmO,EAAJ,KAAWnO,GAAG,CAAC4N,IAAnB,EAAyB;AAC9BiN,IAAAA,cAAc,GAAGx9C,sEAAA,CACfu9C,UAAU,GACNv9C,wDAAA,CAAgB2iC,GAAG,CAACH,OAApB,EAA6BngC,IAAI,CAAC8oB,GAAL,CAAS7xB,IAAI,CAAC6C,KAAd,EAAqBkzC,MAAM,CAAC1M,GAAG,CAAC4N,IAAL,CAAN,CAAiBp0C,KAAtC,CAA7B,EAA2Ega,QAAQ,CAAC7c,IAAD,CAAnF,CADM,GAENqpC,GAAG,CAACH,OAHO,EAIfrsB,QAAQ,CAAC7c,IAAD,CAJO,CAAjB;AAMA+8C,IAAAA,SAAS,CAACl6C,KAAV,GAAkBohD,UAAU,GACxBl7C,IAAI,CAAC8oB,GAAL,CAAS7xB,IAAI,CAAC6C,KAAd,EAAqBkzC,MAAM,CAAC1M,GAAG,CAAC4N,IAAL,CAAN,CAAiBp0C,KAAtC,CADwB,GAExBkG,IAAI,CAAC8oB,GAAL,CAASkkB,MAAM,CAAC1M,GAAG,CAAC4N,IAAL,CAAN,CAAiBp0C,KAA1B,EAAiC7C,IAAI,CAAC6C,KAAtC,EAA6CqhD,cAAc,CAACrhD,KAAf,GAAuB,IAAI7C,IAAI,CAACob,UAA7E,CAFJ;AAGA2hC,IAAAA,SAAS,CAACf,MAAV,GAAmBA,MAAM,GAAG,CAACjG,MAAM,CAAC1M,GAAG,CAAC4N,IAAL,CAAN,CAAiBp0C,KAAjB,GAAyBk6C,SAAS,CAACl6C,KAApC,IAA6C,CAAzE;AACD,GAXM,MAWA;AACLk6C,IAAAA,SAAS,CAACl6C,KAAV,GACEkG,IAAI,CAACC,GAAL,CAASgzC,MAAM,GAAGjG,MAAM,CAAC1M,GAAG,CAAC4N,IAAL,CAAN,CAAiBp0C,KAAjB,GAAyB,CAAlC,IAAuCo5C,KAAK,GAAGlG,MAAM,CAAC1M,GAAG,CAACmO,EAAL,CAAN,CAAe30C,KAAf,GAAuB,CAAtE,CAAT,IACA7C,IAAI,CAACib,WAFP;AAGA8hC,IAAAA,SAAS,CAACf,MAAV,GACEA,MAAM,GAAGC,KAAT,GACID,MAAM,GAAGjG,MAAM,CAAC1M,GAAG,CAAC4N,IAAL,CAAN,CAAiBp0C,KAAjB,GAAyB,CAAlC,GAAsC7C,IAAI,CAACib,WAAL,GAAmB,CAD7D,GAEIghC,KAAK,GAAGlG,MAAM,CAAC1M,GAAG,CAACmO,EAAL,CAAN,CAAe30C,KAAf,GAAuB,CAA/B,GAAmC7C,IAAI,CAACib,WAAL,GAAmB,CAH5D;AAID;;AACD,MAAIgpC,UAAJ,EAAgB;AACdlH,IAAAA,SAAS,CAAC7T,OAAV,GAAoBxiC,wDAAA,CAClB2iC,GAAG,CAACH,OADc,EAElB6T,SAAS,CAACl6C,KAAV,GAAkB,IAAI7C,IAAI,CAACuc,WAFT,EAGlBM,QAAQ,CAAC7c,IAAD,CAHU,CAApB;AAKD;;AACDvB,EAAAA,8CAAA,eACSs+C,SAAS,CAACf,MADnB,cAC6Be,SAAS,CAACd,KADvC,cACgDc,SAAS,CAACb,MAD1D,cACoEa,SAAS,CAACZ,KAD9E,cACuFY,SAAS,CAACl6C,KADjG,cAC0Gk6C,SAAS,CAACj6C,MADpH,cAC8HumC,GAAG,CAACH,OADlI;AAGA,SAAO6T,SAAP;AACD,CAnED;;AAqEA,IAAMoH,iBAAiB,GAAG,SAApBA,iBAAoB,CAAU9a,GAAV,EAAe0M,MAAf,EAAuB;AAC/C,MAAIqO,OAAO,GAAG,KAAd;;AACA,MACE,CACEv+B,kFADF,EAEEA,mFAFF,EAGEA,6EAHF,EAIEA,8EAJF,EAKEA,mFALF,EAMEA,oFANF,EAOEA,mFAPF,EAQEA,oFARF,EASEoW,QATF,CASWoN,GAAG,CAACt6B,IATf,CADF,EAWE;AACAq1C,IAAAA,OAAO,GAAG,IAAV;AACD;;AACD,MAAI,CAACA,OAAL,EAAc;AACZ,WAAO,EAAP;AACD;;AACD,MAAM/D,UAAU,GAAGY,gBAAgB,CAAC5X,GAAG,CAAC4N,IAAL,EAAWlB,MAAX,CAAnC;AACA,MAAMuK,QAAQ,GAAGW,gBAAgB,CAAC5X,GAAG,CAACmO,EAAL,EAASzB,MAAT,CAAjC;AACA,MAAMsO,OAAO,GAAGhE,UAAU,CAAC,CAAD,CAAV,IAAiBC,QAAQ,CAAC,CAAD,CAAzB,GAA+B,CAA/B,GAAmC,CAAnD;AACA,MAAMgE,KAAK,GAAGjE,UAAU,CAAC,CAAD,CAAV,GAAgBC,QAAQ,CAAC,CAAD,CAAxB,GAA8B,CAA9B,GAAkC,CAAhD;AACA,MAAMiE,SAAS,GAAGlE,UAAU,CAACxsC,MAAX,CAAkBysC,QAAlB,CAAlB;AACA,MAAMkE,YAAY,GAAGz7C,IAAI,CAACC,GAAL,CAASs3C,QAAQ,CAACgE,KAAD,CAAR,GAAkBjE,UAAU,CAACgE,OAAD,CAArC,CAArB;;AACA,MAAIhb,GAAG,CAAC/sB,IAAJ,IAAY+sB,GAAG,CAACH,OAApB,EAA6B;AAC3BG,IAAAA,GAAG,CAACH,OAAJ,GAAcxiC,wDAAA,CACZ2iC,GAAG,CAACH,OADQ,EAEZngC,IAAI,CAAC8oB,GAAL,CAAS2yB,YAAY,GAAG,IAAIxkD,IAAI,CAACuc,WAAjC,EAA8Cvc,IAAI,CAAC6C,KAAnD,CAFY,EAGZ6Z,WAAW,CAAC1c,IAAD,CAHC,CAAd;AAKD;;AACD,MAAMykD,OAAO,GAAG/9C,sEAAA,CAA8B2iC,GAAG,CAACH,OAAlC,EAA2CxsB,WAAW,CAAC1c,IAAD,CAAtD,CAAhB;AAEA,SAAO;AACL6C,IAAAA,KAAK,EAAEkG,IAAI,CAAC8oB,GAAL,CACLwX,GAAG,CAAC/sB,IAAJ,GAAW,CAAX,GAAemoC,OAAO,CAAC5hD,KAAR,GAAgB,IAAI7C,IAAI,CAACuc,WADnC,EAELioC,YAAY,GAAG,IAAIxkD,IAAI,CAACuc,WAFnB,EAGLvc,IAAI,CAAC6C,KAHA,CADF;AAMLC,IAAAA,MAAM,EAAE,CANH;AAOLk5C,IAAAA,MAAM,EAAEqE,UAAU,CAACgE,OAAD,CAPb;AAQLpI,IAAAA,KAAK,EAAEqE,QAAQ,CAACgE,KAAD,CARV;AASLpI,IAAAA,MAAM,EAAE,CATH;AAULC,IAAAA,KAAK,EAAE,CAVF;AAWLjT,IAAAA,OAAO,EAAEG,GAAG,CAACH,OAXR;AAYLn6B,IAAAA,IAAI,EAAEs6B,GAAG,CAACt6B,IAZL;AAaLuN,IAAAA,IAAI,EAAE+sB,GAAG,CAAC/sB,IAbL;AAcL+jC,IAAAA,UAAU,EAAEt3C,IAAI,CAAC6I,GAAL,CAAS4lB,KAAT,CAAe,IAAf,EAAqB+sB,SAArB,CAdP;AAeLjE,IAAAA,QAAQ,EAAEv3C,IAAI,CAAC8oB,GAAL,CAAS2F,KAAT,CAAe,IAAf,EAAqB+sB,SAArB;AAfL,GAAP;AAiBD,CAnDD;;AAqDA,IAAMrC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAAUlM,QAAV,EAAoBD,MAApB,EAA4B;AACtD,MAAMyG,KAAK,GAAG,EAAd;AACA,MAAMkI,KAAK,GAAG,EAAd;AACA,MAAIC,OAAJ,EAAa5H,SAAb,EAAwBD,QAAxB;AAEA9G,EAAAA,QAAQ,CAACv1C,OAAT,CAAiB,UAAU4oC,GAAV,EAAe;AAC9BA,IAAAA,GAAG,CAAC3nC,EAAJ,GAASgF,qDAAA,CAAa;AAAEjH,MAAAA,MAAM,EAAE;AAAV,KAAb,CAAT;;AACA,YAAQ4pC,GAAG,CAACt6B,IAAZ;AACE,WAAK8W,kFAAL;AACA,WAAKA,iFAAL;AACA,WAAKA,iFAAL;AACA,WAAKA,iFAAL;AACE6+B,QAAAA,KAAK,CAAC1jD,IAAN,CAAW;AACTU,UAAAA,EAAE,EAAE2nC,GAAG,CAAC3nC,EADC;AAET2nC,UAAAA,GAAG,EAAEA,GAAG,CAACH,OAFA;AAGT+N,UAAAA,IAAI,EAAExrC,MAAM,CAACm5C,gBAHJ;AAITpN,UAAAA,EAAE,EAAE/rC,MAAM,CAACo5C,gBAJF;AAKThiD,UAAAA,KAAK,EAAE;AALE,SAAX;AAOA;;AACF,WAAKgjB,gFAAL;AACA,WAAKA,+EAAL;AACE,YAAIwjB,GAAG,CAACH,OAAR,EAAiB;AACfyb,UAAAA,OAAO,GAAGD,KAAK,CAAC/F,GAAN,EAAV;AACAnC,UAAAA,KAAK,CAACmI,OAAO,CAACjjD,EAAT,CAAL,GAAoBijD,OAApB;AACAnI,UAAAA,KAAK,CAACnT,GAAG,CAAC3nC,EAAL,CAAL,GAAgBijD,OAAhB;AACAD,UAAAA,KAAK,CAAC1jD,IAAN,CAAW2jD,OAAX;AACD;;AACD;;AACF,WAAK9+B,gFAAL;AACA,WAAKA,+EAAL;AACA,WAAKA,+EAAL;AACA,WAAKA,+EAAL;AACE8+B,QAAAA,OAAO,GAAGD,KAAK,CAAC/F,GAAN,EAAV;AACAnC,QAAAA,KAAK,CAACmI,OAAO,CAACjjD,EAAT,CAAL,GAAoBijD,OAApB;AACA;;AACF,WAAK9+B,oFAAL;AACE;AACE,cAAMk4B,SAAS,GAAGhI,MAAM,CAAC1M,GAAG,CAAC4N,IAAJ,GAAW5N,GAAG,CAAC4N,IAAJ,CAASC,KAApB,GAA4B7N,GAAG,CAACmO,EAAJ,CAAON,KAApC,CAAxB;AACA,cAAM8G,WAAW,GAAGC,gBAAgB,CAAC5U,GAAG,CAAC4N,IAAJ,GAAW5N,GAAG,CAAC4N,IAAJ,CAASC,KAApB,GAA4B7N,GAAG,CAACmO,EAAJ,CAAON,KAApC,CAAhB,CAA2Dz3C,MAA/E;AACA,cAAM8D,CAAC,GACLw6C,SAAS,CAACx6C,CAAV,GAAcw6C,SAAS,CAACl7C,KAAV,GAAkB,CAAhC,GAAqC,CAACm7C,WAAW,GAAG,CAAf,IAAoBh+C,IAAI,CAAC8a,eAA1B,GAA6C,CADnF;AAEA,cAAMgqC,KAAK,GAAG;AACZ9I,YAAAA,MAAM,EAAEz4C,CADI;AAEZ04C,YAAAA,KAAK,EAAE14C,CAAC,GAAGvD,IAAI,CAAC8a,eAFJ;AAGZo8B,YAAAA,KAAK,EAAE7N,GAAG,CAAC4N,IAAJ,CAASC,KAHJ;AAIZ6N,YAAAA,OAAO,EAAE;AAJG,WAAd;AAMA96B,UAAAA,MAAM,CAACoyB,WAAP,CAAmBr7C,IAAnB,CAAwB8jD,KAAxB;AACD;AACD;;AACF,WAAKj/B,kFAAL;AACE;AACE,cAAMw4B,sBAAsB,GAAGp0B,MAAM,CAACoyB,WAAP,CAC5BtmC,GAD4B,CACxB,UAACghB,CAAD;AAAA,mBAAOA,CAAC,CAACmgB,KAAT;AAAA,WADwB,EAE5BqH,WAF4B,CAEhBlV,GAAG,CAAC4N,IAAJ,CAASC,KAFO,CAA/B;AAGA,iBAAOjtB,MAAM,CAACoyB,WAAP,CAAmBpS,MAAnB,CAA0BoU,sBAA1B,EAAkD,CAAlD,EAAqD,CAArD,CAAP;AACD;AACD;AAnDJ;;AAqDA,QAAM6E,MAAM,GAAG7Z,GAAG,CAACoR,SAAJ,KAAkBr4C,SAAjC;;AACA,QAAI8gD,MAAJ,EAAY;AACVnG,MAAAA,SAAS,GAAGiH,cAAc,CAAC3a,GAAD,EAAM0M,MAAN,CAA1B;AACA1M,MAAAA,GAAG,CAAC0T,SAAJ,GAAgBA,SAAhB;AACA2H,MAAAA,KAAK,CAACjkD,OAAN,CAAc,UAACukD,GAAD,EAAS;AACrBL,QAAAA,OAAO,GAAGK,GAAV;AACAL,QAAAA,OAAO,CAAC1N,IAAR,GAAeluC,IAAI,CAAC6I,GAAL,CAAS+yC,OAAO,CAAC1N,IAAjB,EAAuB8F,SAAS,CAACf,MAAjC,CAAf;AACA2I,QAAAA,OAAO,CAACnN,EAAR,GAAazuC,IAAI,CAAC8oB,GAAL,CAAS8yB,OAAO,CAACnN,EAAjB,EAAqBuF,SAAS,CAACf,MAAV,GAAmBe,SAAS,CAACl6C,KAAlD,CAAb;AACA8hD,QAAAA,OAAO,CAAC9hD,KAAR,GACEkG,IAAI,CAAC8oB,GAAL,CAAS8yB,OAAO,CAAC9hD,KAAjB,EAAwBkG,IAAI,CAACC,GAAL,CAAS27C,OAAO,CAAC1N,IAAR,GAAe0N,OAAO,CAACnN,EAAhC,CAAxB,IAA+Dx3C,IAAI,CAACwc,aADtE;AAED,OAND;AAOD,KAVD,MAUO;AACLsgC,MAAAA,QAAQ,GAAGqH,iBAAiB,CAAC9a,GAAD,EAAM0M,MAAN,CAA5B;AACA1M,MAAAA,GAAG,CAACyT,QAAJ,GAAeA,QAAf;;AACA,UAAIA,QAAQ,CAACd,MAAT,IAAmBc,QAAQ,CAACb,KAA5B,IAAqCyI,KAAK,CAACjlD,MAAN,GAAe,CAAxD,EAA2D;AACzDilD,QAAAA,KAAK,CAACjkD,OAAN,CAAc,UAACukD,GAAD,EAAS;AACrBL,UAAAA,OAAO,GAAGK,GAAV;;AACA,cAAIlI,QAAQ,CAACd,MAAT,KAAoBc,QAAQ,CAACb,KAAjC,EAAwC;AACtC,gBAAIhF,IAAI,GAAGlB,MAAM,CAAC1M,GAAG,CAAC4N,IAAL,CAAjB;AACA,gBAAIO,EAAE,GAAGzB,MAAM,CAAC1M,GAAG,CAACmO,EAAL,CAAf;AACAmN,YAAAA,OAAO,CAAC1N,IAAR,GAAeluC,IAAI,CAAC6I,GAAL,CACbqlC,IAAI,CAAC1zC,CAAL,GAASu5C,QAAQ,CAACj6C,KAAT,GAAiB,CADb,EAEbo0C,IAAI,CAAC1zC,CAAL,GAAS0zC,IAAI,CAACp0C,KAAL,GAAa,CAFT,EAGb8hD,OAAO,CAAC1N,IAHK,CAAf;AAKA0N,YAAAA,OAAO,CAACnN,EAAR,GAAazuC,IAAI,CAAC8oB,GAAL,CAAS2lB,EAAE,CAACj0C,CAAH,GAAOu5C,QAAQ,CAACj6C,KAAT,GAAiB,CAAjC,EAAoC20C,EAAE,CAACj0C,CAAH,GAAO0zC,IAAI,CAACp0C,KAAL,GAAa,CAAxD,EAA2D8hD,OAAO,CAACnN,EAAnE,CAAb;AACAmN,YAAAA,OAAO,CAAC9hD,KAAR,GACEkG,IAAI,CAAC8oB,GAAL,CAAS8yB,OAAO,CAAC9hD,KAAjB,EAAwBkG,IAAI,CAACC,GAAL,CAAS27C,OAAO,CAACnN,EAAR,GAAamN,OAAO,CAAC1N,IAA9B,CAAxB,IAA+Dj3C,IAAI,CAACwc,aADtE;AAED,WAXD,MAWO;AACLmoC,YAAAA,OAAO,CAAC1N,IAAR,GAAeluC,IAAI,CAAC6I,GAAL,CAASkrC,QAAQ,CAACd,MAAlB,EAA0B2I,OAAO,CAAC1N,IAAlC,CAAf;AACA0N,YAAAA,OAAO,CAACnN,EAAR,GAAazuC,IAAI,CAAC8oB,GAAL,CAASirB,QAAQ,CAACb,KAAlB,EAAyB0I,OAAO,CAACnN,EAAjC,CAAb;AACAmN,YAAAA,OAAO,CAAC9hD,KAAR,GAAgBkG,IAAI,CAAC8oB,GAAL,CAAS8yB,OAAO,CAAC9hD,KAAjB,EAAwBi6C,QAAQ,CAACj6C,KAAjC,IAA0C7C,IAAI,CAACwc,aAA/D;AACD;AACF,SAlBD;AAmBD;AACF;AACF,GA3FD;AA4FAyN,EAAAA,MAAM,CAACoyB,WAAP,GAAqB,EAArB;AACA59C,EAAAA,8CAAA,CAAU,mBAAV,EAA+B+9C,KAA/B;AACA,SAAOA,KAAP;AACD,CApGD;;AAsGA,iEAAe;AACbvyB,EAAAA,MAAM,EAANA,MADa;AAEbs2B,EAAAA,UAAU,EAAVA,UAFa;AAGbK,EAAAA,eAAe,EAAfA,eAHa;AAIb94B,EAAAA,OAAO,EAAPA,OAJa;AAKbU,EAAAA,IAAI,EAAJA;AALa,CAAf;;;;;;;;;;;;;;;AC9pCA,IAAMS,SAAS,GAAG,SAAZA,SAAY,CAAC3oB,OAAD;AAAA,yCAEJA,OAAO,CAAC2kD,WAFJ,0BAGN3kD,OAAO,CAAC4kD,QAHF,yDAON5kD,OAAO,CAAC6kD,cAPF,uEAYJ7kD,OAAO,CAAC8kD,cAZJ,2GAkBJ9kD,OAAO,CAAC+kD,WAlBJ,2GAwBJ/kD,OAAO,CAAC+kD,WAxBJ,sDA4BN/kD,OAAO,CAAC+kD,WA5BF,4BA6BJ/kD,OAAO,CAAC+kD,WA7BJ,sDAiCN/kD,OAAO,CAACglD,mBAjCF,sDAqCNhlD,OAAO,CAAC+kD,WArCF,sDAyCN/kD,OAAO,CAAC+kD,WAzCF,4BA0CJ/kD,OAAO,CAAC+kD,WA1CJ,mDA8CN/kD,OAAO,CAACilD,eA9CF,4BA+CJjlD,OAAO,CAACilD,eA/CJ,kDAmDJjlD,OAAO,CAACklD,mBAnDJ,0BAoDNllD,OAAO,CAACmlD,gBApDF,qEAwDNnlD,OAAO,CAAColD,cAxDF,sFA6DNplD,OAAO,CAACqlD,aA7DF,0HAoEJrlD,OAAO,CAACklD,mBApEJ,0BAqENllD,OAAO,CAACklD,mBArEF,sEA0EJllD,OAAO,CAACslD,eA1EJ,0BA2ENtlD,OAAO,CAACulD,YA3EF,mEA+ENvlD,OAAO,CAACwlD,aA/EF,sEAoFNxlD,OAAO,CAACylD,kBApFF,4BAqFJzlD,OAAO,CAAC0lD,qBArFJ,mDAyFN1lD,OAAO,CAACylD,kBAzFF,4BA0FJzlD,OAAO,CAAC0lD,qBA1FJ,mDA8FN1lD,OAAO,CAACylD,kBA9FF,4BA+FJzlD,OAAO,CAAC0lD,qBA/FJ,yIAwGN1lD,OAAO,CAAC4kD,QAxGF,+JA6GJ5kD,OAAO,CAAC2kD,WA7GJ,0BA8GN3kD,OAAO,CAAC4kD,QA9GF,8DAiHJ5kD,OAAO,CAAC2kD,WAjHJ,0BAkHN3kD,OAAO,CAAC4kD,QAlHF;AAAA,CAAlB;;AAuHA,iEAAej8B,SAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvHA;AACA;AAEO,IAAMq2B,QAAQ,GAAG,SAAXA,QAAW,CAAUj7C,IAAV,EAAgBsyC,QAAhB,EAA0B;AAChD,MAAM0I,QAAQ,GAAGh7C,IAAI,CAACL,MAAL,CAAY,MAAZ,CAAjB;AACAq7C,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,GAAd,EAAmB80C,QAAQ,CAACpzC,CAA5B;AACA87C,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,GAAd,EAAmB80C,QAAQ,CAACnzC,CAA5B;AACA67C,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,MAAd,EAAsB80C,QAAQ,CAACn3B,IAA/B;AACA6/B,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,QAAd,EAAwB80C,QAAQ,CAACp3B,MAAjC;AACA8/B,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,OAAd,EAAuB80C,QAAQ,CAAC9zC,KAAhC;AACAw8C,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,QAAd,EAAwB80C,QAAQ,CAAC7zC,MAAjC;AACAu8C,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,IAAd,EAAoB80C,QAAQ,CAACtzC,EAA7B;AACAg8C,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,IAAd,EAAoB80C,QAAQ,CAACrzC,EAA7B;;AAEA,MAAI,OAAOqzC,QAAQ,CAAC70C,KAAhB,KAA0B,WAA9B,EAA2C;AACzCu9C,IAAAA,QAAQ,CAACx9C,IAAT,CAAc,OAAd,EAAuB80C,QAAQ,CAAC70C,KAAhC;AACD;;AAED,SAAOu9C,QAAP;AACD,CAhBM;;AAkBP,IAAMvjB,WAAW,GAAG,SAAdA,WAAc,CAAUn2B,CAAV,EAAa;AAC/B,SAAOA,CAAC,CACLD,OADI,CACI,IADJ,EACU,OADV,EAEJA,OAFI,CAEI,IAFJ,EAEU,MAFV,EAGJA,OAHI,CAGI,cAHJ,EAGoB,EAHpB,CAAP;AAID,CALD;;AAOA,IAAMwgD,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACxkD,EAAD,EAAKg1C,QAAL,EAAkB;AAC5CuP,EAAAA,2DAAW,CAAC,YAAM;AAChB,QAAM3f,GAAG,GAAGphC,QAAQ,CAACyjB,gBAAT,CAA0BjnB,EAA1B,CAAZ;AACA4kC,IAAAA,GAAG,CAAC,CAAD,CAAH,CAAOtiB,gBAAP,CAAwB,WAAxB,EAAqC,YAAY;AAC/CmiC,MAAAA,eAAe,CAAC,UAAUzP,QAAV,GAAqB,QAAtB,CAAf;AACD,KAFD;AAGApQ,IAAAA,GAAG,CAAC,CAAD,CAAH,CAAOtiB,gBAAP,CAAwB,UAAxB,EAAoC,YAAY;AAC9CoiC,MAAAA,iBAAiB,CAAC,UAAU1P,QAAV,GAAqB,QAAtB,CAAjB;AACD,KAFD;AAGD,GARU,CAAX;AASD,CAVD;;AAWO,IAAMsK,SAAS,GAAG,SAAZA,SAAY,CAAU38C,IAAV,EAAgB6yC,KAAhB,EAAuB2J,YAAvB,EAAqCwF,SAArC,EAAgD7qC,UAAhD,EAA4D;AACnF,MAAI07B,KAAK,CAACV,KAAN,KAAgBp0C,SAAhB,IAA6B80C,KAAK,CAACV,KAAN,KAAgB,IAA7C,IAAqD33C,MAAM,CAAC0B,IAAP,CAAY22C,KAAK,CAACV,KAAlB,EAAyB/2C,MAAzB,KAAoC,CAA7F,EAAgG;AAC9F,WAAO;AAAEqD,MAAAA,MAAM,EAAE,CAAV;AAAaD,MAAAA,KAAK,EAAE;AAApB,KAAP;AACD;;AAED,MAAM2zC,KAAK,GAAGU,KAAK,CAACV,KAApB;AACA,MAAME,QAAQ,GAAGQ,KAAK,CAACR,QAAvB;AACA,MAAMC,QAAQ,GAAGO,KAAK,CAACP,QAAvB;AAEA,MAAI2P,YAAY,GAAG,MAAnB;;AACA,MAAI9qC,UAAJ,EAAgB;AACd8qC,IAAAA,YAAY,GAAG,kBAAf;AACD;;AAED,MAAMhgC,CAAC,GAAGjiB,IAAI,CAACL,MAAL,CAAY,GAAZ,CAAV;AACAsiB,EAAAA,CAAC,CAACzkB,IAAF,CAAO,IAAP,EAAa,UAAU60C,QAAV,GAAqB,QAAlC;AACApwB,EAAAA,CAAC,CAACzkB,IAAF,CAAO,OAAP,EAAgB,gBAAhB;AACAykB,EAAAA,CAAC,CAACzkB,IAAF,CAAO,SAAP,EAAkBykD,YAAlB;AACAJ,EAAAA,mBAAmB,CAAC,WAAWxP,QAAX,GAAsB,QAAvB,EAAiCA,QAAjC,CAAnB;AACA,MAAI6P,UAAU,GAAG,EAAjB;;AACA,MAAI,OAAO5P,QAAQ,CAAC70C,KAAhB,KAA0B,WAA9B,EAA2C;AACzCykD,IAAAA,UAAU,GAAG,MAAM5P,QAAQ,CAAC70C,KAA5B;AACD;;AAED,MAAI0kD,SAAS,GAAG7P,QAAQ,CAAC9zC,KAAT,GAAiBg+C,YAAjB,GAAgClK,QAAQ,CAAC9zC,KAAzC,GAAiDg+C,YAAjE;AAEA,MAAMxB,QAAQ,GAAG/4B,CAAC,CAACtiB,MAAF,CAAS,MAAT,CAAjB;AACAq7C,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,OAAd,EAAuB,wBAAwB0kD,UAA/C;AACAlH,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,GAAd,EAAmB80C,QAAQ,CAACpzC,CAA5B;AACA87C,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,GAAd,EAAmB80C,QAAQ,CAAC7zC,MAA5B;AACAu8C,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,MAAd,EAAsB80C,QAAQ,CAACn3B,IAA/B;AACA6/B,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,QAAd,EAAwB80C,QAAQ,CAACp3B,MAAjC;AACA8/B,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,OAAd,EAAuB2kD,SAAvB;AACAnH,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,QAAd,EAAwB80C,QAAQ,CAAC7zC,MAAjC;AACAu8C,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,IAAd,EAAoB80C,QAAQ,CAACtzC,EAA7B;AACAg8C,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,IAAd,EAAoB80C,QAAQ,CAACrzC,EAA7B;;AACA,MAAIkzC,KAAK,IAAI,IAAb,EAAmB;AACjB,QAAIiQ,KAAK,GAAG,EAAZ;;AACA,SAAK,IAAI/lD,GAAT,IAAgB81C,KAAhB,EAAuB;AACrB,UAAIkQ,QAAQ,GAAGpgC,CAAC,CAACtiB,MAAF,CAAS,GAAT,CAAf;AACA,UAAI2iD,aAAa,GAAG7qB,WAAW,CAAC0a,KAAK,CAAC91C,GAAD,CAAN,CAA/B;AACAgmD,MAAAA,QAAQ,CAAC7kD,IAAT,CAAc,YAAd,EAA4B8kD,aAA5B;AACAD,MAAAA,QAAQ,CAAC7kD,IAAT,CAAc,QAAd,EAAwB,QAAxB;;AAEA+kD,MAAAA,8BAA8B,CAACP,SAAD,CAA9B,CACE3lD,GADF,EAEEgmD,QAFF,EAGE/P,QAAQ,CAACpzC,CAAT,GAAa,EAHf,EAIEozC,QAAQ,CAAC7zC,MAAT,GAAkB2jD,KAJpB,EAKED,SALF,EAME,EANF,EAOE;AAAE1kD,QAAAA,KAAK,EAAE;AAAT,OAPF,EAQEukD,SARF;;AAWAI,MAAAA,KAAK,IAAI,EAAT;AACD;AACF;;AAEDpH,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,QAAd,EAAwB4kD,KAAxB;AAEA,SAAO;AAAE3jD,IAAAA,MAAM,EAAE6zC,QAAQ,CAAC7zC,MAAT,GAAkB2jD,KAA5B;AAAmC5jD,IAAAA,KAAK,EAAE2jD;AAA1C,GAAP;AACD,CA9DM;AAgEA,IAAMK,SAAS,GAAG,SAAZA,SAAY,CAAUxiD,IAAV,EAAgBd,CAAhB,EAAmBC,CAAnB,EAAsBiW,IAAtB,EAA4B;AACnD,MAAMqtC,SAAS,GAAGziD,IAAI,CAACL,MAAL,CAAY,OAAZ,CAAlB;AACA8iD,EAAAA,SAAS,CAACjlD,IAAV,CAAe,GAAf,EAAoB0B,CAApB;AACAujD,EAAAA,SAAS,CAACjlD,IAAV,CAAe,GAAf,EAAoB2B,CAApB;AACA,MAAImjD,aAAa,GAAG7qB,WAAW,CAACriB,IAAD,CAA/B;AACAqtC,EAAAA,SAAS,CAACjlD,IAAV,CAAe,YAAf,EAA6B8kD,aAA7B;AACD,CANM;AAQA,IAAMI,iBAAiB,GAAG,SAApBA,iBAAoB,CAAU1iD,IAAV,EAAgBd,CAAhB,EAAmBC,CAAnB,EAAsBiW,IAAtB,EAA4B;AAC3D,MAAMqtC,SAAS,GAAGziD,IAAI,CAACL,MAAL,CAAY,KAAZ,CAAlB;AACA8iD,EAAAA,SAAS,CAACjlD,IAAV,CAAe,GAAf,EAAoB0B,CAApB;AACAujD,EAAAA,SAAS,CAACjlD,IAAV,CAAe,GAAf,EAAoB2B,CAApB;AACA,MAAImjD,aAAa,GAAG7qB,WAAW,CAACriB,IAAD,CAA/B;AACAqtC,EAAAA,SAAS,CAACjlD,IAAV,CAAe,YAAf,EAA6B,MAAM8kD,aAAnC;AACD,CANM;AAQA,IAAMK,SAAS,GAAG,SAAZA,SAAY,CAAUC,KAAV,EAAiB;AACxC,SACE,uCACAA,KADA,GAEA,qDAHF;AAKD,CANM;AAQA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAAUD,KAAV,EAAiB;AAC1C,SACE,uCACAA,KADA,GAEA,oDAHF;AAKD,CANM;;AAQP,IAAMd,eAAe,GAAG,SAAlBA,eAAkB,CAAUgB,OAAV,EAAmB;AACzC,MAAIC,EAAE,GAAGliD,QAAQ,CAAC29B,cAAT,CAAwBskB,OAAxB,CAAT;;AACA,MAAIC,EAAE,IAAI,IAAV,EAAgB;AACdA,IAAAA,EAAE,CAAChkD,KAAH,CAASikD,OAAT,GAAmB,OAAnB;AACD;AACF,CALD;;AAOA,IAAMjB,iBAAiB,GAAG,SAApBA,iBAAoB,CAAUe,OAAV,EAAmB;AAC3C,MAAIC,EAAE,GAAGliD,QAAQ,CAAC29B,cAAT,CAAwBskB,OAAxB,CAAT;;AACA,MAAIC,EAAE,IAAI,IAAV,EAAgB;AACdA,IAAAA,EAAE,CAAChkD,KAAH,CAASikD,OAAT,GAAmB,MAAnB;AACD;AACF,CALD;;AAMO,IAAMxL,QAAQ,GAAG,SAAXA,QAAW,CAAUx3C,IAAV,EAAgBijD,QAAhB,EAA0B;AAChD,MAAIC,cAAc,GAAG,CAArB;AAAA,MACE/oC,UAAU,GAAG,CADf;AAEA,MAAMwhC,KAAK,GAAGsH,QAAQ,CAACtlD,IAAT,CAAcgE,KAAd,CAAoBya,qEAApB,CAAd;AAEA,MAAI+mC,SAAS,GAAG,EAAhB;AACA,MAAIv+C,EAAE,GAAG,CAAT;;AACA,MAAIw+C,KAAK,GAAG;AAAA,WAAMH,QAAQ,CAAC9jD,CAAf;AAAA,GAAZ;;AACA,MACE,OAAO8jD,QAAQ,CAAC3H,MAAhB,KAA2B,WAA3B,IACA,OAAO2H,QAAQ,CAAC5H,UAAhB,KAA+B,WAD/B,IAEA4H,QAAQ,CAAC5H,UAAT,GAAsB,CAHxB,EAIE;AACA,YAAQ4H,QAAQ,CAAC3H,MAAjB;AACE,WAAK,KAAL;AACA,WAAK,OAAL;AACE8H,QAAAA,KAAK,GAAG;AAAA,iBAAM1+C,IAAI,CAACkjC,KAAL,CAAWqb,QAAQ,CAAC9jD,CAAT,GAAa8jD,QAAQ,CAAC5H,UAAjC,CAAN;AAAA,SAAR;;AACA;;AACF,WAAK,QAAL;AACA,WAAK,QAAL;AACE+H,QAAAA,KAAK,GAAG;AAAA,iBACN1+C,IAAI,CAACkjC,KAAL,CAAWqb,QAAQ,CAAC9jD,CAAT,GAAa,CAAC+jD,cAAc,GAAG/oC,UAAjB,GAA8B8oC,QAAQ,CAAC5H,UAAxC,IAAsD,CAA9E,CADM;AAAA,SAAR;;AAEA;;AACF,WAAK,QAAL;AACA,WAAK,KAAL;AACE+H,QAAAA,KAAK,GAAG;AAAA,iBACN1+C,IAAI,CAACkjC,KAAL,CACEqb,QAAQ,CAAC9jD,CAAT,IACG+jD,cAAc,GAAG/oC,UAAjB,GAA8B,IAAI8oC,QAAQ,CAAC5H,UAD9C,IAEE4H,QAAQ,CAAC5H,UAHb,CADM;AAAA,SAAR;;AAMA;AAlBJ;AAoBD;;AACD,MACE,OAAO4H,QAAQ,CAAC7H,MAAhB,KAA2B,WAA3B,IACA,OAAO6H,QAAQ,CAAC5H,UAAhB,KAA+B,WAD/B,IAEA,OAAO4H,QAAQ,CAACzkD,KAAhB,KAA0B,WAH5B,EAIE;AACA,YAAQykD,QAAQ,CAAC7H,MAAjB;AACE,WAAK,MAAL;AACA,WAAK,OAAL;AACE6H,QAAAA,QAAQ,CAAC/jD,CAAT,GAAawF,IAAI,CAACkjC,KAAL,CAAWqb,QAAQ,CAAC/jD,CAAT,GAAa+jD,QAAQ,CAAC5H,UAAjC,CAAb;AACA4H,QAAAA,QAAQ,CAAC7H,MAAT,GAAkB,OAAlB;AACA6H,QAAAA,QAAQ,CAACI,gBAAT,GAA4B,iBAA5B;AACAJ,QAAAA,QAAQ,CAACK,iBAAT,GAA6B,QAA7B;AACA;;AACF,WAAK,QAAL;AACA,WAAK,QAAL;AACEL,QAAAA,QAAQ,CAAC/jD,CAAT,GAAawF,IAAI,CAACkjC,KAAL,CAAWqb,QAAQ,CAAC/jD,CAAT,GAAa+jD,QAAQ,CAACzkD,KAAT,GAAiB,CAAzC,CAAb;AACAykD,QAAAA,QAAQ,CAAC7H,MAAT,GAAkB,QAAlB;AACA6H,QAAAA,QAAQ,CAACI,gBAAT,GAA4B,QAA5B;AACAJ,QAAAA,QAAQ,CAACK,iBAAT,GAA6B,QAA7B;AACA;;AACF,WAAK,OAAL;AACA,WAAK,KAAL;AACEL,QAAAA,QAAQ,CAAC/jD,CAAT,GAAawF,IAAI,CAACkjC,KAAL,CAAWqb,QAAQ,CAAC/jD,CAAT,GAAa+jD,QAAQ,CAACzkD,KAAtB,GAA8BykD,QAAQ,CAAC5H,UAAlD,CAAb;AACA4H,QAAAA,QAAQ,CAAC7H,MAAT,GAAkB,KAAlB;AACA6H,QAAAA,QAAQ,CAACI,gBAAT,GAA4B,kBAA5B;AACAJ,QAAAA,QAAQ,CAACK,iBAAT,GAA6B,QAA7B;AACA;AArBJ;AAuBD;;AACD,OAAK,IAAInoD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwgD,KAAK,CAACvgD,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,QAAIgH,IAAI,GAAGw5C,KAAK,CAACxgD,CAAD,CAAhB;;AACA,QACE,OAAO8nD,QAAQ,CAAC5H,UAAhB,KAA+B,WAA/B,IACA4H,QAAQ,CAAC5H,UAAT,KAAwB,CADxB,IAEA,OAAO4H,QAAQ,CAAC3qC,QAAhB,KAA6B,WAH/B,EAIE;AACA1T,MAAAA,EAAE,GAAGzJ,CAAC,GAAG8nD,QAAQ,CAAC3qC,QAAlB;AACD;;AAED,QAAMijC,QAAQ,GAAGv7C,IAAI,CAACL,MAAL,CAAY,MAAZ,CAAjB;AACA47C,IAAAA,QAAQ,CAAC/9C,IAAT,CAAc,GAAd,EAAmBylD,QAAQ,CAAC/jD,CAA5B;AACAq8C,IAAAA,QAAQ,CAAC/9C,IAAT,CAAc,GAAd,EAAmB4lD,KAAK,EAAxB;;AACA,QAAI,OAAOH,QAAQ,CAAC7H,MAAhB,KAA2B,WAA/B,EAA4C;AAC1CG,MAAAA,QAAQ,CACL/9C,IADH,CACQ,aADR,EACuBylD,QAAQ,CAAC7H,MADhC,EAEG59C,IAFH,CAEQ,mBAFR,EAE6BylD,QAAQ,CAACI,gBAFtC,EAGG7lD,IAHH,CAGQ,oBAHR,EAG8BylD,QAAQ,CAACK,iBAHvC;AAID;;AACD,QAAI,OAAOL,QAAQ,CAACvmD,UAAhB,KAA+B,WAAnC,EAAgD;AAC9C6+C,MAAAA,QAAQ,CAACx8C,KAAT,CAAe,aAAf,EAA8BkkD,QAAQ,CAACvmD,UAAvC;AACD;;AACD,QAAI,OAAOumD,QAAQ,CAAC3qC,QAAhB,KAA6B,WAAjC,EAA8C;AAC5CijC,MAAAA,QAAQ,CAACx8C,KAAT,CAAe,WAAf,EAA4BkkD,QAAQ,CAAC3qC,QAArC;AACD;;AACD,QAAI,OAAO2qC,QAAQ,CAAC1qC,UAAhB,KAA+B,WAAnC,EAAgD;AAC9CgjC,MAAAA,QAAQ,CAACx8C,KAAT,CAAe,aAAf,EAA8BkkD,QAAQ,CAAC1qC,UAAvC;AACD;;AACD,QAAI,OAAO0qC,QAAQ,CAAC9nC,IAAhB,KAAyB,WAA7B,EAA0C;AACxCogC,MAAAA,QAAQ,CAAC/9C,IAAT,CAAc,MAAd,EAAsBylD,QAAQ,CAAC9nC,IAA/B;AACD;;AACD,QAAI,OAAO8nC,QAAQ,CAACxlD,KAAhB,KAA0B,WAA9B,EAA2C;AACzC89C,MAAAA,QAAQ,CAAC/9C,IAAT,CAAc,OAAd,EAAuBylD,QAAQ,CAACxlD,KAAhC;AACD;;AACD,QAAI,OAAOwlD,QAAQ,CAACr+C,EAAhB,KAAuB,WAA3B,EAAwC;AACtC22C,MAAAA,QAAQ,CAAC/9C,IAAT,CAAc,IAAd,EAAoBylD,QAAQ,CAACr+C,EAA7B;AACD,KAFD,MAEO,IAAIA,EAAE,KAAK,CAAX,EAAc;AACnB22C,MAAAA,QAAQ,CAAC/9C,IAAT,CAAc,IAAd,EAAoBoH,EAApB;AACD;;AAED,QAAIq+C,QAAQ,CAAClhD,KAAb,EAAoB;AAClB,UAAMwhD,IAAI,GAAGhI,QAAQ,CAAC57C,MAAT,CAAgB,OAAhB,CAAb;AACA4jD,MAAAA,IAAI,CAAC/lD,IAAL,CAAU,GAAV,EAAeylD,QAAQ,CAAC/jD,CAAxB;;AACA,UAAI,OAAO+jD,QAAQ,CAAC9nC,IAAhB,KAAyB,WAA7B,EAA0C;AACxCooC,QAAAA,IAAI,CAAC/lD,IAAL,CAAU,MAAV,EAAkBylD,QAAQ,CAAC9nC,IAA3B;AACD;;AACDooC,MAAAA,IAAI,CAAC5lD,IAAL,CAAUwE,IAAV;AACD,KAPD,MAOO;AACLo5C,MAAAA,QAAQ,CAAC59C,IAAT,CAAcwE,IAAd;AACD;;AACD,QACE,OAAO8gD,QAAQ,CAAC3H,MAAhB,KAA2B,WAA3B,IACA,OAAO2H,QAAQ,CAAC5H,UAAhB,KAA+B,WAD/B,IAEA4H,QAAQ,CAAC5H,UAAT,GAAsB,CAHxB,EAIE;AACAlhC,MAAAA,UAAU,IAAI,CAACohC,QAAQ,CAAC/6B,OAAT,IAAoB+6B,QAArB,EAA+B,CAA/B,EAAkC,CAAlC,EAAqCt9C,OAArC,GAA+CQ,MAA7D;AACAykD,MAAAA,cAAc,GAAG/oC,UAAjB;AACD;;AAEDgpC,IAAAA,SAAS,CAACxmD,IAAV,CAAe4+C,QAAf;AACD;;AAED,SAAO4H,SAAP;AACD,CA9HM;AAgIA,IAAMK,SAAS,GAAG,SAAZA,SAAY,CAAUxjD,IAAV,EAAgByjD,SAAhB,EAA2B;AAClD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,WAASC,SAAT,CAAmBxkD,CAAnB,EAAsBC,CAAtB,EAAyBX,KAAzB,EAAgCC,MAAhC,EAAwCklD,GAAxC,EAA6C;AAC3C,WACEzkD,CAAC,GACD,GADA,GAEAC,CAFA,GAGA,GAHA,IAICD,CAAC,GAAGV,KAJL,IAKA,GALA,GAMAW,CANA,GAOA,GAPA,IAQCD,CAAC,GAAGV,KARL,IASA,GATA,IAUCW,CAAC,GAAGV,MAAJ,GAAaklD,GAVd,IAWA,GAXA,IAYCzkD,CAAC,GAAGV,KAAJ,GAAYmlD,GAAG,GAAG,GAZnB,IAaA,GAbA,IAcCxkD,CAAC,GAAGV,MAdL,IAeA,GAfA,GAgBAS,CAhBA,GAiBA,GAjBA,IAkBCC,CAAC,GAAGV,MAlBL,CADF;AAqBD;;AACD,MAAMsM,OAAO,GAAG/K,IAAI,CAACL,MAAL,CAAY,SAAZ,CAAhB;AACAoL,EAAAA,OAAO,CAACvN,IAAR,CAAa,QAAb,EAAuBkmD,SAAS,CAACD,SAAS,CAACvkD,CAAX,EAAcukD,SAAS,CAACtkD,CAAxB,EAA2BskD,SAAS,CAACjlD,KAArC,EAA4CilD,SAAS,CAAChlD,MAAtD,EAA8D,CAA9D,CAAhC;AACAsM,EAAAA,OAAO,CAACvN,IAAR,CAAa,OAAb,EAAsB,UAAtB;AAEAimD,EAAAA,SAAS,CAACtkD,CAAV,GAAcskD,SAAS,CAACtkD,CAAV,GAAcskD,SAAS,CAAChlD,MAAV,GAAmB,CAA/C;AAEA+4C,EAAAA,QAAQ,CAACx3C,IAAD,EAAOyjD,SAAP,CAAR;AACA,SAAO14C,OAAP;AACD,CAxCM;AA0CP,IAAIsnC,QAAQ,GAAG,CAAC,CAAhB;AAEO,IAAMoF,kBAAkB,GAAG,SAArBA,kBAAqB,CAAC7zB,OAAD,EAAUgC,MAAV,EAAqB;AACrD,MAAI,CAAChC,OAAO,CAAClD,SAAb,EAAwB;AACxBkD,EAAAA,OAAO,CACJlD,SADH,CACa,aADb,EAEGljB,IAFH,CAEQ,OAFR,EAEiB,KAFjB,EAGGA,IAHH,CAGQ,IAHR,EAGcooB,MAAM,GAAG,EAHvB;AAID,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMg+B,wBAAwB,GAAG,SAA3BA,wBAA2B,CAAU5jD,IAAV,EAAgB6yC,KAAhB,EAAuBl3C,IAAvB,EAA6B;AAC5D,MAAMkoD,MAAM,GAAGhR,KAAK,CAAC3zC,CAAN,GAAU2zC,KAAK,CAACr0C,KAAN,GAAc,CAAvC;AAEA,MAAMslD,gBAAgB,GAAG9jD,IAAI,CAACL,MAAL,CAAY,GAAZ,CAAzB;AACA,MAAIsiB,CAAC,GAAG6hC,gBAAR;;AAEA,MAAIjR,KAAK,CAAC1zC,CAAN,KAAY,CAAhB,EAAmB;AACjBkzC,IAAAA,QAAQ;AACRpwB,IAAAA,CAAC,CAACtiB,MAAF,CAAS,MAAT,EACGnC,IADH,CACQ,IADR,EACc,UAAU60C,QADxB,EAEG70C,IAFH,CAEQ,IAFR,EAEcqmD,MAFd,EAGGrmD,IAHH,CAGQ,IAHR,EAGc,CAHd,EAIGA,IAJH,CAIQ,IAJR,EAIcqmD,MAJd,EAKGrmD,IALH,CAKQ,IALR,EAKc,IALd,EAMGA,IANH,CAMQ,OANR,EAMiB,YANjB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,OAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB;AAUAykB,IAAAA,CAAC,GAAG6hC,gBAAgB,CAACnkD,MAAjB,CAAwB,GAAxB,CAAJ;AACAkzC,IAAAA,KAAK,CAACR,QAAN,GAAiBA,QAAjB;;AAEA,QAAIQ,KAAK,CAACV,KAAN,IAAe,IAAnB,EAAyB;AACvBlwB,MAAAA,CAAC,CAACzkB,IAAF,CAAO,IAAP,EAAa,UAAU60C,QAAvB;AACAwP,MAAAA,mBAAmB,CAAC,WAAWxP,QAAZ,EAAsBA,QAAtB,CAAnB;AACD;AACF;;AAED,MAAMp1C,IAAI,GAAG89C,WAAW,EAAxB;AACA,MAAIgJ,QAAQ,GAAG,OAAf;;AACA,MAAIlR,KAAK,CAACT,UAAN,IAAoB,IAApB,IAA4BS,KAAK,CAACT,UAAN,CAAiB,OAAjB,CAAhC,EAA2D;AACzD2R,IAAAA,QAAQ,GAAGlR,KAAK,CAACT,UAAN,CAAiB,OAAjB,CAAX;AACD,GAFD,MAEO;AACLn1C,IAAAA,IAAI,CAACke,IAAL,GAAY,SAAZ;AACD;;AACDle,EAAAA,IAAI,CAACiC,CAAL,GAAS2zC,KAAK,CAAC3zC,CAAf;AACAjC,EAAAA,IAAI,CAACkC,CAAL,GAAS0zC,KAAK,CAAC1zC,CAAf;AACAlC,EAAAA,IAAI,CAACuB,KAAL,GAAaq0C,KAAK,CAACr0C,KAAnB;AACAvB,EAAAA,IAAI,CAACwB,MAAL,GAAco0C,KAAK,CAACp0C,MAApB;AACAxB,EAAAA,IAAI,CAACQ,KAAL,GAAasmD,QAAb;AACA9mD,EAAAA,IAAI,CAAC+B,EAAL,GAAU,CAAV;AACA/B,EAAAA,IAAI,CAACgC,EAAL,GAAU,CAAV;AACA,MAAM+7C,QAAQ,GAAGC,QAAQ,CAACh5B,CAAD,EAAIhlB,IAAJ,CAAzB;AACA41C,EAAAA,KAAK,CAACP,QAAN,GAAiBr1C,IAAjB;;AAEA,MAAI41C,KAAK,CAACT,UAAN,IAAoB,IAApB,IAA4BS,KAAK,CAACT,UAAN,CAAiB,MAAjB,CAAhC,EAA0D;AACxD,QAAM4R,OAAO,GAAGnR,KAAK,CAACT,UAAN,CAAiB,MAAjB,EAAyBlwC,IAAzB,EAAhB;;AACA,QAAI8hD,OAAO,CAACvkC,MAAR,CAAe,CAAf,MAAsB,GAA1B,EAA+B;AAC7BijC,MAAAA,iBAAiB,CAACzgC,CAAD,EAAIhlB,IAAI,CAACiC,CAAL,GAASjC,IAAI,CAACuB,KAAd,GAAsB,EAA1B,EAA8BvB,IAAI,CAACkC,CAAL,GAAS,EAAvC,EAA2C6kD,OAAO,CAACvlC,MAAR,CAAe,CAAf,CAA3C,CAAjB;AACD,KAFD,MAEO;AACL+jC,MAAAA,SAAS,CAACvgC,CAAD,EAAIhlB,IAAI,CAACiC,CAAL,GAASjC,IAAI,CAACuB,KAAd,GAAsB,EAA1B,EAA8BvB,IAAI,CAACkC,CAAL,GAAS,EAAvC,EAA2C6kD,OAA3C,CAAT;AACD;AACF;;AAEDC,EAAAA,sBAAsB,CAACtoD,IAAD,CAAtB,CACEk3C,KAAK,CAACxV,WADR,EAEEpb,CAFF,EAGEhlB,IAAI,CAACiC,CAHP,EAIEjC,IAAI,CAACkC,CAJP,EAKElC,IAAI,CAACuB,KALP,EAMEvB,IAAI,CAACwB,MANP,EAOE;AAAEhB,IAAAA,KAAK,EAAE;AAAT,GAPF,EAQE9B,IARF;;AAWA,MAAI8C,MAAM,GAAGo0C,KAAK,CAACp0C,MAAnB;;AACA,MAAIu8C,QAAQ,CAAC79C,IAAb,EAAmB;AACjB,QAAMyoB,MAAM,GAAGo1B,QAAQ,CAAC79C,IAAT,GAAgBc,OAAhB,EAAf;AACA40C,IAAAA,KAAK,CAACp0C,MAAN,GAAemnB,MAAM,CAACnnB,MAAtB;AACAA,IAAAA,MAAM,GAAGmnB,MAAM,CAACnnB,MAAhB;AACD;;AAED,SAAOA,MAAP;AACD,CAxED;;AA0EA,IAAMylD,kBAAkB,GAAG,SAArBA,kBAAqB,CAAUlkD,IAAV,EAAgB6yC,KAAhB,EAAuBl3C,IAAvB,EAA6B;AACtD,MAAMkoD,MAAM,GAAGhR,KAAK,CAAC3zC,CAAN,GAAU2zC,KAAK,CAACr0C,KAAN,GAAc,CAAvC;;AAEA,MAAIq0C,KAAK,CAAC1zC,CAAN,KAAY,CAAhB,EAAmB;AACjBkzC,IAAAA,QAAQ;AACRryC,IAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,IAFR,EAEc,UAAU60C,QAFxB,EAGG70C,IAHH,CAGQ,IAHR,EAGcqmD,MAHd,EAIGrmD,IAJH,CAIQ,IAJR,EAIc,EAJd,EAKGA,IALH,CAKQ,IALR,EAKcqmD,MALd,EAMGrmD,IANH,CAMQ,IANR,EAMc,IANd,EAOGA,IAPH,CAOQ,OAPR,EAOiB,YAPjB,EAQGA,IARH,CAQQ,cARR,EAQwB,OARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB;AAUD;;AACD,MAAM2mD,OAAO,GAAGnkD,IAAI,CAACL,MAAL,CAAY,GAAZ,CAAhB;AACAwkD,EAAAA,OAAO,CAAC3mD,IAAR,CAAa,OAAb,EAAsB,WAAtB;AAEA,MAAMP,IAAI,GAAG89C,WAAW,EAAxB;AACA99C,EAAAA,IAAI,CAACiC,CAAL,GAAS2zC,KAAK,CAAC3zC,CAAf;AACAjC,EAAAA,IAAI,CAACkC,CAAL,GAAS0zC,KAAK,CAAC1zC,CAAf;AACAlC,EAAAA,IAAI,CAACke,IAAL,GAAY,SAAZ;AACAle,EAAAA,IAAI,CAACuB,KAAL,GAAaq0C,KAAK,CAACr0C,KAAnB;AACAvB,EAAAA,IAAI,CAACwB,MAAL,GAAco0C,KAAK,CAACp0C,MAApB;AACAxB,EAAAA,IAAI,CAACQ,KAAL,GAAa,OAAb;AACAR,EAAAA,IAAI,CAAC+B,EAAL,GAAU,CAAV;AACA/B,EAAAA,IAAI,CAACgC,EAAL,GAAU,CAAV,CA3BsD,CA4BtD;;AAEAklD,EAAAA,OAAO,CACJxkD,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,IAFR,EAEc,oBAAoB60C,QAFlC,EAGG70C,IAHH,CAGQ,IAHR,EAGcqmD,MAHd,EAIGrmD,IAJH,CAIQ,IAJR,EAIcq1C,KAAK,CAAC1zC,CAAN,GAAU,EAJxB,EAKG3B,IALH,CAKQ,IALR,EAKcqmD,MALd,EAMGrmD,IANH,CAMQ,IANR,EAMcq1C,KAAK,CAAC1zC,CAAN,GAAU,EANxB;AAQAglD,EAAAA,OAAO,CACJxkD,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,IAFR,EAEc,mBAAmB60C,QAFjC,EAGG70C,IAHH,CAGQ,IAHR,EAGcqmD,MAAM,GAAG,EAHvB,EAIGrmD,IAJH,CAIQ,IAJR,EAIcq1C,KAAK,CAAC1zC,CAAN,GAAU,EAJxB,EAKG3B,IALH,CAKQ,IALR,EAKcqmD,MAAM,GAAG,EALvB,EAMGrmD,IANH,CAMQ,IANR,EAMcq1C,KAAK,CAAC1zC,CAAN,GAAU,EANxB;AAOAglD,EAAAA,OAAO,CACJxkD,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,IAFR,EAEcqmD,MAAM,GAAG,EAFvB,EAGGrmD,IAHH,CAGQ,IAHR,EAGcq1C,KAAK,CAAC1zC,CAAN,GAAU,EAHxB,EAIG3B,IAJH,CAIQ,IAJR,EAIcqmD,MAJd,EAKGrmD,IALH,CAKQ,IALR,EAKcq1C,KAAK,CAAC1zC,CAAN,GAAU,EALxB;AAMAglD,EAAAA,OAAO,CACJxkD,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,IAFR,EAEcqmD,MAFd,EAGGrmD,IAHH,CAGQ,IAHR,EAGcq1C,KAAK,CAAC1zC,CAAN,GAAU,EAHxB,EAIG3B,IAJH,CAIQ,IAJR,EAIcqmD,MAAM,GAAG,EAJvB,EAKGrmD,IALH,CAKQ,IALR,EAKcq1C,KAAK,CAAC1zC,CAAN,GAAU,EALxB;AAOA,MAAM0L,MAAM,GAAGs5C,OAAO,CAACxkD,MAAR,CAAe,QAAf,CAAf;AACAkL,EAAAA,MAAM,CAACrN,IAAP,CAAY,IAAZ,EAAkBq1C,KAAK,CAAC3zC,CAAN,GAAU2zC,KAAK,CAACr0C,KAAN,GAAc,CAA1C;AACAqM,EAAAA,MAAM,CAACrN,IAAP,CAAY,IAAZ,EAAkBq1C,KAAK,CAAC1zC,CAAN,GAAU,EAA5B;AACA0L,EAAAA,MAAM,CAACrN,IAAP,CAAY,GAAZ,EAAiB,EAAjB;AACAqN,EAAAA,MAAM,CAACrN,IAAP,CAAY,OAAZ,EAAqBq1C,KAAK,CAACr0C,KAA3B;AACAqM,EAAAA,MAAM,CAACrN,IAAP,CAAY,QAAZ,EAAsBq1C,KAAK,CAACp0C,MAA5B;AAEA,MAAMmnB,MAAM,GAAGu+B,OAAO,CAAChnD,IAAR,GAAec,OAAf,EAAf;AACA40C,EAAAA,KAAK,CAACp0C,MAAN,GAAemnB,MAAM,CAACnnB,MAAtB;;AAEAwlD,EAAAA,sBAAsB,CAACtoD,IAAD,CAAtB,CACEk3C,KAAK,CAACxV,WADR,EAEE8mB,OAFF,EAGElnD,IAAI,CAACiC,CAHP,EAIEjC,IAAI,CAACkC,CAAL,GAAS,EAJX,EAKElC,IAAI,CAACuB,KALP,EAMEvB,IAAI,CAACwB,MANP,EAOE;AAAEhB,IAAAA,KAAK,EAAE;AAAT,GAPF,EAQE9B,IARF;;AAWA,SAAOk3C,KAAK,CAACp0C,MAAb;AACD,CAhFD;;AAkFO,IAAM69C,SAAS,GAAG,SAAZA,SAAY,CAAUt8C,IAAV,EAAgB6yC,KAAhB,EAAuBl3C,IAAvB,EAA6B;AACpD,UAAQk3C,KAAK,CAACnoC,IAAd;AACE,SAAK,OAAL;AACE,aAAOw5C,kBAAkB,CAAClkD,IAAD,EAAO6yC,KAAP,EAAcl3C,IAAd,CAAzB;;AACF,SAAK,aAAL;AACE,aAAOioD,wBAAwB,CAAC5jD,IAAD,EAAO6yC,KAAP,EAAcl3C,IAAd,CAA/B;AAJJ;AAMD,CAPM;AASA,IAAMm+C,aAAa,GAAG,SAAhBA,aAAgB,CAAU95C,IAAV,EAAgB;AAC3C,SAAOA,IAAI,CAACL,MAAL,CAAY,GAAZ,CAAP;AACD,CAFM;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMy+C,cAAc,GAAG,SAAjBA,cAAiB,CAAUp+C,IAAV,EAAgB4lB,MAAhB,EAAwB/R,WAAxB,EAAqClY,IAArC,EAA2Ci+C,gBAA3C,EAA6D;AACzF,MAAM38C,IAAI,GAAG89C,WAAW,EAAxB;AACA,MAAM94B,CAAC,GAAG2D,MAAM,CAACi0B,QAAjB;AACA58C,EAAAA,IAAI,CAACiC,CAAL,GAAS0mB,MAAM,CAAC+xB,MAAhB;AACA16C,EAAAA,IAAI,CAACkC,CAAL,GAASymB,MAAM,CAACiyB,MAAhB;AACA56C,EAAAA,IAAI,CAACQ,KAAL,GAAa,eAAgBm8C,gBAAgB,GAAG,CAAhD,CALyF,CAKrC;;AACpD38C,EAAAA,IAAI,CAACuB,KAAL,GAAaonB,MAAM,CAACgyB,KAAP,GAAehyB,MAAM,CAAC+xB,MAAnC;AACA16C,EAAAA,IAAI,CAACwB,MAAL,GAAcoV,WAAW,GAAG+R,MAAM,CAACiyB,MAAnC;AACAoD,EAAAA,QAAQ,CAACh5B,CAAD,EAAIhlB,IAAJ,CAAR;AACD,CATM;AAWP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMohD,QAAQ,GAAG,SAAXA,QAAW,CAAUr+C,IAAV,EAAgBw4C,SAAhB,EAA2B36C,SAA3B,EAAsClC,IAAtC,EAA4C;AAClE,MACEkb,SADF,GAQIlb,IARJ,CACEkb,SADF;AAAA,MAEEC,aAFF,GAQInb,IARJ,CAEEmb,aAFF;AAAA,MAGEsB,cAHF,GAQIzc,IARJ,CAGEyc,cAHF;AAAA,MAIED,aAJF,GAQIxc,IARJ,CAIEwc,aAJF;AAAA,MAKqBzb,UALrB,GAQIf,IARJ,CAKEoc,iBALF;AAAA,MAMmBO,QANnB,GAQI3c,IARJ,CAMEmc,eANF;AAAA,MAOqBS,UAPrB,GAQI5c,IARJ,CAOEqc,iBAPF;AASA,MAAMiK,CAAC,GAAGjiB,IAAI,CAACL,MAAL,CAAY,GAAZ,CAAV;;AACA,MAAMykD,YAAY,GAAG,SAAfA,YAAe,CAAUzM,MAAV,EAAkBE,MAAlB,EAA0BD,KAA1B,EAAiCE,KAAjC,EAAwC;AAC3D,WAAO71B,CAAC,CACLtiB,MADI,CACG,MADH,EAEJnC,IAFI,CAEC,IAFD,EAEOm6C,MAFP,EAGJn6C,IAHI,CAGC,IAHD,EAGOq6C,MAHP,EAIJr6C,IAJI,CAIC,IAJD,EAIOo6C,KAJP,EAKJp6C,IALI,CAKC,IALD,EAKOs6C,KALP,EAMJt6C,IANI,CAMC,OAND,EAMU,UANV,CAAP;AAOD,GARD;;AASA4mD,EAAAA,YAAY,CAAC5L,SAAS,CAACb,MAAX,EAAmBa,SAAS,CAACX,MAA7B,EAAqCW,SAAS,CAACZ,KAA/C,EAAsDY,SAAS,CAACX,MAAhE,CAAZ;AACAuM,EAAAA,YAAY,CAAC5L,SAAS,CAACZ,KAAX,EAAkBY,SAAS,CAACX,MAA5B,EAAoCW,SAAS,CAACZ,KAA9C,EAAqDY,SAAS,CAACV,KAA/D,CAAZ;AACAsM,EAAAA,YAAY,CAAC5L,SAAS,CAACb,MAAX,EAAmBa,SAAS,CAACV,KAA7B,EAAoCU,SAAS,CAACZ,KAA9C,EAAqDY,SAAS,CAACV,KAA/D,CAAZ;AACAsM,EAAAA,YAAY,CAAC5L,SAAS,CAACb,MAAX,EAAmBa,SAAS,CAACX,MAA7B,EAAqCW,SAAS,CAACb,MAA/C,EAAuDa,SAAS,CAACV,KAAjE,CAAZ;;AACA,MAAI,OAAOU,SAAS,CAAC1gB,QAAjB,KAA8B,WAAlC,EAA+C;AAC7C0gB,IAAAA,SAAS,CAAC1gB,QAAV,CAAmB17B,OAAnB,CAA2B,UAAUojB,IAAV,EAAgB;AACzC4kC,MAAAA,YAAY,CAAC5L,SAAS,CAACb,MAAX,EAAmBn4B,IAAI,CAACrgB,CAAxB,EAA2Bq5C,SAAS,CAACZ,KAArC,EAA4Cp4B,IAAI,CAACrgB,CAAjD,CAAZ,CAAgEJ,KAAhE,CACE,kBADF,EAEE,MAFF;AAID,KALD;AAMD;;AAED,MAAIipB,GAAG,GAAGmzB,UAAU,EAApB;AACAnzB,EAAAA,GAAG,CAACrqB,IAAJ,GAAWE,SAAX;AACAmqB,EAAAA,GAAG,CAAC9oB,CAAJ,GAAQs5C,SAAS,CAACb,MAAlB;AACA3vB,EAAAA,GAAG,CAAC7oB,CAAJ,GAAQq5C,SAAS,CAACX,MAAlB;AACA7vB,EAAAA,GAAG,CAACtrB,UAAJ,GAAiBA,UAAjB;AACAsrB,EAAAA,GAAG,CAAC1P,QAAJ,GAAeA,QAAf;AACA0P,EAAAA,GAAG,CAACzP,UAAJ,GAAiBA,UAAjB;AACAyP,EAAAA,GAAG,CAACozB,MAAJ,GAAa,QAAb;AACApzB,EAAAA,GAAG,CAACszB,MAAJ,GAAa,QAAb;AACAtzB,EAAAA,GAAG,CAACjmB,KAAJ,GAAY,KAAZ;AACAimB,EAAAA,GAAG,CAACxpB,KAAJ,GAAY2Z,aAAa,IAAI,EAA7B;AACA6P,EAAAA,GAAG,CAACvpB,MAAJ,GAAa2Z,cAAc,IAAI,EAA/B;AACA4P,EAAAA,GAAG,CAACqzB,UAAJ,GAAiBvkC,aAAjB;AACAkR,EAAAA,GAAG,CAACvqB,KAAJ,GAAY,WAAZ;AAEA+lD,EAAAA,SAAS,CAACvhC,CAAD,EAAI+F,GAAJ,CAAT;AACAA,EAAAA,GAAG,GAAGmzB,UAAU,EAAhB;AACAnzB,EAAAA,GAAG,CAACrqB,IAAJ,GAAW66C,SAAS,CAAC7lC,KAArB;AACAqV,EAAAA,GAAG,CAAC9oB,CAAJ,GAAQs5C,SAAS,CAACb,MAAV,GAAmBx/B,aAAa,GAAG,CAAnC,GAAuC,CAACqgC,SAAS,CAACZ,KAAV,GAAkBY,SAAS,CAACb,MAA7B,IAAuC,CAAtF;AACA3vB,EAAAA,GAAG,CAAC7oB,CAAJ,GAAQq5C,SAAS,CAACX,MAAV,GAAmBhhC,SAAnB,GAA+BC,aAAvC;AACAkR,EAAAA,GAAG,CAACozB,MAAJ,GAAa,QAAb;AACApzB,EAAAA,GAAG,CAACszB,MAAJ,GAAa,QAAb;AACAtzB,EAAAA,GAAG,CAACqzB,UAAJ,GAAiBvkC,aAAjB;AACAkR,EAAAA,GAAG,CAACvqB,KAAJ,GAAY,UAAZ;AACAuqB,EAAAA,GAAG,CAACtrB,UAAJ,GAAiBA,UAAjB;AACAsrB,EAAAA,GAAG,CAAC1P,QAAJ,GAAeA,QAAf;AACA0P,EAAAA,GAAG,CAACzP,UAAJ,GAAiBA,UAAjB;AACAyP,EAAAA,GAAG,CAAC/P,IAAJ,GAAW,IAAX;AAEA,MAAIsjC,QAAQ,GAAG/D,QAAQ,CAACv1B,CAAD,EAAI+F,GAAJ,CAAvB;;AAEA,MAAI,OAAOwwB,SAAS,CAACiC,aAAjB,KAAmC,WAAvC,EAAoD;AAClDjC,IAAAA,SAAS,CAACiC,aAAV,CAAwBr+C,OAAxB,CAAgC,UAAUojB,IAAV,EAAgBgJ,GAAhB,EAAqB;AACnD,UAAIhJ,IAAI,CAACqlB,OAAT,EAAkB;AAChB7c,QAAAA,GAAG,CAACrqB,IAAJ,GAAW6hB,IAAI,CAACqlB,OAAhB;AACA7c,QAAAA,GAAG,CAAC9oB,CAAJ,GAAQs5C,SAAS,CAACb,MAAV,GAAmB,CAACa,SAAS,CAACZ,KAAV,GAAkBY,SAAS,CAACb,MAA7B,IAAuC,CAAlE;AACA3vB,QAAAA,GAAG,CAAC7oB,CAAJ,GAAQq5C,SAAS,CAAC1gB,QAAV,CAAmBtP,GAAnB,EAAwBrpB,CAAxB,GAA4B0X,SAA5B,GAAwCC,aAAhD;AACAkR,QAAAA,GAAG,CAACvqB,KAAJ,GAAY,UAAZ;AACAuqB,QAAAA,GAAG,CAACozB,MAAJ,GAAa,QAAb;AACApzB,QAAAA,GAAG,CAACszB,MAAJ,GAAa,QAAb;AACAtzB,QAAAA,GAAG,CAACjmB,KAAJ,GAAY,KAAZ;AACAimB,QAAAA,GAAG,CAACtrB,UAAJ,GAAiBA,UAAjB;AACAsrB,QAAAA,GAAG,CAAC1P,QAAJ,GAAeA,QAAf;AACA0P,QAAAA,GAAG,CAACzP,UAAJ,GAAiBA,UAAjB;AACAyP,QAAAA,GAAG,CAAC/P,IAAJ,GAAWugC,SAAS,CAACvgC,IAArB;AACAsjC,QAAAA,QAAQ,GAAG/D,QAAQ,CAACv1B,CAAD,EAAI+F,GAAJ,CAAnB;AACA,YAAIq8B,aAAa,GAAG3/C,IAAI,CAACkjC,KAAL,CAClB2T,QAAQ,CACL7pC,GADH,CACO,UAACmlB,EAAD;AAAA,iBAAQ,CAACA,EAAE,CAACrW,OAAH,IAAcqW,EAAf,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB54B,OAAzB,GAAmCQ,MAA3C;AAAA,SADP,EAEGwd,MAFH,CAEU,UAACo8B,GAAD,EAAMmD,IAAN;AAAA,iBAAenD,GAAG,GAAGmD,IAArB;AAAA,SAFV,CADkB,CAApB;AAKAhD,QAAAA,SAAS,CAAC1gB,QAAV,CAAmBtP,GAAnB,EAAwB/pB,MAAxB,IAAkC4lD,aAAa,IAAIxtC,SAAS,GAAGC,aAAhB,CAA/C;AACD;AACF,KArBD;AAsBD;;AAED0hC,EAAAA,SAAS,CAAC/5C,MAAV,GAAmBiG,IAAI,CAACkjC,KAAL,CAAW4Q,SAAS,CAACV,KAAV,GAAkBU,SAAS,CAACX,MAAvC,CAAnB;AACA,SAAO51B,CAAP;AACD,CA3FM;AA6FP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMq8B,kBAAkB,GAAG,SAArBA,kBAAqB,CAAUt+C,IAAV,EAAgB4lB,MAAhB,EAAwB;AACxD,MAAMo1B,QAAQ,GAAGC,QAAQ,CAACj7C,IAAD,EAAO;AAC9Bd,IAAAA,CAAC,EAAE0mB,MAAM,CAAC+xB,MADoB;AAE9Bx4C,IAAAA,CAAC,EAAEymB,MAAM,CAACiyB,MAFoB;AAG9Br5C,IAAAA,KAAK,EAAEonB,MAAM,CAACgyB,KAAP,GAAehyB,MAAM,CAAC+xB,MAHC;AAI9Bl5C,IAAAA,MAAM,EAAEmnB,MAAM,CAACkyB,KAAP,GAAelyB,MAAM,CAACiyB,MAJA;AAK9B18B,IAAAA,IAAI,EAAEyK,MAAM,CAACzK,IALiB;AAM9B1d,IAAAA,KAAK,EAAE;AANuB,GAAP,CAAzB;AAQAu9C,EAAAA,QAAQ,CAACsJ,KAAT;AACD,CAVM;AAYA,IAAM3G,kBAAkB,GAAG,SAArBA,kBAAqB,CAAU39C,IAAV,EAAgB;AAChDA,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc,UAHd,EAIGA,IAJH,CAIQ,WAJR,EAIqB,SAJrB,EAKGA,IALH,CAKQ,WALR,EAKqB,SALrB,EAMGmC,MANH,CAMU,MANV,EAOGnC,IAPH,CAOQ,WAPR,EAOqB,WAPrB,EAQGA,IARH,CASI,GATJ,EAUI,i1ZAVJ;AAYD,CAbM;AAeA,IAAMkgD,kBAAkB,GAAG,SAArBA,kBAAqB,CAAU19C,IAAV,EAAgB;AAChDA,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc,UAHd,EAIGA,IAJH,CAIQ,OAJR,EAIiB,IAJjB,EAKGA,IALH,CAKQ,QALR,EAKkB,IALlB,EAMGmC,MANH,CAMU,MANV,EAOGnC,IAPH,CAOQ,WAPR,EAOqB,WAPrB,EAQGA,IARH,CASI,GATJ,EAUI,0JAVJ;AAYD,CAbM;AAeA,IAAMogD,eAAe,GAAG,SAAlBA,eAAkB,CAAU59C,IAAV,EAAgB;AAC7CA,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc,OAHd,EAIGA,IAJH,CAIQ,OAJR,EAIiB,IAJjB,EAKGA,IALH,CAKQ,QALR,EAKkB,IALlB,EAMGmC,MANH,CAMU,MANV,EAOGnC,IAPH,CAOQ,WAPR,EAOqB,WAPrB,EAQGA,IARH,CASI,GATJ,EAUI,2UAVJ;AAYD,CAbM;AAeP;AACA;AACA;AACA;AACA;;AACO,IAAMsgD,eAAe,GAAG,SAAlBA,eAAkB,CAAU99C,IAAV,EAAgB;AAC7CA,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc,WAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,CAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,gBANvB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,EAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,EARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGmC,MAVH,CAUU,MAVV,EAWGnC,IAXH,CAWQ,GAXR,EAWa,uBAXb,EAD6C,CAYN;AACxC,CAbM;AAcP;AACA;AACA;AACA;AACA;;AACO,IAAMwgD,qBAAqB,GAAG,SAAxBA,qBAAwB,CAAUh+C,IAAV,EAAgB;AACnDA,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc,aAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGmC,MATH,CASU,MATV,EAUGnC,IAVH,CAUQ,GAVR,EAUa,2BAVb;AAWD,CAZM;AAaP;AACA;AACA;AACA;AACA;;AACO,IAAMygD,oBAAoB,GAAG,SAAvBA,oBAAuB,CAAUj+C,IAAV,EAAgB;AAClDA,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc,gBAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,EALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGmC,MATH,CASU,QATV,EAUGnC,IAVH,CAUQ,IAVR,EAUc,EAVd,EAWGA,IAXH,CAWQ,IAXR,EAWc,EAXd,EAYGA,IAZH,CAYQ,GAZR,EAYa,CAZb,EADkD,CAclD;AACD,CAfM;AAgBP;AACA;AACA;AACA;AACA;;AACO,IAAMugD,oBAAoB,GAAG,SAAvBA,oBAAuB,CAAU/9C,IAAV,EAAgB;AAClD,MAAMukD,IAAI,GAAGvkD,IAAI,CAACL,MAAL,CAAY,MAAZ,CAAb;AACA,MAAMglB,MAAM,GAAG4/B,IAAI,CAChB5kD,MADY,CACL,QADK,EAEZnC,IAFY,CAEP,IAFO,EAED,WAFC,EAGZA,IAHY,CAGP,aAHO,EAGQ,EAHR,EAIZA,IAJY,CAIP,cAJO,EAIS,CAJT,EAKZA,IALY,CAKP,QALO,EAKG,MALH,EAMZA,IANY,CAMP,MANO,EAMC,EAND,EAOZA,IAPY,CAOP,MAPO,EAOC,CAPD,CAAf,CAFkD,CAWlD;;AACAmnB,EAAAA,MAAM,CACHhlB,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,MAFR,EAEgB,OAFhB,EAGGA,IAHH,CAGQ,QAHR,EAGkB,SAHlB,EAIGuB,KAJH,CAIS,kBAJT,EAI6B,MAJ7B,EAKGvB,IALH,CAKQ,cALR,EAKwB,KALxB,EAMGA,IANH,CAMQ,GANR,EAMa,mBANb,EAZkD,CAoBlD;;AACAmnB,EAAAA,MAAM,CACHhlB,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,MAFR,EAEgB,MAFhB,EAGGA,IAHH,CAGQ,QAHR,EAGkB,SAHlB,EAIGuB,KAJH,CAIS,kBAJT,EAI6B,MAJ7B,EAKGvB,IALH,CAKQ,cALR,EAKwB,KALxB,EAMGA,IANH,CAMQ,GANR,EAMa,yBANb,EArBkD,CA4BlD;AACD,CA7BM;AA+BA,IAAM29C,UAAU,GAAG,SAAbA,UAAa,GAAY;AACpC,SAAO;AACLj8C,IAAAA,CAAC,EAAE,CADE;AAELC,IAAAA,CAAC,EAAE,CAFE;AAGLgc,IAAAA,IAAI,EAAEpd,SAHD;AAILq9C,IAAAA,MAAM,EAAEr9C,SAJH;AAKLgB,IAAAA,KAAK,EAAE,MALF;AAMLP,IAAAA,KAAK,EAAET,SANF;AAOLU,IAAAA,MAAM,EAAEV,SAPH;AAQLs9C,IAAAA,UAAU,EAAE,CARP;AASLr8C,IAAAA,EAAE,EAAE,CATC;AAULC,IAAAA,EAAE,EAAE,CAVC;AAWL8C,IAAAA,KAAK,EAAE,IAXF;AAYLu5C,IAAAA,MAAM,EAAEv9C;AAZH,GAAP;AAcD,CAfM;AAiBA,IAAMg9C,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAO;AACL77C,IAAAA,CAAC,EAAE,CADE;AAELC,IAAAA,CAAC,EAAE,CAFE;AAGLgc,IAAAA,IAAI,EAAE,SAHD;AAILD,IAAAA,MAAM,EAAE,MAJH;AAKL1c,IAAAA,KAAK,EAAE,GALF;AAML48C,IAAAA,MAAM,EAAE,OANH;AAOL38C,IAAAA,MAAM,EAAE,GAPH;AAQLO,IAAAA,EAAE,EAAE,CARC;AASLC,IAAAA,EAAE,EAAE;AATC,GAAP;AAWD,CAZM;;AAcP,IAAMglD,sBAAsB,GAAI,YAAY;AAC1C;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,WAASO,MAAT,CAAgBC,OAAhB,EAAyBxiC,CAAzB,EAA4B/iB,CAA5B,EAA+BC,CAA/B,EAAkCX,KAAlC,EAAyCC,MAAzC,EAAiDujD,SAAjD,EAA4D;AAC1D,QAAMrkD,IAAI,GAAGskB,CAAC,CACXtiB,MADU,CACH,MADG,EAEVnC,IAFU,CAEL,GAFK,EAEA0B,CAAC,GAAGV,KAAK,GAAG,CAFZ,EAGVhB,IAHU,CAGL,GAHK,EAGA2B,CAAC,GAAGV,MAAM,GAAG,CAAb,GAAiB,CAHjB,EAIVM,KAJU,CAIJ,aAJI,EAIW,QAJX,EAKVpB,IALU,CAKL8mD,OALK,CAAb;;AAMAC,IAAAA,aAAa,CAAC/mD,IAAD,EAAOqkD,SAAP,CAAb;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,WAAS2C,OAAT,CAAiBF,OAAjB,EAA0BxiC,CAA1B,EAA6B/iB,CAA7B,EAAgCC,CAAhC,EAAmCX,KAAnC,EAA0CC,MAA1C,EAAkDujD,SAAlD,EAA6DrmD,IAA7D,EAAmE;AACjE,QAAQ4b,aAAR,GAA4D5b,IAA5D,CAAQ4b,aAAR;AAAA,QAAuBC,eAAvB,GAA4D7b,IAA5D,CAAuB6b,eAAvB;AAAA,QAAwCC,eAAxC,GAA4D9b,IAA5D,CAAwC8b,eAAxC;AAEA,QAAMkkC,KAAK,GAAG8I,OAAO,CAAC9iD,KAAR,CAAcya,qEAAd,CAAd;;AACA,SAAK,IAAIjhB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwgD,KAAK,CAACvgD,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,UAAMyJ,EAAE,GAAGzJ,CAAC,GAAGoc,aAAJ,GAAqBA,aAAa,IAAIokC,KAAK,CAACvgD,MAAN,GAAe,CAAnB,CAAd,GAAuC,CAAtE;AACA,UAAMuC,IAAI,GAAGskB,CAAC,CACXtiB,MADU,CACH,MADG,EAEVnC,IAFU,CAEL,GAFK,EAEA0B,CAAC,GAAGV,KAAK,GAAG,CAFZ,EAGVhB,IAHU,CAGL,GAHK,EAGA2B,CAHA,EAIVJ,KAJU,CAIJ,aAJI,EAIW,QAJX,EAKVA,KALU,CAKJ,WALI,EAKSwY,aALT,EAMVxY,KANU,CAMJ,aANI,EAMW0Y,eANX,EAOV1Y,KAPU,CAOJ,aAPI,EAOWyY,eAPX,CAAb;AAQA7Z,MAAAA,IAAI,CACDgC,MADH,CACU,OADV,EAEGnC,IAFH,CAEQ,GAFR,EAEa0B,CAAC,GAAGV,KAAK,GAAG,CAFzB,EAGGhB,IAHH,CAGQ,IAHR,EAGcoH,EAHd,EAIGjH,IAJH,CAIQg+C,KAAK,CAACxgD,CAAD,CAJb;AAMAwC,MAAAA,IAAI,CACDH,IADH,CACQ,GADR,EACa2B,CAAC,GAAGV,MAAM,GAAG,GAD1B,EAEGjB,IAFH,CAEQ,mBAFR,EAE6B,SAF7B,EAGGA,IAHH,CAGQ,oBAHR,EAG8B,SAH9B;;AAKAknD,MAAAA,aAAa,CAAC/mD,IAAD,EAAOqkD,SAAP,CAAb;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,WAAS4C,IAAT,CAAcH,OAAd,EAAuBxiC,CAAvB,EAA0B/iB,CAA1B,EAA6BC,CAA7B,EAAgCX,KAAhC,EAAuCC,MAAvC,EAA+CujD,SAA/C,EAA0DrmD,IAA1D,EAAgE;AAC9D,QAAM2F,CAAC,GAAG2gB,CAAC,CAACtiB,MAAF,CAAS,QAAT,CAAV;AACA,QAAMkS,CAAC,GAAGvQ,CAAC,CACR3B,MADO,CACA,eADA,EAEPnC,IAFO,CAEF,GAFE,EAEG0B,CAFH,EAGP1B,IAHO,CAGF,GAHE,EAGG2B,CAHH,EAIP3B,IAJO,CAIF,OAJE,EAIOgB,KAJP,EAKPhB,IALO,CAKF,QALE,EAKQiB,MALR,CAAV;AAOA,QAAMd,IAAI,GAAGkU,CAAC,CACXlS,MADU,CACH,WADG,EAEVZ,KAFU,CAEJ,SAFI,EAEO,OAFP,EAGVA,KAHU,CAGJ,QAHI,EAGM,MAHN,EAIVA,KAJU,CAIJ,OAJI,EAIK,MAJL,CAAb;AAMApB,IAAAA,IAAI,CACDgC,MADH,CACU,KADV,EAEGZ,KAFH,CAES,SAFT,EAEoB,YAFpB,EAGGA,KAHH,CAGS,YAHT,EAGuB,QAHvB,EAIGA,KAJH,CAIS,gBAJT,EAI2B,QAJ3B,EAKGpB,IALH,CAKQ8mD,OALR;AAOAE,IAAAA,OAAO,CAACF,OAAD,EAAUnjD,CAAV,EAAapC,CAAb,EAAgBC,CAAhB,EAAmBX,KAAnB,EAA0BC,MAA1B,EAAkCujD,SAAlC,EAA6CrmD,IAA7C,CAAP;;AACA+oD,IAAAA,aAAa,CAAC/mD,IAAD,EAAOqkD,SAAP,CAAb;AACD;AAED;AACF;AACA;AACA;;;AACE,WAAS0C,aAAT,CAAuBG,MAAvB,EAA+BC,iBAA/B,EAAkD;AAChD,SAAK,IAAMzoD,GAAX,IAAkByoD,iBAAlB,EAAqC;AACnC,UAAIA,iBAAiB,CAAC5xB,cAAlB,CAAiC72B,GAAjC,CAAJ,EAA2C;AAAE;AAC3CwoD,QAAAA,MAAM,CAACrnD,IAAP,CAAYnB,GAAZ,EAAiByoD,iBAAiB,CAACzoD,GAAD,CAAlC;AACD;AACF;AACF;;AAED,SAAO,UAAUV,IAAV,EAAgB;AACrB,WAAOA,IAAI,CAACie,aAAL,KAAuB,IAAvB,GAA8BgrC,IAA9B,GAAqCjpD,IAAI,CAACie,aAAL,KAAuB,KAAvB,GAA+B4qC,MAA/B,GAAwCG,OAApF;AACD,GAFD;AAGD,CA9G8B,EAA/B;;AAgHA,IAAMpC,8BAA8B,GAAI,YAAY;AAClD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,WAASiC,MAAT,CAAgBC,OAAhB,EAAyBxiC,CAAzB,EAA4B/iB,CAA5B,EAA+BC,CAA/B,EAAkCX,KAAlC,EAAyCC,MAAzC,EAAiDujD,SAAjD,EAA4D;AAC1D,QAAMrkD,IAAI,GAAGskB,CAAC,CACXtiB,MADU,CACH,MADG,EAEVnC,IAFU,CAEL,GAFK,EAEA0B,CAFA,EAGV1B,IAHU,CAGL,GAHK,EAGA2B,CAHA,EAIVJ,KAJU,CAIJ,aAJI,EAIW,OAJX,EAKVpB,IALU,CAKL8mD,OALK,CAAb;;AAMAC,IAAAA,aAAa,CAAC/mD,IAAD,EAAOqkD,SAAP,CAAb;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,WAAS2C,OAAT,CAAiBF,OAAjB,EAA0BxiC,CAA1B,EAA6B/iB,CAA7B,EAAgCC,CAAhC,EAAmCX,KAAnC,EAA0CC,MAA1C,EAAkDujD,SAAlD,EAA6DrmD,IAA7D,EAAmE;AACjE,QAAQ4b,aAAR,GAA4D5b,IAA5D,CAAQ4b,aAAR;AAAA,QAAuBC,eAAvB,GAA4D7b,IAA5D,CAAuB6b,eAAvB;AAAA,QAAwCC,eAAxC,GAA4D9b,IAA5D,CAAwC8b,eAAxC;AAEA,QAAMkkC,KAAK,GAAG8I,OAAO,CAAC9iD,KAAR,CAAcya,qEAAd,CAAd;;AACA,SAAK,IAAIjhB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwgD,KAAK,CAACvgD,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,UAAMyJ,EAAE,GAAGzJ,CAAC,GAAGoc,aAAJ,GAAqBA,aAAa,IAAIokC,KAAK,CAACvgD,MAAN,GAAe,CAAnB,CAAd,GAAuC,CAAtE;AACA,UAAMuC,IAAI,GAAGskB,CAAC,CACXtiB,MADU,CACH,MADG,EAEVnC,IAFU,CAEL,GAFK,EAEA0B,CAFA,EAGV1B,IAHU,CAGL,GAHK,EAGA2B,CAHA,EAIVJ,KAJU,CAIJ,aAJI,EAIW,OAJX,EAKVA,KALU,CAKJ,WALI,EAKSwY,aALT,EAMVxY,KANU,CAMJ,aANI,EAMW0Y,eANX,EAOV1Y,KAPU,CAOJ,aAPI,EAOWyY,eAPX,CAAb;AAQA7Z,MAAAA,IAAI,CAACgC,MAAL,CAAY,OAAZ,EAAqBnC,IAArB,CAA0B,GAA1B,EAA+B0B,CAA/B,EAAkC1B,IAAlC,CAAuC,IAAvC,EAA6CoH,EAA7C,EAAiDjH,IAAjD,CAAsDg+C,KAAK,CAACxgD,CAAD,CAA3D;AAEAwC,MAAAA,IAAI,CACDH,IADH,CACQ,GADR,EACa2B,CAAC,GAAGV,MAAM,GAAG,GAD1B,EAEGjB,IAFH,CAEQ,mBAFR,EAE6B,SAF7B,EAGGA,IAHH,CAGQ,oBAHR,EAG8B,SAH9B;;AAKAknD,MAAAA,aAAa,CAAC/mD,IAAD,EAAOqkD,SAAP,CAAb;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,WAAS4C,IAAT,CAAcH,OAAd,EAAuBxiC,CAAvB,EAA0B/iB,CAA1B,EAA6BC,CAA7B,EAAgCX,KAAhC,EAAuCC,MAAvC,EAA+CujD,SAA/C,EAA0DrmD,IAA1D,EAAgE;AAC9D,QAAM2F,CAAC,GAAG2gB,CAAC,CAACtiB,MAAF,CAAS,QAAT,CAAV;AACA,QAAMkS,CAAC,GAAGvQ,CAAC,CACR3B,MADO,CACA,eADA,EAEPnC,IAFO,CAEF,GAFE,EAEG0B,CAFH,EAGP1B,IAHO,CAGF,GAHE,EAGG2B,CAHH,EAIP3B,IAJO,CAIF,OAJE,EAIOgB,KAJP,EAKPhB,IALO,CAKF,QALE,EAKQiB,MALR,CAAV;AAOA,QAAMd,IAAI,GAAGkU,CAAC,CACXlS,MADU,CACH,WADG,EAEVZ,KAFU,CAEJ,SAFI,EAEO,OAFP,EAGVA,KAHU,CAGJ,QAHI,EAGM,MAHN,EAIVA,KAJU,CAIJ,OAJI,EAIK,MAJL,CAAb;AAMApB,IAAAA,IAAI,CACDgC,MADH,CACU,KADV,EAEGZ,KAFH,CAES,SAFT,EAEoB,YAFpB,EAGGA,KAHH,CAGS,YAHT,EAGuB,QAHvB,EAIGA,KAJH,CAIS,gBAJT,EAI2B,QAJ3B,EAKGpB,IALH,CAKQ8mD,OALR;AAOAE,IAAAA,OAAO,CAACF,OAAD,EAAUnjD,CAAV,EAAapC,CAAb,EAAgBC,CAAhB,EAAmBX,KAAnB,EAA0BC,MAA1B,EAAkCujD,SAAlC,EAA6CrmD,IAA7C,CAAP;;AACA+oD,IAAAA,aAAa,CAAC/mD,IAAD,EAAOqkD,SAAP,CAAb;AACD;AAED;AACF;AACA;AACA;;;AACE,WAAS0C,aAAT,CAAuBG,MAAvB,EAA+BC,iBAA/B,EAAkD;AAChD,SAAK,IAAMzoD,GAAX,IAAkByoD,iBAAlB,EAAqC;AACnC,UAAIA,iBAAiB,CAAC5xB,cAAlB,CAAiC72B,GAAjC,CAAJ,EAA2C;AAAE;AAC3CwoD,QAAAA,MAAM,CAACrnD,IAAP,CAAYnB,GAAZ,EAAiByoD,iBAAiB,CAACzoD,GAAD,CAAlC;AACD;AACF;AACF;;AAED,SAAO,UAAUV,IAAV,EAAgB;AACrB,WAAOA,IAAI,CAACie,aAAL,KAAuB,IAAvB,GAA8BgrC,IAA9B,GAAqCjpD,IAAI,CAACie,aAAL,KAAuB,KAAvB,GAA+B4qC,MAA/B,GAAwCG,OAApF;AACD,GAFD;AAGD,CA1GsC,EAAvC;;AA4GA,iEAAe;AACb1J,EAAAA,QAAQ,EAARA,QADa;AAEbzD,EAAAA,QAAQ,EAARA,QAFa;AAGbgM,EAAAA,SAAS,EAATA,SAHa;AAIblH,EAAAA,SAAS,EAATA,SAJa;AAKbK,EAAAA,SAAS,EAATA,SALa;AAMb6F,EAAAA,SAAS,EAATA,SANa;AAObE,EAAAA,iBAAiB,EAAjBA,iBAPa;AAQb5I,EAAAA,aAAa,EAAbA,aARa;AASbsE,EAAAA,cAAc,EAAdA,cATa;AAUbC,EAAAA,QAAQ,EAARA,QAVa;AAWbC,EAAAA,kBAAkB,EAAlBA,kBAXa;AAYbR,EAAAA,eAAe,EAAfA,eAZa;AAabE,EAAAA,qBAAqB,EAArBA,qBAba;AAcbC,EAAAA,oBAAoB,EAApBA,oBAda;AAebF,EAAAA,oBAAoB,EAApBA,oBAfa;AAgBbJ,EAAAA,kBAAkB,EAAlBA,kBAhBa;AAiBbD,EAAAA,kBAAkB,EAAlBA,kBAjBa;AAkBbE,EAAAA,eAAe,EAAfA,eAlBa;AAmBbzC,EAAAA,UAAU,EAAVA,UAnBa;AAoBbJ,EAAAA,WAAW,EAAXA,WApBa;AAqBb4H,EAAAA,SAAS,EAATA,SArBa;AAsBbE,EAAAA,WAAW,EAAXA,WAtBa;AAuBbpL,EAAAA,kBAAkB,EAAlBA;AAvBa,CAAf;;;;;;;;;;;;;;;;;;;ACzgCA,IAAM11B,OAAO,GAAG,EAAhB;AAEO,IAAMgjC,GAAG,GAAG,SAANA,GAAM,CAAC1oD,GAAD,EAAM4sB,GAAN,EAAc;AAC/BlH,EAAAA,OAAO,CAAC1lB,GAAD,CAAP,GAAe4sB,GAAf;AACD,CAFM;AAIA,IAAM+7B,GAAG,GAAG,SAANA,GAAM,CAACzgC,CAAD;AAAA,SAAOxC,OAAO,CAACwC,CAAD,CAAd;AAAA,CAAZ;AACA,IAAMroB,IAAI,GAAG,SAAPA,IAAO;AAAA,SAAM1B,MAAM,CAAC0B,IAAP,CAAY6lB,OAAZ,CAAN;AAAA,CAAb;AACA,IAAMgnB,IAAI,GAAG,SAAPA,IAAO;AAAA,SAAM7sC,IAAI,GAAGd,MAAb;AAAA,CAAb;AAEP,iEAAe;AACb4pD,EAAAA,GAAG,EAAHA,GADa;AAEbD,EAAAA,GAAG,EAAHA,GAFa;AAGb7oD,EAAAA,IAAI,EAAJA,IAHa;AAIb6sC,EAAAA,IAAI,EAAJA;AAJa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AACO,IAAMmc,cAAc,GAAG,SAAjBA,cAAiB,CAACjjC,CAAD;AAAA,SAC5BA,CAAC,CACEtiB,MADH,CACU,QADV,EAEE;AACA;AAHF,GAIGnC,IAJH,CAIQ,OAJR,EAIiB,aAJjB,EAKGA,IALH,CAKQ,GALR,EAKaxB,kDAAS,GAAG6L,KAAZ,CAAkBqS,QAL/B,EAMG1c,IANH,CAMQ,IANR,EAMcxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAAlB,GAA4B1C,kDAAS,GAAG6L,KAAZ,CAAkBqS,QAN5D,EAOG1c,IAPH,CAOQ,IAPR,EAOcxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAAlB,GAA4B1C,kDAAS,GAAG6L,KAAZ,CAAkBqS,QAP5D,CAD4B;AAAA,CAAvB;AAUP;AACA;AACA;AACA;AACA;;AACO,IAAMirC,WAAW,GAAG,SAAdA,WAAc,CAACljC,CAAD;AAAA,SACzBA,CAAC,CACEtiB,MADH,CACU,MADV,EAEGZ,KAFH,CAES,QAFT,EAEmB,MAFnB,EAGGA,KAHH,CAGS,kBAHT,EAG6B,GAH7B,EAIGvB,IAJH,CAIQ,IAJR,EAIcxB,kDAAS,GAAG6L,KAAZ,CAAkBsS,UAJhC,EAKG3c,IALH,CAKQ,OALR,EAKiB,SALjB,EAMGA,IANH,CAMQ,IANR,EAMcxB,kDAAS,GAAG6L,KAAZ,CAAkBsS,UAAlB,GAA+B,CAN7C,EAOG3c,IAPH,CAOQ,IAPR,EAOc,CAPd,EAQGA,IARH,CAQQ,IARR,EAQc,CARd,CADyB;AAAA,CAApB;AAWP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM4nD,eAAe,GAAG,SAAlBA,eAAkB,CAACnjC,CAAD,EAAIojC,QAAJ,EAAiB;AAC9C,MAAMx9C,KAAK,GAAGoa,CAAC,CACZtiB,MADW,CACJ,MADI,EAEXnC,IAFW,CAEN,GAFM,EAED,IAAIxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAFrB,EAGXlB,IAHW,CAGN,GAHM,EAGDxB,kDAAS,GAAG6L,KAAZ,CAAkBsS,UAAlB,GAA+B,IAAIne,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAHpD,EAIXlB,IAJW,CAIN,WAJM,EAIOxB,kDAAS,GAAG6L,KAAZ,CAAkByQ,QAJzB,EAKX9a,IALW,CAKN,OALM,EAKG,aALH,EAMXG,IANW,CAMN0nD,QAAQ,CAAChoD,EANH,CAAd;AAQA,MAAMkpB,QAAQ,GAAG1e,KAAK,CAAC1K,IAAN,GAAac,OAAb,EAAjB;AACAgkB,EAAAA,CAAC,CAAC1kB,MAAF,CAAS,MAAT,EAAiB,cAAjB,EACGC,IADH,CACQ,GADR,EACaxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAD/B,EAEGlB,IAFH,CAEQ,GAFR,EAEaxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAF/B,EAGGlB,IAHH,CAGQ,OAHR,EAGiB+oB,QAAQ,CAAC/nB,KAAT,GAAiB,IAAIxC,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAHxD,EAIGlB,IAJH,CAIQ,QAJR,EAIkB+oB,QAAQ,CAAC9nB,MAAT,GAAkB,IAAIzC,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAJ1D,EAKGlB,IALH,CAKQ,IALR,EAKcxB,kDAAS,GAAG6L,KAAZ,CAAkB+S,MALhC;AAOA,SAAO/S,KAAP;AACD,CAlBM;AAoBP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMy9C,cAAc,GAAG,SAAjBA,cAAiB,CAACrjC,CAAD,EAAIojC,QAAJ,EAAiB;AAC7C,MAAMl/B,QAAQ,GAAG,SAAXA,QAAW,CAAU4B,MAAV,EAAkBC,GAAlB,EAAuBlC,OAAvB,EAAgC;AAC/C,QAAMmC,KAAK,GAAGF,MAAM,CACjBpoB,MADW,CACJ,OADI,EAEXnC,IAFW,CAEN,GAFM,EAED,IAAIxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAFrB,EAGXf,IAHW,CAGNqqB,GAHM,CAAd;;AAIA,QAAI,CAAClC,OAAL,EAAc;AACZmC,MAAAA,KAAK,CAACzqB,IAAN,CAAW,IAAX,EAAiBxB,kDAAS,GAAG6L,KAAZ,CAAkBsS,UAAnC;AACD;AACF,GARD;;AASA,MAAMxH,KAAK,GAAGsP,CAAC,CACZtiB,MADW,CACJ,MADI,EAEXnC,IAFW,CAEN,GAFM,EAED,IAAIxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAFrB,EAGXlB,IAHW,CAGN,GAHM,EAGDxB,kDAAS,GAAG6L,KAAZ,CAAkBsS,UAAlB,GAA+B,MAAMne,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAHtD,EAIXlB,IAJW,CAIN,WAJM,EAIOxB,kDAAS,GAAG6L,KAAZ,CAAkByQ,QAJzB,EAKX9a,IALW,CAKN,OALM,EAKG,aALH,EAMXG,IANW,CAMN0nD,QAAQ,CAACE,YAAT,CAAsB,CAAtB,CANM,CAAd;AAQA,MAAM1yC,QAAQ,GAAGF,KAAK,CAACxV,IAAN,GAAac,OAAb,EAAjB;AACA,MAAMgoB,WAAW,GAAGpT,QAAQ,CAACpU,MAA7B;AAEA,MAAM4+B,WAAW,GAAGpb,CAAC,CAClBtiB,MADiB,CACV,MADU,EACF;AADE,GAEjBnC,IAFiB,CAEZ,GAFY,EAEPxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAFX,EAGjBlB,IAHiB,CAIhB,GAJgB,EAKhByoB,WAAW,GACTjqB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAAlB,GAA4B,GAD9B,GAEE1C,kDAAS,GAAG6L,KAAZ,CAAkBoS,aAFpB,GAGEje,kDAAS,GAAG6L,KAAZ,CAAkBsS,UARJ,EAUjB3c,IAViB,CAUZ,OAVY,EAUH,mBAVG,CAApB;AAYA,MAAIsoB,OAAO,GAAG,IAAd;AACA,MAAI0/B,QAAQ,GAAG,IAAf;AACAH,EAAAA,QAAQ,CAACE,YAAT,CAAsBnpD,OAAtB,CAA8B,UAAU0W,KAAV,EAAiB;AAC7C,QAAI,CAACgT,OAAL,EAAc;AACZK,MAAAA,QAAQ,CAACkX,WAAD,EAAcvqB,KAAd,EAAqB0yC,QAArB,CAAR;AACAA,MAAAA,QAAQ,GAAG,KAAX;AACD;;AACD1/B,IAAAA,OAAO,GAAG,KAAV;AACD,GAND;AAQA,MAAM2/B,SAAS,GAAGxjC,CAAC,CAChBtiB,MADe,CACR,MADQ,EACA;AADA,GAEfnC,IAFe,CAEV,IAFU,EAEJxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAFd,EAGflB,IAHe,CAGV,IAHU,EAGJxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAAlB,GAA4BunB,WAA5B,GAA0CjqB,kDAAS,GAAG6L,KAAZ,CAAkBoS,aAAlB,GAAkC,CAHxE,EAIfzc,IAJe,CAIV,IAJU,EAIJxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAAlB,GAA4BunB,WAA5B,GAA0CjqB,kDAAS,GAAG6L,KAAZ,CAAkBoS,aAAlB,GAAkC,CAJxE,EAKfzc,IALe,CAKV,OALU,EAKD,eALC,CAAlB;AAMA,MAAMkoD,QAAQ,GAAGroB,WAAW,CAAClgC,IAAZ,GAAmBc,OAAnB,EAAjB;AACA,MAAMO,KAAK,GAAGkG,IAAI,CAAC8oB,GAAL,CAASk4B,QAAQ,CAAClnD,KAAlB,EAAyBqU,QAAQ,CAACrU,KAAlC,CAAd;AAEAinD,EAAAA,SAAS,CAACjoD,IAAV,CAAe,IAAf,EAAqBgB,KAAK,GAAG,IAAIxC,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAAnD,EApD6C,CAqD7C;;AAEAujB,EAAAA,CAAC,CAAC1kB,MAAF,CAAS,MAAT,EAAiB,cAAjB,EACGC,IADH,CACQ,GADR,EACaxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAD/B,EAEGlB,IAFH,CAEQ,GAFR,EAEaxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAF/B,EAGGlB,IAHH,CAGQ,OAHR,EAGiBgB,KAAK,GAAG,IAAIxC,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAH/C,EAIGlB,IAJH,CAIQ,QAJR,EAIkBkoD,QAAQ,CAACjnD,MAAT,GAAkBwnB,WAAlB,GAAgC,IAAIjqB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAJxE,EAKGlB,IALH,CAKQ,IALR,EAKcxB,kDAAS,GAAG6L,KAAZ,CAAkB+S,MALhC;AAOA,SAAOqH,CAAP;AACD,CA/DM;AAiEP;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM0jC,cAAc,GAAG,SAAjBA,cAAiB,CAAC1jC,CAAD,EAAIojC,QAAJ,EAAcO,MAAd,EAAyB;AACrD,MAAMC,GAAG,GAAG7pD,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAA9B;AACA,MAAMonD,MAAM,GAAG,IAAI9pD,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAArC;AACA,MAAMqnD,MAAM,GAAG9jC,CAAC,CAAC9kB,IAAF,GAASc,OAAT,EAAf;AACA,MAAM+nD,QAAQ,GAAGD,MAAM,CAACvnD,KAAxB;AACA,MAAMynD,IAAI,GAAGF,MAAM,CAAC7mD,CAApB;AAEA,MAAMyT,KAAK,GAAGsP,CAAC,CACZtiB,MADW,CACJ,MADI,EAEXnC,IAFW,CAEN,GAFM,EAED,CAFC,EAGXA,IAHW,CAGN,GAHM,EAGDxB,kDAAS,GAAG6L,KAAZ,CAAkBuS,UAHjB,EAIX5c,IAJW,CAIN,WAJM,EAIOxB,kDAAS,GAAG6L,KAAZ,CAAkByQ,QAJzB,EAKX9a,IALW,CAKN,OALM,EAKG,aALH,EAMXG,IANW,CAMN0nD,QAAQ,CAAChoD,EANH,CAAd;AAQA,MAAMwV,QAAQ,GAAGF,KAAK,CAACxV,IAAN,GAAac,OAAb,EAAjB;AACA,MAAMioD,UAAU,GAAGrzC,QAAQ,CAACrU,KAAT,GAAiBsnD,MAApC;AACA,MAAItnD,KAAK,GAAGkG,IAAI,CAAC8oB,GAAL,CAAS04B,UAAT,EAAqBF,QAArB,CAAZ,CAjBqD,CAiBT;;AAC5C,MAAIxnD,KAAK,KAAKwnD,QAAd,EAAwB;AACtBxnD,IAAAA,KAAK,GAAGA,KAAK,GAAGsnD,MAAhB;AACD;;AACD,MAAIllB,MAAJ,CArBqD,CAsBrD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMulB,QAAQ,GAAGlkC,CAAC,CAAC9kB,IAAF,GAASc,OAAT,EAAjB,CA9BqD,CA+BrD;;AAEA,MAAIonD,QAAQ,CAACe,GAAb,EAAkB,CAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;;AAEDxlB,EAAAA,MAAM,GAAGqlB,IAAI,GAAGJ,GAAhB;;AACA,MAAIK,UAAU,GAAGF,QAAjB,EAA2B;AACzBplB,IAAAA,MAAM,GAAG,CAAColB,QAAQ,GAAGxnD,KAAZ,IAAqB,CAArB,GAAyBqnD,GAAlC;AACD;;AACD,MAAInhD,IAAI,CAACC,GAAL,CAASshD,IAAI,GAAGE,QAAQ,CAACjnD,CAAzB,IAA8B2mD,GAAlC,EAAuC;AACrC,QAAIK,UAAU,GAAGF,QAAjB,EAA2B;AACzBplB,MAAAA,MAAM,GAAGqlB,IAAI,GAAG,CAACC,UAAU,GAAGF,QAAd,IAA0B,CAA1C;AACD;AACF;;AAED,MAAMK,KAAK,GAAG,IAAIrqD,kDAAS,GAAG6L,KAAZ,CAAkBsS,UAApC,CA3DqD,CA4DrD;;AACA8H,EAAAA,CAAC,CAAC1kB,MAAF,CAAS,MAAT,EAAiB,cAAjB,EACGC,IADH,CACQ,GADR,EACaojC,MADb,EAEGpjC,IAFH,CAEQ,GAFR,EAEa6oD,KAFb,EAGG7oD,IAHH,CAGQ,OAHR,EAGiBooD,MAAM,GAAG,cAAH,GAAoB,UAH3C,EAIGpoD,IAJH,CAIQ,OAJR,EAIiBgB,KAJjB,EAKGhB,IALH,CAMI,QANJ,EAOI2oD,QAAQ,CAAC1nD,MAAT,GAAkBzC,kDAAS,GAAG6L,KAAZ,CAAkBsS,UAApC,GAAiDne,kDAAS,GAAG6L,KAAZ,CAAkBuS,UAAnE,GAAgF,CAPpF,EASG5c,IATH,CASQ,IATR,EASc,GATd;AAWAmV,EAAAA,KAAK,CAACnV,IAAN,CAAW,GAAX,EAAgBojC,MAAM,GAAGilB,GAAzB;AACA,MAAIK,UAAU,IAAIF,QAAlB,EAA4BrzC,KAAK,CAACnV,IAAN,CAAW,GAAX,EAAgByoD,IAAI,GAAG,CAACznD,KAAK,GAAGsnD,MAAT,IAAmB,CAA1B,GAA8BI,UAAU,GAAG,CAA3C,GAA+CL,GAA/D,EAzEyB,CA2ErD;;AACA5jC,EAAAA,CAAC,CAAC1kB,MAAF,CAAS,MAAT,EAAiB,cAAjB,EACGC,IADH,CACQ,GADR,EACaojC,MADb,EAEGpjC,IAFH,CAGI,GAHJ,EAIIxB,kDAAS,GAAG6L,KAAZ,CAAkBuS,UAAlB,GAA+Bpe,kDAAS,GAAG6L,KAAZ,CAAkBsS,UAAjD,GAA8Dne,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAJpF,EAMGlB,IANH,CAMQ,OANR,EAMiBgB,KANjB,EAOE;AAPF,GAQGhB,IARH,CAQQ,QARR,EAQkBxB,kDAAS,GAAG6L,KAAZ,CAAkBsS,UAAlB,GAA+B,CARjD,EASG3c,IATH,CASQ,IATR,EAScxB,kDAAS,GAAG6L,KAAZ,CAAkB+S,MAThC,EA5EqD,CAuFrD;;AACAqH,EAAAA,CAAC,CAAC1kB,MAAF,CAAS,MAAT,EAAiB,cAAjB,EACGC,IADH,CACQ,GADR,EACaojC,MADb,EAEGpjC,IAFH,CAGI,GAHJ,EAIIxB,kDAAS,GAAG6L,KAAZ,CAAkBuS,UAAlB,GAA+Bpe,kDAAS,GAAG6L,KAAZ,CAAkBsS,UAAjD,GAA8Dne,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAJpF,EAMGlB,IANH,CAMQ,OANR,EAMiBgB,KANjB,EAOGhB,IAPH,CAOQ,QAPR,EAOkB2oD,QAAQ,CAAC1nD,MAAT,GAAkB,CAAlB,GAAsB,IAAIzC,kDAAS,GAAG6L,KAAZ,CAAkBsS,UAP9D,EAQG3c,IARH,CAQQ,IARR,EAQcxB,kDAAS,GAAG6L,KAAZ,CAAkB+S,MARhC;AAUA,SAAOqH,CAAP;AACD,CAnGM;;AAqGP,IAAMqkC,YAAY,GAAG,SAAfA,YAAe,CAACrkC,CAAD,EAAO;AAC1BA,EAAAA,CAAC,CAACtiB,MAAF,CAAS,QAAT,EACE;AACA;AAFF,GAGGnC,IAHH,CAGQ,OAHR,EAGiB,iBAHjB,EAIGA,IAJH,CAIQ,GAJR,EAIaxB,kDAAS,GAAG6L,KAAZ,CAAkBqS,QAAlB,GAA6Ble,kDAAS,GAAG6L,KAAZ,CAAkB0S,WAJ5D,EAKG/c,IALH,CAMI,IANJ,EAOIxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAAlB,GAA4B1C,kDAAS,GAAG6L,KAAZ,CAAkBqS,QAA9C,GAAyDle,kDAAS,GAAG6L,KAAZ,CAAkB0S,WAP/E,EASG/c,IATH,CAUI,IAVJ,EAWIxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAAlB,GAA4B1C,kDAAS,GAAG6L,KAAZ,CAAkBqS,QAA9C,GAAyDle,kDAAS,GAAG6L,KAAZ,CAAkB0S,WAX/E;AAcA,SACE0H,CAAC,CACEtiB,MADH,CACU,QADV,EAEE;AACA;AAHF,GAIGnC,IAJH,CAIQ,OAJR,EAIiB,iBAJjB,EAKGA,IALH,CAKQ,GALR,EAKaxB,kDAAS,GAAG6L,KAAZ,CAAkBqS,QAL/B,EAMG1c,IANH,CAMQ,IANR,EAMcxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAAlB,GAA4B1C,kDAAS,GAAG6L,KAAZ,CAAkBqS,QAA9C,GAAyD,CANvE,EAOG1c,IAPH,CAOQ,IAPR,EAOcxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAAlB,GAA4B1C,kDAAS,GAAG6L,KAAZ,CAAkBqS,QAA9C,GAAyD,CAPvE,CADF;AAUD,CAzBD;;AA0BA,IAAMqsC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACtkC,CAAD,EAAIojC,QAAJ,EAAiB;AACzC,MAAI7mD,KAAK,GAAGxC,kDAAS,GAAG6L,KAAZ,CAAkBwS,SAA9B;AACA,MAAI5b,MAAM,GAAGzC,kDAAS,GAAG6L,KAAZ,CAAkByS,UAA/B;;AAEA,MAAI+qC,QAAQ,CAACmB,QAAb,EAAuB;AACrB,QAAIC,GAAG,GAAGjoD,KAAV;AACAA,IAAAA,KAAK,GAAGC,MAAR;AACAA,IAAAA,MAAM,GAAGgoD,GAAT;AACD;;AACD,SAAOxkC,CAAC,CACLtiB,MADI,CACG,MADH,EAEJZ,KAFI,CAEE,QAFF,EAEY,OAFZ,EAGJA,KAHI,CAGE,MAHF,EAGU,OAHV,EAIJvB,IAJI,CAIC,OAJD,EAIUgB,KAJV,EAKJhB,IALI,CAKC,QALD,EAKWiB,MALX,EAMJjB,IANI,CAMC,GAND,EAMMxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OANxB,EAOJlB,IAPI,CAOC,GAPD,EAOMxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAPxB,CAAP;AAQD,CAjBD;;AAmBO,IAAM84C,QAAQ,GAAG,SAAXA,QAAW,CAAUx3C,IAAV,EAAgBijD,QAAhB,EAA0B;AAChD;AACA,MAAMyD,KAAK,GAAGzD,QAAQ,CAACtlD,IAAT,CAAc0D,OAAd,CAAsB+a,qEAAtB,EAA6C,GAA7C,CAAd;AAEA,MAAMm/B,QAAQ,GAAGv7C,IAAI,CAACL,MAAL,CAAY,MAAZ,CAAjB;AACA47C,EAAAA,QAAQ,CAAC/9C,IAAT,CAAc,GAAd,EAAmBylD,QAAQ,CAAC/jD,CAA5B;AACAq8C,EAAAA,QAAQ,CAAC/9C,IAAT,CAAc,GAAd,EAAmBylD,QAAQ,CAAC9jD,CAA5B;AACAo8C,EAAAA,QAAQ,CAACx8C,KAAT,CAAe,aAAf,EAA8BkkD,QAAQ,CAAC7H,MAAvC;AACAG,EAAAA,QAAQ,CAAC/9C,IAAT,CAAc,MAAd,EAAsBylD,QAAQ,CAAC9nC,IAA/B;;AACA,MAAI,OAAO8nC,QAAQ,CAACxlD,KAAhB,KAA0B,WAA9B,EAA2C;AACzC89C,IAAAA,QAAQ,CAAC/9C,IAAT,CAAc,OAAd,EAAuBylD,QAAQ,CAACxlD,KAAhC;AACD;;AAED,MAAM8lD,IAAI,GAAGhI,QAAQ,CAAC57C,MAAT,CAAgB,OAAhB,CAAb;AACA4jD,EAAAA,IAAI,CAAC/lD,IAAL,CAAU,GAAV,EAAeylD,QAAQ,CAAC/jD,CAAT,GAAa+jD,QAAQ,CAAC5H,UAAT,GAAsB,CAAlD;AACAkI,EAAAA,IAAI,CAAC/lD,IAAL,CAAU,MAAV,EAAkBylD,QAAQ,CAAC9nC,IAA3B;AACAooC,EAAAA,IAAI,CAAC5lD,IAAL,CAAU+oD,KAAV;AAEA,SAAOnL,QAAP;AACD,CAnBM;;AAqBP,IAAMoL,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAAQ1nD,CAAR,EAAWC,CAAX,EAAc8iB,CAAd,EAAoB;AACxC,MAAI9H,UAAU,GAAG,CAAjB;AAEA,MAAMohC,QAAQ,GAAGt5B,CAAC,CAACtiB,MAAF,CAAS,MAAT,CAAjB;AACA47C,EAAAA,QAAQ,CAACx8C,KAAT,CAAe,aAAf,EAA8B,OAA9B;AACAw8C,EAAAA,QAAQ,CAAC/9C,IAAT,CAAc,OAAd,EAAuB,UAAvB;;AAEA,MAAIG,IAAI,GAAGipD,KAAK,CAACvlD,OAAN,CAAc,OAAd,EAAuB,OAAvB,CAAX;;AACA1D,EAAAA,IAAI,GAAGA,IAAI,CAAC0D,OAAL,CAAa,KAAb,EAAoB,OAApB,CAAP;AACA,MAAMs6C,KAAK,GAAGh+C,IAAI,CAACgE,KAAL,CAAWya,qEAAX,CAAd;AAEA,MAAIyqC,OAAO,GAAG,OAAO7qD,kDAAS,GAAG6L,KAAZ,CAAkBkP,UAAvC;;AAXwC,6CAYrB4kC,KAZqB;AAAA;;AAAA;AAYxC,wDAA0B;AAAA,UAAfx5C,KAAe;;AACxB,UAAM6lB,GAAG,GAAG7lB,KAAI,CAACD,IAAL,EAAZ;;AAEA,UAAI8lB,GAAG,CAAC5sB,MAAJ,GAAa,CAAjB,EAAoB;AAClB,YAAMmoD,IAAI,GAAGhI,QAAQ,CAAC57C,MAAT,CAAgB,OAAhB,CAAb;AACA4jD,QAAAA,IAAI,CAAC5lD,IAAL,CAAUqqB,GAAV;;AACA,YAAI6+B,OAAO,KAAK,CAAhB,EAAmB;AACjB,cAAMC,UAAU,GAAGvD,IAAI,CAACpmD,IAAL,GAAYc,OAAZ,EAAnB;AACA4oD,UAAAA,OAAO,IAAIC,UAAU,CAACroD,MAAtB;AACD;;AACD0b,QAAAA,UAAU,IAAI0sC,OAAd;AACAtD,QAAAA,IAAI,CAAC/lD,IAAL,CAAU,GAAV,EAAe0B,CAAC,GAAGlD,kDAAS,GAAG6L,KAAZ,CAAkBkP,UAArC;AACAwsC,QAAAA,IAAI,CAAC/lD,IAAL,CAAU,GAAV,EAAe2B,CAAC,GAAGgb,UAAJ,GAAiB,OAAOne,kDAAS,GAAG6L,KAAZ,CAAkBkP,UAAzD;AACD;AACF;AA1BuC;AAAA;AAAA;AAAA;AAAA;;AA2BxC,SAAO;AAAE+pB,IAAAA,SAAS,EAAEya,QAAQ,CAACp+C,IAAT,GAAgBc,OAAhB,GAA0BO,KAAvC;AAA8C2b,IAAAA,UAAU,EAAVA;AAA9C,GAAP;AACD,CA5BD;AA8BA;AACA;AACA;AACA;AACA;AACA;;;AAEO,IAAM2gC,QAAQ,GAAG,SAAXA,QAAW,CAACn9C,IAAD,EAAOskB,CAAP,EAAa;AACnCA,EAAAA,CAAC,CAACzkB,IAAF,CAAO,OAAP,EAAgB,YAAhB;AACA,MAAM4T,IAAI,GAAG6Q,CAAC,CAACtiB,MAAF,CAAS,MAAT,EAAiBnC,IAAjB,CAAsB,GAAtB,EAA2B,CAA3B,EAA8BA,IAA9B,CAAmC,GAAnC,EAAwCxB,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAA1D,CAAb;AACA,MAAMs8C,QAAQ,GAAG/4B,CAAC,CAACtiB,MAAF,CAAS,GAAT,CAAjB;;AAEA,uBAAkCgnD,aAAa,CAAChpD,IAAD,EAAO,CAAP,EAAU,CAAV,EAAaq9C,QAAb,CAA/C;AAAA,MAAQla,SAAR,kBAAQA,SAAR;AAAA,MAAmB3mB,UAAnB,kBAAmBA,UAAnB;;AACA/I,EAAAA,IAAI,CAAC5T,IAAL,CAAU,QAAV,EAAoB2c,UAAU,GAAG,IAAIne,kDAAS,GAAG6L,KAAZ,CAAkBkP,UAAvD;AACA3F,EAAAA,IAAI,CAAC5T,IAAL,CAAU,OAAV,EAAmBsjC,SAAS,GAAG9kC,kDAAS,GAAG6L,KAAZ,CAAkBkP,UAAlB,GAA+B,CAA9D;AAEA,SAAO3F,IAAP;AACD,CAVM;AAYP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,IAAM21C,SAAS,GAAG,SAAZA,SAAY,CAAU/mD,IAAV,EAAgBqlD,QAAhB,EAA0B;AACjD,MAAMhoD,EAAE,GAAGgoD,QAAQ,CAAChoD,EAApB;AACA,MAAM2pD,SAAS,GAAG;AAChB3pD,IAAAA,EAAE,EAAEA,EADY;AAEhBK,IAAAA,KAAK,EAAE2nD,QAAQ,CAAChoD,EAFA;AAGhBmB,IAAAA,KAAK,EAAE,CAHS;AAIhBC,IAAAA,MAAM,EAAE;AAJQ,GAAlB;AAOA,MAAMwjB,CAAC,GAAGjiB,IAAI,CAACL,MAAL,CAAY,GAAZ,EAAiBnC,IAAjB,CAAsB,IAAtB,EAA4BH,EAA5B,EAAgCG,IAAhC,CAAqC,OAArC,EAA8C,YAA9C,CAAV;AAEA,MAAI6nD,QAAQ,CAAC36C,IAAT,KAAkB,OAAtB,EAA+Bw6C,cAAc,CAACjjC,CAAD,CAAd;AAC/B,MAAIojC,QAAQ,CAAC36C,IAAT,KAAkB,KAAtB,EAA6B47C,YAAY,CAACrkC,CAAD,CAAZ;AAC7B,MAAIojC,QAAQ,CAAC36C,IAAT,KAAkB,MAAlB,IAA4B26C,QAAQ,CAAC36C,IAAT,KAAkB,MAAlD,EAA0D67C,iBAAiB,CAACtkC,CAAD,EAAIojC,QAAJ,CAAjB;AAC1D,MAAIA,QAAQ,CAAC36C,IAAT,KAAkB,MAAtB,EAA8BowC,QAAQ,CAACuK,QAAQ,CAACj0C,IAAT,CAAczT,IAAf,EAAqBskB,CAArB,CAAR;AAC9B,MAAIojC,QAAQ,CAAC36C,IAAT,KAAkB,SAAtB,EAAiCy6C,WAAW,CAACljC,CAAD,CAAX;AACjC,MAAIojC,QAAQ,CAAC36C,IAAT,KAAkB,SAAlB,IAA+B26C,QAAQ,CAACE,YAAT,CAAsBnqD,MAAtB,KAAiC,CAApE,EACEgqD,eAAe,CAACnjC,CAAD,EAAIojC,QAAJ,CAAf;AACF,MAAIA,QAAQ,CAAC36C,IAAT,KAAkB,SAAlB,IAA+B26C,QAAQ,CAACE,YAAT,CAAsBnqD,MAAtB,GAA+B,CAAlE,EAAqEkqD,cAAc,CAACrjC,CAAD,EAAIojC,QAAJ,CAAd;AAErE,MAAM4B,QAAQ,GAAGhlC,CAAC,CAAC9kB,IAAF,GAASc,OAAT,EAAjB;AACA+oD,EAAAA,SAAS,CAACxoD,KAAV,GAAkByoD,QAAQ,CAACzoD,KAAT,GAAiB,IAAIxC,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAAzD;AACAsoD,EAAAA,SAAS,CAACvoD,MAAV,GAAmBwoD,QAAQ,CAACxoD,MAAT,GAAkB,IAAIzC,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAA3D;AAEAqjB,EAAAA,wDAAA,CAAY1kB,EAAZ,EAAgB2pD,SAAhB,EAxBiD,CAyBjD;;AACA,SAAOA,SAAP;AACD,CA3BM;AA6BP,IAAI/hC,SAAS,GAAG,CAAhB;AACO,IAAMjB,QAAQ,GAAG,SAAXA,QAAW,CAAUhkB,IAAV,EAAgBgE,IAAhB,EAAsB0Z,QAAtB,EAAgC;AACtD,MAAMwH,eAAe,GAAG,SAAlBA,eAAkB,CAAUxa,IAAV,EAAgB;AACtC,YAAQA,IAAR;AACE,WAAKu6C,yEAAL;AACE,eAAO,aAAP;;AACF,WAAKA,uEAAL;AACE,eAAO,WAAP;;AACF,WAAKA,yEAAL;AACE,eAAO,aAAP;;AACF,WAAKA,wEAAL;AACE,eAAO,YAAP;AARJ;AAUD,GAXD;;AAaAjhD,EAAAA,IAAI,CAAC6B,MAAL,GAAc7B,IAAI,CAAC6B,MAAL,CAAYsB,MAAZ,CAAmB,UAACjB,CAAD;AAAA,WAAO,CAACkB,MAAM,CAACC,KAAP,CAAanB,CAAC,CAAC/G,CAAf,CAAR;AAAA,GAAnB,CAAd,CAdsD,CAgBtD;;AACA,MAAM+H,QAAQ,GAAGlD,IAAI,CAAC6B,MAAtB,CAjBsD,CAmBtD;;AACA,MAAM0B,YAAY,GAAGpF,wCAAI,GACtBjD,CADkB,CAChB,UAAU7D,CAAV,EAAa;AACd,WAAOA,CAAC,CAAC6D,CAAT;AACD,GAHkB,EAIlBC,CAJkB,CAIhB,UAAU9D,CAAV,EAAa;AACd,WAAOA,CAAC,CAAC8D,CAAT;AACD,GANkB,EAOlBmI,KAPkB,CAOZlF,0CAPY,CAArB;AASA,MAAMuF,OAAO,GAAG3H,IAAI,CACjBL,MADa,CACN,MADM,EAEbnC,IAFa,CAER,GAFQ,EAEH+J,YAAY,CAACL,QAAD,CAFT,EAGb1J,IAHa,CAGR,IAHQ,EAGF,SAASynB,SAHP,EAIbznB,IAJa,CAIR,OAJQ,EAIC,YAJD,CAAhB;AAKA,MAAIoK,GAAG,GAAG,EAAV;;AACA,MAAI5L,kDAAS,GAAG6L,KAAZ,CAAkBC,mBAAtB,EAA2C;AACzCF,IAAAA,GAAG,GACDG,MAAM,CAACC,QAAP,CAAgBC,QAAhB,GACA,IADA,GAEAF,MAAM,CAACC,QAAP,CAAgBE,IAFhB,GAGAH,MAAM,CAACC,QAAP,CAAgBG,QAHhB,GAIAJ,MAAM,CAACC,QAAP,CAAgBI,MALlB;AAMAR,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACAuG,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACD;;AAEDsG,EAAAA,OAAO,CAACnK,IAAR,CACE,YADF,EAEE,SAASoK,GAAT,GAAe,GAAf,GAAqBsd,eAAe,CAAC+/B,wEAAD,CAApC,GAAwE,KAAxE,GAAgF,GAFlF;;AAKA,MAAI,OAAOvnC,QAAQ,CAAC/K,KAAhB,KAA0B,WAA9B,EAA2C;AACzC,QAAMjV,KAAK,GAAGsC,IAAI,CAACL,MAAL,CAAY,GAAZ,EAAiBnC,IAAjB,CAAsB,OAAtB,EAA+B,YAA/B,CAAd;;AAEA,gCAAiB6E,gEAAA,CAAwB2B,IAAI,CAAC6B,MAA7B,CAAjB;AAAA,QAAQ3G,CAAR,yBAAQA,CAAR;AAAA,QAAWC,CAAX,yBAAWA,CAAX;;AAEA,QAAMuC,IAAI,GAAG0a,8DAAA,CAAesB,QAAQ,CAAC/K,KAAxB,CAAb;AAEA,QAAIsT,WAAW,GAAG,CAAlB;AACA,QAAMihC,SAAS,GAAG,EAAlB;AACA,QAAIxzC,QAAQ,GAAG,CAAf;AACA,QAAIvG,IAAI,GAAG,CAAX;;AAEA,SAAK,IAAIhS,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIuG,IAAI,CAACtG,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,UAAMwX,KAAK,GAAGjV,KAAK,CAChBiC,MADW,CACJ,MADI,EAEXnC,IAFW,CAEN,aAFM,EAES,QAFT,EAGXG,IAHW,CAGN+D,IAAI,CAACvG,CAAD,CAHE,EAIXqC,IAJW,CAIN,GAJM,EAID0B,CAJC,EAKX1B,IALW,CAKN,GALM,EAKD2B,CAAC,GAAG8mB,WALH,CAAd;AAOA,UAAMkhC,SAAS,GAAGx0C,KAAK,CAACxV,IAAN,GAAac,OAAb,EAAlB;AACAyV,MAAAA,QAAQ,GAAGhP,IAAI,CAAC8oB,GAAL,CAAS9Z,QAAT,EAAmByzC,SAAS,CAAC3oD,KAA7B,CAAX;AACA2O,MAAAA,IAAI,GAAGzI,IAAI,CAAC6I,GAAL,CAASJ,IAAT,EAAeg6C,SAAS,CAACjoD,CAAzB,CAAP;AAEA9E,MAAAA,6CAAA,CAAS+sD,SAAS,CAACjoD,CAAnB,EAAsBA,CAAtB,EAAyBC,CAAC,GAAG8mB,WAA7B;;AAEA,UAAIA,WAAW,KAAK,CAApB,EAAuB;AACrB,YAAMpT,QAAQ,GAAGF,KAAK,CAACxV,IAAN,GAAac,OAAb,EAAjB;AACAgoB,QAAAA,WAAW,GAAGpT,QAAQ,CAACpU,MAAvB;AACArE,QAAAA,6CAAA,CAAS,cAAT,EAAyB6rB,WAAzB,EAAsC9mB,CAAtC;AACD;;AACD+nD,MAAAA,SAAS,CAACvqD,IAAV,CAAegW,KAAf;AACD;;AAED,QAAI+rC,SAAS,GAAGz4B,WAAW,GAAGvkB,IAAI,CAACtG,MAAnC;;AACA,QAAIsG,IAAI,CAACtG,MAAL,GAAc,CAAlB,EAAqB;AACnB,UAAMgsD,SAAS,GAAG,CAAC1lD,IAAI,CAACtG,MAAL,GAAc,CAAf,IAAoB6qB,WAApB,GAAkC,GAApD;AAEAihC,MAAAA,SAAS,CAAC9qD,OAAV,CAAkB,UAACuW,KAAD,EAAQxX,CAAR;AAAA,eAAcwX,KAAK,CAACnV,IAAN,CAAW,GAAX,EAAgB2B,CAAC,GAAGhE,CAAC,GAAG8qB,WAAR,GAAsBmhC,SAAtC,CAAd;AAAA,OAAlB;AACA1I,MAAAA,SAAS,GAAGz4B,WAAW,GAAGvkB,IAAI,CAACtG,MAA/B;AACD;;AAED,QAAMwqB,MAAM,GAAGloB,KAAK,CAACP,IAAN,GAAac,OAAb,EAAf;AAEAP,IAAAA,KAAK,CACFH,MADH,CACU,MADV,EACkB,cADlB,EAEGC,IAFH,CAEQ,OAFR,EAEiB,KAFjB,EAGGA,IAHH,CAGQ,GAHR,EAGa0B,CAAC,GAAGwU,QAAQ,GAAG,CAAf,GAAmB1X,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAAlB,GAA4B,CAH5D,EAIGlB,IAJH,CAIQ,GAJR,EAIa2B,CAAC,GAAGu/C,SAAS,GAAG,CAAhB,GAAoB1iD,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAAlB,GAA4B,CAAhD,GAAoD,GAJjE,EAKGlB,IALH,CAKQ,OALR,EAKiBkW,QAAQ,GAAG1X,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OAL9C,EAMGlB,IANH,CAMQ,QANR,EAMkBkhD,SAAS,GAAG1iD,kDAAS,GAAG6L,KAAZ,CAAkBnJ,OANhD;AAQAtE,IAAAA,6CAAA,CAASwrB,MAAT,EApDyC,CAsDzC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;;AAEDX,EAAAA,SAAS;AACV,CA7HM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChZP;AACA;AACA;AACA;AACA;;AAEA,IAAMmc,KAAK,GAAG,SAARA,KAAQ,CAAC/2B,CAAD;AAAA,SAAOxL,IAAI,CAACmL,KAAL,CAAWnL,IAAI,CAACC,SAAL,CAAeuL,CAAf,CAAX,CAAP;AAAA,CAAd;;AACA,IAAIi9C,OAAO,GAAG,EAAd;AAEO,IAAM5qC,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BlS,IAA9B,EAAoC;AAChE2R,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDlS,IAApD;AACD,CAFM;;AAIP,IAAM68C,UAAU,GAAG,SAAbA,UAAa,CAACl9C,CAAD,EAAO;AACxBjQ,EAAAA,6CAAA,CAAS,kBAAT,EAA6BiQ,CAA7B,EADwB,CAExB;;AACAi9C,EAAAA,OAAO,GAAGj9C,CAAV;AACD,CAJD;;AAMA,IAAMm9C,UAAU,GAAG,SAAbA,UAAa;AAAA,SAAMF,OAAN;AAAA,CAAnB;;AAEA,IAAMG,aAAa,GAAG,SAAhBA,aAAgB,CAACvqD,MAAD,EAASC,IAAT,EAAeuqD,KAAf,EAAyB;AAC7C,MAAIvqD,IAAI,CAAC81B,IAAL,KAAc,UAAlB,EAA8B;AAC5Bw0B,IAAAA,aAAa,CAACvqD,MAAD,EAASC,IAAI,CAACwqD,MAAd,EAAsB,IAAtB,CAAb;AACAF,IAAAA,aAAa,CAACvqD,MAAD,EAASC,IAAI,CAACyqD,MAAd,EAAsB,KAAtB,CAAb;AACD,GAHD,MAGO;AACL,QAAIzqD,IAAI,CAAC81B,IAAL,KAAc,OAAlB,EAA2B;AACzB,UAAI91B,IAAI,CAACE,EAAL,KAAY,KAAhB,EAAuB;AACrBF,QAAAA,IAAI,CAACE,EAAL,GAAUqqD,KAAK,GAAGxqD,MAAM,CAACG,EAAP,GAAY,QAAf,GAA0BH,MAAM,CAACG,EAAP,GAAY,MAArD;AACAF,QAAAA,IAAI,CAAC8V,KAAL,GAAay0C,KAAb;AACD;AACF;;AAED,QAAIvqD,IAAI,CAACipD,GAAT,EAAc;AACZ,UAAMA,GAAG,GAAG,EAAZ,CADY,CAEZ;;AACA,UAAIjrD,CAAC,GAAG,CAAR;AACA,UAAI0sD,UAAU,GAAG,EAAjB;;AACA,WAAK1sD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgC,IAAI,CAACipD,GAAL,CAAShrD,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpC,YAAIgC,IAAI,CAACipD,GAAL,CAASjrD,CAAT,EAAYuP,IAAZ,KAAqB,SAAzB,EAAoC;AAClC;AACA,cAAMo9C,OAAO,GAAG1mB,KAAK,CAACjkC,IAAI,CAACipD,GAAL,CAASjrD,CAAT,CAAD,CAArB;AACA2sD,UAAAA,OAAO,CAAC1B,GAAR,GAAchlB,KAAK,CAACymB,UAAD,CAAnB;AACAzB,UAAAA,GAAG,CAACzpD,IAAJ,CAASmrD,OAAT;AACAD,UAAAA,UAAU,GAAG,EAAb;AACD,SAND,MAMO;AACLA,UAAAA,UAAU,CAAClrD,IAAX,CAAgBQ,IAAI,CAACipD,GAAL,CAASjrD,CAAT,CAAhB;AACD;AACF,OAfW,CAiBZ;;;AACA,UAAIirD,GAAG,CAAChrD,MAAJ,GAAa,CAAb,IAAkBysD,UAAU,CAACzsD,MAAX,GAAoB,CAA1C,EAA6C;AAC3C,YAAM0sD,QAAO,GAAG;AACd70B,UAAAA,IAAI,EAAE,OADQ;AAEd51B,UAAAA,EAAE,EAAEgqD,kDAAU,EAFA;AAGd38C,UAAAA,IAAI,EAAE,SAHQ;AAId07C,UAAAA,GAAG,EAAEhlB,KAAK,CAACymB,UAAD;AAJI,SAAhB;AAMAzB,QAAAA,GAAG,CAACzpD,IAAJ,CAASykC,KAAK,CAAC0mB,QAAD,CAAd;AACA3qD,QAAAA,IAAI,CAACipD,GAAL,GAAWA,GAAX;AACD;;AAEDjpD,MAAAA,IAAI,CAACipD,GAAL,CAAShqD,OAAT,CAAiB,UAAC2rD,OAAD;AAAA,eAAaN,aAAa,CAACtqD,IAAD,EAAO4qD,OAAP,EAAgB,IAAhB,CAA1B;AAAA,OAAjB;AACD;AACF;AACF,CA5CD;;AA6CA,IAAMC,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzBP,EAAAA,aAAa,CAAC;AAAEpqD,IAAAA,EAAE,EAAE;AAAN,GAAD,EAAiB;AAAEA,IAAAA,EAAE,EAAE,MAAN;AAAc+oD,IAAAA,GAAG,EAAEkB;AAAnB,GAAjB,EAA+C,IAA/C,CAAb;AACA,SAAO;AAAEjqD,IAAAA,EAAE,EAAE,MAAN;AAAc+oD,IAAAA,GAAG,EAAEkB;AAAnB,GAAP,CAFyB,CAGzB;AACD,CAJD;;AAMA,IAAMW,OAAO,GAAG,SAAVA,OAAU,CAACC,IAAD,EAAU;AACxB;AACA,MAAI9B,GAAJ;;AACA,MAAI8B,IAAI,CAAC9B,GAAT,EAAc;AACZA,IAAAA,GAAG,GAAG8B,IAAI,CAAC9B,GAAX;AACD,GAFD,MAEO;AACLA,IAAAA,GAAG,GAAG8B,IAAN;AACD,GAPuB,CAQxB;AACA;AACA;AACA;;;AACA9tD,EAAAA,6CAAA,CAASgsD,GAAT;AACAhmD,EAAAA,KAAK;AAELhG,EAAAA,6CAAA,CAAS,SAAT,EAAoBgsD,GAApB;AAEAA,EAAAA,GAAG,CAAChqD,OAAJ,CAAY,UAACojB,IAAD,EAAU;AACpB,QAAIA,IAAI,CAACyT,IAAL,KAAc,OAAlB,EAA2B;AACzBk1B,MAAAA,QAAQ,CAAC3oC,IAAI,CAACniB,EAAN,EAAUmiB,IAAI,CAAC9U,IAAf,EAAqB8U,IAAI,CAAC4mC,GAA1B,EAA+B5mC,IAAI,CAAC6d,WAApC,EAAiD7d,IAAI,CAACpO,IAAtD,CAAR;AACD;;AACD,QAAIoO,IAAI,CAACyT,IAAL,KAAc,UAAlB,EAA8B;AAC5BxV,MAAAA,WAAW,CAAC+B,IAAI,CAACmoC,MAAL,CAAYtqD,EAAb,EAAiBmiB,IAAI,CAACooC,MAAL,CAAYvqD,EAA7B,EAAiCmiB,IAAI,CAAC6d,WAAtC,CAAX;AACD;AACF,GAPD;AAQD,CAzBD;;AA2BA,IAAM+qB,MAAM,GAAG,SAATA,MAAS,GAAM;AACnB,SAAO;AACL7rC,IAAAA,SAAS,EAAE,EADN;AAEL8rC,IAAAA,MAAM,EAAE,EAFH;AAGLC,IAAAA,SAAS,EAAE;AAHN,GAAP;AAKD,CAND;;AAQA,IAAIA,SAAS,GAAG;AACdC,EAAAA,IAAI,EAAEH,MAAM;AADE,CAAhB;AAIA,IAAII,eAAe,GAAGF,SAAS,CAACC,IAAhC;AAEA,IAAIE,QAAQ,GAAG,CAAf;AACA,IAAIC,MAAM,GAAG,CAAb,EAAgB;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMP,QAAQ,GAAG,SAAXA,QAAW,CAAU9qD,EAAV,EAAcqN,IAAd,EAAoB07C,GAApB,EAAyBtzC,KAAzB,EAAgC1B,IAAhC,EAAsC;AAC5D,MAAI,OAAOo3C,eAAe,CAACH,MAAhB,CAAuBhrD,EAAvB,CAAP,KAAsC,WAA1C,EAAuD;AACrDmrD,IAAAA,eAAe,CAACH,MAAhB,CAAuBhrD,EAAvB,IAA6B;AAC3BA,MAAAA,EAAE,EAAEA,EADuB;AAE3BkoD,MAAAA,YAAY,EAAE,EAFa;AAG3B76C,MAAAA,IAAI,EAAJA,IAH2B;AAI3B07C,MAAAA,GAAG,EAAHA,GAJ2B;AAK3Bh1C,MAAAA,IAAI,EAAJA;AAL2B,KAA7B;AAOD,GARD,MAQO;AACL,QAAI,CAACo3C,eAAe,CAACH,MAAhB,CAAuBhrD,EAAvB,EAA2B+oD,GAAhC,EAAqC;AACnCoC,MAAAA,eAAe,CAACH,MAAhB,CAAuBhrD,EAAvB,EAA2B+oD,GAA3B,GAAiCA,GAAjC;AACD;;AACD,QAAI,CAACoC,eAAe,CAACH,MAAhB,CAAuBhrD,EAAvB,EAA2BqN,IAAhC,EAAsC;AACpC89C,MAAAA,eAAe,CAACH,MAAhB,CAAuBhrD,EAAvB,EAA2BqN,IAA3B,GAAkCA,IAAlC;AACD;AACF;;AACD,MAAIoI,KAAJ,EAAW;AACT1Y,IAAAA,6CAAA,CAAS,eAAT,EAA0BiD,EAA1B,EAA8ByV,KAA9B;AACA,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B61C,cAAc,CAACtrD,EAAD,EAAKyV,KAAK,CAAC5Q,IAAN,EAAL,CAAd;;AAE/B,QAAI,QAAO4Q,KAAP,MAAiB,QAArB,EAA+B;AAC7BA,MAAAA,KAAK,CAAC1W,OAAN,CAAc,UAACwsD,GAAD;AAAA,eAASD,cAAc,CAACtrD,EAAD,EAAKurD,GAAG,CAAC1mD,IAAJ,EAAL,CAAvB;AAAA,OAAd;AACD;AACF;;AAED,MAAIkP,IAAJ,EAAU;AACRo3C,IAAAA,eAAe,CAACH,MAAhB,CAAuBhrD,EAAvB,EAA2B+T,IAA3B,GAAkCA,IAAlC;AACAo3C,IAAAA,eAAe,CAACH,MAAhB,CAAuBhrD,EAAvB,EAA2B+T,IAA3B,CAAgCzT,IAAhC,GAAuCye,mEAAA,CACrCosC,eAAe,CAACH,MAAhB,CAAuBhrD,EAAvB,EAA2B+T,IAA3B,CAAgCzT,IADK,EAErCwe,8CAAA,EAFqC,CAAvC;AAID;AACF,CAjCM;AAmCA,IAAM/b,KAAK,GAAG,SAARA,KAAQ,GAAY;AAC/BkoD,EAAAA,SAAS,GAAG;AACVC,IAAAA,IAAI,EAAEH,MAAM;AADF,GAAZ;AAGAI,EAAAA,eAAe,GAAGF,SAAS,CAACC,IAA5B;AAEAC,EAAAA,eAAe,GAAGF,SAAS,CAACC,IAA5B;AAEAE,EAAAA,QAAQ,GAAG,CAAX;AACAC,EAAAA,MAAM,GAAG,CAAT,CAT+B,CASnB;;AACZjpD,EAAAA,OAAO,GAAG,EAAV;AACD,CAXM;AAaA,IAAMopD,QAAQ,GAAG,SAAXA,QAAW,CAAUxrD,EAAV,EAAc;AACpC,SAAOmrD,eAAe,CAACH,MAAhB,CAAuBhrD,EAAvB,CAAP;AACD,CAFM;AAIA,IAAMyrD,SAAS,GAAG,SAAZA,SAAY,GAAY;AACnC,SAAON,eAAe,CAACH,MAAvB;AACD,CAFM;AAGA,IAAMU,YAAY,GAAG,SAAfA,YAAe,GAAY;AACtC3uD,EAAAA,6CAAA,CAAS,cAAT,EAAyBkuD,SAAzB;AACD,CAFM;AAGA,IAAM9qC,YAAY,GAAG,SAAfA,YAAe,GAAY;AACtC,SAAOgrC,eAAe,CAACjsC,SAAvB;AACD,CAFM;AAIA,IAAMkB,WAAW,GAAG,SAAdA,WAAc,CAAUurC,IAAV,EAAgBC,IAAhB,EAAsBt2C,KAAtB,EAA6B;AACtD,MAAIgL,GAAG,GAAGqrC,IAAV;AACA,MAAIprC,GAAG,GAAGqrC,IAAV;AACA,MAAIjmC,KAAK,GAAG,SAAZ;AACA,MAAIC,KAAK,GAAG,SAAZ;;AACA,MAAI+lC,IAAI,KAAK,KAAb,EAAoB;AAClBP,IAAAA,QAAQ;AACR9qC,IAAAA,GAAG,GAAG,UAAU8qC,QAAhB;AACAzlC,IAAAA,KAAK,GAAG,OAAR;AACD;;AACD,MAAIimC,IAAI,KAAK,KAAb,EAAoB;AAClBP,IAAAA,MAAM;AACN9qC,IAAAA,GAAG,GAAG,QAAQ6qC,QAAd;AACAxlC,IAAAA,KAAK,GAAG,KAAR;AACD;;AACDklC,EAAAA,QAAQ,CAACxqC,GAAD,EAAMqF,KAAN,CAAR;AACAmlC,EAAAA,QAAQ,CAACvqC,GAAD,EAAMqF,KAAN,CAAR;AACAulC,EAAAA,eAAe,CAACjsC,SAAhB,CAA0B5f,IAA1B,CAA+B;AAC7BghB,IAAAA,GAAG,EAAHA,GAD6B;AAE7BC,IAAAA,GAAG,EAAHA,GAF6B;AAG7BjL,IAAAA,KAAK,EAAEyJ,mEAAA,CAAoBzJ,KAApB,EAA2BwJ,8CAAA,EAA3B;AAHsB,GAA/B;AAKD,CAtBM;;AAwBP,IAAMwsC,cAAc,GAAG,SAAjBA,cAAiB,CAAUtrD,EAAV,EAAc6rD,MAAd,EAAsB;AAC3C,MAAMC,QAAQ,GAAGX,eAAe,CAACH,MAAhB,CAAuBhrD,EAAvB,CAAjB;AACA,MAAIyV,KAAK,GAAGo2C,MAAZ;;AACA,MAAIp2C,KAAK,CAAC,CAAD,CAAL,KAAa,GAAjB,EAAsB;AACpBA,IAAAA,KAAK,GAAGA,KAAK,CAAC2L,MAAN,CAAa,CAAb,EAAgBvc,IAAhB,EAAR;AACD;;AACDinD,EAAAA,QAAQ,CAAC5D,YAAT,CAAsB5oD,IAAtB,CAA2Byf,mEAAA,CAAoBtJ,KAApB,EAA2BqJ,8CAAA,EAA3B,CAA3B;AACD,CAPD;;AASO,IAAMqC,YAAY,GAAG,SAAfA,YAAe,CAAU9gB,KAAV,EAAiB;AAC3C,MAAIA,KAAK,CAAC4gB,SAAN,CAAgB,CAAhB,EAAmB,CAAnB,MAA0B,GAA9B,EAAmC;AACjC,WAAO5gB,KAAK,CAAC+gB,MAAN,CAAa,CAAb,EAAgBvc,IAAhB,EAAP;AACD,GAFD,MAEO;AACL,WAAOxE,KAAK,CAACwE,IAAN,EAAP;AACD;AACF,CANM;AAQA,IAAM6d,QAAQ,GAAG;AACtBC,EAAAA,IAAI,EAAE,CADgB;AAEtBC,EAAAA,WAAW,EAAE;AAFS,CAAjB;AAKP,IAAImpC,UAAU,GAAG,CAAjB;;AACA,IAAMC,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzBD,EAAAA,UAAU;AACV,SAAO,gBAAgBA,UAAvB;AACD,CAHD;;AAKA,IAAI3pD,OAAO,GAAG,EAAd;;AAEA,IAAM8d,UAAU,GAAG,SAAbA,UAAa;AAAA,SAAM9d,OAAN;AAAA,CAAnB;;AAEA,IAAI2hB,SAAS,GAAG,IAAhB;;AACA,IAAMC,YAAY,GAAG,SAAfA,YAAe;AAAA,SAAMD,SAAN;AAAA,CAArB;;AACA,IAAME,YAAY,GAAG,SAAfA,YAAe,CAAC7X,GAAD,EAAS;AAC5B2X,EAAAA,SAAS,GAAG3X,GAAZ;AACD,CAFD;;AAIO,IAAMyW,YAAY,GAAG;AAC1BC,EAAAA,WAAW,EAAE,CADa;AAE1BC,EAAAA,SAAS,EAAE,CAFe;AAG1BC,EAAAA,WAAW,EAAE,CAHa;AAI1BC,EAAAA,UAAU,EAAE;AAJc,CAArB;;AAOP,IAAMgpC,SAAS,GAAG,SAAZA,SAAY,CAAC70C,GAAD;AAAA,SAAUA,GAAG,IAAIA,GAAG,CAAC,CAAD,CAAH,KAAW,GAAlB,GAAwBA,GAAG,CAACgK,MAAJ,CAAW,CAAX,EAAcvc,IAAd,EAAxB,GAA+CuS,GAAG,CAACvS,IAAJ,EAAzD;AAAA,CAAlB;;AAEA,iEAAe;AACbwa,EAAAA,cAAc,EAAdA,cADa;AAEb1gB,EAAAA,SAAS,EAAE;AAAA,WAAMmgB,8CAAA,GAAsBtU,KAA5B;AAAA,GAFE;AAGbsgD,EAAAA,QAAQ,EAARA,QAHa;AAIb/nD,EAAAA,KAAK,EAALA,KAJa;AAKbyoD,EAAAA,QAAQ,EAARA,QALa;AAMbC,EAAAA,SAAS,EAATA,SANa;AAObtrC,EAAAA,YAAY,EAAZA,YAPa;AAQbD,EAAAA,UAAU,EAAVA,UARa;AASb8D,EAAAA,YAAY,EAAZA,YATa;AAUb5D,EAAAA,WAAW,EAAXA,WAVa;AAWb4rC,EAAAA,YAAY,EAAZA,YAXa;AAYb/nC,EAAAA,YAAY,EAAZA,YAZa;AAab;AACA9C,EAAAA,YAAY,EAAZA,YAda;AAebuB,EAAAA,QAAQ,EAARA,QAfa;AAgBbG,EAAAA,YAAY,EAAZA,YAhBa;AAiBb6oC,EAAAA,YAAY,EAAZA,YAjBa;AAkBbvB,EAAAA,UAAU,EAAVA,UAlBa;AAmBbD,EAAAA,UAAU,EAAVA,UAnBa;AAoBbS,EAAAA,YAAY,EAAZA,YApBa;AAqBbC,EAAAA,OAAO,EAAPA,OArBa;AAsBbqB,EAAAA,SAAS,EAATA;AAtBa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAM3tD,IAAI,GAAG,EAAb;AACO,IAAM8nB,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMxnB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYwnB,GAAZ,CAAb;;AACA,OAAK,IAAIvoB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,IAAI,CAACd,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpCQ,IAAAA,IAAI,CAACO,IAAI,CAACf,CAAD,CAAL,CAAJ,GAAgBuoB,GAAG,CAACxnB,IAAI,CAACf,CAAD,CAAL,CAAnB;AACD;AACF,CALM;AAOP,IAAIouD,MAAM,GAAG,EAAb;AAEA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMhsC,UAAU,GAAG,SAAbA,UAAa,CAAU5f,IAAV,EAAgB;AACxCvD,EAAAA,8CAAA,CAAU,oBAAV;AACA6qD,EAAAA,sDAAA;AACA,MAAMzjC,MAAM,GAAG3Z,oEAAf;AACA2Z,EAAAA,MAAM,CAACM,EAAP,GAAYmjC,gDAAZ,CAJwC,CAMxC;;AACAzjC,EAAAA,MAAM,CAACxX,KAAP,CAAarM,IAAb;AACA,SAAOsnD,2DAAA,EAAP;AACD,CATM;;AAWP,IAAMuE,SAAS,GAAG,SAAZA,SAAY,CAACvnC,CAAD,EAAI/kB,MAAJ,EAAYC,IAAZ,EAAkBssD,OAAlB,EAA8B;AAC9C;AACA,MAAItsD,IAAI,CAACE,EAAL,KAAY,MAAhB,EAAwB;AACtB,QAAI4C,KAAK,GAAG,MAAZ;;AACA,QAAI9C,IAAI,CAAC8V,KAAL,KAAe,IAAnB,EAAyB;AACvBhT,MAAAA,KAAK,GAAG,OAAR;AACD;;AACD,QAAI9C,IAAI,CAAC8V,KAAL,KAAe,KAAnB,EAA0B;AACxBhT,MAAAA,KAAK,GAAG,KAAR;AACD;;AACD,QAAI9C,IAAI,CAACuN,IAAL,KAAc,SAAlB,EAA6B;AAC3BzK,MAAAA,KAAK,GAAG9C,IAAI,CAACuN,IAAb;AACD;;AAED,QAAI,CAAC6+C,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAX,EAAsB;AACpBksD,MAAAA,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,GAAkB;AAChBA,QAAAA,EAAE,EAAEF,IAAI,CAACE,EADO;AAEhB4C,QAAAA,KAAK,EAALA,KAFgB;AAGhBo9B,QAAAA,WAAW,EAAEjhB,mEAAA,CAAoBjf,IAAI,CAACE,EAAzB,EAA6BrB,kDAAS,EAAtC,CAHG;AAIhByD,QAAAA,OAAO,EAAE;AAJO,OAAlB;AAMD,KAnBqB,CAqBtB;;;AACA,QAAItC,IAAI,CAACkgC,WAAT,EAAsB;AACpB,UAAIz7B,KAAK,CAACC,OAAN,CAAc0nD,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBggC,WAA9B,CAAJ,EAAgD;AAC9C;AACAksB,QAAAA,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgB4C,KAAhB,GAAwB,eAAxB;AACAspD,QAAAA,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBggC,WAAhB,CAA4B1gC,IAA5B,CAAiCQ,IAAI,CAACkgC,WAAtC;AACD,OAJD,MAIO;AACL,YAAIksB,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBggC,WAAhB,CAA4BjiC,MAA5B,GAAqC,CAAzC,EAA4C;AAC1C;AACAmuD,UAAAA,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgB4C,KAAhB,GAAwB,eAAxB;;AACA,cAAIspD,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBggC,WAAhB,KAAgClgC,IAAI,CAACE,EAAzC,EAA6C;AAC3C;AACAksD,YAAAA,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBggC,WAAhB,GAA8B,CAAClgC,IAAI,CAACkgC,WAAN,CAA9B;AACD,WAHD,MAGO;AACLksB,YAAAA,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBggC,WAAhB,GAA8B,CAACksB,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBggC,WAAjB,EAA8BlgC,IAAI,CAACkgC,WAAnC,CAA9B;AACD;AACF,SATD,MASO;AACLksB,UAAAA,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgB4C,KAAhB,GAAwB,MAAxB;AACAspD,UAAAA,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBggC,WAAhB,GAA8BlgC,IAAI,CAACkgC,WAAnC;AACD;AACF;AACF,KA1CqB,CA4CtB;AACA;AAEA;;;AACA,QAAI,CAACksB,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBqN,IAAjB,IAAyBvN,IAAI,CAACipD,GAAlC,EAAuC;AACrChsD,MAAAA,6CAAA,CAAS,sBAAT,EAAiC+C,IAAI,CAACE,EAAtC,EAA0CqsD,MAAM,CAACvsD,IAAD,CAAhD;AACAosD,MAAAA,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBqN,IAAhB,GAAuB,OAAvB;AACA6+C,MAAAA,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBoM,GAAhB,GAAsBigD,MAAM,CAACvsD,IAAD,CAA5B;AACAosD,MAAAA,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgB4C,KAAhB,GAAwB9C,IAAI,CAACuN,IAAL,KAAc,SAAd,GAA0B,SAA1B,GAAsC,kBAA9D;AACA6+C,MAAAA,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBoC,OAAhB,GACE8pD,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBoC,OAAhB,GACA,GADA,IAECgqD,OAAO,GAAG,+CAAH,GAAqD,sBAF7D,CADF;AAID;;AAED,QAAME,QAAQ,GAAG;AACf7rD,MAAAA,UAAU,EAAE,EADG;AAEfmC,MAAAA,KAAK,EAAEspD,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgB4C,KAFR;AAGfpC,MAAAA,SAAS,EAAE0rD,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBggC,WAHZ;AAIf;AACA;AACA;AACA59B,MAAAA,OAAO,EAAE8pD,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBoC,OAPV;AAOmB;AAClCV,MAAAA,KAAK,EAAE,EARQ;AAQJ;AACX1B,MAAAA,EAAE,EAAEF,IAAI,CAACE,EATM;AAUfoM,MAAAA,GAAG,EAAE8/C,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBoM,GAVN;AAWfgI,MAAAA,KAAK,EAAE,WAAWtU,IAAI,CAACE,EAAhB,GAAqB,GAArB,GAA2BmlB,GAXnB;AAYf9X,MAAAA,IAAI,EAAE6+C,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBqN,IAZP;AAafhM,MAAAA,OAAO,EAAE,EAbM,CAaF;;AAbE,KAAjB;;AAgBA,QAAIvB,IAAI,CAACiU,IAAT,EAAe;AACb;AACA,UAAMw4C,QAAQ,GAAG;AACf9rD,QAAAA,UAAU,EAAE,EADG;AAEfmC,QAAAA,KAAK,EAAE,MAFQ;AAGfpC,QAAAA,SAAS,EAAEV,IAAI,CAACiU,IAAL,CAAUzT,IAHN;AAIf8B,QAAAA,OAAO,EAAE,mBAJM;AAIe;AAC9BV,QAAAA,KAAK,EAAE,EALQ;AAKJ;AACX1B,QAAAA,EAAE,EAAEF,IAAI,CAACE,EAAL,GAAU,WAAV,GAAwBmlB,GANb;AAOf/Q,QAAAA,KAAK,EAAE,WAAWtU,IAAI,CAACE,EAAhB,GAAqB,WAArB,GAAmCmlB,GAP3B;AAQf9X,QAAAA,IAAI,EAAE6+C,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBqN,IARP;AASfhM,QAAAA,OAAO,EAAE,EATM,CASF;;AATE,OAAjB;AAWA,UAAMmrD,SAAS,GAAG;AAChB/rD,QAAAA,UAAU,EAAE,EADI;AAEhBmC,QAAAA,KAAK,EAAE,WAFS;AAGhBpC,QAAAA,SAAS,EAAEV,IAAI,CAACiU,IAAL,CAAUzT,IAHL;AAIhB8B,QAAAA,OAAO,EAAE8pD,MAAM,CAACpsD,IAAI,CAACE,EAAN,CAAN,CAAgBoC,OAJT;AAIkB;AAClCV,QAAAA,KAAK,EAAE,EALS;AAKL;AACX1B,QAAAA,EAAE,EAAEF,IAAI,CAACE,EAAL,GAAU,YANE;AAOhBoU,QAAAA,KAAK,EAAE,WAAWtU,IAAI,CAACE,EAAhB,GAAqB,aAArB,GAAqCmlB,GAP5B;AAQhB9X,QAAAA,IAAI,EAAE,OARU;AAShBhM,QAAAA,OAAO,EAAE,CATO,CASJ;;AATI,OAAlB;AAWA8jB,MAAAA,GAAG;AAEHP,MAAAA,CAAC,CAAC/X,OAAF,CAAU/M,IAAI,CAACE,EAAL,GAAU,YAApB,EAAkCwsD,SAAlC;AAEA5nC,MAAAA,CAAC,CAAC/X,OAAF,CAAU0/C,QAAQ,CAACvsD,EAAnB,EAAuBusD,QAAvB;AACA3nC,MAAAA,CAAC,CAAC/X,OAAF,CAAU/M,IAAI,CAACE,EAAf,EAAmBssD,QAAnB;AAEA1nC,MAAAA,CAAC,CAAC9X,SAAF,CAAYhN,IAAI,CAACE,EAAjB,EAAqBF,IAAI,CAACE,EAAL,GAAU,YAA/B;AACA4kB,MAAAA,CAAC,CAAC9X,SAAF,CAAYy/C,QAAQ,CAACvsD,EAArB,EAAyBF,IAAI,CAACE,EAAL,GAAU,YAAnC;AAEA,UAAIu1C,IAAI,GAAGz1C,IAAI,CAACE,EAAhB;AACA,UAAI81C,EAAE,GAAGyW,QAAQ,CAACvsD,EAAlB;;AAEA,UAAIF,IAAI,CAACiU,IAAL,CAAU04C,QAAV,KAAuB,SAA3B,EAAsC;AACpClX,QAAAA,IAAI,GAAGgX,QAAQ,CAACvsD,EAAhB;AACA81C,QAAAA,EAAE,GAAGh2C,IAAI,CAACE,EAAV;AACD;;AACD4kB,MAAAA,CAAC,CAAC7S,OAAF,CAAUwjC,IAAV,EAAgBO,EAAhB,EAAoB;AAClBvwB,QAAAA,SAAS,EAAE,MADO;AAElBmnC,QAAAA,SAAS,EAAE,EAFO;AAGlBhrD,QAAAA,KAAK,EAAE,WAHW;AAIlBjB,QAAAA,UAAU,EAAE,EAJM;AAKlB2B,QAAAA,OAAO,EAAE,sBALS;AAMlB2jB,QAAAA,cAAc,EAAE,YANE;AAOlBC,QAAAA,QAAQ,EAAE,GAPQ;AAQlBC,QAAAA,SAAS,EAAE,MARO;AASlB7b,QAAAA,SAAS,EAAE;AATO,OAApB;AAWD,KApDD,MAoDO;AACLwa,MAAAA,CAAC,CAAC/X,OAAF,CAAU/M,IAAI,CAACE,EAAf,EAAmBssD,QAAnB;AACD;AACF;;AAED,MAAIzsD,MAAJ,EAAY;AACV,QAAIA,MAAM,CAACG,EAAP,KAAc,MAAlB,EAA0B;AACxBjD,MAAAA,8CAAA,CAAU,eAAV,EAA2B+C,IAAI,CAACE,EAAhC,EAAoC,6BAApC,EAAmEH,MAAM,CAACG,EAA1E;AACA4kB,MAAAA,CAAC,CAAC9X,SAAF,CAAYhN,IAAI,CAACE,EAAjB,EAAqBH,MAAM,CAACG,EAA5B;AACD;AACF;;AACD,MAAIF,IAAI,CAACipD,GAAT,EAAc;AACZhsD,IAAAA,8CAAA,CAAU,wBAAV;AACA4vD,IAAAA,QAAQ,CAAC/nC,CAAD,EAAI9kB,IAAJ,EAAUA,IAAI,CAACipD,GAAf,EAAoB,CAACqD,OAArB,CAAR;AACD;AACF,CAhJD;;AAiJA,IAAIjnC,GAAG,GAAG,CAAV;;AACA,IAAMwnC,QAAQ,GAAG,SAAXA,QAAW,CAAC/nC,CAAD,EAAI/kB,MAAJ,EAAYkpD,GAAZ,EAAiBqD,OAAjB,EAA6B;AAC5C;AACArvD,EAAAA,8CAAA,CAAU,OAAV,EAAmBgsD,GAAnB;AACAA,EAAAA,GAAG,CAAChqD,OAAJ,CAAY,UAACojB,IAAD,EAAU;AACpB,QAAIA,IAAI,CAACyT,IAAL,KAAc,OAAd,IAAyBzT,IAAI,CAACyT,IAAL,KAAc,SAA3C,EAAsD;AACpDu2B,MAAAA,SAAS,CAACvnC,CAAD,EAAI/kB,MAAJ,EAAYsiB,IAAZ,EAAkBiqC,OAAlB,CAAT;AACD,KAFD,MAEO,IAAIjqC,IAAI,CAACyT,IAAL,KAAc,UAAlB,EAA8B;AACnCu2B,MAAAA,SAAS,CAACvnC,CAAD,EAAI/kB,MAAJ,EAAYsiB,IAAI,CAACmoC,MAAjB,EAAyB8B,OAAzB,CAAT;AACAD,MAAAA,SAAS,CAACvnC,CAAD,EAAI/kB,MAAJ,EAAYsiB,IAAI,CAACooC,MAAjB,EAAyB6B,OAAzB,CAAT;AACA,UAAM9mC,QAAQ,GAAG;AACftlB,QAAAA,EAAE,EAAE,SAASmlB,GADE;AAEfI,QAAAA,SAAS,EAAE,QAFI;AAGfre,QAAAA,YAAY,EAAE,YAHC;AAIfxF,QAAAA,KAAK,EAAE,WAJQ;AAKfjB,QAAAA,UAAU,EAAE,EALG;AAMfJ,QAAAA,KAAK,EAAE8hB,IAAI,CAAC6d,WANG;AAOfja,QAAAA,cAAc,EAAE,YAPD;AAQfC,QAAAA,QAAQ,EAAE,GARK;AASfC,QAAAA,SAAS,EAAE,MATI;AAUf7b,QAAAA,SAAS,EAAE,QAVI;AAWfhI,QAAAA,OAAO,EAAE;AAXM,OAAjB;AAaA,UAAIwqD,OAAO,GAAGzqC,IAAI,CAACmoC,MAAL,CAAYtqD,EAA1B;AACA,UAAI6sD,KAAK,GAAG1qC,IAAI,CAACooC,MAAL,CAAYvqD,EAAxB;AAEA4kB,MAAAA,CAAC,CAAC7S,OAAF,CAAU66C,OAAV,EAAmBC,KAAnB,EAA0BvnC,QAA1B,EAAoCH,GAApC;AACAA,MAAAA,GAAG;AACJ;AACF,GAzBD;AA0BD,CA7BD;;AA8BA,IAAMknC,MAAM,GAAG,SAATA,MAAS,CAAC//C,KAAD,EAAQwgD,UAAR,EAAuB;AACpC,MAAI1gD,GAAG,GAAG0gD,UAAU,IAAI,IAAxB;;AACA,MAAIxgD,KAAK,CAACy8C,GAAV,EAAe;AACb,SAAK,IAAIjrD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwO,KAAK,CAACy8C,GAAN,CAAUhrD,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;AACzC,UAAMgC,IAAI,GAAGwM,KAAK,CAACy8C,GAAN,CAAUjrD,CAAV,CAAb;;AACA,UAAIgC,IAAI,CAAC81B,IAAL,KAAc,KAAlB,EAAyB;AACvBxpB,QAAAA,GAAG,GAAGtM,IAAI,CAAC0G,KAAX;AACD;AACF;AACF;;AACD,SAAO4F,GAAP;AACD,CAXD;AAYA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAM0a,IAAI,GAAG,SAAPA,IAAO,CAAUxmB,IAAV,EAAgBN,EAAhB,EAAoB;AACtCjD,EAAAA,6CAAA,CAAS,4BAAT,EAAuCiD,EAAvC;AACA4nD,EAAAA,sDAAA;AACAsE,EAAAA,MAAM,GAAG,EAAT;AACA,MAAM/nC,MAAM,GAAG3Z,oEAAf;AACA2Z,EAAAA,MAAM,CAACM,EAAP,GAAYmjC,gDAAZ,CALsC,CAOtC;;AACAzjC,EAAAA,MAAM,CAACxX,KAAP,CAAarM,IAAb,EARsC,CAUtC;;AACA,MAAI8L,GAAG,GAAGw7C,6DAAA,EAAV;;AACA,MAAI,OAAOx7C,GAAP,KAAe,WAAnB,EAAgC;AAC9BA,IAAAA,GAAG,GAAG,IAAN;AACD;;AAED,MAAM9N,IAAI,GAAGK,kDAAS,GAAG6L,KAAzB;AACA,MAAMuO,WAAW,GAAGza,IAAI,CAACya,WAAL,IAAoB,EAAxC;AACA,MAAMC,WAAW,GAAG1a,IAAI,CAAC0a,WAAL,IAAoB,EAAxC;AAEAjc,EAAAA,6CAAA,CAAS6qD,6DAAA,EAAT;AACAA,EAAAA,wDAAA,CAAgBA,6DAAA,EAAhB;AACA7qD,EAAAA,6CAAA,CAAS6qD,6DAAA,EAAT,EAtBsC,CAwBtC;;AACA,MAAMhjC,CAAC,GAAG,IAAI3Z,uDAAJ,CAAmB;AAC3BgI,IAAAA,UAAU,EAAE,IADe;AAE3BC,IAAAA,QAAQ,EAAE;AAFiB,GAAnB,EAIPC,QAJO,CAIE;AACR9G,IAAAA,OAAO,EAAEggD,MAAM,CAACzE,6DAAA,EAAD,CADP;AAERx0C,IAAAA,OAAO,EAAE2F,WAFD;AAGR1F,IAAAA,OAAO,EAAE2F,WAHD;AAIR1F,IAAAA,OAAO,EAAE,CAJD;AAKRC,IAAAA,OAAO,EAAE;AALD,GAJF,EAWPC,mBAXO,CAWa,YAAY;AAC/B,WAAO,EAAP;AACD,GAbO,CAAV;AAeA24C,EAAAA,SAAS,CAACvnC,CAAD,EAAIlkB,SAAJ,EAAeknD,6DAAA,EAAf,EAAuC,IAAvC,CAAT,CAxCsC,CA0CtC;;AACA,MAAMxkC,GAAG,GAAG1jB,0CAAM,iBAASM,EAAT,SAAlB,CA3CsC,CA6CtC;;AACA,MAAMsY,OAAO,GAAG5Y,0CAAM,CAAC,MAAMM,EAAN,GAAW,IAAZ,CAAtB;AACAsN,EAAAA,+DAAM,CAACgL,OAAD,EAAUsM,CAAV,EAAa,CAAC,MAAD,CAAb,EAAuB,cAAvB,EAAuC5kB,EAAvC,CAAN;AAEA,MAAMqB,OAAO,GAAG,CAAhB;AAEA,MAAMknB,MAAM,GAAGnF,GAAG,CAACtjB,IAAJ,GAAWc,OAAX,EAAf;AAEA,MAAMO,KAAK,GAAGonB,MAAM,CAACpnB,KAAP,GAAeE,OAAO,GAAG,CAAvC;AACA,MAAMD,MAAM,GAAGmnB,MAAM,CAACnnB,MAAP,GAAgBC,OAAO,GAAG,CAAzC,CAtDsC,CAwDtC;;AACA+hB,EAAAA,GAAG,CAACjjB,IAAJ,CAAS,OAAT,EAAkB,cAAlB;AAEA,MAAMymB,SAAS,GAAGxD,GAAG,CAACtjB,IAAJ,GAAWc,OAAX,EAAlB;AAEA4jB,EAAAA,wDAAgB,CAACpB,GAAD,EAAMhiB,MAAN,EAAcD,KAAK,GAAG,IAAtB,EAA4B7C,IAAI,CAAC2a,WAAjC,CAAhB,CA7DsC,CA+DtC;;AACA,MAAM4N,IAAI,aAAMD,SAAS,CAAC/kB,CAAV,GAAcR,OAApB,cAA+BulB,SAAS,CAAC9kB,CAAV,GAAcT,OAA7C,cAAwDF,KAAxD,cAAiEC,MAAjE,CAAV;AACArE,EAAAA,8CAAA,mBAAqB8pB,IAArB;AACAzD,EAAAA,GAAG,CAACjjB,IAAJ,CAAS,SAAT,EAAoB0mB,IAApB,EAlEsC,CAoEtC;AACA;;AACA,MAAMG,MAAM,GAAGxjB,QAAQ,CAACyjB,gBAAT,CAA0B,UAAUjnB,EAAV,GAAe,sBAAzC,CAAf;;AACA,OAAK,IAAIknB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,MAAM,CAACjpB,MAA3B,EAAmCmpB,CAAC,EAApC,EAAwC;AACtC,QAAM7mB,KAAK,GAAG2mB,MAAM,CAACE,CAAD,CAApB,CADsC,CAGtC;;AACA,QAAMC,GAAG,GAAG9mB,KAAK,CAACO,OAAN,EAAZ;AAEA,QAAMhB,IAAI,GAAG4D,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,MAAvD,CAAb;AACA7D,IAAAA,IAAI,CAACwE,YAAL,CAAkB,IAAlB,EAAwB,CAAxB;AACAxE,IAAAA,IAAI,CAACwE,YAAL,CAAkB,IAAlB,EAAwB,CAAxB;AACAxE,IAAAA,IAAI,CAACwE,YAAL,CAAkB,OAAlB,EAA2B+iB,GAAG,CAAChmB,KAA/B;AACAvB,IAAAA,IAAI,CAACwE,YAAL,CAAkB,QAAlB,EAA4B+iB,GAAG,CAAC/lB,MAAhC;AAEAf,IAAAA,KAAK,CAAC+mB,YAAN,CAAmBxnB,IAAnB,EAAyBS,KAAK,CAACgnB,UAA/B,EAZsC,CAatC;AACD;AACF,CAtFM;AAwFP,iEAAe;AACbjB,EAAAA,OAAO,EAAPA,OADa;AAEblG,EAAAA,UAAU,EAAVA,UAFa;AAGb4G,EAAAA,IAAI,EAAJA;AAHa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/TA;AACA;AACA;AACA;AACA;AACA;CAEA;;AACA;AACA;AACA;AAEA3C,2DAAA,GAAYyjC,gDAAZ,EAEA;;AACA,IAAItpD,IAAJ;AAEA,IAAMyuD,iBAAiB,GAAG,EAA1B;AAEO,IAAM3mC,OAAO,GAAG,SAAVA,OAAU,GAAY,CAAE,CAA9B;AAEP;AACA;AACA;AACA;AACA;;AACA,IAAMlb,aAAa,GAAG,SAAhBA,aAAgB,CAAUvI,IAAV,EAAgB;AACpCA,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc,eAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGmC,MATH,CASU,MATV,EAUGnC,IAVH,CAUQ,GAVR,EAUa,2BAVb;AAWD,CAZD;AAcA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAM2mB,IAAI,GAAG,SAAPA,IAAO,CAAUxmB,IAAV,EAAgBN,EAAhB,EAAoB;AACtC1B,EAAAA,IAAI,GAAGK,kDAAS,GAAG6L,KAAnB;AACA2Z,EAAAA,iEAAA;AACAA,EAAAA,8DAAA,CAAa7jB,IAAb;AACAvD,EAAAA,8CAAA,CAAU,uBAAuBuD,IAAjC,EAJsC,CAMtC;;AACA,MAAMimB,OAAO,GAAG7mB,0CAAM,gBAASM,EAAT,QAAtB;AACAkL,EAAAA,aAAa,CAACqb,OAAD,CAAb,CARsC,CAUtC;;AACA,MAAMpd,KAAK,GAAG,IAAI8B,uDAAJ,CAAmB;AAC/BgI,IAAAA,UAAU,EAAE,IADmB;AAE/BC,IAAAA,QAAQ,EAAE,IAFqB;AAG/B;AACA7G,IAAAA,OAAO,EAAE,IAJsB,CAK/B;;AAL+B,GAAnB,CAAd,CAXsC,CAmBtC;;AACAlD,EAAAA,KAAK,CAACqK,mBAAN,CAA0B,YAAY;AACpC,WAAO,EAAP;AACD,GAFD;AAIA,MAAMy2C,OAAO,GAAGrC,2DAAA,EAAhB;AACAoF,EAAAA,SAAS,CAAC/C,OAAD,EAAU1jC,OAAV,EAAmB7lB,SAAnB,EAA8B,KAA9B,CAAT;AAEA,MAAMW,OAAO,GAAG/C,IAAI,CAAC+C,OAArB;AACA,MAAMknB,MAAM,GAAGhC,OAAO,CAACzmB,IAAR,GAAec,OAAf,EAAf;AAEA,MAAMO,KAAK,GAAGonB,MAAM,CAACpnB,KAAP,GAAeE,OAAO,GAAG,CAAvC;AACA,MAAMD,MAAM,GAAGmnB,MAAM,CAACnnB,MAAP,GAAgBC,OAAO,GAAG,CAAzC,CA/BsC,CAiCtC;;AACA,MAAM4rD,QAAQ,GAAG9rD,KAAK,GAAG,IAAzB;AACAqjB,EAAAA,wDAAgB,CAAC+B,OAAD,EAAUnlB,MAAV,EAAkB6rD,QAAlB,EAA4B3uD,IAAI,CAAC2a,WAAjC,CAAhB;AAEAsN,EAAAA,OAAO,CAACpmB,IAAR,CACE,SADF,EAEE,UAAGooB,MAAM,CAAC1mB,CAAP,GAAWvD,IAAI,CAAC+C,OAAnB,eAA+BknB,MAAM,CAACzmB,CAAP,GAAWxD,IAAI,CAAC+C,OAA/C,SAA4DF,KAA5D,GAAoE,GAApE,GAA0EC,MAF5E;AAID,CAzCM;;AA0CP,IAAM8rD,aAAa,GAAG,SAAhBA,aAAgB,CAAC5sD,IAAD,EAAU;AAC9B,SAAOA,IAAI,GAAGA,IAAI,CAACvC,MAAL,GAAcO,IAAI,CAAC6e,cAAtB,GAAuC,CAAlD;AACD,CAFD;;AAIA,IAAM6vC,SAAS,GAAG,SAAZA,SAAY,CAACjE,GAAD,EAAMxiC,OAAN,EAAe4iC,QAAf,EAAyBZ,MAAzB,EAAoC;AACpD;AACA,MAAMp/C,KAAK,GAAG,IAAI8B,uDAAJ,CAAmB;AAC/BiI,IAAAA,QAAQ,EAAE,IADqB;AAE/BD,IAAAA,UAAU,EAAE;AAFmB,GAAnB,CAAd;AAKA,MAAInV,CAAJ;AACA,MAAIqvD,WAAW,GAAG,IAAlB;;AACA,OAAKrvD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGirD,GAAG,CAAChrD,MAApB,EAA4BD,CAAC,EAA7B,EAAiC;AAC/B,QAAIirD,GAAG,CAACjrD,CAAD,CAAH,CAAO83B,IAAP,KAAgB,UAApB,EAAgC;AAC9Bu3B,MAAAA,WAAW,GAAG,KAAd;AACA;AACD;AACF,GAdmD,CAgBpD;;;AACA,MAAIhE,QAAJ,EACEhgD,KAAK,CAACgK,QAAN,CAAe;AACb9G,IAAAA,OAAO,EAAE,IADI;AAEb4G,IAAAA,UAAU,EAAE,IAFC;AAGbC,IAAAA,QAAQ,EAAE,IAHG;AAIb;AACAk6C,IAAAA,MAAM,EAAE,YALK;AAMb/5C,IAAAA,OAAO,EAAE85C,WAAW,GAAG,CAAH,GAAO7uD,IAAI,CAAC+e,gBANnB;AAObgwC,IAAAA,OAAO,EAAEF,WAAW,GAAG,CAAH,GAAO,EAPd;AAQb3mC,IAAAA,YAAY,EAAE,IARD,CASb;AACA;;AAVa,GAAf,EADF,KAaK;AACHrd,IAAAA,KAAK,CAACgK,QAAN,CAAe;AACb9G,MAAAA,OAAO,EAAE,IADI;AAEb4G,MAAAA,UAAU,EAAE,IAFC;AAGbC,MAAAA,QAAQ,EAAE,IAHG;AAIb;AACA;AACA;AACAG,MAAAA,OAAO,EAAE85C,WAAW,GAAG,CAAH,GAAO7uD,IAAI,CAAC+e,gBAPnB;AAQbgwC,MAAAA,OAAO,EAAEF,WAAW,GAAG,CAAH,GAAO,EARd;AASbC,MAAAA,MAAM,EAAE,YATK;AAUb;AACA5mC,MAAAA,YAAY,EAAE;AAXD,KAAf;AAaD,GA5CmD,CA8CpD;;AACArd,EAAAA,KAAK,CAACqK,mBAAN,CAA0B,YAAY;AACpC,WAAO,EAAP;AACD,GAFD;AAIAo0C,EAAAA,wDAAA,CAAgBmB,GAAhB;AACA,MAAMiC,MAAM,GAAGpD,0DAAA,EAAf;AACA,MAAM1oC,SAAS,GAAG0oC,6DAAA,EAAlB;AAEA,MAAM/oD,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYmsD,MAAZ,CAAb;AAEA,MAAIX,KAAK,GAAG,IAAZ;;AAEA,OAAK,IAAIvsD,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGe,IAAI,CAACd,MAAzB,EAAiCD,EAAC,EAAlC,EAAsC;AACpC,QAAMkqD,QAAQ,GAAGgD,MAAM,CAACnsD,IAAI,CAACf,EAAD,CAAL,CAAvB;;AAEA,QAAIqrD,QAAJ,EAAc;AACZnB,MAAAA,QAAQ,CAACmB,QAAT,GAAoBA,QAApB;AACD;;AAED,QAAIrpD,IAAI,SAAR;;AACA,QAAIkoD,QAAQ,CAACe,GAAb,EAAkB;AAChB,UAAIuE,GAAG,GAAG/mC,OAAO,CAACjkB,MAAR,CAAe,GAAf,EAAoBnC,IAApB,CAAyB,IAAzB,EAA+B6nD,QAAQ,CAAChoD,EAAxC,EAA4CG,IAA5C,CAAiD,OAAjD,EAA0D,YAA1D,CAAV;AACAL,MAAAA,IAAI,GAAGktD,SAAS,CAAChF,QAAQ,CAACe,GAAV,EAAeuE,GAAf,EAAoBtF,QAAQ,CAAChoD,EAA7B,EAAiC,CAACuoD,MAAlC,CAAhB;;AAEA,UAAI8B,KAAJ,EAAW;AACT;AACAiD,QAAAA,GAAG,GAAGhF,uDAAc,CAACgF,GAAD,EAAMtF,QAAN,EAAgBO,MAAhB,CAApB;AACA,YAAIgF,SAAS,GAAGD,GAAG,CAACxtD,IAAJ,GAAWc,OAAX,EAAhB;AACAd,QAAAA,IAAI,CAACqB,KAAL,GAAaosD,SAAS,CAACpsD,KAAvB;AACArB,QAAAA,IAAI,CAACsB,MAAL,GAAcmsD,SAAS,CAACnsD,MAAV,GAAmB9C,IAAI,CAAC+C,OAAL,GAAe,CAAhD;AACA0rD,QAAAA,iBAAiB,CAAC/E,QAAQ,CAAChoD,EAAV,CAAjB,GAAiC;AAAE8B,UAAAA,CAAC,EAAExD,IAAI,CAACgf;AAAV,SAAjC;AACD,OAPD,MAOO;AACL;AACA,YAAIiwC,UAAS,GAAGD,GAAG,CAACxtD,IAAJ,GAAWc,OAAX,EAAhB;;AACAd,QAAAA,IAAI,CAACqB,KAAL,GAAaosD,UAAS,CAACpsD,KAAvB;AACArB,QAAAA,IAAI,CAACsB,MAAL,GAAcmsD,UAAS,CAACnsD,MAAxB,CAJK,CAKL;AACD;AACF,KAlBD,MAkBO;AACLtB,MAAAA,IAAI,GAAG4pD,kDAAS,CAACnjC,OAAD,EAAUyhC,QAAV,EAAoB7+C,KAApB,CAAhB;AACD;;AAED,QAAI6+C,QAAQ,CAACj0C,IAAb,EAAmB;AACjB;AACA,UAAMy5C,OAAO,GAAG;AACdtF,QAAAA,YAAY,EAAE,EADA;AAEdloD,QAAAA,EAAE,EAAEgoD,QAAQ,CAAChoD,EAAT,GAAc,OAFJ;AAGd+T,QAAAA,IAAI,EAAEi0C,QAAQ,CAACj0C,IAHD;AAId1G,QAAAA,IAAI,EAAE;AAJQ,OAAhB;AAMA,UAAM0G,IAAI,GAAG21C,kDAAS,CAACnjC,OAAD,EAAUinC,OAAV,EAAmBrkD,KAAnB,CAAtB,CARiB,CAUjB;;AACA,UAAI6+C,QAAQ,CAACj0C,IAAT,CAAc04C,QAAd,KAA2B,SAA/B,EAA0C;AACxCtjD,QAAAA,KAAK,CAAC0D,OAAN,CAAc/M,IAAI,CAACE,EAAL,GAAU,OAAxB,EAAiC+T,IAAjC;AACA5K,QAAAA,KAAK,CAAC0D,OAAN,CAAc/M,IAAI,CAACE,EAAnB,EAAuBF,IAAvB;AACD,OAHD,MAGO;AACLqJ,QAAAA,KAAK,CAAC0D,OAAN,CAAc/M,IAAI,CAACE,EAAnB,EAAuBF,IAAvB;AACAqJ,QAAAA,KAAK,CAAC0D,OAAN,CAAc/M,IAAI,CAACE,EAAL,GAAU,OAAxB,EAAiC+T,IAAjC;AACD,OAjBgB,CAkBjB;;;AACA5K,MAAAA,KAAK,CAAC2D,SAAN,CAAgBhN,IAAI,CAACE,EAArB,EAAyBF,IAAI,CAACE,EAAL,GAAU,QAAnC;AACAmJ,MAAAA,KAAK,CAAC2D,SAAN,CAAgBhN,IAAI,CAACE,EAAL,GAAU,OAA1B,EAAmCF,IAAI,CAACE,EAAL,GAAU,QAA7C;AACD,KArBD,MAqBO;AACL;AACA;AACA;AACAmJ,MAAAA,KAAK,CAAC0D,OAAN,CAAc/M,IAAI,CAACE,EAAnB,EAAuBF,IAAvB;AACD;AACF;;AAED/C,EAAAA,8CAAA,CAAU,QAAV,EAAoBoM,KAAK,CAACskD,SAAN,EAApB,EAAuCtkD,KAAvC;AACA,MAAIgc,GAAG,GAAG,CAAV;AACAjG,EAAAA,SAAS,CAACngB,OAAV,CAAkB,UAAUshB,QAAV,EAAoB;AACpC8E,IAAAA,GAAG;AACHpoB,IAAAA,8CAAA,CAAU,cAAV,EAA0BsjB,QAA1B;AACAlX,IAAAA,KAAK,CAAC4I,OAAN,CACEsO,QAAQ,CAACC,GADX,EAEED,QAAQ,CAACE,GAFX,EAGE;AACEF,MAAAA,QAAQ,EAAEA,QADZ;AAEElf,MAAAA,KAAK,EAAE+rD,aAAa,CAAC7sC,QAAQ,CAAC/K,KAAV,CAFtB;AAGElU,MAAAA,MAAM,EAAE9C,IAAI,CAAC8e,WAAL,GAAmB2B,8DAAA,CAAesB,QAAQ,CAAC/K,KAAxB,EAA+BvX,MAH5D;AAIEioB,MAAAA,QAAQ,EAAE;AAJZ,KAHF,EASE,OAAOb,GATT;AAWD,GAdD;AAgBAna,EAAAA,mDAAA,CAAa7B,KAAb;AAEApM,EAAAA,8CAAA,CAAU,oBAAV,EAAgCoM,KAAK,CAACmD,KAAN,EAAhC;AACA,MAAMohD,OAAO,GAAGnnC,OAAO,CAACzmB,IAAR,EAAhB;AAEAqJ,EAAAA,KAAK,CAACmD,KAAN,GAAcvN,OAAd,CAAsB,UAAUuK,CAAV,EAAa;AACjC,QAAI,OAAOA,CAAP,KAAa,WAAb,IAA4B,OAAOH,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,CAAP,KAAyB,WAAzD,EAAsE;AACpEvM,MAAAA,6CAAA,CAAS,UAAUuM,CAAV,GAAc,IAAd,GAAqB9H,IAAI,CAACC,SAAL,CAAe0H,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,CAAf,CAA9B;AACA5J,MAAAA,0CAAM,CAAC,MAAMguD,OAAO,CAAC1tD,EAAd,GAAmB,IAAnB,GAA0BsJ,CAA3B,CAAN,CAAoCnJ,IAApC,CACE,WADF,EAEE,gBACGgJ,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,EAAczH,CAAd,GAAkBsH,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,EAAcnI,KAAd,GAAsB,CAD3C,IAEE,GAFF,IAGGgI,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,EAAcxH,CAAd,IACEirD,iBAAiB,CAACzjD,CAAD,CAAjB,GAAuByjD,iBAAiB,CAACzjD,CAAD,CAAjB,CAAqBxH,CAA5C,GAAgD,CADlD,IAECqH,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,EAAclI,MAAd,GAAuB,CAL3B,IAME,IARJ;AAUA1B,MAAAA,0CAAM,CAAC,MAAMguD,OAAO,CAAC1tD,EAAd,GAAmB,IAAnB,GAA0BsJ,CAA3B,CAAN,CAAoCnJ,IAApC,CACE,cADF,EAEEgJ,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,EAAczH,CAAd,GAAkBsH,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,EAAcnI,KAAd,GAAsB,CAF1C;AAIA,UAAMwsD,QAAQ,GAAGnqD,QAAQ,CAACyjB,gBAAT,CAA0B,MAAMymC,OAAO,CAAC1tD,EAAd,GAAmB,IAAnB,GAA0BsJ,CAA1B,GAA8B,WAAxD,CAAjB;AACAqkD,MAAAA,QAAQ,CAAC5uD,OAAT,CAAiB,UAACwD,OAAD,EAAa;AAC5B,YAAM1C,MAAM,GAAG0C,OAAO,CAAC6+B,aAAvB;AACA,YAAIwsB,MAAM,GAAG,CAAb;AACA,YAAIC,MAAM,GAAG,CAAb;;AACA,YAAIhuD,MAAJ,EAAY;AACV,cAAIA,MAAM,CAACuhC,aAAX,EAA0BwsB,MAAM,GAAG/tD,MAAM,CAACuhC,aAAP,CAAqBxgC,OAArB,GAA+BO,KAAxC;AAC1B0sD,UAAAA,MAAM,GAAG1lB,QAAQ,CAACtoC,MAAM,CAACiuD,YAAP,CAAoB,cAApB,CAAD,EAAsC,EAAtC,CAAjB;;AACA,cAAI/jD,MAAM,CAACC,KAAP,CAAa6jD,MAAb,CAAJ,EAA0B;AACxBA,YAAAA,MAAM,GAAG,CAAT;AACD;AACF;;AACDtrD,QAAAA,OAAO,CAAC6B,YAAR,CAAqB,IAArB,EAA2B,IAAIypD,MAAJ,GAAa,CAAxC;AACAtrD,QAAAA,OAAO,CAAC6B,YAAR,CAAqB,IAArB,EAA2BwpD,MAAM,GAAGC,MAAT,GAAkB,CAA7C;AACD,OAbD;AAcD,KA/BD,MA+BO;AACL9wD,MAAAA,8CAAA,CAAU,aAAauM,CAAb,GAAiB,IAAjB,GAAwB9H,IAAI,CAACC,SAAL,CAAe0H,KAAK,CAACrJ,IAAN,CAAWwJ,CAAX,CAAf,CAAlC;AACD;AACF,GAnCD;AAqCA,MAAIsgD,QAAQ,GAAG8D,OAAO,CAAC9sD,OAAR,EAAf;AAEAuI,EAAAA,KAAK,CAACoD,KAAN,GAAcxN,OAAd,CAAsB,UAAUgK,CAAV,EAAa;AACjC,QAAI,OAAOA,CAAP,KAAa,WAAb,IAA4B,OAAOI,KAAK,CAAC/D,IAAN,CAAW2D,CAAX,CAAP,KAAyB,WAAzD,EAAsE;AACpEhM,MAAAA,8CAAA,CAAU,UAAUgM,CAAC,CAACO,CAAZ,GAAgB,MAAhB,GAAyBP,CAAC,CAACvB,CAA3B,GAA+B,IAA/B,GAAsChG,IAAI,CAACC,SAAL,CAAe0H,KAAK,CAAC/D,IAAN,CAAW2D,CAAX,CAAf,CAAhD;AACA4d,MAAAA,iDAAQ,CAACJ,OAAD,EAAUpd,KAAK,CAAC/D,IAAN,CAAW2D,CAAX,CAAV,EAAyBI,KAAK,CAAC/D,IAAN,CAAW2D,CAAX,EAAcsX,QAAvC,CAAR;AACD;AACF,GALD;AAOAupC,EAAAA,QAAQ,GAAG8D,OAAO,CAAC9sD,OAAR,EAAX;AAEA,MAAM+oD,SAAS,GAAG;AAChB3pD,IAAAA,EAAE,EAAEmpD,QAAQ,GAAGA,QAAH,GAAc,MADV;AAEhB9oD,IAAAA,KAAK,EAAE8oD,QAAQ,GAAGA,QAAH,GAAc,MAFb;AAGhBhoD,IAAAA,KAAK,EAAE,CAHS;AAIhBC,IAAAA,MAAM,EAAE;AAJQ,GAAlB;AAOAuoD,EAAAA,SAAS,CAACxoD,KAAV,GAAkByoD,QAAQ,CAACzoD,KAAT,GAAiB,IAAI7C,IAAI,CAAC+C,OAA5C;AACAsoD,EAAAA,SAAS,CAACvoD,MAAV,GAAmBwoD,QAAQ,CAACxoD,MAAT,GAAkB,IAAI9C,IAAI,CAAC+C,OAA9C;AAEAtE,EAAAA,8CAAA,CAAU,cAAV,EAA0B4sD,SAA1B,EAAqCxgD,KAArC;AACA,SAAOwgD,SAAP;AACD,CAzMD;;AA2MA,iEAAe;AACbvjC,EAAAA,OAAO,EAAPA,OADa;AAEbU,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;ACvSA,IAAMS,SAAS,GAAG,SAAZA,SAAY,CAAC3oB,OAAD;AAAA,6DAGNA,OAAO,CAACmvD,eAHF,4BAIJnvD,OAAO,CAACmvD,eAJJ,kDAORnvD,OAAO,CAAC4oB,UAPA,qFAYR5oB,OAAO,CAACg7B,SAZA,uHAmBRh7B,OAAO,CAACovD,eAnBA,kDAuBRpvD,OAAO,CAAC8oB,OAvBA,0BAwBN9oB,OAAO,CAAC4oB,UAxBF,oDA4BN5oB,OAAO,CAAC+oB,SA5BF,kEAiCN/oB,OAAO,CAACmvD,eAjCF,yFAuCRnvD,OAAO,CAACqvD,UAvCA,8IAiDNrvD,OAAO,CAACslD,eAjDF,wBAkDRtlD,OAAO,CAACulD,YAlDA,sCAqDNvlD,OAAO,CAACwlD,aArDF,oIA8DRxlD,OAAO,CAAC8oB,OA9DA,wEAmER9oB,OAAO,CAACsvD,oBAnEA,sEAuERtvD,OAAO,CAACuvD,oBAAR,IAAgCvvD,OAAO,CAACwvD,iBAvEhC,qDA0EPxvD,OAAO,CAACuvD,oBAAR,IAAgCvvD,OAAO,CAACwvD,iBA1EjC,iDA8ERxvD,OAAO,CAACovD,eA9EA,mGAoFRpvD,OAAO,CAACyvD,iBApFA,0BAqFNzvD,OAAO,CAACyvD,iBArFF,iDAyFRzvD,OAAO,CAACyvD,iBAzFA,0BA0FNzvD,OAAO,CAACyvD,iBA1FF,uDA8FRzvD,OAAO,CAAC0vD,kBA9FA,0BA+FN1vD,OAAO,CAACqvD,UA/FF,oEAmGRrvD,OAAO,CAAC2vD,mBAAR,IAA+B3vD,OAAO,CAACqvD,UAnG/B,6BAoGHrvD,OAAO,CAACqvD,UApGL,gEAyGRrvD,OAAO,CAAC4vD,QAAR,IAAoB5vD,OAAO,CAAC8oB,OAzGpB,0BA0GN9oB,OAAO,CAAC6vD,WAAR,IAAuB7vD,OAAO,CAAC4oB,UA1GzB,kEA8GR5oB,OAAO,CAAC8oB,OA9GA,0BA+GN9oB,OAAO,CAAC6vD,WAAR,IAAuB7vD,OAAO,CAAC4oB,UA/GzB,2EAmHR5oB,OAAO,CAAC+oB,SAnHA,2DAuHR/oB,OAAO,CAAC8vD,wBAvHA,0BAwHN9vD,OAAO,CAAC6vD,WAAR,IAAuB7vD,OAAO,CAAC4oB,UAxHzB,kFA6HP5oB,OAAO,CAACovD,eA7HD,8HAqINpvD,OAAO,CAAC6vD,WAAR,IAAuB7vD,OAAO,CAAC4oB,UArIzB,iJA6IR5oB,OAAO,CAAC2vD,mBAAR,IAA+B3vD,OAAO,CAACqvD,UA7I/B,oFAgJRrvD,OAAO,CAAC+vD,aAAR,GAAwB/vD,OAAO,CAAC+vD,aAAhC,GAAgD,SAhJxC,iNA8JR/vD,OAAO,CAAC+vD,aAAR,GAAwB/vD,OAAO,CAAC+vD,aAAhC,GAAgD,SA9JxC,mGAsKR/vD,OAAO,CAACulD,YAtKA,0BAuKNvlD,OAAO,CAACslD,eAvKF,gGA6KRtlD,OAAO,CAACulD,YA7KA,0BA8KNvlD,OAAO,CAACslD,eA9KF,kGAqLRtlD,OAAO,CAACwlD,aArLA,+DAyLPxlD,OAAO,CAACwlD,aAzLD,gEA4LCxlD,OAAO,CAACwlD,aA5LT,iEAgMRxlD,OAAO,CAAC+oB,SAhMA,0BAiMN/oB,OAAO,CAAC+oB,SAjMF;AAAA,CAAlB;;AAsMA,iEAAeJ,SAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtMA;AACA;AAEA,IAAIjS,KAAK,GAAG,EAAZ;AACA,IAAIqlB,cAAc,GAAG,EAArB;AAEA,IAAMF,QAAQ,GAAG,EAAjB;AACA,IAAMC,KAAK,GAAG,EAAd;AACA,IAAMQ,QAAQ,GAAG,EAAjB;AAEO,IAAM7b,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BlS,IAA9B,EAAoC;AAChE2R,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDlS,IAApD;AACD,CAFM;AAIA,IAAMtK,KAAK,GAAG,SAARA,KAAQ,GAAY;AAC/B03B,EAAAA,QAAQ,CAAC18B,MAAT,GAAkB,CAAlB;AACA28B,EAAAA,KAAK,CAAC38B,MAAN,GAAe,CAAf;AACA48B,EAAAA,cAAc,GAAG,EAAjB;AACArlB,EAAAA,KAAK,GAAG,EAAR;AACA4lB,EAAAA,QAAQ,CAACn9B,MAAT,GAAkB,CAAlB;AACD,CANM;AAQA,IAAM2vB,QAAQ,GAAG,SAAXA,QAAW,CAAU/C,GAAV,EAAe;AACrCrV,EAAAA,KAAK,GAAGqV,GAAR;AACD,CAFM;AAIA,IAAMgD,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAClC,SAAOrY,KAAP;AACD,CAFM;AAIA,IAAM4mB,UAAU,GAAG,SAAbA,UAAa,CAAUvR,GAAV,EAAe;AACvCgQ,EAAAA,cAAc,GAAGhQ,GAAjB;AACA8P,EAAAA,QAAQ,CAACn7B,IAAT,CAAcqrB,GAAd;AACD,CAHM;AAKA,IAAMwR,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAO1B,QAAP;AACD,CAFM;AAIA,IAAM2B,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAClC,MAAIwyB,iBAAiB,GAAGtyB,YAAY,EAApC;AACA,MAAMC,QAAQ,GAAG,GAAjB;AACA,MAAIC,cAAc,GAAG,CAArB;;AACA,SAAO,CAACoyB,iBAAD,IAAsBpyB,cAAc,GAAGD,QAA9C,EAAwD;AACtDqyB,IAAAA,iBAAiB,GAAGtyB,YAAY,EAAhC;AACAE,IAAAA,cAAc;AACf;;AAED9B,EAAAA,KAAK,CAACp7B,IAAN,OAAAo7B,KAAK,EAASQ,QAAT,CAAL;AAEA,SAAOR,KAAP;AACD,CAZM;;AAcP,IAAMm0B,YAAY,GAAG,SAAfA,YAAe,GAAY;AAC/B,MAAMC,UAAU,GAAG,EAAnB;AACAp0B,EAAAA,KAAK,CAAC37B,OAAN,CAAc,UAAC+9B,IAAD,EAAU;AACtB,QAAIA,IAAI,CAACiyB,MAAT,EAAiB;AACfD,MAAAA,UAAU,CAACxvD,IAAX,OAAAwvD,UAAU,qBAAShyB,IAAI,CAACiyB,MAAd,EAAV;AACD;AACF,GAJD;AAMA,MAAMC,MAAM,GAAG,IAAIC,GAAJ,CAAQH,UAAR,CAAf;AACA,SAAO,mBAAIE,MAAJ,EAAY3+C,IAAZ,EAAP;AACD,CAVD;;AAYO,IAAM8uB,OAAO,GAAG,SAAVA,OAAU,CAAU1pB,KAAV,EAAiBy5C,QAAjB,EAA2B;AAChD,MAAMC,MAAM,GAAGD,QAAQ,CAAC9tC,MAAT,CAAgB,CAAhB,EAAmB9c,KAAnB,CAAyB,GAAzB,CAAf;AAEA,MAAI8qD,KAAK,GAAG,CAAZ;AACA,MAAIC,KAAK,GAAG,EAAZ;;AACA,MAAIF,MAAM,CAACpxD,MAAP,KAAkB,CAAtB,EAAyB;AACvBqxD,IAAAA,KAAK,GAAGrlD,MAAM,CAAColD,MAAM,CAAC,CAAD,CAAP,CAAd;AACAE,IAAAA,KAAK,GAAG,EAAR;AACD,GAHD,MAGO;AACLD,IAAAA,KAAK,GAAGrlD,MAAM,CAAColD,MAAM,CAAC,CAAD,CAAP,CAAd;AACAE,IAAAA,KAAK,GAAGF,MAAM,CAAC,CAAD,CAAN,CAAU7qD,KAAV,CAAgB,GAAhB,CAAR;AACD;;AACD,MAAMgrD,UAAU,GAAGD,KAAK,CAACh7C,GAAN,CAAU,UAACpQ,CAAD;AAAA,WAAOA,CAAC,CAACY,IAAF,EAAP;AAAA,GAAV,CAAnB;AAEA,MAAMu6B,OAAO,GAAG;AACdC,IAAAA,OAAO,EAAE1E,cADK;AAEdttB,IAAAA,IAAI,EAAEstB,cAFQ;AAGdo0B,IAAAA,MAAM,EAAEO,UAHM;AAIdxyB,IAAAA,IAAI,EAAErnB,KAJQ;AAKd25C,IAAAA,KAAK,EAALA;AALc,GAAhB;AAQAl0B,EAAAA,QAAQ,CAAC57B,IAAT,CAAc8/B,OAAd;AACD,CAvBM;AAyBA,IAAMU,UAAU,GAAG,SAAbA,UAAa,CAAUrqB,KAAV,EAAiB;AACzC,MAAMsqB,OAAO,GAAG;AACdV,IAAAA,OAAO,EAAE1E,cADK;AAEdttB,IAAAA,IAAI,EAAEstB,cAFQ;AAGdqF,IAAAA,WAAW,EAAEvqB,KAHC;AAIdqnB,IAAAA,IAAI,EAAErnB,KAJQ;AAKdrT,IAAAA,OAAO,EAAE;AALK,GAAhB;AAOAs4B,EAAAA,KAAK,CAACp7B,IAAN,CAAWygC,OAAX;AACD,CATM;;AAWP,IAAMzD,YAAY,GAAG,SAAfA,YAAe,GAAY;AAC/B,MAAM2D,WAAW,GAAG,SAAdA,WAAc,CAAUn5B,GAAV,EAAe;AACjC,WAAOo0B,QAAQ,CAACp0B,GAAD,CAAR,CAAcw4B,SAArB;AACD,GAFD;;AAIA,MAAIY,YAAY,GAAG,IAAnB;;AACA,OAAK,IAAIpiC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGo9B,QAAQ,CAACn9B,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;AACxCmiC,IAAAA,WAAW,CAACniC,CAAD,CAAX;AAEAoiC,IAAAA,YAAY,GAAGA,YAAY,IAAIhF,QAAQ,CAACp9B,CAAD,CAAR,CAAYwhC,SAA3C;AACD;;AACD,SAAOY,YAAP;AACD,CAZD;;AAcA,IAAMwW,SAAS,GAAG,SAAZA,SAAY,GAAY;AAC5B,SAAOmY,YAAY,EAAnB;AACD,CAFD;;AAIA,iEAAe;AACbxvC,EAAAA,cAAc,EAAdA,cADa;AAEb1gB,EAAAA,SAAS,EAAE;AAAA,WAAMmgB,8CAAA,GAAsB5C,OAA5B;AAAA,GAFE;AAGbnZ,EAAAA,KAAK,EAALA,KAHa;AAIb2qB,EAAAA,QAAQ,EAARA,QAJa;AAKbC,EAAAA,QAAQ,EAARA,QALa;AAMbuO,EAAAA,UAAU,EAAVA,UANa;AAObC,EAAAA,WAAW,EAAXA,WAPa;AAQbC,EAAAA,QAAQ,EAARA,QARa;AASb+C,EAAAA,OAAO,EAAPA,OATa;AAUbW,EAAAA,UAAU,EAAVA,UAVa;AAWb4W,EAAAA,SAAS,EAATA;AAXa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvHA;AACA;AACA;AACA;AACA;AACA;AAEAvyB,sDAAA,GAAYorC,kDAAZ;AAEO,IAAMnpC,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMxnB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYwnB,GAAZ,CAAb;AAEAxnB,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUC,GAAV,EAAe;AAC1BV,IAAAA,IAAI,CAACU,GAAD,CAAJ,GAAYqnB,GAAG,CAACrnB,GAAD,CAAf;AACD,GAFD;AAGD,CANM;AAQP,IAAMq1C,MAAM,GAAG,EAAf;AAEA;;AACA,SAASmb,eAAT,CAAyBjpC,OAAzB,EAAkC;AAChC,MAAMjoB,IAAI,GAAGK,kDAAS,GAAGud,OAAzB,CADgC,CAEhC;;AACA,MAAIod,IAAI,GAAG,EAAX;AACAn8B,EAAAA,MAAM,CAAC0B,IAAP,CAAYw1C,MAAZ,EAAoBt1C,OAApB,CAA4B,UAAC0wD,MAAD,EAAY;AACtC,QAAMC,MAAM,GAAGrb,MAAM,CAACob,MAAD,CAAN,CAAeplB,KAA9B;AAEA,QAAMslB,UAAU,GAAG;AACjB9hD,MAAAA,EAAE,EAAE,EADa;AAEjBC,MAAAA,EAAE,EAAEwrB,IAFa;AAGjBxxB,MAAAA,CAAC,EAAE,CAHc;AAIjBgW,MAAAA,IAAI,EAAE4xC,MAJW;AAKjB7xC,MAAAA,MAAM,EAAE,MALS;AAMjB/W,MAAAA,GAAG,EAAEutC,MAAM,CAACob,MAAD,CAAN,CAAehD;AANH,KAAnB;AAQAroC,IAAAA,2DAAA,CAAmBmC,OAAnB,EAA4BopC,UAA5B;AAEA,QAAME,SAAS,GAAG;AAChBhuD,MAAAA,CAAC,EAAE,EADa;AAEhBC,MAAAA,CAAC,EAAEw3B,IAAI,GAAG,CAFM;AAGhBxb,MAAAA,IAAI,EAAE,MAHU;AAIhBxd,MAAAA,IAAI,EAAEmvD,MAJU;AAKhBzR,MAAAA,UAAU,EAAE1/C,IAAI,CAACmb,aAAL,GAAqB;AALjB,KAAlB;AAOA2K,IAAAA,yDAAA,CAAiBmC,OAAjB,EAA0BspC,SAA1B;AAEAv2B,IAAAA,IAAI,IAAI,EAAR;AACD,GAvBD;AAwBD;;AACD,IAAMh7B,IAAI,GAAGK,kDAAS,GAAGud,OAAzB;AACA,IAAM4zC,WAAW,GAAGnxD,kDAAS,GAAGud,OAAZ,CAAoBC,UAAxC;AACO,IAAM2K,IAAI,GAAG,SAAPA,IAAO,CAAUxmB,IAAV,EAAgBN,EAAhB,EAAoB;AACtC,MAAM1B,IAAI,GAAGK,kDAAS,GAAGud,OAAzB;AACAiI,EAAAA,4DAAA;AACAA,EAAAA,yDAAA,CAAa7jB,IAAI,GAAG,IAApB;AAEAioB,EAAAA,MAAM,CAACmzB,IAAP;AACA,MAAMn1B,OAAO,GAAG7mB,0CAAM,CAAC,MAAMM,EAAP,CAAtB;AACAumB,EAAAA,OAAO,CAACpmB,IAAR,CAAa,aAAb,EAA4B,8BAA5B;AAEAikB,EAAAA,6DAAA,CAAqBmC,OAArB;AAEA,MAAMmU,KAAK,GAAGvW,+DAAA,EAAd;AACA,MAAM7O,KAAK,GAAG6O,+DAAA,EAAd;AAEA,MAAM6rC,UAAU,GAAG7rC,gEAAA,EAAnB;;AACA,OAAK,IAAIvD,MAAT,IAAmByzB,MAAnB;AAA2B,WAAOA,MAAM,CAACzzB,MAAD,CAAb;AAA3B;;AACA,MAAIqvC,QAAQ,GAAG,CAAf;AACAD,EAAAA,UAAU,CAACjxD,OAAX,CAAmB,UAACmxD,SAAD,EAAe;AAChC7b,IAAAA,MAAM,CAAC6b,SAAD,CAAN,GAAoB;AAClB7lB,MAAAA,KAAK,EAAE/rC,IAAI,CAACke,YAAL,CAAkByzC,QAAQ,GAAG3xD,IAAI,CAACke,YAAL,CAAkBze,MAA/C,CADW;AAElB0uD,MAAAA,QAAQ,EAAEwD;AAFQ,KAApB;AAIAA,IAAAA,QAAQ;AACT,GAND;AAQAT,EAAAA,eAAe,CAACjpC,OAAD,CAAf;AACAgC,EAAAA,MAAM,CAACroB,MAAP,CAAc,CAAd,EAAiB,CAAjB,EAAoB4vD,WAApB,EAAiC3yD,MAAM,CAAC0B,IAAP,CAAYw1C,MAAZ,EAAoBt2C,MAApB,GAA6B,EAA9D;AACAoyD,EAAAA,SAAS,CAAC5pC,OAAD,EAAUmU,KAAV,EAAiB,CAAjB,CAAT;AAEA,MAAMymB,GAAG,GAAG54B,MAAM,CAACi1B,SAAP,EAAZ;;AACA,MAAIloC,KAAJ,EAAW;AACTiR,IAAAA,OAAO,CACJjkB,MADH,CACU,MADV,EAEGhC,IAFH,CAEQgV,KAFR,EAGGnV,IAHH,CAGQ,GAHR,EAGa2vD,WAHb,EAIG3vD,IAJH,CAIQ,WAJR,EAIqB,KAJrB,EAKGA,IALH,CAKQ,aALR,EAKuB,MALvB,EAMGA,IANH,CAMQ,GANR,EAMa,EANb;AAOD;;AACD,MAAMiB,MAAM,GAAG+/C,GAAG,CAAC1G,KAAJ,GAAY0G,GAAG,CAAC3G,MAAhB,GAAyB,IAAIl8C,IAAI,CAACgb,cAAjD;AACA,MAAMnY,KAAK,GAAG2uD,WAAW,GAAG3O,GAAG,CAAC5G,KAAlB,GAA0B,IAAIj8C,IAAI,CAAC+a,cAAjD;AAEAmL,EAAAA,wDAAgB,CAAC+B,OAAD,EAAUnlB,MAAV,EAAkBD,KAAlB,EAAyB7C,IAAI,CAAC2a,WAA9B,CAAhB,CA1CsC,CA4CtC;;AACAsN,EAAAA,OAAO,CACJjkB,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,IAFR,EAEc2vD,WAFd,EAGG3vD,IAHH,CAGQ,IAHR,EAGc7B,IAAI,CAAC8C,MAAL,GAAc,CAH5B,EAG+B;AAH/B,GAIGjB,IAJH,CAIQ,IAJR,EAIcgB,KAAK,GAAG2uD,WAAR,GAAsB,CAJpC,EAIuC;AAJvC,GAKG3vD,IALH,CAKQ,IALR,EAKc7B,IAAI,CAAC8C,MAAL,GAAc,CAL5B,EAMGjB,IANH,CAMQ,cANR,EAMwB,CANxB,EAOGA,IAPH,CAOQ,QAPR,EAOkB,OAPlB,EAQGA,IARH,CAQQ,YARR,EAQsB,iBARtB;AAUA,MAAMohD,iBAAiB,GAAGjsC,KAAK,GAAG,EAAH,GAAQ,CAAvC;AACAiR,EAAAA,OAAO,CAACpmB,IAAR,CAAa,SAAb,YAA2BghD,GAAG,CAAC7G,MAA/B,kBAA6Cn5C,KAA7C,cAAsDC,MAAM,GAAGmgD,iBAA/D;AACAh7B,EAAAA,OAAO,CAACpmB,IAAR,CAAa,qBAAb,EAAoC,eAApC;AACAomB,EAAAA,OAAO,CAACpmB,IAAR,CAAa,QAAb,EAAuBiB,MAAM,GAAGmgD,iBAAT,GAA6B,EAApD;AACD,CA3DM;AA6DA,IAAMh5B,MAAM,GAAG;AACpB7b,EAAAA,IAAI,EAAE;AACJ4tC,IAAAA,MAAM,EAAE55C,SADJ;AAEJ65C,IAAAA,KAAK,EAAE75C,SAFH;AAGJ85C,IAAAA,MAAM,EAAE95C,SAHJ;AAIJ+5C,IAAAA,KAAK,EAAE/5C;AAJH,GADc;AAOpB8V,EAAAA,WAAW,EAAE,CAPO;AASpBkkC,EAAAA,aAAa,EAAE,EATK;AAUpBgB,EAAAA,IAAI,EAAE,gBAAY;AAChB,SAAKhB,aAAL,GAAqB,EAArB;AACA,SAAKhuC,IAAL,GAAY;AACV4tC,MAAAA,MAAM,EAAE55C,SADE;AAEV65C,MAAAA,KAAK,EAAE75C,SAFG;AAGV85C,MAAAA,MAAM,EAAE95C,SAHE;AAIV+5C,MAAAA,KAAK,EAAE/5C;AAJG,KAAZ;AAMA,SAAK8V,WAAL,GAAmB,CAAnB;AACD,GAnBmB;AAoBpBmlC,EAAAA,SAAS,EAAE,mBAAUj9B,GAAV,EAAe1f,GAAf,EAAoB4sB,GAApB,EAAyBnJ,GAAzB,EAA8B;AACvC,QAAI,OAAO/D,GAAG,CAAC1f,GAAD,CAAV,KAAoB,WAAxB,EAAqC;AACnC0f,MAAAA,GAAG,CAAC1f,GAAD,CAAH,GAAW4sB,GAAX;AACD,KAFD,MAEO;AACLlN,MAAAA,GAAG,CAAC1f,GAAD,CAAH,GAAWyjB,GAAG,CAACmJ,GAAD,EAAMlN,GAAG,CAAC1f,GAAD,CAAT,CAAd;AACD;AACF,GA1BmB;AA2BpB48C,EAAAA,YAAY,EAAE,sBAAUtB,MAAV,EAAkBE,MAAlB,EAA0BD,KAA1B,EAAiCE,KAAjC,EAAwC;AACpD,QAAMn8C,IAAI,GAAGK,kDAAS,GAAGud,OAAzB;;AACA,QAAM2/B,KAAK,GAAG,IAAd;;AACA,QAAI12B,GAAG,GAAG,CAAV;AACA;;AACA,aAAS22B,QAAT,CAAkBzuC,IAAlB,EAAwB;AACtB,aAAO,SAAS0uC,gBAAT,CAA0B55B,IAA1B,EAAgC;AACrCgD,QAAAA,GAAG,GADkC,CAErC;;AACA,YAAM/X,CAAC,GAAGyuC,KAAK,CAACnB,aAAN,CAAoB38C,MAApB,GAA6BonB,GAA7B,GAAmC,CAA7C;;AACA02B,QAAAA,KAAK,CAACF,SAAN,CAAgBx5B,IAAhB,EAAsB,QAAtB,EAAgCq4B,MAAM,GAAGptC,CAAC,GAAG9O,IAAI,CAACkb,SAAlD,EAA6DnS,IAAI,CAAC6I,GAAlE;;AACA2rC,QAAAA,KAAK,CAACF,SAAN,CAAgBx5B,IAAhB,EAAsB,OAAtB,EAA+Bs4B,KAAK,GAAGrtC,CAAC,GAAG9O,IAAI,CAACkb,SAAhD,EAA2DnS,IAAI,CAAC8oB,GAAhE;;AAEA0rB,QAAAA,KAAK,CAACF,SAAN,CAAgBpzB,MAAM,CAAC7b,IAAvB,EAA6B,QAA7B,EAAuC4tC,MAAM,GAAGltC,CAAC,GAAG9O,IAAI,CAACkb,SAAzD,EAAoEnS,IAAI,CAAC6I,GAAzE;;AACA2rC,QAAAA,KAAK,CAACF,SAAN,CAAgBpzB,MAAM,CAAC7b,IAAvB,EAA6B,OAA7B,EAAsC6tC,KAAK,GAAGntC,CAAC,GAAG9O,IAAI,CAACkb,SAAvD,EAAkEnS,IAAI,CAAC8oB,GAAvE;;AAEA,YAAI,EAAE9iB,IAAI,KAAK,YAAX,CAAJ,EAA8B;AAC5BwuC,UAAAA,KAAK,CAACF,SAAN,CAAgBx5B,IAAhB,EAAsB,QAAtB,EAAgCm4B,MAAM,GAAGltC,CAAC,GAAG9O,IAAI,CAACkb,SAAlD,EAA6DnS,IAAI,CAAC6I,GAAlE;;AACA2rC,UAAAA,KAAK,CAACF,SAAN,CAAgBx5B,IAAhB,EAAsB,OAAtB,EAA+Bo4B,KAAK,GAAGntC,CAAC,GAAG9O,IAAI,CAACkb,SAAhD,EAA2DnS,IAAI,CAAC8oB,GAAhE;;AAEA0rB,UAAAA,KAAK,CAACF,SAAN,CAAgBpzB,MAAM,CAAC7b,IAAvB,EAA6B,QAA7B,EAAuC8tC,MAAM,GAAGptC,CAAC,GAAG9O,IAAI,CAACkb,SAAzD,EAAoEnS,IAAI,CAAC6I,GAAzE;;AACA2rC,UAAAA,KAAK,CAACF,SAAN,CAAgBpzB,MAAM,CAAC7b,IAAvB,EAA6B,OAA7B,EAAsC+tC,KAAK,GAAGrtC,CAAC,GAAG9O,IAAI,CAACkb,SAAvD,EAAkEnS,IAAI,CAAC8oB,GAAvE;AACD;AACF,OAjBD;AAkBD;;AAED,SAAKuqB,aAAL,CAAmB37C,OAAnB,CAA2B+8C,QAAQ,EAAnC;AACD,GAtDmB;AAuDpB57C,EAAAA,MAAM,EAAE,gBAAUo6C,MAAV,EAAkBE,MAAlB,EAA0BD,KAA1B,EAAiCE,KAAjC,EAAwC;AAC9C,QAAMuB,OAAO,GAAG30C,IAAI,CAAC6I,GAAL,CAASoqC,MAAT,EAAiBC,KAAjB,CAAhB;;AACA,QAAM0B,MAAM,GAAG50C,IAAI,CAAC8oB,GAAL,CAASmqB,MAAT,EAAiBC,KAAjB,CAAf;;AACA,QAAM2B,OAAO,GAAG70C,IAAI,CAAC6I,GAAL,CAASsqC,MAAT,EAAiBC,KAAjB,CAAhB;;AACA,QAAM0B,MAAM,GAAG90C,IAAI,CAAC8oB,GAAL,CAASqqB,MAAT,EAAiBC,KAAjB,CAAf;;AAEA,SAAKkB,SAAL,CAAepzB,MAAM,CAAC7b,IAAtB,EAA4B,QAA5B,EAAsCsvC,OAAtC,EAA+C30C,IAAI,CAAC6I,GAApD;AACA,SAAKyrC,SAAL,CAAepzB,MAAM,CAAC7b,IAAtB,EAA4B,QAA5B,EAAsCwvC,OAAtC,EAA+C70C,IAAI,CAAC6I,GAApD;AACA,SAAKyrC,SAAL,CAAepzB,MAAM,CAAC7b,IAAtB,EAA4B,OAA5B,EAAqCuvC,MAArC,EAA6C50C,IAAI,CAAC8oB,GAAlD;AACA,SAAKwrB,SAAL,CAAepzB,MAAM,CAAC7b,IAAtB,EAA4B,OAA5B,EAAqCyvC,MAArC,EAA6C90C,IAAI,CAAC8oB,GAAlD;AAEA,SAAKyrB,YAAL,CAAkBI,OAAlB,EAA2BE,OAA3B,EAAoCD,MAApC,EAA4CE,MAA5C;AACD,GAnEmB;AAoEpBmB,EAAAA,eAAe,EAAE,yBAAUC,IAAV,EAAgB;AAC/B,SAAK/mC,WAAL,GAAmB,KAAKA,WAAL,GAAmB+mC,IAAtC;AACA,SAAK7wC,IAAL,CAAU+tC,KAAV,GAAkB,KAAKjkC,WAAvB;AACD,GAvEmB;AAwEpB6mC,EAAAA,cAAc,EAAE,0BAAY;AAC1B,WAAO,KAAK7mC,WAAZ;AACD,GA1EmB;AA2EpBgnC,EAAAA,SAAS,EAAE,qBAAY;AACrB,WAAO,KAAK9wC,IAAZ;AACD;AA7EmB,CAAf;AAgFP,IAAM0jD,KAAK,GAAG9xD,IAAI,CAACme,YAAnB;AACA,IAAM4zC,WAAW,GAAG/xD,IAAI,CAACoe,cAAzB;AAEO,IAAMyzC,SAAS,GAAG,SAAZA,SAAY,CAAU5pC,OAAV,EAAmBmU,KAAnB,EAA0BlkB,WAA1B,EAAuC;AAC9D,MAAMlY,IAAI,GAAGK,kDAAS,GAAGud,OAAzB;AACA,MAAIo0C,WAAW,GAAG,EAAlB;AACA,MAAMC,cAAc,GAAGjyD,IAAI,CAAC8C,MAAL,GAAc,CAAd,GAAkB9C,IAAI,CAACgb,cAA9C;AACA,MAAMk3C,OAAO,GAAGh6C,WAAW,GAAG+5C,cAA9B;AAEA,MAAIE,aAAa,GAAG,CAApB;AACA,MAAI3yC,IAAI,GAAG,MAAX;AACA,MAAI4xC,MAAM,GAAG,OAAb;AACA,MAAItgD,GAAG,GAAG,CAAV,CAT8D,CAW9D;;AACA,OAAK,IAAItR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG48B,KAAK,CAAC38B,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,QAAIg/B,IAAI,GAAGpC,KAAK,CAAC58B,CAAD,CAAhB;;AACA,QAAIwyD,WAAW,KAAKxzB,IAAI,CAACuC,OAAzB,EAAkC;AAChCvhB,MAAAA,IAAI,GAAGsyC,KAAK,CAACK,aAAa,GAAGL,KAAK,CAACryD,MAAvB,CAAZ;AACAqR,MAAAA,GAAG,GAAGqhD,aAAa,GAAGL,KAAK,CAACryD,MAA5B;AACA2xD,MAAAA,MAAM,GAAGW,WAAW,CAACI,aAAa,GAAGJ,WAAW,CAACtyD,MAA7B,CAApB;AAEA,UAAMshC,OAAO,GAAG;AACdx9B,QAAAA,CAAC,EAAE/D,CAAC,GAAGQ,IAAI,CAACge,UAAT,GAAsBxe,CAAC,GAAGQ,IAAI,CAAC6C,KAA/B,GAAuC2uD,WAD5B;AAEdhuD,QAAAA,CAAC,EAAE,EAFW;AAGdxB,QAAAA,IAAI,EAAEw8B,IAAI,CAACuC,OAHG;AAIdvhB,QAAAA,IAAI,EAAJA,IAJc;AAKd1O,QAAAA,GAAG,EAAHA,GALc;AAMdsgD,QAAAA,MAAM,EAANA;AANc,OAAhB;AASAtrC,MAAAA,4DAAA,CAAoBmC,OAApB,EAA6B8Y,OAA7B,EAAsC/gC,IAAtC;AACAgyD,MAAAA,WAAW,GAAGxzB,IAAI,CAACuC,OAAnB;AACAoxB,MAAAA,aAAa;AACd,KAnBoC,CAqBrC;;;AACA,QAAME,UAAU,GAAG7zB,IAAI,CAACiyB,MAAL,CAAYnwC,MAAZ,CAAmB,UAACo8B,GAAD,EAAMkV,SAAN,EAAoB;AACxD,UAAI7b,MAAM,CAAC6b,SAAD,CAAV,EAAuB;AACrBlV,QAAAA,GAAG,CAACkV,SAAD,CAAH,GAAiB7b,MAAM,CAAC6b,SAAD,CAAvB;AACD;;AAED,aAAOlV,GAAP;AACD,KANkB,EAMhB,EANgB,CAAnB,CAtBqC,CA8BrC;;AACAle,IAAAA,IAAI,CAACj7B,CAAL,GAAS/D,CAAC,GAAGQ,IAAI,CAACge,UAAT,GAAsBxe,CAAC,GAAGQ,IAAI,CAAC6C,KAA/B,GAAuC2uD,WAAhD;AACAhzB,IAAAA,IAAI,CAACh7B,CAAL,GAAS0uD,OAAT;AACA1zB,IAAAA,IAAI,CAAC37B,KAAL,GAAa7C,IAAI,CAAC+a,cAAlB;AACAyjB,IAAAA,IAAI,CAAC17B,MAAL,GAAc9C,IAAI,CAACgb,cAAnB;AACAwjB,IAAAA,IAAI,CAAC4yB,MAAL,GAAcA,MAAd;AACA5yB,IAAAA,IAAI,CAAChf,IAAL,GAAYA,IAAZ;AACAgf,IAAAA,IAAI,CAAC1tB,GAAL,GAAWA,GAAX;AACA0tB,IAAAA,IAAI,CAACuX,MAAL,GAAcsc,UAAd,CAtCqC,CAwCrC;;AACAvsC,IAAAA,yDAAA,CAAiBmC,OAAjB,EAA0BuW,IAA1B,EAAgCx+B,IAAhC;AACAiqB,IAAAA,MAAM,CAACroB,MAAP,CAAc48B,IAAI,CAACj7B,CAAnB,EAAsBi7B,IAAI,CAACh7B,CAA3B,EAA8Bg7B,IAAI,CAACj7B,CAAL,GAASi7B,IAAI,CAAC37B,KAAd,GAAsB7C,IAAI,CAACge,UAAzD,EAAqE,MAAM,IAAI,EAA/E,EA1CqC,CA0C+C;AACrF;AACF,CAxDM;AA0DP,iEAAe;AACb8J,EAAAA,OAAO,EAAPA,OADa;AAEbU,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;AC7PA,IAAMS,SAAS,GAAG,SAAZA,SAAY,CAAC3oB,OAAD;AAAA,oJAILA,OAAO,CAACg7B,SAJH,iFAWJh7B,OAAO,CAACg7B,SAXJ,6CAeNh7B,OAAO,CAACg7B,SAfF,qFAsBLh7B,OAAO,CAACg7B,SAtBH,qCA0BZh7B,OAAO,CAACiyD,SAAR,mBAA6BjyD,OAAO,CAACiyD,SAArC,IAAmD,eA1BvC,wIAmCNjyD,OAAO,CAAC8oB,OAnCF,4BAoCJ9oB,OAAO,CAAC4oB,UApCJ,+KAgDN5oB,OAAO,CAACk7B,cAhDF,wDAoDJl7B,OAAO,CAAC+oB,SApDJ,kFAyDJ/oB,OAAO,CAAC+oB,SAzDJ,8EA8DM/oB,OAAO,CAACm7B,mBA9Dd,+IAyENn7B,OAAO,CAACi7B,UAzEF,6RAoFAj7B,OAAO,CAACk0B,aApFR,sCAqFMl0B,OAAO,CAACs7B,OArFd,sIA4FZt7B,OAAO,CAACkyD,SAAR,mBAA6BlyD,OAAO,CAACkyD,SAArC,IAAmD,EA5FvC,6DA+FZlyD,OAAO,CAACkyD,SAAR,mBAA6BlyD,OAAO,CAACmyD,SAArC,IAAmD,EA/FvC,6DAkGZnyD,OAAO,CAACkyD,SAAR,mBAA6BlyD,OAAO,CAACoyD,SAArC,IAAmD,EAlGvC,6DAqGZpyD,OAAO,CAACkyD,SAAR,mBAA6BlyD,OAAO,CAACqyD,SAArC,IAAmD,EArGvC,6DAwGZryD,OAAO,CAACkyD,SAAR,mBAA6BlyD,OAAO,CAACsyD,SAArC,IAAmD,EAxGvC,6DA2GZtyD,OAAO,CAACkyD,SAAR,mBAA6BlyD,OAAO,CAACuyD,SAArC,IAAmD,EA3GvC,6DA8GZvyD,OAAO,CAACkyD,SAAR,mBAA6BlyD,OAAO,CAACwyD,SAArC,IAAmD,EA9GvC,6DAiHZxyD,OAAO,CAACkyD,SAAR,mBAA6BlyD,OAAO,CAACyyD,SAArC,IAAmD,EAjHvC,yCAqHZzyD,OAAO,CAAC0yD,MAAR,mBAA0B1yD,OAAO,CAAC0yD,MAAlC,IAA6C,EArHjC,uCAwHZ1yD,OAAO,CAAC2yD,MAAR,mBAA0B3yD,OAAO,CAAC2yD,MAAlC,IAA6C,EAxHjC,uCA2HZ3yD,OAAO,CAAC4yD,MAAR,mBAA0B5yD,OAAO,CAAC4yD,MAAlC,IAA6C,EA3HjC,uCA8HZ5yD,OAAO,CAAC6yD,MAAR,mBAA0B7yD,OAAO,CAAC6yD,MAAlC,IAA6C,EA9HjC,uCAiIZ7yD,OAAO,CAAC8yD,MAAR,mBAA0B9yD,OAAO,CAAC8yD,MAAlC,IAA6C,EAjIjC,uCAoIZ9yD,OAAO,CAAC+yD,MAAR,mBAA0B/yD,OAAO,CAAC+yD,MAAlC,IAA6C,EApIjC;AAAA,CAAlB;;AA0IA,iEAAepqC,SAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1IA;AAEO,IAAMq2B,QAAQ,GAAG,SAAXA,QAAW,CAAUj7C,IAAV,EAAgBsyC,QAAhB,EAA0B;AAChD,MAAM0I,QAAQ,GAAGh7C,IAAI,CAACL,MAAL,CAAY,MAAZ,CAAjB;AACAq7C,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,GAAd,EAAmB80C,QAAQ,CAACpzC,CAA5B;AACA87C,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,GAAd,EAAmB80C,QAAQ,CAACnzC,CAA5B;AACA67C,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,MAAd,EAAsB80C,QAAQ,CAACn3B,IAA/B;AACA6/B,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,QAAd,EAAwB80C,QAAQ,CAACp3B,MAAjC;AACA8/B,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,OAAd,EAAuB80C,QAAQ,CAAC9zC,KAAhC;AACAw8C,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,QAAd,EAAwB80C,QAAQ,CAAC7zC,MAAjC;AACAu8C,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,IAAd,EAAoB80C,QAAQ,CAACtzC,EAA7B;AACAg8C,EAAAA,QAAQ,CAACx9C,IAAT,CAAc,IAAd,EAAoB80C,QAAQ,CAACrzC,EAA7B;;AAEA,MAAI,OAAOqzC,QAAQ,CAAC70C,KAAhB,KAA0B,WAA9B,EAA2C;AACzCu9C,IAAAA,QAAQ,CAACx9C,IAAT,CAAc,OAAd,EAAuB80C,QAAQ,CAAC70C,KAAhC;AACD;;AAED,SAAOu9C,QAAP;AACD,CAhBM;AAkBA,IAAMkU,QAAQ,GAAG,SAAXA,QAAW,CAAUv5C,OAAV,EAAmBw5C,QAAnB,EAA6B;AACnD,MAAMv0C,MAAM,GAAG,EAAf;AACA,MAAMw0C,aAAa,GAAGz5C,OAAO,CAC1BhW,MADmB,CACZ,QADY,EAEnBnC,IAFmB,CAEd,IAFc,EAER2xD,QAAQ,CAACjkD,EAFD,EAGnB1N,IAHmB,CAGd,IAHc,EAGR2xD,QAAQ,CAAChkD,EAHD,EAInB3N,IAJmB,CAId,OAJc,EAIL,MAJK,EAKnBA,IALmB,CAKd,GALc,EAKTod,MALS,EAMnBpd,IANmB,CAMd,cANc,EAME,CANF,EAOnBA,IAPmB,CAOd,UAPc,EAOF,SAPE,CAAtB;AASA,MAAM6xD,IAAI,GAAG15C,OAAO,CAAChW,MAAR,CAAe,GAAf,CAAb,CAXmD,CAanD;;AACA0vD,EAAAA,IAAI,CACD1vD,MADH,CACU,QADV,EAEGnC,IAFH,CAEQ,IAFR,EAEc2xD,QAAQ,CAACjkD,EAAT,GAAc0P,MAAM,GAAG,CAFrC,EAGGpd,IAHH,CAGQ,IAHR,EAGc2xD,QAAQ,CAAChkD,EAAT,GAAcyP,MAAM,GAAG,CAHrC,EAIGpd,IAJH,CAIQ,GAJR,EAIa,GAJb,EAKGA,IALH,CAKQ,cALR,EAKwB,CALxB,EAMGA,IANH,CAMQ,MANR,EAMgB,MANhB,EAOGA,IAPH,CAOQ,QAPR,EAOkB,MAPlB,EAdmD,CAuBnD;;AACA6xD,EAAAA,IAAI,CACD1vD,MADH,CACU,QADV,EAEGnC,IAFH,CAEQ,IAFR,EAEc2xD,QAAQ,CAACjkD,EAAT,GAAc0P,MAAM,GAAG,CAFrC,EAGGpd,IAHH,CAGQ,IAHR,EAGc2xD,QAAQ,CAAChkD,EAAT,GAAcyP,MAAM,GAAG,CAHrC,EAIGpd,IAJH,CAIQ,GAJR,EAIa,GAJb,EAKGA,IALH,CAKQ,cALR,EAKwB,CALxB,EAMGA,IANH,CAMQ,MANR,EAMgB,MANhB,EAOGA,IAPH,CAOQ,QAPR,EAOkB,MAPlB;AASA;;AACA,WAAS8xD,KAAT,CAAeD,IAAf,EAAqB;AACnB,QAAMplB,GAAG,GAAGglB,uCAAK,GACdM,UADS,CACE7qD,IAAI,CAAC8qD,EAAL,GAAU,CADZ,EAETC,QAFS,CAEA,KAAK/qD,IAAI,CAAC8qD,EAAL,GAAU,CAAf,CAFA,EAGThkB,WAHS,CAGG5wB,MAAM,GAAG,CAHZ,EAIT6wB,WAJS,CAIG7wB,MAAM,GAAG,GAJZ,CAAZ,CADmB,CAMnB;;AACAy0C,IAAAA,IAAI,CACD1vD,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,OAFR,EAEiB,OAFjB,EAGGA,IAHH,CAGQ,GAHR,EAGaysC,GAHb,EAIGzsC,IAJH,CAIQ,WAJR,EAIqB,eAAe2xD,QAAQ,CAACjkD,EAAxB,GAA6B,GAA7B,IAAoCikD,QAAQ,CAAChkD,EAAT,GAAc,CAAlD,IAAuD,GAJ5E;AAKD;AAED;;;AACA,WAASukD,GAAT,CAAaL,IAAb,EAAmB;AACjB,QAAMplB,GAAG,GAAGglB,uCAAK,GACdM,UADS,CACG,IAAI7qD,IAAI,CAAC8qD,EAAV,GAAgB,CADlB,EAETC,QAFS,CAEA,KAAK/qD,IAAI,CAAC8qD,EAAL,GAAU,CAAf,CAFA,EAGThkB,WAHS,CAGG5wB,MAAM,GAAG,CAHZ,EAIT6wB,WAJS,CAIG7wB,MAAM,GAAG,GAJZ,CAAZ,CADiB,CAMjB;;AACAy0C,IAAAA,IAAI,CACD1vD,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,OAFR,EAEiB,OAFjB,EAGGA,IAHH,CAGQ,GAHR,EAGaysC,GAHb,EAIGzsC,IAJH,CAIQ,WAJR,EAIqB,eAAe2xD,QAAQ,CAACjkD,EAAxB,GAA6B,GAA7B,IAAoCikD,QAAQ,CAAChkD,EAAT,GAAc,CAAlD,IAAuD,GAJ5E;AAKD;AAED;;;AACA,WAASwkD,UAAT,CAAoBN,IAApB,EAA0B;AACxBA,IAAAA,IAAI,CACD1vD,MADH,CACU,MADV,EAEGnC,IAFH,CAEQ,OAFR,EAEiB,OAFjB,EAGGA,IAHH,CAGQ,QAHR,EAGkB,CAHlB,EAIGA,IAJH,CAIQ,IAJR,EAIc2xD,QAAQ,CAACjkD,EAAT,GAAc,CAJ5B,EAKG1N,IALH,CAKQ,IALR,EAKc2xD,QAAQ,CAAChkD,EAAT,GAAc,CAL5B,EAMG3N,IANH,CAMQ,IANR,EAMc2xD,QAAQ,CAACjkD,EAAT,GAAc,CAN5B,EAOG1N,IAPH,CAOQ,IAPR,EAOc2xD,QAAQ,CAAChkD,EAAT,GAAc,CAP5B,EAQG3N,IARH,CAQQ,OARR,EAQiB,OARjB,EASGA,IATH,CASQ,cATR,EASwB,KATxB,EAUGA,IAVH,CAUQ,QAVR,EAUkB,MAVlB;AAWD;;AAED,MAAI2xD,QAAQ,CAAC1C,KAAT,GAAiB,CAArB,EAAwB;AACtB6C,IAAAA,KAAK,CAACD,IAAD,CAAL;AACD,GAFD,MAEO,IAAIF,QAAQ,CAAC1C,KAAT,GAAiB,CAArB,EAAwB;AAC7BiD,IAAAA,GAAG,CAACL,IAAD,CAAH;AACD,GAFM,MAEA;AACLM,IAAAA,UAAU,CAACN,IAAD,CAAV;AACD;;AAED,SAAOD,aAAP;AACD,CAvFM;AAyFA,IAAMnC,UAAU,GAAG,SAAbA,UAAa,CAAUt3C,OAAV,EAAmBq3C,UAAnB,EAA+B;AACvD,MAAMoC,aAAa,GAAGz5C,OAAO,CAAChW,MAAR,CAAe,QAAf,CAAtB;AACAyvD,EAAAA,aAAa,CAAC5xD,IAAd,CAAmB,IAAnB,EAAyBwvD,UAAU,CAAC9hD,EAApC;AACAkkD,EAAAA,aAAa,CAAC5xD,IAAd,CAAmB,IAAnB,EAAyBwvD,UAAU,CAAC7hD,EAApC;AACAikD,EAAAA,aAAa,CAAC5xD,IAAd,CAAmB,OAAnB,EAA4B,WAAWwvD,UAAU,CAAC7oD,GAAlD;AACAirD,EAAAA,aAAa,CAAC5xD,IAAd,CAAmB,MAAnB,EAA2BwvD,UAAU,CAAC7xC,IAAtC;AACAi0C,EAAAA,aAAa,CAAC5xD,IAAd,CAAmB,QAAnB,EAA6BwvD,UAAU,CAAC9xC,MAAxC;AACAk0C,EAAAA,aAAa,CAAC5xD,IAAd,CAAmB,GAAnB,EAAwBwvD,UAAU,CAAC7nD,CAAnC;;AAEA,MAAI,OAAOiqD,aAAa,CAAC3xD,KAArB,KAA+B,WAAnC,EAAgD;AAC9C2xD,IAAAA,aAAa,CAAC5xD,IAAd,CAAmB,OAAnB,EAA4B4xD,aAAa,CAAC3xD,KAA1C;AACD;;AAED,MAAI,OAAOuvD,UAAU,CAACr6C,KAAlB,KAA4B,WAAhC,EAA6C;AAC3Cy8C,IAAAA,aAAa,CAACzvD,MAAd,CAAqB,OAArB,EAA8BhC,IAA9B,CAAmCqvD,UAAU,CAACr6C,KAA9C;AACD;;AAED,SAAOy8C,aAAP;AACD,CAlBM;AAoBA,IAAM5X,QAAQ,GAAG,SAAXA,QAAW,CAAUx3C,IAAV,EAAgBijD,QAAhB,EAA0B;AAChD;AACA,MAAMyD,KAAK,GAAGzD,QAAQ,CAACtlD,IAAT,CAAc0D,OAAd,CAAsB,cAAtB,EAAsC,GAAtC,CAAd;AAEA,MAAMk6C,QAAQ,GAAGv7C,IAAI,CAACL,MAAL,CAAY,MAAZ,CAAjB;AACA47C,EAAAA,QAAQ,CAAC/9C,IAAT,CAAc,GAAd,EAAmBylD,QAAQ,CAAC/jD,CAA5B;AACAq8C,EAAAA,QAAQ,CAAC/9C,IAAT,CAAc,GAAd,EAAmBylD,QAAQ,CAAC9jD,CAA5B;AACAo8C,EAAAA,QAAQ,CAAC/9C,IAAT,CAAc,OAAd,EAAuB,QAAvB;AAEA+9C,EAAAA,QAAQ,CAACx8C,KAAT,CAAe,aAAf,EAA8BkkD,QAAQ,CAAC7H,MAAvC;;AAEA,MAAI,OAAO6H,QAAQ,CAACxlD,KAAhB,KAA0B,WAA9B,EAA2C;AACzC89C,IAAAA,QAAQ,CAAC/9C,IAAT,CAAc,OAAd,EAAuBylD,QAAQ,CAACxlD,KAAhC;AACD;;AAED,MAAM8lD,IAAI,GAAGhI,QAAQ,CAAC57C,MAAT,CAAgB,OAAhB,CAAb;AACA4jD,EAAAA,IAAI,CAAC/lD,IAAL,CAAU,GAAV,EAAeylD,QAAQ,CAAC/jD,CAAT,GAAa+jD,QAAQ,CAAC5H,UAAT,GAAsB,CAAlD;AACAkI,EAAAA,IAAI,CAAC5lD,IAAL,CAAU+oD,KAAV;AAEA,SAAOnL,QAAP;AACD,CApBM;AAsBA,IAAMiI,SAAS,GAAG,SAAZA,SAAY,CAAUxjD,IAAV,EAAgByjD,SAAhB,EAA2B;AAClD;AACF;AACA;AACA;AACA;AACA;AACA;AACE,WAASC,SAAT,CAAmBxkD,CAAnB,EAAsBC,CAAtB,EAAyBX,KAAzB,EAAgCC,MAAhC,EAAwCklD,GAAxC,EAA6C;AAC3C,WACEzkD,CAAC,GACD,GADA,GAEAC,CAFA,GAGA,GAHA,IAICD,CAAC,GAAGV,KAJL,IAKA,GALA,GAMAW,CANA,GAOA,GAPA,IAQCD,CAAC,GAAGV,KARL,IASA,GATA,IAUCW,CAAC,GAAGV,MAAJ,GAAaklD,GAVd,IAWA,GAXA,IAYCzkD,CAAC,GAAGV,KAAJ,GAAYmlD,GAAG,GAAG,GAZnB,IAaA,GAbA,IAcCxkD,CAAC,GAAGV,MAdL,IAeA,GAfA,GAgBAS,CAhBA,GAiBA,GAjBA,IAkBCC,CAAC,GAAGV,MAlBL,CADF;AAqBD;;AACD,MAAMsM,OAAO,GAAG/K,IAAI,CAACL,MAAL,CAAY,SAAZ,CAAhB;AACAoL,EAAAA,OAAO,CAACvN,IAAR,CAAa,QAAb,EAAuBkmD,SAAS,CAACD,SAAS,CAACvkD,CAAX,EAAcukD,SAAS,CAACtkD,CAAxB,EAA2B,EAA3B,EAA+B,EAA/B,EAAmC,CAAnC,CAAhC;AACA4L,EAAAA,OAAO,CAACvN,IAAR,CAAa,OAAb,EAAsB,UAAtB;AAEAimD,EAAAA,SAAS,CAACtkD,CAAV,GAAcskD,SAAS,CAACtkD,CAAV,GAAcskD,SAAS,CAACmM,WAAtC;AACAnM,EAAAA,SAAS,CAACvkD,CAAV,GAAcukD,SAAS,CAACvkD,CAAV,GAAc,MAAMukD,SAAS,CAACmM,WAA5C;AACApY,EAAAA,QAAQ,CAACx3C,IAAD,EAAOyjD,SAAP,CAAR;AACD,CAtCM;AAwCA,IAAMsK,WAAW,GAAG,SAAdA,WAAc,CAAU/tD,IAAV,EAAgB08B,OAAhB,EAAyB/gC,IAAzB,EAA+B;AACxD,MAAMsmB,CAAC,GAAGjiB,IAAI,CAACL,MAAL,CAAY,GAAZ,CAAV;AAEA,MAAM1C,IAAI,GAAG89C,WAAW,EAAxB;AACA99C,EAAAA,IAAI,CAACiC,CAAL,GAASw9B,OAAO,CAACx9B,CAAjB;AACAjC,EAAAA,IAAI,CAACkC,CAAL,GAASu9B,OAAO,CAACv9B,CAAjB;AACAlC,EAAAA,IAAI,CAACke,IAAL,GAAYuhB,OAAO,CAACvhB,IAApB;AACAle,EAAAA,IAAI,CAACuB,KAAL,GAAa7C,IAAI,CAAC6C,KAAlB;AACAvB,EAAAA,IAAI,CAACwB,MAAL,GAAc9C,IAAI,CAAC8C,MAAnB;AACAxB,EAAAA,IAAI,CAACQ,KAAL,GAAa,kCAAkCi/B,OAAO,CAACjwB,GAAvD;AACAxP,EAAAA,IAAI,CAAC+B,EAAL,GAAU,CAAV;AACA/B,EAAAA,IAAI,CAACgC,EAAL,GAAU,CAAV;AACAg8C,EAAAA,QAAQ,CAACh5B,CAAD,EAAIhlB,IAAJ,CAAR;;AAEAgnD,EAAAA,sBAAsB,CAACtoD,IAAD,CAAtB,CACE+gC,OAAO,CAAC/+B,IADV,EAEEskB,CAFF,EAGEhlB,IAAI,CAACiC,CAHP,EAIEjC,IAAI,CAACkC,CAJP,EAKElC,IAAI,CAACuB,KALP,EAMEvB,IAAI,CAACwB,MANP,EAOE;AAAEhB,IAAAA,KAAK,EAAE,kCAAkCi/B,OAAO,CAACjwB;AAAnD,GAPF,EAQE9Q,IARF,EASE+gC,OAAO,CAACqwB,MATV;AAWD,CAzBM;AA2BP,IAAI8C,SAAS,GAAG,CAAC,CAAjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM5B,QAAQ,GAAG,SAAXA,QAAW,CAAUjuD,IAAV,EAAgBm6B,IAAhB,EAAsBx+B,IAAtB,EAA4B;AAClD,MAAMkoD,MAAM,GAAG1pB,IAAI,CAACj7B,CAAL,GAASvD,IAAI,CAAC6C,KAAL,GAAa,CAArC;AACA,MAAMyjB,CAAC,GAAGjiB,IAAI,CAACL,MAAL,CAAY,GAAZ,CAAV;AACAkwD,EAAAA,SAAS;AACT,MAAMl8C,SAAS,GAAG,MAAM,IAAI,EAA5B;AACAsO,EAAAA,CAAC,CAACtiB,MAAF,CAAS,MAAT,EACGnC,IADH,CACQ,IADR,EACc,SAASqyD,SADvB,EAEGryD,IAFH,CAEQ,IAFR,EAEcqmD,MAFd,EAGGrmD,IAHH,CAGQ,IAHR,EAGc28B,IAAI,CAACh7B,CAHnB,EAIG3B,IAJH,CAIQ,IAJR,EAIcqmD,MAJd,EAKGrmD,IALH,CAKQ,IALR,EAKcmW,SALd,EAMGnW,IANH,CAMQ,OANR,EAMiB,WANjB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,KAPxB,EAQGA,IARH,CAQQ,kBARR,EAQ4B,KAR5B,EASGA,IATH,CASQ,QATR,EASkB,MATlB;AAWA0xD,EAAAA,QAAQ,CAACjtC,CAAD,EAAI;AACV/W,IAAAA,EAAE,EAAE24C,MADM;AAEV14C,IAAAA,EAAE,EAAE,MAAM,CAAC,IAAIgvB,IAAI,CAACsyB,KAAV,IAAmB,EAFnB;AAGVA,IAAAA,KAAK,EAAEtyB,IAAI,CAACsyB;AAHF,GAAJ,CAAR;AAMA,MAAMxvD,IAAI,GAAG89C,WAAW,EAAxB;AACA99C,EAAAA,IAAI,CAACiC,CAAL,GAASi7B,IAAI,CAACj7B,CAAd;AACAjC,EAAAA,IAAI,CAACkC,CAAL,GAASg7B,IAAI,CAACh7B,CAAd;AACAlC,EAAAA,IAAI,CAACke,IAAL,GAAYgf,IAAI,CAAChf,IAAjB;AACAle,EAAAA,IAAI,CAACuB,KAAL,GAAa7C,IAAI,CAAC6C,KAAlB;AACAvB,EAAAA,IAAI,CAACwB,MAAL,GAAc9C,IAAI,CAAC8C,MAAnB;AACAxB,EAAAA,IAAI,CAACQ,KAAL,GAAa,oBAAoB08B,IAAI,CAAC1tB,GAAtC;AACAxP,EAAAA,IAAI,CAAC+B,EAAL,GAAU,CAAV;AACA/B,EAAAA,IAAI,CAACgC,EAAL,GAAU,CAAV;AACAg8C,EAAAA,QAAQ,CAACh5B,CAAD,EAAIhlB,IAAJ,CAAR;AAEA,MAAIw5B,IAAI,GAAG0D,IAAI,CAACj7B,CAAL,GAAS,EAApB;AACAi7B,EAAAA,IAAI,CAACiyB,MAAL,CAAYhwD,OAAZ,CAAoB,UAAC0wD,MAAD,EAAY;AAC9B,QAAMC,MAAM,GAAG5yB,IAAI,CAACuX,MAAL,CAAYob,MAAZ,EAAoBplB,KAAnC;AAEA,QAAM78B,MAAM,GAAG;AACbK,MAAAA,EAAE,EAAEurB,IADS;AAEbtrB,MAAAA,EAAE,EAAEgvB,IAAI,CAACh7B,CAFI;AAGbgG,MAAAA,CAAC,EAAE,CAHU;AAIbgW,MAAAA,IAAI,EAAE4xC,MAJO;AAKb7xC,MAAAA,MAAM,EAAE,MALK;AAMbvI,MAAAA,KAAK,EAAEm6C,MANM;AAOb3oD,MAAAA,GAAG,EAAEg2B,IAAI,CAACuX,MAAL,CAAYob,MAAZ,EAAoBhD;AAPZ,KAAf;AAUAmD,IAAAA,UAAU,CAAChrC,CAAD,EAAIpX,MAAJ,CAAV;AACA4rB,IAAAA,IAAI,IAAI,EAAR;AACD,GAfD;;AAiBAwtB,EAAAA,sBAAsB,CAACtoD,IAAD,CAAtB,CACEw+B,IAAI,CAACA,IADP,EAEElY,CAFF,EAGEhlB,IAAI,CAACiC,CAHP,EAIEjC,IAAI,CAACkC,CAJP,EAKElC,IAAI,CAACuB,KALP,EAMEvB,IAAI,CAACwB,MANP,EAOE;AAAEhB,IAAAA,KAAK,EAAE;AAAT,GAPF,EAQE9B,IARF,EASEw+B,IAAI,CAAC4yB,MATP;AAWD,CA9DM;AAgEP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMzO,kBAAkB,GAAG,SAArBA,kBAAqB,CAAUt+C,IAAV,EAAgB4lB,MAAhB,EAAwB;AACxD,MAAMo1B,QAAQ,GAAGC,QAAQ,CAACj7C,IAAD,EAAO;AAC9Bd,IAAAA,CAAC,EAAE0mB,MAAM,CAAC+xB,MADoB;AAE9Bx4C,IAAAA,CAAC,EAAEymB,MAAM,CAACiyB,MAFoB;AAG9Br5C,IAAAA,KAAK,EAAEonB,MAAM,CAACgyB,KAAP,GAAehyB,MAAM,CAAC+xB,MAHC;AAI9Bl5C,IAAAA,MAAM,EAAEmnB,MAAM,CAACkyB,KAAP,GAAelyB,MAAM,CAACiyB,MAJA;AAK9B18B,IAAAA,IAAI,EAAEyK,MAAM,CAACzK,IALiB;AAM9B1d,IAAAA,KAAK,EAAE;AANuB,GAAP,CAAzB;AAQAu9C,EAAAA,QAAQ,CAACsJ,KAAT;AACD,CAVM;AAYA,IAAMnJ,UAAU,GAAG,SAAbA,UAAa,GAAY;AACpC,SAAO;AACLj8C,IAAAA,CAAC,EAAE,CADE;AAELC,IAAAA,CAAC,EAAE,CAFE;AAGLgc,IAAAA,IAAI,EAAEpd,SAHD;AAIL,mBAAe,OAJV;AAKLS,IAAAA,KAAK,EAAE,GALF;AAMLC,IAAAA,MAAM,EAAE,GANH;AAOL48C,IAAAA,UAAU,EAAE,CAPP;AAQLr8C,IAAAA,EAAE,EAAE,CARC;AASLC,IAAAA,EAAE,EAAE;AATC,GAAP;AAWD,CAZM;AAcA,IAAM87C,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAO;AACL77C,IAAAA,CAAC,EAAE,CADE;AAELC,IAAAA,CAAC,EAAE,CAFE;AAGLX,IAAAA,KAAK,EAAE,GAHF;AAIL48C,IAAAA,MAAM,EAAE,OAJH;AAKL38C,IAAAA,MAAM,EAAE,GALH;AAMLO,IAAAA,EAAE,EAAE,CANC;AAOLC,IAAAA,EAAE,EAAE;AAPC,GAAP;AASD,CAVM;;AAYP,IAAMglD,sBAAsB,GAAI,YAAY;AAC1C;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,WAASO,MAAT,CAAgBC,OAAhB,EAAyBxiC,CAAzB,EAA4B/iB,CAA5B,EAA+BC,CAA/B,EAAkCX,KAAlC,EAAyCC,MAAzC,EAAiDujD,SAAjD,EAA4D+K,MAA5D,EAAoE;AAClE,QAAMpvD,IAAI,GAAGskB,CAAC,CACXtiB,MADU,CACH,MADG,EAEVnC,IAFU,CAEL,GAFK,EAEA0B,CAAC,GAAGV,KAAK,GAAG,CAFZ,EAGVhB,IAHU,CAGL,GAHK,EAGA2B,CAAC,GAAGV,MAAM,GAAG,CAAb,GAAiB,CAHjB,EAIVM,KAJU,CAIJ,YAJI,EAIUguD,MAJV,EAKVhuD,KALU,CAKJ,aALI,EAKW,QALX,EAMVpB,IANU,CAML8mD,OANK,CAAb;;AAOAC,IAAAA,aAAa,CAAC/mD,IAAD,EAAOqkD,SAAP,CAAb;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,WAAS2C,OAAT,CAAiBF,OAAjB,EAA0BxiC,CAA1B,EAA6B/iB,CAA7B,EAAgCC,CAAhC,EAAmCX,KAAnC,EAA0CC,MAA1C,EAAkDujD,SAAlD,EAA6DrmD,IAA7D,EAAmEoxD,MAAnE,EAA2E;AACzE,QAAQtzC,YAAR,GAAyC9d,IAAzC,CAAQ8d,YAAR;AAAA,QAAsBC,cAAtB,GAAyC/d,IAAzC,CAAsB+d,cAAtB;AAEA,QAAMiiC,KAAK,GAAG8I,OAAO,CAAC9iD,KAAR,CAAc,cAAd,CAAd;;AACA,SAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwgD,KAAK,CAACvgD,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,UAAMyJ,EAAE,GAAGzJ,CAAC,GAAGse,YAAJ,GAAoBA,YAAY,IAAIkiC,KAAK,CAACvgD,MAAN,GAAe,CAAnB,CAAb,GAAsC,CAApE;AACA,UAAMuC,IAAI,GAAGskB,CAAC,CACXtiB,MADU,CACH,MADG,EAEVnC,IAFU,CAEL,GAFK,EAEA0B,CAAC,GAAGV,KAAK,GAAG,CAFZ,EAGVhB,IAHU,CAGL,GAHK,EAGA2B,CAHA,EAIV3B,IAJU,CAIL,MAJK,EAIGuvD,MAJH,EAKVhuD,KALU,CAKJ,aALI,EAKW,QALX,EAMVA,KANU,CAMJ,WANI,EAMS0a,YANT,EAOV1a,KAPU,CAOJ,aAPI,EAOW2a,cAPX,CAAb;AAQA/b,MAAAA,IAAI,CACDgC,MADH,CACU,OADV,EAEGnC,IAFH,CAEQ,GAFR,EAEa0B,CAAC,GAAGV,KAAK,GAAG,CAFzB,EAGGhB,IAHH,CAGQ,IAHR,EAGcoH,EAHd,EAIGjH,IAJH,CAIQg+C,KAAK,CAACxgD,CAAD,CAJb;AAMAwC,MAAAA,IAAI,CACDH,IADH,CACQ,GADR,EACa2B,CAAC,GAAGV,MAAM,GAAG,GAD1B,EAEGjB,IAFH,CAEQ,mBAFR,EAE6B,SAF7B,EAGGA,IAHH,CAGQ,oBAHR,EAG8B,SAH9B;;AAKAknD,MAAAA,aAAa,CAAC/mD,IAAD,EAAOqkD,SAAP,CAAb;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,WAAS4C,IAAT,CAAcH,OAAd,EAAuBxiC,CAAvB,EAA0B/iB,CAA1B,EAA6BC,CAA7B,EAAgCX,KAAhC,EAAuCC,MAAvC,EAA+CujD,SAA/C,EAA0DrmD,IAA1D,EAAgE;AAC9D,QAAMslB,IAAI,GAAGgB,CAAC,CAACtiB,MAAF,CAAS,QAAT,CAAb;AACA,QAAMkS,CAAC,GAAGoP,IAAI,CACXthB,MADO,CACA,eADA,EAEPnC,IAFO,CAEF,GAFE,EAEG0B,CAFH,EAGP1B,IAHO,CAGF,GAHE,EAGG2B,CAHH,EAIP3B,IAJO,CAIF,OAJE,EAIOgB,KAJP,EAKPhB,IALO,CAKF,QALE,EAKQiB,MALR,EAMPjB,IANO,CAMF,UANE,EAMU,OANV,CAAV;AAQA,QAAMG,IAAI,GAAGkU,CAAC,CACXlS,MADU,CACH,WADG,EAEVZ,KAFU,CAEJ,SAFI,EAEO,OAFP,EAGVA,KAHU,CAGJ,QAHI,EAGM,MAHN,EAIVA,KAJU,CAIJ,OAJI,EAIK,MAJL,CAAb;AAMApB,IAAAA,IAAI,CACDgC,MADH,CACU,KADV,EAEGnC,IAFH,CAEQ,OAFR,EAEiB,OAFjB,EAGGuB,KAHH,CAGS,SAHT,EAGoB,YAHpB,EAIGA,KAJH,CAIS,YAJT,EAIuB,QAJvB,EAKGA,KALH,CAKS,gBALT,EAK2B,QAL3B,EAMGpB,IANH,CAMQ8mD,OANR;AAQAE,IAAAA,OAAO,CAACF,OAAD,EAAUxjC,IAAV,EAAgB/hB,CAAhB,EAAmBC,CAAnB,EAAsBX,KAAtB,EAA6BC,MAA7B,EAAqCujD,SAArC,EAAgDrmD,IAAhD,CAAP;;AACA+oD,IAAAA,aAAa,CAAC/mD,IAAD,EAAOqkD,SAAP,CAAb;AACD;AAED;AACF;AACA;AACA;;;AACE,WAAS0C,aAAT,CAAuBG,MAAvB,EAA+BC,iBAA/B,EAAkD;AAChD,SAAK,IAAMzoD,GAAX,IAAkByoD,iBAAlB,EAAqC;AACnC,UAAIzoD,GAAG,IAAIyoD,iBAAX,EAA8B;AAC5B;AACA;AACAD,QAAAA,MAAM,CAACrnD,IAAP,CAAYnB,GAAZ,EAAiByoD,iBAAiB,CAACzoD,GAAD,CAAlC;AACD;AACF;AACF;;AAED,SAAO,UAAUV,IAAV,EAAgB;AACrB,WAAOA,IAAI,CAACie,aAAL,KAAuB,IAAvB,GAA8BgrC,IAA9B,GAAqCjpD,IAAI,CAACie,aAAL,KAAuB,KAAvB,GAA+B4qC,MAA/B,GAAwCG,OAApF;AACD,GAFD;AAGD,CArH8B,EAA/B;;AAuHA,IAAMyI,YAAY,GAAG,SAAfA,YAAe,CAAU0C,QAAV,EAAoB;AACvCA,EAAAA,QAAQ,CACLnwD,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGnC,IAHH,CAGQ,IAHR,EAGc,WAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,CAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,CANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,CAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGmC,MATH,CASU,MATV,EAUGnC,IAVH,CAUQ,GAVR,EAUa,kBAVb,EADuC,CAWL;AACnC,CAZD;;AAcA,iEAAe;AACby9C,EAAAA,QAAQ,EAARA,QADa;AAEbgS,EAAAA,UAAU,EAAVA,UAFa;AAGbc,EAAAA,WAAW,EAAXA,WAHa;AAIbvW,EAAAA,QAAQ,EAARA,QAJa;AAKbgM,EAAAA,SAAS,EAATA,SALa;AAMbyK,EAAAA,QAAQ,EAARA,QANa;AAOb3P,EAAAA,kBAAkB,EAAlBA,kBAPa;AAQbnD,EAAAA,UAAU,EAAVA,UARa;AASbJ,EAAAA,WAAW,EAAXA,WATa;AAUbqS,EAAAA,YAAY,EAAZA;AAVa,CAAf;;;;;;;;;;;;;;;;;;;;ACndA;AACA;AACA;AAEA,IAAMzxD,IAAI,GAAG,EAAb;AACO,IAAM8nB,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMxnB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYwnB,GAAZ,CAAb;AAEAxnB,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUC,GAAV,EAAe;AAC1BV,IAAAA,IAAI,CAACU,GAAD,CAAJ,GAAYqnB,GAAG,CAACrnB,GAAD,CAAf;AACD,GAFD;AAGD,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM8nB,IAAI,GAAG,SAAPA,IAAO,CAAC9mB,EAAD,EAAK+0B,GAAL,EAAa;AAC/B,MAAI;AACFh4B,IAAAA,8CAAA,CAAU,iCAAV;AAEA,QAAMqmB,GAAG,GAAG1jB,0CAAM,CAAC,MAAMM,EAAP,CAAlB;AAEA,QAAM4kB,CAAC,GAAGxB,GAAG,CAAC9gB,MAAJ,CAAW,GAAX,CAAV;AAEAsiB,IAAAA,CAAC,CAACtiB,MAAF,CAAS,MAAT,EACGnC,IADH,CACQ,OADR,EACiB,YADjB,EAEGA,IAFH,CAGI,GAHJ,EAII,4kBAJJ;AAOAykB,IAAAA,CAAC,CAACtiB,MAAF,CAAS,MAAT,EACGnC,IADH,CACQ,OADR,EACiB,YADjB,EAEGA,IAFH,CAGI,GAHJ,EAII,6LAJJ;AAOAykB,IAAAA,CAAC,CAACtiB,MAAF,CAAS,MAAT,EACGnC,IADH,CACQ,OADR,EACiB,YADjB,EAEGA,IAFH,CAGI,GAHJ,EAII,8LAJJ;AAOAykB,IAAAA,CAAC,CAACtiB,MAAF,CAAS,MAAT,EACGnC,IADH,CACQ,OADR,EACiB,YADjB,EAEGA,IAFH,CAGI,GAHJ,EAII,6GAJJ;AAOAykB,IAAAA,CAAC,CAACtiB,MAAF,CAAS,MAAT,EACGnC,IADH,CACQ,OADR,EACiB,YADjB,EAEGA,IAFH,CAGI,GAHJ,EAII,kHAJJ;AAOAykB,IAAAA,CAAC,CAACtiB,MAAF,CAAS,MAAT,EACGnC,IADH,CACQ,OADR,EACiB,YADjB,EAEGA,IAFH,CAGI,GAHJ,EAII,+LAJJ;AAOAykB,IAAAA,CAAC,CAACtiB,MAAF,CAAS,MAAT,EAAiB;AAAjB,KACGnC,IADH,CACQ,OADR,EACiB,YADjB,EAEGA,IAFH,CAEQ,GAFR,EAEa,IAFb,EAGGA,IAHH,CAGQ,GAHR,EAGa,GAHb,EAIGA,IAJH,CAIQ,WAJR,EAIqB,OAJrB,EAKGuB,KALH,CAKS,aALT,EAKwB,QALxB,EAMGpB,IANH,CAMQ,uBANR;AAOAskB,IAAAA,CAAC,CAACtiB,MAAF,CAAS,MAAT,EAAiB;AAAjB,KACGnC,IADH,CACQ,OADR,EACiB,YADjB,EAEGA,IAFH,CAEQ,GAFR,EAEa,IAFb,EAGGA,IAHH,CAGQ,GAHR,EAGa,GAHb,EAIGA,IAJH,CAIQ,WAJR,EAIqB,OAJrB,EAKGuB,KALH,CAKS,aALT,EAKwB,QALxB,EAMGpB,IANH,CAMQ,qBAAqBy0B,GAN7B;AAQA3R,IAAAA,GAAG,CAACjjB,IAAJ,CAAS,QAAT,EAAmB,GAAnB;AACAijB,IAAAA,GAAG,CAACjjB,IAAJ,CAAS,OAAT,EAAkB,GAAlB;AACAijB,IAAAA,GAAG,CAACjjB,IAAJ,CAAS,SAAT,EAAoB,eAApB;AACD,GAnED,CAmEE,OAAO4I,CAAP,EAAU;AACVhM,IAAAA,8CAAA,CAAU,oCAAV;AACAA,IAAAA,8CAAA,CAAUgM,CAAC,CAACy+B,OAAZ;AACD;AACF,CAxEM;AA0EP,iEAAe;AACbphB,EAAAA,OAAO,EAAPA,OADa;AAEbU,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;;AC7FA,IAAI4rC,oBAAoB,GAAG,EAA3B;AACO,IAAMnO,WAAW,GAAG,SAAdA,WAAc,CAACoO,IAAD,EAAU;AACnCD,EAAAA,oBAAoB,CAACpzD,IAArB,CAA0BqzD,IAA1B;AACD,CAFM;AAGA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,GAAM;AACnCF,EAAAA,oBAAoB,CAAC3zD,OAArB,CAA6B,UAACyV,CAAD,EAAO;AAClCA,IAAAA,CAAC;AACF,GAFD;AAGAk+C,EAAAA,oBAAoB,GAAG,EAAvB;AACD,CALM;;;;;;;;;;;;;;;;;;;ACJP;AAEO,IAAMG,MAAM,GAAG;AACpB5zD,EAAAA,KAAK,EAAE,CADa;AAEpBgE,EAAAA,IAAI,EAAE,CAFc;AAGpB4E,EAAAA,IAAI,EAAE,CAHc;AAIpBmK,EAAAA,KAAK,EAAE,CAJa;AAKpB8gD,EAAAA,KAAK,EAAE;AALa,CAAf;AAQA,IAAM/1D,GAAG,GAAG;AACjBkC,EAAAA,KAAK,EAAE,iBAAM,CAAE,CADE;AAEjBgE,EAAAA,IAAI,EAAE,gBAAM,CAAE,CAFG;AAGjB4E,EAAAA,IAAI,EAAE,gBAAM,CAAE,CAHG;AAIjBmK,EAAAA,KAAK,EAAE,iBAAM,CAAE,CAJE;AAKjB8gD,EAAAA,KAAK,EAAE,iBAAM,CAAE;AALE,CAAZ;AAQA,IAAMC,WAAW,GAAG,SAAdA,WAAc,GAA2B;AAAA,MAAjB1nC,KAAiB,uEAAT,OAAS;;AACpD,MAAIrhB,KAAK,CAACqhB,KAAD,CAAT,EAAkB;AAChBA,IAAAA,KAAK,GAAGA,KAAK,CAACyQ,WAAN,EAAR;;AACA,QAAI+2B,MAAM,CAACxnC,KAAD,CAAN,KAAkB3qB,SAAtB,EAAiC;AAC/B2qB,MAAAA,KAAK,GAAGwnC,MAAM,CAACxnC,KAAD,CAAd;AACD;AACF;;AACDtuB,EAAAA,GAAG,CAACgD,KAAJ,GAAY,YAAM,CAAE,CAApB;;AACAhD,EAAAA,GAAG,CAACkC,KAAJ,GAAY,YAAM,CAAE,CAApB;;AACAlC,EAAAA,GAAG,CAACkG,IAAJ,GAAW,YAAM,CAAE,CAAnB;;AACAlG,EAAAA,GAAG,CAAC8K,IAAJ,GAAW,YAAM,CAAE,CAAnB;;AACA9K,EAAAA,GAAG,CAACiV,KAAJ,GAAY,YAAM,CAAE,CAApB;;AACAjV,EAAAA,GAAG,CAAC+1D,KAAJ,GAAY,YAAM,CAAE,CAApB;;AACA,MAAIznC,KAAK,IAAIwnC,MAAM,CAACC,KAApB,EAA2B;AACzB/1D,IAAAA,GAAG,CAAC+1D,KAAJ,GAAYE,OAAO,CAAChhD,KAAR,GACRghD,OAAO,CAAChhD,KAAR,CAAcihD,IAAd,CAAmBD,OAAnB,EAA4Br2B,MAAM,CAAC,OAAD,CAAlC,EAA6C,eAA7C,CADQ,GAERq2B,OAAO,CAACj2D,GAAR,CAAYk2D,IAAZ,CAAiBD,OAAjB,EAA0B,UAA1B,EAAsCr2B,MAAM,CAAC,OAAD,CAA5C,CAFJ;AAGD;;AACD,MAAItR,KAAK,IAAIwnC,MAAM,CAAC7gD,KAApB,EAA2B;AACzBjV,IAAAA,GAAG,CAACiV,KAAJ,GAAYghD,OAAO,CAAChhD,KAAR,GACRghD,OAAO,CAAChhD,KAAR,CAAcihD,IAAd,CAAmBD,OAAnB,EAA4Br2B,MAAM,CAAC,OAAD,CAAlC,EAA6C,eAA7C,CADQ,GAERq2B,OAAO,CAACj2D,GAAR,CAAYk2D,IAAZ,CAAiBD,OAAjB,EAA0B,UAA1B,EAAsCr2B,MAAM,CAAC,OAAD,CAA5C,CAFJ;AAGD;;AACD,MAAItR,KAAK,IAAIwnC,MAAM,CAAChrD,IAApB,EAA0B;AACxB9K,IAAAA,GAAG,CAAC8K,IAAJ,GAAWmrD,OAAO,CAACnrD,IAAR,GACPmrD,OAAO,CAACnrD,IAAR,CAAaorD,IAAb,CAAkBD,OAAlB,EAA2Br2B,MAAM,CAAC,MAAD,CAAjC,EAA2C,eAA3C,CADO,GAEPq2B,OAAO,CAACj2D,GAAR,CAAYk2D,IAAZ,CAAiBD,OAAjB,cAAsCr2B,MAAM,CAAC,MAAD,CAA5C,CAFJ;AAGD;;AACD,MAAItR,KAAK,IAAIwnC,MAAM,CAAC5vD,IAApB,EAA0B;AACxBlG,IAAAA,GAAG,CAACkG,IAAJ,GAAW+vD,OAAO,CAAC/vD,IAAR,CAAa;AAAb,MACP+vD,OAAO,CAAC/vD,IAAR,CAAagwD,IAAb,CAAkBD,OAAlB,EAA2Br2B,MAAM,CAAC,MAAD,CAAjC,EAA2C,kBAA3C,CADO,GAEPq2B,OAAO,CAACj2D,GAAR,CAAYk2D,IAAZ,CAAiBD,OAAjB,EAA0B,UAA1B,EAAsCr2B,MAAM,CAAC,MAAD,CAA5C,CAFJ;AAGD;;AACD,MAAItR,KAAK,IAAIwnC,MAAM,CAAC5zD,KAApB,EAA2B;AACzBlC,IAAAA,GAAG,CAACkC,KAAJ,GAAY+zD,OAAO,CAAC/zD,KAAR,GACR+zD,OAAO,CAAC/zD,KAAR,CAAcg0D,IAAd,CAAmBD,OAAnB,EAA4Br2B,MAAM,CAAC,OAAD,CAAlC,EAA6C,mBAA7C,CADQ,GAERq2B,OAAO,CAACj2D,GAAR,CAAYk2D,IAAZ,CAAiBD,OAAjB,EAA0B,UAA1B,EAAsCr2B,MAAM,CAAC,OAAD,CAA5C,CAFJ;AAGD;AACF,CAtCM;;AAwCP,IAAMA,MAAM,GAAG,SAATA,MAAS,CAACtR,KAAD,EAAW;AACxB,MAAM6nC,IAAI,GAAG/4B,kDAAM,GAAGwC,MAAT,CAAgB,QAAhB,CAAb;AACA,qBAAYu2B,IAAZ,gBAAsB7nC,KAAtB;AACD,CAHD;;;;;;;;;;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMqwB,IAAI,GAAG,SAAPA,IAAO,GAAY;AAAA;;AACvB,MAAMp9C,IAAI,GAAG0gB,6DAAA,EAAb,CADuB,CAEvB;;AACA,MAAI1S,KAAJ;;AACA,MAAI6mD,SAAS,CAACp1D,MAAV,IAAoB,CAAxB,EAA2B;AACzB;AACA,QAAI,OAAOo1D,SAAS,CAAC,CAAD,CAAhB,KAAwB,WAA5B,EAAyC;AACvCC,MAAAA,OAAO,CAACC,cAAR,GAAyBF,SAAS,CAAC,CAAD,CAAlC;AACD;;AAED7mD,IAAAA,KAAK,GAAG6mD,SAAS,CAAC,CAAD,CAAjB;AACD,GAPD,MAOO;AACL7mD,IAAAA,KAAK,GAAG6mD,SAAS,CAAC,CAAD,CAAjB;AACD,GAbsB,CAevB;;;AACA,MAAIG,QAAJ;;AACA,MAAI,OAAOH,SAAS,CAACA,SAAS,CAACp1D,MAAV,GAAmB,CAApB,CAAhB,KAA2C,UAA/C,EAA2D;AACzDu1D,IAAAA,QAAQ,GAAGH,SAAS,CAACA,SAAS,CAACp1D,MAAV,GAAmB,CAApB,CAApB;AACAhB,IAAAA,8CAAA,CAAU,yBAAV;AACD,GAHD,MAGO;AACL,QAAI,OAAOuB,IAAI,CAAC80D,OAAZ,KAAwB,WAA5B,EAAyC;AACvC,UAAI,OAAO90D,IAAI,CAAC80D,OAAL,CAAaE,QAApB,KAAiC,UAArC,EAAiD;AAC/CA,QAAAA,QAAQ,GAAGh1D,IAAI,CAAC80D,OAAL,CAAaE,QAAxB;AACAv2D,QAAAA,8CAAA,CAAU,yBAAV;AACD,OAHD,MAGO;AACLA,QAAAA,8CAAA,CAAU,4BAAV;AACD;AACF;AACF;;AACDuP,EAAAA,KAAK,GACHA,KAAK,KAAK5L,SAAV,GACI8C,QAAQ,CAACyjB,gBAAT,CAA0B,UAA1B,CADJ,GAEI,OAAO3a,KAAP,KAAiB,QAAjB,GACA9I,QAAQ,CAACyjB,gBAAT,CAA0B3a,KAA1B,CADA,GAEAA,KAAK,YAAY5B,MAAM,CAAC6oD,IAAxB,GACA,CAACjnD,KAAD,CADA,GAEAA,KAPN,CA9BuB,CAqCV;;AAEbvP,EAAAA,8CAAA,CAAU,2BAA2Bq2D,OAAO,CAACz6C,WAA7C;;AACA,MAAI,OAAOy6C,OAAO,CAACz6C,WAAf,KAA+B,WAAnC,EAAgD;AAC9C5b,IAAAA,8CAAA,CAAU,0BAA0Bq2D,OAAO,CAACz6C,WAA5C;AACAqG,IAAAA,oEAAA,CAA4B;AAAErG,MAAAA,WAAW,EAAEy6C,OAAO,CAACz6C;AAAvB,KAA5B;AACD;;AAED,MAAI,OAAOy6C,OAAO,CAACI,WAAf,KAA+B,WAAnC,EAAgD;AAC9Cx0C,IAAAA,oEAAA,CAA4B;AAAE3D,MAAAA,KAAK,EAAE+3C,OAAO,CAACI;AAAjB,KAA5B;AACD;;AAED,MAAMC,YAAY,GAAG,IAAIzuD,+DAAJ,CAA2B1G,IAAI,CAACsa,gBAAhC,EAAkDta,IAAI,CAACua,mBAAvD,CAArB;AAEA,MAAI8R,GAAJ;;AAnDuB,6BAqDd7sB,CArDc;AAsDrB,QAAMwa,OAAO,GAAGhM,KAAK,CAACxO,CAAD,CAArB;AAEA;;AACA,QAAI,CAACwa,OAAO,CAACw1C,YAAR,CAAqB,gBAArB,CAAL,EAA6C;AAC3Cx1C,MAAAA,OAAO,CAAClU,YAAR,CAAqB,gBAArB,EAAuC,IAAvC;AACD,KAFD,MAEO;AACL;AACD;;AAED,QAAMpE,EAAE,qBAAcyzD,YAAY,CAACE,IAAb,EAAd,CAAR,CA/DqB,CAiErB;;AACAhpC,IAAAA,GAAG,GAAGrS,OAAO,CAACmhC,SAAd,CAlEqB,CAoErB;;AACA9uB,IAAAA,GAAG,GAAG3lB,2DAAA,CACU2lB,GADV,EAEH9lB,IAFG,GAGHb,OAHG,CAGK,cAHL,EAGqB,OAHrB,CAAN;AAKA,QAAM03C,IAAI,GAAG12C,yDAAA,CAAiB2lB,GAAjB,CAAb;;AACA,QAAI+wB,IAAJ,EAAU;AACR3+C,MAAAA,8CAAA,CAAU,yBAAV,EAAqC2+C,IAArC;AACD;;AAED,QAAI;AACF18B,MAAAA,0DAAA,CACEhf,EADF,EAEE2qB,GAFF,EAGE,UAACmpC,OAAD,EAAUtxC,aAAV,EAA4B;AAC1BlK,QAAAA,OAAO,CAACmhC,SAAR,GAAoBqa,OAApB;;AACA,YAAI,OAAOR,QAAP,KAAoB,WAAxB,EAAqC;AACnCA,UAAAA,QAAQ,CAACtzD,EAAD,CAAR;AACD;;AACD,YAAIwiB,aAAJ,EAAmBA,aAAa,CAAClK,OAAD,CAAb;AACpB,OATH,EAUEA,OAVF;AAYD,KAbD,CAaE,OAAOvP,CAAP,EAAU;AACVhM,MAAAA,6CAAA,CAAS,wBAAT;AACAA,MAAAA,6CAAA,CAASgM,CAAT;;AACA,UAAI,KAAI,CAACgrD,UAAT,EAAqB;AACnB,aAAI,CAACA,UAAL,CAAgBhrD,CAAhB;AACD;AACF;AAlGoB;;AAqDvB,OAAK,IAAIjL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwO,KAAK,CAACvO,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AAAA,qBAA9BA,CAA8B;;AAAA,6BAOnC;AAuCH;AACF,CApGD;;AAsGA,IAAMk2D,UAAU,GAAG,SAAbA,UAAa,CAAU/2D,MAAV,EAAkB;AACnC;AACA,MAAI,OAAOA,MAAM,CAACm2D,OAAd,KAA0B,WAA9B,EAA2C;AACzC,QAAI,OAAOn2D,MAAM,CAACm2D,OAAP,CAAez6C,WAAtB,KAAsC,WAA1C,EAAuD;AACrDy6C,MAAAA,OAAO,CAACz6C,WAAR,GAAsB1b,MAAM,CAACm2D,OAAP,CAAez6C,WAArC;AACD;;AACD,QAAI,OAAO1b,MAAM,CAACm2D,OAAP,CAAetyD,UAAtB,KAAqC,WAAzC,EAAsD;AACpDsyD,MAAAA,OAAO,CAACtyD,UAAR,GACE7D,MAAM,CAACm2D,OAAP,CAAetyD,UAAf,KAA8B,OAA9B,IAAyC7D,MAAM,CAACm2D,OAAP,CAAetyD,UAAf,KAA8B,KAAvE,GAA+E,KAA/E,GAAuF,IADzF;AAED;AACF;;AACDke,EAAAA,8DAAA,CAAsB/hB,MAAtB,EAXmC,CAYnC;AACD,CAbD;AAeA;AACA;AACA;AACA;;;AACA,IAAMg3D,aAAa,GAAG,SAAhBA,aAAgB,GAAY;AAChC,MAAIh3D,MAAJ;;AAEA,MAAIm2D,OAAO,CAACz6C,WAAZ,EAAyB;AACvB;AACA1b,IAAAA,MAAM,GAAG+hB,6DAAA,EAAT;;AACA,QAAI/hB,MAAM,CAAC0b,WAAX,EAAwB;AACtBy6C,MAAAA,OAAO,CAAC1X,IAAR;AACD;AACF,GAND,MAMO;AACL,QAAI,OAAO0X,OAAO,CAACz6C,WAAf,KAA+B,WAAnC,EAAgD;AAC9C5b,MAAAA,8CAAA,CAAU,qBAAV;AACAE,MAAAA,MAAM,GAAG+hB,6DAAA,EAAT;;AACA,UAAI/hB,MAAM,CAAC0b,WAAX,EAAwB;AACtBy6C,QAAAA,OAAO,CAAC1X,IAAR;AACD;AACF;AACF;AACF,CAlBD;;AAoBA,IAAI,OAAOl4C,QAAP,KAAoB,WAAxB,EAAqC;AACnC;AACF;AACA;AACEkH,EAAAA,MAAM,CAAC4X,gBAAP,CACE,MADF,EAEE,YAAY;AACV2xC,IAAAA,aAAa;AACd,GAJH,EAKE,KALF;AAOD;;AAED,IAAMb,OAAO,GAAG;AACdz6C,EAAAA,WAAW,EAAE,IADC;AAEd7X,EAAAA,UAAU,EAAE,IAFE;AAIdke,EAAAA,UAAU,EAAVA,mDAJc;AAKdrS,EAAAA,KAAK,EAAEqS,yDALO;AAMd1R,EAAAA,MAAM,EAAE0R,0DANM;AAQd08B,EAAAA,IAAI,EAAJA,IARc;AASdsY,EAAAA,UAAU,EAAVA,UATc;AAWdC,EAAAA,aAAa,EAAbA;AAXc,CAAhB;AAcA,iEAAeb,OAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AACA,SAASzmD,KAAT,CAAerM,IAAf,EAAqB;AACnB,MAAM+lB,GAAG,GAAGvH,8CAAA,EAAZ;AACA,MAAMi3C,SAAS,GAAG/wD,yDAAA,CAAiB1E,IAAjB,EAAuB+lB,GAAvB,CAAlB;;AACA,MAAI0vC,SAAJ,EAAe;AACbC,IAAAA,YAAY,CAACD,SAAD,CAAZ;AACAh5D,IAAAA,8CAAA,CAAU,SAAV,EAAqBg5D,SAArB;AACD;;AACD,MAAME,SAAS,GAAGjxD,yDAAA,CAAiB1E,IAAjB,EAAuB+lB,GAAvB,CAAlB;AACA,MAAIlC,MAAJ;AAEApnB,EAAAA,8CAAA,CAAU,UAAUk5D,SAApB;;AACA,UAAQA,SAAR;AACE,SAAK,KAAL;AACE9xC,MAAAA,MAAM,GAAGmlB,sEAAT;AACAnlB,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBqwC,iEAAnB;AACA;;AACF,SAAK,WAAL;AACEn9B,MAAAA,wEAAA;AACAxT,MAAAA,MAAM,GAAGwwC,wEAAT;AACAxwC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBkT,kEAAnB;AACA;;AACF,SAAK,cAAL;AACEA,MAAAA,wEAAA;AACAxT,MAAAA,MAAM,GAAGwwC,wEAAT;AACAxwC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBkT,kEAAnB;AACA;;AACF,SAAK,UAAL;AACExT,MAAAA,MAAM,GAAGmxC,kFAAT;AACAnxC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmB41B,sEAAnB;AACA;;AACF,SAAK,OAAL;AACEl2B,MAAAA,MAAM,GAAG0wC,sEAAT;AACA1wC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmByc,gEAAnB;AACA;;AACF,SAAK,OAAL;AACE/c,MAAAA,MAAM,GAAGowC,6EAAT;AACApwC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBP,gEAAnB;AACA;;AACF,SAAK,cAAL;AACEC,MAAAA,MAAM,GAAGowC,6EAAT;AACApwC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBP,gEAAnB;AACA;;AACF,SAAK,OAAL;AACEC,MAAAA,MAAM,GAAGqxC,6EAAT;AACArxC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBmjC,gEAAnB;AACA;;AACF,SAAK,cAAL;AACEzjC,MAAAA,MAAM,GAAGqxC,6EAAT;AACArxC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBmjC,gEAAnB;AACA;;AACF,SAAK,MAAL;AACE7qD,MAAAA,8CAAA,CAAU,gBAAV;AACAonB,MAAAA,MAAM,GAAGioB,oEAAT;AACAjoB,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBuwC,8DAAnB;AACA;;AACF,SAAK,KAAL;AACEj4D,MAAAA,8CAAA,CAAU,KAAV;AACAonB,MAAAA,MAAM,GAAG2oB,kEAAT;AACA3oB,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBywC,4DAAnB;AACA;;AACF,SAAK,IAAL;AACEn4D,MAAAA,8CAAA,CAAU,IAAV;AACAonB,MAAAA,MAAM,GAAGmK,uEAAT;AACAnK,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmB4J,0DAAnB;AACA;;AACF,SAAK,SAAL;AACEtxB,MAAAA,8CAAA,CAAU,SAAV;AACAonB,MAAAA,MAAM,GAAGyxC,+EAAT;AACAzxC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmB8qC,yEAAnB;AACA;;AACF,SAAK,aAAL;AACA,SAAK,oBAAL;AACExyD,MAAAA,8CAAA,CAAU,oBAAV;AACAonB,MAAAA,MAAM,GAAGixC,yFAAT;AACAjxC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBytB,4EAAnB;AACA;AAhEJ;;AAkEA/tB,EAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,CAAiBwxC,SAAjB,GAA6BA,SAA7B;;AACA9xC,EAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,CAAiBsvC,UAAjB,GAA8B,UAAC38C,GAAD,EAAMytB,IAAN,EAAe;AAC3C,QAAM7yB,KAAK,GAAG;AAAEoF,MAAAA,GAAG,EAAHA,GAAF;AAAOytB,MAAAA,IAAI,EAAJA;AAAP,KAAd;AACA,UAAM7yB,KAAN;AACD,GAHD;;AAKAmS,EAAAA,MAAM,CAACxX,KAAP,CAAarM,IAAb;AACA,SAAO6jB,MAAP;AACD;;AAEM,IAAMgyC,cAAc,GAAG,SAAjBA,cAAiB,CAAU71D,IAAV,EAAgB;AAC5C,MAAIqqB,GAAG,GAAGrqB,IAAV;AAEAqqB,EAAAA,GAAG,GAAGA,GAAG,CAAC3mB,OAAJ,CAAY,kBAAZ,EAAgC,UAAUC,CAAV,EAAa;AACjD,QAAMmyD,QAAQ,GAAGnyD,CAAC,CAACgd,SAAF,CAAY,CAAZ,EAAehd,CAAC,CAAClG,MAAF,GAAW,CAA1B,CAAjB;AACA,WAAOq4D,QAAP;AACD,GAHK,CAAN;AAIAzrC,EAAAA,GAAG,GAAGA,GAAG,CAAC3mB,OAAJ,CAAY,qBAAZ,EAAmC,UAAUC,CAAV,EAAa;AACpD,QAAMmyD,QAAQ,GAAGnyD,CAAC,CAACgd,SAAF,CAAY,CAAZ,EAAehd,CAAC,CAAClG,MAAF,GAAW,CAA1B,CAAjB;AACA,WAAOq4D,QAAP;AACD,GAHK,CAAN;AAKAzrC,EAAAA,GAAG,GAAGA,GAAG,CAAC3mB,OAAJ,CAAY,QAAZ,EAAsB,UAAUC,CAAV,EAAa;AACvC,QAAMmyD,QAAQ,GAAGnyD,CAAC,CAACgd,SAAF,CAAY,CAAZ,EAAehd,CAAC,CAAClG,MAAF,GAAW,CAA1B,CAAjB;AAEA,QAAMs4D,KAAK,GAAG,WAAW7qC,IAAX,CAAgB4qC,QAAhB,CAAd;;AACA,QAAIC,KAAJ,EAAW;AACT,aAAO,QAAQD,QAAR,GAAmB,IAA1B;AACD,KAFD,MAEO;AACL,aAAO,OAAOA,QAAP,GAAkB,IAAzB;AACD;AACF,GATK,CAAN;AAWA,SAAOzrC,GAAP;AACD,CAxBM;AA0BA,IAAMxS,cAAc,GAAG,SAAjBA,cAAiB,CAAU7X,IAAV,EAAgB;AAC5C,MAAIqqB,GAAG,GAAGrqB,IAAV;AAEAqqB,EAAAA,GAAG,GAAGA,GAAG,CAAC3mB,OAAJ,CAAY,MAAZ,EAAoB,YAAY;AACpC,WAAO,IAAP;AACD,GAFK,CAAN;AAGA2mB,EAAAA,GAAG,GAAGA,GAAG,CAAC3mB,OAAJ,CAAY,KAAZ,EAAmB,YAAY;AACnC,WAAO,GAAP;AACD,GAFK,CAAN;AAGA2mB,EAAAA,GAAG,GAAGA,GAAG,CAAC3mB,OAAJ,CAAY,KAAZ,EAAmB,YAAY;AACnC,WAAO,GAAP;AACD,GAFK,CAAN;AAIA,SAAO2mB,GAAP;AACD,CAdM;AAeP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMrd,MAAM,GAAG,SAATA,MAAS,CAAUtN,EAAV,EAAcs2D,IAAd,EAAoBC,EAApB,EAAwBC,SAAxB,EAAmC;AAChD13C,EAAAA,0CAAA;AACA,MAAI6L,GAAG,GAAG2rC,IAAV;AACA,MAAMP,SAAS,GAAG/wD,yDAAA,CAAiB2lB,GAAjB,CAAlB;;AACA,MAAIorC,SAAJ,EAAe;AACbj3C,IAAAA,iDAAA,CAAuBi3C,SAAvB;AACD;;AACD,MAAI1vC,GAAG,GAAGvH,8CAAA,EAAV,CAPgD,CAQhD;;AACA,MAAIw3C,IAAI,CAACv4D,MAAL,GAAcsoB,GAAG,CAAC7N,WAAtB,EAAmC;AACjCmS,IAAAA,GAAG,GAAG,qEAAN;AACD;;AAED,MAAI,OAAO6rC,SAAP,KAAqB,WAAzB,EAAsC;AACpCA,IAAAA,SAAS,CAAC/c,SAAV,GAAsB,EAAtB;AAEA/5C,IAAAA,0CAAM,CAAC82D,SAAD,CAAN,CACGl0D,MADH,CACU,KADV,EAEGnC,IAFH,CAEQ,IAFR,EAEc,MAAMH,EAFpB,EAGGG,IAHH,CAGQ,OAHR,EAGiB,kBAAkBkmB,GAAG,CAAChnB,UAHvC,EAIGiD,MAJH,CAIU,KAJV,EAKGnC,IALH,CAKQ,IALR,EAKcH,EALd,EAMGG,IANH,CAMQ,OANR,EAMiB,MANjB,EAOGA,IAPH,CAOQ,OAPR,EAOiB,4BAPjB,EAQGmC,MARH,CAQU,GARV;AASD,GAZD,MAYO;AACL,QAAMm0D,WAAW,GAAGjzD,QAAQ,CAAC29B,cAAT,CAAwBnhC,EAAxB,CAApB;;AACA,QAAIy2D,WAAJ,EAAiB;AACfA,MAAAA,WAAW,CAACC,MAAZ;AACD;;AACD,QAAMp+C,QAAO,GAAG9U,QAAQ,CAAC6e,aAAT,CAAuB,MAAM,GAAN,GAAYriB,EAAnC,CAAhB;;AACA,QAAIsY,QAAJ,EAAa;AACXA,MAAAA,QAAO,CAACo+C,MAAR;AACD;;AAEDh3D,IAAAA,0CAAM,CAAC,MAAD,CAAN,CACG4C,MADH,CACU,KADV,EAEGnC,IAFH,CAEQ,IAFR,EAEc,MAAMH,EAFpB,EAGGsC,MAHH,CAGU,KAHV,EAIGnC,IAJH,CAIQ,IAJR,EAIcH,EAJd,EAKGG,IALH,CAKQ,OALR,EAKiB,MALjB,EAMGA,IANH,CAMQ,OANR,EAMiB,4BANjB,EAOGmC,MAPH,CAOU,GAPV;AAQD;;AAEDoI,EAAAA,MAAM,CAACigB,GAAP,GAAaA,GAAb;AACAA,EAAAA,GAAG,GAAGwrC,cAAc,CAACxrC,GAAD,CAApB;AAEA,MAAMrS,OAAO,GAAG5Y,0CAAM,CAAC,OAAOM,EAAR,CAAN,CAAkBF,IAAlB,EAAhB;AACA,MAAMm2D,SAAS,GAAGjxD,yDAAA,CAAiB2lB,GAAjB,EAAsBtE,GAAtB,CAAlB,CAjDgD,CAmDhD;;AACA,MAAMjD,GAAG,GAAG9K,OAAO,CAAC+O,UAApB;AACA,MAAMA,UAAU,GAAGjE,GAAG,CAACiE,UAAvB;AAEA,MAAIsvC,UAAU,GAAG,EAAjB,CAvDgD,CAwDhD;;AACA,MAAItwC,GAAG,CAAC9N,QAAJ,KAAiB7X,SAArB,EAAgC;AAC9Bi2D,IAAAA,UAAU,gBAAStwC,GAAG,CAAC9N,QAAb,CAAV;AACD,GA3D+C,CA4DhD;;;AACA,MAAI8N,GAAG,CAAChnB,UAAJ,KAAmBqB,SAAvB,EAAkC;AAChCi2D,IAAAA,UAAU,+CAAwCtwC,GAAG,CAAChnB,UAA5C,MAAV;AACD,GA/D+C,CAgEhD;;;AACA,MAAIgnB,GAAG,CAACuwC,aAAJ,KAAsBl2D,SAA1B,EAAqC;AACnCi2D,IAAAA,UAAU,mDAA4CtwC,GAAG,CAACuwC,aAAhD,MAAV;AACD,GAnE+C,CAqEhD;;;AACA,MAAIX,SAAS,KAAK,WAAd,IAA6BA,SAAS,KAAK,cAA3C,IAA6DA,SAAS,KAAK,OAA/E,EAAwF;AACtF,QAAM7zD,OAAO,GAAGqyD,oFAAA,CAAwB9pC,GAAxB,CAAhB;AACA,QAAM7pB,UAAU,GAAGulB,GAAG,CAACvlB,UAAJ,IAAkBulB,GAAG,CAACxlB,SAAJ,CAAcC,UAAnD;;AACA,SAAK,IAAM4e,SAAX,IAAwBtd,OAAxB,EAAiC;AAC/B,UAAItB,UAAJ,EAAgB;AACd61D,QAAAA,UAAU,iBAAUj3C,SAAV,oBAA6Btd,OAAO,CAACsd,SAAD,CAAP,CAAmBqF,MAAnB,CAA0BzQ,IAA1B,CACrC,eADqC,CAA7B,mBAAV;AAGAqiD,QAAAA,UAAU,iBAAUj3C,SAAV,qBAA8Btd,OAAO,CAACsd,SAAD,CAAP,CAAmBqF,MAAnB,CAA0BzQ,IAA1B,CACtC,eADsC,CAA9B,mBAAV;AAGD,OAPD,MAOO;AACLqiD,QAAAA,UAAU,iBAAUj3C,SAAV,qBAA8Btd,OAAO,CAACsd,SAAD,CAAP,CAAmBqF,MAAnB,CAA0BzQ,IAA1B,CACtC,eADsC,CAA9B,mBAAV;AAGAqiD,QAAAA,UAAU,iBAAUj3C,SAAV,qBAA8Btd,OAAO,CAACsd,SAAD,CAAP,CAAmBqF,MAAnB,CAA0BzQ,IAA1B,CACtC,eADsC,CAA9B,mBAAV;AAGAqiD,QAAAA,UAAU,iBAAUj3C,SAAV,wBAAiCtd,OAAO,CAACsd,SAAD,CAAP,CAAmBqF,MAAnB,CAA0BzQ,IAA1B,CACzC,eADyC,CAAjC,mBAAV;AAGAqiD,QAAAA,UAAU,iBAAUj3C,SAAV,wBAAiCtd,OAAO,CAACsd,SAAD,CAAP,CAAmBqF,MAAnB,CAA0BzQ,IAA1B,CACzC,eADyC,CAAjC,mBAAV;AAGAqiD,QAAAA,UAAU,iBAAUj3C,SAAV,uBAAgCtd,OAAO,CAACsd,SAAD,CAAP,CAAmBqF,MAAnB,CAA0BzQ,IAA1B,CACxC,eADwC,CAAhC,mBAAV;;AAGA,YAAIlS,OAAO,CAACsd,SAAD,CAAP,CAAmB6U,UAAvB,EAAmC;AACjCoiC,UAAAA,UAAU,iBAAUj3C,SAAV,sBAA+Btd,OAAO,CAACsd,SAAD,CAAP,CAAmB6U,UAAnB,CAA8BjgB,IAA9B,CACvC,eADuC,CAA/B,mBAAV;AAGD;AACF;AACF;AACF,GAxG+C,CA0GhD;;;AAEA,MAAMuiD,MAAM,GAAG,SAATA,MAAS,CAACvrB,QAAD,EAAWvmB,MAAX;AAAA,WAAsBovC,iDAAS,CAACD,+CAAO,WAAI5oB,QAAJ,cAAgBvmB,MAAhB,OAAR,EAAoCtjB,6CAApC,CAA/B;AAAA,GAAf;;AACA,MAAMq1D,KAAK,GAAGD,MAAM,YAAK72D,EAAL,GAAWunB,oDAAS,CAAC0uC,SAAD,EAAYU,UAAZ,EAAwBtwC,GAAG,CAACloB,cAA5B,CAApB,CAApB;AAEA,MAAM44D,MAAM,GAAGvzD,QAAQ,CAACwzD,aAAT,CAAuB,OAAvB,CAAf;AACAD,EAAAA,MAAM,CAACtd,SAAP,GAAmB,WAAIz5C,EAAJ,SAAY82D,KAA/B;AACA1zC,EAAAA,GAAG,CAACgE,YAAJ,CAAiB2vC,MAAjB,EAAyB1vC,UAAzB,EAjHgD,CAmHhD;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAI;AACF,YAAQ4uC,SAAR;AACE,WAAK,KAAL;AACE5vC,QAAAA,GAAG,CAACxlB,SAAJ,CAAc4J,mBAAd,GAAoC4b,GAAG,CAAC5b,mBAAxC;AACAsqD,QAAAA,+EAAA,CAAyB1uC,GAAG,CAAC1J,GAA7B;AACAo4C,QAAAA,4EAAA,CAAsBpqC,GAAtB,EAA2B3qB,EAA3B,EAA+B,KAA/B;AACA;;AACF,WAAK,WAAL;AACEqmB,QAAAA,GAAG,CAACxlB,SAAJ,CAAc4J,mBAAd,GAAoC4b,GAAG,CAAC5b,mBAAxC;AACAgqD,QAAAA,iFAAA,CAAqBpuC,GAAG,CAACxlB,SAAzB;AACA4zD,QAAAA,8EAAA,CAAkB9pC,GAAlB,EAAuB3qB,EAAvB,EAA2B,KAA3B;AACA;;AACF,WAAK,cAAL;AACEqmB,QAAAA,GAAG,CAACxlB,SAAJ,CAAc4J,mBAAd,GAAoC4b,GAAG,CAAC5b,mBAAxC;AACAiqD,QAAAA,oFAAA,CAAuBruC,GAAG,CAACxlB,SAA3B;AACA6zD,QAAAA,iFAAA,CAAoB/pC,GAApB,EAAyB3qB,EAAzB,EAA6B,KAA7B;AACA;;AACF,WAAK,UAAL;AACEqmB,QAAAA,GAAG,CAAClN,QAAJ,CAAa1O,mBAAb,GAAmC4b,GAAG,CAAC5b,mBAAvC;;AACA,YAAI4b,GAAG,CAAC4wC,eAAR,EAAyB;AACvB;AACA1B,UAAAA,oFAAA,CAAyBp4D,MAAM,CAACwW,MAAP,CAAc0S,GAAG,CAAClN,QAAlB,EAA4BkN,GAAG,CAAC4wC,eAAhC,CAAzB;AACAjE,UAAAA,OAAO,CAAChhD,KAAR,CACE,4GADF;AAGD,SAND,MAMO;AACLujD,UAAAA,oFAAA,CAAyBlvC,GAAG,CAAClN,QAA7B;AACD;;AACDo8C,QAAAA,iFAAA,CAAsB5qC,GAAtB,EAA2B3qB,EAA3B;AACA;;AACF,WAAK,OAAL;AACEqmB,QAAAA,GAAG,CAAChL,KAAJ,CAAU5Q,mBAAV,GAAgC4b,GAAG,CAAC5b,mBAApC;AACAmqD,QAAAA,8EAAA,CAAsBvuC,GAAG,CAAChL,KAA1B;AACAu5C,QAAAA,2EAAA,CAAmBjqC,GAAnB,EAAwB3qB,EAAxB;AACA;;AACF,WAAK,OAAL;AACEqmB,QAAAA,GAAG,CAACjmB,KAAJ,CAAUqK,mBAAV,GAAgC4b,GAAG,CAAC5b,mBAApC;AACA4pD,QAAAA,8EAAA,CAAsBhuC,GAAG,CAACjmB,KAA1B;AACAi0D,QAAAA,2EAAA,CAAmB1pC,GAAnB,EAAwB3qB,EAAxB;AACA;;AACF,WAAK,cAAL;AACEqmB,QAAAA,GAAG,CAACjmB,KAAJ,CAAUqK,mBAAV,GAAgC4b,GAAG,CAAC5b,mBAApC;AACA6pD,QAAAA,iFAAA,CAAwBjuC,GAAG,CAACjmB,KAA5B;AACAk0D,QAAAA,8EAAA,CAAqB3pC,GAArB,EAA0B3qB,EAA1B;AACA;;AACF,WAAK,OAAL;AACEqmB,QAAAA,GAAG,CAACjmB,KAAJ,CAAUqK,mBAAV,GAAgC4b,GAAG,CAAC5b,mBAApC;AACAgrD,QAAAA,8EAAA,CAAsBpvC,GAAG,CAAC7b,KAA1B;AACAirD,QAAAA,2EAAA,CAAmB9qC,GAAnB,EAAwB3qB,EAAxB;AACA;;AACF,WAAK,cAAL;AACEqmB,QAAAA,GAAG,CAACjmB,KAAJ,CAAUqK,mBAAV,GAAgC4b,GAAG,CAAC5b,mBAApC;AACAirD,QAAAA,iFAAA,CAAwBrvC,GAAG,CAAC7b,KAA5B;AACAkrD,QAAAA,8EAAA,CAAqB/qC,GAArB,EAA0B3qB,EAA1B;AACA;;AACF,WAAK,MAAL;AACEqmB,QAAAA,GAAG,CAACjmB,KAAJ,CAAUqK,mBAAV,GAAgC4b,GAAG,CAAC5b,mBAApC;AACAwqD,QAAAA,4EAAA,CAAqB5uC,GAAG,CAACjmB,KAAzB;AACA60D,QAAAA,yEAAA,CAAkBtqC,GAAlB,EAAuB3qB,EAAvB,EAA2Bo0D,mDAA3B;AACA;;AACF,WAAK,KAAL;AACE;AACA;AACAe,QAAAA,uEAAA,CAAiBxqC,GAAjB,EAAsB3qB,EAAtB,EAA0Bo0D,mDAA1B;AACA;;AACF,WAAK,IAAL;AACEI,QAAAA,wEAAA,CAAmBnuC,GAAG,CAAC7I,EAAvB;AACAg3C,QAAAA,qEAAA,CAAgB7pC,GAAhB,EAAqB3qB,EAArB,EAAyBo0D,mDAAzB;AACA;;AACF,WAAK,SAAL;AACEuB,QAAAA,uFAAA,CAAwBtvC,GAAG,CAACnK,OAA5B;AACAy5C,QAAAA,oFAAA,CAAqBhrC,GAArB,EAA0B3qB,EAA1B,EAA8Bo0D,mDAA9B;AACA;;AACF,WAAK,aAAL;AACEiB,QAAAA,0FAAA,CAA4BhvC,GAAG,CAACrI,WAAhC;AACAq3C,QAAAA,uFAAA,CAAyB1qC,GAAzB,EAA8B3qB,EAA9B,EAAkCo0D,mDAAlC;AACA;AA3EJ;AA6ED,GA9ED,CA8EE,OAAOrrD,CAAP,EAAU;AACV;AACA8sD,IAAAA,4DAAA,CAAmB71D,EAAnB,EAAuBo0D,mDAAvB;AACA,UAAMrrD,CAAN;AACD;;AAEDrJ,EAAAA,0CAAM,iBAASM,EAAT,SAAN,CACGqjB,SADH,CACa,mBADb,EAEGljB,IAFH,CAEQ,OAFR,EAEiB,8BAFjB,EAnNgD,CAuNhD;;AACA,MAAI2zD,OAAO,GAAGp0D,0CAAM,CAAC,OAAOM,EAAR,CAAN,CAAkBF,IAAlB,GAAyB25C,SAAvC;AACA18C,EAAAA,8CAAA,CAAU,yBAAV,EAAqCspB,GAAG,CAAC5b,mBAAzC;;AACA,MAAI,CAAC4b,GAAG,CAAC5b,mBAAL,IAA4B4b,GAAG,CAAC5b,mBAAJ,KAA4B,OAA5D,EAAqE;AACnEqpD,IAAAA,OAAO,GAAGA,OAAO,CAAC9vD,OAAR,CAAgB,wBAAhB,EAA0C,mBAA1C,EAA+D,GAA/D,CAAV;AACD;;AAED8vD,EAAAA,OAAO,GAAG37C,cAAc,CAAC27C,OAAD,CAAxB,CA9NgD,CAgOhD;;AACAA,EAAAA,OAAO,GAAGA,OAAO,CAAC9vD,OAAR,CAAgB,OAAhB,EAAyB,OAAzB,CAAV;;AAEA,MAAI,OAAOuyD,EAAP,KAAc,WAAlB,EAA+B;AAC7B,YAAQN,SAAR;AACE,WAAK,WAAL;AACA,WAAK,cAAL;AACEM,QAAAA,EAAE,CAACzC,OAAD,EAAUn8B,gFAAV,CAAF;AACA;;AACF,WAAK,OAAL;AACE4+B,QAAAA,EAAE,CAACzC,OAAD,EAAU5yB,8EAAV,CAAF;AACA;;AACF,WAAK,OAAL;AACA,WAAK,cAAL;AACEq1B,QAAAA,EAAE,CAACzC,OAAD,EAAU5vC,8EAAV,CAAF;AACA;;AACF;AACEqyC,QAAAA,EAAE,CAACzC,OAAD,CAAF;AAbJ;AAeD,GAhBD,MAgBO;AACL/2D,IAAAA,8CAAA,CAAU,iBAAV;AACD;;AACD61D,EAAAA,gEAAe;AAEf,MAAM9yD,IAAI,GAAGJ,0CAAM,CAAC,OAAOM,EAAR,CAAN,CAAkBF,IAAlB,EAAb;;AACA,MAAIA,IAAI,KAAK,IAAT,IAAiB,OAAOA,IAAI,CAAC42D,MAAZ,KAAuB,UAA5C,EAAwD;AACtDh3D,IAAAA,0CAAM,CAAC,OAAOM,EAAR,CAAN,CACGF,IADH,GAEG42D,MAFH;AAGD;;AAED,SAAO5C,OAAP;AACD,CAhQD;;AAkQA,IAAIoD,gBAAgB,GAAG,EAAvB;;AAEA,IAAM73C,cAAc,GAAG,SAAjBA,cAAiB,CAAUxW,CAAV,EAAayW,SAAb,EAAwBC,OAAxB,EAAiClS,IAAjC,EAAuC;AAC5D,MAAI;AACF,QAAIiS,SAAS,KAAK5e,SAAlB,EAA6B;AAC3B4e,MAAAA,SAAS,GAAGA,SAAS,CAACza,IAAV,EAAZ;;AACA,cAAQ0a,OAAR;AACE,aAAK,gBAAL;AACE23C,UAAAA,gBAAgB,GAAG,EAAnB;AACA;;AACF,aAAK,gBAAL;AACEA,UAAAA,gBAAgB,CAAC7pD,IAAjB,GAAwBiS,SAAS,CAACwc,WAAV,EAAxB;AACA;;AACF,aAAK,eAAL;AACEo7B,UAAAA,gBAAgB,CAACC,IAAjB,GAAwB31D,IAAI,CAACmL,KAAL,CAAW2S,SAAX,CAAxB;AACA;;AACF,aAAK,iBAAL;AACE83C,UAAAA,eAAe,CAACvuD,CAAD,EAAIquD,gBAAJ,EAAsB7pD,IAAtB,CAAf;AACA6pD,UAAAA,gBAAgB,GAAG,IAAnB;AACA;AAbJ;AAeD;AACF,GAnBD,CAmBE,OAAOllD,KAAP,EAAc;AACdjV,IAAAA,8CAAA,4DACsDuiB,SADtD,6BACkFC,OADlF;AAGAxiB,IAAAA,8CAAA,CAAUiV,KAAK,CAACw1B,OAAhB;AACD;AACF,CA1BD;;AA4BA,IAAM4vB,eAAe,GAAG,SAAlBA,eAAkB,CAAUvuD,CAAV,EAAazJ,SAAb,EAAwBiO,IAAxB,EAA8B;AACpDtQ,EAAAA,8CAAA,0BAA4BqC,SAAS,CAACiO,IAAtC,kBAAyDjO,SAAS,CAAC+3D,IAAnE;;AACA,UAAQ/3D,SAAS,CAACiO,IAAlB;AACE,SAAK,MAAL;AACA,SAAK,YAAL;AAAmB;AACjB,SAAC,QAAD,EAAWtO,OAAX,CAAmB,UAACmjD,IAAD,EAAU;AAC3B,cAAI,OAAO9iD,SAAS,CAAC+3D,IAAV,CAAejV,IAAf,CAAP,KAAgC,WAApC,EAAiD;AAC/C,gBAAI70C,IAAI,KAAK,cAAb,EAA6B;AAC3BA,cAAAA,IAAI,GAAG,WAAP;AACD;;AACDjO,YAAAA,SAAS,CAAC+3D,IAAV,CAAe9pD,IAAf,IAAuBjO,SAAS,CAAC+3D,IAAV,CAAejV,IAAf,CAAvB;AACA,mBAAO9iD,SAAS,CAAC+3D,IAAV,CAAejV,IAAf,CAAP;AACD;AACF,SARD;AASAnlD,QAAAA,8CAAA,CAAU,6BAAV,EAAyCqC,SAAS,CAAC+3D,IAAnD;AACArB,QAAAA,0DAAkB,CAAC12D,SAAS,CAAC+3D,IAAX,CAAlB;AACAp6D,QAAAA,8CAAA,CAAU,oCAAV,EAAgDqC,SAAS,CAAC+3D,IAA1D;AACAnB,QAAAA,YAAY,CAAC52D,SAAS,CAAC+3D,IAAX,CAAZ;AACAr4C,QAAAA,iDAAA,CAAuB1f,SAAS,CAAC+3D,IAAjC;AACA;AACD;;AACD,SAAK,MAAL;AACA,SAAK,QAAL;AACE,UAAItuD,CAAC,IAAIA,CAAC,CAAC,SAAD,CAAV,EAAuB;AACrBA,QAAAA,CAAC,CAACkuC,OAAF,CAAU33C,SAAS,CAACiO,IAAV,KAAmB,MAA7B;AACD;;AACD;;AACF;AACEtQ,MAAAA,6CAAA,4CACsCqC,SAAS,CAACiO,IADhD,eACyD7L,IAAI,CAACC,SAAL,CACrDrC,SAAS,CAAC+3D,IAAV,GAAiB/3D,SAAS,CAAC+3D,IAA3B,GAAkC,EADmB,CADzD,UAIE/3D,SAJF;AAMA;AAhCJ;AAkCD,CApCD;AAsCA;;;AACA,SAASi4D,qBAAT,CAA+B/4D,IAA/B,EAAqC;AACnC;AACAy2D,EAAAA,+EAAA,CAAyBz2D,IAAI,CAACqe,GAA9B;AACA83C,EAAAA,iFAAA,CAAqBn2D,IAAI,CAACuC,SAA1B;AACA6zD,EAAAA,oFAAA,CAAuBp2D,IAAI,CAACuC,SAA5B;;AACA,MAAI,OAAOvC,IAAI,CAAC,iBAAD,CAAX,KAAmC,WAAvC,EAAoD;AAClDi3D,IAAAA,oFAAA,CAAyBz4D,uDAAe,CAACwB,IAAI,CAAC6a,QAAN,EAAgB7a,IAAI,CAAC,iBAAD,CAApB,CAAxC;AACD;;AACDi3D,EAAAA,oFAAA,CAAyBj3D,IAAI,CAAC6a,QAA9B;AACAy7C,EAAAA,8EAAA,CAAsBt2D,IAAI,CAAC+c,KAA3B;AACAg5C,EAAAA,8EAAA,CAAsB/1D,IAAI,CAAC8B,KAA3B;AACAq1D,EAAAA,8EAAA,CAAsBn3D,IAAI,CAACkM,KAA3B;AACAkrD,EAAAA,iFAAA,CAAwBp3D,IAAI,CAACkM,KAA7B;AACAyqD,EAAAA,4EAAA,CAAqB32D,IAAI,CAAC8B,KAA1B,EAbmC,CAcnC;;AACAo0D,EAAAA,wEAAA,CAAmBl2D,IAAI,CAACkf,EAAxB;AACAm4C,EAAAA,uFAAA,CAAwBr3D,IAAI,CAAC4d,OAA7B;AACAm5C,EAAAA,0FAAA,CAA4B/2D,IAAI,CAAC0f,WAAjC;AACA63C,EAAAA,+DAAA,CAAsBv3D,IAAI,CAAC8B,KAA3B;AACD;;AAED,SAAS41D,YAAT,GAAwB,CACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AAED;;;AACA,SAAShC,UAAT,CAAoBp1D,OAApB,EAA6B;AAC3B;AAEA;AACA,MAAIA,OAAO,IAAIA,OAAO,CAACS,UAAvB,EAAmC;AACjC,QAAI,CAACT,OAAO,CAACT,cAAb,EAA6B;AAC3BS,MAAAA,OAAO,CAACT,cAAR,GAAyB;AAAEkB,QAAAA,UAAU,EAAET,OAAO,CAACS;AAAtB,OAAzB;AACD,KAFD,MAEO;AACL,UAAI,CAACT,OAAO,CAACT,cAAR,CAAuBkB,UAA5B,EAAwC;AACtCT,QAAAA,OAAO,CAACT,cAAR,GAAyB;AAAEkB,UAAAA,UAAU,EAAET,OAAO,CAACS;AAAtB,SAAzB;AACD;AACF;AACF,GAZ0B,CAa3B;;;AACAyf,EAAAA,4DAAA,CAAkClgB,OAAlC;;AAEA,MAAIA,OAAO,IAAIA,OAAO,CAAC5B,KAAnB,IAA4BA,gDAAK,CAAC4B,OAAO,CAAC5B,KAAT,CAArC,EAAsD;AACpD;AACA4B,IAAAA,OAAO,CAACT,cAAR,GAAyBnB,gDAAK,CAAC4B,OAAO,CAAC5B,KAAT,CAAL,CAAqBoB,iBAArB,CAAuCQ,OAAO,CAACT,cAA/C,CAAzB;AACD,GAHD,MAGO;AACL,QAAIS,OAAJ,EAAaA,OAAO,CAACT,cAAR,GAAyBnB,6EAAA,CAAgC4B,OAAO,CAACT,cAAxC,CAAzB;AACd;;AAED,MAAMlB,MAAM,GACV,QAAO2B,OAAP,MAAmB,QAAnB,GAA8BkgB,kDAAA,CAAwBlgB,OAAxB,CAA9B,GAAiEkgB,kDAAA,EADnE;AAGAu4C,EAAAA,qBAAqB,CAACp6D,MAAD,CAArB;AACA81D,EAAAA,oDAAW,CAAC91D,MAAM,CAACwb,QAAR,CAAX,CA3B2B,CA4B3B;AACD;;AAED,IAAMuG,UAAU,GAAG7hB,MAAM,CAACC,MAAP,CAAc;AAC/BkQ,EAAAA,MAAM,EAANA,MAD+B;AAE/BX,EAAAA,KAAK,EAALA,KAF+B;AAG/B0S,EAAAA,cAAc,EAAdA,cAH+B;AAI/B20C,EAAAA,UAAU,EAAVA,UAJ+B;AAK/BgC,EAAAA,YAAY,EAAZA,YAL+B;AAM/Br3D,EAAAA,SAAS,EAAEmgB,8CANoB;AAO/BpgB,EAAAA,SAAS,EAAEogB,8CAPoB;AAQ/BrgB,EAAAA,aAAa,EAAEqgB,kDARgB;AAS/BtgB,EAAAA,gBAAgB,EAAEsgB,qDATa;AAU/Bvf,EAAAA,KAAK,EAAE,iBAAM;AACX;AACAuf,IAAAA,0CAAA,GAFW,CAGX;AACA;AACD,GAf8B;AAgB/By4C,EAAAA,WAAW,EAAE,uBAAM;AACjBz4C,IAAAA,0CAAA,CAAgBA,kDAAhB;AACAu4C,IAAAA,qBAAqB,CAACv4C,8CAAA,EAAD,CAArB;AACD,GAnB8B;AAoB/B5hB,EAAAA,aAAa,EAAE4hB,kDAAuB5hB;AApBP,CAAd,CAAnB;AAuBA61D,oDAAW,CAACj0C,8CAAA,GAAsBrG,QAAvB,CAAX;AACAqG,0CAAA,CAAgBA,8CAAA,EAAhB;AAEA,iEAAeE,UAAf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;AChsBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAM04C,MAAM,GAAG;AACb72D,EAAAA,SAAS,EAATA,kEADa;AAEb,kBAAgBA,kEAFH;AAGbsY,EAAAA,QAAQ,EAARA,iEAHa;AAIbkC,EAAAA,KAAK,EAALA,8DAJa;AAKbm8C,EAAAA,YAAY,EAAZA,8DALa;AAMb,qBAAmBA,8DANN;AAObp3D,EAAAA,KAAK,EAAEo3D,8DAPM;AAQbC,EAAAA,YAAY,EAAZA,8DARa;AASbjtD,EAAAA,KAAK,EAAEitD,8DATM;AAUb96C,EAAAA,GAAG,EAAHA,4DAVa;AAWb1Z,EAAAA,IAAI,EAAJA,6DAXa;AAYb8a,EAAAA,GAAG,EAAHA,4DAZa;AAabP,EAAAA,EAAE,EAAFA,2DAba;AAcbtB,EAAAA,OAAO,EAAPA,qEAda;AAeb8B,EAAAA,WAAW,EAAXA,qEAAWA;AAfE,CAAf;AAkBO,IAAM25C,kBAAkB,GAAG,SAArBA,kBAAqB,CAAC36D,KAAD,EAAQ46D,aAAR;AAAA,SAA0B56D,KAAK,CAAC66D,UAAN,CAAiBD,aAAjB,CAA1B;AAAA,CAA3B;;AAEP,IAAMrwC,SAAS,GAAG,SAAZA,SAAY,CAACla,IAAD,EAAOspD,UAAP,EAAmB/3D,OAAnB,EAA+B;AAC/C;AACA,wCACiBA,OAAO,CAACS,UADzB,+BAEeT,OAAO,CAACqc,QAFvB,0BAGUrc,OAAO,CAACg7B,SAHlB,iGASUh7B,OAAO,CAACk5D,aATlB,gDAYUl5D,OAAO,CAACm5D,cAZlB,4BAaYn5D,OAAO,CAACm5D,cAbpB,6UAkCUn5D,OAAO,CAAC+oB,SAlClB,4BAmCY/oB,OAAO,CAAC+oB,SAnCpB,oDAsCY/oB,OAAO,CAAC+oB,SAtCpB,iDA0CiB/oB,OAAO,CAACS,UA1CzB,+BA2CeT,OAAO,CAACqc,QA3CvB,yBA8CEy8C,MAAM,CAACrqD,IAAD,CAAN,CAAazO,OAAb,CA9CF,mBAgDE+3D,UAhDF;AAkDD,CApDD;;AAsDA,iEAAepvC,SAAf;;;;;;;;;;;;;;;;;;;;ACtFA;AACA;AACA;AACA;AACA;AAEA,iEAAe;AACb8wC,EAAAA,IAAI,EAAE;AACJj6D,IAAAA,iBAAiB,EAAE45D,0DAAkBA;AADjC,GADO;AAIbM,EAAAA,IAAI,EAAE;AACJl6D,IAAAA,iBAAiB,EAAE65D,0DAAkBA;AADjC,GAJO;AAObX,EAAAA,OAAO,EAAE;AACPl5D,IAAAA,iBAAiB,EAAE85D,6DAAqBA;AADjC,GAPI;AAUbK,EAAAA,MAAM,EAAE;AACNn6D,IAAAA,iBAAiB,EAAE+5D,4DAAoBA;AADjC,GAVK;AAabK,EAAAA,OAAO,EAAE;AACPp6D,IAAAA,iBAAiB,EAAEg6D,6DAAqBA;AADjC;AAbI,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;;IACMU;AACJ,mBAAc;AAAA;;AACZ;;AACA;AACJ;AACA;AACA;AACI,SAAK7K,UAAL,GAAkB,SAAlB;AACA,SAAK8K,QAAL,GAAgB,KAAhB,CAPY,CASZ;AACA;;AACA,SAAKC,YAAL,GAAoB,SAApB,CAXY,CAYZ;AACA;;AAEA,SAAK7U,YAAL,GAAoB,SAApB;AACA,SAAKC,aAAL,GAAqB,MAArB,CAhBY,CAkBZ;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;;AAEA,SAAK/kD,UAAL,GAAkB,4CAAlB;AACA,SAAK4b,QAAL,GAAgB,MAAhB,CAlCY,CAmCZ;AACD;;;;WACD,wBAAe;AACb;;AAEA;AACA,WAAKg+C,gBAAL,GAAwB,KAAKA,gBAAL,KAA0B,KAAKF,QAAL,GAAgB,MAAhB,GAAyB,MAAnD,CAAxB,CAJa,CAIuE;;AACpF,WAAKG,cAAL,GAAsB,KAAKA,cAAL,IAAuBP,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAAnD;AACA,WAAKqrB,aAAL,GAAqB,KAAKA,aAAL,IAAsB6lC,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,GAAL;AAAUqgB,QAAAA,CAAC,EAAE;AAAb,OAApB,CAAjD;AAEA,WAAKqxC,kBAAL,GAA0B,KAAKA,kBAAL,IAA2BN,wDAAQ,CAAC,KAAKG,YAAN,EAAoB,KAAKD,QAAzB,CAA7D;AACA,WAAKK,oBAAL,GACE,KAAKA,oBAAL,IAA6BP,wDAAQ,CAAC,KAAKK,cAAN,EAAsB,KAAKH,QAA3B,CADvC;AAEA,WAAKM,mBAAL,GACE,KAAKA,mBAAL,IAA4BR,wDAAQ,CAAC,KAAK/lC,aAAN,EAAqB,KAAKimC,QAA1B,CADtC;AAEA,WAAK7U,eAAL,GAAuB,KAAKA,eAAL,IAAwB2U,wDAAQ,CAAC,KAAK1U,YAAN,EAAoB,KAAK4U,QAAzB,CAAvD;AACA,WAAK5U,YAAL,GAAoB,KAAKA,YAAL,IAAqB,SAAzC;AACA,WAAKC,aAAL,GAAqB,KAAKA,aAAL,IAAsB,MAA3C;AAEA,WAAKkV,kBAAL,GAA0B,KAAKA,kBAAL,IAA2BV,8CAAM,CAAC,KAAKM,cAAN,CAA3D;AACA,WAAK9K,iBAAL,GAAyB,KAAKA,iBAAL,IAA0BwK,8CAAM,CAAC,KAAK9lC,aAAN,CAAzD;AACA,WAAKnL,SAAL,GAAiB,KAAKA,SAAL,IAAkBixC,8CAAM,CAAC,KAAK3K,UAAN,CAAzC;AACA,WAAKr0B,SAAL,GAAiB,KAAKA,SAAL,IAAkB,KAAKq/B,gBAAxC;AAEA;;AACA,WAAKM,OAAL,GAAe,KAAKA,OAAL,IAAgB,KAAKP,YAApC;AACA,WAAKtxC,OAAL,GAAe,KAAKA,OAAL,IAAgB,KAAKsxC,YAApC;AACA,WAAKxxC,UAAL,GAAkB,KAAKA,UAAL,IAAmB,KAAK2xC,kBAA1C;AACA,WAAKn/B,UAAL,GAAkB,KAAKA,UAAL,IAAmB,KAAKlH,aAA1C;AACA,WAAKmH,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKo/B,mBAAhD;AACA,WAAKG,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,KAAK7xC,SAAtD;AACA,WAAKkS,UAAL,GAAkB,KAAKA,UAAL,IAAmB,KAAKu0B,iBAA1C;AACA,WAAKr0B,mBAAL,GACE,KAAKA,mBAAL,KACC,KAAKg/B,QAAL,GAAgBN,8CAAM,CAAC,KAAKS,cAAN,EAAsB,EAAtB,CAAtB,GAAkD,KAAKA,cADxD,CADF;AAGA,WAAKv/B,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKs/B,gBAAhD;AACA;AAEA;;AACA,WAAK1V,WAAL,GAAmB,KAAKA,WAAL,IAAoB,KAAK4V,kBAA5C;AACA,WAAK3V,QAAL,GAAgB,KAAKA,QAAL,IAAiB,KAAK97B,OAAtC;AACA,WAAK+7B,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAAKwV,gBAAlD;AACA,WAAKvV,cAAL,GAAsB,KAAKA,cAAL,IAAuB,MAA7C;AACA,WAAKK,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,KAAKP,QAAtD;AACA,WAAKG,WAAL,GAAmB,KAAKA,WAAL,IAAoB,KAAK/pB,SAA5C;AACA,WAAKiqB,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKjqB,SAApD;AACA,WAAKkqB,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKP,WAA5D;AACA,WAAKS,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAAKP,cAAlD;AACA,WAAKQ,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKR,cAAhD;AACA,WAAKa,qBAAL,GAA6B,KAAKA,qBAAL,IAA8BmU,8CAAM,CAAC,KAAKS,cAAN,EAAsB,EAAtB,CAAjE;AACA,WAAK7U,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAK6U,cAA1D;AACA,WAAKtV,mBAAL,GAA2B,KAAKA,mBAAL,IAA4BgV,8CAAM,CAAC,KAAKjxC,SAAN,CAA7D;AAEA;;AAEA,WAAKud,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKpS,aAApD;AACA,WAAKsS,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,OAArD;AACA,WAAKF,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKg0B,cAApD;AACA,WAAK/zB,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,KAAK6zB,YAAtD;AACA,WAAK/zB,eAAL,GAAuB,KAAKA,eAAL,IAAwB,SAA/C;AACA,WAAKW,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKuzB,kBAApD;AACA,WAAKxzB,YAAL,GAAoB,KAAKA,YAAL,IAAqB,KAAKqzB,YAA9C;AACA,WAAKjzB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAKizB,YAAhE;AACA,WAAKlzB,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B4yB,+CAAO,CAAC,KAAKM,YAAN,EAAoB,EAApB,CAA5D;AACA,WAAK1zB,SAAL,GAAiB,KAAKA,SAAL,IAAkB,WAAnC;AACA,WAAKW,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,WAAjD;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,MAAvD;AACA,WAAKE,eAAL,GAAuB,KAAKA,eAAL,IAAwB,SAA/C;AACA,WAAKC,YAAL,GAAoB,KAAKA,YAAL,IAAqB,KAAzC;AACA,WAAKZ,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAA7C;AACA,WAAKG,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAK9L,SAAhD;AACA,WAAKiM,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKjM,SAA9D;AACA,WAAK6/B,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAK7/B,SAA1D;AACA,WAAK8L,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKuzB,gBAAhD;AACA,WAAKzzB,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,KAAK5L,SAAxD;AACA,WAAK6L,sBAAL,GAA8B,KAAKA,sBAAL,IAA+B,SAA7D;AAEA;;AACA,WAAKsoB,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKpmC,SAApD;AACA,WAAKwmC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKv0B,SAA9D;AACA;;AACA,WAAKo0B,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKQ,QAA7B,IAAyC,KAAKyK,gBAArE;AAEA,WAAKzK,QAAL,GAAgB,KAAKA,QAAL,IAAiB,KAAK9mC,OAAtC;AACA,WAAKwmC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKM,QAA9D;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKN,UAAjC,IAA+C,KAAKn7B,aAA/E;AACA,WAAK67B,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAK77B,aAAhD;AACA,WAAK47B,wBAAL,GAAgC,KAAKA,wBAAL,IAAiC,KAAKhnC,OAAtE;AACA,WAAKgyC,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKlyC,UAApD;AACA,WAAK8mC,kBAAL,GAA0B,KAAK9mC,UAA/B;AACA,WAAKswC,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKhlC,aAAhD;AACA,WAAKilC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAAK3J,iBAAlD;AACA,WAAKL,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKpmC,SAApD;AACA,WAAK0mC,iBAAL,GAAyB,KAAK1mC,SAA9B;AAEA;;AACA,WAAKF,SAAL,GAAiB,KAAKA,SAAL,IAAkB,KAAKmS,SAAxC;AAEA;;AACA,WAAKk3B,SAAL,GAAiB,KAAKA,SAAL,IAAkB,KAAKkI,YAAxC;AACA,WAAKjI,SAAL,GAAiB,KAAKA,SAAL,IAAkB,KAAKmI,cAAxC;AACA,WAAKlI,SAAL,GAAiB,KAAKA,SAAL,IAAkB2H,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAzC;AACA,WAAKwpD,SAAL,GAAiB,KAAKA,SAAL,IAAkB0H,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEzxD,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAzC;AACA,WAAKypD,SAAL,GAAiB,KAAKA,SAAL,IAAkByH,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAAzC;AACA,WAAK0pD,SAAL,GAAiB,KAAKA,SAAL,IAAkBwH,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEzxD,QAAAA,CAAC,EAAE,CAAC;AAAN,OAAtB,CAAzC;AACA,WAAK2pD,SAAL,GAAiB,KAAKA,SAAL,IAAkBuH,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAzC;AACA,WAAK4pD,SAAL,GAAiB,KAAKA,SAAL,IAAkBsH,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEzxD,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAzC;AAEA;;AACA,WAAK2lC,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAK4rB,YAA9B;AACA,WAAK3rB,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAK6rB,cAA9B;AACA,WAAK5rB,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAKxa,aAA9B;AACA,WAAKya,IAAL,GAAY,KAAKA,IAAL,IAAaorB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAElxC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAK0lB,IAAL,GAAY,KAAKA,IAAL,IAAamrB,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEpxC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAAtB,CAA/B;AACA,WAAK2lB,IAAL,GAAY,KAAKA,IAAL,IAAakrB,8CAAM,CAAC,KAAK7lC,aAAN,EAAqB;AAAEhL,QAAAA,CAAC,EAAE,CAAC;AAAN,OAArB,CAA/B;AACA,WAAK4lB,IAAL,GAAY,KAAKA,IAAL,IAAairB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUqgB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAA/B;AACA,WAAK6lB,IAAL,GAAY,KAAKA,IAAL,IAAagrB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUqgB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAA/B;AACA,WAAK8lB,IAAL,GAAY,KAAKA,IAAL,IAAa+qB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,GAAL;AAAUqgB,QAAAA,CAAC,EAAE;AAAb,OAApB,CAA/B;AACA,WAAK+lB,KAAL,GAAa,KAAKA,KAAL,IAAc8qB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUqgB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAKgmB,KAAL,GAAa,KAAKA,KAAL,IAAc6qB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUqgB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAKimB,KAAL,GAAa,KAAKA,KAAL,IAAc4qB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,GAAL;AAAUqgB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAK8mB,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,MAAjD;AACA,WAAKC,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,KAAKrJ,iBAAxD;AACA,WAAKuJ,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,MAArD;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKlV,SAA5D;AACA,WAAKqV,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,MAAnD;AACA,WAAKD,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKxJ,iBAA1D;AACA,WAAKiJ,cAAL,GAAsB,KAAKA,cAAL,IAAuB,OAA7C;AACA,WAAKC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAA7C;AACA,WAAKC,UAAL,GAAkB,KAAKA,UAAL,IAAmB,KAArC;AAEA;;AACA,WAAKmF,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAKklB,YAAhE;AACA,WAAKjlB,sBAAL,GAA8B,KAAKA,sBAAL,IAA+B,KAAKolB,kBAAlE;AACA,WAAKnlB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAKmlB,kBAAhE;AACA,WAAKllB,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKglB,gBAA9D;AACA,WAAKplB,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKlsB,SAAhD;AACA,WAAKusB,uBAAL,GACE,KAAKA,uBAAL,KACC,KAAK6kB,QAAL,GAAgBN,8CAAM,CAAC,KAAKS,cAAN,EAAsB,EAAtB,CAAtB,GAAkD,KAAKA,cADxD,CADF;AAGA,WAAK/kB,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKsP,cAA1D;AACD;;;WACD,mBAAUkW,SAAV,EAAqB;AAAA;;AACnB,UAAI,QAAOA,SAAP,MAAqB,QAAzB,EAAmC;AACjC;AACA,aAAKC,YAAL;AACA;AACD;;AAED,UAAM/6D,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAY86D,SAAZ,CAAb,CAPmB,CASnB;;AACA96D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACmoB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUyyC,SAAS,CAACzyC,CAAD,CAAnB;AACD,OAFD,EAVmB,CAcnB;;AACA,WAAK0yC,YAAL,GAfmB,CAgBnB;;AACA/6D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACmoB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUyyC,SAAS,CAACzyC,CAAD,CAAnB;AACD,OAFD;AAGD;;;;;;AAGI,IAAM9oB,iBAAiB,GAAG,SAApBA,iBAAoB,CAACy7D,aAAD,EAAmB;AAClD,MAAM78D,KAAK,GAAG,IAAI87D,KAAJ,EAAd;AACA97D,EAAAA,KAAK,CAAC88D,SAAN,CAAgBD,aAAhB;AACA,SAAO78D,KAAP;AACD,CAJM;;;;;;;;;;;;;;;;;;;;;;;;;;AC3MP;AACA;;IACM87D;AACJ,mBAAc;AAAA;;AACZ,SAAK7K,UAAL,GAAkB,MAAlB;AACA,SAAK+K,YAAL,GAAoB,SAApB;AACA,SAAKE,cAAL,GAAsBR,+CAAO,CAAC,KAAKM,YAAN,EAAoB,EAApB,CAA7B;AAEA,SAAKlmC,aAAL,GAAqB6lC,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,MAAAA,CAAC,EAAE,CAAC;AAAN,KAApB,CAA3B;AACA,SAAK0xD,kBAAL,GAA0BN,wDAAQ,CAAC,KAAKG,YAAN,EAAoB,KAAKD,QAAzB,CAAlC;AACA,SAAKK,oBAAL,GAA4BP,wDAAQ,CAAC,KAAKK,cAAN,EAAsB,KAAKH,QAA3B,CAApC;AACA,SAAKM,mBAAL,GAA2BR,wDAAQ,CAAC,KAAK/lC,aAAN,EAAqB,KAAKimC,QAA1B,CAAnC;AACA,SAAKE,gBAAL,GAAwBL,8CAAM,CAAC,KAAKI,YAAN,CAA9B;AACA,SAAKM,kBAAL,GAA0BV,8CAAM,CAAC,KAAKM,cAAN,CAAhC;AACA,SAAK9K,iBAAL,GAAyBwK,8CAAM,CAAC,KAAK9lC,aAAN,CAA/B;AACA,SAAKnL,SAAL,GAAiBixC,8CAAM,CAAC,KAAK3K,UAAN,CAAvB;AACA,SAAKr0B,SAAL,GAAiBg/B,8CAAM,CAAC,KAAK3K,UAAN,CAAvB;AAEA,SAAKvmC,OAAL,GAAe,SAAf;AACA,SAAKsyC,SAAL,GAAiB,YAAjB;AACA,SAAKC,iBAAL,GAAyB,WAAzB;AACA,SAAKC,aAAL,GAAqBxB,+CAAO,CAACE,8CAAM,CAAC,SAAD,CAAP,EAAoB,EAApB,CAA5B;AACA,SAAKjxC,SAAL,GAAiB,YAAjB;AACA,SAAKwyC,OAAL,GAAe,SAAf;AACA,SAAKjgC,OAAL,GAAe6/B,4CAAI,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,IAAhB,CAAnB;AACA,SAAKjgC,cAAL,GAAsB,YAAtB;AACA,SAAKz6B,UAAL,GAAkB,4CAAlB;AACA,SAAK4b,QAAL,GAAgB,MAAhB;AACA,SAAKm/C,eAAL,GAAuB,SAAvB;AACA,SAAKxgC,SAAL,GAAiB,MAAjB;AACA;;AAEA,SAAK2/B,OAAL,GAAe,YAAf;AACA,SAAK/xC,UAAL,GAAkB,YAAlB;AACA,SAAKwS,UAAL,GAAkB,YAAlB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKu/B,gBAAL,GAAwB,YAAxB;AACA,SAAK3/B,UAAL,GAAkB,SAAlB;AACA,SAAKE,mBAAL,GAA2B,YAA3B;AAEA;;AAEA,SAAKwpB,WAAL,GAAmB,YAAnB;AACA,SAAKC,QAAL,GAAgB,YAAhB;AACA,SAAKC,cAAL,GAAsB,YAAtB;AACA,SAAKC,cAAL,GAAsB,YAAtB;AACA,SAAKC,WAAL,GAAmB,YAAnB;AACA,SAAKE,eAAL,GAAuB,YAAvB;AACA,SAAKE,gBAAL,GAAwB,YAAxB;AACA,SAAKD,mBAAL,GAA2B,YAA3B;AACA,SAAKE,cAAL,GAAsB,YAAtB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKC,eAAL,GAAuB,YAAvB;AACA,SAAKC,YAAL,GAAoB,SAApB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKE,qBAAL,GAA6B,YAA7B;AACA,SAAKD,kBAAL,GAA0B,YAA1B;AACA,SAAKT,mBAAL,GAA2B,OAA3B;AAEA;;AAEA,SAAK1e,eAAL,GAAuBuzB,8CAAM,CAAC,SAAD,EAAY,EAAZ,CAA7B;AACA,SAAKrzB,kBAAL,GAA0B,YAA1B;AACA,SAAKD,gBAAL,GAAwB,SAAxB;AACA,SAAKS,eAAL,GAAuBm0B,4CAAI,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,EAAhB,CAA3B;AACA,SAAKp0B,YAAL,GAAoB,YAApB;AACA,SAAKD,aAAL,GAAqB,YAArB;AACA,SAAK+zB,kBAAL,GAA0B,YAA1B;AACA,SAAK5zB,oBAAL,GAA4B,YAA5B;AACA,SAAKJ,sBAAL,GAA8B,SAA9B;AACA,SAAKM,qBAAL,GAA6Bg0B,4CAAI,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,EAAhB,CAAjC;AACA,SAAKj0B,kBAAL,GAA0B,SAA1B;AACA,SAAKR,SAAL,GAAiB,YAAjB;AACA,SAAKW,gBAAL,GAAwB,YAAxB;AACA,SAAKD,mBAAL,GAA2B,MAA3B;AACA,SAAKE,eAAL,GAAuB,SAAvB;AACA,SAAKC,YAAL,GAAoB,SAApB;AACA,SAAKX,iBAAL,GAAyB,YAAzB;AACA,SAAKD,cAAL,GAAsB,SAAtB;AAEA;;AACA,SAAK80B,UAAL,GAAkB,YAAlB;AAEA,SAAKvC,aAAL,GAAqB,SAArB;AACA,SAAKC,cAAL,GAAsB,MAAtB;AACD;;;;WACD,wBAAe;AACb,WAAKiC,SAAL,GAAiBtB,+CAAO,CAAC,KAAKhxC,OAAN,EAAe,EAAf,CAAxB;AACA,WAAKC,SAAL,GAAiB,KAAKsyC,iBAAtB;AACA,WAAKngC,cAAL,GAAsB,KAAKmgC,iBAA3B;AACA;;AAEA,WAAKV,OAAL,GAAe,KAAK7xC,OAApB;AACA,WAAKF,UAAL,GAAkB,KAAK2yC,OAAvB;AACA,WAAKngC,UAAL,GAAkB,KAAKggC,SAAvB;AACA,WAAK//B,aAAL,GAAqB,KAAKC,OAA1B;AACA,WAAKs/B,gBAAL,GAAwB,KAAK7xC,SAA7B;AACA,WAAKoS,mBAAL,GAA2B2+B,+CAAO,CAAC,KAAK0B,eAAN,EAAuB,EAAvB,CAAlC;AAEA;;AAEA,WAAK7W,WAAL,GAAmB,KAAK4W,OAAxB;AACA,WAAK3W,QAAL,GAAgB,KAAK97B,OAArB;AACA,WAAK+7B,cAAL,GAAsB,KAAKwW,iBAA3B;AACA,WAAKvW,cAAL,GAAsB,KAAKuW,iBAA3B;AACA,WAAKtW,WAAL,GAAmB,KAAKsW,iBAAxB;AACA,WAAKpW,eAAL,GAAuB,KAAKoW,iBAA5B;AACA,WAAKlW,gBAAL,GAAwB,KAAKP,QAA7B;AACA,WAAKM,mBAAL,GAA2B,KAAKP,WAAhC;AACA,WAAKS,cAAL,GAAsB,KAAKiW,iBAA3B;AACA,WAAKhW,aAAL,GAAqB,KAAKgW,iBAA1B;AACA,WAAK/V,eAAL,GAAuB,KAAKkV,oBAA5B;AACA,WAAKjV,YAAL,GAAoB,KAAK6V,SAAzB;AACA,WAAK5V,aAAL,GAAqB,KAAKkV,kBAA1B;AACA,WAAKhV,qBAAL,GAA6B,KAAK6V,OAAlC;AACA,WAAK9V,kBAAL,GAA0B,KAAK2V,SAA/B;AAEA;;AAEA,WAAK50B,kBAAL,GAA0B,KAAK6oB,UAA/B;AACA,WAAKtoB,YAAL,GAAoB+yB,+CAAO,CAAC,KAAKhxC,OAAN,EAAe,EAAf,CAA3B;AACA,WAAKge,aAAL,GAAqB,KAAKw0B,aAA1B;AACA,WAAKT,kBAAL,GAA0B,KAAKQ,iBAA/B;AACA,WAAKp0B,oBAAL,GAA4B,KAAK4zB,kBAAjC;AACA,WAAKn0B,SAAL,GAAiB,KAAK20B,iBAAtB;AACA,WAAKh0B,gBAAL,GAAwB,KAAKg0B,iBAA7B;AACA,WAAKz0B,iBAAL,GAAyB,KAAK00B,aAA9B;AAEA;;AACA,WAAKnM,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKpmC,SAApD;AACA,WAAKwmC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKv0B,SAA9D;AACA,WAAKo0B,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKQ,QAA7B,IAAyC,KAAKyK,gBAArE;AACA,WAAKzK,QAAL,GAAgB,KAAKA,QAAL,IAAiB,KAAK9mC,OAAtC;AACA,WAAKwmC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKM,QAA9D;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKN,UAAjC,IAA+C,KAAKn7B,aAA/E;AACA,WAAK67B,aAAL,GAAqB,KAAKA,aAAL,IAAsB,MAA3C;AACA,WAAKD,wBAAL,GAAgC,KAAKA,wBAAL,IAAiC,KAAKhnC,OAAtE;AACA,WAAKgyC,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKlyC,UAApD;AACA,WAAK8mC,kBAAL,GAA0B,KAAK6K,kBAA/B;AACA,WAAK9K,iBAAL,GAAyB,SAAzB,CArDa,CAqDuB;;AAEpC,WAAKyJ,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKhlC,aAAhD;AACA,WAAKilC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAAK3J,iBAAlD;AAEA,WAAK0C,SAAL,GAAiB,KAAKkI,YAAtB;AACA,WAAKjI,SAAL,GAAiB,KAAKmI,cAAtB;AACA,WAAKlI,SAAL,GAAiB2H,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAvB;AACA,WAAKwpD,SAAL,GAAiB0H,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEzxD,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAvB;AACA,WAAKypD,SAAL,GAAiByH,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAAvB;AACA,WAAK0pD,SAAL,GAAiBwH,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEzxD,QAAAA,CAAC,EAAE,CAAC;AAAN,OAAtB,CAAvB;AACA,WAAK2pD,SAAL,GAAiBuH,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAvB;AACA,WAAK4pD,SAAL,GAAiBsH,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEzxD,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAvB;AAEA;;AACA,WAAK2lC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,KAAL,GAAa,KAAKA,KAAL,IAAc,SAA3B;AACA,WAAKC,KAAL,GAAa,KAAKA,KAAL,IAAc,SAA3B;AACA,WAAKC,KAAL,GAAa,KAAKA,KAAL,IAAc,SAA3B;AACA,WAAKa,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,MAAjD;AACA,WAAKC,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,KAAKrJ,iBAAxD;AACA,WAAKuJ,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,MAArD;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKlV,SAA5D;AACA,WAAKqV,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,MAAnD;AACA,WAAKD,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKxJ,iBAA1D;AACA,WAAKiJ,cAAL,GAAsB,KAAKA,cAAL,IAAuB,OAA7C;AACA,WAAKC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAA7C;AACA,WAAKC,UAAL,GAAkB,KAAKA,UAAL,IAAmB,KAArC;AAEA;;AACA,WAAKlnB,SAAL,GAAiB,KAAKwxC,gBAAtB;AAEA;;AACA,WAAKnlB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAKklB,YAAhE;AACA,WAAKjlB,sBAAL,GAA8B,KAAKA,sBAAL,IAA+B,KAAKolB,kBAAlE;AACA,WAAKnlB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAKmlB,kBAAhE;AACA,WAAKllB,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKglB,gBAA9D;AACA,WAAKplB,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKlsB,SAAhD;AACA,WAAKusB,uBAAL,GACE,KAAKA,uBAAL,KACC,KAAK6kB,QAAL,GAAgBN,8CAAM,CAAC,KAAKS,cAAN,EAAsB,EAAtB,CAAtB,GAAkD,KAAKA,cADxD,CADF;AAGA,WAAK/kB,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKsP,cAA1D;AACD;;;WACD,mBAAUkW,SAAV,EAAqB;AAAA;;AACnB,UAAI,QAAOA,SAAP,MAAqB,QAAzB,EAAmC;AACjC;AACA,aAAKC,YAAL;AACA;AACD;;AAED,UAAM/6D,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAY86D,SAAZ,CAAb,CAPmB,CASnB;;AACA96D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACmoB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUyyC,SAAS,CAACzyC,CAAD,CAAnB;AACD,OAFD,EAVmB,CAcnB;;AACA,WAAK0yC,YAAL,GAfmB,CAgBnB;;AACA/6D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACmoB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUyyC,SAAS,CAACzyC,CAAD,CAAnB;AACD,OAFD;AAGD;;;;;;AAGI,IAAM9oB,iBAAiB,GAAG,SAApBA,iBAAoB,CAACy7D,aAAD,EAAmB;AAClD,MAAM78D,KAAK,GAAG,IAAI87D,KAAJ,EAAd;AACA97D,EAAAA,KAAK,CAAC88D,SAAN,CAAgBD,aAAhB;AACA,SAAO78D,KAAP;AACD,CAJM;;;;;;;;;;;;;;;;;;;;;;;;;;ACrNP;AACA;;IAEM87D;AACJ,mBAAc;AAAA;;AACZ;AACA,SAAK7K,UAAL,GAAkB,SAAlB;AACA,SAAK+K,YAAL,GAAoB,SAApB;AAEA,SAAKE,cAAL,GAAsBP,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,MAAAA,CAAC,EAAE;AAAL,KAApB,CAA5B;AACA,SAAKyxD,cAAL,GAAsB,SAAtB;AACA,SAAKpmC,aAAL,GAAqB6lC,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,MAAAA,CAAC,EAAE,CAAC;AAAN,KAApB,CAA3B;AACA,SAAK0xD,kBAAL,GAA0BN,wDAAQ,CAAC,KAAKG,YAAN,EAAoB,KAAKD,QAAzB,CAAlC;AACA,SAAKK,oBAAL,GAA4BP,wDAAQ,CAAC,KAAKK,cAAN,EAAsB,KAAKH,QAA3B,CAApC;AACA,SAAKM,mBAAL,GAA2BR,wDAAQ,CAAC,KAAK/lC,aAAN,EAAqB,KAAKimC,QAA1B,CAAnC,CAVY,CAWZ;;AAEA,SAAKE,gBAAL,GAAwBL,8CAAM,CAAC,KAAKI,YAAN,CAA9B;AACA,SAAKM,kBAAL,GAA0BV,8CAAM,CAAC,KAAKM,cAAN,CAAhC;AACA,SAAK9K,iBAAL,GAAyBwK,8CAAM,CAAC,KAAK9lC,aAAN,CAA/B;AACA,SAAKnL,SAAL,GAAiBixC,8CAAM,CAAC,KAAK3K,UAAN,CAAvB;AACA,SAAKr0B,SAAL,GAAiBg/B,8CAAM,CAAC,KAAK3K,UAAN,CAAvB;AAEA,SAAKA,UAAL,GAAkB,OAAlB;AACA,SAAKvmC,OAAL,GAAe,SAAf;AACA,SAAKsyC,SAAL,GAAiB,SAAjB;AACA,SAAKryC,SAAL,GAAiB,SAAjB;AACA,SAAKwyC,OAAL,GAAe,SAAf;AACA,SAAKjgC,OAAL,GAAe,SAAf;AACA,SAAKJ,cAAL,GAAsB,SAAtB;AACA,SAAKz6B,UAAL,GAAkB,4CAAlB;AACA,SAAK4b,QAAL,GAAgB,MAAhB;AACA,SAAKm/C,eAAL,GAAuB,SAAvB;AACA,SAAKxgC,SAAL,GAAiB,MAAjB;AAEA;;AAEA,SAAK2/B,OAAL,GAAe,YAAf;AACA,SAAK/xC,UAAL,GAAkB,YAAlB;AACA,SAAKwS,UAAL,GAAkB,YAAlB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKu/B,gBAAL,GAAwB,YAAxB;AACA,SAAK3/B,UAAL,GAAkB,YAAlB;AACA,SAAKE,mBAAL,GAA2B,YAA3B;AAEA;;AAEA,SAAKwpB,WAAL,GAAmB,YAAnB;AACA,SAAKC,QAAL,GAAgB,YAAhB;AACA,SAAKC,cAAL,GAAsB,OAAtB;AACA,SAAKC,cAAL,GAAsB,MAAtB;AACA,SAAKC,WAAL,GAAmB,YAAnB;AACA,SAAKE,eAAL,GAAuB,YAAvB;AACA,SAAKE,gBAAL,GAAwB,YAAxB;AACA,SAAKD,mBAAL,GAA2B,YAA3B;AACA,SAAKE,cAAL,GAAsB,YAAtB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKC,eAAL,GAAuB,YAAvB;AACA,SAAKC,YAAL,GAAoB,SAApB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKE,qBAAL,GAA6B,MAA7B;AACA,SAAKD,kBAAL,GAA0B,SAA1B;AACA,SAAKT,mBAAL,GAA2B,OAA3B;AAEA;;AAEA,SAAK1e,eAAL,GAAuB,YAAvB;AACA,SAAKE,kBAAL,GAA0B,YAA1B;AACA,SAAKD,gBAAL,GAAwB,YAAxB;AACA,SAAKF,eAAL,GAAuB,SAAvB;AACA,SAAKW,eAAL,GAAuB,YAAvB;AACA,SAAKD,YAAL,GAAoB,YAApB;AACA,SAAK8zB,kBAAL,GAA0B,YAA1B;AACA,SAAK/zB,aAAL,GAAqB,KAAK+zB,kBAA1B;AACA,SAAKj0B,iBAAL,GAAyB,YAAzB;AACA,SAAKK,oBAAL,GAA4B,KAAKL,iBAAjC;AACA,SAAKC,sBAAL,GAA8B,YAA9B;AACA,SAAKM,qBAAL,GAA6B,YAA7B;AACA,SAAKD,kBAAL,GAA0B,YAA1B;AACA,SAAKR,SAAL,GAAiB,YAAjB;AACA,SAAKW,gBAAL,GAAwB,YAAxB;AACA,SAAKD,mBAAL,GAA2B,YAA3B;AACA,SAAKE,eAAL,GAAuB,YAAvB;AACA,SAAKC,YAAL,GAAoB,YAApB;AACA,SAAKZ,cAAL,GAAsB,YAAtB;AAEA,SAAKL,eAAL,GAAuB60B,4CAAI,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,IAAhB,CAA3B;AACA,SAAK30B,kBAAL,GAA0B,OAA1B;AACA,SAAKD,gBAAL,GAAwB,SAAxB;AACA,SAAKS,eAAL,GAAuB,SAAvB;AACA,SAAKD,YAAL,GAAoB,SAApB;AACA,SAAK8zB,kBAAL,GAA0B,OAA1B;AACA,SAAK/zB,aAAL,GAAqB,YAArB;AACA,SAAKF,iBAAL,GAAyB,OAAzB;AACA,SAAKK,oBAAL,GAA4B,YAA5B;AACA,SAAKJ,sBAAL,GAA8B,SAA9B;AACA,SAAKM,qBAAL,GAA6B,SAA7B;AACA,SAAKD,kBAAL,GAA0B,SAA1B;AACA,SAAKR,SAAL,GAAiB,WAAjB;AACA,SAAKW,gBAAL,GAAwB,WAAxB;AACA,SAAKD,mBAAL,GAA2B,MAA3B;AACA,SAAKE,eAAL,GAAuB,SAAvB;AACA,SAAKC,YAAL,GAAoB,KAApB;AACA,SAAKZ,cAAL,GAAsB,KAAtB;AAEA;;AACA,SAAK80B,UAAL,GAAkB,OAAlB;AACA,SAAKvC,aAAL,GAAqB,SAArB;AACA,SAAKC,cAAL,GAAsB,SAAtB;AACA,SAAK6B,YAAL;AACD;;;;WACD,wBAAe;AACb;AAEA,WAAKL,OAAL,GAAe,KAAK7xC,OAApB;AACA,WAAKF,UAAL,GAAkB,KAAK2yC,OAAvB,CAJa,CAImB;;AAChC,WAAKngC,UAAL,GAAkB,KAAKggC,SAAvB;AACA,WAAK//B,aAAL,GAAqB,KAAKC,OAA1B;AACA,WAAKs/B,gBAAL,GAAwB,KAAK7xC,SAA7B;AACA,WAAKkS,UAAL,GAAkB,KAAKD,SAAvB;AACA,WAAKG,mBAAL,GAA2B,KAAKqgC,eAAhC;AAEA;AAEA;;AACA,WAAK7W,WAAL,GAAmBmV,+CAAO,CAAC,KAAKyB,OAAN,EAAe,EAAf,CAA1B;AACA,WAAK3W,QAAL,GAAgB,KAAK97B,OAArB;AACA,WAAKq8B,gBAAL,GAAwB,KAAKP,QAA7B;AACA,WAAKG,WAAL,GAAmB,KAAK/pB,SAAxB;AACA,WAAKiqB,eAAL,GAAuB,KAAKjqB,SAA5B;AACA,WAAKkqB,mBAAL,GAA2B,KAAKP,WAAhC;AACA,WAAKS,cAAL,GAAsB,KAAKP,cAA3B;AACA,WAAKQ,aAAL,GAAqB,KAAKR,cAA1B;AACA,WAAKS,eAAL,GAAuB,KAAKhqB,OAA5B;AACA,WAAKkqB,aAAL,GAAqB,KAAKX,cAA1B;AAEA;;AAEA,WAAK/d,aAAL,GAAqB,KAAK+zB,kBAA1B;AACA,WAAK5zB,oBAAL,GAA4B,KAAKL,iBAAjC;AAEA;;AACA,WAAKuoB,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKpmC,SAApD;AACA,WAAKwmC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKv0B,SAA9D;AACA,WAAKo0B,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKQ,QAA7B,IAAyC,KAAKyK,gBAArE;AAEA,WAAKzK,QAAL,GAAgB,KAAKA,QAAL,IAAiB,KAAK9mC,OAAtC;AACA,WAAKwmC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKM,QAA9D;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKN,UAAjC,IAA+C,KAAKn7B,aAA/E;AACA,WAAK67B,aAAL,GAAqB,KAAKA,aAAL,IAAsB,SAA3C;AACA,WAAKD,wBAAL,GAAgC,KAAKA,wBAAL,IAAiC,KAAKhnC,OAAtE;AACA,WAAKgyC,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKlyC,UAApD;AACA,WAAK8mC,kBAAL,GAA0B,KAAK9mC,UAA/B;AACA,WAAK6mC,iBAAL,GAAyB,KAAK1mC,SAA9B;AAEA,WAAKmwC,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKhlC,aAAhD;AACA,WAAKilC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAAK3J,iBAAlD;AACA,WAAKL,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKpmC,SAApD;AACA;;AACA,WAAKF,SAAL,GAAiB,KAAKwxC,gBAAtB;AACA;;AACA,WAAKnI,SAAL,GAAiB,KAAKkI,YAAtB;AACA,WAAKjI,SAAL,GAAiB,KAAKmI,cAAtB;AACA,WAAKlI,SAAL,GAAiB2H,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAvB;AACA,WAAKwpD,SAAL,GAAiB0H,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEzxD,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAvB;AACA,WAAKypD,SAAL,GAAiByH,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAAvB;AACA,WAAK0pD,SAAL,GAAiBwH,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEzxD,QAAAA,CAAC,EAAE,CAAC;AAAN,OAAtB,CAAvB;AACA,WAAK2pD,SAAL,GAAiBuH,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAvB;AACA,WAAK4pD,SAAL,GAAiBsH,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEzxD,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAvB;AAEA;;AACA,WAAK2lC,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAK4rB,YAA9B;AACA,WAAK3rB,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAK6rB,cAA9B;AACA,WAAK5rB,IAAL,GAAY,KAAKA,IAAL,IAAaqrB,8CAAM,CAAC,KAAK7lC,aAAN,EAAqB;AAAEhL,QAAAA,CAAC,EAAE,CAAC;AAAN,OAArB,CAA/B;AACA,WAAKylB,IAAL,GAAY,KAAKA,IAAL,IAAaorB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAElxC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAK0lB,IAAL,GAAY,KAAKA,IAAL,IAAamrB,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEpxC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAAtB,CAA/B;AACA,WAAK2lB,IAAL,GAAY,KAAKA,IAAL,IAAakrB,8CAAM,CAAC,KAAK7lC,aAAN,EAAqB;AAAEhL,QAAAA,CAAC,EAAE,CAAC;AAAN,OAArB,CAA/B;AACA,WAAK4lB,IAAL,GAAY,KAAKA,IAAL,IAAairB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUqgB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAA/B;AACA,WAAK6lB,IAAL,GAAY,KAAKA,IAAL,IAAagrB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUqgB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAA/B;AACA,WAAK8lB,IAAL,GAAY,KAAKA,IAAL,IAAa+qB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,GAAL;AAAUqgB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAA/B;AACA,WAAK+lB,KAAL,GAAa,KAAKA,KAAL,IAAc8qB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUqgB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAKgmB,KAAL,GAAa,KAAKA,KAAL,IAAc6qB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUqgB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAKimB,KAAL,GAAa,KAAKA,KAAL,IAAc4qB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,GAAL;AAAUqgB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAK8mB,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,MAAjD;AACA,WAAKC,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,KAAKrJ,iBAAxD;AACA,WAAKuJ,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,MAArD;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKlV,SAA5D;AACA,WAAKqV,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,MAAnD;AACA,WAAKD,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKxJ,iBAA1D;AACA,WAAKiJ,cAAL,GAAsB,KAAKA,cAAL,IAAuB,OAA7C;AACA,WAAKC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAA7C;AACA,WAAKC,UAAL,GAAkB,KAAKA,UAAL,IAAmB,KAArC;AAEA;;AACA,WAAKmF,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAKklB,YAAhE;AACA,WAAKjlB,sBAAL,GAA8B,KAAKA,sBAAL,IAA+B,KAAKolB,kBAAlE;AACA,WAAKnlB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAKmlB,kBAAhE;AACA,WAAKllB,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKglB,gBAA9D;AACA,WAAKplB,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKlsB,SAAhD;AACA,WAAKusB,uBAAL,GAA+B,KAAKA,uBAAL,IAAgC,KAAKkmB,eAApE;AACA,WAAKjmB,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKsP,cAA1D;AACD;;;WACD,mBAAUkW,SAAV,EAAqB;AAAA;;AACnB,UAAI,QAAOA,SAAP,MAAqB,QAAzB,EAAmC;AACjC;AACA,aAAKC,YAAL;AACA;AACD;;AAED,UAAM/6D,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAY86D,SAAZ,CAAb,CAPmB,CASnB;;AACA96D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACmoB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUyyC,SAAS,CAACzyC,CAAD,CAAnB;AACD,OAFD,EAVmB,CAcnB;;AACA,WAAK0yC,YAAL,GAfmB,CAgBnB;;AACA/6D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACmoB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUyyC,SAAS,CAACzyC,CAAD,CAAnB;AACD,OAFD;AAGD;;;;;;AAGI,IAAM9oB,iBAAiB,GAAG,SAApBA,iBAAoB,CAACy7D,aAAD,EAAmB;AAClD,MAAM78D,KAAK,GAAG,IAAI87D,KAAJ,EAAd;AACA97D,EAAAA,KAAK,CAAC88D,SAAN,CAAgBD,aAAhB;AACA,SAAO78D,KAAP;AACD,CAJM;;;;;;;;;;;;;;;;;;;;;;;;;;ACjOP;AACA;;IACM87D;AACJ,mBAAc;AAAA;;AACZ;AACA,SAAK7K,UAAL,GAAkB,SAAlB;AACA,SAAK+K,YAAL,GAAoB,SAApB;AACA,SAAKE,cAAL,GAAsB,SAAtB;AACA,SAAKjL,UAAL,GAAkB,OAAlB;AACA,SAAKvmC,OAAL,GAAe,SAAf;AACA,SAAKsyC,SAAL,GAAiB,SAAjB;AACA,SAAKryC,SAAL,GAAiB,OAAjB;AACA,SAAKwyC,OAAL,GAAe,SAAf;AACA,SAAKjgC,OAAL,GAAe,SAAf;AACA,SAAKJ,cAAL,GAAsB,OAAtB;AACA,SAAKz6B,UAAL,GAAkB,4CAAlB;AACA,SAAK4b,QAAL,GAAgB,MAAhB;AAEA,SAAK6X,aAAL,GAAqB4lC,+CAAO,CAAC,SAAD,EAAY,EAAZ,CAA5B;AACA,SAAKS,kBAAL,GAA0BN,wDAAQ,CAAC,KAAKG,YAAN,EAAoB,KAAKD,QAAzB,CAAlC;AACA,SAAKK,oBAAL,GAA4BP,wDAAQ,CAAC,KAAKK,cAAN,EAAsB,KAAKH,QAA3B,CAApC;AACA,SAAKM,mBAAL,GAA2BR,wDAAQ,CAAC,KAAK/lC,aAAN,EAAqB,KAAKimC,QAA1B,CAAnC;AACA,SAAKE,gBAAL,GAAwBL,8CAAM,CAAC,KAAKI,YAAN,CAA9B;AACA,SAAKM,kBAAL,GAA0BV,8CAAM,CAAC,KAAKM,cAAN,CAAhC;AACA,SAAK9K,iBAAL,GAAyBwK,8CAAM,CAAC,KAAKI,YAAN,CAA/B;AACA,SAAKrxC,SAAL,GAAiBixC,8CAAM,CAAC,KAAK3K,UAAN,CAAvB;AACA,SAAKr0B,SAAL,GAAiBg/B,8CAAM,CAAC,KAAK3K,UAAN,CAAvB;AAEA;;AACA,SAAKsL,OAAL,GAAe,YAAf;AACA,SAAK/xC,UAAL,GAAkB,YAAlB;AACA,SAAKwS,UAAL,GAAkB,YAAlB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKu/B,gBAAL,GAAwB,YAAxB;AACA,SAAK3/B,UAAL,GAAkB,MAAlB;AACA,SAAKE,mBAAL,GAA2B,SAA3B;AAEA;;AAEA,SAAKwpB,WAAL,GAAmB,YAAnB;AACA,SAAKC,QAAL,GAAgB,YAAhB;AACA,SAAKC,cAAL,GAAsB,OAAtB;AACA,SAAKC,cAAL,GAAsB,MAAtB;AACA,SAAKC,WAAL,GAAmB,MAAnB;AACA,SAAKE,eAAL,GAAuB,MAAvB;AACA,SAAKE,gBAAL,GAAwB,YAAxB;AACA,SAAKD,mBAAL,GAA2B,SAA3B;AACA,SAAKE,cAAL,GAAsB,YAAtB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKC,eAAL,GAAuB,YAAvB;AACA,SAAKC,YAAL,GAAoB,SAApB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKE,qBAAL,GAA6B,MAA7B;AACA,SAAKD,kBAAL,GAA0B,SAA1B;AACA,SAAKT,mBAAL,GAA2B,OAA3B;AAEA;;AAEA,SAAK1e,eAAL,GAAuB,SAAvB;AACA,SAAKE,kBAAL,GAA0B,OAA1B;AACA,SAAKD,gBAAL,GAAwB,SAAxB;AACA,SAAKF,eAAL,GAAuB,SAAvB;AACA,SAAKW,eAAL,GAAuB,YAAvB;AACA,SAAKD,YAAL,GAAoB,SAApB;AACA,SAAK8zB,kBAAL,GAA0B,OAA1B;AACA,SAAK/zB,aAAL,GAAqB,YAArB;AACA,SAAKF,iBAAL,GAAyB,OAAzB;AACA,SAAKK,oBAAL,GAA4B,YAA5B;AACA,SAAKJ,sBAAL,GAA8B,SAA9B;AACA,SAAKM,qBAAL,GAA6B,YAA7B;AACA,SAAKD,kBAAL,GAA0B,YAA1B;AACA,SAAKR,SAAL,GAAiB,WAAjB;AACA,SAAKW,gBAAL,GAAwB,WAAxB;AACA,SAAKD,mBAAL,GAA2B,MAA3B;AACA,SAAKE,eAAL,GAAuB,SAAvB;AACA,SAAKC,YAAL,GAAoB,KAApB;AACA,SAAKZ,cAAL,GAAsB,KAAtB;AAEA;;AACA,SAAK80B,UAAL,GAAkB,OAAlB;AAEA,SAAKvC,aAAL,GAAqB,SAArB;AACA,SAAKC,cAAL,GAAsB,SAAtB;AACD;;;;WACD,wBAAe;AACb;AAEA,WAAKwB,OAAL,GAAe,KAAK7xC,OAApB;AACA,WAAKF,UAAL,GAAkB,KAAK2yC,OAAvB;AACA,WAAKngC,UAAL,GAAkB,KAAKggC,SAAvB;AACA,WAAK//B,aAAL,GAAqB,KAAKC,OAA1B;AACA,WAAKs/B,gBAAL,GAAwB,KAAK7xC,SAA7B;AAEA;;AAEA,WAAK47B,WAAL,GAAmBkV,8CAAM,CAAC,KAAK/wC,OAAN,EAAe,EAAf,CAAzB;AACA,WAAK87B,QAAL,GAAgB,KAAK97B,OAArB;AACA,WAAKq8B,gBAAL,GAAwB,KAAKP,QAA7B;AACA,WAAKQ,cAAL,GAAsB,KAAKP,cAA3B;AACA,WAAKQ,aAAL,GAAqB,KAAKR,cAA1B;AACA,WAAKS,eAAL,GAAuB,KAAKhqB,OAA5B;AACA,WAAKkqB,aAAL,GAAqB,KAAKX,cAA1B;AAEA;;AAEA,WAAK7d,eAAL,GAAuB,KAAKu0B,OAA5B;AACA,WAAKz0B,aAAL,GAAqB,KAAK+zB,kBAA1B;AACA,WAAK5zB,oBAAL,GAA4B,KAAKL,iBAAjC;AACA,WAAKO,qBAAL,GAA6B,KAAKH,eAAlC;AACA,WAAKE,kBAAL,GAA0B,KAAKpe,OAA/B;AAEA;;AACA,WAAKqmC,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKpmC,SAApD;AACA,WAAKwmC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKv0B,SAA9D;AACA,WAAKo0B,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKQ,QAA7B,IAAyC,KAAKyK,gBAArE;AAEA,WAAKzK,QAAL,GAAgB,KAAKA,QAAL,IAAiB,KAAK9mC,OAAtC;AACA,WAAKwmC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKM,QAA9D;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKN,UAAjC,IAA+C,KAAKn7B,aAA/E;AACA,WAAK67B,aAAL,GAAqB,KAAKA,aAAL,IAAsB,SAA3C;AACA,WAAKD,wBAAL,GAAgC,KAAKA,wBAAL,IAAiC,KAAKhnC,OAAtE;AACA,WAAKgyC,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKlyC,UAApD;AACA,WAAK8mC,kBAAL,GAA0B,KAAK6K,kBAA/B;AACA,WAAK9K,iBAAL,GAAyB,KAAK1mC,SAA9B;AAEA,WAAKmwC,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKhlC,aAAhD;AACA,WAAKilC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAAK3J,iBAAlD;AACA,WAAKL,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKpmC,SAApD;AACA;;AACA,WAAKF,SAAL,GAAiB,KAAKwxC,gBAAtB;AACA;;AACA,WAAKnI,SAAL,GAAiB,KAAKkI,YAAtB;AACA,WAAKjI,SAAL,GAAiB,KAAKmI,cAAtB;AACA,WAAKlI,SAAL,GAAiB2H,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAvB;AACA,WAAKwpD,SAAL,GAAiB0H,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEzxD,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAvB;AACA,WAAKypD,SAAL,GAAiByH,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAAvB;AACA,WAAK0pD,SAAL,GAAiBwH,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEzxD,QAAAA,CAAC,EAAE,CAAC;AAAN,OAAtB,CAAvB;AACA,WAAK2pD,SAAL,GAAiBuH,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAvB;AACA,WAAK4pD,SAAL,GAAiBsH,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEzxD,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAvB;AAEA;;AACA,WAAK2lC,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAK4rB,YAA9B;AACA,WAAK3rB,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAK6rB,cAA9B;AACA,WAAK5rB,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAKxa,aAA9B;AACA,WAAKya,IAAL,GAAY,KAAKA,IAAL,IAAaorB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAElxC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAK0lB,IAAL,GAAY,KAAKA,IAAL,IAAamrB,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEpxC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAAtB,CAA/B;AACA,WAAK2lB,IAAL,GAAY,KAAKA,IAAL,IAAakrB,8CAAM,CAAC,KAAK7lC,aAAN,EAAqB;AAAErrB,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUqgB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAArB,CAA/B;AACA,WAAK4lB,IAAL,GAAY,KAAKA,IAAL,IAAairB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUqgB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAA/B;AACA,WAAK6lB,IAAL,GAAY,KAAKA,IAAL,IAAagrB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUqgB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAA/B;AACA,WAAK8lB,IAAL,GAAY,KAAKA,IAAL,IAAa+qB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,GAAL;AAAUqgB,QAAAA,CAAC,EAAE;AAAb,OAApB,CAA/B;AACA,WAAK+lB,KAAL,GAAa,KAAKA,KAAL,IAAc8qB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUqgB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAKgmB,KAAL,GAAa,KAAKA,KAAL,IAAc6qB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUqgB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAKimB,KAAL,GAAa,KAAKA,KAAL,IAAc4qB,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,GAAL;AAAUqgB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAK8mB,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,MAAjD;AACA,WAAKC,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,KAAKrJ,iBAAxD;AACA,WAAKuJ,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,MAArD;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKlV,SAA5D;AACA,WAAKqV,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,MAAnD;AACA,WAAKD,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKxJ,iBAA1D;AACA,WAAKiJ,cAAL,GAAsB,KAAKA,cAAL,IAAuB,OAA7C;AACA,WAAKC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAA7C;AACA,WAAKC,UAAL,GAAkB,KAAKA,UAAL,IAAmB,KAArC;AAEA;;AACA,WAAKmF,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAKklB,YAAhE;AACA,WAAKjlB,sBAAL,GAA8B,KAAKA,sBAAL,IAA+B,KAAKolB,kBAAlE;AACA,WAAKnlB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAKmlB,kBAAhE;AACA,WAAKllB,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKglB,gBAA9D;AACA,WAAKplB,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKlsB,SAAhD;AACA,WAAKusB,uBAAL,GAA+B,KAAKA,uBAAL,IAAgC,KAAKna,mBAApE;AACA,WAAKoa,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKsP,cAA1D;AACD;;;WACD,mBAAUkW,SAAV,EAAqB;AAAA;;AACnB,UAAI,QAAOA,SAAP,MAAqB,QAAzB,EAAmC;AACjC;AACA,aAAKC,YAAL;AACA;AACD;;AAED,UAAM/6D,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAY86D,SAAZ,CAAb,CAPmB,CASnB;;AACA96D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACmoB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUyyC,SAAS,CAACzyC,CAAD,CAAnB;AACD,OAFD,EAVmB,CAcnB;;AACA,WAAK0yC,YAAL,GAfmB,CAgBnB;;AACA/6D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACmoB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUyyC,SAAS,CAACzyC,CAAD,CAAnB;AACD,OAFD;AAGD;;;;;;AAGI,IAAM9oB,iBAAiB,GAAG,SAApBA,iBAAoB,CAACy7D,aAAD,EAAmB;AAClD,MAAM78D,KAAK,GAAG,IAAI87D,KAAJ,EAAd;AACA97D,EAAAA,KAAK,CAAC88D,SAAN,CAAgBD,aAAhB;AACA,SAAO78D,KAAP;AACD,CAJM;;;;;;;;;;;;;;;;;ACnMP;AAEO,IAAM67D,QAAQ,GAAG,SAAXA,QAAW,CAACyB,GAAD,EAAMvB,QAAN;AAAA,SACtBA,QAAQ,GAAGJ,8CAAM,CAAC2B,GAAD,EAAM;AAAEr2D,IAAAA,CAAC,EAAE,CAAC,EAAN;AAAU6jB,IAAAA,CAAC,EAAE;AAAb,GAAN,CAAT,GAAoC6wC,8CAAM,CAAC2B,GAAD,EAAM;AAAEr2D,IAAAA,CAAC,EAAE,CAAC,EAAN;AAAU6jB,IAAAA,CAAC,EAAE,CAAC;AAAd,GAAN,CAD5B;AAAA,CAAjB;;;;;;;;;;;;;;;;;;;;;;;;;;ACFP;CAGA;AACA;;IAEMgxC;AACJ,mBAAc;AAAA;;AACZ,SAAKE,YAAL,GAAoB,MAApB;AACA,SAAKuB,QAAL,GAAgB,SAAhB;AACA,SAAKrB,cAAL,GAAsBR,+CAAO,CAAC,KAAK6B,QAAN,EAAgB,EAAhB,CAA7B;AACA,SAAKtM,UAAL,GAAkB,SAAlB,CAJY,CAMZ;;AACA,SAAKn7B,aAAL,GAAqB6lC,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,MAAAA,CAAC,EAAE,CAAC;AAAN,KAApB,CAA3B;AACA,SAAK0xD,kBAAL,GAA0BN,wDAAQ,CAAC,KAAKG,YAAN,EAAoB,KAAKD,QAAzB,CAAlC;AACA,SAAKK,oBAAL,GAA4BP,wDAAQ,CAAC,KAAKK,cAAN,EAAsB,KAAKH,QAA3B,CAApC;AACA,SAAKM,mBAAL,GAA2BR,wDAAQ,CAAC,KAAK/lC,aAAN,EAAqB,KAAKimC,QAA1B,CAAnC,CAVY,CAWZ;;AAEA,SAAKE,gBAAL,GAAwBL,8CAAM,CAAC,KAAKI,YAAN,CAA9B;AACA,SAAKM,kBAAL,GAA0BV,8CAAM,CAAC,KAAKM,cAAN,CAAhC;AACA,SAAK9K,iBAAL,GAAyBwK,8CAAM,CAAC,KAAK9lC,aAAN,CAA/B;AACA,SAAKnL,SAAL,GAAiBixC,8CAAM,CAAC,KAAK3K,UAAN,CAAvB;AACA,SAAKr0B,SAAL,GAAiBg/B,8CAAM,CAAC,KAAK3K,UAAN,CAAvB,CAjBY,CAmBZ;;AACA,SAAKvmC,OAAL,GAAe,MAAf;AACA,SAAKsyC,SAAL,GAAiB,YAAjB;AACA,SAAKryC,SAAL,GAAiB,MAAjB;AACA,SAAKwyC,OAAL,GAAe,MAAf;AACA,SAAKjgC,OAAL,GAAe,YAAf;AACA,SAAKnmB,IAAL,GAAY,MAAZ;AACA,SAAKzT,IAAL,GAAY,MAAZ;AACA,SAAKk6D,QAAL,GAAgB,MAAhB;AACA,SAAK96B,IAAL,GAAY,MAAZ;AACA,SAAK5F,cAAL,GAAsB,SAAtB;AACA,SAAKz6B,UAAL,GAAkB,4CAAlB;AACA,SAAK4b,QAAL,GAAgB,MAAhB;AAEA;;AAEA,SAAKs+C,OAAL,GAAe,YAAf;AACA,SAAK/xC,UAAL,GAAkB,YAAlB;AACA,SAAKwS,UAAL,GAAkB,YAAlB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKu/B,gBAAL,GAAwB,YAAxB;AACA,SAAK3/B,UAAL,GAAkB,YAAlB;AACA,SAAKE,mBAAL,GAA2B,OAA3B;AAEA;;AAEA,SAAKwpB,WAAL,GAAmB,YAAnB;AACA,SAAKC,QAAL,GAAgB,YAAhB;AACA,SAAKC,cAAL,GAAsB,YAAtB;AACA,SAAKC,cAAL,GAAsB,YAAtB;AACA,SAAKC,WAAL,GAAmB,YAAnB;AACA,SAAKE,eAAL,GAAuB,YAAvB;AACA,SAAKE,gBAAL,GAAwB,YAAxB;AACA,SAAKD,mBAAL,GAA2B,YAA3B;AACA,SAAKE,cAAL,GAAsB,YAAtB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKC,eAAL,GAAuB,YAAvB;AACA,SAAKC,YAAL,GAAoB,YAApB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKE,qBAAL,GAA6B,MAA7B;AACA,SAAKD,kBAAL,GAA0B,SAA1B;AACA,SAAKT,mBAAL,GAA2B,OAA3B;AAEA;;AAEA,SAAK1e,eAAL,GAAuB,YAAvB;AACA,SAAKE,kBAAL,GAA0B,OAA1B;AACA,SAAKD,gBAAL,GAAwB,YAAxB;AACA,SAAKF,eAAL,GAAuB,SAAvB;AACA,SAAKW,eAAL,GAAuB,YAAvB;AACA,SAAKD,YAAL,GAAoB,YAApB;AACA,SAAK8zB,kBAAL,GAA0B,OAA1B;AACA,SAAK/zB,aAAL,GAAqB,YAArB;AACA,SAAKF,iBAAL,GAAyB,YAAzB;AACA,SAAKK,oBAAL,GAA4B,YAA5B;AACA,SAAKJ,sBAAL,GAA8B,SAA9B;AACA,SAAKM,qBAAL,GAA6B,YAA7B;AACA,SAAKD,kBAAL,GAA0B,YAA1B;AACA,SAAKR,SAAL,GAAiB,YAAjB;AACA,SAAKW,gBAAL,GAAwB,YAAxB;AACA,SAAKD,mBAAL,GAA2B,YAA3B;AACA,SAAKG,YAAL,GAAoB,YAApB;AACA,SAAKD,eAAL,GAAuB,YAAvB;AACA,SAAKX,cAAL,GAAsB,YAAtB;AAEA;;AACA,SAAK80B,UAAL,GAAkB,OAAlB;AAEA,SAAKvC,aAAL,GAAqB,SAArB;AACA,SAAKC,cAAL,GAAsB,SAAtB;AACD;;;;WACD,wBAAe;AACb,WAAKiC,SAAL,GAAiBtB,+CAAO,CAAC,KAAK6B,QAAN,EAAgB,EAAhB,CAAxB;AACA,WAAKrgC,OAAL,GAAe,KAAKqgC,QAApB;AAEA;;AAEA,WAAKhB,OAAL,GAAe,KAAK7xC,OAApB;AACA,WAAKF,UAAL,GAAkB,KAAK2yC,OAAvB;AACA,WAAKngC,UAAL,GAAkB,KAAKggC,SAAvB;AACA,WAAK//B,aAAL,GAAqB,KAAKC,OAA1B;AACA,WAAKs/B,gBAAL,GAAwB,KAAK7xC,SAA7B;AACA,WAAKkS,UAAL,GAAkB,KAAKv5B,IAAvB;AAEA;;AAEA,WAAKijD,WAAL,GAAmBmV,+CAAO,CAAC,KAAKyB,OAAN,EAAe,EAAf,CAA1B;AACA,WAAK3W,QAAL,GAAgB,KAAK97B,OAArB;AACA,WAAK+7B,cAAL,GAAsB,KAAKnjD,IAA3B;AACA,WAAKojD,cAAL,GAAsB,KAAK/7B,SAA3B;AACA,WAAKg8B,WAAL,GAAmB,KAAKrjD,IAAxB;AACA,WAAKujD,eAAL,GAAuB,KAAKvjD,IAA5B;AACA,WAAKyjD,gBAAL,GAAwB,KAAKP,QAA7B;AACA,WAAKM,mBAAL,GAA2B,KAAKP,WAAhC;AACA,WAAKS,cAAL,GAAsB,KAAK1jD,IAA3B;AACA,WAAK2jD,aAAL,GAAqB,KAAK3jD,IAA1B;AACA,WAAK4jD,eAAL,GAAuB,MAAvB;AACA,WAAKC,YAAL,GAAoB,MAApB;AACA,WAAKC,aAAL,GAAqB,MAArB;AAEA;;AAEA,WAAKlf,eAAL,GAAuBwzB,+CAAO,CAAC,KAAK6B,QAAN,EAAgB,EAAhB,CAA9B;AACA,WAAKp1B,gBAAL,GAAwBuzB,+CAAO,CAAC,KAAK6B,QAAN,EAAgB,EAAhB,CAA/B;AAEA,WAAK30B,eAAL,GAAuB6yB,8CAAM,CAAC,KAAK8B,QAAN,EAAgB,EAAhB,CAA7B;AAEA,WAAK50B,YAAL,GAAoB,KAAK40B,QAAzB;AACA,WAAK70B,aAAL,GAAqB,KAAK+zB,kBAA1B;AACA,WAAKj0B,iBAAL,GAAyB,KAAKllC,IAA9B;AACA,WAAKulC,oBAAL,GAA4B,KAAKL,iBAAjC;AACA,WAAKO,qBAAL,GAA6B,KAAKH,eAAlC;AACA,WAAKE,kBAAL,GAA0B,KAAKpe,OAA/B;AACA,WAAK4d,SAAL,GAAiBozB,+CAAO,CAAC,KAAKyB,OAAN,EAAe,EAAf,CAAxB;AAEA,WAAKl0B,gBAAL,GAAwB,KAAKvG,IAA7B;AACA,WAAKsG,mBAAL,GAA2B,KAAKre,SAAhC;AACA,WAAKwe,YAAL,GAAoB,KAAKq0B,QAAzB;AACA,WAAKt0B,eAAL,GAAuBuyB,8CAAM,CAAC,KAAKtyB,YAAN,EAAoB,EAApB,CAA7B;AAEA,WAAKZ,cAAL,GAAsB,KAAKY,YAA3B;AAEA;;AACA,WAAK4nB,eAAL,GAAuB,KAAKA,eAAL,IAAwB,MAA/C;AACA,WAAKI,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKv0B,SAA9D;AACA,WAAKo0B,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKQ,QAA7B,IAAyC,KAAKyK,gBAArE;AAEA,WAAKzK,QAAL,GAAgB,KAAKA,QAAL,IAAiB,KAAK9mC,OAAtC;AACA,WAAKwmC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKM,QAA9D;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKN,UAAjC,IAA+C,KAAKn7B,aAA/E;AACA,WAAK67B,aAAL,GAAqB,KAAKA,aAAL,IAAsB,SAA3C;AACA,WAAKD,wBAAL,GAAgC,KAAKA,wBAAL,IAAiC,KAAKhnC,OAAtE;AACA,WAAK+mC,WAAL,GAAmB,KAAKA,WAAL,IAAoB,MAAvC;AACA,WAAKH,kBAAL,GAA0B,KAAK6K,kBAA/B;AACA,WAAK9K,iBAAL,GAAyB,MAAzB;AAEA,WAAKyJ,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKhlC,aAAhD;AACA,WAAKilC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAAK3J,iBAAlD;AAEA;;AACA,WAAK3mC,SAAL,GAAiB,KAAKwxC,gBAAtB;AACA;;AACA,WAAKnI,SAAL,GAAiB,KAAKkI,YAAtB;AACA,WAAKjI,SAAL,GAAiB,KAAKmI,cAAtB;AACA,WAAKlI,SAAL,GAAiB2H,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAvB;AACA,WAAKwpD,SAAL,GAAiB0H,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEzxD,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAvB;AACA,WAAKypD,SAAL,GAAiByH,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAAvB;AACA,WAAK0pD,SAAL,GAAiBwH,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEzxD,QAAAA,CAAC,EAAE,CAAC;AAAN,OAAtB,CAAvB;AACA,WAAK2pD,SAAL,GAAiBuH,8CAAM,CAAC,KAAKK,YAAN,EAAoB;AAAEvxD,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAvB;AACA,WAAK4pD,SAAL,GAAiBsH,8CAAM,CAAC,KAAKO,cAAN,EAAsB;AAAEzxD,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAvB,CA9Ea,CAgFb;;AACA,WAAK2lC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,MAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,MAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,MAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,MAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,MAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,MAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,MAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,MAAzB;AACA,WAAKC,KAAL,GAAa,KAAKA,KAAL,IAAc,MAA3B;AACA,WAAKC,KAAL,GAAa,KAAKA,KAAL,IAAc,MAA3B;AACA,WAAKC,KAAL,GAAa,KAAKA,KAAL,IAAc,MAA3B;AACA,WAAKa,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,MAAjD;AACA,WAAKC,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,KAAKrJ,iBAAxD;AACA,WAAKuJ,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,MAArD;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKlV,SAA5D;AACA,WAAKqV,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,MAAnD;AACA,WAAKD,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKxJ,iBAA1D;AACA,WAAKiJ,cAAL,GAAsB,KAAKA,cAAL,IAAuB,OAA7C;AACA,WAAKC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAA7C;AACA,WAAKC,UAAL,GAAkB,KAAKA,UAAL,IAAmB,KAArC,CArGa,CAuGb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AACA,WAAKmF,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAKklB,YAAhE;AACA,WAAKjlB,sBAAL,GAA8B,KAAKA,sBAAL,IAA+B,KAAKolB,kBAAlE;AACA,WAAKnlB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAKmlB,kBAAhE;AACA,WAAKllB,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKglB,gBAA9D;AACA,WAAKplB,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKlsB,SAAhD;AACA,WAAKusB,uBAAL,GAA+B,KAAKA,uBAAL,IAAgC,KAAKna,mBAApE;AACA,WAAKoa,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKsP,cAA1D;AACD;;;WACD,mBAAUkW,SAAV,EAAqB;AAAA;;AACnB,UAAI,QAAOA,SAAP,MAAqB,QAAzB,EAAmC;AACjC;AACA,aAAKC,YAAL;AACA;AACD;;AAED,UAAM/6D,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAY86D,SAAZ,CAAb,CAPmB,CASnB;;AACA96D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACmoB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUyyC,SAAS,CAACzyC,CAAD,CAAnB;AACD,OAFD,EAVmB,CAcnB;;AACA,WAAK0yC,YAAL,GAfmB,CAgBnB;;AACA/6D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACmoB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUyyC,SAAS,CAACzyC,CAAD,CAAnB;AACD,OAFD;AAGD;;;;;;AAGI,IAAM9oB,iBAAiB,GAAG,SAApBA,iBAAoB,CAACy7D,aAAD,EAAmB;AAClD,MAAM78D,KAAK,GAAG,IAAI87D,KAAJ,EAAd;AACA97D,EAAAA,KAAK,CAAC88D,SAAN,CAAgBD,aAAhB;AACA,SAAO78D,KAAP;AACD,CAJM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrPP;AACA;AAcA;AACA;CAGA;;AACA,IAAMk+D,YAAY,GAAG;AACnBn2D,EAAAA,UAAU,EAAEA,0CADO;AAEnB01D,EAAAA,gBAAgB,EAAEA,gDAFC;AAGnBC,EAAAA,cAAc,EAAEA,8CAHG;AAInBr2C,EAAAA,WAAW,EAAEA,2CAJM;AAKnBs2C,EAAAA,iBAAiB,EAAEA,iDALA;AAMnBC,EAAAA,cAAc,EAAEA,8CANG;AAOnBC,EAAAA,cAAc,EAAEA,8CAPG;AAQnBC,EAAAA,YAAY,EAAEA,4CARK;AASnBC,EAAAA,SAAS,EAAEA,yCATQ;AAUnBC,EAAAA,cAAc,EAAEA,8CAVG;AAWnBC,EAAAA,eAAe,EAAEA,+CAAeA;AAXb,CAArB;AAaA,IAAM77D,SAAS,GACb,qGADF;AAEA,IAAM+7D,oBAAoB,GACxB,8FADF;AAEA,IAAMC,UAAU,GAAG,aAAnB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMvH,UAAU,GAAG,SAAbA,UAAa,CAAUvzD,IAAV,EAAgB+lB,GAAhB,EAAqB;AAC7C,MAAIg1C,KAAK,GAAGC,eAAe,CAACh7D,IAAD,EAAO,6BAAP,CAA3B;AACA,MAAIi7D,OAAO,GAAG,EAAd;;AAEA,MAAIh3D,KAAK,CAACC,OAAN,CAAc62D,KAAd,CAAJ,EAA0B;AACxB,QAAIlE,IAAI,GAAGkE,KAAK,CAAChnD,GAAN,CAAU,UAACqnC,IAAD;AAAA,aAAUA,IAAI,CAACyb,IAAf;AAAA,KAAV,CAAX;AACArB,IAAAA,kBAAkB,CAACqB,IAAD,CAAlB;AAEAoE,IAAAA,OAAO,GAAGz+D,eAAe,CAACy+D,OAAD,qBAAcpE,IAAd,EAAzB;AACD,GALD,MAKO;AACLoE,IAAAA,OAAO,GAAGF,KAAK,CAAClE,IAAhB;AACD;;AACD,MAAIoE,OAAJ,EAAa;AACX,QAAIluD,IAAI,GAAG6oD,UAAU,CAAC51D,IAAD,EAAO+lB,GAAP,CAArB;AACA,KAAC,QAAD,EAAWtnB,OAAX,CAAmB,UAACmjD,IAAD,EAAU;AAC3B,UAAI,OAAOqZ,OAAO,CAACrZ,IAAD,CAAd,KAAyB,WAA7B,EAA0C;AACxC,YAAI70C,IAAI,KAAK,cAAb,EAA6B;AAC3BA,UAAAA,IAAI,GAAG,WAAP;AACD;;AACDkuD,QAAAA,OAAO,CAACluD,IAAD,CAAP,GAAgBkuD,OAAO,CAACrZ,IAAD,CAAvB;AACA,eAAOqZ,OAAO,CAACrZ,IAAD,CAAd;AACD;AACF,KARD;AASD,GAvB4C,CAyB7C;;;AACA,SAAOqZ,OAAP;AACD,CA3BM;AA6BP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMD,eAAe,GAAG,SAAlBA,eAAkB,CAAUh7D,IAAV,EAA6B;AAAA,MAAb+M,IAAa,uEAAN,IAAM;;AAC1D,MAAI;AACF,QAAMmuD,wBAAwB,GAAG,IAAI96B,MAAJ,uBAChBy6B,oBAAoB,CAACM,MADL,yBAE/B,IAF+B,CAAjC;AAIAn7D,IAAAA,IAAI,GAAGA,IAAI,CAACuE,IAAL,GAAYb,OAAZ,CAAoBw3D,wBAApB,EAA8C,EAA9C,EAAkDx3D,OAAlD,CAA0D,KAA1D,EAAiE,GAAjE,CAAP;AACAjH,IAAAA,8CAAA,sCACgCsQ,IAAI,KAAK,IAAT,GAAgB,WAAWA,IAA3B,GAAkC,EADlE,gCAC0F/M,IAD1F;AAGA,QAAIihB,KAAJ;AAAA,QACE7N,MAAM,GAAG,EADX;;AAEA,WAAO,CAAC6N,KAAK,GAAGniB,SAAS,CAACs+B,IAAV,CAAep9B,IAAf,CAAT,MAAmC,IAA1C,EAAgD;AAC9C;AACA,UAAIihB,KAAK,CAAC+mB,KAAN,KAAgBlpC,SAAS,CAACs8D,SAA9B,EAAyC;AACvCt8D,QAAAA,SAAS,CAACs8D,SAAV;AACD;;AACD,UACGn6C,KAAK,IAAI,CAAClU,IAAX,IACCA,IAAI,IAAIkU,KAAK,CAAC,CAAD,CAAb,IAAoBA,KAAK,CAAC,CAAD,CAAL,CAASA,KAAT,CAAelU,IAAf,CADrB,IAECA,IAAI,IAAIkU,KAAK,CAAC,CAAD,CAAb,IAAoBA,KAAK,CAAC,CAAD,CAAL,CAASA,KAAT,CAAelU,IAAf,CAHvB,EAIE;AACA,YAAIA,KAAI,GAAGkU,KAAK,CAAC,CAAD,CAAL,GAAWA,KAAK,CAAC,CAAD,CAAhB,GAAsBA,KAAK,CAAC,CAAD,CAAtC;;AACA,YAAI41C,IAAI,GAAG51C,KAAK,CAAC,CAAD,CAAL,GAAWA,KAAK,CAAC,CAAD,CAAL,CAAS1c,IAAT,EAAX,GAA6B0c,KAAK,CAAC,CAAD,CAAL,GAAW/f,IAAI,CAACmL,KAAL,CAAW4U,KAAK,CAAC,CAAD,CAAL,CAAS1c,IAAT,EAAX,CAAX,GAAyC,IAAjF;AACA6O,QAAAA,MAAM,CAACpU,IAAP,CAAY;AAAE+N,UAAAA,IAAI,EAAJA,KAAF;AAAQ8pD,UAAAA,IAAI,EAAJA;AAAR,SAAZ;AACD;AACF;;AACD,QAAIzjD,MAAM,CAAC3V,MAAP,KAAkB,CAAtB,EAAyB;AACvB2V,MAAAA,MAAM,CAACpU,IAAP,CAAY;AAAE+N,QAAAA,IAAI,EAAE/M,IAAR;AAAc62D,QAAAA,IAAI,EAAE;AAApB,OAAZ;AACD;;AAED,WAAOzjD,MAAM,CAAC3V,MAAP,KAAkB,CAAlB,GAAsB2V,MAAM,CAAC,CAAD,CAA5B,GAAkCA,MAAzC;AACD,GA/BD,CA+BE,OAAO1B,KAAP,EAAc;AACdjV,IAAAA,8CAAA,kBACYiV,KAAK,CAACw1B,OADlB,iDAEIn6B,IAAI,KAAK,IAAT,GAAgB,WAAWA,IAA3B,GAAkC,EAFtC,gCAE8D/M,IAF9D;AAIA,WAAO;AAAE+M,MAAAA,IAAI,EAAE,IAAR;AAAc8pD,MAAAA,IAAI,EAAE;AAApB,KAAP;AACD;AACF,CAvCM;AAyCP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMjB,UAAU,GAAG,SAAbA,UAAa,CAAU51D,IAAV,EAAgB+lB,GAAhB,EAAqB;AAC7C/lB,EAAAA,IAAI,GAAGA,IAAI,CAAC0D,OAAL,CAAa5E,SAAb,EAAwB,EAAxB,EAA4B4E,OAA5B,CAAoCo3D,UAApC,EAAgD,IAAhD,CAAP;;AACA,MAAI96D,IAAI,CAACihB,KAAL,CAAW,qBAAX,CAAJ,EAAuC;AACrC,WAAO,UAAP;AACD;;AAED,MAAIjhB,IAAI,CAACihB,KAAL,CAAW,WAAX,CAAJ,EAA6B;AAC3B,WAAO,OAAP;AACD;;AACD,MAAIjhB,IAAI,CAACihB,KAAL,CAAW,qBAAX,CAAJ,EAAuC;AACrC,WAAO,cAAP;AACD;;AACD,MAAIjhB,IAAI,CAACihB,KAAL,CAAW,kBAAX,CAAJ,EAAoC;AAClC,QAAI8E,GAAG,IAAIA,GAAG,CAACjmB,KAAX,IAAoBimB,GAAG,CAACjmB,KAAJ,CAAU8Y,eAAV,KAA8B,eAAtD,EAAuE,OAAO,cAAP;AACvE,WAAO,OAAP;AACD;;AAED,MAAI5Y,IAAI,CAACihB,KAAL,CAAW,qBAAX,CAAJ,EAAuC;AACrC,WAAO,cAAP;AACD;;AAED,MAAIjhB,IAAI,CAACihB,KAAL,CAAW,kBAAX,CAAJ,EAAoC;AAClC,QAAI8E,GAAG,IAAIA,GAAG,CAACjmB,KAAX,IAAoBimB,GAAG,CAAC7b,KAAJ,CAAU0O,eAAV,KAA8B,eAAtD,EAAuE,OAAO,cAAP;AACvE,WAAO,OAAP;AACD;;AAED,MAAI5Y,IAAI,CAACihB,KAAL,CAAW,cAAX,CAAJ,EAAgC;AAC9B,WAAO,KAAP;AACD;;AACD,MAAIjhB,IAAI,CAACihB,KAAL,CAAW,eAAX,CAAJ,EAAiC;AAC/B,WAAO,cAAP;AACD;;AAED,MAAIjhB,IAAI,CAACihB,KAAL,CAAW,UAAX,CAAJ,EAA4B;AAC1B,WAAO,MAAP;AACD;;AACD,MAAIjhB,IAAI,CAACihB,KAAL,CAAW,SAAX,CAAJ,EAA2B;AACzB,WAAO,KAAP;AACD;;AAED,MAAIjhB,IAAI,CAACihB,KAAL,CAAW,eAAX,CAAJ,EAAiC;AAC/B,WAAO,IAAP;AACD;;AAED,MAAIjhB,IAAI,CAACihB,KAAL,CAAW,aAAX,CAAJ,EAA+B;AAC7B,WAAO,SAAP;AACD;;AAED,MAAIjhB,IAAI,CAACihB,KAAL,CAAW,iBAAX,KAAiCjhB,IAAI,CAACihB,KAAL,CAAW,wBAAX,CAArC,EAA2E;AACzE,WAAO,aAAP;AACD;;AACD,MAAI8E,GAAG,IAAIA,GAAG,CAACxlB,SAAX,IAAwBwlB,GAAG,CAACxlB,SAAJ,CAAcqY,eAAd,KAAkC,eAA9D,EACE,OAAO,cAAP;AAEF,SAAO,WAAP;AACD,CAvDM;;AAyDP,IAAMyiD,OAAO,GAAG,SAAVA,OAAU,CAACz0B,EAAD,EAAK00B,QAAL,EAAkB;AAChC,MAAIC,KAAK,GAAG,EAAZ;AACA,SAAO,YAAa;AAAA,sCAAT1E,IAAS;AAATA,MAAAA,IAAS;AAAA;;AAClB,QAAI/pD,CAAC,GAAGwuD,QAAQ,GAAGA,QAAQ,CAAC9lC,KAAT,CAAe,KAAf,EAAqBqhC,IAArB,CAAH,GAAgCA,IAAI,CAAC,CAAD,CAApD;;AACA,QAAI/pD,CAAC,IAAIyuD,KAAT,EAAgB;AACd,aAAOA,KAAK,CAACzuD,CAAD,CAAZ;AACD,KAFD,MAEO;AACL,UAAIsG,MAAM,GAAGwzB,EAAE,MAAF,SAAMiwB,IAAN,CAAb;AACA0E,MAAAA,KAAK,CAACzuD,CAAD,CAAL,GAAWsG,MAAX;AACA,aAAOA,MAAP;AACD;AACF,GATD;AAUD,CAZD;AAcA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAM4gB,kBAAkB,GAAG,SAArBA,kBAAqB,CAAUld,GAAV,EAAewtB,GAAf,EAAoB;AACpD,OAAK,IAAI9mC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8mC,GAAG,CAAC7mC,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnC,QAAI8mC,GAAG,CAAC9mC,CAAD,CAAH,CAAOyjB,KAAP,CAAanK,GAAb,CAAJ,EAAuB,OAAOtZ,CAAP;AACxB;;AACD,SAAO,CAAC,CAAR;AACD,CALM;AAOA,IAAMwmB,kBAAkB,GAAG,SAArBA,kBAAqB,CAACuB,WAAD,EAAci2C,YAAd,EAA+B;AAC/D,MAAI,CAACj2C,WAAL,EAAkB;AAChB,WAAOi2C,YAAP;AACD;;AACD,MAAMC,SAAS,kBAAWl2C,WAAW,CAACzD,MAAZ,CAAmB,CAAnB,EAAsB45C,WAAtB,KAAsCn2C,WAAW,CAACrc,KAAZ,CAAkB,CAAlB,CAAjD,CAAf;AACA,SAAO0xD,YAAY,CAACa,SAAD,CAAZ,IAA2BD,YAAlC;AACD,CANM;AAQA,IAAMl6C,SAAS,GAAG,SAAZA,SAAY,CAACF,OAAD,EAAUzkB,MAAV,EAAqB;AAC5C,MAAIsN,GAAG,GAAGmX,OAAO,CAAC7c,IAAR,EAAV;;AAEA,MAAI0F,GAAJ,EAAS;AACP,QAAItN,MAAM,CAACyb,aAAP,KAAyB,OAA7B,EAAsC;AACpC,aAAO0hB,oEAAW,CAAC7vB,GAAD,CAAlB;AACD;;AAED,WAAOA,GAAP;AACD;AACF,CAVM;AAYA,IAAMgY,OAAO,GAAG,SAAVA,OAAU,CAACT,YAAD,EAA6B;AAAA;;AAClD,MAAMm6C,QAAQ,GAAGn6C,YAAY,CAACxd,KAAb,CAAmB,GAAnB,CAAjB;AAEA,MAAM+tB,GAAG,GAAG4pC,QAAQ,CAACl+D,MAAT,GAAkB,CAA9B;AACA,MAAMm+D,MAAM,GAAGD,QAAQ,CAAC5pC,GAAD,CAAvB;AAEA,MAAI3T,GAAG,GAAGhU,MAAV;;AACA,OAAK,IAAI5M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGu0B,GAApB,EAAyBv0B,CAAC,EAA1B,EAA8B;AAC5B4gB,IAAAA,GAAG,GAAGA,GAAG,CAACu9C,QAAQ,CAACn+D,CAAD,CAAT,CAAT;AACA,QAAI,CAAC4gB,GAAL,EAAU;AACX;;AAViD,qCAAXy9C,MAAW;AAAXA,IAAAA,MAAW;AAAA;;AAYlD,UAAAz9C,GAAG,EAACw9C,MAAD,CAAH,aAAeC,MAAf;AACD,CAbM;;AAeP,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAChuD,EAAD,EAAKC,EAAL;AAAA,SACfD,EAAE,IAAIC,EAAN,GAAWhH,IAAI,CAAC6G,IAAL,CAAU7G,IAAI,CAACg1D,GAAL,CAAShuD,EAAE,CAACxM,CAAH,GAAOuM,EAAE,CAACvM,CAAnB,EAAsB,CAAtB,IAA2BwF,IAAI,CAACg1D,GAAL,CAAShuD,EAAE,CAACvM,CAAH,GAAOsM,EAAE,CAACtM,CAAnB,EAAsB,CAAtB,CAArC,CAAX,GAA4E,CAD7D;AAAA,CAAjB;;AAGA,IAAMw6D,YAAY,GAAG,SAAfA,YAAe,CAAC9zD,MAAD,EAAY;AAC/B,MAAI+zD,SAAJ;AACA,MAAIC,aAAa,GAAG,CAApB;AAEAh0D,EAAAA,MAAM,CAACzJ,OAAP,CAAe,UAACkD,KAAD,EAAW;AACxBu6D,IAAAA,aAAa,IAAIJ,QAAQ,CAACn6D,KAAD,EAAQs6D,SAAR,CAAzB;AACAA,IAAAA,SAAS,GAAGt6D,KAAZ;AACD,GAHD,EAJ+B,CAS/B;;AACA,MAAIw6D,iBAAiB,GAAGD,aAAa,GAAG,CAAxC;AACA,MAAIhW,MAAM,GAAG9lD,SAAb;AACA67D,EAAAA,SAAS,GAAG77D,SAAZ;AACA8H,EAAAA,MAAM,CAACzJ,OAAP,CAAe,UAACkD,KAAD,EAAW;AACxB,QAAIs6D,SAAS,IAAI,CAAC/V,MAAlB,EAA0B;AACxB,UAAMkW,cAAc,GAAGN,QAAQ,CAACn6D,KAAD,EAAQs6D,SAAR,CAA/B;;AACA,UAAIG,cAAc,GAAGD,iBAArB,EAAwC;AACtCA,QAAAA,iBAAiB,IAAIC,cAArB;AACD,OAFD,MAEO;AACL;AACA;AACA,YAAMC,aAAa,GAAGF,iBAAiB,GAAGC,cAA1C;AACA,YAAIC,aAAa,IAAI,CAArB,EAAwBnW,MAAM,GAAG+V,SAAT;AACxB,YAAII,aAAa,IAAI,CAArB,EAAwBnW,MAAM,GAAG;AAAE3kD,UAAAA,CAAC,EAAEI,KAAK,CAACJ,CAAX;AAAcC,UAAAA,CAAC,EAAEG,KAAK,CAACH;AAAvB,SAAT;;AACxB,YAAI66D,aAAa,GAAG,CAAhB,IAAqBA,aAAa,GAAG,CAAzC,EAA4C;AAC1CnW,UAAAA,MAAM,GAAG;AACP3kD,YAAAA,CAAC,EAAE,CAAC,IAAI86D,aAAL,IAAsBJ,SAAS,CAAC16D,CAAhC,GAAoC86D,aAAa,GAAG16D,KAAK,CAACJ,CADtD;AAEPC,YAAAA,CAAC,EAAE,CAAC,IAAI66D,aAAL,IAAsBJ,SAAS,CAACz6D,CAAhC,GAAoC66D,aAAa,GAAG16D,KAAK,CAACH;AAFtD,WAAT;AAID;AACF;AACF;;AACDy6D,IAAAA,SAAS,GAAGt6D,KAAZ;AACD,GApBD;AAqBA,SAAOukD,MAAP;AACD,CAnCD;;AAqCA,IAAMz/C,iBAAiB,GAAG,SAApBA,iBAAoB,CAACyB,MAAD,EAAY;AACpC,SAAO8zD,YAAY,CAAC9zD,MAAD,CAAnB;AACD,CAFD;;AAIA,IAAM6f,uBAAuB,GAAG,SAA1BA,uBAA0B,CAACu0C,qBAAD,EAAwBp0D,MAAxB,EAAgCq0D,eAAhC,EAAoD;AAClF,MAAIN,SAAJ;AACA,MAAIC,aAAa,GAAG,CAApB,CAFkF,CAE3D;;AACvBz/D,EAAAA,6CAAA,CAAS,YAAT,EAAuByL,MAAvB;;AACA,MAAIA,MAAM,CAAC,CAAD,CAAN,KAAcq0D,eAAlB,EAAmC;AACjCr0D,IAAAA,MAAM,GAAGA,MAAM,CAACoB,OAAP,EAAT;AACD;;AACDpB,EAAAA,MAAM,CAACzJ,OAAP,CAAe,UAACkD,KAAD,EAAW;AACxBu6D,IAAAA,aAAa,IAAIJ,QAAQ,CAACn6D,KAAD,EAAQs6D,SAAR,CAAzB;AACAA,IAAAA,SAAS,GAAGt6D,KAAZ;AACD,GAHD,EAPkF,CAYlF;;AACA,MAAM66D,0BAA0B,GAAG,EAAnC;AAEA,MAAIL,iBAAiB,GAAGK,0BAAxB;AACA,MAAItW,MAAJ;AACA+V,EAAAA,SAAS,GAAG77D,SAAZ;AACA8H,EAAAA,MAAM,CAACzJ,OAAP,CAAe,UAACkD,KAAD,EAAW;AACxB,QAAIs6D,SAAS,IAAI,CAAC/V,MAAlB,EAA0B;AACxB,UAAMkW,cAAc,GAAGN,QAAQ,CAACn6D,KAAD,EAAQs6D,SAAR,CAA/B;;AACA,UAAIG,cAAc,GAAGD,iBAArB,EAAwC;AACtCA,QAAAA,iBAAiB,IAAIC,cAArB;AACD,OAFD,MAEO;AACL;AACA;AACA,YAAMC,aAAa,GAAGF,iBAAiB,GAAGC,cAA1C;AACA,YAAIC,aAAa,IAAI,CAArB,EAAwBnW,MAAM,GAAG+V,SAAT;AACxB,YAAII,aAAa,IAAI,CAArB,EAAwBnW,MAAM,GAAG;AAAE3kD,UAAAA,CAAC,EAAEI,KAAK,CAACJ,CAAX;AAAcC,UAAAA,CAAC,EAAEG,KAAK,CAACH;AAAvB,SAAT;;AACxB,YAAI66D,aAAa,GAAG,CAAhB,IAAqBA,aAAa,GAAG,CAAzC,EAA4C;AAC1CnW,UAAAA,MAAM,GAAG;AACP3kD,YAAAA,CAAC,EAAE,CAAC,IAAI86D,aAAL,IAAsBJ,SAAS,CAAC16D,CAAhC,GAAoC86D,aAAa,GAAG16D,KAAK,CAACJ,CADtD;AAEPC,YAAAA,CAAC,EAAE,CAAC,IAAI66D,aAAL,IAAsBJ,SAAS,CAACz6D,CAAhC,GAAoC66D,aAAa,GAAG16D,KAAK,CAACH;AAFtD,WAAT;AAID;AACF;AACF;;AACDy6D,IAAAA,SAAS,GAAGt6D,KAAZ;AACD,GApBD,EAlBkF,CAuClF;;AACA,MAAIjE,CAAC,GAAG4+D,qBAAqB,GAAG,EAAH,GAAQ,CAArC,CAxCkF,CAyClF;;AACA,MAAIG,KAAK,GAAG11D,IAAI,CAAC21D,KAAL,CAAWx0D,MAAM,CAAC,CAAD,CAAN,CAAU1G,CAAV,GAAc0kD,MAAM,CAAC1kD,CAAhC,EAAmC0G,MAAM,CAAC,CAAD,CAAN,CAAU3G,CAAV,GAAc2kD,MAAM,CAAC3kD,CAAxD,CAAZ;AACA,MAAIo7D,mBAAmB,GAAG;AAAEp7D,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE;AAAX,GAA1B,CA3CkF,CA4ClF;;AACAm7D,EAAAA,mBAAmB,CAACp7D,CAApB,GAAwBwF,IAAI,CAAC61D,GAAL,CAASH,KAAT,IAAkB/+D,CAAlB,GAAsB,CAACwK,MAAM,CAAC,CAAD,CAAN,CAAU3G,CAAV,GAAc2kD,MAAM,CAAC3kD,CAAtB,IAA2B,CAAzE;AACAo7D,EAAAA,mBAAmB,CAACn7D,CAApB,GAAwB,CAACuF,IAAI,CAAC81D,GAAL,CAASJ,KAAT,CAAD,GAAmB/+D,CAAnB,GAAuB,CAACwK,MAAM,CAAC,CAAD,CAAN,CAAU1G,CAAV,GAAc0kD,MAAM,CAAC1kD,CAAtB,IAA2B,CAA1E;AACA,SAAOm7D,mBAAP;AACD,CAhDD;AAkDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMj2D,yBAAyB,GAAG,SAA5BA,yBAA4B,CAACo2D,kBAAD,EAAqB3Q,QAArB,EAA+BnkD,OAA/B,EAA2C;AAC3E;AACA,MAAIE,MAAM,GAAGhH,IAAI,CAACmL,KAAL,CAAWnL,IAAI,CAACC,SAAL,CAAe6G,OAAf,CAAX,CAAb;AACA,MAAIi0D,SAAJ;AACA,MAAIC,aAAa,GAAG,CAApB,CAJ2E,CAIpD;;AACvBz/D,EAAAA,6CAAA,CAAS,YAAT,EAAuByL,MAAvB;;AACA,MAAIikD,QAAQ,KAAK,YAAb,IAA6BA,QAAQ,KAAK,aAA9C,EAA6D;AAC3DjkD,IAAAA,MAAM,GAAGA,MAAM,CAACoB,OAAP,EAAT;AACD;;AAEDpB,EAAAA,MAAM,CAACzJ,OAAP,CAAe,UAACkD,KAAD,EAAW;AACxBu6D,IAAAA,aAAa,IAAIJ,QAAQ,CAACn6D,KAAD,EAAQs6D,SAAR,CAAzB;AACAA,IAAAA,SAAS,GAAGt6D,KAAZ;AACD,GAHD,EAV2E,CAe3E;;AACA,MAAM66D,0BAA0B,GAAG,KAAKM,kBAAxC;AAEA,MAAIX,iBAAiB,GAAGK,0BAAxB;AACA,MAAItW,MAAJ;AACA+V,EAAAA,SAAS,GAAG77D,SAAZ;AACA8H,EAAAA,MAAM,CAACzJ,OAAP,CAAe,UAACkD,KAAD,EAAW;AACxB,QAAIs6D,SAAS,IAAI,CAAC/V,MAAlB,EAA0B;AACxB,UAAMkW,cAAc,GAAGN,QAAQ,CAACn6D,KAAD,EAAQs6D,SAAR,CAA/B;;AACA,UAAIG,cAAc,GAAGD,iBAArB,EAAwC;AACtCA,QAAAA,iBAAiB,IAAIC,cAArB;AACD,OAFD,MAEO;AACL;AACA;AACA,YAAMC,aAAa,GAAGF,iBAAiB,GAAGC,cAA1C;AACA,YAAIC,aAAa,IAAI,CAArB,EAAwBnW,MAAM,GAAG+V,SAAT;AACxB,YAAII,aAAa,IAAI,CAArB,EAAwBnW,MAAM,GAAG;AAAE3kD,UAAAA,CAAC,EAAEI,KAAK,CAACJ,CAAX;AAAcC,UAAAA,CAAC,EAAEG,KAAK,CAACH;AAAvB,SAAT;;AACxB,YAAI66D,aAAa,GAAG,CAAhB,IAAqBA,aAAa,GAAG,CAAzC,EAA4C;AAC1CnW,UAAAA,MAAM,GAAG;AACP3kD,YAAAA,CAAC,EAAE,CAAC,IAAI86D,aAAL,IAAsBJ,SAAS,CAAC16D,CAAhC,GAAoC86D,aAAa,GAAG16D,KAAK,CAACJ,CADtD;AAEPC,YAAAA,CAAC,EAAE,CAAC,IAAI66D,aAAL,IAAsBJ,SAAS,CAACz6D,CAAhC,GAAoC66D,aAAa,GAAG16D,KAAK,CAACH;AAFtD,WAAT;AAID;AACF;AACF;;AACDy6D,IAAAA,SAAS,GAAGt6D,KAAZ;AACD,GApBD,EArB2E,CA0C3E;;AACA,MAAIjE,CAAC,GAAG,KAAKo/D,kBAAkB,GAAG,GAAlC,CA3C2E,CA4C3E;;AACA,MAAIL,KAAK,GAAG11D,IAAI,CAAC21D,KAAL,CAAWx0D,MAAM,CAAC,CAAD,CAAN,CAAU1G,CAAV,GAAc0kD,MAAM,CAAC1kD,CAAhC,EAAmC0G,MAAM,CAAC,CAAD,CAAN,CAAU3G,CAAV,GAAc2kD,MAAM,CAAC3kD,CAAxD,CAAZ;AAEA,MAAIo7D,mBAAmB,GAAG;AAAEp7D,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE;AAAX,GAA1B,CA/C2E,CAiD3E;;AAEAm7D,EAAAA,mBAAmB,CAACp7D,CAApB,GAAwBwF,IAAI,CAAC61D,GAAL,CAASH,KAAT,IAAkB/+D,CAAlB,GAAsB,CAACwK,MAAM,CAAC,CAAD,CAAN,CAAU3G,CAAV,GAAc2kD,MAAM,CAAC3kD,CAAtB,IAA2B,CAAzE;AACAo7D,EAAAA,mBAAmB,CAACn7D,CAApB,GAAwB,CAACuF,IAAI,CAAC81D,GAAL,CAASJ,KAAT,CAAD,GAAmB/+D,CAAnB,GAAuB,CAACwK,MAAM,CAAC,CAAD,CAAN,CAAU1G,CAAV,GAAc0kD,MAAM,CAAC1kD,CAAtB,IAA2B,CAA1E;;AACA,MAAI2qD,QAAQ,KAAK,YAAjB,EAA+B;AAC7BwQ,IAAAA,mBAAmB,CAACp7D,CAApB,GAAwBwF,IAAI,CAAC61D,GAAL,CAASH,KAAK,GAAG11D,IAAI,CAAC8qD,EAAtB,IAA4Bn0D,CAA5B,GAAgC,CAACwK,MAAM,CAAC,CAAD,CAAN,CAAU3G,CAAV,GAAc2kD,MAAM,CAAC3kD,CAAtB,IAA2B,CAAnF;AACAo7D,IAAAA,mBAAmB,CAACn7D,CAApB,GAAwB,CAACuF,IAAI,CAAC81D,GAAL,CAASJ,KAAK,GAAG11D,IAAI,CAAC8qD,EAAtB,CAAD,GAA6Bn0D,CAA7B,GAAiC,CAACwK,MAAM,CAAC,CAAD,CAAN,CAAU1G,CAAV,GAAc0kD,MAAM,CAAC1kD,CAAtB,IAA2B,CAApF;AACD;;AACD,MAAI2qD,QAAQ,KAAK,WAAjB,EAA8B;AAC5BwQ,IAAAA,mBAAmB,CAACp7D,CAApB,GAAwBwF,IAAI,CAAC61D,GAAL,CAASH,KAAK,GAAG11D,IAAI,CAAC8qD,EAAtB,IAA4Bn0D,CAA5B,GAAgC,CAACwK,MAAM,CAAC,CAAD,CAAN,CAAU3G,CAAV,GAAc2kD,MAAM,CAAC3kD,CAAtB,IAA2B,CAA3D,GAA+D,CAAvF;AACAo7D,IAAAA,mBAAmB,CAACn7D,CAApB,GAAwB,CAACuF,IAAI,CAAC81D,GAAL,CAASJ,KAAK,GAAG11D,IAAI,CAAC8qD,EAAtB,CAAD,GAA6Bn0D,CAA7B,GAAiC,CAACwK,MAAM,CAAC,CAAD,CAAN,CAAU1G,CAAV,GAAc0kD,MAAM,CAAC1kD,CAAtB,IAA2B,CAA5D,GAAgE,CAAxF;AACD;;AACD,MAAI2qD,QAAQ,KAAK,UAAjB,EAA6B;AAC3BwQ,IAAAA,mBAAmB,CAACp7D,CAApB,GAAwBwF,IAAI,CAAC61D,GAAL,CAASH,KAAT,IAAkB/+D,CAAlB,GAAsB,CAACwK,MAAM,CAAC,CAAD,CAAN,CAAU3G,CAAV,GAAc2kD,MAAM,CAAC3kD,CAAtB,IAA2B,CAAjD,GAAqD,CAA7E;AACAo7D,IAAAA,mBAAmB,CAACn7D,CAApB,GAAwB,CAACuF,IAAI,CAAC81D,GAAL,CAASJ,KAAT,CAAD,GAAmB/+D,CAAnB,GAAuB,CAACwK,MAAM,CAAC,CAAD,CAAN,CAAU1G,CAAV,GAAc0kD,MAAM,CAAC1kD,CAAtB,IAA2B,CAAlD,GAAsD,CAA9E;AACD;;AACD,SAAOm7D,mBAAP;AACD,CAlED;;AAoEO,IAAM14C,kBAAkB,GAAG,SAArBA,kBAAqB,CAACqgB,GAAD,EAAS;AACzC,MAAIljC,KAAK,GAAG,EAAZ;AACA,MAAIjB,UAAU,GAAG,EAAjB;;AAEA,OAAK,IAAI3C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8mC,GAAG,CAAC7mC,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnC,QAAI,OAAO8mC,GAAG,CAAC9mC,CAAD,CAAV,KAAkB,WAAtB,EAAmC;AACjC;AACA,UAAI8mC,GAAG,CAAC9mC,CAAD,CAAH,CAAOijB,UAAP,CAAkB,QAAlB,KAA+B6jB,GAAG,CAAC9mC,CAAD,CAAH,CAAOijB,UAAP,CAAkB,aAAlB,CAAnC,EAAqE;AACnEtgB,QAAAA,UAAU,GAAGA,UAAU,GAAGmkC,GAAG,CAAC9mC,CAAD,CAAhB,GAAsB,GAAnC;AACD,OAFD,MAEO;AACL4D,QAAAA,KAAK,GAAGA,KAAK,GAAGkjC,GAAG,CAAC9mC,CAAD,CAAX,GAAiB,GAAzB;AACD;AACF;AACF;;AAED,SAAO;AAAE4D,IAAAA,KAAK,EAAEA,KAAT;AAAgBjB,IAAAA,UAAU,EAAEA;AAA5B,GAAP;AACD,CAhBM;AAkBP,IAAI0kB,GAAG,GAAG,CAAV;AACO,IAAM6kC,UAAU,GAAG,SAAbA,UAAa,GAAM;AAC9B7kC,EAAAA,GAAG;AACH,SAAO,QAAQ9d,IAAI,CAAC++B,MAAL,GAAchD,QAAd,CAAuB,EAAvB,EAA2BhiB,MAA3B,CAAkC,CAAlC,EAAqC,EAArC,CAAR,GAAmD,GAAnD,GAAyD+D,GAAhE;AACD,CAHM;AAKP;AACA;AACA;AACA;;AACA,SAASk4C,MAAT,CAAgBt/D,MAAhB,EAAwB;AACtB,MAAI2V,MAAM,GAAG,EAAb;AACA,MAAI4pD,UAAU,GAAG,kBAAjB;AACA,MAAIC,gBAAgB,GAAGD,UAAU,CAACv/D,MAAlC;;AACA,OAAK,IAAID,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGC,MAApB,EAA4BD,CAAC,EAA7B,EAAiC;AAC/B4V,IAAAA,MAAM,IAAI4pD,UAAU,CAACl7C,MAAX,CAAkB/a,IAAI,CAACm2D,KAAL,CAAWn2D,IAAI,CAAC++B,MAAL,KAAgBm3B,gBAA3B,CAAlB,CAAV;AACD;;AACD,SAAO7pD,MAAP;AACD;;AAEM,IAAM0yB,MAAM,GAAG,SAATA,MAAS,CAACxnC,OAAD,EAAa;AACjC,SAAOy+D,MAAM,CAACz+D,OAAO,CAACb,MAAT,CAAb;AACD,CAFM;AAIP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMjB,eAAe,GAAG,SAAlBA,eAAkB,CAAU80C,GAAV,EAAeD,GAAf,EAAoB10C,MAApB,EAA4B;AACzD,uBAA2BE,MAAM,CAACwW,MAAP,CAAc;AAAEnB,IAAAA,KAAK,EAAE,CAAT;AAAYirD,IAAAA,OAAO,EAAE;AAArB,GAAd,EAA4CxgE,MAA5C,CAA3B;AAAA,MAAQuV,KAAR,kBAAQA,KAAR;AAAA,MAAeirD,OAAf,kBAAeA,OAAf;;AACA,MAAIl5D,KAAK,CAACC,OAAN,CAAcmtC,GAAd,KAAsB,CAACptC,KAAK,CAACC,OAAN,CAAcotC,GAAd,CAA3B,EAA+C;AAC7CD,IAAAA,GAAG,CAAC5yC,OAAJ,CAAY,UAACkF,CAAD;AAAA,aAAOnH,eAAe,CAAC80C,GAAD,EAAM3tC,CAAN,EAAShH,MAAT,CAAtB;AAAA,KAAZ;AACA,WAAO20C,GAAP;AACD,GAHD,MAGO,IAAIrtC,KAAK,CAACC,OAAN,CAAcmtC,GAAd,KAAsBptC,KAAK,CAACC,OAAN,CAAcotC,GAAd,CAA1B,EAA8C;AACnDD,IAAAA,GAAG,CAAC5yC,OAAJ,CAAY,UAACkF,CAAD,EAAO;AACjB,UAAI2tC,GAAG,CAAC1yC,OAAJ,CAAY+E,CAAZ,MAAmB,CAAC,CAAxB,EAA2B;AACzB2tC,QAAAA,GAAG,CAACtyC,IAAJ,CAAS2E,CAAT;AACD;AACF,KAJD;AAKA,WAAO2tC,GAAP;AACD;;AACD,MAAI,OAAOA,GAAP,KAAe,WAAf,IAA8Bp/B,KAAK,IAAI,CAA3C,EAA8C;AAC5C,QAAIo/B,GAAG,KAAKlxC,SAAR,IAAqBkxC,GAAG,KAAK,IAA7B,IAAqC,QAAOA,GAAP,MAAe,QAApD,IAAgE,QAAOD,GAAP,MAAe,QAAnF,EAA6F;AAC3F,aAAOx0C,MAAM,CAACwW,MAAP,CAAci+B,GAAd,EAAmBD,GAAnB,CAAP;AACD,KAFD,MAEO;AACL,aAAOA,GAAP;AACD;AACF;;AACD,MAAI,OAAOA,GAAP,KAAe,WAAf,IAA8B,QAAOC,GAAP,MAAe,QAA7C,IAAyD,QAAOD,GAAP,MAAe,QAA5E,EAAsF;AACpFx0C,IAAAA,MAAM,CAAC0B,IAAP,CAAY8yC,GAAZ,EAAiB5yC,OAAjB,CAAyB,UAACC,GAAD,EAAS;AAChC,UACE,QAAO2yC,GAAG,CAAC3yC,GAAD,CAAV,MAAoB,QAApB,KACC4yC,GAAG,CAAC5yC,GAAD,CAAH,KAAa0B,SAAb,IAA0B,QAAOkxC,GAAG,CAAC5yC,GAAD,CAAV,MAAoB,QAD/C,CADF,EAGE;AACA,YAAI4yC,GAAG,CAAC5yC,GAAD,CAAH,KAAa0B,SAAjB,EAA4B;AAC1BkxC,UAAAA,GAAG,CAAC5yC,GAAD,CAAH,GAAWuF,KAAK,CAACC,OAAN,CAAcmtC,GAAG,CAAC3yC,GAAD,CAAjB,IAA0B,EAA1B,GAA+B,EAA1C;AACD;;AACD4yC,QAAAA,GAAG,CAAC5yC,GAAD,CAAH,GAAWlC,eAAe,CAAC80C,GAAG,CAAC5yC,GAAD,CAAJ,EAAW2yC,GAAG,CAAC3yC,GAAD,CAAd,EAAqB;AAAEwT,UAAAA,KAAK,EAAEA,KAAK,GAAG,CAAjB;AAAoBirD,UAAAA,OAAO,EAAPA;AAApB,SAArB,CAA1B;AACD,OARD,MAQO,IAAIA,OAAO,IAAK,QAAO7rB,GAAG,CAAC5yC,GAAD,CAAV,MAAoB,QAApB,IAAgC,QAAO2yC,GAAG,CAAC3yC,GAAD,CAAV,MAAoB,QAApE,EAA+E;AACpF4yC,QAAAA,GAAG,CAAC5yC,GAAD,CAAH,GAAW2yC,GAAG,CAAC3yC,GAAD,CAAd;AACD;AACF,KAZD;AAaD;;AACD,SAAO4yC,GAAP;AACD,CApCM;AAsCA,IAAMkM,UAAU,GAAG,SAAbA,UAAa,GAAY;AACpC,SAAO;AACLj8C,IAAAA,CAAC,EAAE,CADE;AAELC,IAAAA,CAAC,EAAE,CAFE;AAGLgc,IAAAA,IAAI,EAAEpd,SAHD;AAILq9C,IAAAA,MAAM,EAAE,OAJH;AAKLr8C,IAAAA,KAAK,EAAE,MALF;AAMLP,IAAAA,KAAK,EAAE,GANF;AAOLC,IAAAA,MAAM,EAAE,GAPH;AAQL48C,IAAAA,UAAU,EAAE,CARP;AASLr8C,IAAAA,EAAE,EAAE,CATC;AAULC,IAAAA,EAAE,EAAE,CAVC;AAWLq8C,IAAAA,MAAM,EAAEv9C;AAXH,GAAP;AAaD,CAdM;AAgBA,IAAMg9D,cAAc,GAAG,SAAjBA,cAAiB,CAAU/6D,IAAV,EAAgBijD,QAAhB,EAA0B;AACtD;AACA,MAAMyD,KAAK,GAAGzD,QAAQ,CAACtlD,IAAT,CAAc0D,OAAd,CAAsB+a,8EAAtB,EAA6C,GAA7C,CAAd;AAEA,MAAMm/B,QAAQ,GAAGv7C,IAAI,CAACL,MAAL,CAAY,MAAZ,CAAjB;AACA47C,EAAAA,QAAQ,CAAC/9C,IAAT,CAAc,GAAd,EAAmBylD,QAAQ,CAAC/jD,CAA5B;AACAq8C,EAAAA,QAAQ,CAAC/9C,IAAT,CAAc,GAAd,EAAmBylD,QAAQ,CAAC9jD,CAA5B;AACAo8C,EAAAA,QAAQ,CAACx8C,KAAT,CAAe,aAAf,EAA8BkkD,QAAQ,CAAC7H,MAAvC;AACAG,EAAAA,QAAQ,CAACx8C,KAAT,CAAe,aAAf,EAA8BkkD,QAAQ,CAACvmD,UAAvC;AACA6+C,EAAAA,QAAQ,CAACx8C,KAAT,CAAe,WAAf,EAA4BkkD,QAAQ,CAAC3qC,QAArC;AACAijC,EAAAA,QAAQ,CAACx8C,KAAT,CAAe,aAAf,EAA8BkkD,QAAQ,CAAC1qC,UAAvC;AACAgjC,EAAAA,QAAQ,CAAC/9C,IAAT,CAAc,MAAd,EAAsBylD,QAAQ,CAAC9nC,IAA/B;;AACA,MAAI,OAAO8nC,QAAQ,CAACxlD,KAAhB,KAA0B,WAA9B,EAA2C;AACzC89C,IAAAA,QAAQ,CAAC/9C,IAAT,CAAc,OAAd,EAAuBylD,QAAQ,CAACxlD,KAAhC;AACD;;AAED,MAAM8lD,IAAI,GAAGhI,QAAQ,CAAC57C,MAAT,CAAgB,OAAhB,CAAb;AACA4jD,EAAAA,IAAI,CAAC/lD,IAAL,CAAU,GAAV,EAAeylD,QAAQ,CAAC/jD,CAAT,GAAa+jD,QAAQ,CAAC5H,UAAT,GAAsB,CAAlD;AACAkI,EAAAA,IAAI,CAAC/lD,IAAL,CAAU,MAAV,EAAkBylD,QAAQ,CAAC9nC,IAA3B;AACAooC,EAAAA,IAAI,CAAC5lD,IAAL,CAAU+oD,KAAV;AAEA,SAAOnL,QAAP;AACD,CAtBM;AAwBA,IAAM+B,SAAS,GAAG0b,OAAO,CAC9B,UAACt7D,KAAD,EAAQgW,QAAR,EAAkBpZ,MAAlB,EAA6B;AAC3B,MAAI,CAACoD,KAAL,EAAY;AACV,WAAOA,KAAP;AACD;;AACDpD,EAAAA,MAAM,GAAGE,MAAM,CAACwW,MAAP,CACP;AAAEsH,IAAAA,QAAQ,EAAE,EAAZ;AAAgBC,IAAAA,UAAU,EAAE,GAA5B;AAAiC7b,IAAAA,UAAU,EAAE,OAA7C;AAAsDs+D,IAAAA,QAAQ,EAAE;AAAhE,GADO,EAEP1gE,MAFO,CAAT;;AAIA,MAAI8hB,mFAAA,CAA2B1e,KAA3B,CAAJ,EAAuC;AACrC,WAAOA,KAAP;AACD;;AACD,MAAMu9D,KAAK,GAAGv9D,KAAK,CAACiE,KAAN,CAAY,GAAZ,CAAd;AACA,MAAMu5D,cAAc,GAAG,EAAvB;AACA,MAAIC,QAAQ,GAAG,EAAf;AACAF,EAAAA,KAAK,CAAC7+D,OAAN,CAAc,UAACimC,IAAD,EAAOsD,KAAP,EAAiB;AAC7B,QAAMy1B,UAAU,GAAGC,kBAAkB,WAAIh5B,IAAJ,QAAa/nC,MAAb,CAArC;AACA,QAAMghE,cAAc,GAAGD,kBAAkB,CAACF,QAAD,EAAW7gE,MAAX,CAAzC;;AACA,QAAI8gE,UAAU,GAAG1nD,QAAjB,EAA2B;AACzB,yBAA6C6nD,WAAW,CAACl5B,IAAD,EAAO3uB,QAAP,EAAiB,GAAjB,EAAsBpZ,MAAtB,CAAxD;AAAA,UAAQkhE,iBAAR,gBAAQA,iBAAR;AAAA,UAA2BC,aAA3B,gBAA2BA,aAA3B;;AACAP,MAAAA,cAAc,CAACv+D,IAAf,OAAAu+D,cAAc,GAAMC,QAAN,4BAAmBK,iBAAnB,GAAd;AACAL,MAAAA,QAAQ,GAAGM,aAAX;AACD,KAJD,MAIO,IAAIH,cAAc,GAAGF,UAAjB,IAA+B1nD,QAAnC,EAA6C;AAClDwnD,MAAAA,cAAc,CAACv+D,IAAf,CAAoBw+D,QAApB;AACAA,MAAAA,QAAQ,GAAG94B,IAAX;AACD,KAHM,MAGA;AACL84B,MAAAA,QAAQ,GAAG,CAACA,QAAD,EAAW94B,IAAX,EAAiBl7B,MAAjB,CAAwBu0D,OAAxB,EAAiC/pD,IAAjC,CAAsC,GAAtC,CAAX;AACD;;AACD,QAAMgqD,WAAW,GAAGh2B,KAAK,GAAG,CAA5B;AACA,QAAMi2B,UAAU,GAAGD,WAAW,KAAKV,KAAK,CAAC7/D,MAAzC;;AACA,QAAIwgE,UAAJ,EAAgB;AACdV,MAAAA,cAAc,CAACv+D,IAAf,CAAoBw+D,QAApB;AACD;AACF,GAlBD;AAmBA,SAAOD,cAAc,CAAC/zD,MAAf,CAAsB,UAAChF,IAAD;AAAA,WAAUA,IAAI,KAAK,EAAnB;AAAA,GAAtB,EAA6CwP,IAA7C,CAAkDrX,MAAM,CAAC0gE,QAAzD,CAAP;AACD,CAnC6B,EAoC9B,UAACt9D,KAAD,EAAQgW,QAAR,EAAkBpZ,MAAlB;AAAA,mBACKoD,KADL,cACcgW,QADd,cAC0BpZ,MAAM,CAACge,QADjC,cAC6Che,MAAM,CAACie,UADpD,cACkEje,MAAM,CAACoC,UADzE,cACuFpC,MAAM,CAAC0gE,QAD9F;AAAA,CApC8B,CAAzB;AAwCP,IAAMO,WAAW,GAAGvC,OAAO,CACzB,UAAC32B,IAAD,EAAO3uB,QAAP,EAAmD;AAAA,MAAlCmoD,eAAkC,uEAAhB,GAAgB;AAAA,MAAXvhE,MAAW;AACjDA,EAAAA,MAAM,GAAGE,MAAM,CAACwW,MAAP,CACP;AAAEsH,IAAAA,QAAQ,EAAE,EAAZ;AAAgBC,IAAAA,UAAU,EAAE,GAA5B;AAAiC7b,IAAAA,UAAU,EAAE,OAA7C;AAAsD0tC,IAAAA,MAAM,EAAE;AAA9D,GADO,EAEP9vC,MAFO,CAAT;AAIA,MAAMqgE,UAAU,GAAGt4B,IAAI,CAAC1gC,KAAL,CAAW,EAAX,CAAnB;AACA,MAAMg6C,KAAK,GAAG,EAAd;AACA,MAAImgB,WAAW,GAAG,EAAlB;AACAnB,EAAAA,UAAU,CAACv+D,OAAX,CAAmB,UAAC2/D,SAAD,EAAYp2B,KAAZ,EAAsB;AACvC,QAAMw1B,QAAQ,aAAMW,WAAN,SAAoBC,SAApB,CAAd;AACA,QAAMC,SAAS,GAAGX,kBAAkB,CAACF,QAAD,EAAW7gE,MAAX,CAApC;;AACA,QAAI0hE,SAAS,IAAItoD,QAAjB,EAA2B;AACzB,UAAMuoD,gBAAgB,GAAGt2B,KAAK,GAAG,CAAjC;AACA,UAAMu2B,UAAU,GAAGvB,UAAU,CAACv/D,MAAX,KAAsB6gE,gBAAzC;AACA,UAAME,kBAAkB,aAAMhB,QAAN,SAAiBU,eAAjB,CAAxB;AACAlgB,MAAAA,KAAK,CAACh/C,IAAN,CAAWu/D,UAAU,GAAGf,QAAH,GAAcgB,kBAAnC;AACAL,MAAAA,WAAW,GAAG,EAAd;AACD,KAND,MAMO;AACLA,MAAAA,WAAW,GAAGX,QAAd;AACD;AACF,GAZD;AAaA,SAAO;AAAEK,IAAAA,iBAAiB,EAAE7f,KAArB;AAA4B8f,IAAAA,aAAa,EAAEK;AAA3C,GAAP;AACD,CAvBwB,EAwBzB,UAACz5B,IAAD,EAAO3uB,QAAP;AAAA,MAAiBmoD,eAAjB,uEAAmC,GAAnC;AAAA,MAAwCvhE,MAAxC;AAAA,mBACK+nC,IADL,cACa3uB,QADb,cACyBmoD,eADzB,cAC4CvhE,MAAM,CAACge,QADnD,cAC+Dhe,MAAM,CAACie,UADtE,cACoFje,MAAM,CAACoC,UAD3F;AAAA,CAxByB,CAA3B;AA4BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM0/D,mBAAmB,GAAG,SAAtBA,mBAAsB,CAAUz+D,IAAV,EAAgBrD,MAAhB,EAAwB;AACzDA,EAAAA,MAAM,GAAGE,MAAM,CAACwW,MAAP,CACP;AAAEsH,IAAAA,QAAQ,EAAE,EAAZ;AAAgBC,IAAAA,UAAU,EAAE,GAA5B;AAAiC7b,IAAAA,UAAU,EAAE,OAA7C;AAAsD0tC,IAAAA,MAAM,EAAE;AAA9D,GADO,EAEP9vC,MAFO,CAAT;AAIA,SAAOuhD,uBAAuB,CAACl+C,IAAD,EAAOrD,MAAP,CAAvB,CAAsCmE,MAA7C;AACD,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM48D,kBAAkB,GAAG,SAArBA,kBAAqB,CAAU19D,IAAV,EAAgBrD,MAAhB,EAAwB;AACxDA,EAAAA,MAAM,GAAGE,MAAM,CAACwW,MAAP,CAAc;AAAEsH,IAAAA,QAAQ,EAAE,EAAZ;AAAgBC,IAAAA,UAAU,EAAE,GAA5B;AAAiC7b,IAAAA,UAAU,EAAE;AAA7C,GAAd,EAAsEpC,MAAtE,CAAT;AACA,SAAOuhD,uBAAuB,CAACl+C,IAAD,EAAOrD,MAAP,CAAvB,CAAsCkE,KAA7C;AACD,CAHM;AAKP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMq9C,uBAAuB,GAAGmd,OAAO,CAC5C,UAAUr7D,IAAV,EAAgBrD,MAAhB,EAAwB;AACtBA,EAAAA,MAAM,GAAGE,MAAM,CAACwW,MAAP,CAAc;AAAEsH,IAAAA,QAAQ,EAAE,EAAZ;AAAgBC,IAAAA,UAAU,EAAE,GAA5B;AAAiC7b,IAAAA,UAAU,EAAE;AAA7C,GAAd,EAAsEpC,MAAtE,CAAT;AACA,gBAA6CA,MAA7C;AAAA,MAAQge,QAAR,WAAQA,QAAR;AAAA,MAAkB5b,UAAlB,WAAkBA,UAAlB;AAAA,MAA8B6b,UAA9B,WAA8BA,UAA9B;;AACA,MAAI,CAAC5a,IAAL,EAAW;AACT,WAAO;AAAEa,MAAAA,KAAK,EAAE,CAAT;AAAYC,MAAAA,MAAM,EAAE;AAApB,KAAP;AACD,GALqB,CAOtB;AACA;AACA;;;AACA,MAAM49D,YAAY,GAAG,CAAC,YAAD,EAAe3/D,UAAf,CAArB;AACA,MAAMi/C,KAAK,GAAGh+C,IAAI,CAACgE,KAAL,CAAWya,8EAAX,CAAd;AACA,MAAIkgD,IAAI,GAAG,EAAX;AAEA,MAAMr7C,IAAI,GAAGlkB,0CAAM,CAAC,MAAD,CAAnB,CAdsB,CAetB;AACA;;AACA,MAAI,CAACkkB,IAAI,CAAC8yC,MAAV,EAAkB;AAChB,WAAO;AAAEv1D,MAAAA,KAAK,EAAE,CAAT;AAAYC,MAAAA,MAAM,EAAE,CAApB;AAAuB8U,MAAAA,UAAU,EAAE;AAAnC,KAAP;AACD;;AAED,MAAM0O,CAAC,GAAGhB,IAAI,CAACthB,MAAL,CAAY,KAAZ,CAAV;;AAEA,mCAAuB08D,YAAvB,mCAAqC;AAAhC,QAAI3/D,WAAU,oBAAd;AACH,QAAI6/D,OAAO,GAAG,CAAd;AACA,QAAI/3C,GAAG,GAAG;AAAEhmB,MAAAA,KAAK,EAAE,CAAT;AAAYC,MAAAA,MAAM,EAAE,CAApB;AAAuB8U,MAAAA,UAAU,EAAE;AAAnC,KAAV;;AAFmC,+CAGlBooC,KAHkB;AAAA;;AAAA;AAGnC,0DAAwB;AAAA,YAAfx5C,IAAe;AACtB,YAAM+4C,OAAO,GAAGC,UAAU,EAA1B;AACAD,QAAAA,OAAO,CAACv9C,IAAR,GAAewE,IAAf;AACA,YAAMo5C,QAAQ,GAAGwf,cAAc,CAAC94C,CAAD,EAAIi5B,OAAJ,CAAd,CACdn8C,KADc,CACR,WADQ,EACKuZ,QADL,EAEdvZ,KAFc,CAER,aAFQ,EAEOwZ,UAFP,EAGdxZ,KAHc,CAGR,aAHQ,EAGOrC,WAHP,CAAjB;AAKA,YAAIuxB,IAAI,GAAG,CAACstB,QAAQ,CAAC/6B,OAAT,IAAoB+6B,QAArB,EAA+B,CAA/B,EAAkC,CAAlC,EAAqCt9C,OAArC,EAAX;AACAumB,QAAAA,GAAG,CAAChmB,KAAJ,GAAYkG,IAAI,CAACkjC,KAAL,CAAWljC,IAAI,CAAC8oB,GAAL,CAAShJ,GAAG,CAAChmB,KAAb,EAAoByvB,IAAI,CAACzvB,KAAzB,CAAX,CAAZ;AACA+9D,QAAAA,OAAO,GAAG73D,IAAI,CAACkjC,KAAL,CAAW3Z,IAAI,CAACxvB,MAAhB,CAAV;AACA+lB,QAAAA,GAAG,CAAC/lB,MAAJ,IAAc89D,OAAd;AACA/3C,QAAAA,GAAG,CAACjR,UAAJ,GAAiB7O,IAAI,CAACkjC,KAAL,CAAWljC,IAAI,CAAC8oB,GAAL,CAAShJ,GAAG,CAACjR,UAAb,EAAyBgpD,OAAzB,CAAX,CAAjB;AACD;AAhBkC;AAAA;AAAA;AAAA;AAAA;;AAiBnCD,IAAAA,IAAI,CAAC3/D,IAAL,CAAU6nB,GAAV;AACD;;AAEDvC,EAAAA,CAAC,CAAC8xC,MAAF;AAEA,MAAIpuB,KAAK,GACPt+B,KAAK,CAACi1D,IAAI,CAAC,CAAD,CAAJ,CAAQ79D,MAAT,CAAL,IACA4I,KAAK,CAACi1D,IAAI,CAAC,CAAD,CAAJ,CAAQ99D,KAAT,CADL,IAEA6I,KAAK,CAACi1D,IAAI,CAAC,CAAD,CAAJ,CAAQ/oD,UAAT,CAFL,IAGC+oD,IAAI,CAAC,CAAD,CAAJ,CAAQ79D,MAAR,GAAiB69D,IAAI,CAAC,CAAD,CAAJ,CAAQ79D,MAAzB,IACC69D,IAAI,CAAC,CAAD,CAAJ,CAAQ99D,KAAR,GAAgB89D,IAAI,CAAC,CAAD,CAAJ,CAAQ99D,KADzB,IAEC89D,IAAI,CAAC,CAAD,CAAJ,CAAQ/oD,UAAR,GAAqB+oD,IAAI,CAAC,CAAD,CAAJ,CAAQ/oD,UAL/B,GAMI,CANJ,GAOI,CARN;AASA,SAAO+oD,IAAI,CAAC32B,KAAD,CAAX;AACD,CAxD2C,EAyD5C,UAAChoC,IAAD,EAAOrD,MAAP;AAAA,mBAAqBqD,IAArB,cAA6BrD,MAAM,CAACge,QAApC,cAAgDhe,MAAM,CAACie,UAAvD,cAAqEje,MAAM,CAACoC,UAA5E;AAAA,CAzD4C,CAAvC;;AA4DP,IAAM8/D,OAAO,GAAG,SAAVA,OAAU,CAAUC,MAAV,EAAkBC,KAAlB,EAAyB;AAAA,8CACtBA,KADsB;AAAA;;AAAA;AACvC,2DAAwB;AAAA,UAAfl/D,IAAe;AACtBi/D,MAAAA,MAAM,CAACj/D,IAAP,CAAYA,IAAI,CAAC,CAAD,CAAhB,EAAqBA,IAAI,CAAC,CAAD,CAAzB;AACD;AAHsC;AAAA;AAAA;AAAA;AAAA;AAIxC,CAJD;;AAMO,IAAMm/D,qBAAqB,GAAG,SAAxBA,qBAAwB,CAAUl+D,MAAV,EAAkBD,KAAlB,EAAyB8X,WAAzB,EAAsC;AACzE,MAAIomD,KAAK,GAAG,IAAIE,GAAJ,EAAZ;AACAF,EAAAA,KAAK,CAAC3X,GAAN,CAAU,QAAV,EAAoBtmD,MAApB;;AACA,MAAI6X,WAAJ,EAAiB;AACfomD,IAAAA,KAAK,CAAC3X,GAAN,CAAU,OAAV,EAAmB,MAAnB;AACA2X,IAAAA,KAAK,CAAC3X,GAAN,CAAU,OAAV,uBAAiCvmD,KAAjC;AACD,GAHD,MAGO;AACLk+D,IAAAA,KAAK,CAAC3X,GAAN,CAAU,OAAV,EAAmBvmD,KAAnB;AACD;;AACD,SAAOk+D,KAAP;AACD,CAVM;AAYA,IAAM76C,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAUkpC,OAAV,EAAmBtsD,MAAnB,EAA2BD,KAA3B,EAAkC8X,WAAlC,EAA+C;AAC7E,MAAMomD,KAAK,GAAGC,qBAAqB,CAACl+D,MAAD,EAASD,KAAT,EAAgB8X,WAAhB,CAAnC;AACAkmD,EAAAA,OAAO,CAACzR,OAAD,EAAU2R,KAAV,CAAP;AACD,CAHM;AAKA,IAAM3L,gBAAgB;AAC3B,oBAAY8L,aAAZ,EAA2BC,IAA3B,EAAiC;AAAA;;AAC/B,SAAKD,aAAL,GAAqBA,aAArB;AACA,SAAKC,IAAL,GAAYA,IAAZ;AAEA,SAAKnpC,KAAL,GAAampC,IAAI,GAAGA,IAAI,CAAC1hE,MAAR,GAAiB,CAAlC;AACD;;AAN0B;AAAA;AAAA,WAQ3B,gBAAO;AACL,UAAI,CAAC,KAAKyhE,aAAV,EAAyB,OAAO1hC,IAAI,CAAC4hC,GAAL,EAAP;AAEzB,aAAO,KAAKppC,KAAL,EAAP;AACD;AAZ0B;;AAAA;AAAA,GAAtB,EAeP;;AACA,IAAIqpC,OAAJ;AACO,IAAM/L,YAAY,GAAG,SAAfA,YAAe,CAAUhwD,IAAV,EAAgB;AAC1C+7D,EAAAA,OAAO,GAAGA,OAAO,IAAIn8D,QAAQ,CAACwzD,aAAT,CAAuB,KAAvB,CAArB,CAD0C,CAE1C;;AACApzD,EAAAA,IAAI,GAAGg8D,MAAM,CAACh8D,IAAD,CAAN,CAAaI,OAAb,CAAqB,MAArB,EAA6B,GAA7B,EAAkCA,OAAlC,CAA0C,MAA1C,EAAkD,GAAlD,EAAuDA,OAAvD,CAA+D,MAA/D,EAAuE,GAAvE,CAAP,CAH0C,CAI1C;;AACA27D,EAAAA,OAAO,CAAClmB,SAAR,GAAoB71C,IAApB;AACA,SAAOi8D,QAAQ,CAACF,OAAO,CAAC/6D,WAAT,CAAf;AACD,CAPM;AASA,IAAMkxD,kBAAkB,GAAG,SAArBA,kBAAqB,CAACqB,IAAD,EAAU;AAC1Cp6D,EAAAA,8CAAA,CAAU,gCAAV,EAA4Co6D,IAA5C;;AACA,MAAI,QAAOA,IAAP,MAAgB,QAApB,EAA8B;AAC5B;AACA,QAAIA,IAAI,CAACp5D,MAAT,EAAiB;AACfo5D,MAAAA,IAAI,CAACp4D,OAAL,CAAa,UAAC+gE,GAAD;AAAA,eAAShK,kBAAkB,CAACgK,GAAD,CAA3B;AAAA,OAAb;AACD,KAFD,MAEO;AACL;AACA3iE,MAAAA,MAAM,CAAC0B,IAAP,CAAYs4D,IAAZ,EAAkBp4D,OAAlB,CAA0B,UAACC,GAAD,EAAS;AACjCjC,QAAAA,8CAAA,CAAU,cAAV,EAA0BiC,GAA1B;;AACA,YAAIA,GAAG,CAACE,OAAJ,CAAY,IAAZ,MAAsB,CAA1B,EAA6B;AAC3BnC,UAAAA,8CAAA,CAAU,6BAAV,EAAyCiC,GAAzC;AACA,iBAAOm4D,IAAI,CAACn4D,GAAD,CAAX;AACD;;AAED,YAAIA,GAAG,CAACE,OAAJ,CAAY,OAAZ,KAAwB,CAA5B,EAA+B;AAC7BnC,UAAAA,8CAAA,CAAU,gCAAV,EAA4CiC,GAA5C;AACA,iBAAOm4D,IAAI,CAACn4D,GAAD,CAAX;AACD;;AAED,YAAIA,GAAG,CAACE,OAAJ,CAAY,QAAZ,KAAyB,CAA7B,EAAgC;AAC9BnC,UAAAA,8CAAA,CAAU,iCAAV,EAA6CiC,GAA7C;AACA,iBAAOm4D,IAAI,CAACn4D,GAAD,CAAX;AACD;;AACD,YAAI6f,8DAAA,CAAmB7f,GAAnB,IAA0B,CAA9B,EAAiC;AAC/BjC,UAAAA,8CAAA,CAAU,0BAAV,EAAsCiC,GAAtC;AACA,iBAAOm4D,IAAI,CAACn4D,GAAD,CAAX;AACD,SAHD,MAGO;AACL,cAAI,QAAOm4D,IAAI,CAACn4D,GAAD,CAAX,MAAqB,QAAzB,EAAmC;AACjCjC,YAAAA,8CAAA,CAAU,0BAAV,EAAsCiC,GAAtC;AACA82D,YAAAA,kBAAkB,CAACqB,IAAI,CAACn4D,GAAD,CAAL,CAAlB;AACD;AACF;AACF,OAzBD;AA0BD;AACF;AACF,CApCM;AAsCP,iEAAe;AACblC,EAAAA,eAAe,EAAfA,eADa;AAEbmjD,EAAAA,SAAS,EAATA,SAFa;AAGb8e,EAAAA,mBAAmB,EAAnBA,mBAHa;AAIbf,EAAAA,kBAAkB,EAAlBA,kBAJa;AAKbxf,EAAAA,uBAAuB,EAAvBA,uBALa;AAMb8gB,EAAAA,qBAAqB,EAArBA,qBANa;AAOb96C,EAAAA,gBAAgB,EAAhBA,gBAPa;AAQbqvC,EAAAA,UAAU,EAAVA,UARa;AASbyH,EAAAA,eAAe,EAAfA,eATa;AAUbpF,EAAAA,UAAU,EAAVA,UAVa;AAWb5hC,EAAAA,kBAAkB,EAAlBA,kBAXa;AAYbhQ,EAAAA,kBAAkB,EAAlBA,kBAZa;AAabvd,EAAAA,iBAAiB,EAAjBA,iBAba;AAcbshB,EAAAA,uBAAuB,EAAvBA,uBAda;AAebrhB,EAAAA,yBAAyB,EAAzBA,yBAfa;AAgBb4a,EAAAA,SAAS,EAATA,SAhBa;AAiBb2C,EAAAA,kBAAkB,EAAlBA,kBAjBa;AAkBbylC,EAAAA,UAAU,EAAVA,UAlBa;AAmBb5jB,EAAAA,MAAM,EAANA,MAnBa;AAoBbu1B,EAAAA,OAAO,EAAPA,OApBa;AAqBbp5C,EAAAA,OAAO,EAAPA,OArBa;AAsBbqxC,EAAAA,YAAY,EAAZA,YAtBa;AAuBbF,EAAAA,gBAAgB,EAAhBA,gBAvBa;AAwBboC,EAAAA,kBAAkB,EAAlBA;AAxBa,CAAf;;;;;;;;;;;ACl2BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,8BAA8B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,qBAAqB;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,YAAY;AACZ;AACA,sCAAsC;AACtC;AACA;AACA,UAAU;AACV;AACA;AACA,iDAAiD;AACjD;AACA,YAAY;AACZ;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gDAAgD;AAChD;AACA,MAAM;AACN,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF;AACpF;AACA,MAAM;AACN;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA,8DAA8D;;AAE9D;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;;;;AChhBA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WC5BA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;;;;;UEJA;UACA;UACA;UACA","sources":["webpack://mermaid/webpack/universalModuleDefinition","webpack://mermaid/./src/diagrams/class/parser/classDiagram.jison","webpack://mermaid/./src/diagrams/er/parser/erDiagram.jison","webpack://mermaid/./src/diagrams/flowchart/parser/flow.jison","webpack://mermaid/./src/diagrams/gantt/parser/gantt.jison","webpack://mermaid/./src/diagrams/git/parser/gitGraph.jison","webpack://mermaid/./src/diagrams/info/parser/info.jison","webpack://mermaid/./src/diagrams/pie/parser/pie.jison","webpack://mermaid/./src/diagrams/requirement/parser/requirementDiagram.jison","webpack://mermaid/./src/diagrams/sequence/parser/sequenceDiagram.jison","webpack://mermaid/./src/diagrams/state/parser/stateDiagram.jison","webpack://mermaid/./src/diagrams/user-journey/parser/journey.jison","webpack://mermaid/./src/config.js","webpack://mermaid/./src/dagre-wrapper/clusters.js","webpack://mermaid/./src/dagre-wrapper/createLabel.js","webpack://mermaid/./src/dagre-wrapper/edges.js","webpack://mermaid/./src/dagre-wrapper/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-circle.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-ellipse.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-line.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-node.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-polygon.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-rect.js","webpack://mermaid/./src/dagre-wrapper/markers.js","webpack://mermaid/./src/dagre-wrapper/mermaid-graphlib.js","webpack://mermaid/./src/dagre-wrapper/nodes.js","webpack://mermaid/./src/dagre-wrapper/shapes/note.js","webpack://mermaid/./src/dagre-wrapper/shapes/util.js","webpack://mermaid/./src/defaultConfig.js","webpack://mermaid/./src/diagrams/class/classDb.js","webpack://mermaid/./src/diagrams/class/classRenderer-v2.js","webpack://mermaid/./src/diagrams/class/classRenderer.js","webpack://mermaid/./src/diagrams/class/styles.js","webpack://mermaid/./src/diagrams/class/svgDraw.js","webpack://mermaid/./src/diagrams/common/common.js","webpack://mermaid/./src/diagrams/er/erDb.js","webpack://mermaid/./src/diagrams/er/erMarkers.js","webpack://mermaid/./src/diagrams/er/erRenderer.js","webpack://mermaid/./src/diagrams/er/styles.js","webpack://mermaid/./src/diagrams/flowchart/flowChartShapes.js","webpack://mermaid/./src/diagrams/flowchart/flowDb.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer-v2.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer.js","webpack://mermaid/./src/diagrams/flowchart/styles.js","webpack://mermaid/./src/diagrams/gantt/ganttDb.js","webpack://mermaid/./src/diagrams/gantt/ganttRenderer.js","webpack://mermaid/./src/diagrams/gantt/styles.js","webpack://mermaid/./src/diagrams/git/gitGraphAst.js","webpack://mermaid/./src/diagrams/git/gitGraphRenderer.js","webpack://mermaid/./src/diagrams/git/styles.js","webpack://mermaid/./src/diagrams/info/infoDb.js","webpack://mermaid/./src/diagrams/info/infoRenderer.js","webpack://mermaid/./src/diagrams/info/styles.js","webpack://mermaid/./src/diagrams/pie/pieDb.js","webpack://mermaid/./src/diagrams/pie/pieRenderer.js","webpack://mermaid/./src/diagrams/pie/styles.js","webpack://mermaid/./src/diagrams/requirement/requirementDb.js","webpack://mermaid/./src/diagrams/requirement/requirementMarkers.js","webpack://mermaid/./src/diagrams/requirement/requirementRenderer.js","webpack://mermaid/./src/diagrams/requirement/styles.js","webpack://mermaid/./src/diagrams/sequence/sequenceDb.js","webpack://mermaid/./src/diagrams/sequence/sequenceRenderer.js","webpack://mermaid/./src/diagrams/sequence/styles.js","webpack://mermaid/./src/diagrams/sequence/svgDraw.js","webpack://mermaid/./src/diagrams/state/id-cache.js","webpack://mermaid/./src/diagrams/state/shapes.js","webpack://mermaid/./src/diagrams/state/stateDb.js","webpack://mermaid/./src/diagrams/state/stateRenderer-v2.js","webpack://mermaid/./src/diagrams/state/stateRenderer.js","webpack://mermaid/./src/diagrams/state/styles.js","webpack://mermaid/./src/diagrams/user-journey/journeyDb.js","webpack://mermaid/./src/diagrams/user-journey/journeyRenderer.js","webpack://mermaid/./src/diagrams/user-journey/styles.js","webpack://mermaid/./src/diagrams/user-journey/svgDraw.js","webpack://mermaid/./src/errorRenderer.js","webpack://mermaid/./src/interactionDb.js","webpack://mermaid/./src/logger.js","webpack://mermaid/./src/mermaid.js","webpack://mermaid/./src/mermaidAPI.js","webpack://mermaid/./src/styles.js","webpack://mermaid/./src/themes/index.js","webpack://mermaid/./src/themes/theme-base.js","webpack://mermaid/./src/themes/theme-dark.js","webpack://mermaid/./src/themes/theme-default.js","webpack://mermaid/./src/themes/theme-forest.js","webpack://mermaid/./src/themes/theme-helpers.js","webpack://mermaid/./src/themes/theme-neutral.js","webpack://mermaid/./src/utils.js","webpack://mermaid/./node_modules/path-browserify/index.js","webpack://mermaid/external commonjs \"@braintree/sanitize-url\"","webpack://mermaid/external commonjs \"d3\"","webpack://mermaid/external commonjs \"dagre\"","webpack://mermaid/external commonjs \"dagre-d3\"","webpack://mermaid/external commonjs \"dagre-d3/lib/label/add-html-label.js\"","webpack://mermaid/external commonjs \"dompurify\"","webpack://mermaid/external commonjs \"graphlib\"","webpack://mermaid/external commonjs \"khroma\"","webpack://mermaid/external commonjs \"moment-mini\"","webpack://mermaid/external commonjs \"stylis\"","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\class\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\er\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\flowchart\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\gantt\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\git\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\info\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\pie\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\requirement\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\sequence\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\state\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\user-journey\\parser|fs","webpack://mermaid/webpack/bootstrap","webpack://mermaid/webpack/runtime/compat get default export","webpack://mermaid/webpack/runtime/define property getters","webpack://mermaid/webpack/runtime/hasOwnProperty shorthand","webpack://mermaid/webpack/runtime/make namespace object","webpack://mermaid/webpack/runtime/node module decorator","webpack://mermaid/webpack/before-startup","webpack://mermaid/webpack/startup","webpack://mermaid/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mermaid\"] = factory();\n\telse\n\t\troot[\"mermaid\"] = factory();\n})(typeof self !== \"undefined\" ? self : this, function() {\nreturn ","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,6],$V1=[1,7],$V2=[1,8],$V3=[1,9],$V4=[1,12],$V5=[1,11],$V6=[1,15,24],$V7=[1,19],$V8=[1,31],$V9=[1,34],$Va=[1,32],$Vb=[1,33],$Vc=[1,35],$Vd=[1,36],$Ve=[1,37],$Vf=[1,38],$Vg=[1,41],$Vh=[1,42],$Vi=[1,43],$Vj=[1,44],$Vk=[15,24],$Vl=[1,56],$Vm=[1,57],$Vn=[1,58],$Vo=[1,59],$Vp=[1,60],$Vq=[1,61],$Vr=[15,24,31,38,39,47,50,51,52,53,54,55,60,62],$Vs=[15,24,29,31,38,39,43,47,50,51,52,53,54,55,60,62,77,78,79,80],$Vt=[7,8,9,10,15,18,22,24],$Vu=[47,77,78,79,80],$Vv=[47,54,55,77,78,79,80],$Vw=[47,50,51,52,53,77,78,79,80],$Vx=[15,24,31],$Vy=[1,93];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"direction\":5,\"directive\":6,\"direction_tb\":7,\"direction_bt\":8,\"direction_rl\":9,\"direction_lr\":10,\"graphConfig\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\"NEWLINE\":15,\":\":16,\"argDirective\":17,\"open_directive\":18,\"type_directive\":19,\"arg_directive\":20,\"close_directive\":21,\"CLASS_DIAGRAM\":22,\"statements\":23,\"EOF\":24,\"statement\":25,\"className\":26,\"alphaNumToken\":27,\"classLiteralName\":28,\"GENERICTYPE\":29,\"relationStatement\":30,\"LABEL\":31,\"classStatement\":32,\"methodStatement\":33,\"annotationStatement\":34,\"clickStatement\":35,\"cssClassStatement\":36,\"CLASS\":37,\"STYLE_SEPARATOR\":38,\"STRUCT_START\":39,\"members\":40,\"STRUCT_STOP\":41,\"ANNOTATION_START\":42,\"ANNOTATION_END\":43,\"MEMBER\":44,\"SEPARATOR\":45,\"relation\":46,\"STR\":47,\"relationType\":48,\"lineType\":49,\"AGGREGATION\":50,\"EXTENSION\":51,\"COMPOSITION\":52,\"DEPENDENCY\":53,\"LINE\":54,\"DOTTED_LINE\":55,\"CALLBACK\":56,\"LINK\":57,\"LINK_TARGET\":58,\"CLICK\":59,\"CALLBACK_NAME\":60,\"CALLBACK_ARGS\":61,\"HREF\":62,\"CSSCLASS\":63,\"commentToken\":64,\"textToken\":65,\"graphCodeTokens\":66,\"textNoTagsToken\":67,\"TAGSTART\":68,\"TAGEND\":69,\"==\":70,\"--\":71,\"PCT\":72,\"DEFAULT\":73,\"SPACE\":74,\"MINUS\":75,\"keywords\":76,\"UNICODE_TEXT\":77,\"NUM\":78,\"ALPHA\":79,\"BQUOTE_STR\":80,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",7:\"direction_tb\",8:\"direction_bt\",9:\"direction_rl\",10:\"direction_lr\",15:\"NEWLINE\",16:\":\",18:\"open_directive\",19:\"type_directive\",20:\"arg_directive\",21:\"close_directive\",22:\"CLASS_DIAGRAM\",24:\"EOF\",29:\"GENERICTYPE\",31:\"LABEL\",37:\"CLASS\",38:\"STYLE_SEPARATOR\",39:\"STRUCT_START\",41:\"STRUCT_STOP\",42:\"ANNOTATION_START\",43:\"ANNOTATION_END\",44:\"MEMBER\",45:\"SEPARATOR\",47:\"STR\",50:\"AGGREGATION\",51:\"EXTENSION\",52:\"COMPOSITION\",53:\"DEPENDENCY\",54:\"LINE\",55:\"DOTTED_LINE\",56:\"CALLBACK\",57:\"LINK\",58:\"LINK_TARGET\",59:\"CLICK\",60:\"CALLBACK_NAME\",61:\"CALLBACK_ARGS\",62:\"HREF\",63:\"CSSCLASS\",66:\"graphCodeTokens\",68:\"TAGSTART\",69:\"TAGEND\",70:\"==\",71:\"--\",72:\"PCT\",73:\"DEFAULT\",74:\"SPACE\",75:\"MINUS\",76:\"keywords\",77:\"UNICODE_TEXT\",78:\"NUM\",79:\"ALPHA\",80:\"BQUOTE_STR\"},\nproductions_: [0,[3,1],[3,1],[3,2],[5,1],[5,1],[5,1],[5,1],[4,1],[6,4],[6,6],[12,1],[13,1],[17,1],[14,1],[11,4],[23,1],[23,2],[23,3],[26,1],[26,1],[26,2],[26,2],[26,2],[25,1],[25,2],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[32,2],[32,4],[32,5],[32,7],[34,4],[40,1],[40,2],[33,1],[33,2],[33,1],[33,1],[30,3],[30,4],[30,4],[30,5],[46,3],[46,2],[46,2],[46,1],[48,1],[48,1],[48,1],[48,1],[49,1],[49,1],[35,3],[35,4],[35,3],[35,4],[35,4],[35,5],[35,3],[35,4],[35,4],[35,5],[35,3],[35,4],[35,4],[35,5],[36,3],[64,1],[64,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[67,1],[67,1],[67,1],[67,1],[27,1],[27,1],[27,1],[28,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n yy.setDirection('TB');\nbreak;\ncase 5:\n yy.setDirection('BT');\nbreak;\ncase 6:\n yy.setDirection('RL');\nbreak;\ncase 7:\n yy.setDirection('LR');\nbreak;\ncase 11:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 12:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 13:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 14:\n yy.parseDirective('}%%', 'close_directive', 'class'); \nbreak;\ncase 19: case 20:\n this.$=$$[$0]; \nbreak;\ncase 21:\n this.$=$$[$0-1]+$$[$0]; \nbreak;\ncase 22: case 23:\n this.$=$$[$0-1]+'~'+$$[$0]; \nbreak;\ncase 24:\n yy.addRelation($$[$0]); \nbreak;\ncase 25:\n $$[$0-1].title = yy.cleanupLabel($$[$0]); yy.addRelation($$[$0-1]); \nbreak;\ncase 33:\nyy.addClass($$[$0]);\nbreak;\ncase 34:\nyy.addClass($$[$0-2]);yy.setCssClass($$[$0-2], $$[$0]);\nbreak;\ncase 35:\n/*console.log($$[$0-3],JSON.stringify($$[$0-1]));*/yy.addClass($$[$0-3]);yy.addMembers($$[$0-3],$$[$0-1]);\nbreak;\ncase 36:\nyy.addClass($$[$0-5]);yy.setCssClass($$[$0-5], $$[$0-3]);yy.addMembers($$[$0-5],$$[$0-1]);\nbreak;\ncase 37:\n yy.addAnnotation($$[$0],$$[$0-2]); \nbreak;\ncase 38:\n this.$ = [$$[$0]]; \nbreak;\ncase 39:\n $$[$0].push($$[$0-1]);this.$=$$[$0];\nbreak;\ncase 40:\n/*console.log('Rel found',$$[$0]);*/\nbreak;\ncase 41:\nyy.addMember($$[$0-1],yy.cleanupLabel($$[$0]));\nbreak;\ncase 42:\n/*console.warn('Member',$$[$0]);*/\nbreak;\ncase 43:\n/*console.log('sep found',$$[$0]);*/\nbreak;\ncase 44:\n this.$ = {'id1':$$[$0-2],'id2':$$[$0], relation:$$[$0-1], relationTitle1:'none', relationTitle2:'none'}; \nbreak;\ncase 45:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-1], relationTitle1:$$[$0-2], relationTitle2:'none'}\nbreak;\ncase 46:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-2], relationTitle1:'none', relationTitle2:$$[$0-1]}; \nbreak;\ncase 47:\n this.$ = {id1:$$[$0-4], id2:$$[$0], relation:$$[$0-2], relationTitle1:$$[$0-3], relationTitle2:$$[$0-1]} \nbreak;\ncase 48:\n this.$={type1:$$[$0-2],type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 49:\n this.$={type1:'none',type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 50:\n this.$={type1:$$[$0-1],type2:'none',lineType:$$[$0]}; \nbreak;\ncase 51:\n this.$={type1:'none',type2:'none',lineType:$$[$0]}; \nbreak;\ncase 52:\n this.$=yy.relationType.AGGREGATION;\nbreak;\ncase 53:\n this.$=yy.relationType.EXTENSION;\nbreak;\ncase 54:\n this.$=yy.relationType.COMPOSITION;\nbreak;\ncase 55:\n this.$=yy.relationType.DEPENDENCY;\nbreak;\ncase 56:\nthis.$=yy.lineType.LINE;\nbreak;\ncase 57:\nthis.$=yy.lineType.DOTTED_LINE;\nbreak;\ncase 58: case 64:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 59: case 65:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 60: case 68:\nthis.$ = $$[$0-2];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 61:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1],$$[$0]);\nbreak;\ncase 62: case 70:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 63: case 71:\nthis.$ = $$[$0-4];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);yy.setTooltip($$[$0-3], $$[$0-1]);\nbreak;\ncase 66:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 67:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 69:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 72:\nyy.setCssClass($$[$0-1], $$[$0]);\nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:4,7:$V0,8:$V1,9:$V2,10:$V3,11:5,12:10,18:$V4,22:$V5},{1:[3]},{1:[2,1]},{1:[2,2]},{3:13,4:2,5:3,6:4,7:$V0,8:$V1,9:$V2,10:$V3,11:5,12:10,18:$V4,22:$V5},{1:[2,8]},o($V6,[2,4]),o($V6,[2,5]),o($V6,[2,6]),o($V6,[2,7]),{13:14,19:[1,15]},{15:[1,16]},{19:[2,11]},{1:[2,3]},{14:17,16:[1,18],21:$V7},o([16,21],[2,12]),{5:29,6:28,7:$V0,8:$V1,9:$V2,10:$V3,12:10,18:$V4,23:20,25:21,26:30,27:39,28:40,30:22,32:23,33:24,34:25,35:26,36:27,37:$V8,42:$V9,44:$Va,45:$Vb,56:$Vc,57:$Vd,59:$Ve,63:$Vf,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{15:[1,45]},{17:46,20:[1,47]},{15:[2,14]},{24:[1,48]},{15:[1,49],24:[2,16]},o($Vk,[2,24],{31:[1,50]}),o($Vk,[2,26]),o($Vk,[2,27]),o($Vk,[2,28]),o($Vk,[2,29]),o($Vk,[2,30]),o($Vk,[2,31]),o($Vk,[2,32]),o($Vk,[2,40],{46:51,48:54,49:55,31:[1,53],47:[1,52],50:$Vl,51:$Vm,52:$Vn,53:$Vo,54:$Vp,55:$Vq}),{26:62,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vk,[2,42]),o($Vk,[2,43]),{27:63,77:$Vg,78:$Vh,79:$Vi},{26:64,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{26:65,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{26:66,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{47:[1,67]},o($Vr,[2,19],{27:39,28:40,26:68,29:[1,69],77:$Vg,78:$Vh,79:$Vi,80:$Vj}),o($Vr,[2,20],{29:[1,70]}),o($Vs,[2,86]),o($Vs,[2,87]),o($Vs,[2,88]),o([15,24,29,31,38,39,47,50,51,52,53,54,55,60,62],[2,89]),o($Vt,[2,9]),{14:71,21:$V7},{21:[2,13]},{1:[2,15]},{5:29,6:28,7:$V0,8:$V1,9:$V2,10:$V3,12:10,18:$V4,23:72,24:[2,17],25:21,26:30,27:39,28:40,30:22,32:23,33:24,34:25,35:26,36:27,37:$V8,42:$V9,44:$Va,45:$Vb,56:$Vc,57:$Vd,59:$Ve,63:$Vf,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vk,[2,25]),{26:73,27:39,28:40,47:[1,74],77:$Vg,78:$Vh,79:$Vi,80:$Vj},{46:75,48:54,49:55,50:$Vl,51:$Vm,52:$Vn,53:$Vo,54:$Vp,55:$Vq},o($Vk,[2,41]),{49:76,54:$Vp,55:$Vq},o($Vu,[2,51],{48:77,50:$Vl,51:$Vm,52:$Vn,53:$Vo}),o($Vv,[2,52]),o($Vv,[2,53]),o($Vv,[2,54]),o($Vv,[2,55]),o($Vw,[2,56]),o($Vw,[2,57]),o($Vk,[2,33],{38:[1,78],39:[1,79]}),{43:[1,80]},{47:[1,81]},{47:[1,82]},{60:[1,83],62:[1,84]},{27:85,77:$Vg,78:$Vh,79:$Vi},o($Vr,[2,21]),o($Vr,[2,22]),o($Vr,[2,23]),{15:[1,86]},{24:[2,18]},o($Vx,[2,44]),{26:87,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{26:88,27:39,28:40,47:[1,89],77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vu,[2,50],{48:90,50:$Vl,51:$Vm,52:$Vn,53:$Vo}),o($Vu,[2,49]),{27:91,77:$Vg,78:$Vh,79:$Vi},{40:92,44:$Vy},{26:94,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vk,[2,58],{47:[1,95]}),o($Vk,[2,60],{47:[1,97],58:[1,96]}),o($Vk,[2,64],{47:[1,98],61:[1,99]}),o($Vk,[2,68],{47:[1,101],58:[1,100]}),o($Vk,[2,72]),o($Vt,[2,10]),o($Vx,[2,46]),o($Vx,[2,45]),{26:102,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vu,[2,48]),o($Vk,[2,34],{39:[1,103]}),{41:[1,104]},{40:105,41:[2,38],44:$Vy},o($Vk,[2,37]),o($Vk,[2,59]),o($Vk,[2,61]),o($Vk,[2,62],{58:[1,106]}),o($Vk,[2,65]),o($Vk,[2,66],{47:[1,107]}),o($Vk,[2,69]),o($Vk,[2,70],{58:[1,108]}),o($Vx,[2,47]),{40:109,44:$Vy},o($Vk,[2,35]),{41:[2,39]},o($Vk,[2,63]),o($Vk,[2,67]),o($Vk,[2,71]),{41:[1,110]},o($Vk,[2,36])],\ndefaultActions: {2:[2,1],3:[2,2],5:[2,8],12:[2,11],13:[2,3],19:[2,14],47:[2,13],48:[2,15],72:[2,18],105:[2,39]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 18; \nbreak;\ncase 1:return 7;\nbreak;\ncase 2:return 8;\nbreak;\ncase 3:return 9;\nbreak;\ncase 4:return 10;\nbreak;\ncase 5: this.begin('type_directive'); return 19; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 16; \nbreak;\ncase 7: this.popState(); this.popState(); return 21; \nbreak;\ncase 8:return 20;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:return 15;\nbreak;\ncase 12:/* skip whitespace */\nbreak;\ncase 13:return 22;\nbreak;\ncase 14:return 22;\nbreak;\ncase 15: this.begin(\"struct\"); /*console.log('Starting struct');*/ return 39;\nbreak;\ncase 16:return \"EOF_IN_STRUCT\";\nbreak;\ncase 17:return \"OPEN_IN_STRUCT\";\nbreak;\ncase 18: /*console.log('Ending struct');*/this.popState(); return 41;\nbreak;\ncase 19:/* nothing */\nbreak;\ncase 20: /*console.log('lex-member: ' + yy_.yytext);*/ return \"MEMBER\";\nbreak;\ncase 21:return 37;\nbreak;\ncase 22:return 63;\nbreak;\ncase 23:return 56;\nbreak;\ncase 24:return 57;\nbreak;\ncase 25:return 59;\nbreak;\ncase 26:return 42;\nbreak;\ncase 27:return 43;\nbreak;\ncase 28:this.begin(\"generic\");\nbreak;\ncase 29:this.popState();\nbreak;\ncase 30:return \"GENERICTYPE\";\nbreak;\ncase 31:this.begin(\"string\");\nbreak;\ncase 32:this.popState();\nbreak;\ncase 33:return \"STR\";\nbreak;\ncase 34:this.begin(\"bqstring\");\nbreak;\ncase 35:this.popState();\nbreak;\ncase 36:return \"BQUOTE_STR\";\nbreak;\ncase 37:this.begin(\"href\");\nbreak;\ncase 38:this.popState();\nbreak;\ncase 39:return 62;\nbreak;\ncase 40:this.begin(\"callback_name\");\nbreak;\ncase 41:this.popState();\nbreak;\ncase 42:this.popState(); this.begin(\"callback_args\");\nbreak;\ncase 43:return 60;\nbreak;\ncase 44:this.popState();\nbreak;\ncase 45:return 61;\nbreak;\ncase 46:return 58;\nbreak;\ncase 47:return 58;\nbreak;\ncase 48:return 58;\nbreak;\ncase 49:return 58;\nbreak;\ncase 50:return 51;\nbreak;\ncase 51:return 51;\nbreak;\ncase 52:return 53;\nbreak;\ncase 53:return 53;\nbreak;\ncase 54:return 52;\nbreak;\ncase 55:return 50;\nbreak;\ncase 56:return 54;\nbreak;\ncase 57:return 55;\nbreak;\ncase 58:return 31;\nbreak;\ncase 59:return 38;\nbreak;\ncase 60:return 75;\nbreak;\ncase 61:return 'DOT';\nbreak;\ncase 62:return 'PLUS';\nbreak;\ncase 63:return 72;\nbreak;\ncase 64:return 'EQUALS';\nbreak;\ncase 65:return 'EQUALS';\nbreak;\ncase 66:return 79;\nbreak;\ncase 67:return 'PUNCTUATION';\nbreak;\ncase 68:return 78;\nbreak;\ncase 69:return 77;\nbreak;\ncase 70:return 74;\nbreak;\ncase 71:return 24;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/,/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:((?:(?!\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\}%%)/,/^(?:((?:(?!\\}%%).|\\n)*))/,/^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/,/^(?:%%[^\\n]*(\\r?\\n)*)/,/^(?:\\s*(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:classDiagram-v2\\b)/,/^(?:classDiagram\\b)/,/^(?:[{])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\\n])/,/^(?:[^{}\\n]*)/,/^(?:class\\b)/,/^(?:cssClass\\b)/,/^(?:callback\\b)/,/^(?:link\\b)/,/^(?:click\\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\\s]+[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:\\s*<\\|)/,/^(?:\\s*\\|>)/,/^(?:\\s*>)/,/^(?:\\s*<)/,/^(?:\\s*\\*)/,/^(?:\\s*o\\b)/,/^(?:--)/,/^(?:\\.\\.)/,/^(?::{1}[^:\\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\\.)/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\\w+)/,/^(?:[!\"#$%&'*+,-.`?\\\\/])/,/^(?:[0-9]+)/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"arg_directive\":{\"rules\":[7,8],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7],\"inclusive\":false},\"open_directive\":{\"rules\":[5],\"inclusive\":false},\"callback_args\":{\"rules\":[44,45],\"inclusive\":false},\"callback_name\":{\"rules\":[41,42,43],\"inclusive\":false},\"href\":{\"rules\":[38,39],\"inclusive\":false},\"struct\":{\"rules\":[16,17,18,19,20],\"inclusive\":false},\"generic\":{\"rules\":[29,30],\"inclusive\":false},\"bqstring\":{\"rules\":[35,36],\"inclusive\":false},\"string\":{\"rules\":[32,33],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,9,10,11,12,13,14,15,21,22,23,24,25,26,27,28,31,34,37,40,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,5],$V2=[6,9,11,23,40],$V3=[1,17],$V4=[1,20],$V5=[1,25],$V6=[1,26],$V7=[1,27],$V8=[1,28],$V9=[1,37],$Va=[23,37,38],$Vb=[4,6,9,11,23,40],$Vc=[33,34,35,36],$Vd=[22,29];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"ER_DIAGRAM\":4,\"document\":5,\"EOF\":6,\"directive\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NEWLINE\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\":\":15,\"argDirective\":16,\"entityName\":17,\"relSpec\":18,\"role\":19,\"BLOCK_START\":20,\"attributes\":21,\"BLOCK_STOP\":22,\"ALPHANUM\":23,\"attribute\":24,\"attributeType\":25,\"attributeName\":26,\"attributeKeyType\":27,\"COMMENT\":28,\"ATTRIBUTE_WORD\":29,\"ATTRIBUTE_KEY\":30,\"cardinality\":31,\"relType\":32,\"ZERO_OR_ONE\":33,\"ZERO_OR_MORE\":34,\"ONE_OR_MORE\":35,\"ONLY_ONE\":36,\"NON_IDENTIFYING\":37,\"IDENTIFYING\":38,\"WORD\":39,\"open_directive\":40,\"type_directive\":41,\"arg_directive\":42,\"close_directive\":43,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"ER_DIAGRAM\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",20:\"BLOCK_START\",22:\"BLOCK_STOP\",23:\"ALPHANUM\",28:\"COMMENT\",29:\"ATTRIBUTE_WORD\",30:\"ATTRIBUTE_KEY\",33:\"ZERO_OR_ONE\",34:\"ZERO_OR_MORE\",35:\"ONE_OR_MORE\",36:\"ONLY_ONE\",37:\"NON_IDENTIFYING\",38:\"IDENTIFYING\",39:\"WORD\",40:\"open_directive\",41:\"type_directive\",42:\"arg_directive\",43:\"close_directive\"},\nproductions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[17,1],[21,1],[21,2],[24,2],[24,3],[24,3],[24,4],[25,1],[26,1],[27,1],[18,3],[31,1],[31,1],[31,1],[31,1],[32,1],[32,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n /*console.log('finished parsing');*/ \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 12:\n\r\n yy.addEntity($$[$0-4]);\r\n yy.addEntity($$[$0-2]);\r\n yy.addRelationship($$[$0-4], $$[$0], $$[$0-2], $$[$0-3]);\r\n /*console.log($$[$0-4] + $$[$0-3] + $$[$0-2] + ':' + $$[$0]);*/\r\n \nbreak;\ncase 13:\n\r\n /* console.log('detected block'); */\r\n yy.addEntity($$[$0-3]);\r\n yy.addAttributes($$[$0-3], $$[$0-1]);\r\n /* console.log('handled block'); */\r\n \nbreak;\ncase 14:\n yy.addEntity($$[$0-2]); \nbreak;\ncase 15:\n yy.addEntity($$[$0]); \nbreak;\ncase 16:\n this.$ = $$[$0]; /*console.log('Entity: ' + $$[$0]);*/ \nbreak;\ncase 17:\n this.$ = [$$[$0]]; \nbreak;\ncase 18:\n $$[$0].push($$[$0-1]); this.$=$$[$0]; \nbreak;\ncase 19:\n this.$ = { attributeType: $$[$0-1], attributeName: $$[$0] }; \nbreak;\ncase 20:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeKeyType: $$[$0] }; \nbreak;\ncase 21:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 22:\n this.$ = { attributeType: $$[$0-3], attributeName: $$[$0-2], attributeKeyType: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 23: case 24: case 25:\n this.$=$$[$0]; \nbreak;\ncase 26:\n\r\n this.$ = { cardA: $$[$0], relType: $$[$0-1], cardB: $$[$0-2] };\r\n /*console.log('relSpec: ' + $$[$0] + $$[$0-1] + $$[$0-2]);*/\r\n \nbreak;\ncase 27:\n this.$ = yy.Cardinality.ZERO_OR_ONE; \nbreak;\ncase 28:\n this.$ = yy.Cardinality.ZERO_OR_MORE; \nbreak;\ncase 29:\n this.$ = yy.Cardinality.ONE_OR_MORE; \nbreak;\ncase 30:\n this.$ = yy.Cardinality.ONLY_ONE; \nbreak;\ncase 31:\n this.$ = yy.Identification.NON_IDENTIFYING; \nbreak;\ncase 32:\n this.$ = yy.Identification.IDENTIFYING; \nbreak;\ncase 33:\n this.$ = $$[$0].replace(/\"/g, ''); \nbreak;\ncase 34:\n this.$ = $$[$0]; \nbreak;\ncase 35:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 36:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 37:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 38:\n yy.parseDirective('}%%', 'close_directive', 'er'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,40:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,40:$V1},{13:8,41:[1,9]},{41:[2,35]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:$V3,40:$V1},{1:[2,2]},{14:18,15:[1,19],43:$V4},o([15,43],[2,36]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:15,10:21,12:4,17:16,23:$V3,40:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,15],{18:22,31:24,20:[1,23],33:$V5,34:$V6,35:$V7,36:$V8}),o([6,9,11,15,20,23,33,34,35,36,40],[2,16]),{11:[1,29]},{16:30,42:[1,31]},{11:[2,38]},o($V2,[2,5]),{17:32,23:$V3},{21:33,22:[1,34],24:35,25:36,29:$V9},{32:38,37:[1,39],38:[1,40]},o($Va,[2,27]),o($Va,[2,28]),o($Va,[2,29]),o($Va,[2,30]),o($Vb,[2,9]),{14:41,43:$V4},{43:[2,37]},{15:[1,42]},{22:[1,43]},o($V2,[2,14]),{21:44,22:[2,17],24:35,25:36,29:$V9},{26:45,29:[1,46]},{29:[2,23]},{31:47,33:$V5,34:$V6,35:$V7,36:$V8},o($Vc,[2,31]),o($Vc,[2,32]),{11:[1,48]},{19:49,23:[1,51],39:[1,50]},o($V2,[2,13]),{22:[2,18]},o($Vd,[2,19],{27:52,28:[1,53],30:[1,54]}),o([22,28,29,30],[2,24]),{23:[2,26]},o($Vb,[2,10]),o($V2,[2,12]),o($V2,[2,33]),o($V2,[2,34]),o($Vd,[2,20],{28:[1,55]}),o($Vd,[2,21]),o([22,28,29],[2,25]),o($Vd,[2,22])],\ndefaultActions: {5:[2,35],7:[2,2],20:[2,38],31:[2,37],37:[2,23],44:[2,18],47:[2,26]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 40; \nbreak;\ncase 1: this.begin('type_directive'); return 41; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 3: this.popState(); this.popState(); return 43; \nbreak;\ncase 4:return 42;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:return 11;\nbreak;\ncase 8:/* skip whitespace */\nbreak;\ncase 9:return 9;\nbreak;\ncase 10:return 39;\nbreak;\ncase 11:return 4;\nbreak;\ncase 12: this.begin(\"block\"); return 20; \nbreak;\ncase 13:/* skip whitespace in block */\nbreak;\ncase 14:return 30\nbreak;\ncase 15:return 29\nbreak;\ncase 16:return 28;\nbreak;\ncase 17:/* nothing */\nbreak;\ncase 18: this.popState(); return 22; \nbreak;\ncase 19:return yy_.yytext[0];\nbreak;\ncase 20:return 33;\nbreak;\ncase 21:return 34;\nbreak;\ncase 22:return 35;\nbreak;\ncase 23:return 36;\nbreak;\ncase 24:return 33;\nbreak;\ncase 25:return 34;\nbreak;\ncase 26:return 35;\nbreak;\ncase 27:return 37;\nbreak;\ncase 28:return 38;\nbreak;\ncase 29:return 37;\nbreak;\ncase 30:return 37;\nbreak;\ncase 31:return 23;\nbreak;\ncase 32:return yy_.yytext[0];\nbreak;\ncase 33:return 6;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:[\\s]+)/i,/^(?:\"[^\"]*\")/i,/^(?:erDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\s+)/i,/^(?:(?:PK)|(?:FK))/i,/^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i,/^(?:\"[^\"]*\")/i,/^(?:[\\n]+)/i,/^(?:\\})/i,/^(?:.)/i,/^(?:\\|o\\b)/i,/^(?:\\}o\\b)/i,/^(?:\\}\\|)/i,/^(?:\\|\\|)/i,/^(?:o\\|)/i,/^(?:o\\{)/i,/^(?:\\|\\{)/i,/^(?:\\.\\.)/i,/^(?:--)/i,/^(?:\\.-)/i,/^(?:-\\.)/i,/^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i,/^(?:.)/i,/^(?:$)/i],\nconditions: {\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"block\":{\"rules\":[13,14,15,16,17,18,19],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,20,21,22,23,24,25,26,27,28,29,30,31,32,33],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,9],$V1=[1,7],$V2=[1,6],$V3=[1,8],$V4=[1,20,21,22,23,38,47,76,77,78,79,80,81,95,96,99,100,101,103,104,110,111,112,113,114,115,116,117,118,119],$V5=[2,10],$V6=[1,20],$V7=[1,21],$V8=[1,22],$V9=[1,23],$Va=[1,30],$Vb=[1,59],$Vc=[1,33],$Vd=[1,34],$Ve=[1,35],$Vf=[1,36],$Vg=[1,37],$Vh=[1,53],$Vi=[1,48],$Vj=[1,50],$Vk=[1,45],$Vl=[1,49],$Vm=[1,52],$Vn=[1,56],$Vo=[1,57],$Vp=[1,38],$Vq=[1,39],$Vr=[1,40],$Vs=[1,41],$Vt=[1,58],$Vu=[1,47],$Vv=[1,51],$Vw=[1,54],$Vx=[1,55],$Vy=[1,46],$Vz=[1,62],$VA=[1,67],$VB=[1,20,21,22,23,38,42,47,76,77,78,79,80,81,95,96,99,100,101,103,104,110,111,112,113,114,115,116,117,118,119],$VC=[1,71],$VD=[1,70],$VE=[1,72],$VF=[20,21,23,70,71],$VG=[1,93],$VH=[1,98],$VI=[1,95],$VJ=[1,100],$VK=[1,103],$VL=[1,101],$VM=[1,102],$VN=[1,96],$VO=[1,108],$VP=[1,107],$VQ=[1,97],$VR=[1,99],$VS=[1,104],$VT=[1,105],$VU=[1,106],$VV=[1,109],$VW=[20,21,22,23,70,71],$VX=[20,21,22,23,48,70,71],$VY=[20,21,22,23,40,47,48,50,52,54,56,58,60,62,63,65,70,71,81,95,96,99,100,101,103,104,114,115,116,117,118,119],$VZ=[20,21,23],$V_=[20,21,23,47,70,71,81,95,96,99,100,101,103,104,114,115,116,117,118,119],$V$=[1,12,20,21,22,23,24,38,42,47,76,77,78,79,80,81,95,96,99,100,101,103,104,110,111,112,113,114,115,116,117,118,119],$V01=[47,81,95,96,99,100,101,103,104,114,115,116,117,118,119],$V11=[1,141],$V21=[1,149],$V31=[1,150],$V41=[1,151],$V51=[1,152],$V61=[1,136],$V71=[1,137],$V81=[1,133],$V91=[1,144],$Va1=[1,145],$Vb1=[1,146],$Vc1=[1,147],$Vd1=[1,148],$Ve1=[1,153],$Vf1=[1,154],$Vg1=[1,139],$Vh1=[1,142],$Vi1=[1,138],$Vj1=[1,135],$Vk1=[20,21,22,23,38,42,47,76,77,78,79,80,81,95,96,99,100,101,103,104,110,111,112,113,114,115,116,117,118,119],$Vl1=[1,157],$Vm1=[20,21,22,23,26,47,81,95,96,99,100,101,103,104,114,115,116,117,118,119],$Vn1=[20,21,22,23,24,26,38,40,41,42,47,51,53,55,57,59,61,62,64,66,70,71,72,76,77,78,79,80,81,82,85,95,96,99,100,101,103,104,105,106,114,115,116,117,118,119],$Vo1=[12,21,22,24],$Vp1=[22,96],$Vq1=[1,238],$Vr1=[1,242],$Vs1=[1,239],$Vt1=[1,236],$Vu1=[1,233],$Vv1=[1,234],$Vw1=[1,235],$Vx1=[1,237],$Vy1=[1,240],$Vz1=[1,241],$VA1=[1,243],$VB1=[1,260],$VC1=[20,21,23,96],$VD1=[20,21,22,23,76,92,95,96,99,100,101,102,103,104,105];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"directive\":5,\"openDirective\":6,\"typeDirective\":7,\"closeDirective\":8,\"separator\":9,\":\":10,\"argDirective\":11,\"open_directive\":12,\"type_directive\":13,\"arg_directive\":14,\"close_directive\":15,\"graphConfig\":16,\"document\":17,\"line\":18,\"statement\":19,\"SEMI\":20,\"NEWLINE\":21,\"SPACE\":22,\"EOF\":23,\"GRAPH\":24,\"NODIR\":25,\"DIR\":26,\"FirstStmtSeperator\":27,\"ending\":28,\"endToken\":29,\"spaceList\":30,\"spaceListNewline\":31,\"verticeStatement\":32,\"styleStatement\":33,\"linkStyleStatement\":34,\"classDefStatement\":35,\"classStatement\":36,\"clickStatement\":37,\"subgraph\":38,\"text\":39,\"SQS\":40,\"SQE\":41,\"end\":42,\"direction\":43,\"link\":44,\"node\":45,\"vertex\":46,\"AMP\":47,\"STYLE_SEPARATOR\":48,\"idString\":49,\"PS\":50,\"PE\":51,\"(-\":52,\"-)\":53,\"STADIUMSTART\":54,\"STADIUMEND\":55,\"SUBROUTINESTART\":56,\"SUBROUTINEEND\":57,\"CYLINDERSTART\":58,\"CYLINDEREND\":59,\"DIAMOND_START\":60,\"DIAMOND_STOP\":61,\"TAGEND\":62,\"TRAPSTART\":63,\"TRAPEND\":64,\"INVTRAPSTART\":65,\"INVTRAPEND\":66,\"linkStatement\":67,\"arrowText\":68,\"TESTSTR\":69,\"START_LINK\":70,\"LINK\":71,\"PIPE\":72,\"textToken\":73,\"STR\":74,\"keywords\":75,\"STYLE\":76,\"LINKSTYLE\":77,\"CLASSDEF\":78,\"CLASS\":79,\"CLICK\":80,\"DOWN\":81,\"UP\":82,\"textNoTags\":83,\"textNoTagsToken\":84,\"DEFAULT\":85,\"stylesOpt\":86,\"alphaNum\":87,\"CALLBACKNAME\":88,\"CALLBACKARGS\":89,\"HREF\":90,\"LINK_TARGET\":91,\"HEX\":92,\"numList\":93,\"INTERPOLATE\":94,\"NUM\":95,\"COMMA\":96,\"style\":97,\"styleComponent\":98,\"ALPHA\":99,\"COLON\":100,\"MINUS\":101,\"UNIT\":102,\"BRKT\":103,\"DOT\":104,\"PCT\":105,\"TAGSTART\":106,\"alphaNumToken\":107,\"idStringToken\":108,\"alphaNumStatement\":109,\"direction_tb\":110,\"direction_bt\":111,\"direction_rl\":112,\"direction_lr\":113,\"PUNCTUATION\":114,\"UNICODE_TEXT\":115,\"PLUS\":116,\"EQUALS\":117,\"MULT\":118,\"UNDERSCORE\":119,\"graphCodeTokens\":120,\"ARROW_CROSS\":121,\"ARROW_POINT\":122,\"ARROW_CIRCLE\":123,\"ARROW_OPEN\":124,\"QUOTE\":125,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",10:\":\",12:\"open_directive\",13:\"type_directive\",14:\"arg_directive\",15:\"close_directive\",20:\"SEMI\",21:\"NEWLINE\",22:\"SPACE\",23:\"EOF\",24:\"GRAPH\",25:\"NODIR\",26:\"DIR\",38:\"subgraph\",40:\"SQS\",41:\"SQE\",42:\"end\",47:\"AMP\",48:\"STYLE_SEPARATOR\",50:\"PS\",51:\"PE\",52:\"(-\",53:\"-)\",54:\"STADIUMSTART\",55:\"STADIUMEND\",56:\"SUBROUTINESTART\",57:\"SUBROUTINEEND\",58:\"CYLINDERSTART\",59:\"CYLINDEREND\",60:\"DIAMOND_START\",61:\"DIAMOND_STOP\",62:\"TAGEND\",63:\"TRAPSTART\",64:\"TRAPEND\",65:\"INVTRAPSTART\",66:\"INVTRAPEND\",69:\"TESTSTR\",70:\"START_LINK\",71:\"LINK\",72:\"PIPE\",74:\"STR\",76:\"STYLE\",77:\"LINKSTYLE\",78:\"CLASSDEF\",79:\"CLASS\",80:\"CLICK\",81:\"DOWN\",82:\"UP\",85:\"DEFAULT\",88:\"CALLBACKNAME\",89:\"CALLBACKARGS\",90:\"HREF\",91:\"LINK_TARGET\",92:\"HEX\",94:\"INTERPOLATE\",95:\"NUM\",96:\"COMMA\",99:\"ALPHA\",100:\"COLON\",101:\"MINUS\",102:\"UNIT\",103:\"BRKT\",104:\"DOT\",105:\"PCT\",106:\"TAGSTART\",110:\"direction_tb\",111:\"direction_bt\",112:\"direction_rl\",113:\"direction_lr\",114:\"PUNCTUATION\",115:\"UNICODE_TEXT\",116:\"PLUS\",117:\"EQUALS\",118:\"MULT\",119:\"UNDERSCORE\",121:\"ARROW_CROSS\",122:\"ARROW_POINT\",123:\"ARROW_CIRCLE\",124:\"ARROW_OPEN\",125:\"QUOTE\"},\nproductions_: [0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[45,1],[45,5],[45,3],[46,4],[46,6],[46,4],[46,4],[46,4],[46,4],[46,4],[46,4],[46,6],[46,4],[46,4],[46,4],[46,4],[46,4],[46,1],[44,2],[44,3],[44,3],[44,1],[44,3],[67,1],[68,3],[39,1],[39,2],[39,1],[75,1],[75,1],[75,1],[75,1],[75,1],[75,1],[75,1],[75,1],[75,1],[75,1],[75,1],[83,1],[83,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[93,1],[93,3],[86,1],[86,3],[97,1],[97,2],[98,1],[98,1],[98,1],[98,1],[98,1],[98,1],[98,1],[98,1],[98,1],[98,1],[98,1],[73,1],[73,1],[73,1],[73,1],[73,1],[73,1],[84,1],[84,1],[84,1],[84,1],[49,1],[49,2],[87,1],[87,2],[109,1],[109,1],[109,1],[109,1],[43,1],[43,1],[43,1],[43,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 5:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 6:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 7:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 8:\n yy.parseDirective('}%%', 'close_directive', 'flowchart'); \nbreak;\ncase 10:\n this.$ = [];\nbreak;\ncase 11:\n\r\n\t if($$[$0] !== []){\r\n\t $$[$0-1].push($$[$0]);\r\n\t }\r\n\t this.$=$$[$0-1];\nbreak;\ncase 12: case 77: case 79: case 91: case 147: case 149: case 150:\nthis.$=$$[$0];\nbreak;\ncase 19:\n yy.setDirection('TB');this.$ = 'TB';\nbreak;\ncase 20:\n yy.setDirection($$[$0-1]);this.$ = $$[$0-1];\nbreak;\ncase 35:\n /* console.warn('finat vs', $$[$0-1].nodes); */ this.$=$$[$0-1].nodes\nbreak;\ncase 36: case 37: case 38: case 39: case 40:\nthis.$=[];\nbreak;\ncase 41:\nthis.$=yy.addSubGraph($$[$0-6],$$[$0-1],$$[$0-4]);\nbreak;\ncase 42:\nthis.$=yy.addSubGraph($$[$0-3],$$[$0-1],$$[$0-3]);\nbreak;\ncase 43:\nthis.$=yy.addSubGraph(undefined,$$[$0-1],undefined);\nbreak;\ncase 48:\n /* console.warn('vs',$$[$0-2].stmt,$$[$0]); */ yy.addLink($$[$0-2].stmt,$$[$0],$$[$0-1]); this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0-2].nodes) } \nbreak;\ncase 49:\n /* console.warn('vs',$$[$0-3].stmt,$$[$0-1]); */ yy.addLink($$[$0-3].stmt,$$[$0-1],$$[$0-2]); this.$ = { stmt: $$[$0-1], nodes: $$[$0-1].concat($$[$0-3].nodes) } \nbreak;\ncase 50:\n/*console.warn('noda', $$[$0-1]);*/ this.$ = {stmt: $$[$0-1], nodes:$$[$0-1] }\nbreak;\ncase 51:\n /*console.warn('noda', $$[$0]);*/ this.$ = {stmt: $$[$0], nodes:$$[$0] }\nbreak;\ncase 52:\n /* console.warn('nod', $$[$0]); */ this.$ = [$$[$0]];\nbreak;\ncase 53:\n this.$ = $$[$0-4].concat($$[$0]); /* console.warn('pip', $$[$0-4][0], $$[$0], this.$); */ \nbreak;\ncase 54:\nthis.$ = [$$[$0-2]];yy.setClass($$[$0-2],$$[$0])\nbreak;\ncase 55:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');\nbreak;\ncase 56:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');\nbreak;\ncase 57:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');\nbreak;\ncase 58:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'stadium');\nbreak;\ncase 59:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'subroutine');\nbreak;\ncase 60:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'cylinder');\nbreak;\ncase 61:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');\nbreak;\ncase 62:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');\nbreak;\ncase 63:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'hexagon');\nbreak;\ncase 64:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');\nbreak;\ncase 65:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'trapezoid');\nbreak;\ncase 66:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'inv_trapezoid');\nbreak;\ncase 67:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_right');\nbreak;\ncase 68:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_left');\nbreak;\ncase 69:\n /*console.warn('h: ', $$[$0]);*/this.$ = $$[$0];yy.addVertex($$[$0]);\nbreak;\ncase 70:\n$$[$0-1].text = $$[$0];this.$ = $$[$0-1];\nbreak;\ncase 71: case 72:\n$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];\nbreak;\ncase 73:\nthis.$ = $$[$0];\nbreak;\ncase 74:\nvar inf = yy.destructLink($$[$0], $$[$0-2]); this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length,\"text\":$$[$0-1]};\nbreak;\ncase 75:\nvar inf = yy.destructLink($$[$0]);this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length};\nbreak;\ncase 76:\nthis.$ = $$[$0-1];\nbreak;\ncase 78: case 92: case 148:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\ncase 93: case 94:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 95:\nthis.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);\nbreak;\ncase 96: case 104:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 97: case 105:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 98:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 99:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-4], $$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-4], $$[$0]);\nbreak;\ncase 100: case 106:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 101: case 107:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 102: case 108:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);\nbreak;\ncase 103: case 109:\nthis.$ = $$[$0-5];yy.setLink($$[$0-5], $$[$0-4], $$[$0]);yy.setTooltip($$[$0-5], $$[$0-2]);\nbreak;\ncase 110:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);\nbreak;\ncase 111: case 113:\nthis.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);\nbreak;\ncase 112:\nthis.$ = $$[$0-4];yy.updateLink([$$[$0-2]],$$[$0]);\nbreak;\ncase 114:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate([$$[$0-6]],$$[$0-2]);yy.updateLink([$$[$0-6]],$$[$0]);\nbreak;\ncase 115:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);\nbreak;\ncase 116:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate([$$[$0-4]],$$[$0]);\nbreak;\ncase 117:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);\nbreak;\ncase 118: case 120:\nthis.$ = [$$[$0]]\nbreak;\ncase 119: case 121:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 123:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\ncase 145:\nthis.$=$$[$0]\nbreak;\ncase 146:\nthis.$=$$[$0-1]+''+$$[$0]\nbreak;\ncase 151:\nthis.$='v';\nbreak;\ncase 152:\nthis.$='-';\nbreak;\ncase 153:\n this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 154:\n this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 155:\n this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 156:\n this.$={stmt:'dir', value:'LR'};\nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},o($V4,$V5,{17:11}),{7:12,13:[1,13]},{16:14,21:$V1,22:$V2,24:$V3},{16:15,21:$V1,22:$V2,24:$V3},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,43:31,45:32,46:42,47:$Vb,49:43,76:$Vc,77:$Vd,78:$Ve,79:$Vf,80:$Vg,81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,108:44,110:$Vp,111:$Vq,112:$Vr,113:$Vs,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy},{8:60,10:[1,61],15:$Vz},o([10,15],[2,6]),o($V4,[2,17]),o($V4,[2,18]),o($V4,[2,19]),{20:[1,64],21:[1,65],22:$VA,27:63,30:66},o($VB,[2,11]),o($VB,[2,12]),o($VB,[2,13]),o($VB,[2,14]),o($VB,[2,15]),o($VB,[2,16]),{9:68,20:$VC,21:$VD,23:$VE,44:69,67:73,70:[1,74],71:[1,75]},{9:76,20:$VC,21:$VD,23:$VE},{9:77,20:$VC,21:$VD,23:$VE},{9:78,20:$VC,21:$VD,23:$VE},{9:79,20:$VC,21:$VD,23:$VE},{9:80,20:$VC,21:$VD,23:$VE},{9:82,20:$VC,21:$VD,22:[1,81],23:$VE},o($VB,[2,44]),o($VF,[2,51],{30:83,22:$VA}),{22:[1,84]},{22:[1,85]},{22:[1,86]},{22:[1,87]},{26:$VG,47:$VH,74:[1,91],81:$VI,87:90,88:[1,88],90:[1,89],95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:92,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($VB,[2,153]),o($VB,[2,154]),o($VB,[2,155]),o($VB,[2,156]),o($VW,[2,52],{48:[1,110]}),o($VX,[2,69],{108:121,40:[1,111],47:$Vb,50:[1,112],52:[1,113],54:[1,114],56:[1,115],58:[1,116],60:[1,117],62:[1,118],63:[1,119],65:[1,120],81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy}),o($VY,[2,145]),o($VY,[2,170]),o($VY,[2,171]),o($VY,[2,172]),o($VY,[2,173]),o($VY,[2,174]),o($VY,[2,175]),o($VY,[2,176]),o($VY,[2,177]),o($VY,[2,178]),o($VY,[2,179]),o($VY,[2,180]),o($VY,[2,181]),o($VY,[2,182]),o($VY,[2,183]),o($VY,[2,184]),{9:122,20:$VC,21:$VD,23:$VE},{11:123,14:[1,124]},o($VZ,[2,8]),o($V4,[2,20]),o($V4,[2,26]),o($V4,[2,27]),{21:[1,125]},o($V_,[2,34],{30:126,22:$VA}),o($VB,[2,35]),{45:127,46:42,47:$Vb,49:43,81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,108:44,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy},o($V$,[2,45]),o($V$,[2,46]),o($V$,[2,47]),o($V01,[2,73],{68:128,69:[1,129],72:[1,130]}),{22:$V11,24:$V21,26:$V31,38:$V41,39:131,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o([47,69,72,81,95,96,99,100,101,103,104,114,115,116,117,118,119],[2,75]),o($VB,[2,36]),o($VB,[2,37]),o($VB,[2,38]),o($VB,[2,39]),o($VB,[2,40]),{22:$V11,24:$V21,26:$V31,38:$V41,39:155,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($Vk1,$V5,{17:156}),o($VF,[2,50],{47:$Vl1}),{26:$VG,47:$VH,81:$VI,87:158,92:[1,159],95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:92,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{85:[1,160],93:161,95:[1,162]},{26:$VG,47:$VH,81:$VI,85:[1,163],87:164,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:92,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{26:$VG,47:$VH,81:$VI,87:165,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:92,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($VZ,[2,96],{22:[1,166],89:[1,167]}),o($VZ,[2,100],{22:[1,168]}),o($VZ,[2,104],{107:94,109:170,22:[1,169],26:$VG,47:$VH,81:$VI,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV}),o($VZ,[2,106],{22:[1,171]}),o($Vm1,[2,147]),o($Vm1,[2,149]),o($Vm1,[2,150]),o($Vm1,[2,151]),o($Vm1,[2,152]),o($Vn1,[2,157]),o($Vn1,[2,158]),o($Vn1,[2,159]),o($Vn1,[2,160]),o($Vn1,[2,161]),o($Vn1,[2,162]),o($Vn1,[2,163]),o($Vn1,[2,164]),o($Vn1,[2,165]),o($Vn1,[2,166]),o($Vn1,[2,167]),o($Vn1,[2,168]),o($Vn1,[2,169]),{47:$Vb,49:172,81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,108:44,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy},{22:$V11,24:$V21,26:$V31,38:$V41,39:173,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:175,42:$V51,47:$VH,50:[1,174],62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:176,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:177,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:178,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:179,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:180,42:$V51,47:$VH,60:[1,181],62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:182,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:183,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:184,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($VY,[2,146]),o($Vo1,[2,3]),{8:185,15:$Vz},{15:[2,7]},o($V4,[2,28]),o($V_,[2,33]),o($VF,[2,48],{30:186,22:$VA}),o($V01,[2,70],{22:[1,187]}),{22:[1,188]},{22:$V11,24:$V21,26:$V31,38:$V41,39:189,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,62:$V61,70:$V71,71:[1,190],73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($Vn1,[2,77]),o($Vn1,[2,79]),o($Vn1,[2,135]),o($Vn1,[2,136]),o($Vn1,[2,137]),o($Vn1,[2,138]),o($Vn1,[2,139]),o($Vn1,[2,140]),o($Vn1,[2,141]),o($Vn1,[2,142]),o($Vn1,[2,143]),o($Vn1,[2,144]),o($Vn1,[2,80]),o($Vn1,[2,81]),o($Vn1,[2,82]),o($Vn1,[2,83]),o($Vn1,[2,84]),o($Vn1,[2,85]),o($Vn1,[2,86]),o($Vn1,[2,87]),o($Vn1,[2,88]),o($Vn1,[2,89]),o($Vn1,[2,90]),{9:193,20:$VC,21:$VD,22:$V11,23:$VE,24:$V21,26:$V31,38:$V41,40:[1,192],42:$V51,47:$VH,62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,194],43:31,45:32,46:42,47:$Vb,49:43,76:$Vc,77:$Vd,78:$Ve,79:$Vf,80:$Vg,81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,108:44,110:$Vp,111:$Vq,112:$Vr,113:$Vs,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy},{22:$VA,30:195},{22:[1,196],26:$VG,47:$VH,81:$VI,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:170,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:[1,197]},{22:[1,198]},{22:[1,199],96:[1,200]},o($Vp1,[2,118]),{22:[1,201]},{22:[1,202],26:$VG,47:$VH,81:$VI,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:170,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:[1,203],26:$VG,47:$VH,81:$VI,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:170,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{74:[1,204]},o($VZ,[2,98],{22:[1,205]}),{74:[1,206],91:[1,207]},{74:[1,208]},o($Vm1,[2,148]),{74:[1,209],91:[1,210]},o($VW,[2,54],{108:121,47:$Vb,81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy}),{22:$V11,24:$V21,26:$V31,38:$V41,41:[1,211],42:$V51,47:$VH,62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:212,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,51:[1,213],62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,53:[1,214],62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,55:[1,215],62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,57:[1,216],62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,59:[1,217],62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,61:[1,218],62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:219,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,41:[1,220],42:$V51,47:$VH,62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,62:$V61,64:[1,221],66:[1,222],70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,62:$V61,64:[1,224],66:[1,223],70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{9:225,20:$VC,21:$VD,23:$VE},o($VF,[2,49],{47:$Vl1}),o($V01,[2,72]),o($V01,[2,71]),{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,62:$V61,70:$V71,72:[1,226],73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($V01,[2,74]),o($Vn1,[2,78]),{22:$V11,24:$V21,26:$V31,38:$V41,39:227,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($Vk1,$V5,{17:228}),o($VB,[2,43]),{46:229,47:$Vb,49:43,81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,108:44,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy},{22:$Vq1,76:$Vr1,86:230,92:$Vs1,95:$Vt1,97:231,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},{22:$Vq1,76:$Vr1,86:244,92:$Vs1,95:$Vt1,97:231,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},{22:$Vq1,76:$Vr1,86:245,92:$Vs1,94:[1,246],95:$Vt1,97:231,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},{22:$Vq1,76:$Vr1,86:247,92:$Vs1,94:[1,248],95:$Vt1,97:231,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},{95:[1,249]},{22:$Vq1,76:$Vr1,86:250,92:$Vs1,95:$Vt1,97:231,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},{22:$Vq1,76:$Vr1,86:251,92:$Vs1,95:$Vt1,97:231,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},{26:$VG,47:$VH,81:$VI,87:252,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:92,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($VZ,[2,97]),{74:[1,253]},o($VZ,[2,101],{22:[1,254]}),o($VZ,[2,102]),o($VZ,[2,105]),o($VZ,[2,107],{22:[1,255]}),o($VZ,[2,108]),o($VX,[2,55]),{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,51:[1,256],62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($VX,[2,61]),o($VX,[2,57]),o($VX,[2,58]),o($VX,[2,59]),o($VX,[2,60]),o($VX,[2,62]),{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,61:[1,257],62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($VX,[2,64]),o($VX,[2,65]),o($VX,[2,67]),o($VX,[2,66]),o($VX,[2,68]),o($Vo1,[2,4]),o([22,47,81,95,96,99,100,101,103,104,114,115,116,117,118,119],[2,76]),{22:$V11,24:$V21,26:$V31,38:$V41,41:[1,258],42:$V51,47:$VH,62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,259],43:31,45:32,46:42,47:$Vb,49:43,76:$Vc,77:$Vd,78:$Ve,79:$Vf,80:$Vg,81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,108:44,110:$Vp,111:$Vq,112:$Vr,113:$Vs,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy},o($VW,[2,53]),o($VZ,[2,110],{96:$VB1}),o($VC1,[2,120],{98:261,22:$Vq1,76:$Vr1,92:$Vs1,95:$Vt1,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1}),o($VD1,[2,122]),o($VD1,[2,124]),o($VD1,[2,125]),o($VD1,[2,126]),o($VD1,[2,127]),o($VD1,[2,128]),o($VD1,[2,129]),o($VD1,[2,130]),o($VD1,[2,131]),o($VD1,[2,132]),o($VD1,[2,133]),o($VD1,[2,134]),o($VZ,[2,111],{96:$VB1}),o($VZ,[2,112],{96:$VB1}),{22:[1,262]},o($VZ,[2,113],{96:$VB1}),{22:[1,263]},o($Vp1,[2,119]),o($VZ,[2,93],{96:$VB1}),o($VZ,[2,94],{96:$VB1}),o($VZ,[2,95],{107:94,109:170,26:$VG,47:$VH,81:$VI,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV}),o($VZ,[2,99]),{91:[1,264]},{91:[1,265]},{51:[1,266]},{61:[1,267]},{9:268,20:$VC,21:$VD,23:$VE},o($VB,[2,42]),{22:$Vq1,76:$Vr1,92:$Vs1,95:$Vt1,97:269,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},o($VD1,[2,123]),{26:$VG,47:$VH,81:$VI,87:270,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:92,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{26:$VG,47:$VH,81:$VI,87:271,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:92,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($VZ,[2,103]),o($VZ,[2,109]),o($VX,[2,56]),o($VX,[2,63]),o($Vk1,$V5,{17:272}),o($VC1,[2,121],{98:261,22:$Vq1,76:$Vr1,92:$Vs1,95:$Vt1,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1}),o($VZ,[2,116],{107:94,109:170,22:[1,273],26:$VG,47:$VH,81:$VI,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV}),o($VZ,[2,117],{107:94,109:170,22:[1,274],26:$VG,47:$VH,81:$VI,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV}),{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,275],43:31,45:32,46:42,47:$Vb,49:43,76:$Vc,77:$Vd,78:$Ve,79:$Vf,80:$Vg,81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,108:44,110:$Vp,111:$Vq,112:$Vr,113:$Vs,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy},{22:$Vq1,76:$Vr1,86:276,92:$Vs1,95:$Vt1,97:231,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},{22:$Vq1,76:$Vr1,86:277,92:$Vs1,95:$Vt1,97:231,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},o($VB,[2,41]),o($VZ,[2,114],{96:$VB1}),o($VZ,[2,115],{96:$VB1})],\ndefaultActions: {2:[2,1],9:[2,5],10:[2,2],124:[2,7]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 12; \nbreak;\ncase 1: this.begin('type_directive'); return 13; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 10; \nbreak;\ncase 3: this.popState(); this.popState(); return 15; \nbreak;\ncase 4:return 14;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:this.begin(\"string\");\nbreak;\ncase 8:this.popState();\nbreak;\ncase 9:return \"STR\";\nbreak;\ncase 10:return 76;\nbreak;\ncase 11:return 85;\nbreak;\ncase 12:return 77;\nbreak;\ncase 13:return 94;\nbreak;\ncase 14:return 78;\nbreak;\ncase 15:return 79;\nbreak;\ncase 16:this.begin(\"href\");\nbreak;\ncase 17:this.popState();\nbreak;\ncase 18:return 90;\nbreak;\ncase 19:this.begin(\"callbackname\");\nbreak;\ncase 20:this.popState();\nbreak;\ncase 21:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 22:return 88;\nbreak;\ncase 23:this.popState();\nbreak;\ncase 24:return 89;\nbreak;\ncase 25:this.begin(\"click\");\nbreak;\ncase 26:this.popState();\nbreak;\ncase 27:return 80;\nbreak;\ncase 28:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 29:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 30:return 38;\nbreak;\ncase 31:return 42;\nbreak;\ncase 32:return 91;\nbreak;\ncase 33:return 91;\nbreak;\ncase 34:return 91;\nbreak;\ncase 35:return 91;\nbreak;\ncase 36: this.popState(); return 25; \nbreak;\ncase 37: this.popState(); return 26; \nbreak;\ncase 38: this.popState(); return 26; \nbreak;\ncase 39: this.popState(); return 26; \nbreak;\ncase 40: this.popState(); return 26; \nbreak;\ncase 41: this.popState(); return 26; \nbreak;\ncase 42: this.popState(); return 26; \nbreak;\ncase 43: this.popState(); return 26; \nbreak;\ncase 44: this.popState(); return 26; \nbreak;\ncase 45: this.popState(); return 26; \nbreak;\ncase 46: this.popState(); return 26; \nbreak;\ncase 47:return 110;\nbreak;\ncase 48:return 111;\nbreak;\ncase 49:return 112;\nbreak;\ncase 50:return 113;\nbreak;\ncase 51: return 95;\nbreak;\ncase 52:return 103;\nbreak;\ncase 53:return 48;\nbreak;\ncase 54:return 100;\nbreak;\ncase 55:return 47;\nbreak;\ncase 56:return 20;\nbreak;\ncase 57:return 96;\nbreak;\ncase 58:return 118;\nbreak;\ncase 59:return 71;\nbreak;\ncase 60:return 71;\nbreak;\ncase 61:return 71;\nbreak;\ncase 62:return 70;\nbreak;\ncase 63:return 70;\nbreak;\ncase 64:return 70;\nbreak;\ncase 65:return 52;\nbreak;\ncase 66:return 53;\nbreak;\ncase 67:return 54;\nbreak;\ncase 68:return 55;\nbreak;\ncase 69:return 56;\nbreak;\ncase 70:return 57;\nbreak;\ncase 71:return 58;\nbreak;\ncase 72:return 59;\nbreak;\ncase 73:return 101;\nbreak;\ncase 74:return 104;\nbreak;\ncase 75:return 119;\nbreak;\ncase 76:return 116;\nbreak;\ncase 77:return 105;\nbreak;\ncase 78:return 117;\nbreak;\ncase 79:return 117;\nbreak;\ncase 80:return 106;\nbreak;\ncase 81:return 62;\nbreak;\ncase 82:return 82;\nbreak;\ncase 83:return 'SEP';\nbreak;\ncase 84:return 81;\nbreak;\ncase 85:return 99;\nbreak;\ncase 86:return 64;\nbreak;\ncase 87:return 63;\nbreak;\ncase 88:return 66;\nbreak;\ncase 89:return 65;\nbreak;\ncase 90:return 114;\nbreak;\ncase 91:return 115;\nbreak;\ncase 92:return 72;\nbreak;\ncase 93:return 50;\nbreak;\ncase 94:return 51;\nbreak;\ncase 95:return 40;\nbreak;\ncase 96:return 41;\nbreak;\ncase 97:return 60\nbreak;\ncase 98:return 61\nbreak;\ncase 99:return 125;\nbreak;\ncase 100:return 21;\nbreak;\ncase 101:return 22;\nbreak;\ncase 102:return 23;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/,/^(?:((?:(?!\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\}%%)/,/^(?:((?:(?!\\}%%).|\\n)*))/,/^(?:%%(?!\\{)[^\\n]*)/,/^(?:[^\\}]%%[^\\n]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:style\\b)/,/^(?:default\\b)/,/^(?:linkStyle\\b)/,/^(?:interpolate\\b)/,/^(?:classDef\\b)/,/^(?:class\\b)/,/^(?:href[\\s]+[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:click[\\s]+)/,/^(?:[\\s\\n])/,/^(?:[^\\s\\n]*)/,/^(?:graph\\b)/,/^(?:flowchart\\b)/,/^(?:subgraph\\b)/,/^(?:end\\b\\s*)/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:(\\r?\\n)*\\s*\\n)/,/^(?:\\s*LR\\b)/,/^(?:\\s*RL\\b)/,/^(?:\\s*TB\\b)/,/^(?:\\s*BT\\b)/,/^(?:\\s*TD\\b)/,/^(?:\\s*BR\\b)/,/^(?:\\s*<)/,/^(?:\\s*>)/,/^(?:\\s*\\^)/,/^(?:\\s*v\\b)/,/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\\*)/,/^(?:\\s*[xo<]?--+[-xo>]\\s*)/,/^(?:\\s*[xo<]?==+[=xo>]\\s*)/,/^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/,/^(?:\\s*[xo<]?--\\s*)/,/^(?:\\s*[xo<]?==\\s*)/,/^(?:\\s*[xo<]?-\\.\\s*)/,/^(?:\\(-)/,/^(?:-\\))/,/^(?:\\(\\[)/,/^(?:\\]\\))/,/^(?:\\[\\[)/,/^(?:\\]\\])/,/^(?:\\[\\()/,/^(?:\\)\\])/,/^(?:-)/,/^(?:\\.)/,/^(?:[\\_])/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\\^)/,/^(?:\\\\\\|)/,/^(?:v\\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\\\\])/,/^(?:\\[\\/)/,/^(?:\\/\\])/,/^(?:\\[\\\\)/,/^(?:[!\"#$%&'*+,-.`?\\\\_/])/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\|)/,/^(?:\\()/,/^(?:\\))/,/^(?:\\[)/,/^(?:\\])/,/^(?:\\{)/,/^(?:\\})/,/^(?:\")/,/^(?:(\\r?\\n)+)/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"callbackargs\":{\"rules\":[23,24],\"inclusive\":false},\"callbackname\":{\"rules\":[20,21,22],\"inclusive\":false},\"href\":{\"rules\":[17,18],\"inclusive\":false},\"click\":{\"rules\":[26,27],\"inclusive\":false},\"vertex\":{\"rules\":[],\"inclusive\":false},\"dir\":{\"rules\":[36,37,38,39,40,41,42,43,44,45,46],\"inclusive\":false},\"string\":{\"rules\":[8,9],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,10,11,12,13,14,15,16,19,25,28,29,30,31,32,33,34,35,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,5],$V2=[7,9,11,12,13,14,15,16,17,18,19,20,22,29,34],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,18],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,23],$Vc=[1,25],$Vd=[1,27],$Ve=[1,30],$Vf=[5,7,9,11,12,13,14,15,16,17,18,19,20,22,29,34];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"gantt\":5,\"document\":6,\"EOF\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NL\":11,\"dateFormat\":12,\"inclusiveEndDates\":13,\"topAxis\":14,\"axisFormat\":15,\"excludes\":16,\"includes\":17,\"todayMarker\":18,\"title\":19,\"section\":20,\"clickStatement\":21,\"taskTxt\":22,\"taskData\":23,\"openDirective\":24,\"typeDirective\":25,\"closeDirective\":26,\":\":27,\"argDirective\":28,\"click\":29,\"callbackname\":30,\"callbackargs\":31,\"href\":32,\"clickStatementDebug\":33,\"open_directive\":34,\"type_directive\":35,\"arg_directive\":36,\"close_directive\":37,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"gantt\",7:\"EOF\",9:\"SPACE\",11:\"NL\",12:\"dateFormat\",13:\"inclusiveEndDates\",14:\"topAxis\",15:\"axisFormat\",16:\"excludes\",17:\"includes\",18:\"todayMarker\",19:\"title\",20:\"section\",22:\"taskTxt\",23:\"taskData\",27:\":\",29:\"click\",30:\"callbackname\",31:\"callbackargs\",32:\"href\",34:\"open_directive\",35:\"type_directive\",36:\"arg_directive\",37:\"close_directive\"},\nproductions_: [0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[21,2],[21,3],[21,3],[21,4],[21,3],[21,4],[21,2],[33,2],[33,3],[33,3],[33,4],[33,3],[33,4],[33,2],[24,1],[25,1],[28,1],[26,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 2:\n return $$[$0-1]; \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 9:\nyy.setDateFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 10:\nyy.enableInclusiveEndDates();this.$=$$[$0].substr(18);\nbreak;\ncase 11:\nyy.TopAxis();this.$=$$[$0].substr(8);\nbreak;\ncase 12:\nyy.setAxisFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 13:\nyy.setExcludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 14:\nyy.setIncludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 15:\nyy.setTodayMarker($$[$0].substr(12));this.$=$$[$0].substr(12);\nbreak;\ncase 16:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 17:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 19:\nyy.addTask($$[$0-1],$$[$0]);this.$='task';\nbreak;\ncase 23:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0], null);\nbreak;\ncase 24:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 25:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], null);yy.setLink($$[$0-2],$$[$0]);\nbreak;\ncase 26:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setLink($$[$0-3],$$[$0]);\nbreak;\ncase 27:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0], null);yy.setLink($$[$0-2],$$[$0-1]);\nbreak;\ncase 28:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-1], $$[$0]);yy.setLink($$[$0-3],$$[$0-2]);\nbreak;\ncase 29:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 30: case 36:\nthis.$=$$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 31: case 32: case 34:\nthis.$=$$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 33: case 35:\nthis.$=$$[$0-3] + ' ' + $$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 37:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 38:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 39:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 40:\n yy.parseDirective('}%%', 'close_directive', 'gantt'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:$V0,24:4,34:$V1},{1:[3]},{3:6,4:2,5:$V0,24:4,34:$V1},o($V2,[2,3],{6:7}),{25:8,35:[1,9]},{35:[2,37]},{1:[2,1]},{4:26,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:$Va,20:$Vb,21:24,22:$Vc,24:4,29:$Vd,34:$V1},{26:28,27:[1,29],37:$Ve},o([27,37],[2,38]),o($V2,[2,8],{1:[2,2]}),o($V2,[2,4]),{4:26,10:31,12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:$Va,20:$Vb,21:24,22:$Vc,24:4,29:$Vd,34:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,9]),o($V2,[2,10]),o($V2,[2,11]),o($V2,[2,12]),o($V2,[2,13]),o($V2,[2,14]),o($V2,[2,15]),o($V2,[2,16]),o($V2,[2,17]),o($V2,[2,18]),{23:[1,32]},o($V2,[2,20]),{30:[1,33],32:[1,34]},{11:[1,35]},{28:36,36:[1,37]},{11:[2,40]},o($V2,[2,5]),o($V2,[2,19]),o($V2,[2,23],{31:[1,38],32:[1,39]}),o($V2,[2,29],{30:[1,40]}),o($Vf,[2,21]),{26:41,37:$Ve},{37:[2,39]},o($V2,[2,24],{32:[1,42]}),o($V2,[2,25]),o($V2,[2,27],{31:[1,43]}),{11:[1,44]},o($V2,[2,26]),o($V2,[2,28]),o($Vf,[2,22])],\ndefaultActions: {5:[2,37],6:[2,1],30:[2,40],37:[2,39]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 34; \nbreak;\ncase 1: this.begin('type_directive'); return 35; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 27; \nbreak;\ncase 3: this.popState(); this.popState(); return 37; \nbreak;\ncase 4:return 36;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:/* do nothing */\nbreak;\ncase 8:return 11;\nbreak;\ncase 9:/* skip whitespace */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:/* skip comments */\nbreak;\ncase 12:this.begin(\"href\");\nbreak;\ncase 13:this.popState();\nbreak;\ncase 14:return 32;\nbreak;\ncase 15:this.begin(\"callbackname\");\nbreak;\ncase 16:this.popState();\nbreak;\ncase 17:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 18:return 30;\nbreak;\ncase 19:this.popState();\nbreak;\ncase 20:return 31;\nbreak;\ncase 21:this.begin(\"click\");\nbreak;\ncase 22:this.popState();\nbreak;\ncase 23:return 29;\nbreak;\ncase 24:return 5;\nbreak;\ncase 25:return 12;\nbreak;\ncase 26:return 13;\nbreak;\ncase 27:return 14;\nbreak;\ncase 28:return 15;\nbreak;\ncase 29:return 17;\nbreak;\ncase 30:return 16;\nbreak;\ncase 31:return 18;\nbreak;\ncase 32:return 'date';\nbreak;\ncase 33:return 19;\nbreak;\ncase 34:return 20;\nbreak;\ncase 35:return 22;\nbreak;\ncase 36:return 23;\nbreak;\ncase 37:return 27;\nbreak;\ncase 38:return 7;\nbreak;\ncase 39:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)*[^\\n]*)/i,/^(?:[^\\}]%%*[^\\n]*)/i,/^(?:%%*[^\\n]*[\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:href[\\s]+[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:call[\\s]+)/i,/^(?:\\([\\s]*\\))/i,/^(?:\\()/i,/^(?:[^(]*)/i,/^(?:\\))/i,/^(?:[^)]*)/i,/^(?:click[\\s]+)/i,/^(?:[\\s\\n])/i,/^(?:[^\\s\\n]*)/i,/^(?:gantt\\b)/i,/^(?:dateFormat\\s[^#\\n;]+)/i,/^(?:inclusiveEndDates\\b)/i,/^(?:topAxis\\b)/i,/^(?:axisFormat\\s[^#\\n;]+)/i,/^(?:includes\\s[^#\\n;]+)/i,/^(?:excludes\\s[^#\\n;]+)/i,/^(?:todayMarker\\s[^\\n;]+)/i,/^(?:\\d\\d\\d\\d-\\d\\d-\\d\\d\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"callbackargs\":{\"rules\":[19,20],\"inclusive\":false},\"callbackname\":{\"rules\":[16,17,18],\"inclusive\":false},\"href\":{\"rules\":[13,14],\"inclusive\":false},\"click\":{\"rules\":[22,23],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,15,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,3],$V1=[1,7],$V2=[7,12,15,17,19,20,21],$V3=[7,11,12,15,17,19,20,21],$V4=[2,20],$V5=[1,32];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"GG\":4,\":\":5,\"document\":6,\"EOF\":7,\"DIR\":8,\"options\":9,\"body\":10,\"OPT\":11,\"NL\":12,\"line\":13,\"statement\":14,\"COMMIT\":15,\"commit_arg\":16,\"BRANCH\":17,\"ID\":18,\"CHECKOUT\":19,\"MERGE\":20,\"RESET\":21,\"reset_arg\":22,\"STR\":23,\"HEAD\":24,\"reset_parents\":25,\"CARET\":26,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"GG\",5:\":\",7:\"EOF\",8:\"DIR\",11:\"OPT\",12:\"NL\",15:\"COMMIT\",17:\"BRANCH\",18:\"ID\",19:\"CHECKOUT\",20:\"MERGE\",21:\"RESET\",23:\"STR\",24:\"HEAD\",26:\"CARET\"},\nproductions_: [0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 2:\nyy.setDirection($$[$0-3]); return $$[$0-1];\nbreak;\ncase 4:\n yy.setOptions($$[$0-1]); this.$ = $$[$0]\nbreak;\ncase 5:\n$$[$0-1] +=$$[$0]; this.$=$$[$0-1]\nbreak;\ncase 7:\nthis.$ = []\nbreak;\ncase 8:\n$$[$0-1].push($$[$0]); this.$=$$[$0-1];\nbreak;\ncase 9:\nthis.$ =$$[$0-1]\nbreak;\ncase 11:\nyy.commit($$[$0])\nbreak;\ncase 12:\nyy.branch($$[$0])\nbreak;\ncase 13:\nyy.checkout($$[$0])\nbreak;\ncase 14:\nyy.merge($$[$0])\nbreak;\ncase 15:\nyy.reset($$[$0])\nbreak;\ncase 16:\nthis.$ = \"\"\nbreak;\ncase 17:\nthis.$=$$[$0]\nbreak;\ncase 18:\nthis.$ = $$[$0-1]+ \":\" + $$[$0] \nbreak;\ncase 19:\nthis.$ = $$[$0-1]+ \":\" + yy.count; yy.count = 0\nbreak;\ncase 20:\nyy.count = 0\nbreak;\ncase 21:\n yy.count += 1 \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:$V0,9:6,12:$V1},{5:[1,8]},{7:[1,9]},o($V2,[2,7],{10:10,11:[1,11]}),o($V3,[2,6]),{6:12,7:$V0,9:6,12:$V1},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},o($V3,[2,5]),{7:[1,21]},o($V2,[2,8]),{12:[1,22]},o($V2,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},o($V2,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:$V4,25:31,26:$V5},{12:$V4,25:33,26:$V5},{12:[2,18]},{12:$V4,25:34,26:$V5},{12:[2,19]},{12:[2,21]}],\ndefaultActions: {9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 12;\nbreak;\ncase 1:/* skip all whitespace */\nbreak;\ncase 2:/* skip comments */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:return 4;\nbreak;\ncase 5:return 15;\nbreak;\ncase 6:return 17;\nbreak;\ncase 7:return 20;\nbreak;\ncase 8:return 21;\nbreak;\ncase 9:return 19;\nbreak;\ncase 10:return 8;\nbreak;\ncase 11:return 8;\nbreak;\ncase 12:return 5;\nbreak;\ncase 13:return 26\nbreak;\ncase 14:this.begin(\"options\");\nbreak;\ncase 15:this.popState();\nbreak;\ncase 16:return 11;\nbreak;\ncase 17:this.begin(\"string\");\nbreak;\ncase 18:this.popState();\nbreak;\ncase 19:return 23;\nbreak;\ncase 20:return 18;\nbreak;\ncase 21:return 7;\nbreak;\n}\n},\nrules: [/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:gitGraph\\b)/i,/^(?:commit\\b)/i,/^(?:branch\\b)/i,/^(?:merge\\b)/i,/^(?:reset\\b)/i,/^(?:checkout\\b)/i,/^(?:LR\\b)/i,/^(?:BT\\b)/i,/^(?::)/i,/^(?:\\^)/i,/^(?:options\\r?\\n)/i,/^(?:end\\r?\\n)/i,/^(?:[^\\n]+\\r?\\n)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[a-zA-Z][-_\\.a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],\nconditions: {\"options\":{\"rules\":[15,16],\"inclusive\":false},\"string\":{\"rules\":[18,19],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,9,10];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"info\":4,\"document\":5,\"EOF\":6,\"line\":7,\"statement\":8,\"NL\":9,\"showInfo\":10,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"info\",6:\"EOF\",9:\"NL\",10:\"showInfo\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return yy; \nbreak;\ncase 4:\n \nbreak;\ncase 6:\n yy.setInfo(true); \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),o($V0,[2,6])],\ndefaultActions: {4:[2,1]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\r\n\t// Pre-lexer code can go here\r\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 4 ;\nbreak;\ncase 1:return 9 ;\nbreak;\ncase 2:return 'space';\nbreak;\ncase 3:return 10;\nbreak;\ncase 4:return 6 ;\nbreak;\ncase 5:return 'TXT' ;\nbreak;\n}\n},\nrules: [/^(?:info\\b)/i,/^(?:[\\s\\n\\r]+)/i,/^(?:[\\s]+)/i,/^(?:showInfo\\b)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,5],$V2=[1,6],$V3=[1,7],$V4=[1,9],$V5=[1,11,13,20,21,22,23],$V6=[2,5],$V7=[1,6,11,13,20,21,22,23],$V8=[20,21,22],$V9=[2,8],$Va=[1,18],$Vb=[1,19],$Vc=[1,24],$Vd=[6,20,21,22,23];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"eol\":4,\"directive\":5,\"PIE\":6,\"document\":7,\"showData\":8,\"line\":9,\"statement\":10,\"txt\":11,\"value\":12,\"title\":13,\"title_value\":14,\"openDirective\":15,\"typeDirective\":16,\"closeDirective\":17,\":\":18,\"argDirective\":19,\"NEWLINE\":20,\";\":21,\"EOF\":22,\"open_directive\":23,\"type_directive\":24,\"arg_directive\":25,\"close_directive\":26,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"PIE\",8:\"showData\",11:\"txt\",12:\"value\",13:\"title\",14:\"title_value\",18:\":\",20:\"NEWLINE\",21:\";\",22:\"EOF\",23:\"open_directive\",24:\"type_directive\",25:\"arg_directive\",26:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,3],[7,0],[7,2],[9,2],[10,0],[10,2],[10,2],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[15,1],[16,1],[19,1],[17,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\nyy.setShowData(true);\nbreak;\ncase 7:\n this.$ = $$[$0-1] \nbreak;\ncase 9:\n yy.addSection($$[$0-1],yy.cleanupValue($$[$0])); \nbreak;\ncase 10:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 17:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 18:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 19:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 20:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:$V0,15:8,20:$V1,21:$V2,22:$V3,23:$V4},{1:[3]},{3:10,4:2,5:3,6:$V0,15:8,20:$V1,21:$V2,22:$V3,23:$V4},{3:11,4:2,5:3,6:$V0,15:8,20:$V1,21:$V2,22:$V3,23:$V4},o($V5,$V6,{7:12,8:[1,13]}),o($V7,[2,14]),o($V7,[2,15]),o($V7,[2,16]),{16:14,24:[1,15]},{24:[2,17]},{1:[2,1]},{1:[2,2]},o($V8,$V9,{15:8,9:16,10:17,5:20,1:[2,3],11:$Va,13:$Vb,23:$V4}),o($V5,$V6,{7:21}),{17:22,18:[1,23],26:$Vc},o([18,26],[2,18]),o($V5,[2,6]),{4:25,20:$V1,21:$V2,22:$V3},{12:[1,26]},{14:[1,27]},o($V8,[2,11]),o($V8,$V9,{15:8,9:16,10:17,5:20,1:[2,4],11:$Va,13:$Vb,23:$V4}),o($Vd,[2,12]),{19:28,25:[1,29]},o($Vd,[2,20]),o($V5,[2,7]),o($V8,[2,9]),o($V8,[2,10]),{17:30,26:$Vc},{26:[2,19]},o($Vd,[2,13])],\ndefaultActions: {9:[2,17],10:[2,1],11:[2,2],29:[2,19]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 23; \nbreak;\ncase 1: this.begin('type_directive'); return 24; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 18; \nbreak;\ncase 3: this.popState(); this.popState(); return 26; \nbreak;\ncase 4:return 25;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */{ /*console.log('');*/ }\nbreak;\ncase 7:return 20;\nbreak;\ncase 8:/* do nothing */\nbreak;\ncase 9:/* ignore */\nbreak;\ncase 10: this.begin(\"title\");return 13; \nbreak;\ncase 11: this.popState(); return \"title_value\"; \nbreak;\ncase 12: this.begin(\"string\"); \nbreak;\ncase 13: this.popState(); \nbreak;\ncase 14: return \"txt\"; \nbreak;\ncase 15:return 6;\nbreak;\ncase 16:return 8;\nbreak;\ncase 17:return \"value\";\nbreak;\ncase 18:return 22;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n\\r]+)/i,/^(?:%%[^\\n]*)/i,/^(?:[\\s]+)/i,/^(?:title\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:pie\\b)/i,/^(?:showData\\b)/i,/^(?::[\\s]*[\\d]+(?:\\.[\\d]+)?)/i,/^(?:$)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"title\":{\"rules\":[11],\"inclusive\":false},\"string\":{\"rules\":[13,14],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,12,15,16,17,18],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,5],$V2=[1,17],$V3=[2,10],$V4=[1,21],$V5=[1,22],$V6=[1,23],$V7=[1,24],$V8=[1,25],$V9=[1,26],$Va=[1,19],$Vb=[1,27],$Vc=[1,28],$Vd=[1,31],$Ve=[66,67],$Vf=[5,8,14,35,36,37,38,39,40,48,55,57,66,67],$Vg=[5,6,8,14,35,36,37,38,39,40,48,66,67],$Vh=[1,51],$Vi=[1,52],$Vj=[1,53],$Vk=[1,54],$Vl=[1,55],$Vm=[1,56],$Vn=[1,57],$Vo=[57,58],$Vp=[1,69],$Vq=[1,65],$Vr=[1,66],$Vs=[1,67],$Vt=[1,68],$Vu=[1,70],$Vv=[1,74],$Vw=[1,75],$Vx=[1,72],$Vy=[1,73],$Vz=[5,8,14,35,36,37,38,39,40,48,66,67];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"NEWLINE\":5,\"RD\":6,\"diagram\":7,\"EOF\":8,\"openDirective\":9,\"typeDirective\":10,\"closeDirective\":11,\":\":12,\"argDirective\":13,\"open_directive\":14,\"type_directive\":15,\"arg_directive\":16,\"close_directive\":17,\"requirementDef\":18,\"elementDef\":19,\"relationshipDef\":20,\"requirementType\":21,\"requirementName\":22,\"STRUCT_START\":23,\"requirementBody\":24,\"ID\":25,\"COLONSEP\":26,\"id\":27,\"TEXT\":28,\"text\":29,\"RISK\":30,\"riskLevel\":31,\"VERIFYMTHD\":32,\"verifyType\":33,\"STRUCT_STOP\":34,\"REQUIREMENT\":35,\"FUNCTIONAL_REQUIREMENT\":36,\"INTERFACE_REQUIREMENT\":37,\"PERFORMANCE_REQUIREMENT\":38,\"PHYSICAL_REQUIREMENT\":39,\"DESIGN_CONSTRAINT\":40,\"LOW_RISK\":41,\"MED_RISK\":42,\"HIGH_RISK\":43,\"VERIFY_ANALYSIS\":44,\"VERIFY_DEMONSTRATION\":45,\"VERIFY_INSPECTION\":46,\"VERIFY_TEST\":47,\"ELEMENT\":48,\"elementName\":49,\"elementBody\":50,\"TYPE\":51,\"type\":52,\"DOCREF\":53,\"ref\":54,\"END_ARROW_L\":55,\"relationship\":56,\"LINE\":57,\"END_ARROW_R\":58,\"CONTAINS\":59,\"COPIES\":60,\"DERIVES\":61,\"SATISFIES\":62,\"VERIFIES\":63,\"REFINES\":64,\"TRACES\":65,\"unqString\":66,\"qString\":67,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"NEWLINE\",6:\"RD\",8:\"EOF\",12:\":\",14:\"open_directive\",15:\"type_directive\",16:\"arg_directive\",17:\"close_directive\",23:\"STRUCT_START\",25:\"ID\",26:\"COLONSEP\",28:\"TEXT\",30:\"RISK\",32:\"VERIFYMTHD\",34:\"STRUCT_STOP\",35:\"REQUIREMENT\",36:\"FUNCTIONAL_REQUIREMENT\",37:\"INTERFACE_REQUIREMENT\",38:\"PERFORMANCE_REQUIREMENT\",39:\"PHYSICAL_REQUIREMENT\",40:\"DESIGN_CONSTRAINT\",41:\"LOW_RISK\",42:\"MED_RISK\",43:\"HIGH_RISK\",44:\"VERIFY_ANALYSIS\",45:\"VERIFY_DEMONSTRATION\",46:\"VERIFY_INSPECTION\",47:\"VERIFY_TEST\",48:\"ELEMENT\",51:\"TYPE\",53:\"DOCREF\",55:\"END_ARROW_L\",57:\"LINE\",58:\"END_ARROW_R\",59:\"CONTAINS\",60:\"COPIES\",61:\"DERIVES\",62:\"SATISFIES\",63:\"VERIFIES\",64:\"REFINES\",65:\"TRACES\",66:\"unqString\",67:\"qString\"},\nproductions_: [0,[3,3],[3,2],[3,4],[4,3],[4,5],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[18,5],[24,5],[24,5],[24,5],[24,5],[24,2],[24,1],[21,1],[21,1],[21,1],[21,1],[21,1],[21,1],[31,1],[31,1],[31,1],[33,1],[33,1],[33,1],[33,1],[19,5],[50,5],[50,5],[50,2],[50,1],[20,5],[20,5],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[22,1],[22,1],[27,1],[27,1],[29,1],[29,1],[49,1],[49,1],[52,1],[52,1],[54,1],[54,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 6:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 7:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 8:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 9:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\ncase 10:\n this.$ = [] \nbreak;\ncase 16:\n yy.addRequirement($$[$0-3], $$[$0-4]) \nbreak;\ncase 17:\n yy.setNewReqId($$[$0-2]); \nbreak;\ncase 18:\n yy.setNewReqText($$[$0-2]); \nbreak;\ncase 19:\n yy.setNewReqRisk($$[$0-2]); \nbreak;\ncase 20:\n yy.setNewReqVerifyMethod($$[$0-2]); \nbreak;\ncase 23:\n this.$=yy.RequirementType.REQUIREMENT;\nbreak;\ncase 24:\n this.$=yy.RequirementType.FUNCTIONAL_REQUIREMENT;\nbreak;\ncase 25:\n this.$=yy.RequirementType.INTERFACE_REQUIREMENT;\nbreak;\ncase 26:\n this.$=yy.RequirementType.PERFORMANCE_REQUIREMENT;\nbreak;\ncase 27:\n this.$=yy.RequirementType.PHYSICAL_REQUIREMENT;\nbreak;\ncase 28:\n this.$=yy.RequirementType.DESIGN_CONSTRAINT;\nbreak;\ncase 29:\n this.$=yy.RiskLevel.LOW_RISK;\nbreak;\ncase 30:\n this.$=yy.RiskLevel.MED_RISK;\nbreak;\ncase 31:\n this.$=yy.RiskLevel.HIGH_RISK;\nbreak;\ncase 32:\n this.$=yy.VerifyType.VERIFY_ANALYSIS;\nbreak;\ncase 33:\n this.$=yy.VerifyType.VERIFY_DEMONSTRATION;\nbreak;\ncase 34:\n this.$=yy.VerifyType.VERIFY_INSPECTION;\nbreak;\ncase 35:\n this.$=yy.VerifyType.VERIFY_TEST;\nbreak;\ncase 36:\n yy.addElement($$[$0-3]) \nbreak;\ncase 37:\n yy.setNewElementType($$[$0-2]); \nbreak;\ncase 38:\n yy.setNewElementDocRef($$[$0-2]); \nbreak;\ncase 41:\n yy.addRelationship($$[$0-2], $$[$0], $$[$0-4]) \nbreak;\ncase 42:\n yy.addRelationship($$[$0-2], $$[$0-4], $$[$0]) \nbreak;\ncase 43:\n this.$=yy.Relationships.CONTAINS;\nbreak;\ncase 44:\n this.$=yy.Relationships.COPIES;\nbreak;\ncase 45:\n this.$=yy.Relationships.DERIVES;\nbreak;\ncase 46:\n this.$=yy.Relationships.SATISFIES;\nbreak;\ncase 47:\n this.$=yy.Relationships.VERIFIES;\nbreak;\ncase 48:\n this.$=yy.Relationships.REFINES;\nbreak;\ncase 49:\n this.$=yy.Relationships.TRACES;\nbreak;\n}\n},\ntable: [{3:1,4:2,6:$V0,9:4,14:$V1},{1:[3]},{3:7,4:2,5:[1,6],6:$V0,9:4,14:$V1},{5:[1,8]},{10:9,15:[1,10]},{15:[2,6]},{3:11,4:2,6:$V0,9:4,14:$V1},{1:[2,2]},{4:16,5:$V2,7:12,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{11:29,12:[1,30],17:$Vd},o([12,17],[2,7]),{1:[2,1]},{8:[1,32]},{4:16,5:$V2,7:33,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:34,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:35,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:36,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:37,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{22:38,66:[1,39],67:[1,40]},{49:41,66:[1,42],67:[1,43]},{55:[1,44],57:[1,45]},o($Ve,[2,23]),o($Ve,[2,24]),o($Ve,[2,25]),o($Ve,[2,26]),o($Ve,[2,27]),o($Ve,[2,28]),o($Vf,[2,52]),o($Vf,[2,53]),o($Vg,[2,4]),{13:46,16:[1,47]},o($Vg,[2,9]),{1:[2,3]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{23:[1,48]},{23:[2,50]},{23:[2,51]},{23:[1,49]},{23:[2,56]},{23:[2,57]},{56:50,59:$Vh,60:$Vi,61:$Vj,62:$Vk,63:$Vl,64:$Vm,65:$Vn},{56:58,59:$Vh,60:$Vi,61:$Vj,62:$Vk,63:$Vl,64:$Vm,65:$Vn},{11:59,17:$Vd},{17:[2,8]},{5:[1,60]},{5:[1,61]},{57:[1,62]},o($Vo,[2,43]),o($Vo,[2,44]),o($Vo,[2,45]),o($Vo,[2,46]),o($Vo,[2,47]),o($Vo,[2,48]),o($Vo,[2,49]),{58:[1,63]},o($Vg,[2,5]),{5:$Vp,24:64,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vv,34:$Vw,50:71,51:$Vx,53:$Vy},{27:76,66:$Vb,67:$Vc},{27:77,66:$Vb,67:$Vc},o($Vz,[2,16]),{26:[1,78]},{26:[1,79]},{26:[1,80]},{26:[1,81]},{5:$Vp,24:82,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},o($Vz,[2,22]),o($Vz,[2,36]),{26:[1,83]},{26:[1,84]},{5:$Vv,34:$Vw,50:85,51:$Vx,53:$Vy},o($Vz,[2,40]),o($Vz,[2,41]),o($Vz,[2,42]),{27:86,66:$Vb,67:$Vc},{29:87,66:[1,88],67:[1,89]},{31:90,41:[1,91],42:[1,92],43:[1,93]},{33:94,44:[1,95],45:[1,96],46:[1,97],47:[1,98]},o($Vz,[2,21]),{52:99,66:[1,100],67:[1,101]},{54:102,66:[1,103],67:[1,104]},o($Vz,[2,39]),{5:[1,105]},{5:[1,106]},{5:[2,54]},{5:[2,55]},{5:[1,107]},{5:[2,29]},{5:[2,30]},{5:[2,31]},{5:[1,108]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[2,35]},{5:[1,109]},{5:[2,58]},{5:[2,59]},{5:[1,110]},{5:[2,60]},{5:[2,61]},{5:$Vp,24:111,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vp,24:112,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vp,24:113,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vp,24:114,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vv,34:$Vw,50:115,51:$Vx,53:$Vy},{5:$Vv,34:$Vw,50:116,51:$Vx,53:$Vy},o($Vz,[2,17]),o($Vz,[2,18]),o($Vz,[2,19]),o($Vz,[2,20]),o($Vz,[2,37]),o($Vz,[2,38])],\ndefaultActions: {5:[2,6],7:[2,2],11:[2,1],32:[2,3],33:[2,11],34:[2,12],35:[2,13],36:[2,14],37:[2,15],39:[2,50],40:[2,51],42:[2,56],43:[2,57],47:[2,8],88:[2,54],89:[2,55],91:[2,29],92:[2,30],93:[2,31],95:[2,32],96:[2,33],97:[2,34],98:[2,35],100:[2,58],101:[2,59],103:[2,60],104:[2,61]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 14; \nbreak;\ncase 1: this.begin('type_directive'); return 15; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 12; \nbreak;\ncase 3: this.popState(); this.popState(); return 17; \nbreak;\ncase 4:return 16;\nbreak;\ncase 5:return 5;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip comments */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:return 8;\nbreak;\ncase 10:return 6;\nbreak;\ncase 11:return 23;\nbreak;\ncase 12:return 34;\nbreak;\ncase 13:return 26;\nbreak;\ncase 14:return 25;\nbreak;\ncase 15:return 28;\nbreak;\ncase 16:return 30;\nbreak;\ncase 17:return 32;\nbreak;\ncase 18:return 35;\nbreak;\ncase 19:return 36;\nbreak;\ncase 20:return 37;\nbreak;\ncase 21:return 38;\nbreak;\ncase 22:return 39;\nbreak;\ncase 23:return 40;\nbreak;\ncase 24:return 41;\nbreak;\ncase 25:return 42;\nbreak;\ncase 26:return 43;\nbreak;\ncase 27:return 44;\nbreak;\ncase 28:return 45;\nbreak;\ncase 29:return 46;\nbreak;\ncase 30:return 47;\nbreak;\ncase 31:return 48;\nbreak;\ncase 32:return 59;\nbreak;\ncase 33:return 60;\nbreak;\ncase 34:return 61;\nbreak;\ncase 35:return 62;\nbreak;\ncase 36:return 63;\nbreak;\ncase 37:return 64;\nbreak;\ncase 38:return 65;\nbreak;\ncase 39:return 51;\nbreak;\ncase 40:return 53;\nbreak;\ncase 41:return 55;\nbreak;\ncase 42:return 58;\nbreak;\ncase 43:return 57;\nbreak;\ncase 44: this.begin(\"string\"); \nbreak;\ncase 45: this.popState(); \nbreak;\ncase 46: return \"qString\"; \nbreak;\ncase 47: yy_.yytext = yy_.yytext.trim(); return 66;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?::)/i,/^(?:id\\b)/i,/^(?:text\\b)/i,/^(?:risk\\b)/i,/^(?:verifyMethod\\b)/i,/^(?:requirement\\b)/i,/^(?:functionalRequirement\\b)/i,/^(?:interfaceRequirement\\b)/i,/^(?:performanceRequirement\\b)/i,/^(?:physicalRequirement\\b)/i,/^(?:designConstraint\\b)/i,/^(?:low\\b)/i,/^(?:medium\\b)/i,/^(?:high\\b)/i,/^(?:analysis\\b)/i,/^(?:demonstration\\b)/i,/^(?:inspection\\b)/i,/^(?:test\\b)/i,/^(?:element\\b)/i,/^(?:contains\\b)/i,/^(?:copies\\b)/i,/^(?:derives\\b)/i,/^(?:satisfies\\b)/i,/^(?:verifies\\b)/i,/^(?:refines\\b)/i,/^(?:traces\\b)/i,/^(?:type\\b)/i,/^(?:docref\\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[\\w][^\\r\\n\\{\\<\\>\\-\\=]*)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"unqString\":{\"rules\":[],\"inclusive\":false},\"token\":{\"rules\":[],\"inclusive\":false},\"string\":{\"rules\":[45,46],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,47],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,18],$V8=[1,19],$V9=[1,21],$Va=[1,22],$Vb=[1,23],$Vc=[1,29],$Vd=[1,30],$Ve=[1,31],$Vf=[1,32],$Vg=[1,33],$Vh=[1,34],$Vi=[1,37],$Vj=[1,38],$Vk=[1,39],$Vl=[1,40],$Vm=[1,41],$Vn=[1,42],$Vo=[1,45],$Vp=[1,4,5,16,20,22,23,24,30,32,33,34,35,36,38,40,41,42,46,47,48,49,57,67],$Vq=[1,58],$Vr=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,42,46,47,48,49,57,67],$Vs=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,41,42,46,47,48,49,57,67],$Vt=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,40,42,46,47,48,49,57,67],$Vu=[55,56,57],$Vv=[1,4,5,7,16,20,22,23,24,30,32,33,34,35,36,38,40,41,42,46,47,48,49,57,67];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NEWLINE\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"openDirective\":11,\"typeDirective\":12,\"closeDirective\":13,\":\":14,\"argDirective\":15,\"participant\":16,\"actor\":17,\"AS\":18,\"restOfLine\":19,\"participant_actor\":20,\"signal\":21,\"autonumber\":22,\"activate\":23,\"deactivate\":24,\"note_statement\":25,\"links_statement\":26,\"link_statement\":27,\"properties_statement\":28,\"details_statement\":29,\"title\":30,\"text2\":31,\"loop\":32,\"end\":33,\"rect\":34,\"opt\":35,\"alt\":36,\"else_sections\":37,\"par\":38,\"par_sections\":39,\"and\":40,\"else\":41,\"note\":42,\"placement\":43,\"over\":44,\"actor_pair\":45,\"links\":46,\"link\":47,\"properties\":48,\"details\":49,\"spaceList\":50,\",\":51,\"left_of\":52,\"right_of\":53,\"signaltype\":54,\"+\":55,\"-\":56,\"ACTOR\":57,\"SOLID_OPEN_ARROW\":58,\"DOTTED_OPEN_ARROW\":59,\"SOLID_ARROW\":60,\"DOTTED_ARROW\":61,\"SOLID_CROSS\":62,\"DOTTED_CROSS\":63,\"SOLID_POINT\":64,\"DOTTED_POINT\":65,\"TXT\":66,\"open_directive\":67,\"type_directive\":68,\"arg_directive\":69,\"close_directive\":70,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NEWLINE\",7:\"SD\",14:\":\",16:\"participant\",18:\"AS\",19:\"restOfLine\",20:\"participant_actor\",22:\"autonumber\",23:\"activate\",24:\"deactivate\",30:\"title\",32:\"loop\",33:\"end\",34:\"rect\",35:\"opt\",36:\"alt\",38:\"par\",40:\"and\",41:\"else\",42:\"note\",44:\"over\",46:\"links\",47:\"link\",48:\"properties\",49:\"details\",51:\",\",52:\"left_of\",53:\"right_of\",55:\"+\",56:\"-\",57:\"ACTOR\",58:\"SOLID_OPEN_ARROW\",59:\"DOTTED_OPEN_ARROW\",60:\"SOLID_ARROW\",61:\"DOTTED_ARROW\",62:\"SOLID_CROSS\",63:\"DOTTED_CROSS\",64:\"SOLID_POINT\",65:\"DOTTED_POINT\",66:\"TXT\",67:\"open_directive\",68:\"type_directive\",69:\"arg_directive\",70:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,5],[10,3],[10,2],[10,1],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,3],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[39,1],[39,4],[37,1],[37,4],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[50,2],[50,1],[45,3],[45,1],[43,1],[43,1],[21,5],[21,5],[21,4],[17,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[31,1],[11,1],[12,1],[15,1],[13,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n yy.apply($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$=[]; \nbreak;\ncase 12:\n$$[$0-3].type='addParticipant';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 13:\n$$[$0-1].type='addParticipant';this.$=$$[$0-1];\nbreak;\ncase 14:\n$$[$0-3].type='addActor';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 15:\n$$[$0-1].type='addActor'; this.$=$$[$0-1];\nbreak;\ncase 17:\nyy.enableSequenceNumbers()\nbreak;\ncase 18:\nthis.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]};\nbreak;\ncase 19:\nthis.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1]};\nbreak;\ncase 25:\nthis.$=[{type:'setTitle', text:$$[$0-1]}]\nbreak;\ncase 26:\n\r\n\t\t$$[$0-1].unshift({type: 'loopStart', loopText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.LOOP_START});\r\n\t\t$$[$0-1].push({type: 'loopEnd', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_END});\r\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 27:\n\r\n\t\t$$[$0-1].unshift({type: 'rectStart', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_START });\r\n\t\t$$[$0-1].push({type: 'rectEnd', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_END });\r\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 28:\n\r\n\t\t$$[$0-1].unshift({type: 'optStart', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_START});\r\n\t\t$$[$0-1].push({type: 'optEnd', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_END});\r\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 29:\n\r\n\t\t// Alt start\r\n\t\t$$[$0-1].unshift({type: 'altStart', altText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.ALT_START});\r\n\t\t// Content in alt is already in $$[$0-1]\r\n\t\t// End\r\n\t\t$$[$0-1].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END});\r\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 30:\n\r\n\t\t// Parallel start\r\n\t\t$$[$0-1].unshift({type: 'parStart', parText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.PAR_START});\r\n\t\t// Content in par is already in $$[$0-1]\r\n\t\t// End\r\n\t\t$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});\r\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 33:\n this.$ = $$[$0-3].concat([{type: 'and', parText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 35:\n this.$ = $$[$0-3].concat([{type: 'else', altText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 36:\n\r\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 37:\n\r\n\t\t// Coerce actor_pair into a [to, from, ...] array\r\n\t\t$$[$0-2] = [].concat($$[$0-1], $$[$0-1]).slice(0, 2);\r\n\t\t$$[$0-2][0] = $$[$0-2][0].actor;\r\n\t\t$$[$0-2][1] = $$[$0-2][1].actor;\r\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:yy.PLACEMENT.OVER, actor:$$[$0-2].slice(0, 2), text:$$[$0]}];\nbreak;\ncase 38:\n\r\n\t\tthis.$ = [$$[$0-1], {type:'addLinks', actor:$$[$0-1].actor, text:$$[$0]}];\r\n \nbreak;\ncase 39:\n\r\n\t\tthis.$ = [$$[$0-1], {type:'addALink', actor:$$[$0-1].actor, text:$$[$0]}];\r\n \nbreak;\ncase 40:\n\r\n\t\tthis.$ = [$$[$0-1], {type:'addProperties', actor:$$[$0-1].actor, text:$$[$0]}];\r\n \nbreak;\ncase 41:\n\r\n\t\tthis.$ = [$$[$0-1], {type:'addDetails', actor:$$[$0-1].actor, text:$$[$0]}];\r\n \nbreak;\ncase 44:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 45:\n this.$ = $$[$0]; \nbreak;\ncase 46:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 47:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 48:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\r\n\t {type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]}\r\n\t ]\nbreak;\ncase 49:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\r\n\t {type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-4]}\r\n\t ]\nbreak;\ncase 50:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 51:\nthis.$={ type: 'addParticipant', actor:$$[$0]}\nbreak;\ncase 52:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 53:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 54:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 55:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 56:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 57:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 58:\n this.$ = yy.LINETYPE.SOLID_POINT; \nbreak;\ncase 59:\n this.$ = yy.LINETYPE.DOTTED_POINT; \nbreak;\ncase 60:\nthis.$ = yy.parseMessage($$[$0].trim().substring(1)) \nbreak;\ncase 61:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 62:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 63:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 64:\n yy.parseDirective('}%%', 'close_directive', 'sequence'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,11:6,67:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,11:6,67:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,11:6,67:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,11:6,67:$V3},o([1,4,5,16,20,22,23,24,30,32,34,35,36,38,42,46,47,48,49,57,67],$V4,{8:11}),{12:12,68:[1,13]},{68:[2,61]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,34:$Ve,35:$Vf,36:$Vg,38:$Vh,42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{13:43,14:[1,44],70:$Vo},o([14,70],[2,62]),o($Vp,[2,6]),{6:35,10:46,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,34:$Ve,35:$Vf,36:$Vg,38:$Vh,42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},o($Vp,[2,8]),o($Vp,[2,9]),{17:47,57:$Vn},{17:48,57:$Vn},{5:[1,49]},o($Vp,[2,17]),{17:50,57:$Vn},{17:51,57:$Vn},{5:[1,52]},{5:[1,53]},{5:[1,54]},{5:[1,55]},{5:[1,56]},{31:57,66:$Vq},{19:[1,59]},{19:[1,60]},{19:[1,61]},{19:[1,62]},{19:[1,63]},o($Vp,[2,31]),{54:64,58:[1,65],59:[1,66],60:[1,67],61:[1,68],62:[1,69],63:[1,70],64:[1,71],65:[1,72]},{43:73,44:[1,74],52:[1,75],53:[1,76]},{17:77,57:$Vn},{17:78,57:$Vn},{17:79,57:$Vn},{17:80,57:$Vn},o([5,18,51,58,59,60,61,62,63,64,65,66],[2,51]),{5:[1,81]},{15:82,69:[1,83]},{5:[2,64]},o($Vp,[2,7]),{5:[1,85],18:[1,84]},{5:[1,87],18:[1,86]},o($Vp,[2,16]),{5:[1,88]},{5:[1,89]},o($Vp,[2,20]),o($Vp,[2,21]),o($Vp,[2,22]),o($Vp,[2,23]),o($Vp,[2,24]),{5:[1,90]},{5:[2,60]},o($Vr,$V4,{8:91}),o($Vr,$V4,{8:92}),o($Vr,$V4,{8:93}),o($Vs,$V4,{37:94,8:95}),o($Vt,$V4,{39:96,8:97}),{17:100,55:[1,98],56:[1,99],57:$Vn},o($Vu,[2,52]),o($Vu,[2,53]),o($Vu,[2,54]),o($Vu,[2,55]),o($Vu,[2,56]),o($Vu,[2,57]),o($Vu,[2,58]),o($Vu,[2,59]),{17:101,57:$Vn},{17:103,45:102,57:$Vn},{57:[2,46]},{57:[2,47]},{31:104,66:$Vq},{31:105,66:$Vq},{31:106,66:$Vq},{31:107,66:$Vq},o($Vv,[2,10]),{13:108,70:$Vo},{70:[2,63]},{19:[1,109]},o($Vp,[2,13]),{19:[1,110]},o($Vp,[2,15]),o($Vp,[2,18]),o($Vp,[2,19]),o($Vp,[2,25]),{4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,33:[1,111],34:$Ve,35:$Vf,36:$Vg,38:$Vh,42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,33:[1,112],34:$Ve,35:$Vf,36:$Vg,38:$Vh,42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,33:[1,113],34:$Ve,35:$Vf,36:$Vg,38:$Vh,42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{33:[1,114]},{4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,33:[2,34],34:$Ve,35:$Vf,36:$Vg,38:$Vh,41:[1,115],42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{33:[1,116]},{4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,33:[2,32],34:$Ve,35:$Vf,36:$Vg,38:$Vh,40:[1,117],42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{17:118,57:$Vn},{17:119,57:$Vn},{31:120,66:$Vq},{31:121,66:$Vq},{31:122,66:$Vq},{51:[1,123],66:[2,45]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},{5:[1,124]},{5:[1,125]},{5:[1,126]},o($Vp,[2,26]),o($Vp,[2,27]),o($Vp,[2,28]),o($Vp,[2,29]),{19:[1,127]},o($Vp,[2,30]),{19:[1,128]},{31:129,66:$Vq},{31:130,66:$Vq},{5:[2,50]},{5:[2,36]},{5:[2,37]},{17:131,57:$Vn},o($Vv,[2,11]),o($Vp,[2,12]),o($Vp,[2,14]),o($Vs,$V4,{8:95,37:132}),o($Vt,$V4,{8:97,39:133}),{5:[2,48]},{5:[2,49]},{66:[2,44]},{33:[2,35]},{33:[2,33]}],\ndefaultActions: {7:[2,61],8:[2,1],9:[2,2],10:[2,3],45:[2,64],58:[2,60],75:[2,46],76:[2,47],83:[2,63],104:[2,38],105:[2,39],106:[2,40],107:[2,41],120:[2,50],121:[2,36],122:[2,37],129:[2,48],130:[2,49],131:[2,44],132:[2,35],133:[2,33]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 67; \nbreak;\ncase 1: this.begin('type_directive'); return 68; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 14; \nbreak;\ncase 3: this.popState(); this.popState(); return 70; \nbreak;\ncase 4:return 69;\nbreak;\ncase 5:return 5;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip same-line whitespace */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11: this.begin('ID'); return 16; \nbreak;\ncase 12: this.begin('ID'); return 20; \nbreak;\ncase 13: yy_.yytext = yy_.yytext.trim(); this.begin('ALIAS'); return 57; \nbreak;\ncase 14: this.popState(); this.popState(); this.begin('LINE'); return 18; \nbreak;\ncase 15: this.popState(); this.popState(); return 5; \nbreak;\ncase 16: this.begin('LINE'); return 32; \nbreak;\ncase 17: this.begin('LINE'); return 34; \nbreak;\ncase 18: this.begin('LINE'); return 35; \nbreak;\ncase 19: this.begin('LINE'); return 36; \nbreak;\ncase 20: this.begin('LINE'); return 41; \nbreak;\ncase 21: this.begin('LINE'); return 38; \nbreak;\ncase 22: this.begin('LINE'); return 40; \nbreak;\ncase 23: this.popState(); return 19; \nbreak;\ncase 24:return 33;\nbreak;\ncase 25:return 52;\nbreak;\ncase 26:return 53;\nbreak;\ncase 27:return 46;\nbreak;\ncase 28:return 47;\nbreak;\ncase 29:return 48;\nbreak;\ncase 30:return 49;\nbreak;\ncase 31:return 44;\nbreak;\ncase 32:return 42;\nbreak;\ncase 33: this.begin('ID'); return 23; \nbreak;\ncase 34: this.begin('ID'); return 24; \nbreak;\ncase 35:return 30;\nbreak;\ncase 36:return 7;\nbreak;\ncase 37:return 22;\nbreak;\ncase 38:return 51;\nbreak;\ncase 39:return 5;\nbreak;\ncase 40: yy_.yytext = yy_.yytext.trim(); return 57; \nbreak;\ncase 41:return 60;\nbreak;\ncase 42:return 61;\nbreak;\ncase 43:return 58;\nbreak;\ncase 44:return 59;\nbreak;\ncase 45:return 62;\nbreak;\ncase 46:return 63;\nbreak;\ncase 47:return 64;\nbreak;\ncase 48:return 65;\nbreak;\ncase 49:return 66;\nbreak;\ncase 50:return 55;\nbreak;\ncase 51:return 56;\nbreak;\ncase 52:return 5;\nbreak;\ncase 53:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:participant\\b)/i,/^(?:actor\\b)/i,/^(?:[^\\->:\\n,;]+?(?=((?!\\n)\\s)+as(?!\\n)\\s|[#\\n;]|$))/i,/^(?:as\\b)/i,/^(?:(?:))/i,/^(?:loop\\b)/i,/^(?:rect\\b)/i,/^(?:opt\\b)/i,/^(?:alt\\b)/i,/^(?:else\\b)/i,/^(?:par\\b)/i,/^(?:and\\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\\n;]*)/i,/^(?:end\\b)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:links\\b)/i,/^(?:link\\b)/i,/^(?:properties\\b)/i,/^(?:details\\b)/i,/^(?:over\\b)/i,/^(?:note\\b)/i,/^(?:activate\\b)/i,/^(?:deactivate\\b)/i,/^(?:title\\b)/i,/^(?:sequenceDiagram\\b)/i,/^(?:autonumber\\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\\+\\->:\\n,;]+((?!(-x|--x|-\\)|--\\)))[\\-]*[^\\+\\->:\\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\\)])/i,/^(?:--[\\)])/i,/^(?::(?:(?:no)?wrap)?[^#\\n;]+)/i,/^(?:\\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"open_directive\":{\"rules\":[1,8],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3,8],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4,8],\"inclusive\":false},\"ID\":{\"rules\":[7,8,13],\"inclusive\":false},\"ALIAS\":{\"rules\":[7,8,14,15],\"inclusive\":false},\"LINE\":{\"rules\":[7,8,23],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,8,9,10,11,12,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,30],$Vc=[1,23],$Vd=[1,24],$Ve=[1,25],$Vf=[1,26],$Vg=[1,27],$Vh=[1,32],$Vi=[1,33],$Vj=[1,34],$Vk=[1,35],$Vl=[1,31],$Vm=[1,38],$Vn=[1,4,5,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],$Vo=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],$Vp=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],$Vq=[4,5,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"idStatement\":11,\"DESCR\":12,\"-->\":13,\"HIDE_EMPTY\":14,\"scale\":15,\"WIDTH\":16,\"COMPOSIT_STATE\":17,\"STRUCT_START\":18,\"STRUCT_STOP\":19,\"STATE_DESCR\":20,\"AS\":21,\"ID\":22,\"FORK\":23,\"JOIN\":24,\"CHOICE\":25,\"CONCURRENT\":26,\"note\":27,\"notePosition\":28,\"NOTE_TEXT\":29,\"direction\":30,\"openDirective\":31,\"typeDirective\":32,\"closeDirective\":33,\":\":34,\"argDirective\":35,\"direction_tb\":36,\"direction_bt\":37,\"direction_rl\":38,\"direction_lr\":39,\"eol\":40,\";\":41,\"EDGE_STATE\":42,\"left_of\":43,\"right_of\":44,\"open_directive\":45,\"type_directive\":46,\"arg_directive\":47,\"close_directive\":48,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",7:\"SD\",12:\"DESCR\",13:\"-->\",14:\"HIDE_EMPTY\",15:\"scale\",16:\"WIDTH\",17:\"COMPOSIT_STATE\",18:\"STRUCT_START\",19:\"STRUCT_STOP\",20:\"STATE_DESCR\",21:\"AS\",22:\"ID\",23:\"FORK\",24:\"JOIN\",25:\"CHOICE\",26:\"CONCURRENT\",27:\"note\",29:\"NOTE_TEXT\",34:\":\",36:\"direction_tb\",37:\"direction_bt\",38:\"direction_rl\",39:\"direction_lr\",41:\";\",42:\"EDGE_STATE\",43:\"left_of\",44:\"right_of\",45:\"open_directive\",46:\"type_directive\",47:\"arg_directive\",48:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[6,3],[6,5],[30,1],[30,1],[30,1],[30,1],[40,1],[40,1],[11,1],[11,1],[28,1],[28,1],[31,1],[32,1],[35,1],[33,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n /*console.warn('Root document', $$[$0]);*/ yy.setRootDoc($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n\r\n if($$[$0]!='nl'){\r\n $$[$0-1].push($$[$0]);this.$ = $$[$0-1]\r\n }\r\n // console.warn('Got document',$$[$0-1], $$[$0]);\r\n \nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$='nl';\nbreak;\ncase 10:\n /*console.warn('got id and descr', $$[$0]);*/this.$={ stmt: 'state', id: $$[$0], type: 'default', description: ''};\nbreak;\ncase 11:\n /*console.warn('got id and descr', $$[$0-1], $$[$0].trim());*/this.$={ stmt: 'state', id: $$[$0-1], type: 'default', description: yy.trimColon($$[$0])};\nbreak;\ncase 12:\n\r\n /*console.warn('got id', $$[$0-2]);yy.addRelation($$[$0-2], $$[$0]);*/\r\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-2], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0] ,type: 'default', description: ''}};\r\n \nbreak;\ncase 13:\n\r\n /*yy.addRelation($$[$0-3], $$[$0-1], $$[$0].substr(1).trim());*/\r\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-3], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0-1] ,type: 'default', description: ''}, description: $$[$0].substr(1).trim()};\r\n \nbreak;\ncase 17:\n\r\n /* console.warn('Adding document for state without id ', $$[$0-3]);*/\r\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: '', doc: $$[$0-1] }\r\n \nbreak;\ncase 18:\n\r\n var id=$$[$0];\r\n var description = $$[$0-2].trim();\r\n if($$[$0].match(':')){\r\n var parts = $$[$0].split(':');\r\n id=parts[0];\r\n description = [description, parts[1]];\r\n }\r\n this.$={stmt: 'state', id: id, type: 'default', description: description};\r\n\r\n \nbreak;\ncase 19:\n\r\n // console.warn('Adding document for state with id zxzx', $$[$0-3], $$[$0-2], yy.getDirection()); yy.addDocument($$[$0-3]);\r\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: $$[$0-5], doc: $$[$0-1] }\r\n \nbreak;\ncase 20:\n\r\n this.$={ stmt: 'state', id: $$[$0], type: 'fork' }\r\n \nbreak;\ncase 21:\n\r\n this.$={ stmt: 'state', id: $$[$0], type: 'join' }\r\n \nbreak;\ncase 22:\n\r\n this.$={ stmt: 'state', id: $$[$0], type: 'choice' }\r\n \nbreak;\ncase 23:\n\r\n this.$={ stmt: 'state', id: yy.getDividerId(), type: 'divider' }\r\n \nbreak;\ncase 24:\n\r\n /* console.warn('got NOTE, position: ', $$[$0-2].trim(), 'id = ', $$[$0-1].trim(), 'note: ', $$[$0]);*/\r\n this.$={ stmt: 'state', id: $$[$0-1].trim(), note:{position: $$[$0-2].trim(), text: $$[$0].trim()}};\r\n \nbreak;\ncase 30:\n yy.setDirection('TB');this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 31:\n yy.setDirection('BT');this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 32:\n yy.setDirection('RL'); this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 33:\n yy.setDirection('LR');this.$={stmt:'dir', value:'LR'};\nbreak;\ncase 36: case 37:\nthis.$=$$[$0];\nbreak;\ncase 40:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 41:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 42:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 43:\n yy.parseDirective('}%%', 'close_directive', 'state'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},o([1,4,5,14,15,17,20,22,23,24,25,26,27,36,37,38,39,42,45],$V4,{8:11}),{32:12,46:[1,13]},{46:[2,40]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},{33:36,34:[1,37],48:$Vm},o([34,48],[2,41]),o($Vn,[2,6]),{6:28,10:39,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},o($Vn,[2,8]),o($Vn,[2,9]),o($Vn,[2,10],{12:[1,40],13:[1,41]}),o($Vn,[2,14]),{16:[1,42]},o($Vn,[2,16],{18:[1,43]}),{21:[1,44]},o($Vn,[2,20]),o($Vn,[2,21]),o($Vn,[2,22]),o($Vn,[2,23]),{28:45,29:[1,46],43:[1,47],44:[1,48]},o($Vn,[2,26]),o($Vn,[2,27]),o($Vo,[2,36]),o($Vo,[2,37]),o($Vn,[2,30]),o($Vn,[2,31]),o($Vn,[2,32]),o($Vn,[2,33]),o($Vp,[2,28]),{35:49,47:[1,50]},o($Vp,[2,43]),o($Vn,[2,7]),o($Vn,[2,11]),{11:51,22:$Vb,42:$Vl},o($Vn,[2,15]),o($Vq,$V4,{8:52}),{22:[1,53]},{22:[1,54]},{21:[1,55]},{22:[2,38]},{22:[2,39]},{33:56,48:$Vm},{48:[2,42]},o($Vn,[2,12],{12:[1,57]}),{4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,58],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},o($Vn,[2,18],{18:[1,59]}),{29:[1,60]},{22:[1,61]},o($Vp,[2,29]),o($Vn,[2,13]),o($Vn,[2,17]),o($Vq,$V4,{8:62}),o($Vn,[2,24]),o($Vn,[2,25]),{4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,63],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},o($Vn,[2,19])],\ndefaultActions: {7:[2,40],8:[2,1],9:[2,2],10:[2,3],47:[2,38],48:[2,39],50:[2,42]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 36;\nbreak;\ncase 1:return 37;\nbreak;\ncase 2:return 38;\nbreak;\ncase 3:return 39;\nbreak;\ncase 4: this.begin('open_directive'); return 45; \nbreak;\ncase 5: this.begin('type_directive'); return 46; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 34; \nbreak;\ncase 7: this.popState(); this.popState(); return 48; \nbreak;\ncase 8:return 47;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */{ /*console.log('Crap after close');*/ }\nbreak;\ncase 11:return 5;\nbreak;\ncase 12:/* skip all whitespace */\nbreak;\ncase 13:/* skip same-line whitespace */\nbreak;\ncase 14:/* skip comments */\nbreak;\ncase 15:/* skip comments */\nbreak;\ncase 16: this.pushState('SCALE'); /* console.log('Got scale', yy_.yytext);*/ return 15; \nbreak;\ncase 17:return 16;\nbreak;\ncase 18:this.popState();\nbreak;\ncase 19: /*console.log('Starting STATE zxzx'+yy.getDirection());*/this.pushState('STATE'); \nbreak;\ncase 20:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim(); /*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 21:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 22:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 25;\nbreak;\ncase 23:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 24:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 25:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 25;\nbreak;\ncase 26: return 36;\nbreak;\ncase 27: return 37;\nbreak;\ncase 28: return 38;\nbreak;\ncase 29: return 39;\nbreak;\ncase 30: /*console.log('Starting STATE_STRING zxzx');*/this.begin(\"STATE_STRING\");\nbreak;\ncase 31:this.popState();this.pushState('STATE_ID');return \"AS\";\nbreak;\ncase 32:this.popState();/* console.log('STATE_ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 33:this.popState();\nbreak;\ncase 34: /*console.log('Long description:', yy_.yytext);*/return \"STATE_DESCR\";\nbreak;\ncase 35:/*console.log('COMPOSIT_STATE', yy_.yytext);*/return 17;\nbreak;\ncase 36:this.popState();\nbreak;\ncase 37:this.popState();this.pushState('struct'); /*console.log('begin struct', yy_.yytext);*/return 18;\nbreak;\ncase 38: /*console.log('Ending struct');*/ this.popState(); return 19;\nbreak;\ncase 39:/* nothing */\nbreak;\ncase 40: this.begin('NOTE'); return 27; \nbreak;\ncase 41: this.popState();this.pushState('NOTE_ID');return 43;\nbreak;\ncase 42: this.popState();this.pushState('NOTE_ID');return 44;\nbreak;\ncase 43: this.popState();this.pushState('FLOATING_NOTE');\nbreak;\ncase 44:this.popState();this.pushState('FLOATING_NOTE_ID');return \"AS\";\nbreak;\ncase 45:/**/\nbreak;\ncase 46: /*console.log('Floating note text: ', yy_.yytext);*/return \"NOTE_TEXT\";\nbreak;\ncase 47:this.popState();/*console.log('Floating note ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 48: this.popState();this.pushState('NOTE_TEXT');/*console.log('Got ID for note', yy_.yytext);*/return 22;\nbreak;\ncase 49: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.substr(2).trim();return 29;\nbreak;\ncase 50: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.slice(0,-8).trim();return 29;\nbreak;\ncase 51: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 52: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 53: /*console.log('HIDE_EMPTY', yy_.yytext,'#');*/return 14; \nbreak;\ncase 54: /*console.log('EDGE_STATE=',yy_.yytext);*/ return 42;\nbreak;\ncase 55: /*console.log('=>ID=',yy_.yytext);*/ return 22;\nbreak;\ncase 56: yy_.yytext = yy_.yytext.trim(); /*console.log('Descr = ', yy_.yytext);*/ return 12; \nbreak;\ncase 57:return 13;\nbreak;\ncase 58:return 26;\nbreak;\ncase 59:return 5;\nbreak;\ncase 60:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:[\\s]+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:scale\\s+)/i,/^(?:\\d+)/i,/^(?:\\s+width\\b)/i,/^(?:state\\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\\[\\[fork\\]\\])/i,/^(?:.*\\[\\[join\\]\\])/i,/^(?:.*\\[\\[choice\\]\\])/i,/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:[\"])/i,/^(?:\\s*as\\s+)/i,/^(?:[^\\n\\{]*)/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[^\\n\\s\\{]+)/i,/^(?:\\n)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?:[\\n])/i,/^(?:note\\s+)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:\")/i,/^(?:\\s*as\\s*)/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[^\\n]*)/i,/^(?:\\s*[^:\\n\\s\\-]+)/i,/^(?:\\s*:[^:\\n;]+)/i,/^(?:[\\s\\S]*?end note\\b)/i,/^(?:stateDiagram\\s+)/i,/^(?:stateDiagram-v2\\s+)/i,/^(?:hide empty description\\b)/i,/^(?:\\[\\*\\])/i,/^(?:[^:\\n\\s\\-\\{]+)/i,/^(?:\\s*:[^:\\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"LINE\":{\"rules\":[13,14],\"inclusive\":false},\"close_directive\":{\"rules\":[13,14],\"inclusive\":false},\"arg_directive\":{\"rules\":[7,8,13,14],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7,13,14],\"inclusive\":false},\"open_directive\":{\"rules\":[5,13,14],\"inclusive\":false},\"struct\":{\"rules\":[13,14,19,26,27,28,29,38,39,40,54,55,56,57,58],\"inclusive\":false},\"FLOATING_NOTE_ID\":{\"rules\":[47],\"inclusive\":false},\"FLOATING_NOTE\":{\"rules\":[44,45,46],\"inclusive\":false},\"NOTE_TEXT\":{\"rules\":[49,50],\"inclusive\":false},\"NOTE_ID\":{\"rules\":[48],\"inclusive\":false},\"NOTE\":{\"rules\":[41,42,43],\"inclusive\":false},\"SCALE\":{\"rules\":[17,18],\"inclusive\":false},\"ALIAS\":{\"rules\":[],\"inclusive\":false},\"STATE_ID\":{\"rules\":[32],\"inclusive\":false},\"STATE_STRING\":{\"rules\":[33,34],\"inclusive\":false},\"FORK_STATE\":{\"rules\":[],\"inclusive\":false},\"STATE\":{\"rules\":[13,14,20,21,22,23,24,25,30,31,35,36,37],\"inclusive\":false},\"ID\":{\"rules\":[13,14],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,9,10,11,12,14,15,16,19,37,40,51,52,53,54,55,56,57,59,60],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,5],$V2=[6,9,11,17,18,19,21],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,21],$V7=[4,6,9,11,17,18,19,21];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"journey\":4,\"document\":5,\"EOF\":6,\"directive\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NEWLINE\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\":\":15,\"argDirective\":16,\"title\":17,\"section\":18,\"taskName\":19,\"taskData\":20,\"open_directive\":21,\"type_directive\":22,\"arg_directive\":23,\"close_directive\":24,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"journey\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",17:\"title\",18:\"section\",19:\"taskName\",20:\"taskData\",21:\"open_directive\",22:\"type_directive\",23:\"arg_directive\",24:\"close_directive\"},\nproductions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 11:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 12:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 13:\nyy.addTask($$[$0-1], $$[$0]);this.$='task';\nbreak;\ncase 15:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 16:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 17:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 18:\n yy.parseDirective('}%%', 'close_directive', 'journey'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,21:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,21:$V1},{13:8,22:[1,9]},{22:[2,15]},{6:[1,10],7:18,8:11,9:[1,12],10:13,11:[1,14],12:4,17:$V3,18:$V4,19:$V5,21:$V1},{1:[2,2]},{14:19,15:[1,20],24:$V6},o([15,24],[2,16]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:18,10:22,12:4,17:$V3,18:$V4,19:$V5,21:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,12]),{20:[1,23]},o($V2,[2,14]),{11:[1,24]},{16:25,23:[1,26]},{11:[2,18]},o($V2,[2,5]),o($V2,[2,13]),o($V7,[2,9]),{14:27,24:$V6},{24:[2,17]},{11:[1,28]},o($V7,[2,10])],\ndefaultActions: {5:[2,15],7:[2,2],21:[2,18],26:[2,17]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 21; \nbreak;\ncase 1: this.begin('type_directive'); return 22; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 3: this.popState(); this.popState(); return 24; \nbreak;\ncase 4:return 23;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:return 11;\nbreak;\ncase 8:/* skip whitespace */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:return 4;\nbreak;\ncase 11:return 17;\nbreak;\ncase 12:return 18;\nbreak;\ncase 13:return 19;\nbreak;\ncase 14:return 20;\nbreak;\ncase 15:return 15;\nbreak;\ncase 16:return 6;\nbreak;\ncase 17:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:journey\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,13,14,15,16,17],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","import { assignWithDepth } from './utils';\r\nimport { log } from './logger';\r\nimport theme from './themes';\r\nimport config from './defaultConfig';\r\n\r\n// debugger;\r\n\r\nexport const defaultConfig = Object.freeze(config);\r\n\r\nlet siteConfig = assignWithDepth({}, defaultConfig);\r\nlet configFromInitialize;\r\nlet directives = [];\r\nlet currentConfig = assignWithDepth({}, defaultConfig);\r\n\r\nexport const updateCurrentConfig = (siteCfg, _directives) => {\r\n // start with config beeing the siteConfig\r\n let cfg = assignWithDepth({}, siteCfg);\r\n // let sCfg = assignWithDepth(defaultConfig, siteConfigDelta);\r\n\r\n // Join directives\r\n let sumOfDirectives = {};\r\n for (let i = 0; i < _directives.length; i++) {\r\n const d = _directives[i];\r\n sanitize(d);\r\n\r\n // Apply the data from the directive where the the overrides the themeVaraibles\r\n sumOfDirectives = assignWithDepth(sumOfDirectives, d);\r\n }\r\n\r\n cfg = assignWithDepth(cfg, sumOfDirectives);\r\n\r\n if (sumOfDirectives.theme) {\r\n const tmpConfigFromInitialize = assignWithDepth({}, configFromInitialize);\r\n const themeVariables = assignWithDepth(\r\n tmpConfigFromInitialize.themeVariables || {},\r\n sumOfDirectives.themeVariables\r\n );\r\n cfg.themeVariables = theme[cfg.theme].getThemeVariables(themeVariables);\r\n }\r\n\r\n currentConfig = cfg;\r\n return cfg;\r\n};\r\n/**\r\n * ## setSiteConfig\r\n *\r\n * | Function | Description | Type | Values |\r\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\r\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\r\n *\r\n * **Notes:** Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls\r\n * to reset() will reset the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig)\r\n * will reset siteConfig and current Config to the defaultConfig\r\n *\r\n * Note: currentConfig is set in this function\r\n *\r\n * Default value: At default, will mirror Global Config\r\n *\r\n * @param {any} conf - The base currentConfig to use as siteConfig\r\n * @returns {any} - The siteConfig\r\n */\r\nexport const setSiteConfig = (conf) => {\r\n siteConfig = assignWithDepth({}, defaultConfig);\r\n siteConfig = assignWithDepth(siteConfig, conf);\r\n\r\n if (conf.theme) {\r\n siteConfig.themeVariables = theme[conf.theme].getThemeVariables(conf.themeVariables);\r\n }\r\n\r\n currentConfig = updateCurrentConfig(siteConfig, directives);\r\n return siteConfig;\r\n};\r\n\r\nexport const saveConfigFromInitilize = (conf) => {\r\n configFromInitialize = assignWithDepth({}, conf);\r\n};\r\n\r\nexport const updateSiteConfig = (conf) => {\r\n siteConfig = assignWithDepth(siteConfig, conf);\r\n updateCurrentConfig(siteConfig, directives);\r\n\r\n return siteConfig;\r\n};\r\n/**\r\n * ## getSiteConfig\r\n *\r\n * | Function | Description | Type | Values |\r\n * | ------------- | ------------------------------------------------- | ----------- | --------------------------------- |\r\n * | setSiteConfig | Returns the current siteConfig base configuration | Get Request | Returns Any Values in site Config |\r\n *\r\n * **Notes**: Returns **any** values in siteConfig.\r\n *\r\n * @returns {any}\r\n */\r\nexport const getSiteConfig = () => {\r\n return assignWithDepth({}, siteConfig);\r\n};\r\n/**\r\n * ## setConfig\r\n *\r\n * | Function | Description | Type | Values |\r\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\r\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\r\n *\r\n * **Notes**: Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure\r\n * keys. Any values found in conf with key found in siteConfig.secure will be replaced with the\r\n * corresponding siteConfig value.\r\n *\r\n * @param {any} conf - The potential currentConfig\r\n * @returns {any} - The currentConfig merged with the sanitized conf\r\n */\r\nexport const setConfig = (conf) => {\r\n // sanitize(conf);\r\n // Object.keys(conf).forEach(key => {\r\n // const manipulator = manipulators[key];\r\n // conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\r\n // });\r\n\r\n assignWithDepth(currentConfig, conf);\r\n\r\n return getConfig();\r\n};\r\n\r\n/**\r\n * ## getConfig\r\n *\r\n * | Function | Description | Type | Return Values |\r\n * | --------- | ------------------------- | ----------- | ------------------------------ |\r\n * | getConfig | Obtains the currentConfig | Get Request | Any Values from current Config |\r\n *\r\n * **Notes**: Returns **any** the currentConfig\r\n *\r\n * @returns {any} - The currentConfig\r\n */\r\nexport const getConfig = () => {\r\n return assignWithDepth({}, currentConfig);\r\n};\r\n/**\r\n * ## sanitize\r\n *\r\n * | Function | Description | Type | Values |\r\n * | -------- | -------------------------------------- | ----------- | ------ |\r\n * | sanitize | Sets the siteConfig to desired values. | Put Request | None |\r\n *\r\n * Ensures options parameter does not attempt to override siteConfig secure keys **Notes**: modifies\r\n * options in-place\r\n *\r\n * @param {any} options - The potential setConfig parameter\r\n */\r\nexport const sanitize = (options) => {\r\n // Checking that options are not in the list of excluded options\r\n Object.keys(siteConfig.secure).forEach((key) => {\r\n if (typeof options[siteConfig.secure[key]] !== 'undefined') {\r\n // DO NOT attempt to print options[siteConfig.secure[key]] within `${}` as a malicious script\r\n // can exploit the logger's attempt to stringify the value and execute arbitrary code\r\n log.debug(\r\n `Denied attempt to modify a secure key ${siteConfig.secure[key]}`,\r\n options[siteConfig.secure[key]]\r\n );\r\n delete options[siteConfig.secure[key]];\r\n }\r\n });\r\n\r\n // Check that there no attempts of prototype pollution\r\n Object.keys(options).forEach((key) => {\r\n if (key.indexOf('__') === 0) {\r\n delete options[key];\r\n }\r\n });\r\n // Check that there no attempts of xss, there should be no tags at all in the directive\r\n // blocking data urls as base64 urls can contain svgs with inline script tags\r\n Object.keys(options).forEach((key) => {\r\n if (typeof options[key] === 'string') {\r\n if (\r\n options[key].indexOf('<') > -1 ||\r\n options[key].indexOf('>') > -1 ||\r\n options[key].indexOf('url(data:') > -1\r\n ) {\r\n delete options[key];\r\n }\r\n }\r\n if (typeof options[key] === 'object') {\r\n sanitize(options[key]);\r\n }\r\n });\r\n};\r\n\r\nexport const addDirective = (directive) => {\r\n if (directive.fontFamily) {\r\n if (!directive.themeVariables) {\r\n directive.themeVariables = { fontFamily: directive.fontFamily };\r\n } else {\r\n if (!directive.themeVariables.fontFamily) {\r\n directive.themeVariables = { fontFamily: directive.fontFamily };\r\n }\r\n }\r\n }\r\n directives.push(directive);\r\n updateCurrentConfig(siteConfig, directives);\r\n};\r\n\r\n/**\r\n * ## reset\r\n *\r\n * | Function | Description | Type | Required | Values |\r\n * | -------- | ---------------------------- | ----------- | -------- | ------ |\r\n * | reset | Resets currentConfig to conf | Put Request | Required | None |\r\n *\r\n * | Parameter | Description | Type | Required | Values |\r\n *\r\n * | --------- | ------------------------------------------------------------ | ---------- | -------- | -------------------------------------------- |\r\n * | conf | base set of values, which currentConfig coul be **reset** to.| Dictionary | Required | Any Values, with respect to the secure Array |\r\n *\r\n * **Notes**: (default: current siteConfig ) (optional, default `getSiteConfig()`)\r\n */\r\nexport const reset = () => {\r\n // Replace current config with siteConfig\r\n directives = [];\r\n updateCurrentConfig(siteConfig, directives);\r\n};\r\n","import intersectRect from './intersect/intersect-rect';\r\nimport { log } from '../logger';\r\nimport createLabel from './createLabel';\r\nimport { select } from 'd3';\r\nimport { getConfig } from '../config';\r\nimport { evaluate } from '../diagrams/common/common';\r\n\r\nconst rect = (parent, node) => {\r\n log.trace('Creating subgraph rect for ', node.id, node);\r\n\r\n // Add outer g element\r\n const shapeSvg = parent\r\n .insert('g')\r\n .attr('class', 'cluster' + (node.class ? ' ' + node.class : ''))\r\n .attr('id', node.id);\r\n\r\n // add the rect\r\n const rect = shapeSvg.insert('rect', ':first-child');\r\n\r\n // Create the label and insert it after the rect\r\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\r\n\r\n const text = label\r\n .node()\r\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\r\n\r\n // Get the size of the label\r\n let bbox = text.getBBox();\r\n\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = text.children[0];\r\n const dv = select(text);\r\n bbox = div.getBoundingClientRect();\r\n dv.attr('width', bbox.width);\r\n dv.attr('height', bbox.height);\r\n }\r\n\r\n const padding = 0 * node.padding;\r\n const halfPadding = padding / 2;\r\n\r\n const width = node.width <= bbox.width + padding ? bbox.width + padding : node.width;\r\n if (node.width <= bbox.width + padding) {\r\n node.diff = (bbox.width - node.width) / 2;\r\n } else {\r\n node.diff = -node.padding / 2;\r\n }\r\n\r\n log.trace('Data ', node, JSON.stringify(node));\r\n // center the rect around its coordinate\r\n rect\r\n .attr('style', node.style)\r\n .attr('rx', node.rx)\r\n .attr('ry', node.ry)\r\n .attr('x', node.x - width / 2)\r\n .attr('y', node.y - node.height / 2 - halfPadding)\r\n .attr('width', width)\r\n .attr('height', node.height + padding);\r\n\r\n // Center the label\r\n label.attr(\r\n 'transform',\r\n 'translate(' +\r\n (node.x - bbox.width / 2) +\r\n ', ' +\r\n (node.y - node.height / 2 + node.padding / 3) +\r\n ')'\r\n );\r\n\r\n const rectBox = rect.node().getBBox();\r\n node.width = rectBox.width;\r\n node.height = rectBox.height;\r\n\r\n node.intersect = function (point) {\r\n return intersectRect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\n/**\r\n * Non visiable cluster where the note is group with its\r\n *\r\n * @param {any} parent\r\n * @param {any} node\r\n * @returns {any} ShapeSvg\r\n */\r\nconst noteGroup = (parent, node) => {\r\n // Add outer g element\r\n const shapeSvg = parent.insert('g').attr('class', 'note-cluster').attr('id', node.id);\r\n\r\n // add the rect\r\n const rect = shapeSvg.insert('rect', ':first-child');\r\n\r\n const padding = 0 * node.padding;\r\n const halfPadding = padding / 2;\r\n\r\n // center the rect around its coordinate\r\n rect\r\n .attr('rx', node.rx)\r\n .attr('ry', node.ry)\r\n .attr('x', node.x - node.width / 2 - halfPadding)\r\n .attr('y', node.y - node.height / 2 - halfPadding)\r\n .attr('width', node.width + padding)\r\n .attr('height', node.height + padding)\r\n .attr('fill', 'none');\r\n\r\n const rectBox = rect.node().getBBox();\r\n node.width = rectBox.width;\r\n node.height = rectBox.height;\r\n\r\n node.intersect = function (point) {\r\n return intersectRect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\nconst roundedWithTitle = (parent, node) => {\r\n // Add outer g element\r\n const shapeSvg = parent.insert('g').attr('class', node.classes).attr('id', node.id);\r\n\r\n // add the rect\r\n const rect = shapeSvg.insert('rect', ':first-child');\r\n\r\n // Create the label and insert it after the rect\r\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\r\n const innerRect = shapeSvg.append('rect');\r\n\r\n const text = label\r\n .node()\r\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\r\n\r\n // Get the size of the label\r\n let bbox = text.getBBox();\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = text.children[0];\r\n const dv = select(text);\r\n bbox = div.getBoundingClientRect();\r\n dv.attr('width', bbox.width);\r\n dv.attr('height', bbox.height);\r\n }\r\n bbox = text.getBBox();\r\n const padding = 0 * node.padding;\r\n const halfPadding = padding / 2;\r\n\r\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\r\n if (node.width <= bbox.width + node.padding) {\r\n node.diff = (bbox.width + node.padding * 0 - node.width) / 2;\r\n } else {\r\n node.diff = -node.padding / 2;\r\n }\r\n\r\n // center the rect around its coordinate\r\n rect\r\n .attr('class', 'outer')\r\n .attr('x', node.x - width / 2 - halfPadding)\r\n .attr('y', node.y - node.height / 2 - halfPadding)\r\n .attr('width', width + padding)\r\n .attr('height', node.height + padding);\r\n innerRect\r\n .attr('class', 'inner')\r\n .attr('x', node.x - width / 2 - halfPadding)\r\n .attr('y', node.y - node.height / 2 - halfPadding + bbox.height - 1)\r\n .attr('width', width + padding)\r\n .attr('height', node.height + padding - bbox.height - 3);\r\n\r\n // Center the label\r\n label.attr(\r\n 'transform',\r\n 'translate(' +\r\n (node.x - bbox.width / 2) +\r\n ', ' +\r\n (node.y -\r\n node.height / 2 -\r\n node.padding / 3 +\r\n (evaluate(getConfig().flowchart.htmlLabels) ? 5 : 3)) +\r\n ')'\r\n );\r\n\r\n const rectBox = rect.node().getBBox();\r\n node.height = rectBox.height;\r\n\r\n node.intersect = function (point) {\r\n return intersectRect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst divider = (parent, node) => {\r\n // Add outer g element\r\n const shapeSvg = parent.insert('g').attr('class', node.classes).attr('id', node.id);\r\n\r\n // add the rect\r\n const rect = shapeSvg.insert('rect', ':first-child');\r\n\r\n const padding = 0 * node.padding;\r\n const halfPadding = padding / 2;\r\n\r\n // center the rect around its coordinate\r\n rect\r\n .attr('class', 'divider')\r\n .attr('x', node.x - node.width / 2 - halfPadding)\r\n .attr('y', node.y - node.height / 2)\r\n .attr('width', node.width + padding)\r\n .attr('height', node.height + padding);\r\n\r\n const rectBox = rect.node().getBBox();\r\n node.width = rectBox.width;\r\n node.height = rectBox.height;\r\n node.diff = -node.padding / 2;\r\n node.intersect = function (point) {\r\n return intersectRect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst shapes = { rect, roundedWithTitle, noteGroup, divider };\r\n\r\nlet clusterElems = {};\r\n\r\nexport const insertCluster = (elem, node) => {\r\n log.trace('Inserting cluster');\r\n const shape = node.shape || 'rect';\r\n clusterElems[node.id] = shapes[shape](elem, node);\r\n};\r\nexport const getClusterTitleWidth = (elem, node) => {\r\n const label = createLabel(node.labelText, node.labelStyle, undefined, true);\r\n elem.node().appendChild(label);\r\n const width = label.getBBox().width;\r\n elem.node().removeChild(label);\r\n return width;\r\n};\r\n\r\nexport const clear = () => {\r\n clusterElems = {};\r\n};\r\n\r\nexport const positionCluster = (node) => {\r\n log.info('Position cluster (' + node.id + ', ' + node.x + ', ' + node.y + ')');\r\n const el = clusterElems[node.id];\r\n\r\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\r\n};\r\n","import { select } from 'd3';\r\nimport { log } from '../logger'; // eslint-disable-line\r\nimport { evaluate } from '../diagrams/common/common';\r\nimport { getConfig } from '../config';\r\n\r\n/**\r\n * @param dom\r\n * @param styleFn\r\n */\r\nfunction applyStyle(dom, styleFn) {\r\n if (styleFn) {\r\n dom.attr('style', styleFn);\r\n }\r\n}\r\n\r\n/**\r\n * @param {any} node\r\n * @returns {SVGForeignObjectElement} Node\r\n */\r\nfunction addHtmlLabel(node) {\r\n const fo = select(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'));\r\n const div = fo.append('xhtml:div');\r\n\r\n const label = node.label;\r\n const labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel';\r\n div.html(\r\n '' +\r\n label +\r\n ''\r\n );\r\n\r\n applyStyle(div, node.labelStyle);\r\n div.style('display', 'inline-block');\r\n // Fix for firefox\r\n div.style('white-space', 'nowrap');\r\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\r\n return fo.node();\r\n}\r\n\r\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\r\n let vertexText = _vertexText || '';\r\n if (typeof vertexText === 'object') vertexText = vertexText[0];\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\r\n vertexText = vertexText.replace(/\\\\n|\\n/g, '
');\r\n log.info('vertexText' + vertexText);\r\n const node = {\r\n isNode,\r\n label: vertexText.replace(\r\n /fa[lrsb]?:fa-[\\w-]+/g,\r\n (s) => ``\r\n ),\r\n labelStyle: style.replace('fill:', 'color:'),\r\n };\r\n let vertexNode = addHtmlLabel(node);\r\n // vertexNode.parentNode.removeChild(vertexNode);\r\n return vertexNode;\r\n } else {\r\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\r\n svgLabel.setAttribute('style', style.replace('color:', 'fill:'));\r\n let rows = [];\r\n if (typeof vertexText === 'string') {\r\n rows = vertexText.split(/\\\\n|\\n|/gi);\r\n } else if (Array.isArray(vertexText)) {\r\n rows = vertexText;\r\n } else {\r\n rows = [];\r\n }\r\n\r\n for (let j = 0; j < rows.length; j++) {\r\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\r\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n tspan.setAttribute('dy', '1em');\r\n tspan.setAttribute('x', '0');\r\n if (isTitle) {\r\n tspan.setAttribute('class', 'title-row');\r\n } else {\r\n tspan.setAttribute('class', 'row');\r\n }\r\n tspan.textContent = rows[j].trim();\r\n svgLabel.appendChild(tspan);\r\n }\r\n return svgLabel;\r\n }\r\n};\r\n\r\nexport default createLabel;\r\n","import { log } from '../logger'; // eslint-disable-line\r\nimport createLabel from './createLabel';\r\nimport { line, curveBasis, select } from 'd3';\r\nimport { getConfig } from '../config';\r\nimport utils from '../utils';\r\nimport { evaluate } from '../diagrams/common/common';\r\n\r\nlet edgeLabels = {};\r\nlet terminalLabels = {};\r\n\r\nexport const clear = () => {\r\n edgeLabels = {};\r\n terminalLabels = {};\r\n};\r\n\r\nexport const insertEdgeLabel = (elem, edge) => {\r\n // Create the actual text element\r\n const labelElement = createLabel(edge.label, edge.labelStyle);\r\n\r\n // Create outer g, edgeLabel, this will be positioned after graph layout\r\n const edgeLabel = elem.insert('g').attr('class', 'edgeLabel');\r\n\r\n // Create inner g, label, this will be positioned now for centering the text\r\n const label = edgeLabel.insert('g').attr('class', 'label');\r\n label.node().appendChild(labelElement);\r\n\r\n // Center the label\r\n let bbox = labelElement.getBBox();\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = labelElement.children[0];\r\n const dv = select(labelElement);\r\n bbox = div.getBoundingClientRect();\r\n dv.attr('width', bbox.width);\r\n dv.attr('height', bbox.height);\r\n }\r\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\r\n\r\n // Make element accessible by id for positioning\r\n edgeLabels[edge.id] = edgeLabel;\r\n\r\n // Update the abstract data of the edge with the new information about its width and height\r\n edge.width = bbox.width;\r\n edge.height = bbox.height;\r\n\r\n let fo;\r\n if (edge.startLabelLeft) {\r\n // Create the actual text element\r\n const startLabelElement = createLabel(edge.startLabelLeft, edge.labelStyle);\r\n const startEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\r\n const inner = startEdgeLabelLeft.insert('g').attr('class', 'inner');\r\n fo = inner.node().appendChild(startLabelElement);\r\n const slBox = startLabelElement.getBBox();\r\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\r\n if (!terminalLabels[edge.id]) {\r\n terminalLabels[edge.id] = {};\r\n }\r\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\r\n setTerminalWidth(fo, edge.startLabelLeft);\r\n }\r\n if (edge.startLabelRight) {\r\n // Create the actual text element\r\n const startLabelElement = createLabel(edge.startLabelRight, edge.labelStyle);\r\n const startEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\r\n const inner = startEdgeLabelRight.insert('g').attr('class', 'inner');\r\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\r\n inner.node().appendChild(startLabelElement);\r\n const slBox = startLabelElement.getBBox();\r\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\r\n\r\n if (!terminalLabels[edge.id]) {\r\n terminalLabels[edge.id] = {};\r\n }\r\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\r\n setTerminalWidth(fo, edge.startLabelRight);\r\n }\r\n if (edge.endLabelLeft) {\r\n // Create the actual text element\r\n const endLabelElement = createLabel(edge.endLabelLeft, edge.labelStyle);\r\n const endEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\r\n const inner = endEdgeLabelLeft.insert('g').attr('class', 'inner');\r\n fo = inner.node().appendChild(endLabelElement);\r\n const slBox = endLabelElement.getBBox();\r\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\r\n\r\n endEdgeLabelLeft.node().appendChild(endLabelElement);\r\n\r\n if (!terminalLabels[edge.id]) {\r\n terminalLabels[edge.id] = {};\r\n }\r\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\r\n setTerminalWidth(fo, edge.endLabelLeft);\r\n }\r\n if (edge.endLabelRight) {\r\n // Create the actual text element\r\n const endLabelElement = createLabel(edge.endLabelRight, edge.labelStyle);\r\n const endEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\r\n const inner = endEdgeLabelRight.insert('g').attr('class', 'inner');\r\n\r\n fo = inner.node().appendChild(endLabelElement);\r\n const slBox = endLabelElement.getBBox();\r\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\r\n\r\n endEdgeLabelRight.node().appendChild(endLabelElement);\r\n if (!terminalLabels[edge.id]) {\r\n terminalLabels[edge.id] = {};\r\n }\r\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\r\n setTerminalWidth(fo, edge.endLabelRight);\r\n }\r\n};\r\n\r\n/**\r\n * @param {any} fo\r\n * @param {any} value\r\n */\r\nfunction setTerminalWidth(fo, value) {\r\n if (getConfig().flowchart.htmlLabels && fo) {\r\n fo.style.width = value.length * 9 + 'px';\r\n fo.style.height = '12px';\r\n }\r\n}\r\n\r\nexport const positionEdgeLabel = (edge, paths) => {\r\n log.info('Moving label abc78 ', edge.id, edge.label, edgeLabels[edge.id]);\r\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\r\n if (edge.label) {\r\n const el = edgeLabels[edge.id];\r\n let x = edge.x;\r\n let y = edge.y;\r\n if (path) {\r\n // // debugger;\r\n const pos = utils.calcLabelPosition(path);\r\n log.info('Moving label from (', x, ',', y, ') to (', pos.x, ',', pos.y, ') abc78');\r\n // x = pos.x;\r\n // y = pos.y;\r\n }\r\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\r\n }\r\n\r\n //let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\r\n if (edge.startLabelLeft) {\r\n const el = terminalLabels[edge.id].startLeft;\r\n let x = edge.x;\r\n let y = edge.y;\r\n if (path) {\r\n // debugger;\r\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, 'start_left', path);\r\n x = pos.x;\r\n y = pos.y;\r\n }\r\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\r\n }\r\n if (edge.startLabelRight) {\r\n const el = terminalLabels[edge.id].startRight;\r\n let x = edge.x;\r\n let y = edge.y;\r\n if (path) {\r\n // debugger;\r\n const pos = utils.calcTerminalLabelPosition(\r\n edge.arrowTypeStart ? 10 : 0,\r\n 'start_right',\r\n path\r\n );\r\n x = pos.x;\r\n y = pos.y;\r\n }\r\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\r\n }\r\n if (edge.endLabelLeft) {\r\n const el = terminalLabels[edge.id].endLeft;\r\n let x = edge.x;\r\n let y = edge.y;\r\n if (path) {\r\n // debugger;\r\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_left', path);\r\n x = pos.x;\r\n y = pos.y;\r\n }\r\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\r\n }\r\n if (edge.endLabelRight) {\r\n const el = terminalLabels[edge.id].endRight;\r\n let x = edge.x;\r\n let y = edge.y;\r\n if (path) {\r\n // debugger;\r\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_right', path);\r\n x = pos.x;\r\n y = pos.y;\r\n }\r\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\r\n }\r\n};\r\n\r\n// const getRelationType = function(type) {\r\n// switch (type) {\r\n// case stateDb.relationType.AGGREGATION:\r\n// return 'aggregation';\r\n// case stateDb.relationType.EXTENSION:\r\n// return 'extension';\r\n// case stateDb.relationType.COMPOSITION:\r\n// return 'composition';\r\n// case stateDb.relationType.DEPENDENCY:\r\n// return 'dependency';\r\n// }\r\n// };\r\n\r\nconst outsideNode = (node, point) => {\r\n // log.warn('Checking bounds ', node, point);\r\n const x = node.x;\r\n const y = node.y;\r\n const dx = Math.abs(point.x - x);\r\n const dy = Math.abs(point.y - y);\r\n const w = node.width / 2;\r\n const h = node.height / 2;\r\n if (dx >= w || dy >= h) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const intersection = (node, outsidePoint, insidePoint) => {\r\n log.warn(`intersection calc abc89:\r\n outsidePoint: ${JSON.stringify(outsidePoint)}\r\n insidePoint : ${JSON.stringify(insidePoint)}\r\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\r\n const x = node.x;\r\n const y = node.y;\r\n\r\n const dx = Math.abs(x - insidePoint.x);\r\n // const dy = Math.abs(y - insidePoint.y);\r\n const w = node.width / 2;\r\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\r\n const h = node.height / 2;\r\n\r\n // const edges = {\r\n // x1: x - w,\r\n // x2: x + w,\r\n // y1: y - h,\r\n // y2: y + h\r\n // };\r\n\r\n // if (\r\n // outsidePoint.x === edges.x1 ||\r\n // outsidePoint.x === edges.x2 ||\r\n // outsidePoint.y === edges.y1 ||\r\n // outsidePoint.y === edges.y2\r\n // ) {\r\n // log.warn('abc89 calc equals on edge', outsidePoint, edges);\r\n // return outsidePoint;\r\n // }\r\n\r\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\r\n const R = Math.abs(outsidePoint.x - insidePoint.x);\r\n // log.warn();\r\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) { // eslint-disable-line\r\n // Intersection is top or bottom of rect.\r\n // let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\r\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\r\n r = (R * q) / Q;\r\n const res = {\r\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\r\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q,\r\n };\r\n\r\n if (r === 0) {\r\n res.x = outsidePoint.x;\r\n res.y = outsidePoint.y;\r\n }\r\n if (R === 0) {\r\n res.x = outsidePoint.x;\r\n }\r\n if (Q === 0) {\r\n res.y = outsidePoint.y;\r\n }\r\n\r\n log.warn(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\r\n\r\n return res;\r\n } else {\r\n // Intersection onn sides of rect\r\n if (insidePoint.x < outsidePoint.x) {\r\n r = outsidePoint.x - w - x;\r\n } else {\r\n // r = outsidePoint.x - w - x;\r\n r = x - w - outsidePoint.x;\r\n }\r\n let q = (Q * r) / R;\r\n // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w;\r\n // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;\r\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\r\n // let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;\r\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\r\n log.warn(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\r\n if (r === 0) {\r\n _x = outsidePoint.x;\r\n _y = outsidePoint.y;\r\n }\r\n if (R === 0) {\r\n _x = outsidePoint.x;\r\n }\r\n if (Q === 0) {\r\n _y = outsidePoint.y;\r\n }\r\n\r\n return { x: _x, y: _y };\r\n }\r\n};\r\n/**\r\n * This function will page a path and node where the last point(s) in the path is inside the node\r\n * and return an update path ending by the border of the node.\r\n *\r\n * @param {Array} _points\r\n * @param {any} boundryNode\r\n * @returns {Array} Points\r\n */\r\nconst cutPathAtIntersect = (_points, boundryNode) => {\r\n log.warn('abc88 cutPathAtIntersect', _points, boundryNode);\r\n let points = [];\r\n let lastPointOutside = _points[0];\r\n let isInside = false;\r\n _points.forEach((point) => {\r\n // const node = clusterDb[edge.toCluster].node;\r\n log.info('abc88 checking point', point, boundryNode);\r\n\r\n // check if point is inside the boundry rect\r\n if (!outsideNode(boundryNode, point) && !isInside) {\r\n // First point inside the rect found\r\n // Calc the intersection coord between the point anf the last opint ouside the rect\r\n const inter = intersection(boundryNode, lastPointOutside, point);\r\n log.warn('abc88 inside', point, lastPointOutside, inter);\r\n log.warn('abc88 intersection', inter);\r\n\r\n // // Check case where the intersection is the same as the last point\r\n let pointPresent = false;\r\n points.forEach((p) => {\r\n pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\r\n });\r\n // // if (!pointPresent) {\r\n if (!points.find((e) => e.x === inter.x && e.y === inter.y)) {\r\n points.push(inter);\r\n } else {\r\n log.warn('abc88 no intersect', inter, points);\r\n }\r\n // points.push(inter);\r\n isInside = true;\r\n } else {\r\n // Outside\r\n log.warn('abc88 outside', point, lastPointOutside);\r\n lastPointOutside = point;\r\n // points.push(point);\r\n if (!isInside) points.push(point);\r\n }\r\n });\r\n log.warn('abc88 returning points', points);\r\n return points;\r\n};\r\n\r\n//(edgePaths, e, edge, clusterDb, diagramtype, graph)\r\nexport const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph) {\r\n let points = edge.points;\r\n let pointsHasChanged = false;\r\n const tail = graph.node(e.v);\r\n var head = graph.node(e.w);\r\n\r\n log.info('abc88 InsertEdge: ', edge);\r\n if (head.intersect && tail.intersect) {\r\n points = points.slice(1, edge.points.length - 1);\r\n points.unshift(tail.intersect(points[0]));\r\n log.info(\r\n 'Last point',\r\n points[points.length - 1],\r\n head,\r\n head.intersect(points[points.length - 1])\r\n );\r\n points.push(head.intersect(points[points.length - 1]));\r\n }\r\n if (edge.toCluster) {\r\n log.info('to cluster abc88', clusterDb[edge.toCluster]);\r\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\r\n // log.trace('edge', edge);\r\n // points = [];\r\n // let lastPointOutside; // = edge.points[0];\r\n // let isInside = false;\r\n // edge.points.forEach(point => {\r\n // const node = clusterDb[edge.toCluster].node;\r\n // log.warn('checking from', edge.fromCluster, point, node);\r\n\r\n // if (!outsideNode(node, point) && !isInside) {\r\n // log.trace('inside', edge.toCluster, point, lastPointOutside);\r\n\r\n // // First point inside the rect\r\n // const inter = intersection(node, lastPointOutside, point);\r\n\r\n // let pointPresent = false;\r\n // points.forEach(p => {\r\n // pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\r\n // });\r\n // // if (!pointPresent) {\r\n // if (!points.find(e => e.x === inter.x && e.y === inter.y)) {\r\n // points.push(inter);\r\n // } else {\r\n // log.warn('no intersect', inter, points);\r\n // }\r\n // isInside = true;\r\n // } else {\r\n // // outtside\r\n // lastPointOutside = point;\r\n // if (!isInside) points.push(point);\r\n // }\r\n // });\r\n pointsHasChanged = true;\r\n }\r\n\r\n if (edge.fromCluster) {\r\n log.info('from cluster abc88', clusterDb[edge.fromCluster]);\r\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\r\n // log.warn('edge', edge);\r\n // log.warn('from cluster', clusterDb[edge.fromCluster], points);\r\n // const updatedPoints = [];\r\n // let lastPointOutside = edge.points[edge.points.length - 1];\r\n // let isInside = false;\r\n // for (let i = points.length - 1; i >= 0; i--) {\r\n // const point = points[i];\r\n // const node = clusterDb[edge.fromCluster].node;\r\n // log.warn('checking to', edge.fromCluster, point, node);\r\n\r\n // if (!outsideNode(node, point) && !isInside) {\r\n // log.warn('inside', edge.fromCluster, point, node);\r\n\r\n // // First point inside the rect\r\n // const inter = intersection(node, lastPointOutside, point);\r\n // log.warn('intersect', intersection(node, lastPointOutside, point));\r\n // let pointPresent = false;\r\n // points.forEach(p => {\r\n // pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\r\n // });\r\n // // if (!pointPresent) {\r\n // if (!points.find(e => e.x === inter.x && e.y === inter.y)) {\r\n // updatedPoints.unshift(inter);\r\n // log.warn('Adding point -updated = ', updatedPoints);\r\n // } else {\r\n // log.warn('no intersect', inter, points);\r\n // }\r\n // // points.push(insterection);\r\n // isInside = true;\r\n // } else {\r\n // // at the outside\r\n // // if (!isInside) updatedPoints.unshift(point);\r\n // updatedPoints.unshift(point);\r\n // log.warn('Outside point', point, updatedPoints);\r\n // }\r\n // lastPointOutside = point;\r\n // }\r\n // points = updatedPoints;\r\n // points = edge.points;\r\n pointsHasChanged = true;\r\n }\r\n\r\n // The data for our line\r\n const lineData = points.filter((p) => !Number.isNaN(p.y));\r\n\r\n // This is the accessor function we talked about above\r\n let curve;\r\n // Currently only flowcharts get the curve from the settings, perhaps this should\r\n // be expanded to a common setting? Restricting it for now in order not to cause side-effects that\r\n // have not been thought through\r\n if (diagramType === 'graph' || diagramType === 'flowchart') {\r\n curve = edge.curve || curveBasis;\r\n } else {\r\n curve = curveBasis;\r\n }\r\n // curve = curveLinear;\r\n const lineFunction = line()\r\n .x(function (d) {\r\n return d.x;\r\n })\r\n .y(function (d) {\r\n return d.y;\r\n })\r\n .curve(curve);\r\n\r\n // Contruct stroke classes based on properties\r\n let strokeClasses;\r\n switch (edge.thickness) {\r\n case 'normal':\r\n strokeClasses = 'edge-thickness-normal';\r\n break;\r\n case 'thick':\r\n strokeClasses = 'edge-thickness-thick';\r\n break;\r\n default:\r\n strokeClasses = '';\r\n }\r\n switch (edge.pattern) {\r\n case 'solid':\r\n strokeClasses += ' edge-pattern-solid';\r\n break;\r\n case 'dotted':\r\n strokeClasses += ' edge-pattern-dotted';\r\n break;\r\n case 'dashed':\r\n strokeClasses += ' edge-pattern-dashed';\r\n break;\r\n }\r\n\r\n const svgPath = elem\r\n .append('path')\r\n .attr('d', lineFunction(lineData))\r\n .attr('id', edge.id)\r\n .attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : ''))\r\n .attr('style', edge.style);\r\n\r\n // DEBUG code, adds a red circle at each edge coordinate\r\n // edge.points.forEach(point => {\r\n // elem\r\n // .append('circle')\r\n // .style('stroke', 'red')\r\n // .style('fill', 'red')\r\n // .attr('r', 1)\r\n // .attr('cx', point.x)\r\n // .attr('cy', point.y);\r\n // });\r\n\r\n let url = '';\r\n if (getConfig().state.arrowMarkerAbsolute) {\r\n url =\r\n window.location.protocol +\r\n '//' +\r\n window.location.host +\r\n window.location.pathname +\r\n window.location.search;\r\n url = url.replace(/\\(/g, '\\\\(');\r\n url = url.replace(/\\)/g, '\\\\)');\r\n }\r\n log.info('arrowTypeStart', edge.arrowTypeStart);\r\n log.info('arrowTypeEnd', edge.arrowTypeEnd);\r\n\r\n switch (edge.arrowTypeStart) {\r\n case 'arrow_cross':\r\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-crossStart' + ')');\r\n break;\r\n case 'arrow_point':\r\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-pointStart' + ')');\r\n break;\r\n case 'arrow_barb':\r\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-barbStart' + ')');\r\n break;\r\n case 'arrow_circle':\r\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-circleStart' + ')');\r\n break;\r\n case 'aggregation':\r\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-aggregationStart' + ')');\r\n break;\r\n case 'extension':\r\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-extensionStart' + ')');\r\n break;\r\n case 'composition':\r\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-compositionStart' + ')');\r\n break;\r\n case 'dependency':\r\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-dependencyStart' + ')');\r\n break;\r\n default:\r\n }\r\n switch (edge.arrowTypeEnd) {\r\n case 'arrow_cross':\r\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-crossEnd' + ')');\r\n break;\r\n case 'arrow_point':\r\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-pointEnd' + ')');\r\n break;\r\n case 'arrow_barb':\r\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-barbEnd' + ')');\r\n break;\r\n case 'arrow_circle':\r\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-circleEnd' + ')');\r\n break;\r\n case 'aggregation':\r\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-aggregationEnd' + ')');\r\n break;\r\n case 'extension':\r\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-extensionEnd' + ')');\r\n break;\r\n case 'composition':\r\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-compositionEnd' + ')');\r\n break;\r\n case 'dependency':\r\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-dependencyEnd' + ')');\r\n break;\r\n default:\r\n }\r\n let paths = {};\r\n if (pointsHasChanged) {\r\n paths.updatedPath = points;\r\n }\r\n paths.originalPath = edge.points;\r\n return paths;\r\n};\r\n","import dagre from 'dagre';\r\nimport graphlib from 'graphlib';\r\nimport insertMarkers from './markers';\r\nimport { updateNodeBounds } from './shapes/util';\r\nimport {\r\n clear as clearGraphlib,\r\n clusterDb,\r\n adjustClustersAndEdges,\r\n findNonClusterChild,\r\n sortNodesByHierarchy,\r\n} from './mermaid-graphlib';\r\nimport { insertNode, positionNode, clear as clearNodes, setNodeElem } from './nodes';\r\nimport { insertCluster, clear as clearClusters } from './clusters';\r\nimport { insertEdgeLabel, positionEdgeLabel, insertEdge, clear as clearEdges } from './edges';\r\nimport { log } from '../logger';\r\n\r\nconst recursiveRender = (_elem, graph, diagramtype, parentCluster) => {\r\n log.info('Graph in recursive render: XXX', graphlib.json.write(graph), parentCluster);\r\n const dir = graph.graph().rankdir;\r\n log.trace('Dir in recursive render - dir:', dir);\r\n\r\n const elem = _elem.insert('g').attr('class', 'root'); // eslint-disable-line\r\n if (!graph.nodes()) {\r\n log.info('No nodes found for', graph);\r\n } else {\r\n log.info('Recursive render XXX', graph.nodes());\r\n }\r\n if (graph.edges().length > 0) {\r\n log.trace('Recursive edges', graph.edge(graph.edges()[0]));\r\n }\r\n const clusters = elem.insert('g').attr('class', 'clusters'); // eslint-disable-line\r\n const edgePaths = elem.insert('g').attr('class', 'edgePaths');\r\n const edgeLabels = elem.insert('g').attr('class', 'edgeLabels');\r\n const nodes = elem.insert('g').attr('class', 'nodes');\r\n\r\n // Insert nodes, this will insert them into the dom and each node will get a size. The size is updated\r\n // to the abstract node and is later used by dagre for the layout\r\n graph.nodes().forEach(function (v) {\r\n const node = graph.node(v);\r\n if (typeof parentCluster !== 'undefined') {\r\n const data = JSON.parse(JSON.stringify(parentCluster.clusterData));\r\n // data.clusterPositioning = true;\r\n log.info('Setting data for cluster XXX (', v, ') ', data, parentCluster);\r\n graph.setNode(parentCluster.id, data);\r\n if (!graph.parent(v)) {\r\n log.trace('Setting parent', v, parentCluster.id);\r\n graph.setParent(v, parentCluster.id, data);\r\n }\r\n }\r\n log.info('(Insert) Node XXX' + v + ': ' + JSON.stringify(graph.node(v)));\r\n if (node && node.clusterNode) {\r\n // const children = graph.children(v);\r\n log.info('Cluster identified', v, node.width, graph.node(v));\r\n const o = recursiveRender(nodes, node.graph, diagramtype, graph.node(v));\r\n const newEl = o.elem;\r\n updateNodeBounds(node, newEl);\r\n node.diff = o.diff || 0;\r\n log.info('Node bounds (abc123)', v, node, node.width, node.x, node.y);\r\n setNodeElem(newEl, node);\r\n\r\n log.warn('Recursive render complete ', newEl, node);\r\n } else {\r\n if (graph.children(v).length > 0) {\r\n // This is a cluster but not to be rendered recusively\r\n // Render as before\r\n log.info('Cluster - the non recursive path XXX', v, node.id, node, graph);\r\n log.info(findNonClusterChild(node.id, graph));\r\n clusterDb[node.id] = { id: findNonClusterChild(node.id, graph), node };\r\n // insertCluster(clusters, graph.node(v));\r\n } else {\r\n log.info('Node - the non recursive path', v, node.id, node);\r\n insertNode(nodes, graph.node(v), dir);\r\n }\r\n }\r\n });\r\n\r\n // Insert labels, this will insert them into the dom so that the width can be calculated\r\n // Also figure out which edges point to/from clusters and adjust them accordingly\r\n // Edges from/to clusters really points to the first child in the cluster.\r\n // TODO: pick optimal child in the cluster to us as link anchor\r\n graph.edges().forEach(function (e) {\r\n const edge = graph.edge(e.v, e.w, e.name);\r\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\r\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ', e, ' ', JSON.stringify(graph.edge(e)));\r\n\r\n // Check if link is either from or to a cluster\r\n log.info('Fix', clusterDb, 'ids:', e.v, e.w, 'Translateing: ', clusterDb[e.v], clusterDb[e.w]);\r\n insertEdgeLabel(edgeLabels, edge);\r\n });\r\n\r\n graph.edges().forEach(function (e) {\r\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\r\n });\r\n log.info('#############################################');\r\n log.info('### Layout ###');\r\n log.info('#############################################');\r\n log.info(graph);\r\n dagre.layout(graph);\r\n log.info('Graph after layout:', graphlib.json.write(graph));\r\n // Move the nodes to the correct place\r\n let diff = 0;\r\n sortNodesByHierarchy(graph).forEach(function (v) {\r\n const node = graph.node(v);\r\n log.info('Position ' + v + ': ' + JSON.stringify(graph.node(v)));\r\n log.info(\r\n 'Position ' + v + ': (' + node.x,\r\n ',' + node.y,\r\n ') width: ',\r\n node.width,\r\n ' height: ',\r\n node.height\r\n );\r\n if (node && node.clusterNode) {\r\n // clusterDb[node.id].node = node;\r\n\r\n positionNode(node);\r\n } else {\r\n // Non cluster node\r\n if (graph.children(v).length > 0) {\r\n // A cluster in the non-recurive way\r\n // positionCluster(node);\r\n insertCluster(clusters, node);\r\n clusterDb[node.id].node = node;\r\n } else {\r\n positionNode(node);\r\n }\r\n }\r\n });\r\n\r\n // Move the edge labels to the correct place after layout\r\n graph.edges().forEach(function (e) {\r\n const edge = graph.edge(e);\r\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(edge), edge);\r\n\r\n const paths = insertEdge(edgePaths, e, edge, clusterDb, diagramtype, graph);\r\n positionEdgeLabel(edge, paths);\r\n });\r\n\r\n graph.nodes().forEach(function (v) {\r\n const n = graph.node(v);\r\n log.info(v, n.type, n.diff);\r\n if (n.type === 'group') {\r\n diff = n.diff;\r\n }\r\n });\r\n return { elem, diff };\r\n};\r\n\r\nexport const render = (elem, graph, markers, diagramtype, id) => {\r\n insertMarkers(elem, markers, diagramtype, id);\r\n clearNodes();\r\n clearEdges();\r\n clearClusters();\r\n clearGraphlib();\r\n\r\n log.warn('Graph at first:', graphlib.json.write(graph));\r\n adjustClustersAndEdges(graph);\r\n log.warn('Graph after:', graphlib.json.write(graph));\r\n // log.warn('Graph ever after:', graphlib.json.write(graph.node('A').graph));\r\n recursiveRender(elem, graph, diagramtype);\r\n};\r\n\r\n// const shapeDefinitions = {};\r\n// export const addShape = ({ shapeType: fun }) => {\r\n// shapeDefinitions[shapeType] = fun;\r\n// };\r\n\r\n// const arrowDefinitions = {};\r\n// export const addArrow = ({ arrowType: fun }) => {\r\n// arrowDefinitions[arrowType] = fun;\r\n// };\r\n","/*\r\n * Borrowed with love from from dagrge-d3. Many thanks to cpettitt!\r\n */\r\n\r\nimport node from './intersect-node.js';\r\nimport circle from './intersect-circle.js';\r\nimport ellipse from './intersect-ellipse.js';\r\nimport polygon from './intersect-polygon.js';\r\nimport rect from './intersect-rect.js';\r\n\r\nexport default {\r\n node,\r\n circle,\r\n ellipse,\r\n polygon,\r\n rect,\r\n};\r\n","import intersectEllipse from './intersect-ellipse';\r\n\r\n/**\r\n * @param node\r\n * @param rx\r\n * @param point\r\n */\r\nfunction intersectCircle(node, rx, point) {\r\n return intersectEllipse(node, rx, rx, point);\r\n}\r\n\r\nexport default intersectCircle;\r\n","/**\r\n * @param node\r\n * @param rx\r\n * @param ry\r\n * @param point\r\n */\r\nfunction intersectEllipse(node, rx, ry, point) {\r\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\r\n\r\n var cx = node.x;\r\n var cy = node.y;\r\n\r\n var px = cx - point.x;\r\n var py = cy - point.y;\r\n\r\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\r\n\r\n var dx = Math.abs((rx * ry * px) / det);\r\n if (point.x < cx) {\r\n dx = -dx;\r\n }\r\n var dy = Math.abs((rx * ry * py) / det);\r\n if (point.y < cy) {\r\n dy = -dy;\r\n }\r\n\r\n return { x: cx + dx, y: cy + dy };\r\n}\r\n\r\nexport default intersectEllipse;\r\n","/**\r\n * Returns the point at which two lines, p and q, intersect or returns undefined if they do not intersect.\r\n *\r\n * @param p1\r\n * @param p2\r\n * @param q1\r\n * @param q2\r\n */\r\nfunction intersectLine(p1, p2, q1, q2) {\r\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\r\n // p7 and p473.\r\n\r\n var a1, a2, b1, b2, c1, c2;\r\n var r1, r2, r3, r4;\r\n var denom, offset, num;\r\n var x, y;\r\n\r\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\r\n // b1 y + c1 = 0.\r\n a1 = p2.y - p1.y;\r\n b1 = p1.x - p2.x;\r\n c1 = p2.x * p1.y - p1.x * p2.y;\r\n\r\n // Compute r3 and r4.\r\n r3 = a1 * q1.x + b1 * q1.y + c1;\r\n r4 = a1 * q2.x + b1 * q2.y + c1;\r\n\r\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\r\n // same side of line 1, the line segments do not intersect.\r\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\r\n return /*DONT_INTERSECT*/;\r\n }\r\n\r\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\r\n a2 = q2.y - q1.y;\r\n b2 = q1.x - q2.x;\r\n c2 = q2.x * q1.y - q1.x * q2.y;\r\n\r\n // Compute r1 and r2\r\n r1 = a2 * p1.x + b2 * p1.y + c2;\r\n r2 = a2 * p2.x + b2 * p2.y + c2;\r\n\r\n // Check signs of r1 and r2. If both point 1 and point 2 lie\r\n // on same side of second line segment, the line segments do\r\n // not intersect.\r\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\r\n return /*DONT_INTERSECT*/;\r\n }\r\n\r\n // Line segments intersect: compute intersection point.\r\n denom = a1 * b2 - a2 * b1;\r\n if (denom === 0) {\r\n return /*COLLINEAR*/;\r\n }\r\n\r\n offset = Math.abs(denom / 2);\r\n\r\n // The denom/2 is to get rounding instead of truncating. It\r\n // is added or subtracted to the numerator, depending upon the\r\n // sign of the numerator.\r\n num = b1 * c2 - b2 * c1;\r\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\r\n\r\n num = a2 * c1 - a1 * c2;\r\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\r\n\r\n return { x: x, y: y };\r\n}\r\n\r\n/**\r\n * @param r1\r\n * @param r2\r\n */\r\nfunction sameSign(r1, r2) {\r\n return r1 * r2 > 0;\r\n}\r\n\r\nexport default intersectLine;\r\n","module.exports = intersectNode;\r\n\r\n/**\r\n * @param node\r\n * @param point\r\n */\r\nfunction intersectNode(node, point) {\r\n // console.info('Intersect Node');\r\n return node.intersect(point);\r\n}\r\n","/* eslint \"no-console\": off */\r\n\r\nimport intersectLine from './intersect-line';\r\n\r\nexport default intersectPolygon;\r\n\r\n/**\r\n * Returns the point ({x, y}) at which the point argument intersects with the node argument assuming\r\n * that it has the shape specified by polygon.\r\n *\r\n * @param node\r\n * @param polyPoints\r\n * @param point\r\n */\r\nfunction intersectPolygon(node, polyPoints, point) {\r\n var x1 = node.x;\r\n var y1 = node.y;\r\n\r\n var intersections = [];\r\n\r\n var minX = Number.POSITIVE_INFINITY;\r\n var minY = Number.POSITIVE_INFINITY;\r\n if (typeof polyPoints.forEach === 'function') {\r\n polyPoints.forEach(function (entry) {\r\n minX = Math.min(minX, entry.x);\r\n minY = Math.min(minY, entry.y);\r\n });\r\n } else {\r\n minX = Math.min(minX, polyPoints.x);\r\n minY = Math.min(minY, polyPoints.y);\r\n }\r\n\r\n var left = x1 - node.width / 2 - minX;\r\n var top = y1 - node.height / 2 - minY;\r\n\r\n for (var i = 0; i < polyPoints.length; i++) {\r\n var p1 = polyPoints[i];\r\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\r\n var intersect = intersectLine(\r\n node,\r\n point,\r\n { x: left + p1.x, y: top + p1.y },\r\n { x: left + p2.x, y: top + p2.y }\r\n );\r\n if (intersect) {\r\n intersections.push(intersect);\r\n }\r\n }\r\n\r\n if (!intersections.length) {\r\n // console.log('NO INTERSECTION FOUND, RETURN NODE CENTER', node);\r\n return node;\r\n }\r\n\r\n if (intersections.length > 1) {\r\n // More intersections, find the one nearest to edge end point\r\n intersections.sort(function (p, q) {\r\n var pdx = p.x - point.x;\r\n var pdy = p.y - point.y;\r\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\r\n\r\n var qdx = q.x - point.x;\r\n var qdy = q.y - point.y;\r\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\r\n\r\n return distp < distq ? -1 : distp === distq ? 0 : 1;\r\n });\r\n }\r\n return intersections[0];\r\n}\r\n","const intersectRect = (node, point) => {\r\n var x = node.x;\r\n var y = node.y;\r\n\r\n // Rectangle intersection algorithm from:\r\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\r\n var dx = point.x - x;\r\n var dy = point.y - y;\r\n var w = node.width / 2;\r\n var h = node.height / 2;\r\n\r\n var sx, sy;\r\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\r\n // Intersection is top or bottom of rect.\r\n if (dy < 0) {\r\n h = -h;\r\n }\r\n sx = dy === 0 ? 0 : (h * dx) / dy;\r\n sy = h;\r\n } else {\r\n // Intersection is left or right of rect.\r\n if (dx < 0) {\r\n w = -w;\r\n }\r\n sx = w;\r\n sy = dx === 0 ? 0 : (w * dy) / dx;\r\n }\r\n\r\n return { x: x + sx, y: y + sy };\r\n};\r\n\r\nexport default intersectRect;\r\n","/** Setup arrow head and define the marker. The result is appended to the svg. */\r\n\r\nimport { log } from '../logger';\r\n\r\n// Only add the number of markers that the diagram needs\r\nconst insertMarkers = (elem, markerArray, type, id) => {\r\n markerArray.forEach((markerName) => {\r\n markers[markerName](elem, type, id);\r\n });\r\n};\r\n\r\nconst extension = (elem, type, id) => {\r\n log.trace('Making markers for ', id);\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-extensionStart')\r\n .attr('class', 'marker extension ' + type)\r\n .attr('refX', 0)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 190)\r\n .attr('markerHeight', 240)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 1,7 L18,13 V 1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-extensionEnd')\r\n .attr('class', 'marker extension ' + type)\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 28)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\r\n};\r\n\r\nconst composition = (elem, type) => {\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-compositionStart')\r\n .attr('class', 'marker composition ' + type)\r\n .attr('refX', 0)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 190)\r\n .attr('markerHeight', 240)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-compositionEnd')\r\n .attr('class', 'marker composition ' + type)\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 28)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\r\n};\r\nconst aggregation = (elem, type) => {\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-aggregationStart')\r\n .attr('class', 'marker aggregation ' + type)\r\n .attr('refX', 0)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 190)\r\n .attr('markerHeight', 240)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-aggregationEnd')\r\n .attr('class', 'marker aggregation ' + type)\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 28)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\r\n};\r\nconst dependency = (elem, type) => {\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-dependencyStart')\r\n .attr('class', 'marker dependency ' + type)\r\n .attr('refX', 0)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 190)\r\n .attr('markerHeight', 240)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-dependencyEnd')\r\n .attr('class', 'marker dependency ' + type)\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 28)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\r\n};\r\nconst point = (elem, type) => {\r\n elem\r\n .append('marker')\r\n .attr('id', type + '-pointEnd')\r\n .attr('class', 'marker ' + type)\r\n .attr('viewBox', '0 0 10 10')\r\n .attr('refX', 9)\r\n .attr('refY', 5)\r\n .attr('markerUnits', 'userSpaceOnUse')\r\n .attr('markerWidth', 12)\r\n .attr('markerHeight', 12)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\r\n .attr('class', 'arrowMarkerPath')\r\n .style('stroke-width', 1)\r\n .style('stroke-dasharray', '1,0');\r\n elem\r\n .append('marker')\r\n .attr('id', type + '-pointStart')\r\n .attr('class', 'marker ' + type)\r\n .attr('viewBox', '0 0 10 10')\r\n .attr('refX', 0)\r\n .attr('refY', 5)\r\n .attr('markerUnits', 'userSpaceOnUse')\r\n .attr('markerWidth', 12)\r\n .attr('markerHeight', 12)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 0 5 L 10 10 L 10 0 z')\r\n .attr('class', 'arrowMarkerPath')\r\n .style('stroke-width', 1)\r\n .style('stroke-dasharray', '1,0');\r\n};\r\nconst circle = (elem, type) => {\r\n elem\r\n .append('marker')\r\n .attr('id', type + '-circleEnd')\r\n .attr('class', 'marker ' + type)\r\n .attr('viewBox', '0 0 10 10')\r\n .attr('refX', 11)\r\n .attr('refY', 5)\r\n .attr('markerUnits', 'userSpaceOnUse')\r\n .attr('markerWidth', 11)\r\n .attr('markerHeight', 11)\r\n .attr('orient', 'auto')\r\n .append('circle')\r\n .attr('cx', '5')\r\n .attr('cy', '5')\r\n .attr('r', '5')\r\n .attr('class', 'arrowMarkerPath')\r\n .style('stroke-width', 1)\r\n .style('stroke-dasharray', '1,0');\r\n\r\n elem\r\n .append('marker')\r\n .attr('id', type + '-circleStart')\r\n .attr('class', 'marker ' + type)\r\n .attr('viewBox', '0 0 10 10')\r\n .attr('refX', -1)\r\n .attr('refY', 5)\r\n .attr('markerUnits', 'userSpaceOnUse')\r\n .attr('markerWidth', 11)\r\n .attr('markerHeight', 11)\r\n .attr('orient', 'auto')\r\n .append('circle')\r\n .attr('cx', '5')\r\n .attr('cy', '5')\r\n .attr('r', '5')\r\n .attr('class', 'arrowMarkerPath')\r\n .style('stroke-width', 1)\r\n .style('stroke-dasharray', '1,0');\r\n};\r\nconst cross = (elem, type) => {\r\n elem\r\n .append('marker')\r\n .attr('id', type + '-crossEnd')\r\n .attr('class', 'marker cross ' + type)\r\n .attr('viewBox', '0 0 11 11')\r\n .attr('refX', 12)\r\n .attr('refY', 5.2)\r\n .attr('markerUnits', 'userSpaceOnUse')\r\n .attr('markerWidth', 11)\r\n .attr('markerHeight', 11)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n // .attr('stroke', 'black')\r\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\r\n .attr('class', 'arrowMarkerPath')\r\n .style('stroke-width', 2)\r\n .style('stroke-dasharray', '1,0');\r\n\r\n elem\r\n .append('marker')\r\n .attr('id', type + '-crossStart')\r\n .attr('class', 'marker cross ' + type)\r\n .attr('viewBox', '0 0 11 11')\r\n .attr('refX', -1)\r\n .attr('refY', 5.2)\r\n .attr('markerUnits', 'userSpaceOnUse')\r\n .attr('markerWidth', 11)\r\n .attr('markerHeight', 11)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n // .attr('stroke', 'black')\r\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\r\n .attr('class', 'arrowMarkerPath')\r\n .style('stroke-width', 2)\r\n .style('stroke-dasharray', '1,0');\r\n};\r\nconst barb = (elem, type) => {\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-barbEnd')\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 14)\r\n .attr('markerUnits', 'strokeWidth')\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\r\n};\r\n\r\n// TODO rename the class diagram markers to something shape descriptive and semanitc free\r\nconst markers = {\r\n extension,\r\n composition,\r\n aggregation,\r\n dependency,\r\n point,\r\n circle,\r\n cross,\r\n barb,\r\n};\r\nexport default insertMarkers;\r\n","/** Decorates with functions required by mermaids dagre-wrapper. */\r\nimport { log } from '../logger';\r\nimport graphlib from 'graphlib';\r\n\r\nexport let clusterDb = {};\r\nlet decendants = {};\r\nlet parents = {};\r\n\r\nexport const clear = () => {\r\n decendants = {};\r\n parents = {};\r\n clusterDb = {};\r\n};\r\n\r\nconst isDecendant = (id, ancenstorId) => {\r\n // if (id === ancenstorId) return true;\r\n\r\n log.trace(\r\n 'In isDecendant',\r\n ancenstorId,\r\n ' ',\r\n id,\r\n ' = ',\r\n decendants[ancenstorId].indexOf(id) >= 0\r\n );\r\n if (decendants[ancenstorId].indexOf(id) >= 0) return true;\r\n\r\n return false;\r\n};\r\n\r\nconst edgeInCluster = (edge, clusterId) => {\r\n log.info('Decendants of ', clusterId, ' is ', decendants[clusterId]);\r\n log.info('Edge is ', edge);\r\n // Edges to/from the cluster is not in the cluster, they are in the parent\r\n if (edge.v === clusterId) return false;\r\n if (edge.w === clusterId) return false;\r\n\r\n if (!decendants[clusterId]) {\r\n log.debug('Tilt, ', clusterId, ',not in decendants');\r\n return false;\r\n }\r\n log.info('Here ');\r\n\r\n if (decendants[clusterId].indexOf(edge.v) >= 0) return true;\r\n if (isDecendant(edge.v, clusterId)) return true;\r\n if (isDecendant(edge.w, clusterId)) return true;\r\n if (decendants[clusterId].indexOf(edge.w) >= 0) return true;\r\n\r\n return false;\r\n};\r\n\r\nconst copy = (clusterId, graph, newGraph, rootId) => {\r\n log.warn(\r\n 'Copying children of ',\r\n clusterId,\r\n 'root',\r\n rootId,\r\n 'data',\r\n graph.node(clusterId),\r\n rootId\r\n );\r\n const nodes = graph.children(clusterId) || [];\r\n\r\n // Include cluster node if it is not the root\r\n if (clusterId !== rootId) {\r\n nodes.push(clusterId);\r\n }\r\n\r\n log.warn('Copying (nodes) clusterId', clusterId, 'nodes', nodes);\r\n\r\n nodes.forEach((node) => {\r\n if (graph.children(node).length > 0) {\r\n copy(node, graph, newGraph, rootId);\r\n } else {\r\n const data = graph.node(node);\r\n log.info('cp ', node, ' to ', rootId, ' with parent ', clusterId); //,node, data, ' parent is ', clusterId);\r\n newGraph.setNode(node, data);\r\n if (rootId !== graph.parent(node)) {\r\n log.warn('Setting parent', node, graph.parent(node));\r\n newGraph.setParent(node, graph.parent(node));\r\n }\r\n\r\n if (clusterId !== rootId && node !== clusterId) {\r\n log.debug('Setting parent', node, clusterId);\r\n newGraph.setParent(node, clusterId);\r\n } else {\r\n log.info('In copy ', clusterId, 'root', rootId, 'data', graph.node(clusterId), rootId);\r\n log.debug(\r\n 'Not Setting parent for node=',\r\n node,\r\n 'cluster!==rootId',\r\n clusterId !== rootId,\r\n 'node!==clusterId',\r\n node !== clusterId\r\n );\r\n }\r\n const edges = graph.edges(node);\r\n log.debug('Copying Edges', edges);\r\n edges.forEach((edge) => {\r\n log.info('Edge', edge);\r\n const data = graph.edge(edge.v, edge.w, edge.name);\r\n log.info('Edge data', data, rootId);\r\n try {\r\n // Do not copy edges in and out of the root cluster, they belong to the parent graph\r\n if (edgeInCluster(edge, rootId)) {\r\n log.info('Copying as ', edge.v, edge.w, data, edge.name);\r\n newGraph.setEdge(edge.v, edge.w, data, edge.name);\r\n log.info('newGraph edges ', newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\r\n } else {\r\n log.info(\r\n 'Skipping copy of edge ',\r\n edge.v,\r\n '-->',\r\n edge.w,\r\n ' rootId: ',\r\n rootId,\r\n ' clusterId:',\r\n clusterId\r\n );\r\n }\r\n } catch (e) {\r\n log.error(e);\r\n }\r\n });\r\n }\r\n log.debug('Removing node', node);\r\n graph.removeNode(node);\r\n });\r\n};\r\nexport const extractDecendants = (id, graph) => {\r\n // log.debug('Extracting ', id);\r\n const children = graph.children(id);\r\n let res = [].concat(children);\r\n\r\n for (let i = 0; i < children.length; i++) {\r\n parents[children[i]] = id;\r\n res = res.concat(extractDecendants(children[i], graph));\r\n }\r\n\r\n return res;\r\n};\r\n\r\n/**\r\n * Validates the graph, checking that all parent child relation points to existing nodes and that\r\n * edges between nodes also ia correct. When not correct the function logs the discrepancies.\r\n *\r\n * @param graph\r\n */\r\nexport const validate = (graph) => {\r\n const edges = graph.edges();\r\n log.trace('Edges: ', edges);\r\n for (let i = 0; i < edges.length; i++) {\r\n if (graph.children(edges[i].v).length > 0) {\r\n log.trace('The node ', edges[i].v, ' is part of and edge even though it has children');\r\n return false;\r\n }\r\n if (graph.children(edges[i].w).length > 0) {\r\n log.trace('The node ', edges[i].w, ' is part of and edge even though it has children');\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\n/**\r\n * Finds a child that is not a cluster. When faking a edge between a node and a cluster.\r\n *\r\n * @param {Finds a} id\r\n * @param {any} graph\r\n */\r\nexport const findNonClusterChild = (id, graph) => {\r\n // const node = graph.node(id);\r\n log.trace('Searching', id);\r\n // const children = graph.children(id).reverse();\r\n const children = graph.children(id); //.reverse();\r\n log.trace('Searching children of id ', id, children);\r\n if (children.length < 1) {\r\n log.trace('This is a valid node', id);\r\n return id;\r\n }\r\n for (let i = 0; i < children.length; i++) {\r\n const _id = findNonClusterChild(children[i], graph);\r\n if (_id) {\r\n log.trace('Found replacement for', id, ' => ', _id);\r\n return _id;\r\n }\r\n }\r\n};\r\n\r\nconst getAnchorId = (id) => {\r\n if (!clusterDb[id]) {\r\n return id;\r\n }\r\n // If the cluster has no external connections\r\n if (!clusterDb[id].externalConnections) {\r\n return id;\r\n }\r\n\r\n // Return the replacement node\r\n if (clusterDb[id]) {\r\n return clusterDb[id].id;\r\n }\r\n return id;\r\n};\r\n\r\nexport const adjustClustersAndEdges = (graph, depth) => {\r\n if (!graph || depth > 10) {\r\n log.debug('Opting out, no graph ');\r\n return;\r\n } else {\r\n log.debug('Opting in, graph ');\r\n }\r\n // Go through the nodes and for each cluster found, save a replacment node, this can be used when\r\n // faking a link to a cluster\r\n graph.nodes().forEach(function (id) {\r\n const children = graph.children(id);\r\n if (children.length > 0) {\r\n log.warn(\r\n 'Cluster identified',\r\n id,\r\n ' Replacement id in edges: ',\r\n findNonClusterChild(id, graph)\r\n );\r\n decendants[id] = extractDecendants(id, graph);\r\n clusterDb[id] = { id: findNonClusterChild(id, graph), clusterData: graph.node(id) };\r\n }\r\n });\r\n\r\n // Check incoming and outgoing edges for each cluster\r\n graph.nodes().forEach(function (id) {\r\n const children = graph.children(id);\r\n const edges = graph.edges();\r\n if (children.length > 0) {\r\n log.debug('Cluster identified', id, decendants);\r\n edges.forEach((edge) => {\r\n // log.debug('Edge, decendants: ', edge, decendants[id]);\r\n\r\n // Check if any edge leaves the cluster (not the actual cluster, thats a link from the box)\r\n if (edge.v !== id && edge.w !== id) {\r\n // Any edge where either the one of the nodes is decending to the cluster but not the other\r\n // if (decendants[id].indexOf(edge.v) < 0 && decendants[id].indexOf(edge.w) < 0) {\r\n\r\n const d1 = isDecendant(edge.v, id);\r\n const d2 = isDecendant(edge.w, id);\r\n\r\n // d1 xor d2 - if either d1 is true and d2 is false or the other way around\r\n if (d1 ^ d2) {\r\n log.warn('Edge: ', edge, ' leaves cluster ', id);\r\n log.warn('Decendants of XXX ', id, ': ', decendants[id]);\r\n clusterDb[id].externalConnections = true;\r\n }\r\n }\r\n });\r\n } else {\r\n log.debug('Not a cluster ', id, decendants);\r\n }\r\n });\r\n\r\n // For clusters with incoming and/or outgoing edges translate those edges to a real node\r\n // in the cluster inorder to fake the edge\r\n graph.edges().forEach(function (e) {\r\n const edge = graph.edge(e);\r\n log.warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\r\n log.warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\r\n\r\n let v = e.v;\r\n let w = e.w;\r\n // Check if link is either from or to a cluster\r\n log.warn(\r\n 'Fix XXX',\r\n clusterDb,\r\n 'ids:',\r\n e.v,\r\n e.w,\r\n 'Translateing: ',\r\n clusterDb[e.v],\r\n ' --- ',\r\n clusterDb[e.w]\r\n );\r\n if (clusterDb[e.v] || clusterDb[e.w]) {\r\n log.warn('Fixing and trixing - removing XXX', e.v, e.w, e.name);\r\n v = getAnchorId(e.v);\r\n w = getAnchorId(e.w);\r\n graph.removeEdge(e.v, e.w, e.name);\r\n if (v !== e.v) edge.fromCluster = e.v;\r\n if (w !== e.w) edge.toCluster = e.w;\r\n log.warn('Fix Replacing with XXX', v, w, e.name);\r\n graph.setEdge(v, w, edge, e.name);\r\n }\r\n });\r\n log.warn('Adjusted Graph', graphlib.json.write(graph));\r\n extractor(graph, 0);\r\n\r\n log.trace(clusterDb);\r\n\r\n // Remove references to extracted cluster\r\n // graph.edges().forEach(edge => {\r\n // if (isDecendant(edge.v, clusterId) || isDecendant(edge.w, clusterId)) {\r\n // graph.removeEdge(edge);\r\n // }\r\n // });\r\n};\r\n\r\nexport const extractor = (graph, depth) => {\r\n log.warn('extractor - ', depth, graphlib.json.write(graph), graph.children('D'));\r\n if (depth > 10) {\r\n log.error('Bailing out');\r\n return;\r\n }\r\n // For clusters without incoming and/or outgoing edges, create a new cluster-node\r\n // containing the nodes and edges in the custer in a new graph\r\n // for (let i = 0;)\r\n let nodes = graph.nodes();\r\n let hasChildren = false;\r\n for (let i = 0; i < nodes.length; i++) {\r\n const node = nodes[i];\r\n const children = graph.children(node);\r\n hasChildren = hasChildren || children.length > 0;\r\n }\r\n\r\n if (!hasChildren) {\r\n log.debug('Done, no node has children', graph.nodes());\r\n return;\r\n }\r\n // const clusters = Object.keys(clusterDb);\r\n // clusters.forEach(clusterId => {\r\n log.debug('Nodes = ', nodes, depth);\r\n for (let i = 0; i < nodes.length; i++) {\r\n const node = nodes[i];\r\n\r\n log.debug(\r\n 'Extracting node',\r\n node,\r\n clusterDb,\r\n clusterDb[node] && !clusterDb[node].externalConnections,\r\n !graph.parent(node),\r\n graph.node(node),\r\n graph.children('D'),\r\n ' Depth ',\r\n depth\r\n );\r\n // Note that the node might have been removed after the Object.keys call so better check\r\n // that it still is in the game\r\n if (!clusterDb[node]) {\r\n // Skip if the node is not a cluster\r\n log.debug('Not a cluster', node, depth);\r\n // break;\r\n } else if (\r\n !clusterDb[node].externalConnections &&\r\n // !graph.parent(node) &&\r\n graph.children(node) &&\r\n graph.children(node).length > 0\r\n ) {\r\n log.warn(\r\n 'Cluster without external connections, without a parent and with children',\r\n node,\r\n depth\r\n );\r\n\r\n const graphSettings = graph.graph();\r\n let dir = graphSettings.rankdir === 'TB' ? 'LR' : 'TB';\r\n if (clusterDb[node]) {\r\n if (clusterDb[node].clusterData && clusterDb[node].clusterData.dir) {\r\n dir = clusterDb[node].clusterData.dir;\r\n log.warn('Fixing dir', clusterDb[node].clusterData.dir, dir);\r\n }\r\n }\r\n\r\n const clusterGraph = new graphlib.Graph({\r\n multigraph: true,\r\n compound: true,\r\n })\r\n .setGraph({\r\n rankdir: dir, // Todo: set proper spacing\r\n nodesep: 50,\r\n ranksep: 50,\r\n marginx: 8,\r\n marginy: 8,\r\n })\r\n .setDefaultEdgeLabel(function () {\r\n return {};\r\n });\r\n\r\n log.warn('Old graph before copy', graphlib.json.write(graph));\r\n copy(node, graph, clusterGraph, node);\r\n graph.setNode(node, {\r\n clusterNode: true,\r\n id: node,\r\n clusterData: clusterDb[node].clusterData,\r\n labelText: clusterDb[node].labelText,\r\n graph: clusterGraph,\r\n });\r\n log.warn('New graph after copy node: (', node, ')', graphlib.json.write(clusterGraph));\r\n log.debug('Old graph after copy', graphlib.json.write(graph));\r\n } else {\r\n log.warn(\r\n 'Cluster ** ',\r\n node,\r\n ' **not meeting the criteria !externalConnections:',\r\n !clusterDb[node].externalConnections,\r\n ' no parent: ',\r\n !graph.parent(node),\r\n ' children ',\r\n graph.children(node) && graph.children(node).length > 0,\r\n graph.children('D'),\r\n depth\r\n );\r\n log.debug(clusterDb);\r\n }\r\n }\r\n\r\n nodes = graph.nodes();\r\n log.warn('New list of nodes', nodes);\r\n for (let i = 0; i < nodes.length; i++) {\r\n const node = nodes[i];\r\n const data = graph.node(node);\r\n log.warn(' Now next level', node, data);\r\n if (data.clusterNode) {\r\n extractor(data.graph, depth + 1);\r\n }\r\n }\r\n};\r\n\r\nconst sorter = (graph, nodes) => {\r\n if (nodes.length === 0) return [];\r\n let result = Object.assign(nodes);\r\n nodes.forEach((node) => {\r\n const children = graph.children(node);\r\n const sorted = sorter(graph, children);\r\n result = result.concat(sorted);\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport const sortNodesByHierarchy = (graph) => sorter(graph, graph.children());\r\n","import { select } from 'd3';\r\nimport { log } from '../logger'; // eslint-disable-line\r\nimport { labelHelper, updateNodeBounds, insertPolygonShape } from './shapes/util';\r\nimport { getConfig } from '../config';\r\nimport intersect from './intersect/index.js';\r\nimport createLabel from './createLabel';\r\nimport note from './shapes/note';\r\nimport { parseMember } from '../diagrams/class/svgDraw';\r\nimport { evaluate } from '../diagrams/common/common';\r\n\r\nconst question = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const h = bbox.height + node.padding;\r\n const s = w + h;\r\n const points = [\r\n { x: s / 2, y: 0 },\r\n { x: s, y: -s / 2 },\r\n { x: s / 2, y: -s },\r\n { x: 0, y: -s / 2 },\r\n ];\r\n\r\n log.info('Question main (Circle)');\r\n\r\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\r\n questionElem.attr('style', node.style);\r\n updateNodeBounds(node, questionElem);\r\n\r\n node.intersect = function (point) {\r\n log.warn('Intersect called');\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst choice = (parent, node) => {\r\n const shapeSvg = parent\r\n .insert('g')\r\n .attr('class', 'node default')\r\n .attr('id', node.domId || node.id);\r\n\r\n const s = 28;\r\n const points = [\r\n { x: 0, y: s / 2 },\r\n { x: s / 2, y: 0 },\r\n { x: 0, y: -s / 2 },\r\n { x: -s / 2, y: 0 },\r\n ];\r\n\r\n const choice = shapeSvg.insert('polygon', ':first-child').attr(\r\n 'points',\r\n points\r\n .map(function (d) {\r\n return d.x + ',' + d.y;\r\n })\r\n .join(' ')\r\n );\r\n // center the circle around its coordinate\r\n choice.attr('class', 'state-start').attr('r', 7).attr('width', 28).attr('height', 28);\r\n node.width = 28;\r\n node.height = 28;\r\n\r\n node.intersect = function (point) {\r\n return intersect.circle(node, 14, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst hexagon = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const f = 4;\r\n const h = bbox.height + node.padding;\r\n const m = h / f;\r\n const w = bbox.width + 2 * m + node.padding;\r\n const points = [\r\n { x: m, y: 0 },\r\n { x: w - m, y: 0 },\r\n { x: w, y: -h / 2 },\r\n { x: w - m, y: -h },\r\n { x: m, y: -h },\r\n { x: 0, y: -h / 2 },\r\n ];\r\n\r\n const hex = insertPolygonShape(shapeSvg, w, h, points);\r\n hex.attr('style', node.style);\r\n updateNodeBounds(node, hex);\r\n\r\n node.intersect = function (point) {\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst rect_left_inv_arrow = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const h = bbox.height + node.padding;\r\n const points = [\r\n { x: -h / 2, y: 0 },\r\n { x: w, y: 0 },\r\n { x: w, y: -h },\r\n { x: -h / 2, y: -h },\r\n { x: 0, y: -h / 2 },\r\n ];\r\n\r\n const el = insertPolygonShape(shapeSvg, w, h, points);\r\n el.attr('style', node.style);\r\n\r\n node.width = w + h;\r\n node.height = h;\r\n\r\n node.intersect = function (point) {\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst lean_right = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const h = bbox.height + node.padding;\r\n const points = [\r\n { x: (-2 * h) / 6, y: 0 },\r\n { x: w - h / 6, y: 0 },\r\n { x: w + (2 * h) / 6, y: -h },\r\n { x: h / 6, y: -h },\r\n ];\r\n\r\n const el = insertPolygonShape(shapeSvg, w, h, points);\r\n el.attr('style', node.style);\r\n updateNodeBounds(node, el);\r\n\r\n node.intersect = function (point) {\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst lean_left = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const h = bbox.height + node.padding;\r\n const points = [\r\n { x: (2 * h) / 6, y: 0 },\r\n { x: w + h / 6, y: 0 },\r\n { x: w - (2 * h) / 6, y: -h },\r\n { x: -h / 6, y: -h },\r\n ];\r\n\r\n const el = insertPolygonShape(shapeSvg, w, h, points);\r\n el.attr('style', node.style);\r\n updateNodeBounds(node, el);\r\n\r\n node.intersect = function (point) {\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst trapezoid = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const h = bbox.height + node.padding;\r\n const points = [\r\n { x: (-2 * h) / 6, y: 0 },\r\n { x: w + (2 * h) / 6, y: 0 },\r\n { x: w - h / 6, y: -h },\r\n { x: h / 6, y: -h },\r\n ];\r\n\r\n const el = insertPolygonShape(shapeSvg, w, h, points);\r\n el.attr('style', node.style);\r\n updateNodeBounds(node, el);\r\n\r\n node.intersect = function (point) {\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst inv_trapezoid = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const h = bbox.height + node.padding;\r\n const points = [\r\n { x: h / 6, y: 0 },\r\n { x: w - h / 6, y: 0 },\r\n { x: w + (2 * h) / 6, y: -h },\r\n { x: (-2 * h) / 6, y: -h },\r\n ];\r\n\r\n const el = insertPolygonShape(shapeSvg, w, h, points);\r\n el.attr('style', node.style);\r\n updateNodeBounds(node, el);\r\n\r\n node.intersect = function (point) {\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst rect_right_inv_arrow = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const h = bbox.height + node.padding;\r\n const points = [\r\n { x: 0, y: 0 },\r\n { x: w + h / 2, y: 0 },\r\n { x: w, y: -h / 2 },\r\n { x: w + h / 2, y: -h },\r\n { x: 0, y: -h },\r\n ];\r\n\r\n const el = insertPolygonShape(shapeSvg, w, h, points);\r\n el.attr('style', node.style);\r\n updateNodeBounds(node, el);\r\n\r\n node.intersect = function (point) {\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst cylinder = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const rx = w / 2;\r\n const ry = rx / (2.5 + w / 50);\r\n const h = bbox.height + ry + node.padding;\r\n\r\n const shape =\r\n 'M 0,' +\r\n ry +\r\n ' a ' +\r\n rx +\r\n ',' +\r\n ry +\r\n ' 0,0,0 ' +\r\n w +\r\n ' 0 a ' +\r\n rx +\r\n ',' +\r\n ry +\r\n ' 0,0,0 ' +\r\n -w +\r\n ' 0 l 0,' +\r\n h +\r\n ' a ' +\r\n rx +\r\n ',' +\r\n ry +\r\n ' 0,0,0 ' +\r\n w +\r\n ' 0 l 0,' +\r\n -h;\r\n\r\n const el = shapeSvg\r\n .attr('label-offset-y', ry)\r\n .insert('path', ':first-child')\r\n .attr('style', node.style)\r\n .attr('d', shape)\r\n .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\r\n\r\n updateNodeBounds(node, el);\r\n\r\n node.intersect = function (point) {\r\n const pos = intersect.rect(node, point);\r\n const x = pos.x - node.x;\r\n\r\n if (\r\n rx != 0 &&\r\n (Math.abs(x) < node.width / 2 ||\r\n (Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))\r\n ) {\r\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\r\n // solve for y to get adjustion value for pos.y\r\n let y = ry * ry * (1 - (x * x) / (rx * rx));\r\n if (y != 0) y = Math.sqrt(y);\r\n y = ry - y;\r\n if (point.y - node.y > 0) y = -y;\r\n\r\n pos.y += y;\r\n }\r\n\r\n return pos;\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst rect = (parent, node) => {\r\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\r\n\r\n log.trace('Classes = ', node.classes);\r\n // add the rect\r\n const rect = shapeSvg.insert('rect', ':first-child');\r\n\r\n rect\r\n .attr('class', 'basic label-container')\r\n .attr('style', node.style)\r\n .attr('rx', node.rx)\r\n .attr('ry', node.ry)\r\n .attr('x', -bbox.width / 2 - halfPadding)\r\n .attr('y', -bbox.height / 2 - halfPadding)\r\n .attr('width', bbox.width + node.padding)\r\n .attr('height', bbox.height + node.padding);\r\n\r\n updateNodeBounds(node, rect);\r\n\r\n node.intersect = function (point) {\r\n return intersect.rect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst rectWithTitle = (parent, node) => {\r\n // const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes);\r\n\r\n let classes;\r\n if (!node.classes) {\r\n classes = 'node default';\r\n } else {\r\n classes = 'node ' + node.classes;\r\n }\r\n // Add outer g element\r\n const shapeSvg = parent\r\n .insert('g')\r\n .attr('class', classes)\r\n .attr('id', node.domId || node.id);\r\n\r\n // Create the title label and insert it after the rect\r\n const rect = shapeSvg.insert('rect', ':first-child');\r\n // const innerRect = shapeSvg.insert('rect');\r\n const innerLine = shapeSvg.insert('line');\r\n\r\n const label = shapeSvg.insert('g').attr('class', 'label');\r\n\r\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\r\n // const text2 = typeof text2prim === 'object' ? text2prim[0] : text2prim;\r\n\r\n let title = '';\r\n if (typeof text2 === 'object') {\r\n title = text2[0];\r\n } else {\r\n title = text2;\r\n }\r\n log.info('Label text abc79', title, text2, typeof text2 === 'object');\r\n\r\n const text = label.node().appendChild(createLabel(title, node.labelStyle, true, true));\r\n let bbox = { width: 0, height: 0 };\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = text.children[0];\r\n const dv = select(text);\r\n bbox = div.getBoundingClientRect();\r\n dv.attr('width', bbox.width);\r\n dv.attr('height', bbox.height);\r\n }\r\n log.info('Text 2', text2);\r\n const textRows = text2.slice(1, text2.length);\r\n let titleBox = text.getBBox();\r\n const descr = label\r\n .node()\r\n .appendChild(\r\n createLabel(textRows.join ? textRows.join('
') : textRows, node.labelStyle, true, true)\r\n );\r\n\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = descr.children[0];\r\n const dv = select(descr);\r\n bbox = div.getBoundingClientRect();\r\n dv.attr('width', bbox.width);\r\n dv.attr('height', bbox.height);\r\n }\r\n // bbox = label.getBBox();\r\n // log.info(descr);\r\n const halfPadding = node.padding / 2;\r\n select(descr).attr(\r\n 'transform',\r\n 'translate( ' +\r\n // (titleBox.width - bbox.width) / 2 +\r\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\r\n ', ' +\r\n (titleBox.height + halfPadding + 5) +\r\n ')'\r\n );\r\n select(text).attr(\r\n 'transform',\r\n 'translate( ' +\r\n // (titleBox.width - bbox.width) / 2 +\r\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\r\n ', ' +\r\n 0 +\r\n ')'\r\n );\r\n // Get the size of the label\r\n\r\n // Bounding box for title and text\r\n bbox = label.node().getBBox();\r\n\r\n // Center the label\r\n label.attr(\r\n 'transform',\r\n 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\r\n );\r\n\r\n rect\r\n .attr('class', 'outer title-state')\r\n .attr('x', -bbox.width / 2 - halfPadding)\r\n .attr('y', -bbox.height / 2 - halfPadding)\r\n .attr('width', bbox.width + node.padding)\r\n .attr('height', bbox.height + node.padding);\r\n\r\n innerLine\r\n .attr('class', 'divider')\r\n .attr('x1', -bbox.width / 2 - halfPadding)\r\n .attr('x2', bbox.width / 2 + halfPadding)\r\n .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\r\n .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\r\n\r\n updateNodeBounds(node, rect);\r\n\r\n node.intersect = function (point) {\r\n return intersect.rect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst stadium = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const h = bbox.height + node.padding;\r\n const w = bbox.width + h / 4 + node.padding;\r\n\r\n // add the rect\r\n const rect = shapeSvg\r\n .insert('rect', ':first-child')\r\n .attr('style', node.style)\r\n .attr('rx', h / 2)\r\n .attr('ry', h / 2)\r\n .attr('x', -w / 2)\r\n .attr('y', -h / 2)\r\n .attr('width', w)\r\n .attr('height', h);\r\n\r\n updateNodeBounds(node, rect);\r\n\r\n node.intersect = function (point) {\r\n return intersect.rect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst circle = (parent, node) => {\r\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, undefined, true);\r\n const circle = shapeSvg.insert('circle', ':first-child');\r\n\r\n // center the circle around its coordinate\r\n circle\r\n .attr('style', node.style)\r\n .attr('rx', node.rx)\r\n .attr('ry', node.ry)\r\n .attr('r', bbox.width / 2 + halfPadding)\r\n .attr('width', bbox.width + node.padding)\r\n .attr('height', bbox.height + node.padding);\r\n\r\n log.info('Circle main');\r\n\r\n updateNodeBounds(node, circle);\r\n\r\n node.intersect = function (point) {\r\n log.info('Circle intersect', node, bbox.width / 2 + halfPadding, point);\r\n return intersect.circle(node, bbox.width / 2 + halfPadding, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst subroutine = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const h = bbox.height + node.padding;\r\n const points = [\r\n { x: 0, y: 0 },\r\n { x: w, y: 0 },\r\n { x: w, y: -h },\r\n { x: 0, y: -h },\r\n { x: 0, y: 0 },\r\n { x: -8, y: 0 },\r\n { x: w + 8, y: 0 },\r\n { x: w + 8, y: -h },\r\n { x: -8, y: -h },\r\n { x: -8, y: 0 },\r\n ];\r\n\r\n const el = insertPolygonShape(shapeSvg, w, h, points);\r\n el.attr('style', node.style);\r\n updateNodeBounds(node, el);\r\n\r\n node.intersect = function (point) {\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst start = (parent, node) => {\r\n const shapeSvg = parent\r\n .insert('g')\r\n .attr('class', 'node default')\r\n .attr('id', node.domId || node.id);\r\n const circle = shapeSvg.insert('circle', ':first-child');\r\n\r\n // center the circle around its coordinate\r\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\r\n\r\n updateNodeBounds(node, circle);\r\n\r\n node.intersect = function (point) {\r\n return intersect.circle(node, 7, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst forkJoin = (parent, node, dir) => {\r\n const shapeSvg = parent\r\n .insert('g')\r\n .attr('class', 'node default')\r\n .attr('id', node.domId || node.id);\r\n\r\n let width = 70;\r\n let height = 10;\r\n\r\n if (dir === 'LR') {\r\n width = 10;\r\n height = 70;\r\n }\r\n\r\n const shape = shapeSvg\r\n .append('rect')\r\n .attr('x', (-1 * width) / 2)\r\n .attr('y', (-1 * height) / 2)\r\n .attr('width', width)\r\n .attr('height', height)\r\n .attr('class', 'fork-join');\r\n\r\n updateNodeBounds(node, shape);\r\n node.height = node.height + node.padding / 2;\r\n node.width = node.width + node.padding / 2;\r\n node.intersect = function (point) {\r\n return intersect.rect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst end = (parent, node) => {\r\n const shapeSvg = parent\r\n .insert('g')\r\n .attr('class', 'node default')\r\n .attr('id', node.domId || node.id);\r\n const innerCircle = shapeSvg.insert('circle', ':first-child');\r\n const circle = shapeSvg.insert('circle', ':first-child');\r\n\r\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\r\n\r\n innerCircle.attr('class', 'state-end').attr('r', 5).attr('width', 10).attr('height', 10);\r\n\r\n updateNodeBounds(node, circle);\r\n\r\n node.intersect = function (point) {\r\n return intersect.circle(node, 7, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst class_box = (parent, node) => {\r\n const halfPadding = node.padding / 2;\r\n const rowPadding = 4;\r\n const lineHeight = 8;\r\n\r\n let classes;\r\n if (!node.classes) {\r\n classes = 'node default';\r\n } else {\r\n classes = 'node ' + node.classes;\r\n }\r\n // Add outer g element\r\n const shapeSvg = parent\r\n .insert('g')\r\n .attr('class', classes)\r\n .attr('id', node.domId || node.id);\r\n\r\n // Create the title label and insert it after the rect\r\n const rect = shapeSvg.insert('rect', ':first-child');\r\n const topLine = shapeSvg.insert('line');\r\n const bottomLine = shapeSvg.insert('line');\r\n let maxWidth = 0;\r\n let maxHeight = rowPadding;\r\n\r\n const labelContainer = shapeSvg.insert('g').attr('class', 'label');\r\n let verticalPos = 0;\r\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\r\n\r\n // 1. Create the labels\r\n const interfaceLabelText = node.classData.annotations[0]\r\n ? '«' + node.classData.annotations[0] + '»'\r\n : '';\r\n const interfaceLabel = labelContainer\r\n .node()\r\n .appendChild(createLabel(interfaceLabelText, node.labelStyle, true, true));\r\n let interfaceBBox = interfaceLabel.getBBox();\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = interfaceLabel.children[0];\r\n const dv = select(interfaceLabel);\r\n interfaceBBox = div.getBoundingClientRect();\r\n dv.attr('width', interfaceBBox.width);\r\n dv.attr('height', interfaceBBox.height);\r\n }\r\n if (node.classData.annotations[0]) {\r\n maxHeight += interfaceBBox.height + rowPadding;\r\n maxWidth += interfaceBBox.width;\r\n }\r\n\r\n let classTitleString = node.classData.id;\r\n\r\n if (node.classData.type !== undefined && node.classData.type !== '') {\r\n if (getConfig().flowchart.htmlLabels) {\r\n classTitleString += '<' + node.classData.type + '>';\r\n } else {\r\n classTitleString += '<' + node.classData.type + '>';\r\n }\r\n }\r\n const classTitleLabel = labelContainer\r\n .node()\r\n .appendChild(createLabel(classTitleString, node.labelStyle, true, true));\r\n select(classTitleLabel).attr('class', 'classTitle');\r\n let classTitleBBox = classTitleLabel.getBBox();\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = classTitleLabel.children[0];\r\n const dv = select(classTitleLabel);\r\n classTitleBBox = div.getBoundingClientRect();\r\n dv.attr('width', classTitleBBox.width);\r\n dv.attr('height', classTitleBBox.height);\r\n }\r\n maxHeight += classTitleBBox.height + rowPadding;\r\n if (classTitleBBox.width > maxWidth) {\r\n maxWidth = classTitleBBox.width;\r\n }\r\n const classAttributes = [];\r\n node.classData.members.forEach((str) => {\r\n const parsedInfo = parseMember(str);\r\n let parsedText = parsedInfo.displayText;\r\n if (getConfig().flowchart.htmlLabels) {\r\n parsedText = parsedText.replace(//g, '>');\r\n }\r\n const lbl = labelContainer\r\n .node()\r\n .appendChild(\r\n createLabel(\r\n parsedText,\r\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\r\n true,\r\n true\r\n )\r\n );\r\n let bbox = lbl.getBBox();\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = lbl.children[0];\r\n const dv = select(lbl);\r\n bbox = div.getBoundingClientRect();\r\n dv.attr('width', bbox.width);\r\n dv.attr('height', bbox.height);\r\n }\r\n if (bbox.width > maxWidth) {\r\n maxWidth = bbox.width;\r\n }\r\n maxHeight += bbox.height + rowPadding;\r\n classAttributes.push(lbl);\r\n });\r\n\r\n maxHeight += lineHeight;\r\n\r\n const classMethods = [];\r\n node.classData.methods.forEach((str) => {\r\n const parsedInfo = parseMember(str);\r\n let displayText = parsedInfo.displayText;\r\n if (getConfig().flowchart.htmlLabels) {\r\n displayText = displayText.replace(//g, '>');\r\n }\r\n const lbl = labelContainer\r\n .node()\r\n .appendChild(\r\n createLabel(\r\n displayText,\r\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\r\n true,\r\n true\r\n )\r\n );\r\n let bbox = lbl.getBBox();\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = lbl.children[0];\r\n const dv = select(lbl);\r\n bbox = div.getBoundingClientRect();\r\n dv.attr('width', bbox.width);\r\n dv.attr('height', bbox.height);\r\n }\r\n if (bbox.width > maxWidth) {\r\n maxWidth = bbox.width;\r\n }\r\n maxHeight += bbox.height + rowPadding;\r\n\r\n classMethods.push(lbl);\r\n });\r\n\r\n maxHeight += lineHeight;\r\n\r\n // 2. Position the labels\r\n\r\n // position the interface label\r\n if (hasInterface) {\r\n let diffX = (maxWidth - interfaceBBox.width) / 2;\r\n select(interfaceLabel).attr(\r\n 'transform',\r\n 'translate( ' + ((-1 * maxWidth) / 2 + diffX) + ', ' + (-1 * maxHeight) / 2 + ')'\r\n );\r\n verticalPos = interfaceBBox.height + rowPadding;\r\n }\r\n // Positin the class title label\r\n let diffX = (maxWidth - classTitleBBox.width) / 2;\r\n select(classTitleLabel).attr(\r\n 'transform',\r\n 'translate( ' +\r\n ((-1 * maxWidth) / 2 + diffX) +\r\n ', ' +\r\n ((-1 * maxHeight) / 2 + verticalPos) +\r\n ')'\r\n );\r\n verticalPos += classTitleBBox.height + rowPadding;\r\n\r\n topLine\r\n .attr('class', 'divider')\r\n .attr('x1', -maxWidth / 2 - halfPadding)\r\n .attr('x2', maxWidth / 2 + halfPadding)\r\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\r\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\r\n\r\n verticalPos += lineHeight;\r\n\r\n classAttributes.forEach((lbl) => {\r\n select(lbl).attr(\r\n 'transform',\r\n 'translate( ' +\r\n -maxWidth / 2 +\r\n ', ' +\r\n ((-1 * maxHeight) / 2 + verticalPos + lineHeight / 2) +\r\n ')'\r\n );\r\n verticalPos += classTitleBBox.height + rowPadding;\r\n });\r\n\r\n verticalPos += lineHeight;\r\n bottomLine\r\n .attr('class', 'divider')\r\n .attr('x1', -maxWidth / 2 - halfPadding)\r\n .attr('x2', maxWidth / 2 + halfPadding)\r\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\r\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\r\n\r\n verticalPos += lineHeight;\r\n\r\n classMethods.forEach((lbl) => {\r\n select(lbl).attr(\r\n 'transform',\r\n 'translate( ' + -maxWidth / 2 + ', ' + ((-1 * maxHeight) / 2 + verticalPos) + ')'\r\n );\r\n verticalPos += classTitleBBox.height + rowPadding;\r\n });\r\n //\r\n // let bbox;\r\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n // const div = interfaceLabel.children[0];\r\n // const dv = select(interfaceLabel);\r\n // bbox = div.getBoundingClientRect();\r\n // dv.attr('width', bbox.width);\r\n // dv.attr('height', bbox.height);\r\n // }\r\n // bbox = labelContainer.getBBox();\r\n\r\n // log.info('Text 2', text2);\r\n // const textRows = text2.slice(1, text2.length);\r\n // let titleBox = text.getBBox();\r\n // const descr = label\r\n // .node()\r\n // .appendChild(createLabel(textRows.join('
'), node.labelStyle, true, true));\r\n\r\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n // const div = descr.children[0];\r\n // const dv = select(descr);\r\n // bbox = div.getBoundingClientRect();\r\n // dv.attr('width', bbox.width);\r\n // dv.attr('height', bbox.height);\r\n // }\r\n // // bbox = label.getBBox();\r\n // // log.info(descr);\r\n // select(descr).attr(\r\n // 'transform',\r\n // 'translate( ' +\r\n // // (titleBox.width - bbox.width) / 2 +\r\n // (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\r\n // ', ' +\r\n // (titleBox.height + halfPadding + 5) +\r\n // ')'\r\n // );\r\n // select(text).attr(\r\n // 'transform',\r\n // 'translate( ' +\r\n // // (titleBox.width - bbox.width) / 2 +\r\n // (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\r\n // ', ' +\r\n // 0 +\r\n // ')'\r\n // );\r\n // // Get the size of the label\r\n\r\n // // Bounding box for title and text\r\n // bbox = label.node().getBBox();\r\n\r\n // // Center the label\r\n // label.attr(\r\n // 'transform',\r\n // 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\r\n // );\r\n\r\n rect\r\n .attr('class', 'outer title-state')\r\n .attr('x', -maxWidth / 2 - halfPadding)\r\n .attr('y', -(maxHeight / 2) - halfPadding)\r\n .attr('width', maxWidth + node.padding)\r\n .attr('height', maxHeight + node.padding);\r\n\r\n // innerLine\r\n // .attr('class', 'divider')\r\n // .attr('x1', -bbox.width / 2 - halfPadding)\r\n // .attr('x2', bbox.width / 2 + halfPadding)\r\n // .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\r\n // .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\r\n\r\n updateNodeBounds(node, rect);\r\n\r\n node.intersect = function (point) {\r\n return intersect.rect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst shapes = {\r\n question,\r\n rect,\r\n rectWithTitle,\r\n choice,\r\n circle,\r\n stadium,\r\n hexagon,\r\n rect_left_inv_arrow,\r\n lean_right,\r\n lean_left,\r\n trapezoid,\r\n inv_trapezoid,\r\n rect_right_inv_arrow,\r\n cylinder,\r\n start,\r\n end,\r\n note,\r\n subroutine,\r\n fork: forkJoin,\r\n join: forkJoin,\r\n class_box,\r\n};\r\n\r\nlet nodeElems = {};\r\n\r\nexport const insertNode = (elem, node, dir) => {\r\n let newEl;\r\n let el;\r\n\r\n // Add link when appropriate\r\n if (node.link) {\r\n newEl = elem\r\n .insert('svg:a')\r\n .attr('xlink:href', node.link)\r\n .attr('target', node.linkTarget || '_blank');\r\n el = shapes[node.shape](newEl, node, dir);\r\n } else {\r\n el = shapes[node.shape](elem, node, dir);\r\n newEl = el;\r\n }\r\n if (node.tooltip) {\r\n el.attr('title', node.tooltip);\r\n }\r\n if (node.class) {\r\n el.attr('class', 'node default ' + node.class);\r\n }\r\n\r\n nodeElems[node.id] = newEl;\r\n\r\n if (node.haveCallback) {\r\n nodeElems[node.id].attr('class', nodeElems[node.id].attr('class') + ' clickable');\r\n }\r\n};\r\nexport const setNodeElem = (elem, node) => {\r\n nodeElems[node.id] = elem;\r\n};\r\nexport const clear = () => {\r\n nodeElems = {};\r\n};\r\n\r\nexport const positionNode = (node) => {\r\n const el = nodeElems[node.id];\r\n log.trace(\r\n 'Transforming node',\r\n node.diff,\r\n node,\r\n 'translate(' + (node.x - node.width / 2 - 5) + ', ' + node.width / 2 + ')'\r\n );\r\n const padding = 8;\r\n const diff = node.diff || 0;\r\n if (node.clusterNode) {\r\n el.attr(\r\n 'transform',\r\n 'translate(' +\r\n (node.x + diff - node.width / 2) +\r\n ', ' +\r\n (node.y - node.height / 2 - padding) +\r\n ')'\r\n );\r\n } else {\r\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\r\n }\r\n return diff;\r\n};\r\n","import { updateNodeBounds, labelHelper } from './util';\r\nimport { log } from '../../logger'; // eslint-disable-line\r\nimport intersect from '../intersect/index.js';\r\n\r\nconst note = (parent, node) => {\r\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\r\n\r\n log.info('Classes = ', node.classes);\r\n // add the rect\r\n const rect = shapeSvg.insert('rect', ':first-child');\r\n\r\n rect\r\n .attr('rx', node.rx)\r\n .attr('ry', node.ry)\r\n .attr('x', -bbox.width / 2 - halfPadding)\r\n .attr('y', -bbox.height / 2 - halfPadding)\r\n .attr('width', bbox.width + node.padding)\r\n .attr('height', bbox.height + node.padding);\r\n\r\n updateNodeBounds(node, rect);\r\n\r\n node.intersect = function (point) {\r\n return intersect.rect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nexport default note;\r\n","import createLabel from '../createLabel';\r\nimport { getConfig } from '../../config';\r\nimport { decodeEntities } from '../../mermaidAPI';\r\nimport { select } from 'd3';\r\nimport { evaluate, sanitizeText } from '../../diagrams/common/common';\r\nexport const labelHelper = (parent, node, _classes, isNode) => {\r\n let classes;\r\n if (!_classes) {\r\n classes = 'node default';\r\n } else {\r\n classes = _classes;\r\n }\r\n // Add outer g element\r\n const shapeSvg = parent\r\n .insert('g')\r\n .attr('class', classes)\r\n .attr('id', node.domId || node.id);\r\n\r\n // Create the label and insert it after the rect\r\n const label = shapeSvg.insert('g').attr('class', 'label').attr('style', node.labelStyle);\r\n\r\n const text = label\r\n .node()\r\n .appendChild(\r\n createLabel(\r\n sanitizeText(decodeEntities(node.labelText), getConfig()),\r\n node.labelStyle,\r\n false,\r\n isNode\r\n )\r\n );\r\n\r\n // Get the size of the label\r\n let bbox = text.getBBox();\r\n\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = text.children[0];\r\n const dv = select(text);\r\n bbox = div.getBoundingClientRect();\r\n dv.attr('width', bbox.width);\r\n dv.attr('height', bbox.height);\r\n }\r\n\r\n const halfPadding = node.padding / 2;\r\n\r\n // Center the label\r\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\r\n\r\n return { shapeSvg, bbox, halfPadding, label };\r\n};\r\n\r\nexport const updateNodeBounds = (node, element) => {\r\n const bbox = element.node().getBBox();\r\n node.width = bbox.width;\r\n node.height = bbox.height;\r\n};\r\n\r\n/**\r\n * @param parent\r\n * @param w\r\n * @param h\r\n * @param points\r\n */\r\nexport function insertPolygonShape(parent, w, h, points) {\r\n return parent\r\n .insert('polygon', ':first-child')\r\n .attr(\r\n 'points',\r\n points\r\n .map(function (d) {\r\n return d.x + ',' + d.y;\r\n })\r\n .join(' ')\r\n )\r\n .attr('class', 'label-container')\r\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\r\n}\r\n","import theme from './themes';\r\n/**\r\n * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click\r\n * here](8.6.0_docs.md)].**\r\n *\r\n * ## **What follows are config instructions for older versions**\r\n *\r\n * These are the default options which can be overridden with the initialization call like so:\r\n *\r\n * **Example 1:**

 mermaid.initialize({ flowchart:{ htmlLabels: false } }); 
\r\n *\r\n * **Example 2:**
  
\r\n *\r\n * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults).\r\n * A description of each option follows below.\r\n *\r\n * @name Configuration\r\n */\r\nconst config = {\r\n /**\r\n * Theme , the CSS style sheet\r\n *\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------- | --------------- | ------ | -------- | ---------------------------------------------- |\r\n * | theme | Built in Themes | string | Optional | 'default', 'forest', 'dark', 'neutral', 'null' |\r\n *\r\n * **Notes:** To disable any pre-defined mermaid theme, use \"null\".
 \"theme\": \"forest\",\r\n   * \"themeCSS\": \".node rect { fill: red; }\" 
\r\n */\r\n theme: 'default',\r\n themeVariables: theme['default'].getThemeVariables(),\r\n themeCSS: undefined,\r\n /* **maxTextSize** - The maximum allowed size of the users text diamgram */\r\n maxTextSize: 50000,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ---------- | ------------------------------------------------------ | ------ | -------- | --------------------------- |\r\n * | fontFamily | specifies the font to be used in the rendered diagrams | string | Required | Any Possible CSS FontFamily |\r\n *\r\n * **Notes:** Default value: '\"trebuchet ms\", verdana, arial, sans-serif;'.\r\n */\r\n fontFamily: '\"trebuchet ms\", verdana, arial, sans-serif;',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------- | ----------------------------------------------------- | ---------------- | -------- | ------------- |\r\n * | logLevel | This option decides the amount of logging to be used. | string \\| number | Required | 1, 2, 3, 4, 5 |\r\n *\r\n * **Notes:**\r\n *\r\n * - Debug: 1\r\n * - Info: 2\r\n * - Warn: 3\r\n * - Error: 4\r\n * - Fatal: 5 (default)\r\n */\r\n logLevel: 5,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ------------- | --------------------------------- | ------ | -------- | ------------------------------- |\r\n * | securitylevel | Level of trust for parsed diagram | string | Required | 'strict', 'loose', 'antiscript' |\r\n *\r\n * **Notes**:\r\n *\r\n * - **strict**: (**default**) tags in text are encoded, click functionality is disabled\r\n * - **loose**: tags in text are allowed, click functionality is enabled\r\n * - **antiscript**: html tags in text are allowed, (only script element is removed), click\r\n * functionality is enabled\r\n */\r\n securityLevel: 'strict',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | -------------------------------------------- | ------- | -------- | ----------- |\r\n * | startOnLoad | Dictates whether mermaid starts on Page load | boolean | Required | true, false |\r\n *\r\n * **Notes:** Default value: true\r\n */\r\n startOnLoad: true,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ------------------- | ---------------------------------------------------------------------------- | ------- | -------- | ----------- |\r\n * | arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | boolean | Required | true, false |\r\n *\r\n * **Notes**:\r\n *\r\n * This matters if you are using base tag settings.\r\n *\r\n * Default value: false\r\n */\r\n arrowMarkerAbsolute: false,\r\n\r\n /**\r\n * This option controls which currentConfig keys are considered *secure* and can only be changed\r\n * via call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to the\r\n * `secure` keys in the current currentConfig. This prevents malicious graph directives from\r\n * overriding a site's default security.\r\n *\r\n * **Notes**:\r\n *\r\n * Default value: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize']\r\n */\r\n secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],\r\n\r\n /**\r\n * This option controls if the generated ids of nodes in the SVG are generated randomly or based\r\n * on a seed. If set to false, the IDs are generated based on the current date and thus are not\r\n * deterministic. This is the default behaviour.\r\n *\r\n * **Notes**:\r\n *\r\n * This matters if your files are checked into sourcecontrol e.g. git and should not change unless\r\n * content is changed.\r\n *\r\n * Default value: false\r\n */\r\n deterministicIds: false,\r\n\r\n /**\r\n * This option is the optional seed for deterministic ids. if set to undefined but\r\n * deterministicIds is true, a simple number iterator is used. You can set this attribute to base\r\n * the seed on a static string.\r\n */\r\n deterministicIDSeed: undefined,\r\n\r\n /** The object containing configurations specific for flowcharts */\r\n flowchart: {\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |\r\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n *\r\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins,\r\n * expressed in pixels\r\n *\r\n * Default value: 8\r\n */\r\n diagramPadding: 8,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ---------- | -------------------------------------------------------------------------------------------- | ------- | -------- | ----------- |\r\n * | htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | boolean | Required | true, false |\r\n *\r\n * **Notes:** Default value: true.\r\n */\r\n htmlLabels: true,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | --------------------------------------------------- | ------- | -------- | ------------------- |\r\n * | nodeSpacing | Defines the spacing between nodes on the same level | Integer | Required | Any positive Number |\r\n *\r\n * **Notes:**\r\n *\r\n * Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the\r\n * vertical spacing for LR as well as RL graphs.**\r\n *\r\n * Default value: 50\r\n */\r\n nodeSpacing: 50,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | ----------------------------------------------------- | ------- | -------- | ------------------- |\r\n * | rankSpacing | Defines the spacing between nodes on different levels | Integer | Required | Any Positive Number |\r\n *\r\n * **Notes**:\r\n *\r\n * Pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal\r\n * spacing for LR as well as RL graphs.\r\n *\r\n * Default value 50\r\n */\r\n rankSpacing: 50,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------- | -------------------------------------------------- | ------ | -------- | ----------------------------- |\r\n * | curve | Defines how mermaid renders curves for flowcharts. | string | Required | 'basis', 'linear', 'cardinal' |\r\n *\r\n * **Notes:**\r\n *\r\n * Default Value: 'basis'\r\n */\r\n curve: 'basis',\r\n // Only used in new experimental rendering\r\n // represents the padding between the labels and the shape\r\n padding: 15,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | ----------- | ------- | -------- | ----------- |\r\n * | useMaxWidth | See notes | boolean | 4 | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set the height and width is set to 100% and is then scaling with the\r\n * available space if not the absolute space required is used.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\r\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\r\n *\r\n * **Notes:**\r\n *\r\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\r\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\r\n *\r\n * Default value: 'dagre-d3'\r\n */\r\n defaultRenderer: 'dagre-d3',\r\n },\r\n\r\n /** The object containing configurations specific for sequence diagrams */\r\n sequence: {\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------------- | ---------------------------- | ------- | -------- | ------------------ |\r\n * | activationWidth | Width of the activation rect | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value :10\r\n */\r\n activationWidth: 10,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\r\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 50\r\n */\r\n diagramMarginX: 50,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | -------------- | ------------------------------------------------- | ------- | -------- | ------------------ |\r\n * | diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 10\r\n */\r\n diagramMarginY: 10,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | --------------------- | ------- | -------- | ------------------ |\r\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 50\r\n */\r\n actorMargin: 50,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------- | -------------------- | ------- | -------- | ------------------ |\r\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 150\r\n */\r\n width: 150,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------- | --------------------- | ------- | -------- | ------------------ |\r\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 65\r\n */\r\n height: 65,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------- | ------------------------ | ------- | -------- | ------------------ |\r\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 10\r\n */\r\n boxMargin: 10,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\r\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 5\r\n */\r\n boxTextMargin: 5,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ---------- | ------------------- | ------- | -------- | ------------------ |\r\n * | noteMargin | margin around notes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 10\r\n */\r\n noteMargin: 10,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ------------- | ---------------------- | ------- | -------- | ------------------ |\r\n * | messageMargin | Space between messages | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 35\r\n */\r\n messageMargin: 35,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ------------ | --------------------------- | ------ | -------- | ------------------------- |\r\n * | messageAlign | Multiline message alignment | string | Required | 'left', 'center', 'right' |\r\n *\r\n * **Notes:** Default value: 'center'\r\n */\r\n messageAlign: 'center',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ------------ | --------------------------- | ------- | -------- | ----------- |\r\n * | mirrorActors | Mirror actors under diagram | boolean | Required | true, false |\r\n *\r\n * **Notes:** Default value: true\r\n */\r\n mirrorActors: true,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ---------- | ----------------------------------------------------------------------- | ------- | -------- | ----------- |\r\n * | forceMenus | forces actor popup menus to always be visible (to support E2E testing). | Boolean | Required | True, False |\r\n *\r\n * **Notes:**\r\n *\r\n * Default value: false.\r\n */\r\n forceMenus: false,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\r\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n *\r\n * Depending on css styling this might need adjustment.\r\n *\r\n * Default value: 1\r\n */\r\n bottomMarginAdj: 1,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | ----------- | ------- | -------- | ----------- |\r\n * | useMaxWidth | See Notes | boolean | Required | true, false |\r\n *\r\n * **Notes:** When this flag is set to true, the height and width is set to 100% and is then\r\n * scaling with the available space. If set to false, the absolute space required is used.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | ------------------------------------ | ------- | -------- | ----------- |\r\n * | rightAngles | display curve arrows as right angles | boolean | Required | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * This will display arrows that start and begin at the same node as right angles, rather than a curve\r\n *\r\n * Default value: false\r\n */\r\n rightAngles: false,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ------------------- | ------------------------------- | ------- | -------- | ----------- |\r\n * | showSequenceNumbers | This will show the node numbers | boolean | Required | true, false |\r\n *\r\n * **Notes:** Default value: false\r\n */\r\n showSequenceNumbers: false,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\r\n * | actorFontSize | This sets the font size of the actor's description | Integer | Require | Any Positive Value |\r\n *\r\n * **Notes:** **Default value 14**..\r\n */\r\n actorFontSize: 14,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------------- | ---------------------------------------------------- | ------ | -------- | --------------------------- |\r\n * | actorFontFamily | This sets the font family of the actor's description | string | Required | Any Possible CSS FontFamily |\r\n *\r\n * **Notes:** Default value: \"'Open-Sans\", \"sans-serif\"'\r\n */\r\n actorFontFamily: '\"Open-Sans\", \"sans-serif\"',\r\n\r\n /**\r\n * This sets the font weight of the actor's description\r\n *\r\n * **Notes:** Default value: 400.\r\n */\r\n actorFontWeight: 400,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ------------ | ----------------------------------------------- | ------- | -------- | ------------------ |\r\n * | noteFontSize | This sets the font size of actor-attached notes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 14\r\n */\r\n noteFontSize: 14,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | -------------- | -------------------------------------------------- | ------ | -------- | --------------------------- |\r\n * | noteFontFamily | This sets the font family of actor-attached notes. | string | Required | Any Possible CSS FontFamily |\r\n *\r\n * **Notes:** Default value: ''\"trebuchet ms\", verdana, arial, sans-serif'\r\n */\r\n noteFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\r\n\r\n /**\r\n * This sets the font weight of the note's description\r\n *\r\n * **Notes:** Default value: 400\r\n */\r\n noteFontWeight: 400,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------- | ---------------------------------------------------- | ------ | -------- | ------------------------- |\r\n * | noteAlign | This sets the text alignment of actor-attached notes | string | required | 'left', 'center', 'right' |\r\n *\r\n * **Notes:** Default value: 'center'\r\n */\r\n noteAlign: 'center',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------------- | ----------------------------------------- | ------- | -------- | ------------------- |\r\n * | messageFontSize | This sets the font size of actor messages | Integer | Required | Any Positive Number |\r\n *\r\n * **Notes:** Default value: 16\r\n */\r\n messageFontSize: 16,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------------- | ------------------------------------------- | ------ | -------- | --------------------------- |\r\n * | messageFontFamily | This sets the font family of actor messages | string | Required | Any Possible CSS FontFamily |\r\n *\r\n * **Notes:** Default value: '\"trebuchet ms\", verdana, arial, sans-serif'\r\n */\r\n messageFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\r\n\r\n /**\r\n * This sets the font weight of the message's description\r\n *\r\n * **Notes:** Default value: 400.\r\n */\r\n messageFontWeight: 400,\r\n\r\n /**\r\n * This sets the auto-wrap state for the diagram\r\n *\r\n * **Notes:** Default value: false.\r\n */\r\n wrap: false,\r\n\r\n /**\r\n * This sets the auto-wrap padding for the diagram (sides only)\r\n *\r\n * **Notes:** Default value: 0.\r\n */\r\n wrapPadding: 10,\r\n\r\n /**\r\n * This sets the width of the loop-box (loop, alt, opt, par)\r\n *\r\n * **Notes:** Default value: 50.\r\n */\r\n labelBoxWidth: 50,\r\n\r\n /**\r\n * This sets the height of the loop-box (loop, alt, opt, par)\r\n *\r\n * **Notes:** Default value: 20.\r\n */\r\n labelBoxHeight: 20,\r\n\r\n messageFont: function () {\r\n return {\r\n fontFamily: this.messageFontFamily,\r\n fontSize: this.messageFontSize,\r\n fontWeight: this.messageFontWeight,\r\n };\r\n },\r\n noteFont: function () {\r\n return {\r\n fontFamily: this.noteFontFamily,\r\n fontSize: this.noteFontSize,\r\n fontWeight: this.noteFontWeight,\r\n };\r\n },\r\n actorFont: function () {\r\n return {\r\n fontFamily: this.actorFontFamily,\r\n fontSize: this.actorFontSize,\r\n fontWeight: this.actorFontWeight,\r\n };\r\n },\r\n },\r\n\r\n /** The object containing configurations specific for gantt diagrams */\r\n gantt: {\r\n /**\r\n * ### titleTopMargin\r\n *\r\n * | Parameter | Description | Type | Required | Values |\r\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\r\n * | titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 25\r\n */\r\n titleTopMargin: 25,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------- | ----------------------------------- | ------- | -------- | ------------------ |\r\n * | barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 20\r\n */\r\n barHeight: 20,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------- | ---------------------------------------------------------------- | ------- | -------- | ------------------ |\r\n * | barGap | The margin between the different activities in the gantt diagram | Integer | Optional | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 4\r\n */\r\n barGap: 4,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ---------- | -------------------------------------------------------------------------- | ------- | -------- | ------------------ |\r\n * | topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 50\r\n */\r\n topPadding: 50,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ------------ | ----------------------------------------------------------------------- | ------- | -------- | ------------------ |\r\n * | rightPadding | The space allocated for the section name to the right of the activities | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 75\r\n */\r\n rightPadding: 75,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | ---------------------------------------------------------------------- | ------- | -------- | ------------------ |\r\n * | leftPadding | The space allocated for the section name to the left of the activities | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 75\r\n */\r\n leftPadding: 75,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | -------------------- | -------------------------------------------- | ------- | -------- | ------------------ |\r\n * | gridLineStartPadding | Vertical starting position of the grid lines | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 35\r\n */\r\n gridLineStartPadding: 35,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------- | ----------- | ------- | -------- | ------------------ |\r\n * | fontSize | Font size | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 11\r\n */\r\n fontSize: 11,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------------- | ---------------------- | ------- | -------- | ------------------ |\r\n * | sectionFontSize | Font size for sections | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 11\r\n */\r\n sectionFontSize: 11,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ------------------- | ---------------------------------------- | ------- | -------- | ------------------ |\r\n * | numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 4\r\n */\r\n numberSectionStyles: 4,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ---------- | --------------------------- | ---- | -------- | ---------------- |\r\n * | axisFormat | Datetime format of the axis | 3 | Required | Date in yy-mm-dd |\r\n *\r\n * **Notes:**\r\n *\r\n * This might need adjustment to match your locale and preferences\r\n *\r\n * Default value: '%Y-%m-%d'.\r\n */\r\n axisFormat: '%Y-%m-%d',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | ----------- | ------- | -------- | ----------- |\r\n * | useMaxWidth | See notes | boolean | 4 | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set the height and width is set to 100% and is then scaling with the\r\n * available space if not the absolute space required is used.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------- | ----------- | ------- | -------- | ----------- |\r\n * | topAxis | See notes | Boolean | 4 | True, False |\r\n *\r\n * **Notes:** when this flag is set date labels will be added to the top of the chart\r\n *\r\n * **Default value false**.\r\n */\r\n topAxis: false,\r\n\r\n useWidth: undefined,\r\n },\r\n\r\n /** The object containing configurations specific for journey diagrams */\r\n journey: {\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\r\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 50\r\n */\r\n diagramMarginX: 50,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | -------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\r\n * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 10\r\n */\r\n diagramMarginY: 10,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | --------------------- | ------- | -------- | ------------------ |\r\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 50\r\n */\r\n leftMargin: 150,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------- | -------------------- | ------- | -------- | ------------------ |\r\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 150\r\n */\r\n width: 150,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------- | --------------------- | ------- | -------- | ------------------ |\r\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 65\r\n */\r\n height: 50,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------- | ------------------------ | ------- | -------- | ------------------ |\r\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 10\r\n */\r\n boxMargin: 10,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\r\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 5\r\n */\r\n boxTextMargin: 5,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ---------- | ------------------- | ------- | -------- | ------------------ |\r\n * | noteMargin | Margin around notes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 10\r\n */\r\n noteMargin: 10,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ------------- | ----------------------- | ------- | -------- | ------------------ |\r\n * | messageMargin | Space between messages. | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n *\r\n * Space between messages.\r\n *\r\n * Default value: 35\r\n */\r\n messageMargin: 35,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ------------ | --------------------------- | ---- | -------- | ------------------------- |\r\n * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' |\r\n *\r\n * **Notes:** Default value: 'center'\r\n */\r\n messageAlign: 'center',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\r\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value |\r\n *\r\n * **Notes:**\r\n *\r\n * Depending on css styling this might need adjustment.\r\n *\r\n * Default value: 1\r\n */\r\n bottomMarginAdj: 1,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | ----------- | ------- | -------- | ----------- |\r\n * | useMaxWidth | See notes | boolean | 4 | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set the height and width is set to 100% and is then scaling with the\r\n * available space if not the absolute space required is used.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | --------------------------------- | ---- | -------- | ----------- |\r\n * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * This will display arrows that start and begin at the same node as right angles, rather than a curves\r\n *\r\n * Default value: false\r\n */\r\n rightAngles: false,\r\n taskFontSize: 14,\r\n taskFontFamily: '\"Open-Sans\", \"sans-serif\"',\r\n taskMargin: 50,\r\n // width of activation box\r\n activationWidth: 10,\r\n\r\n // text placement as: tspan | fo | old only text as before\r\n textPlacement: 'fo',\r\n actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],\r\n\r\n sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],\r\n sectionColours: ['#fff'],\r\n },\r\n class: {\r\n arrowMarkerAbsolute: false,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | ----------- | ------- | -------- | ----------- |\r\n * | useMaxWidth | See notes | boolean | 4 | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set the height and width is set to 100% and is then scaling with the\r\n * available space if not the absolute space required is used.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\r\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\r\n *\r\n * **Notes**:\r\n *\r\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\r\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\r\n *\r\n * Default value: 'dagre-d3'\r\n */\r\n defaultRenderer: 'dagre-wrapper',\r\n },\r\n git: {\r\n arrowMarkerAbsolute: false,\r\n\r\n useWidth: undefined,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | ----------- | ------- | -------- | ----------- |\r\n * | useMaxWidth | See notes | boolean | 4 | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set the height and width is set to 100% and is then scaling with the\r\n * available space if not the absolute space required is used.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n },\r\n state: {\r\n dividerMargin: 10,\r\n sizeUnit: 5,\r\n padding: 8,\r\n textHeight: 10,\r\n titleShift: -15,\r\n noteMargin: 10,\r\n forkWidth: 70,\r\n forkHeight: 7,\r\n // Used\r\n miniPadding: 2,\r\n // Font size factor, this is used to guess the width of the edges labels before rendering by dagre\r\n // layout. This might need updating if/when switching font\r\n fontSizeFactor: 5.02,\r\n fontSize: 24,\r\n labelHeight: 16,\r\n edgeLengthFactor: '20',\r\n compositTitleSize: 35,\r\n radius: 5,\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | ----------- | ------- | -------- | ----------- |\r\n * | useMaxWidth | See notes | boolean | 4 | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set the height and width is set to 100% and is then scaling with the\r\n * available space if not the absolute space required is used.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\r\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\r\n *\r\n * **Notes:**\r\n *\r\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\r\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\r\n *\r\n * Default value: 'dagre-d3'\r\n */\r\n defaultRenderer: 'dagre-wrapper',\r\n },\r\n\r\n /** The object containing configurations specific for entity relationship diagrams */\r\n er: {\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |\r\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n *\r\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins,\r\n * expressed in pixels\r\n *\r\n * Default value: 20\r\n */\r\n diagramPadding: 20,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------------- | ---------------------------------------- | ------ | -------- | ---------------------- |\r\n * | layoutDirection | Directional bias for layout of entities. | string | Required | \"TB\", \"BT\", \"LR\", \"RL\" |\r\n *\r\n * **Notes:**\r\n *\r\n * 'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.\r\n *\r\n * T = top, B = bottom, L = left, and R = right.\r\n *\r\n * Default value: 'TB'\r\n */\r\n layoutDirection: 'TB',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | -------------- | ---------------------------------- | ------- | -------- | ------------------ |\r\n * | minEntityWidth | The minimum width of an entity box | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Expressed in pixels. Default value: 100\r\n */\r\n minEntityWidth: 100,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------------- | ----------------------------------- | ------- | -------- | ------------------ |\r\n * | minEntityHeight | The minimum height of an entity box | Integer | 4 | Any Positive Value |\r\n *\r\n * **Notes:** Expressed in pixels Default value: 75\r\n */\r\n minEntityHeight: 75,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ------------- | ----------------------------------------------------------- | ------- | -------- | ------------------ |\r\n * | entityPadding | Minimum internal padding betweentext in box and box borders | Integer | 4 | Any Positive Value |\r\n *\r\n * **Notes:**\r\n *\r\n * The minimum internal padding betweentext in an entity box and the enclosing box borders,\r\n * expressed in pixels.\r\n *\r\n * Default value: 15\r\n */\r\n entityPadding: 15,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------- | ----------------------------------- | ------ | -------- | -------------------- |\r\n * | stroke | Stroke color of box edges and lines | string | 4 | Any recognized color |\r\n *\r\n * **Notes:** Default value: 'gray'\r\n */\r\n stroke: 'gray',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------- | -------------------------- | ------ | -------- | -------------------- |\r\n * | fill | Fill color of entity boxes | string | 4 | Any recognized color |\r\n *\r\n * **Notes:** Default value: 'honeydew'\r\n */\r\n fill: 'honeydew',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --------- | ------------------- | ------- | -------- | ------------------ |\r\n * | fontSize | Font Size in pixels | Integer | | Any Positive Value |\r\n *\r\n * **Notes:**\r\n *\r\n * Font size (expressed as an integer representing a number of pixels) Default value: 12\r\n */\r\n fontSize: 12,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | ----------- | ------- | -------- | ----------- |\r\n * | useMaxWidth | See Notes | boolean | Required | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\r\n * available space. If set to false, the diagram reserves its absolute width.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n },\r\n\r\n /** The object containing configurations specific for pie diagrams */\r\n pie: {\r\n useWidth: undefined,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | ----------- | ------- | -------- | ----------- |\r\n * | useMaxWidth | See Notes | boolean | Required | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\r\n * available space. If set to false, the diagram reserves its absolute width.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n },\r\n\r\n /** The object containing configurations specific for req diagrams */\r\n requirement: {\r\n useWidth: undefined,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | ----------- | ----------- | ------- | -------- | ----------- |\r\n * | useMaxWidth | See Notes | boolean | Required | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\r\n * available space. If set to false, the diagram reserves its absolute width.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n\r\n rect_fill: '#f9f9f9',\r\n text_color: '#333',\r\n rect_border_size: '0.5px',\r\n rect_border_color: '#bbb',\r\n rect_min_width: 200,\r\n rect_min_height: 200,\r\n fontSize: 14,\r\n rect_padding: 10,\r\n line_height: 20,\r\n },\r\n};\r\n\r\nconfig.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\r\nconfig.git.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\r\n\r\nconst keyify = (obj, prefix = '') =>\r\n Object.keys(obj).reduce((res, el) => {\r\n if (Array.isArray(obj[el])) {\r\n return res;\r\n } else if (typeof obj[el] === 'object' && obj[el] !== null) {\r\n return [...res, prefix + el, ...keyify(obj[el], '')];\r\n }\r\n return [...res, prefix + el];\r\n }, []);\r\n\r\nexport const configKeys = keyify(config, '');\r\nexport default config;\r\n","import { select } from 'd3';\r\nimport { log } from '../../logger';\r\nimport * as configApi from '../../config';\r\nimport common from '../common/common';\r\nimport utils from '../../utils';\r\nimport mermaidAPI from '../../mermaidAPI';\r\n\r\nconst MERMAID_DOM_ID_PREFIX = 'classid-';\r\n\r\nlet relations = [];\r\nlet classes = {};\r\nlet classCounter = 0;\r\n\r\nlet funs = [];\r\n\r\nexport const parseDirective = function (statement, context, type) {\r\n mermaidAPI.parseDirective(this, statement, context, type);\r\n};\r\n\r\nconst splitClassNameAndType = function (id) {\r\n let genericType = '';\r\n let className = id;\r\n\r\n if (id.indexOf('~') > 0) {\r\n let split = id.split('~');\r\n className = split[0];\r\n\r\n genericType = split[1];\r\n }\r\n\r\n return { className: className, type: genericType };\r\n};\r\n\r\n/**\r\n * Function called by parser when a node definition has been found.\r\n *\r\n * @param id\r\n * @public\r\n */\r\nexport const addClass = function (id) {\r\n let classId = splitClassNameAndType(id);\r\n // Only add class if not exists\r\n if (typeof classes[classId.className] !== 'undefined') return;\r\n\r\n classes[classId.className] = {\r\n id: classId.className,\r\n type: classId.type,\r\n cssClasses: [],\r\n methods: [],\r\n members: [],\r\n annotations: [],\r\n domId: MERMAID_DOM_ID_PREFIX + classId.className + '-' + classCounter,\r\n };\r\n\r\n classCounter++;\r\n};\r\n\r\n/**\r\n * Function to lookup domId from id in the graph definition.\r\n *\r\n * @param id\r\n * @public\r\n */\r\nexport const lookUpDomId = function (id) {\r\n const classKeys = Object.keys(classes);\r\n for (let i = 0; i < classKeys.length; i++) {\r\n if (classes[classKeys[i]].id === id) {\r\n return classes[classKeys[i]].domId;\r\n }\r\n }\r\n};\r\n\r\nexport const clear = function () {\r\n relations = [];\r\n classes = {};\r\n funs = [];\r\n funs.push(setupToolTips);\r\n};\r\n\r\nexport const getClass = function (id) {\r\n return classes[id];\r\n};\r\nexport const getClasses = function () {\r\n return classes;\r\n};\r\n\r\nexport const getRelations = function () {\r\n return relations;\r\n};\r\n\r\nexport const addRelation = function (relation) {\r\n log.debug('Adding relation: ' + JSON.stringify(relation));\r\n addClass(relation.id1);\r\n addClass(relation.id2);\r\n\r\n relation.id1 = splitClassNameAndType(relation.id1).className;\r\n relation.id2 = splitClassNameAndType(relation.id2).className;\r\n\r\n relations.push(relation);\r\n};\r\n\r\n/**\r\n * Adds an annotation to the specified class Annotations mark special properties of the given type\r\n * (like 'interface' or 'service')\r\n *\r\n * @param className The class name\r\n * @param annotation The name of the annotation without any brackets\r\n * @public\r\n */\r\nexport const addAnnotation = function (className, annotation) {\r\n const validatedClassName = splitClassNameAndType(className).className;\r\n classes[validatedClassName].annotations.push(annotation);\r\n};\r\n\r\n/**\r\n * Adds a member to the specified class\r\n *\r\n * @param className The class name\r\n * @param member The full name of the member. If the member is enclosed in <> it is\r\n * treated as an annotation If the member is ending with a closing bracket ) it is treated as a\r\n * method Otherwise the member will be treated as a normal property\r\n * @public\r\n */\r\nexport const addMember = function (className, member) {\r\n const validatedClassName = splitClassNameAndType(className).className;\r\n const theClass = classes[validatedClassName];\r\n\r\n if (typeof member === 'string') {\r\n // Member can contain white spaces, we trim them out\r\n const memberString = member.trim();\r\n\r\n if (memberString.startsWith('<<') && memberString.endsWith('>>')) {\r\n // Remove leading and trailing brackets\r\n theClass.annotations.push(memberString.substring(2, memberString.length - 2));\r\n } else if (memberString.indexOf(')') > 0) {\r\n theClass.methods.push(memberString);\r\n } else if (memberString) {\r\n theClass.members.push(memberString);\r\n }\r\n }\r\n};\r\n\r\nexport const addMembers = function (className, members) {\r\n if (Array.isArray(members)) {\r\n members.reverse();\r\n members.forEach((member) => addMember(className, member));\r\n }\r\n};\r\n\r\nexport const cleanupLabel = function (label) {\r\n if (label.substring(0, 1) === ':') {\r\n return label.substr(1).trim();\r\n } else {\r\n return label.trim();\r\n }\r\n};\r\n\r\n/**\r\n * Called by parser when a special node is found, e.g. a clickable element.\r\n *\r\n * @param ids Comma separated list of ids\r\n * @param className Class to add\r\n */\r\nexport const setCssClass = function (ids, className) {\r\n ids.split(',').forEach(function (_id) {\r\n let id = _id;\r\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\r\n if (typeof classes[id] !== 'undefined') {\r\n classes[id].cssClasses.push(className);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Called by parser when a tooltip is found, e.g. a clickable element.\r\n *\r\n * @param ids Comma separated list of ids\r\n * @param tooltip Tooltip to add\r\n */\r\nconst setTooltip = function (ids, tooltip) {\r\n const config = configApi.getConfig();\r\n ids.split(',').forEach(function (id) {\r\n if (typeof tooltip !== 'undefined') {\r\n classes[id].tooltip = common.sanitizeText(tooltip, config);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Called by parser when a link is found. Adds the URL to the vertex data.\r\n *\r\n * @param ids Comma separated list of ids\r\n * @param linkStr URL to create a link for\r\n * @param target Target of the link, _blank by default as originally defined in the svgDraw.js file\r\n */\r\nexport const setLink = function (ids, linkStr, target) {\r\n const config = configApi.getConfig();\r\n ids.split(',').forEach(function (_id) {\r\n let id = _id;\r\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\r\n if (typeof classes[id] !== 'undefined') {\r\n classes[id].link = utils.formatUrl(linkStr, config);\r\n if (typeof target === 'string') {\r\n classes[id].linkTarget = target;\r\n } else {\r\n classes[id].linkTarget = '_blank';\r\n }\r\n }\r\n });\r\n setCssClass(ids, 'clickable');\r\n};\r\n\r\n/**\r\n * Called by parser when a click definition is found. Registers an event handler.\r\n *\r\n * @param ids Comma separated list of ids\r\n * @param functionName Function to be called on click\r\n * @param functionArgs Function args the function should be called with\r\n */\r\nexport const setClickEvent = function (ids, functionName, functionArgs) {\r\n ids.split(',').forEach(function (id) {\r\n setClickFunc(id, functionName, functionArgs);\r\n classes[id].haveCallback = true;\r\n });\r\n setCssClass(ids, 'clickable');\r\n};\r\n\r\nconst setClickFunc = function (domId, functionName, functionArgs) {\r\n const config = configApi.getConfig();\r\n let id = domId;\r\n let elemId = lookUpDomId(id);\r\n\r\n if (config.securityLevel !== 'loose') {\r\n return;\r\n }\r\n if (typeof functionName === 'undefined') {\r\n return;\r\n }\r\n if (typeof classes[id] !== 'undefined') {\r\n let argList = [];\r\n if (typeof functionArgs === 'string') {\r\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\r\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\r\n for (let i = 0; i < argList.length; i++) {\r\n let item = argList[i].trim();\r\n /* Removes all double quotes at the start and end of an argument */\r\n /* This preserves all starting and ending whitespace inside */\r\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\r\n item = item.substr(1, item.length - 2);\r\n }\r\n argList[i] = item;\r\n }\r\n }\r\n\r\n /* if no arguments passed into callback, default to passing in id */\r\n if (argList.length === 0) {\r\n argList.push(elemId);\r\n }\r\n\r\n funs.push(function () {\r\n const elem = document.querySelector(`[id=\"${elemId}\"]`);\r\n if (elem !== null) {\r\n elem.addEventListener(\r\n 'click',\r\n function () {\r\n utils.runFunc(functionName, ...argList);\r\n },\r\n false\r\n );\r\n }\r\n });\r\n }\r\n};\r\n\r\nexport const bindFunctions = function (element) {\r\n funs.forEach(function (fun) {\r\n fun(element);\r\n });\r\n};\r\n\r\nexport const lineType = {\r\n LINE: 0,\r\n DOTTED_LINE: 1,\r\n};\r\n\r\nexport const relationType = {\r\n AGGREGATION: 0,\r\n EXTENSION: 1,\r\n COMPOSITION: 2,\r\n DEPENDENCY: 3,\r\n};\r\n\r\nconst setupToolTips = function (element) {\r\n let tooltipElem = select('.mermaidTooltip');\r\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\r\n tooltipElem = select('body').append('div').attr('class', 'mermaidTooltip').style('opacity', 0);\r\n }\r\n\r\n const svg = select(element).select('svg');\r\n\r\n const nodes = svg.selectAll('g.node');\r\n nodes\r\n .on('mouseover', function () {\r\n const el = select(this);\r\n const title = el.attr('title');\r\n // Dont try to draw a tooltip if no data is provided\r\n if (title === null) {\r\n return;\r\n }\r\n const rect = this.getBoundingClientRect();\r\n\r\n tooltipElem.transition().duration(200).style('opacity', '.9');\r\n tooltipElem\r\n .html(el.attr('title'))\r\n .style('left', window.scrollX + rect.left + (rect.right - rect.left) / 2 + 'px')\r\n .style('top', window.scrollY + rect.top - 14 + document.body.scrollTop + 'px');\r\n el.classed('hover', true);\r\n })\r\n .on('mouseout', function () {\r\n tooltipElem.transition().duration(500).style('opacity', 0);\r\n const el = select(this);\r\n el.classed('hover', false);\r\n });\r\n};\r\nfuns.push(setupToolTips);\r\n\r\nlet direction = 'TB';\r\nconst getDirection = () => direction;\r\nconst setDirection = (dir) => {\r\n direction = dir;\r\n};\r\n\r\nexport default {\r\n parseDirective,\r\n getConfig: () => configApi.getConfig().class,\r\n addClass,\r\n bindFunctions,\r\n clear,\r\n getClass,\r\n getClasses,\r\n addAnnotation,\r\n getRelations,\r\n addRelation,\r\n getDirection,\r\n setDirection,\r\n addMember,\r\n addMembers,\r\n cleanupLabel,\r\n lineType,\r\n relationType,\r\n setClickEvent,\r\n setCssClass,\r\n setLink,\r\n setTooltip,\r\n lookUpDomId,\r\n};\r\n","import { select } from 'd3';\r\nimport dagre from 'dagre';\r\nimport graphlib from 'graphlib';\r\nimport { log } from '../../logger';\r\nimport classDb, { lookUpDomId } from './classDb';\r\nimport { parser } from './parser/classDiagram';\r\nimport svgDraw from './svgDraw';\r\nimport { getConfig } from '../../config';\r\nimport { render } from '../../dagre-wrapper/index.js';\r\n// import addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';\r\nimport { curveLinear } from 'd3';\r\nimport { interpolateToCurve, getStylesFromArray, configureSvgSize } from '../../utils';\r\nimport common from '../common/common';\r\n\r\nparser.yy = classDb;\r\n\r\nlet idCache = {};\r\nconst padding = 20;\r\n\r\nconst conf = {\r\n dividerMargin: 10,\r\n padding: 5,\r\n textHeight: 10,\r\n};\r\n\r\n/**\r\n * Function that adds the vertices found during parsing to the graph to be rendered.\r\n *\r\n * @param classes\r\n * @param g The graph that is to be drawn.\r\n */\r\nexport const addClasses = function (classes, g) {\r\n // const svg = select(`[id=\"${svgId}\"]`);\r\n const keys = Object.keys(classes);\r\n log.info('keys:', keys);\r\n log.info(classes);\r\n\r\n // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\r\n keys.forEach(function (id) {\r\n const vertex = classes[id];\r\n\r\n /**\r\n * Variable for storing the classes for the vertex\r\n *\r\n * @type {string}\r\n */\r\n let cssClassStr = '';\r\n if (vertex.cssClasses.length > 0) {\r\n cssClassStr = cssClassStr + ' ' + vertex.cssClasses.join(' ');\r\n }\r\n // if (vertex.classes.length > 0) {\r\n // classStr = vertex.classes.join(' ');\r\n // }\r\n\r\n const styles = { labelStyle: '' }; //getStylesFromArray(vertex.styles);\r\n\r\n // Use vertex id as text in the box if no text is provided by the graph definition\r\n let vertexText = vertex.text !== undefined ? vertex.text : vertex.id;\r\n\r\n // We create a SVG label, either by delegating to addHtmlLabel or manually\r\n // let vertexNode;\r\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n // const node = {\r\n // label: vertexText.replace(\r\n // /fa[lrsb]?:fa-[\\w-]+/g,\r\n // s => ``\r\n // )\r\n // };\r\n // vertexNode = addHtmlLabel(svg, node).node();\r\n // vertexNode.parentNode.removeChild(vertexNode);\r\n // } else {\r\n // const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\r\n // svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\r\n\r\n // const rows = vertexText.split(common.lineBreakRegex);\r\n\r\n // for (let j = 0; j < rows.length; j++) {\r\n // const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\r\n // tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n // tspan.setAttribute('dy', '1em');\r\n // tspan.setAttribute('x', '1');\r\n // tspan.textContent = rows[j];\r\n // svgLabel.appendChild(tspan);\r\n // }\r\n // vertexNode = svgLabel;\r\n // }\r\n\r\n let radious = 0;\r\n let _shape = '';\r\n // Set the shape based parameters\r\n switch (vertex.type) {\r\n case 'class':\r\n _shape = 'class_box';\r\n break;\r\n default:\r\n _shape = 'class_box';\r\n }\r\n // Add the node\r\n g.setNode(vertex.id, {\r\n labelStyle: styles.labelStyle,\r\n shape: _shape,\r\n labelText: vertexText,\r\n classData: vertex,\r\n rx: radious,\r\n ry: radious,\r\n class: cssClassStr,\r\n style: styles.style,\r\n id: vertex.id,\r\n domId: vertex.domId,\r\n haveCallback: vertex.haveCallback,\r\n link: vertex.link,\r\n width: vertex.type === 'group' ? 500 : undefined,\r\n type: vertex.type,\r\n padding: getConfig().flowchart.padding,\r\n });\r\n\r\n log.info('setNode', {\r\n labelStyle: styles.labelStyle,\r\n shape: _shape,\r\n labelText: vertexText,\r\n rx: radious,\r\n ry: radious,\r\n class: cssClassStr,\r\n style: styles.style,\r\n id: vertex.id,\r\n width: vertex.type === 'group' ? 500 : undefined,\r\n type: vertex.type,\r\n padding: getConfig().flowchart.padding,\r\n });\r\n });\r\n};\r\n\r\n/**\r\n * Add edges to graph based on parsed graph defninition\r\n *\r\n * @param relations\r\n * @param {object} g The graph object\r\n */\r\nexport const addRelations = function (relations, g) {\r\n let cnt = 0;\r\n\r\n let defaultStyle;\r\n let defaultLabelStyle;\r\n\r\n // if (typeof relations.defaultStyle !== 'undefined') {\r\n // const defaultStyles = getStylesFromArray(relations.defaultStyle);\r\n // defaultStyle = defaultStyles.style;\r\n // defaultLabelStyle = defaultStyles.labelStyle;\r\n // }\r\n\r\n relations.forEach(function (edge) {\r\n cnt++;\r\n const edgeData = {};\r\n //Set relationship style and line type\r\n edgeData.classes = 'relation';\r\n edgeData.pattern = edge.relation.lineType == 1 ? 'dashed' : 'solid';\r\n\r\n edgeData.id = 'id' + cnt;\r\n // Set link type for rendering\r\n if (edge.type === 'arrow_open') {\r\n edgeData.arrowhead = 'none';\r\n } else {\r\n edgeData.arrowhead = 'normal';\r\n }\r\n\r\n log.info(edgeData, edge);\r\n //Set edge extra labels\r\n //edgeData.startLabelLeft = edge.relationTitle1;\r\n edgeData.startLabelRight = edge.relationTitle1 === 'none' ? '' : edge.relationTitle1;\r\n edgeData.endLabelLeft = edge.relationTitle2 === 'none' ? '' : edge.relationTitle2;\r\n //edgeData.endLabelRight = edge.relationTitle2;\r\n\r\n //Set relation arrow types\r\n edgeData.arrowTypeStart = getArrowMarker(edge.relation.type1);\r\n edgeData.arrowTypeEnd = getArrowMarker(edge.relation.type2);\r\n let style = '';\r\n let labelStyle = '';\r\n\r\n if (typeof edge.style !== 'undefined') {\r\n const styles = getStylesFromArray(edge.style);\r\n style = styles.style;\r\n labelStyle = styles.labelStyle;\r\n } else {\r\n style = 'fill:none';\r\n if (typeof defaultStyle !== 'undefined') {\r\n style = defaultStyle;\r\n }\r\n if (typeof defaultLabelStyle !== 'undefined') {\r\n labelStyle = defaultLabelStyle;\r\n }\r\n }\r\n\r\n edgeData.style = style;\r\n edgeData.labelStyle = labelStyle;\r\n\r\n if (typeof edge.interpolate !== 'undefined') {\r\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\r\n } else if (typeof relations.defaultInterpolate !== 'undefined') {\r\n edgeData.curve = interpolateToCurve(relations.defaultInterpolate, curveLinear);\r\n } else {\r\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\r\n }\r\n\r\n edge.text = edge.title;\r\n if (typeof edge.text === 'undefined') {\r\n if (typeof edge.style !== 'undefined') {\r\n edgeData.arrowheadStyle = 'fill: #333';\r\n }\r\n } else {\r\n edgeData.arrowheadStyle = 'fill: #333';\r\n edgeData.labelpos = 'c';\r\n\r\n if (getConfig().flowchart.htmlLabels) { // eslint-disable-line\r\n edgeData.labelType = 'html';\r\n edgeData.label = '' + edge.text + '';\r\n } else {\r\n edgeData.labelType = 'text';\r\n edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\r\n\r\n if (typeof edge.style === 'undefined') {\r\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\r\n }\r\n\r\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\r\n }\r\n }\r\n // Add the edge to the graph\r\n g.setEdge(edge.id1, edge.id2, edgeData, cnt);\r\n });\r\n};\r\n\r\n// Todo optimize\r\nconst getGraphId = function (label) {\r\n const keys = Object.keys(idCache);\r\n\r\n for (let i = 0; i < keys.length; i++) {\r\n if (idCache[keys[i]].label === label) {\r\n return keys[i];\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const setConf = function (cnf) {\r\n const keys = Object.keys(cnf);\r\n\r\n keys.forEach(function (key) {\r\n conf[key] = cnf[key];\r\n });\r\n};\r\n\r\n/**\r\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\r\n *\r\n * @param text\r\n * @param id\r\n */\r\nexport const drawOld = function (text, id) {\r\n idCache = {};\r\n parser.yy.clear();\r\n parser.parse(text);\r\n\r\n log.info('Rendering diagram ' + text);\r\n\r\n // Fetch the default direction, use TD if none was found\r\n const diagram = select(`[id='${id}']`);\r\n // insertMarkers(diagram);\r\n\r\n // Layout graph, Create a new directed graph\r\n const g = new graphlib.Graph({\r\n multigraph: true,\r\n });\r\n\r\n // Set an object for the graph label\r\n g.setGraph({\r\n isMultiGraph: true,\r\n });\r\n\r\n // Default to assigning a new object as a label for each new edge.\r\n g.setDefaultEdgeLabel(function () {\r\n return {};\r\n });\r\n\r\n const classes = classDb.getClasses();\r\n log.info('classes:');\r\n log.info(classes);\r\n const keys = Object.keys(classes);\r\n for (let i = 0; i < keys.length; i++) {\r\n const classDef = classes[keys[i]];\r\n const node = svgDraw.drawClass(diagram, classDef, conf);\r\n idCache[node.id] = node;\r\n\r\n // Add nodes to the graph. The first argument is the node id. The second is\r\n // metadata about the node. In this case we're going to add labels to each of\r\n // our nodes.\r\n g.setNode(node.id, node);\r\n\r\n log.info('Org height: ' + node.height);\r\n }\r\n\r\n const relations = classDb.getRelations();\r\n log.info('relations:', relations);\r\n relations.forEach(function (relation) {\r\n log.info(\r\n 'tjoho' + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)\r\n );\r\n g.setEdge(\r\n getGraphId(relation.id1),\r\n getGraphId(relation.id2),\r\n {\r\n relation: relation,\r\n },\r\n relation.title || 'DEFAULT'\r\n );\r\n });\r\n\r\n dagre.layout(g);\r\n g.nodes().forEach(function (v) {\r\n if (typeof v !== 'undefined' && typeof g.node(v) !== 'undefined') {\r\n log.debug('Node ' + v + ': ' + JSON.stringify(g.node(v)));\r\n select('#' + lookUpDomId(v)).attr(\r\n 'transform',\r\n 'translate(' +\r\n (g.node(v).x - g.node(v).width / 2) +\r\n ',' +\r\n (g.node(v).y - g.node(v).height / 2) +\r\n ' )'\r\n );\r\n }\r\n });\r\n\r\n g.edges().forEach(function (e) {\r\n if (typeof e !== 'undefined' && typeof g.edge(e) !== 'undefined') {\r\n log.debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(g.edge(e)));\r\n svgDraw.drawEdge(diagram, g.edge(e), g.edge(e).relation, conf);\r\n }\r\n });\r\n\r\n const svgBounds = diagram.node().getBBox();\r\n const width = svgBounds.width + padding * 2;\r\n const height = svgBounds.height + padding * 2;\r\n\r\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\r\n\r\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\r\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\r\n log.debug(`viewBox ${vBox}`);\r\n diagram.attr('viewBox', vBox);\r\n};\r\n\r\nexport const draw = function (text, id) {\r\n log.info('Drawing class');\r\n classDb.clear();\r\n // const parser = classDb.parser;\r\n // parser.yy = classDb;\r\n\r\n // Parse the graph definition\r\n // try {\r\n parser.parse(text);\r\n // } catch (err) {\r\n // log.debug('Parsing failed');\r\n // }\r\n\r\n // Fetch the default direction, use TD if none was found\r\n //let dir = 'TD';\r\n\r\n const conf = getConfig().flowchart;\r\n log.info('config:', conf);\r\n const nodeSpacing = conf.nodeSpacing || 50;\r\n const rankSpacing = conf.rankSpacing || 50;\r\n\r\n // Create the input mermaid.graph\r\n const g = new graphlib.Graph({\r\n multigraph: true,\r\n compound: true,\r\n })\r\n .setGraph({\r\n rankdir: classDb.getDirection(),\r\n nodesep: nodeSpacing,\r\n ranksep: rankSpacing,\r\n marginx: 8,\r\n marginy: 8,\r\n })\r\n .setDefaultEdgeLabel(function () {\r\n return {};\r\n });\r\n\r\n // let subG;\r\n // const subGraphs = flowDb.getSubGraphs();\r\n // log.info('Subgraphs - ', subGraphs);\r\n // for (let i = subGraphs.length - 1; i >= 0; i--) {\r\n // subG = subGraphs[i];\r\n // log.info('Subgraph - ', subG);\r\n // flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\r\n // }\r\n\r\n // Fetch the verices/nodes and edges/links from the parsed graph definition\r\n const classes = classDb.getClasses();\r\n const relations = classDb.getRelations();\r\n\r\n log.info(relations);\r\n // let i = 0;\r\n // for (i = subGraphs.length - 1; i >= 0; i--) {\r\n // subG = subGraphs[i];\r\n\r\n // selectAll('cluster').append('text');\r\n\r\n // for (let j = 0; j < subG.nodes.length; j++) {\r\n // g.setParent(subG.nodes[j], subG.id);\r\n // }\r\n // }\r\n addClasses(classes, g, id);\r\n addRelations(relations, g);\r\n\r\n // Add custom shapes\r\n // flowChartShapes.addToRenderV2(addShape);\r\n\r\n // Set up an SVG group so that we can translate the final graph.\r\n const svg = select(`[id=\"${id}\"]`);\r\n svg.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\r\n\r\n // Run the renderer. This is what draws the final graph.\r\n const element = select('#' + id + ' g');\r\n render(element, g, ['aggregation', 'extension', 'composition', 'dependency'], 'classDiagram', id);\r\n\r\n // element.selectAll('g.node').attr('title', function() {\r\n // return flowDb.getTooltip(this.id);\r\n // });\r\n\r\n const padding = 8;\r\n const svgBounds = svg.node().getBBox();\r\n const width = svgBounds.width + padding * 2;\r\n const height = svgBounds.height + padding * 2;\r\n log.debug(\r\n `new ViewBox 0 0 ${width} ${height}`,\r\n `translate(${padding - g._label.marginx}, ${padding - g._label.marginy})`\r\n );\r\n\r\n configureSvgSize(svg, height, width, conf.useMaxWidth);\r\n\r\n svg.attr('viewBox', `0 0 ${width} ${height}`);\r\n svg\r\n .select('g')\r\n .attr('transform', `translate(${padding - g._label.marginx}, ${padding - svgBounds.y})`);\r\n\r\n // Index nodes\r\n // flowDb.indexNodes('subGraph' + i);\r\n\r\n // Add label rects for non html labels\r\n if (!conf.htmlLabels) {\r\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\r\n for (let k = 0; k < labels.length; k++) {\r\n const label = labels[k];\r\n\r\n // Get dimensions of label\r\n const dim = label.getBBox();\r\n\r\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\r\n rect.setAttribute('rx', 0);\r\n rect.setAttribute('ry', 0);\r\n rect.setAttribute('width', dim.width);\r\n rect.setAttribute('height', dim.height);\r\n // rect.setAttribute('style', 'fill:#e8e8e8;');\r\n\r\n label.insertBefore(rect, label.firstChild);\r\n }\r\n }\r\n\r\n // If node has a link, wrap it in an anchor SVG object.\r\n // const keys = Object.keys(classes);\r\n // keys.forEach(function(key) {\r\n // const vertex = classes[key];\r\n\r\n // if (vertex.link) {\r\n // const node = select('#' + id + ' [id=\"' + key + '\"]');\r\n // if (node) {\r\n // const link = document.createElementNS('http://www.w3.org/2000/svg', 'a');\r\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\r\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\r\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\r\n\r\n // const linkNode = node.insert(function() {\r\n // return link;\r\n // }, ':first-child');\r\n\r\n // const shape = node.select('.label-container');\r\n // if (shape) {\r\n // linkNode.append(function() {\r\n // return shape.node();\r\n // });\r\n // }\r\n\r\n // const label = node.select('.label');\r\n // if (label) {\r\n // linkNode.append(function() {\r\n // return label.node();\r\n // });\r\n // }\r\n // }\r\n // }\r\n // });\r\n};\r\n\r\nexport default {\r\n setConf,\r\n draw,\r\n};\r\n/** @param type */\r\nfunction getArrowMarker(type) {\r\n let marker;\r\n switch (type) {\r\n case 0:\r\n marker = 'aggregation';\r\n break;\r\n case 1:\r\n marker = 'extension';\r\n break;\r\n case 2:\r\n marker = 'composition';\r\n break;\r\n case 3:\r\n marker = 'dependency';\r\n break;\r\n default:\r\n marker = 'none';\r\n }\r\n return marker;\r\n}\r\n","import { select } from 'd3';\r\nimport dagre from 'dagre';\r\nimport graphlib from 'graphlib';\r\nimport { log } from '../../logger';\r\nimport classDb, { lookUpDomId } from './classDb';\r\nimport { parser } from './parser/classDiagram';\r\nimport svgDraw from './svgDraw';\r\nimport { configureSvgSize } from '../../utils';\r\n\r\nparser.yy = classDb;\r\n\r\nlet idCache = {};\r\nconst padding = 20;\r\n\r\nconst conf = {\r\n dividerMargin: 10,\r\n padding: 5,\r\n textHeight: 10,\r\n};\r\n\r\n// Todo optimize\r\nconst getGraphId = function (label) {\r\n const keys = Object.keys(idCache);\r\n\r\n for (let i = 0; i < keys.length; i++) {\r\n if (idCache[keys[i]].label === label) {\r\n return keys[i];\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Setup arrow head and define the marker. The result is appended to the svg.\r\n *\r\n * @param elem\r\n */\r\nconst insertMarkers = function (elem) {\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', 'extensionStart')\r\n .attr('class', 'extension')\r\n .attr('refX', 0)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 190)\r\n .attr('markerHeight', 240)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 1,7 L18,13 V 1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', 'extensionEnd')\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 28)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', 'compositionStart')\r\n .attr('class', 'extension')\r\n .attr('refX', 0)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 190)\r\n .attr('markerHeight', 240)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', 'compositionEnd')\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 28)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', 'aggregationStart')\r\n .attr('class', 'extension')\r\n .attr('refX', 0)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 190)\r\n .attr('markerHeight', 240)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', 'aggregationEnd')\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 28)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', 'dependencyStart')\r\n .attr('class', 'extension')\r\n .attr('refX', 0)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 190)\r\n .attr('markerHeight', 240)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', 'dependencyEnd')\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 28)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\r\n};\r\n\r\nexport const setConf = function (cnf) {\r\n const keys = Object.keys(cnf);\r\n\r\n keys.forEach(function (key) {\r\n conf[key] = cnf[key];\r\n });\r\n};\r\n\r\n/**\r\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\r\n *\r\n * @param text\r\n * @param id\r\n */\r\nexport const draw = function (text, id) {\r\n idCache = {};\r\n parser.yy.clear();\r\n parser.parse(text);\r\n\r\n log.info('Rendering diagram ' + text);\r\n\r\n // Fetch the default direction, use TD if none was found\r\n const diagram = select(`[id='${id}']`);\r\n diagram.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\r\n insertMarkers(diagram);\r\n\r\n // Layout graph, Create a new directed graph\r\n const g = new graphlib.Graph({\r\n multigraph: true,\r\n });\r\n\r\n // Set an object for the graph label\r\n g.setGraph({\r\n isMultiGraph: true,\r\n });\r\n\r\n // Default to assigning a new object as a label for each new edge.\r\n g.setDefaultEdgeLabel(function () {\r\n return {};\r\n });\r\n\r\n const classes = classDb.getClasses();\r\n const keys = Object.keys(classes);\r\n\r\n for (let i = 0; i < keys.length; i++) {\r\n const classDef = classes[keys[i]];\r\n const node = svgDraw.drawClass(diagram, classDef, conf);\r\n idCache[node.id] = node;\r\n\r\n // Add nodes to the graph. The first argument is the node id. The second is\r\n // metadata about the node. In this case we're going to add labels to each of\r\n // our nodes.\r\n g.setNode(node.id, node);\r\n\r\n log.info('Org height: ' + node.height);\r\n }\r\n\r\n const relations = classDb.getRelations();\r\n relations.forEach(function (relation) {\r\n log.info(\r\n 'tjoho' + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)\r\n );\r\n g.setEdge(\r\n getGraphId(relation.id1),\r\n getGraphId(relation.id2),\r\n {\r\n relation: relation,\r\n },\r\n relation.title || 'DEFAULT'\r\n );\r\n });\r\n\r\n dagre.layout(g);\r\n g.nodes().forEach(function (v) {\r\n if (typeof v !== 'undefined' && typeof g.node(v) !== 'undefined') {\r\n log.debug('Node ' + v + ': ' + JSON.stringify(g.node(v)));\r\n select('#' + lookUpDomId(v)).attr(\r\n 'transform',\r\n 'translate(' +\r\n (g.node(v).x - g.node(v).width / 2) +\r\n ',' +\r\n (g.node(v).y - g.node(v).height / 2) +\r\n ' )'\r\n );\r\n }\r\n });\r\n\r\n g.edges().forEach(function (e) {\r\n if (typeof e !== 'undefined' && typeof g.edge(e) !== 'undefined') {\r\n log.debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(g.edge(e)));\r\n svgDraw.drawEdge(diagram, g.edge(e), g.edge(e).relation, conf);\r\n }\r\n });\r\n\r\n const svgBounds = diagram.node().getBBox();\r\n const width = svgBounds.width + padding * 2;\r\n const height = svgBounds.height + padding * 2;\r\n\r\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\r\n\r\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\r\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\r\n log.debug(`viewBox ${vBox}`);\r\n diagram.attr('viewBox', vBox);\r\n};\r\n\r\nexport default {\r\n setConf,\r\n draw,\r\n};\r\n","const getStyles = (options) =>\r\n `g.classGroup text {\r\n fill: ${options.nodeBorder};\r\n fill: ${options.classText};\r\n stroke: none;\r\n font-family: ${options.fontFamily};\r\n font-size: 10px;\r\n\r\n .title {\r\n font-weight: bolder;\r\n }\r\n\r\n}\r\n\r\n.nodeLabel, .edgeLabel {\r\n color: ${options.classText};\r\n}\r\n.edgeLabel .label rect {\r\n fill: ${options.mainBkg};\r\n}\r\n.label text {\r\n fill: ${options.classText};\r\n}\r\n.edgeLabel .label span {\r\n background: ${options.mainBkg};\r\n}\r\n\r\n.classTitle {\r\n font-weight: bolder;\r\n}\r\n.node rect,\r\n .node circle,\r\n .node ellipse,\r\n .node polygon,\r\n .node path {\r\n fill: ${options.mainBkg};\r\n stroke: ${options.nodeBorder};\r\n stroke-width: 1px;\r\n }\r\n\r\n\r\n.divider {\r\n stroke: ${options.nodeBorder};\r\n stroke: 1;\r\n}\r\n\r\ng.clickable {\r\n cursor: pointer;\r\n}\r\n\r\ng.classGroup rect {\r\n fill: ${options.mainBkg};\r\n stroke: ${options.nodeBorder};\r\n}\r\n\r\ng.classGroup line {\r\n stroke: ${options.nodeBorder};\r\n stroke-width: 1;\r\n}\r\n\r\n.classLabel .box {\r\n stroke: none;\r\n stroke-width: 0;\r\n fill: ${options.mainBkg};\r\n opacity: 0.5;\r\n}\r\n\r\n.classLabel .label {\r\n fill: ${options.nodeBorder};\r\n font-size: 10px;\r\n}\r\n\r\n.relation {\r\n stroke: ${options.lineColor};\r\n stroke-width: 1;\r\n fill: none;\r\n}\r\n\r\n.dashed-line{\r\n stroke-dasharray: 3;\r\n}\r\n\r\n#compositionStart, .composition {\r\n fill: ${options.lineColor} !important;\r\n stroke: ${options.lineColor} !important;\r\n stroke-width: 1;\r\n}\r\n\r\n#compositionEnd, .composition {\r\n fill: ${options.lineColor} !important;\r\n stroke: ${options.lineColor} !important;\r\n stroke-width: 1;\r\n}\r\n\r\n#dependencyStart, .dependency {\r\n fill: ${options.lineColor} !important;\r\n stroke: ${options.lineColor} !important;\r\n stroke-width: 1;\r\n}\r\n\r\n#dependencyStart, .dependency {\r\n fill: ${options.lineColor} !important;\r\n stroke: ${options.lineColor} !important;\r\n stroke-width: 1;\r\n}\r\n\r\n#extensionStart, .extension {\r\n fill: ${options.lineColor} !important;\r\n stroke: ${options.lineColor} !important;\r\n stroke-width: 1;\r\n}\r\n\r\n#extensionEnd, .extension {\r\n fill: ${options.lineColor} !important;\r\n stroke: ${options.lineColor} !important;\r\n stroke-width: 1;\r\n}\r\n\r\n#aggregationStart, .aggregation {\r\n fill: ${options.mainBkg} !important;\r\n stroke: ${options.lineColor} !important;\r\n stroke-width: 1;\r\n}\r\n\r\n#aggregationEnd, .aggregation {\r\n fill: ${options.mainBkg} !important;\r\n stroke: ${options.lineColor} !important;\r\n stroke-width: 1;\r\n}\r\n\r\n.edgeTerminals {\r\n font-size: 11px;\r\n}\r\n\r\n`;\r\n\r\nexport default getStyles;\r\n","import { line, curveBasis } from 'd3';\r\nimport { lookUpDomId, relationType } from './classDb';\r\nimport utils from '../../utils';\r\nimport { log } from '../../logger';\r\n\r\nlet edgeCount = 0;\r\nexport const drawEdge = function (elem, path, relation, conf) {\r\n const getRelationType = function (type) {\r\n switch (type) {\r\n case relationType.AGGREGATION:\r\n return 'aggregation';\r\n case relationType.EXTENSION:\r\n return 'extension';\r\n case relationType.COMPOSITION:\r\n return 'composition';\r\n case relationType.DEPENDENCY:\r\n return 'dependency';\r\n }\r\n };\r\n\r\n path.points = path.points.filter((p) => !Number.isNaN(p.y));\r\n\r\n // The data for our line\r\n const lineData = path.points;\r\n\r\n // This is the accessor function we talked about above\r\n const lineFunction = line()\r\n .x(function (d) {\r\n return d.x;\r\n })\r\n .y(function (d) {\r\n return d.y;\r\n })\r\n .curve(curveBasis);\r\n\r\n const svgPath = elem\r\n .append('path')\r\n .attr('d', lineFunction(lineData))\r\n .attr('id', 'edge' + edgeCount)\r\n .attr('class', 'relation');\r\n let url = '';\r\n if (conf.arrowMarkerAbsolute) {\r\n url =\r\n window.location.protocol +\r\n '//' +\r\n window.location.host +\r\n window.location.pathname +\r\n window.location.search;\r\n url = url.replace(/\\(/g, '\\\\(');\r\n url = url.replace(/\\)/g, '\\\\)');\r\n }\r\n\r\n if (relation.relation.lineType == 1) {\r\n svgPath.attr('class', 'relation dashed-line');\r\n }\r\n if (relation.relation.type1 !== 'none') {\r\n svgPath.attr(\r\n 'marker-start',\r\n 'url(' + url + '#' + getRelationType(relation.relation.type1) + 'Start' + ')'\r\n );\r\n }\r\n if (relation.relation.type2 !== 'none') {\r\n svgPath.attr(\r\n 'marker-end',\r\n 'url(' + url + '#' + getRelationType(relation.relation.type2) + 'End' + ')'\r\n );\r\n }\r\n\r\n let x, y;\r\n const l = path.points.length;\r\n // Calculate Label position\r\n let labelPosition = utils.calcLabelPosition(path.points);\r\n x = labelPosition.x;\r\n y = labelPosition.y;\r\n\r\n let p1_card_x, p1_card_y;\r\n let p2_card_x, p2_card_y;\r\n\r\n if (l % 2 !== 0 && l > 1) {\r\n let cardinality_1_point = utils.calcCardinalityPosition(\r\n relation.relation.type1 !== 'none',\r\n path.points,\r\n path.points[0]\r\n );\r\n let cardinality_2_point = utils.calcCardinalityPosition(\r\n relation.relation.type2 !== 'none',\r\n path.points,\r\n path.points[l - 1]\r\n );\r\n\r\n log.debug('cardinality_1_point ' + JSON.stringify(cardinality_1_point));\r\n log.debug('cardinality_2_point ' + JSON.stringify(cardinality_2_point));\r\n\r\n p1_card_x = cardinality_1_point.x;\r\n p1_card_y = cardinality_1_point.y;\r\n p2_card_x = cardinality_2_point.x;\r\n p2_card_y = cardinality_2_point.y;\r\n }\r\n\r\n if (typeof relation.title !== 'undefined') {\r\n const g = elem.append('g').attr('class', 'classLabel');\r\n const label = g\r\n .append('text')\r\n .attr('class', 'label')\r\n .attr('x', x)\r\n .attr('y', y)\r\n .attr('fill', 'red')\r\n .attr('text-anchor', 'middle')\r\n .text(relation.title);\r\n\r\n window.label = label;\r\n const bounds = label.node().getBBox();\r\n\r\n g.insert('rect', ':first-child')\r\n .attr('class', 'box')\r\n .attr('x', bounds.x - conf.padding / 2)\r\n .attr('y', bounds.y - conf.padding / 2)\r\n .attr('width', bounds.width + conf.padding)\r\n .attr('height', bounds.height + conf.padding);\r\n }\r\n\r\n log.info('Rendering relation ' + JSON.stringify(relation));\r\n if (typeof relation.relationTitle1 !== 'undefined' && relation.relationTitle1 !== 'none') {\r\n const g = elem.append('g').attr('class', 'cardinality');\r\n g.append('text')\r\n .attr('class', 'type1')\r\n .attr('x', p1_card_x)\r\n .attr('y', p1_card_y)\r\n .attr('fill', 'black')\r\n .attr('font-size', '6')\r\n .text(relation.relationTitle1);\r\n }\r\n if (typeof relation.relationTitle2 !== 'undefined' && relation.relationTitle2 !== 'none') {\r\n const g = elem.append('g').attr('class', 'cardinality');\r\n g.append('text')\r\n .attr('class', 'type2')\r\n .attr('x', p2_card_x)\r\n .attr('y', p2_card_y)\r\n .attr('fill', 'black')\r\n .attr('font-size', '6')\r\n .text(relation.relationTitle2);\r\n }\r\n\r\n edgeCount++;\r\n};\r\n\r\nexport const drawClass = function (elem, classDef, conf) {\r\n log.info('Rendering class ' + classDef);\r\n\r\n const id = classDef.id;\r\n const classInfo = {\r\n id: id,\r\n label: classDef.id,\r\n width: 0,\r\n height: 0,\r\n };\r\n\r\n // add class group\r\n const g = elem.append('g').attr('id', lookUpDomId(id)).attr('class', 'classGroup');\r\n\r\n // add title\r\n let title;\r\n if (classDef.link) {\r\n title = g\r\n .append('svg:a')\r\n .attr('xlink:href', classDef.link)\r\n .attr('target', classDef.linkTarget)\r\n .append('text')\r\n .attr('y', conf.textHeight + conf.padding)\r\n .attr('x', 0);\r\n } else {\r\n title = g\r\n .append('text')\r\n .attr('y', conf.textHeight + conf.padding)\r\n .attr('x', 0);\r\n }\r\n\r\n // add annotations\r\n let isFirst = true;\r\n classDef.annotations.forEach(function (member) {\r\n const titleText2 = title.append('tspan').text('«' + member + '»');\r\n if (!isFirst) titleText2.attr('dy', conf.textHeight);\r\n isFirst = false;\r\n });\r\n\r\n let classTitleString = classDef.id;\r\n\r\n if (classDef.type !== undefined && classDef.type !== '') {\r\n classTitleString += '<' + classDef.type + '>';\r\n }\r\n\r\n const classTitle = title.append('tspan').text(classTitleString).attr('class', 'title');\r\n\r\n // If class has annotations the title needs to have an offset of the text height\r\n if (!isFirst) classTitle.attr('dy', conf.textHeight);\r\n\r\n const titleHeight = title.node().getBBox().height;\r\n\r\n const membersLine = g\r\n .append('line') // text label for the x axis\r\n .attr('x1', 0)\r\n .attr('y1', conf.padding + titleHeight + conf.dividerMargin / 2)\r\n .attr('y2', conf.padding + titleHeight + conf.dividerMargin / 2);\r\n\r\n const members = g\r\n .append('text') // text label for the x axis\r\n .attr('x', conf.padding)\r\n .attr('y', titleHeight + conf.dividerMargin + conf.textHeight)\r\n .attr('fill', 'white')\r\n .attr('class', 'classText');\r\n\r\n isFirst = true;\r\n classDef.members.forEach(function (member) {\r\n addTspan(members, member, isFirst, conf);\r\n isFirst = false;\r\n });\r\n\r\n const membersBox = members.node().getBBox();\r\n\r\n const methodsLine = g\r\n .append('line') // text label for the x axis\r\n .attr('x1', 0)\r\n .attr('y1', conf.padding + titleHeight + conf.dividerMargin + membersBox.height)\r\n .attr('y2', conf.padding + titleHeight + conf.dividerMargin + membersBox.height);\r\n\r\n const methods = g\r\n .append('text') // text label for the x axis\r\n .attr('x', conf.padding)\r\n .attr('y', titleHeight + 2 * conf.dividerMargin + membersBox.height + conf.textHeight)\r\n .attr('fill', 'white')\r\n .attr('class', 'classText');\r\n\r\n isFirst = true;\r\n\r\n classDef.methods.forEach(function (method) {\r\n addTspan(methods, method, isFirst, conf);\r\n isFirst = false;\r\n });\r\n\r\n const classBox = g.node().getBBox();\r\n var cssClassStr = ' ';\r\n\r\n if (classDef.cssClasses.length > 0) {\r\n cssClassStr = cssClassStr + classDef.cssClasses.join(' ');\r\n }\r\n\r\n const rect = g\r\n .insert('rect', ':first-child')\r\n .attr('x', 0)\r\n .attr('y', 0)\r\n .attr('width', classBox.width + 2 * conf.padding)\r\n .attr('height', classBox.height + conf.padding + 0.5 * conf.dividerMargin)\r\n .attr('class', cssClassStr);\r\n\r\n const rectWidth = rect.node().getBBox().width;\r\n\r\n // Center title\r\n // We subtract the width of each text element from the class box width and divide it by 2\r\n title.node().childNodes.forEach(function (x) {\r\n x.setAttribute('x', (rectWidth - x.getBBox().width) / 2);\r\n });\r\n\r\n if (classDef.tooltip) {\r\n title.insert('title').text(classDef.tooltip);\r\n }\r\n\r\n membersLine.attr('x2', rectWidth);\r\n methodsLine.attr('x2', rectWidth);\r\n\r\n classInfo.width = rectWidth;\r\n classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin;\r\n\r\n return classInfo;\r\n};\r\n\r\nexport const parseMember = function (text) {\r\n const fieldRegEx = /^(\\+|-|~|#)?(\\w+)(~\\w+~|\\[\\])?\\s+(\\w+) *(\\*|\\$)?$/;\r\n const methodRegEx = /^([+|\\-|~|#])?(\\w+) *\\( *(.*)\\) *(\\*|\\$)? *(\\w*[~|[\\]]*\\s*\\w*~?)$/;\r\n\r\n let fieldMatch = text.match(fieldRegEx);\r\n let methodMatch = text.match(methodRegEx);\r\n\r\n if (fieldMatch && !methodMatch) {\r\n return buildFieldDisplay(fieldMatch);\r\n } else if (methodMatch) {\r\n return buildMethodDisplay(methodMatch);\r\n } else {\r\n return buildLegacyDisplay(text);\r\n }\r\n};\r\n\r\nconst buildFieldDisplay = function (parsedText) {\r\n let cssStyle = '';\r\n let displayText = '';\r\n\r\n try {\r\n let visibility = parsedText[1] ? parsedText[1].trim() : '';\r\n let fieldType = parsedText[2] ? parsedText[2].trim() : '';\r\n let genericType = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : '';\r\n let fieldName = parsedText[4] ? parsedText[4].trim() : '';\r\n let classifier = parsedText[5] ? parsedText[5].trim() : '';\r\n\r\n displayText = visibility + fieldType + genericType + ' ' + fieldName;\r\n cssStyle = parseClassifier(classifier);\r\n } catch (err) {\r\n displayText = parsedText;\r\n }\r\n\r\n return {\r\n displayText: displayText,\r\n cssStyle: cssStyle,\r\n };\r\n};\r\n\r\nconst buildMethodDisplay = function (parsedText) {\r\n let cssStyle = '';\r\n let displayText = '';\r\n\r\n try {\r\n let visibility = parsedText[1] ? parsedText[1].trim() : '';\r\n let methodName = parsedText[2] ? parsedText[2].trim() : '';\r\n let parameters = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : '';\r\n let classifier = parsedText[4] ? parsedText[4].trim() : '';\r\n let returnType = parsedText[5] ? ' : ' + parseGenericTypes(parsedText[5]).trim() : '';\r\n\r\n displayText = visibility + methodName + '(' + parameters + ')' + returnType;\r\n cssStyle = parseClassifier(classifier);\r\n } catch (err) {\r\n displayText = parsedText;\r\n }\r\n\r\n return {\r\n displayText: displayText,\r\n cssStyle: cssStyle,\r\n };\r\n};\r\n\r\nconst buildLegacyDisplay = function (text) {\r\n // if for some reason we dont have any match, use old format to parse text\r\n let displayText = '';\r\n let cssStyle = '';\r\n let memberText = '';\r\n let returnType = '';\r\n let methodStart = text.indexOf('(');\r\n let methodEnd = text.indexOf(')');\r\n\r\n if (methodStart > 1 && methodEnd > methodStart && methodEnd <= text.length) {\r\n let visibility = '';\r\n let methodName = '';\r\n\r\n let firstChar = text.substring(0, 1);\r\n if (firstChar.match(/\\w/)) {\r\n methodName = text.substring(0, methodStart).trim();\r\n } else {\r\n if (firstChar.match(/\\+|-|~|#/)) {\r\n visibility = firstChar;\r\n }\r\n\r\n methodName = text.substring(1, methodStart).trim();\r\n }\r\n\r\n let parameters = text.substring(methodStart + 1, methodEnd);\r\n let classifier = text.substring(methodEnd + 1, 1);\r\n cssStyle = parseClassifier(classifier);\r\n\r\n displayText = visibility + methodName + '(' + parseGenericTypes(parameters.trim()) + ')';\r\n\r\n if (methodEnd < memberText.length) {\r\n returnType = text.substring(methodEnd + 2).trim();\r\n if (returnType !== '') {\r\n returnType = ' : ' + parseGenericTypes(returnType);\r\n }\r\n }\r\n } else {\r\n // finally - if all else fails, just send the text back as written (other than parsing for generic types)\r\n displayText = parseGenericTypes(text);\r\n }\r\n\r\n return {\r\n displayText: displayText,\r\n cssStyle: cssStyle,\r\n };\r\n};\r\n\r\nconst addTspan = function (textEl, txt, isFirst, conf) {\r\n let member = parseMember(txt);\r\n\r\n const tSpan = textEl.append('tspan').attr('x', conf.padding).text(member.displayText);\r\n\r\n if (member.cssStyle !== '') {\r\n tSpan.attr('style', member.cssStyle);\r\n }\r\n\r\n if (!isFirst) {\r\n tSpan.attr('dy', conf.textHeight);\r\n }\r\n};\r\n\r\nconst parseGenericTypes = function (text) {\r\n let cleanedText = text;\r\n\r\n if (text.indexOf('~') != -1) {\r\n cleanedText = cleanedText.replace('~', '<');\r\n cleanedText = cleanedText.replace('~', '>');\r\n\r\n return parseGenericTypes(cleanedText);\r\n } else {\r\n return cleanedText;\r\n }\r\n};\r\n\r\nconst parseClassifier = function (classifier) {\r\n switch (classifier) {\r\n case '*':\r\n return 'font-style:italic;';\r\n case '$':\r\n return 'text-decoration:underline;';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport default {\r\n drawClass,\r\n drawEdge,\r\n parseMember,\r\n};\r\n","import DOMPurify from 'dompurify';\r\n\r\nexport const getRows = (s) => {\r\n if (!s) return 1;\r\n let str = breakToPlaceholder(s);\r\n str = str.replace(/\\\\n/g, '#br#');\r\n return str.split('#br#');\r\n};\r\n\r\nexport const removeScript = (txt) => {\r\n var rs = '';\r\n var idx = 0;\r\n\r\n while (idx >= 0) {\r\n idx = txt.indexOf('= 0) {\r\n rs += txt.substr(0, idx);\r\n txt = txt.substr(idx + 1);\r\n\r\n idx = txt.indexOf('');\r\n if (idx >= 0) {\r\n idx += 9;\r\n txt = txt.substr(idx);\r\n }\r\n } else {\r\n rs += txt;\r\n idx = -1;\r\n break;\r\n }\r\n }\r\n\r\n rs = rs.replace(/script>/gi, '#');\r\n rs = rs.replace(/script>/gi, '#');\r\n rs = rs.replace(/javascript:/gi, '#');\r\n rs = rs.replace(/onerror=/gi, 'onerror:');\r\n rs = rs.replace(/