diff --git a/.eslintrc.json b/.eslintrc.json index b223ac86c..8b48e39f1 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -6,15 +6,20 @@ }, "parser": "@babel/eslint-parser", "parserOptions": { - "ecmaFeatures": { - "experimentalObjectRestSpread": true, - "jsx": true - }, - "sourceType": "module" + "ecmaFeatures": { + "experimentalObjectRestSpread": true, + "jsx": true + }, + "sourceType": "module" }, - "extends": ["prettier", "eslint:recommended"], - "plugins": ["prettier"], + "extends": ["eslint:recommended", "plugin:jsdoc/recommended", "plugin:prettier/recommended"], + "plugins": ["jsdoc", "prettier"], "rules": { - "prettier/prettier": ["error"] + "jsdoc/check-indentation": 0, + "jsdoc/check-alignment": 0, + "jsdoc/check-line-alignment": 0, + "jsdoc/multiline-blocks": 0, + "jsdoc/newline-after-description": 0, + "jsdoc/tag-lines": 0 } -} +} diff --git a/.prettierrc b/.prettierrc index e9eb8060d..c6420f535 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,6 @@ { + "endOfLine": "auto", + "plugins": ["prettier-plugin-jsdoc"], "printWidth": 100, - "singleQuote": true, - "endOfLine": "auto" + "singleQuote": true } diff --git a/dist/mermaid.core.js b/dist/mermaid.core.js index d34a68a2a..b6911215b 100644 --- a/dist/mermaid.core.js +++ b/dist/mermaid.core.js @@ -8803,18 +8803,19 @@ var updateCurrentConfig = function updateCurrentConfig(siteCfg, _directives) { return cfg; }; /** - *## setSiteConfig - *| Function | Description | Type | Values | - *| --------- | ------------------- | ------- | ------------------ | - *| setSiteConfig|Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array| - ***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 currentConfig - *to the defaultConfig - *Note: currentConfig is set in this function - **Default value: At default, will mirror Global Config** - * @param conf - the base currentConfig to use as siteConfig - * @returns {Object} - the siteConfig + * ## setSiteConfig + * + * | Function | Description | Type | Values | + * | ------------- | ------------------------------------- | ----------- | --------------------------------------- | + * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array | + * + * **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 currentConfig to the defaultConfig Note: currentConfig is set in this + * function *Default value: At default, will mirror Global Config** + * + * @param conf - The base currentConfig to use as siteConfig + * @returns {object} - The siteConfig */ var setSiteConfig = function setSiteConfig(conf) { @@ -8837,29 +8838,33 @@ var updateSiteConfig = function updateSiteConfig(conf) { return siteConfig; }; /** - *## getSiteConfig - *| 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 {Object} - the siteConfig + * ## getSiteConfig + * + * | 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 {object} - The siteConfig */ var getSiteConfig = function getSiteConfig() { return (0,_utils__WEBPACK_IMPORTED_MODULE_1__.assignWithDepth)({}, siteConfig); }; /** - *## setConfig - *| Function | Description | Type | Values | - *| --------- | ------------------- | ------- | ------------------ | - *| setSiteConfig|Sets the siteConfig to desired values | Put Request| Any Values, except ones in secure array| - ***Notes**: - *Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure keys. Any - *values found in conf with key found in siteConfig.secure will be replaced with the corresponding - *siteConfig value. - * @param conf - the potential currentConfig - * @returns {*} - the currentConfig merged with the sanitized conf + * ## setConfig + * + * | Function | Description | Type | Values | + * | ------------- | ------------------------------------- | ----------- | --------------------------------------- | + * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array | + * + * **Notes**: Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure + * keys. Any values found in conf with key found in siteConfig.secure will be replaced with the + * corresponding siteConfig value. + * + * @param {any} conf - The potential currentConfig + * @returns {any} - The currentConfig merged with the sanitized conf */ var setConfig = function setConfig(conf) { @@ -8872,26 +8877,31 @@ var setConfig = function setConfig(conf) { return getConfig(); }; /** - * ## getConfig - *| Function | Description | Type | Return Values | - *| --------- | ------------------- | ------- | ------------------ | - *| getConfig |Obtains the currentConfig | Get Request | Any Values from currentConfig| - ***Notes**: - *Returns **any** the currentConfig - * @returns {*} - the currentConfig + * ## getConfig + * + * | Function | Description | Type | Return Values | + * | --------- | ------------------------- | ----------- | ------------------------------ | + * | getConfig | Obtains the currentConfig | Get Request | Any Values from current Config | + * + * **Notes**: Returns **any** the currentConfig + * + * @returns {any} - The currentConfig */ var getConfig = function getConfig() { return (0,_utils__WEBPACK_IMPORTED_MODULE_1__.assignWithDepth)({}, currentConfig); }; /** - *## sanitize - *| Function | Description | Type | Values | - *| --------- | ------------------- | ------- | ------------------ | - *| sanitize |Sets the siteConfig to desired values. | Put Request |None| - *Ensures options parameter does not attempt to override siteConfig secure keys - *Note: modifies options in-place - * @param options - the potential setConfig parameter + * ## sanitize + * + * | Function | Description | Type | Values | + * | -------- | -------------------------------------- | ----------- | ------ | + * | sanitize | Sets the siteConfig to desired values. | Put Request | None | + * + * Ensures options parameter does not attempt to override siteConfig secure keys **Notes**: modifies + * options in-place + * + * @param {any} options - The potential setConfig parameter */ var sanitize = function sanitize(options) { @@ -8926,7 +8936,8 @@ var sanitize = function sanitize(options) { }; /** * Pushes in a directive to the configuration - * @param {Object} directive The directive to push in + * + * @param {object} directive The directive to push in */ var addDirective = function addDirective(directive) { @@ -8948,18 +8959,19 @@ var addDirective = function addDirective(directive) { updateCurrentConfig(siteConfig, directives); }; /** - *## reset - *| Function | Description | Type | Required | Values | - *| --------- | ------------------- | ------- | -------- | ------------------ | - *| reset|Resets currentConfig to conf| Put Request | Required | None| + * ## reset * - *| Parameter | Description |Type | Required | Values| - *| --- | --- | --- | --- | --- | - *| conf| base set of values, which currentConfig coul be **reset** to.| Dictionary | Required | Any Values, with respect to the secure Array| + * | Function | Description | Type | Required | Values | + * | -------- | ---------------------------- | ----------- | -------- | ------ | + * | reset | Resets currentConfig to conf | Put Request | Required | None | * - **Notes : - (default: current siteConfig ) (optional, default `getSiteConfig()`) - * @param conf the base currentConfig to reset to (default: current siteConfig ) (optional, default `getSiteConfig()`) + * ## conf + * + * | Parameter | Description | Type | Required | Values | + * | --------- | ------------------------------------------------------------- | ---------- | -------- | -------------------------------------------- | + * | conf | base set of values, which currentConfig coul be **reset** to. | Dictionary | Required | Any Values, with respect to the secure Array | + * + * **Notes**: (default: current siteConfig ) (optional, default `getSiteConfig()`) */ var reset = function reset() { @@ -9045,6 +9057,10 @@ var rect = function rect(parent, node) { }; /** * Non visiable cluster where the note is group with its + * + * @param {any} parent + * @param {any} node + * @returns {any} ShapeSvg */ @@ -9187,59 +9203,24 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi // eslint-disable-line - // let vertexNode; -// if (evaluate(getConfig().flowchart.htmlLabels)) { -// // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that? -// const node = { -// label: vertexText.replace(/fa[lrsb]?:fa-[\w-]+/g, s => ``) -// }; -// vertexNode = addHtmlLabel(svg, node).node(); -// vertexNode.parentNode.removeChild(vertexNode); -// } else { -// const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text'); -// svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:')); -// const rows = vertexText.split(common.lineBreakRegex); -// for (let j = 0; j < rows.length; j++) { -// const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan'); -// tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve'); -// tspan.setAttribute('dy', '1em'); -// tspan.setAttribute('x', '1'); -// tspan.textContent = rows[j]; -// svgLabel.appendChild(tspan); -// } -// vertexNode = svgLabel; -// } + +/** + * @param dom + * @param styleFn + */ function applyStyle(dom, styleFn) { if (styleFn) { dom.attr('style', styleFn); } } +/** + * @param {any} node + * @returns {SVGForeignObjectElement} Node + */ + function addHtmlLabel(node) { - // var fo = root.append('foreignObject').attr('width', '100000'); - // var div = fo.append('xhtml:div'); - // div.attr('xmlns', 'http://www.w3.org/1999/xhtml'); - // var label = node.label; - // switch (typeof label) { - // case 'function': - // div.insert(label); - // break; - // case 'object': - // // Currently we assume this is a DOM object. - // div.insert(function() { - // return label; - // }); - // break; - // default: - // div.html(label); - // } - // applyStyle(div, node.labelStyle); - // div.style('display', 'inline-block'); - // // Fix for firefox - // div.style('white-space', 'nowrap'); - // var client = div.node().getBoundingClientRect(); - // fo.attr('width', client.width).attr('height', client.height); var fo = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject')); var div = fo.append('xhtml:div'); var label = node.label; @@ -9332,7 +9313,6 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _diagrams_common_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../diagrams/common/common */ "./src/diagrams/common/common.js"); // eslint-disable-line - // import { line, curveBasis, curveLinear, select } from 'd3'; @@ -9459,6 +9439,10 @@ var insertEdgeLabel = function insertEdgeLabel(elem, edge) { setTerminalWidth(fo, edge.endLabelRight); } }; +/** + * @param {any} fo + * @param {any} value + */ function setTerminalWidth(fo, value) { if ((0,_config__WEBPACK_IMPORTED_MODULE_3__.getConfig)().flowchart.htmlLabels && fo) { @@ -9677,9 +9661,10 @@ var intersection = function intersection(node, outsidePoint, insidePoint) { /** * This function will page a path and node where the last point(s) in the path is inside the node * and return an update path ending by the border of the node. - * @param {*} points - * @param {*} boundryNode - * @returns + * + * @param {Array} _points + * @param {any} boundryNode + * @returns {Array} Points */ var cutPathAtIntersect = function cutPathAtIntersect(_points, boundryNode) { @@ -10210,6 +10195,11 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _intersect_ellipse__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./intersect-ellipse */ "./src/dagre-wrapper/intersect/intersect-ellipse.js"); +/** + * @param node + * @param rx + * @param point + */ function intersectCircle(node, rx, point) { return (0,_intersect_ellipse__WEBPACK_IMPORTED_MODULE_0__["default"])(node, rx, rx, point); @@ -10230,6 +10220,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); +/** + * @param node + * @param rx + * @param ry + * @param point + */ function intersectEllipse(node, rx, ry, point) { // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html var cx = node.x; @@ -10270,9 +10266,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); -/* - * Returns the point at which two lines, p and q, intersect or returns - * undefined if they do not intersect. +/** + * Returns the point at which two lines, p and q, intersect or returns undefined if they do not intersect. + * + * @param p1 + * @param p2 + * @param q1 + * @param q2 */ function intersectLine(p1, p2, q1, q2) { // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994, @@ -10329,6 +10329,11 @@ function intersectLine(p1, p2, q1, q2) { y: y }; } +/** + * @param r1 + * @param r2 + */ + function sameSign(r1, r2) { return r1 * r2 > 0; @@ -10345,6 +10350,10 @@ function sameSign(r1, r2) { /***/ ((module) => { module.exports = intersectNode; +/** + * @param node + * @param point + */ function intersectNode(node, point) { // console.info('Intersect Node'); @@ -10368,9 +10377,13 @@ __webpack_require__.r(__webpack_exports__); /* eslint "no-console": off */ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (intersectPolygon); -/* - * Returns the point ({x, y}) at which the point argument intersects with the - * node argument assuming that it has the shape specified by polygon. +/** + * Returns the point ({x, y}) at which the point argument intersects with the node argument assuming + * that it has the shape specified by polygon. + * + * @param node + * @param polyPoints + * @param point */ function intersectPolygon(node, polyPoints, point) { @@ -10494,9 +10507,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../logger */ "./src/logger.js"); -/** - * Setup arrow head and define the marker. The result is appended to the svg. - */ +/** Setup arrow head and define the marker. The result is appended to the svg. */ // Only add the number of markers that the diagram needs var insertMarkers = function insertMarkers(elem, markerArray, type, id) { @@ -10583,9 +10594,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../logger */ "./src/logger.js"); /* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! graphlib */ "graphlib"); /* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_0__); -/** - * Decorates with functions required by mermaids dagre-wrapper. - */ +/** Decorates with functions required by mermaids dagre-wrapper. */ var clusterDb = {}; @@ -10697,7 +10706,8 @@ var extractDecendants = function extractDecendants(id, graph) { /** * Validates the graph, checking that all parent child relation points to existing nodes and that * edges between nodes also ia correct. When not correct the function logs the discrepancies. - * @param {graphlib graph} g + * + * @param graph */ var validate = function validate(graph) { @@ -10720,8 +10730,9 @@ var validate = function validate(graph) { }; /** * Finds a child that is not a cluster. When faking a edge between a node and a cluster. - * @param {Finds a } id - * @param {*} graph + * + * @param {Finds a} id + * @param {any} graph */ var findNonClusterChild = function findNonClusterChild(id, graph) { @@ -11971,6 +11982,13 @@ var updateNodeBounds = function updateNodeBounds(node, element) { node.width = bbox.width; node.height = bbox.height; }; +/** + * @param parent + * @param w + * @param h + * @param points + */ + function insertPolygonShape(parent, w, h, points) { return parent.insert('polygon', ':first-child').attr('points', points.map(function (d) { return d.x + ',' + d.y; @@ -12008,56 +12026,38 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi /** - * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click here](8.6.0_docs.md)].** + * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click + * here](8.6.0_docs.md)].** * * ## **What follows are config instructions for older versions** * * These are the default options which can be overridden with the initialization call like so: * - * **Example 1:** - *
- * mermaid.initialize({ - * flowchart:{ - * htmlLabels: false - * } - * }); - *+ * **Example 1:**
mermaid.initialize({ flowchart:{ htmlLabels: false } });* - * **Example 2:** - *
- * <script> - * var config = { - * startOnLoad:true, - * flowchart:{ - * useMaxWidth:true, - * htmlLabels:true, - * curve:'cardinal', - * }, + * **Example 2:**+ * + * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults). + * A description of each option follows below. * * @name Configuration */ var config = { /** - * theme , the CSS style sheet + * Theme , the CSS style sheet * - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | theme | Built in Themes | string | Optional | 'default', 'forest', 'dark', 'neutral', 'null'| + * | Parameter | Description | Type | Required | Values | + * | --------- | --------------- | ------ | -------- | ---------------------------------------------- | + * | theme | Built in Themes | string | Optional | 'default', 'forest', 'dark', 'neutral', 'null' | * - * **Notes:** To disable any pre-defined mermaid theme, use "null". - * - *- * "theme": "forest", - * "themeCSS": ".node rect { fill: red; }" - *+ * **Notes:** To disable any pre-defined mermaid theme, use "null"."theme": "forest", + * "themeCSS": ".node rect { fill: red; }"*/ theme: 'default', themeVariables: _themes__WEBPACK_IMPORTED_MODULE_0__["default"]["default"].getThemeVariables(), @@ -12067,47 +12067,46 @@ var config = { maxTextSize: 50000, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | fontFamily | specifies the font to be used in the rendered diagrams| string | Required | Any Possible CSS FontFamily | + * | Parameter | Description | Type | Required | Values | + * | ---------- | ------------------------------------------------------ | ------ | -------- | --------------------------- | + * | fontFamily | specifies the font to be used in the rendered diagrams | string | Required | Any Possible CSS FontFamily | * - * **Notes:** - * Default value: '"trebuchet ms", verdana, arial, sans-serif;'. + * **Notes:** Default value: '"trebuchet ms", verdana, arial, sans-serif;'. */ fontFamily: '"trebuchet ms", verdana, arial, sans-serif;', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | logLevel |This option decides the amount of logging to be used.| string \| number | Required | 1, 2, 3, 4, 5 | - * + * | Parameter | Description | Type | Required | Values | + * | --------- | ----------------------------------------------------- | ---------------- | -------- | ------------- | + * | logLevel | This option decides the amount of logging to be used. | string \| number | Required | 1, 2, 3, 4, 5 | * * **Notes:** * - * - debug: 1 - * - info: 2 - * - warn: 3 - * - error: 4 - * - fatal: 5 (default) + * - Debug: 1 + * - Info: 2 + * - Warn: 3 + * - Error: 4 + * - Fatal: 5 (default) */ logLevel: 5, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | securitylevel | Level of trust for parsed diagram|string | Required | 'strict', 'loose', 'antiscript' | + * | Parameter | Description | Type | Required | Values | + * | ------------- | --------------------------------- | ------ | -------- | ------------------------------- | + * | securitylevel | Level of trust for parsed diagram | string | Required | 'strict', 'loose', 'antiscript' | * * **Notes**: * * - **strict**: (**default**) tags in text are encoded, click functionality is disabled * - **loose**: tags in text are allowed, click functionality is enabled - * - **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled + * - **antiscript**: html tags in text are allowed, (only script element is removed), click + * functionality is enabled */ securityLevel: 'strict', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ----------- | -------------------------------------------- | ------- | -------- | ----------- | * | startOnLoad | Dictates whether mermaid starts on Page load | boolean | Required | true, false | * * **Notes:** Default value: true @@ -12115,11 +12114,10 @@ var config = { startOnLoad: true, /** - * | Parameter | Description |Type | Required |Values| - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------------- | ---------------------------------------------------------------------------- | ------- | -------- | ----------- | * | arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | boolean | Required | true, false | * - * * **Notes**: * * This matters if you are using base tag settings. @@ -12129,90 +12127,95 @@ var config = { arrowMarkerAbsolute: false, /** - * This option controls which currentConfig keys are considered _secure_ and can only be changed via - * call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to - * the `secure` keys in the current currentConfig. This prevents malicious graph directives from + * This option controls which currentConfig keys are considered *secure* and can only be changed + * via call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to the + * `secure` keys in the current currentConfig. This prevents malicious graph directives from * overriding a site's default security. - * **Notes**: + * + * **Notes**: * * Default value: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'] */ secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'], /** - * This option controls if the generated ids of nodes in the SVG are generated randomly or based on a seed. - * If set to false, the IDs are generated based on the current date and thus are not deterministic. This is the default behaviour. + * This option controls if the generated ids of nodes in the SVG are generated randomly or based + * on a seed. If set to false, the IDs are generated based on the current date and thus are not + * deterministic. This is the default behaviour. * * **Notes**: * - * This matters if your files are checked into sourcecontrol e.g. git and should not change unless content is changed. + * This matters if your files are checked into sourcecontrol e.g. git and should not change unless + * content is changed. * * Default value: false */ deterministicIds: false, /** - * This option is the optional seed for deterministic ids. if set to undefined but deterministicIds is true, a simple number iterator is used. - * You can set this attribute to base the seed on a static string. + * This option is the optional seed for deterministic ids. if set to undefined but + * deterministicIds is true, a simple number iterator is used. You can set this attribute to base + * the seed on a static string. */ deterministicIDSeed: undefined, - /** - * The object containing configurations specific for flowcharts - */ + /** The object containing configurations specific for flowcharts */ flowchart: { /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ | * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value | * * **Notes:** * - * The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels + * The amount of padding around the diagram as a whole so that embedded diagrams have margins, + * expressed in pixels * * Default value: 8 */ diagramPadding: 8, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | boolean| Required | true, false | + * | Parameter | Description | Type | Required | Values | + * | ---------- | -------------------------------------------------------------------------------------------- | ------- | -------- | ----------- | + * | htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | boolean | Required | true, false | * * **Notes:** Default value: true. */ htmlLabels: true, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ----------- | --------------------------------------------------- | ------- | -------- | ------------------- | * | nodeSpacing | Defines the spacing between nodes on the same level | Integer | Required | Any positive Number | * * **Notes:** * - * Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the vertical spacing for LR as well as RL graphs.** + * Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the + * vertical spacing for LR as well as RL graphs.** * * Default value: 50 */ nodeSpacing: 50, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------------------------------------------------- | ------- | -------- | ------------------- | * | rankSpacing | Defines the spacing between nodes on different levels | Integer | Required | Any Positive Number | * * **Notes**: * - * pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal spacing for LR as well as RL graphs. + * Pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal + * spacing for LR as well as RL graphs. * * Default value 50 */ rankSpacing: 50, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | curve | Defines how mermaid renders curves for flowcharts. | string | Required | 'basis', 'linear', 'cardinal'| + * | Parameter | Description | Type | Required | Values | + * | --------- | -------------------------------------------------- | ------ | -------- | ----------------------------- | + * | curve | Defines how mermaid renders curves for flowcharts. | string | Required | 'basis', 'linear', 'cardinal' | * * **Notes:** * @@ -12224,9 +12227,9 @@ var config = { padding: 15, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See notes | boolean | 4 | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See notes | boolean | 4 | true, false | * * **Notes:** * @@ -12238,38 +12241,34 @@ var config = { useMaxWidth: true, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | - * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ----------- | ------- | -------- | ----------------------- | + * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper | * * **Notes:** * * Decides which rendering engine that is to be used for the rendering. Legal values are: - * * dagre-d3 - * * dagre-wrapper - wrapper for dagre implemented in mermaid + * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid * * Default value: 'dagre-d3' */ defaultRenderer: 'dagre-d3' }, - /** - * The object containing configurations specific for sequence diagrams - */ + /** The object containing configurations specific for sequence diagrams */ sequence: { /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ---------------------------- | ------- | -------- | ------------------ | * | activationWidth | Width of the activation rect | Integer | Required | Any Positive Value | * - * * **Notes:** Default value :10 */ activationWidth: 10, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ | * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value | * * **Notes:** Default value: 50 @@ -12277,108 +12276,99 @@ var config = { diagramMarginX: 50, /** - *| Parameter | Description | Type | Required | Values | - *| --- | --- | --- | --- | --- | - *| diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | -------------- | ------------------------------------------------- | ------- | -------- | ------------------ | + * | diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Value | * * **Notes:** Default value: 10 */ diagramMarginY: 10, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ----------- | --------------------- | ------- | -------- | ------------------ | * | actorMargin | Margin between actors | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 50 + * **Notes:** Default value: 50 */ actorMargin: 50, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | width | Width of actor boxes | Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------- | -------------------- | ------- | -------- | ------------------ | + * | width | Width of actor boxes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 150 + * **Notes:** Default value: 150 */ width: 150, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | height | Height of actor boxes | Integer | Required | Any Positive Value| + * | Parameter | Description | Type | Required | Values | + * | --------- | --------------------- | ------- | -------- | ------------------ | + * | height | Height of actor boxes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 65 + * **Notes:** Default value: 65 */ height: 65, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | --------- | ------------------------ | ------- | -------- | ------------------ | * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 10 + * **Notes:** Default value: 10 */ boxMargin: 10, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ | * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 5 + * **Notes:** Default value: 5 */ boxTextMargin: 5, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ---------- | ------------------- | ------- | -------- | ------------------ | * | noteMargin | margin around notes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 10 + * **Notes:** Default value: 10 */ noteMargin: 10, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------- | ---------------------- | ------- | -------- | ------------------ | * | messageMargin | Space between messages | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 35 + * **Notes:** Default value: 35 */ messageMargin: 35, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------ | --------------------------- | ------ | -------- | ------------------------- | * | messageAlign | Multiline message alignment | string | Required | 'left', 'center', 'right' | * - * **Notes:** - * Default value: 'center' + * **Notes:** Default value: 'center' */ messageAlign: 'center', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------ | --------------------------- | ------- | -------- | ----------- | * | mirrorActors | Mirror actors under diagram | boolean | Required | true, false | * - * **Notes:** - * Default value: true + * **Notes:** Default value: true */ mirrorActors: true, /** - *| Parameter | Description |Type | Required | Values| - *| --- | --- | --- | --- | --- | - *| forceMenus | forces actor popup menus to always be visible (to support E2E testing). | Boolean| Required | True, False | + * | Parameter | Description | Type | Required | Values | + * | ---------- | ----------------------------------------------------------------------- | ------- | -------- | ----------- | + * | forceMenus | forces actor popup menus to always be visible (to support E2E testing). | Boolean | Required | True, False | * * **Notes:** * @@ -12387,8 +12377,8 @@ var config = { forceMenus: false, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ | * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | Required | Any Positive Value | * * **Notes:** @@ -12400,21 +12390,20 @@ var config = { bottomMarginAdj: 1, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See Notes | boolean | Required | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See Notes | boolean | Required | true, false | * - * **Notes:** - * When this flag is set to true, the height and width is set to 100% and is then scaling with the - * available space. If set to false, the absolute space required is used. + * **Notes:** When this flag is set to true, the height and width is set to 100% and is then + * scaling with the available space. If set to false, the absolute space required is used. * * Default value: true */ useMaxWidth: true, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ------------------------------------ | ------- | -------- | ----------- | * | rightAngles | display curve arrows as right angles | boolean | Required | true, false | * * **Notes:** @@ -12426,138 +12415,123 @@ var config = { rightAngles: false, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------------- | ------------------------------- | ------- | -------- | ----------- | * | showSequenceNumbers | This will show the node numbers | boolean | Required | true, false | * - * **Notes:** - * Default value: false + * **Notes:** Default value: false */ showSequenceNumbers: false, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | actorFontSize| This sets the font size of the actor's description | Integer | Require | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | ------------- | -------------------------------------------------- | ------- | -------- | ------------------ | + * | actorFontSize | This sets the font size of the actor's description | Integer | Require | Any Positive Value | * - ***Notes:** - ***Default value 14**.. + * **Notes:** **Default value 14**.. */ actorFontSize: 14, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | actorFontFamily |This sets the font family of the actor's description | string | Required | Any Possible CSS FontFamily | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ---------------------------------------------------- | ------ | -------- | --------------------------- | + * | actorFontFamily | This sets the font family of the actor's description | string | Required | Any Possible CSS FontFamily | * - * **Notes:** - * Default value: "'Open-Sans", "sans-serif"' + * **Notes:** Default value: "'Open-Sans", "sans-serif"' */ actorFontFamily: '"Open-Sans", "sans-serif"', /** * This sets the font weight of the actor's description * - * **Notes:** - * Default value: 400. + * **Notes:** Default value: 400. */ actorFontWeight: 400, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------ | ----------------------------------------------- | ------- | -------- | ------------------ | * | noteFontSize | This sets the font size of actor-attached notes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 14 + * **Notes:** Default value: 14 */ noteFontSize: 14, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | noteFontFamily| This sets the font family of actor-attached notes. | string | Required | Any Possible CSS FontFamily | + * | Parameter | Description | Type | Required | Values | + * | -------------- | -------------------------------------------------- | ------ | -------- | --------------------------- | + * | noteFontFamily | This sets the font family of actor-attached notes. | string | Required | Any Possible CSS FontFamily | * - * **Notes:** - * Default value: ''"trebuchet ms", verdana, arial, sans-serif' + * **Notes:** Default value: ''"trebuchet ms", verdana, arial, sans-serif' */ noteFontFamily: '"trebuchet ms", verdana, arial, sans-serif', /** * This sets the font weight of the note's description * - * **Notes:** - * Default value: 400 + * **Notes:** Default value: 400 */ noteFontWeight: 400, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | noteAlign | This sets the text alignment of actor-attached notes | string | required | 'left', 'center', 'right'| + * | Parameter | Description | Type | Required | Values | + * | --------- | ---------------------------------------------------- | ------ | -------- | ------------------------- | + * | noteAlign | This sets the text alignment of actor-attached notes | string | required | 'left', 'center', 'right' | * - * **Notes:** - * Default value: 'center' + * **Notes:** Default value: 'center' */ noteAlign: 'center', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ----------------------------------------- | ------- | -------- | ------------------- | * | messageFontSize | This sets the font size of actor messages | Integer | Required | Any Positive Number | * - * **Notes:** - * Default value: 16 + * **Notes:** Default value: 16 */ messageFontSize: 16, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ----------------- | ------------------------------------------- | ------ | -------- | --------------------------- | * | messageFontFamily | This sets the font family of actor messages | string | Required | Any Possible CSS FontFamily | * - * **Notes:** - * Default value: '"trebuchet ms", verdana, arial, sans-serif' + * **Notes:** Default value: '"trebuchet ms", verdana, arial, sans-serif' */ messageFontFamily: '"trebuchet ms", verdana, arial, sans-serif', /** * This sets the font weight of the message's description * - * **Notes:** - * Default value: 400. + * **Notes:** Default value: 400. */ messageFontWeight: 400, /** * This sets the auto-wrap state for the diagram * - * **Notes:** - * Default value: false. + * **Notes:** Default value: false. */ wrap: false, /** * This sets the auto-wrap padding for the diagram (sides only) * - * **Notes:** - * Default value: 0. + * **Notes:** Default value: 0. */ wrapPadding: 10, /** * This sets the width of the loop-box (loop, alt, opt, par) * - * **Notes:** - * Default value: 50. + * **Notes:** Default value: 50. */ labelBoxWidth: 50, /** * This sets the height of the loop-box (loop, alt, opt, par) * - * **Notes:** - * Default value: 20. + * **Notes:** Default value: 20. */ labelBoxHeight: 20, messageFont: function messageFont() { @@ -12583,116 +12557,104 @@ var config = { } }, - /** - * The object containing configurations specific for gantt diagrams - */ + /** The object containing configurations specific for gantt diagrams */ gantt: { /** * ### titleTopMargin * - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ | * | titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 25 + * **Notes:** Default value: 25 */ titleTopMargin: 25, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | --------- | ----------------------------------- | ------- | -------- | ------------------ | * | barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 20 + * **Notes:** Default value: 20 */ barHeight: 20, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | barGap | The margin between the different activities in the gantt diagram | Integer | Optional | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------- | ---------------------------------------------------------------- | ------- | -------- | ------------------ | + * | barGap | The margin between the different activities in the gantt diagram | Integer | Optional | Any Positive Value | * - * **Notes:** - * Default value: 4 + * **Notes:** Default value: 4 */ barGap: 4, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ---------- | -------------------------------------------------------------------------- | ------- | -------- | ------------------ | * | topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 50 + * **Notes:** Default value: 50 */ topPadding: 50, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------ | ----------------------------------------------------------------------- | ------- | -------- | ------------------ | * | rightPadding | The space allocated for the section name to the right of the activities | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 75 + * **Notes:** Default value: 75 */ rightPadding: 75, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ---------------------------------------------------------------------- | ------- | -------- | ------------------ | * | leftPadding | The space allocated for the section name to the left of the activities | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 75 + * **Notes:** Default value: 75 */ leftPadding: 75, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | -------------------- | -------------------------------------------- | ------- | -------- | ------------------ | * | gridLineStartPadding | Vertical starting position of the grid lines | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 35 + * **Notes:** Default value: 35 */ gridLineStartPadding: 35, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | - * | fontSize | Font size | Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------- | ----------- | ------- | -------- | ------------------ | + * | fontSize | Font size | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 11 + * **Notes:** Default value: 11 */ fontSize: 11, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | - * | sectionFontSize | Font size for sections| Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ---------------------- | ------- | -------- | ------------------ | + * | sectionFontSize | Font size for sections | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 11 + * **Notes:** Default value: 11 */ sectionFontSize: 11, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | - * | numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | ------------------- | ---------------------------------------- | ------- | -------- | ------------------ | + * | numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value | * - * **Notes:** - * Default value: 4 + * **Notes:** Default value: 4 */ numberSectionStyles: 4, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | axisFormat | Datetime format of the axis | 3 | Required | Date in yy-mm-dd | + * | Parameter | Description | Type | Required | Values | + * | ---------- | --------------------------- | ---- | -------- | ---------------- | + * | axisFormat | Datetime format of the axis | 3 | Required | Date in yy-mm-dd | * * **Notes:** * @@ -12703,9 +12665,9 @@ var config = { axisFormat: '%Y-%m-%d', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See notes | boolean | 4 | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See notes | boolean | 4 | true, false | * * **Notes:** * @@ -12717,107 +12679,96 @@ var config = { useMaxWidth: true, /** - *| Parameter | Description |Type | Required | Values| - *| --- | --- | --- | --- | --- | - *| topAxis | See notes | Boolean | 4 | True, False | + * | Parameter | Description | Type | Required | Values | + * | --------- | ----------- | ------- | -------- | ----------- | + * | topAxis | See notes | Boolean | 4 | True, False | * - ***Notes:** when this flag is set date labels will be added to the - top of the chart + * **Notes:** when this flag is set date labels will be added to the top of the chart * - ***Default value false**. + * **Default value false**. */ topAxis: false, useWidth: undefined }, - /** - * The object containing configurations specific for journey diagrams - */ + /** The object containing configurations specific for journey diagrams */ journey: { /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ | * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 50 + * **Notes:** Default value: 50 */ diagramMarginX: 50, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | -------------- | -------------------------------------------------- | ------- | -------- | ------------------ | * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 10 + * **Notes:** Default value: 10 */ diagramMarginY: 10, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ----------- | --------------------- | ------- | -------- | ------------------ | * | actorMargin | Margin between actors | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 50 + * **Notes:** Default value: 50 */ leftMargin: 150, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | width | Width of actor boxes | Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------- | -------------------- | ------- | -------- | ------------------ | + * | width | Width of actor boxes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 150 + * **Notes:** Default value: 150 */ width: 150, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | height | Height of actor boxes | Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------- | --------------------- | ------- | -------- | ------------------ | + * | height | Height of actor boxes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 65 + * **Notes:** Default value: 65 */ height: 50, /** - *| Parameter | Description |Type | Required | Values| - *| --- | --- | --- | --- | --- | - *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------- | ------------------------ | ------- | -------- | ------------------ | + * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 10 + * **Notes:** Default value: 10 */ boxMargin: 10, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ | * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 5 + * **Notes:** Default value: 5 */ boxTextMargin: 5, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ---------- | ------------------- | ------- | -------- | ------------------ | * | noteMargin | Margin around notes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 10 + * **Notes:** Default value: 10 */ noteMargin: 10, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | messageMargin |Space between messages. | Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | ------------- | ----------------------- | ------- | -------- | ------------------ | + * | messageMargin | Space between messages. | Integer | Required | Any Positive Value | * * **Notes:** * @@ -12828,19 +12779,18 @@ var config = { messageMargin: 35, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' | + * | Parameter | Description | Type | Required | Values | + * | ------------ | --------------------------- | ---- | -------- | ------------------------- | + * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' | * - * **Notes:** - * Default value: 'center' + * **Notes:** Default value: 'center' */ messageAlign: 'center', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ | + * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value | * * **Notes:** * @@ -12851,9 +12801,9 @@ var config = { bottomMarginAdj: 1, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See notes | boolean | 4 | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See notes | boolean | 4 | true, false | * * **Notes:** * @@ -12865,9 +12815,9 @@ var config = { useMaxWidth: true, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | --------------------------------- | ---- | -------- | ----------- | + * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false | * * **Notes:** * @@ -12891,9 +12841,9 @@ var config = { arrowMarkerAbsolute: false, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See notes | boolean | 4 | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See notes | boolean | 4 | true, false | * * **Notes:** * @@ -12905,15 +12855,14 @@ var config = { useMaxWidth: true, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | - * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ----------- | ------- | -------- | ----------------------- | + * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper | * - * **Notes:** + * **Notes**: * * Decides which rendering engine that is to be used for the rendering. Legal values are: - * * dagre-d3 - * * dagre-wrapper - wrapper for dagre implemented in mermaid + * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid * * Default value: 'dagre-d3' */ @@ -12924,9 +12873,9 @@ var config = { useWidth: undefined, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See notes | boolean | 4 | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See notes | boolean | 4 | true, false | * * **Notes:** * @@ -12958,9 +12907,9 @@ var config = { radius: 5, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See notes | boolean | 4 | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See notes | boolean | 4 | true, false | * * **Notes:** * @@ -12972,41 +12921,39 @@ var config = { useMaxWidth: true, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | - * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ----------- | ------- | -------- | ----------------------- | + * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper | * * **Notes:** * * Decides which rendering engine that is to be used for the rendering. Legal values are: - * * dagre-d3 - * * dagre-wrapper - wrapper for dagre implemented in mermaid + * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid * * Default value: 'dagre-d3' */ defaultRenderer: 'dagre-wrapper' }, - /** - * The object containing configurations specific for entity relationship diagrams - */ + /** The object containing configurations specific for entity relationship diagrams */ er: { /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ | * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value | * * **Notes:** * - * The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels + * The amount of padding around the diagram as a whole so that embedded diagrams have margins, + * expressed in pixels * * Default value: 20 */ diagramPadding: 20, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ---------------------------------------- | ------ | -------- | ---------------------- | * | layoutDirection | Directional bias for layout of entities. | string | Required | "TB", "BT", "LR", "RL" | * * **Notes:** @@ -13020,126 +12967,113 @@ var config = { layoutDirection: 'TB', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | minEntityWidth | The minimum width of an entity box | Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | -------------- | ---------------------------------- | ------- | -------- | ------------------ | + * | minEntityWidth | The minimum width of an entity box | Integer | Required | Any Positive Value | * - * **Notes:** - * Expressed in pixels. - * Default value: 100 + * **Notes:** Expressed in pixels. Default value: 100 */ minEntityWidth: 100, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | minEntityHeight| The minimum height of an entity box | Integer | 4 | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ----------------------------------- | ------- | -------- | ------------------ | + * | minEntityHeight | The minimum height of an entity box | Integer | 4 | Any Positive Value | * - * **Notes:** - * Expressed in pixels - * Default value: 75 + * **Notes:** Expressed in pixels Default value: 75 */ minEntityHeight: 75, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | entityPadding | Minimum internal padding betweentext in box and box borders | Integer | 4 | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | ------------- | ----------------------------------------------------------- | ------- | -------- | ------------------ | + * | entityPadding | Minimum internal padding betweentext in box and box borders | Integer | 4 | Any Positive Value | * * **Notes:** * - * The minimum internal padding betweentext in an entity box and the enclosing box borders, expressed in pixels. + * The minimum internal padding betweentext in an entity box and the enclosing box borders, + * expressed in pixels. * * Default value: 15 */ entityPadding: 15, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | stroke | Stroke color of box edges and lines | string | 4 | Any recognized color | + * | Parameter | Description | Type | Required | Values | + * | --------- | ----------------------------------- | ------ | -------- | -------------------- | + * | stroke | Stroke color of box edges and lines | string | 4 | Any recognized color | * - * **Notes:** - * Default value: 'gray' + * **Notes:** Default value: 'gray' */ stroke: 'gray', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | fill | Fill color of entity boxes | string | 4 | Any recognized color | + * | Parameter | Description | Type | Required | Values | + * | --------- | -------------------------- | ------ | -------- | -------------------- | + * | fill | Fill color of entity boxes | string | 4 | Any recognized color | * - * **Notes:** - * Default value: 'honeydew' + * **Notes:** Default value: 'honeydew' */ fill: 'honeydew', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | fontSize | Font Size in pixels | Integer | | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------- | ------------------- | ------- | -------- | ------------------ | + * | fontSize | Font Size in pixels | Integer | | Any Positive Value | * * **Notes:** * - * Font size (expressed as an integer representing a number of pixels) - * Default value: 12 + * Font size (expressed as an integer representing a number of pixels) Default value: 12 */ fontSize: 12, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See Notes | boolean | Required | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See Notes | boolean | Required | true, false | * * **Notes:** * - * When this flag is set to true, the diagram width is locked to 100% and - * scaled based on available space. If set to false, the diagram reserves its - * absolute width. + * When this flag is set to true, the diagram width is locked to 100% and scaled based on + * available space. If set to false, the diagram reserves its absolute width. * * Default value: true */ useMaxWidth: true }, - /** - * The object containing configurations specific for pie diagrams - */ + /** The object containing configurations specific for pie diagrams */ pie: { useWidth: undefined, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See Notes | boolean | Required | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See Notes | boolean | Required | true, false | * * **Notes:** * - * When this flag is set to true, the diagram width is locked to 100% and - * scaled based on available space. If set to false, the diagram reserves its - * absolute width. + * When this flag is set to true, the diagram width is locked to 100% and scaled based on + * available space. If set to false, the diagram reserves its absolute width. * * Default value: true */ useMaxWidth: true }, - /** - * The object containing configurations specific for req diagrams - */ + /** The object containing configurations specific for req diagrams */ requirement: { useWidth: undefined, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See Notes | boolean | Required | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See Notes | boolean | Required | true, false | * * **Notes:** * - * When this flag is set to true, the diagram width is locked to 100% and - * scaled based on available space. If set to false, the diagram reserves its - * absolute width. + * When this flag is set to true, the diagram width is locked to 100% and scaled based on + * available space. If set to false, the diagram reserves its absolute width. * * Default value: true */ @@ -13256,6 +13190,7 @@ var splitClassNameAndType = function splitClassNameAndType(id) { }; /** * Function called by parser when a node definition has been found. + * * @param id * @public */ @@ -13278,6 +13213,7 @@ var addClass = function addClass(id) { }; /** * Function to lookup domId from id in the graph definition. + * * @param id * @public */ @@ -13315,8 +13251,9 @@ var addRelation = function addRelation(relation) { relations.push(relation); }; /** - * Adds an annotation to the specified class - * Annotations mark special properties of the given type (like 'interface' or 'service') + * Adds an annotation to the specified class Annotations mark special properties of the given type + * (like 'interface' or 'service') + * * @param className The class name * @param annotation The name of the annotation without any brackets * @public @@ -13328,11 +13265,11 @@ var addAnnotation = function addAnnotation(className, annotation) { }; /** * Adds a member to the specified class + * * @param className The class name - * @param member The full name of the member. - * If the member is enclosed in <> it is treated as an annotation - * If the member is ending with a closing bracket ) it is treated as a method - * Otherwise the member will be treated as a normal property + * @param member The full name of the member. If the member is enclosed in < > it is + * treated as an annotation If the member is ending with a closing bracket ) it is treated as a + * method Otherwise the member will be treated as a normal property * @public */ @@ -13371,6 +13308,7 @@ var cleanupLabel = function cleanupLabel(label) { }; /** * Called by parser when a special node is found, e.g. a clickable element. + * * @param ids Comma separated list of ids * @param className Class to add */ @@ -13387,6 +13325,7 @@ var setCssClass = function setCssClass(ids, className) { }; /** * Called by parser when a tooltip is found, e.g. a clickable element. + * * @param ids Comma separated list of ids * @param tooltip Tooltip to add */ @@ -13401,6 +13340,7 @@ var setTooltip = function setTooltip(ids, tooltip) { }; /** * Called by parser when a link is found. Adds the URL to the vertex data. + * * @param ids Comma separated list of ids * @param linkStr URL to create a link for * @param target Target of the link, _blank by default as originally defined in the svgDraw.js file @@ -13427,6 +13367,7 @@ var setLink = function setLink(ids, linkStr, target) { }; /** * Called by parser when a click definition is found. Registers an event handler. + * * @param ids Comma separated list of ids * @param functionName Function to be called on click * @param functionArgs Function args the function should be called with @@ -13630,7 +13571,12 @@ var conf = { }; /** * Function that adds the vertices found during parsing to the graph to be rendered. - * @param {Object ; text: string; id: string; type: string; domId: string; }>} classes Object containing the vertices. + * + * @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. */ @@ -13644,6 +13590,7 @@ var addClasses = function addClasses(classes, g) { var vertex = classes[id]; /** * Variable for storing the classes for the vertex + * * @type {string} */ @@ -13734,8 +13681,9 @@ var addClasses = function addClasses(classes, g) { }; /** * Add edges to graph based on parsed graph defninition - * @param {Object} edges The edges to add to the graph - * @param {Object} g The graph object + * + * @param relations + * @param {object} g The graph object */ var addRelations = function addRelations(relations, g) { @@ -13832,6 +13780,7 @@ var addRelations = function addRelations(relations, g) { }; /** * Gets the ID with the same label as in the cache + * * @param {string} label The label to look for * @returns {string} The resulting ID */ @@ -13847,7 +13796,8 @@ var getGraphId = function getGraphId(label) { }; /** * Merges the value of `conf` with the passed `cnf` - * @param {Object} cnf Config to merge + * + * @param {object} cnf Config to merge */ @@ -13859,6 +13809,7 @@ var setConf = function setConf(cnf) { }; /** * Draws a flowchart in the tag with id: id based on the graph definition in text. + * * @param {string} text * @param {string} id */ @@ -14051,8 +14002,9 @@ var draw = function draw(text, id) { }; /** * Gets the arrow marker for a type index + * * @param {number} type The type to look for - * @returns {"aggregation" | "extension" | "composition" | "dependency"} The arrow marker + * @returns {'aggregation' | 'extension' | 'composition' | 'dependency'} The arrow marker */ function getArrowMarker(type) { @@ -14132,6 +14084,7 @@ var conf = { }; /** * Gets the ID with the same label as in the cache + * * @param {string} label The label to look for * @returns {string} The resulting ID */ @@ -14147,6 +14100,7 @@ var getGraphId = function getGraphId(label) { }; /** * Setup arrow head and define the marker. The result is appended to the svg. + * * @param {SVGSVGElement} elem The SVG element to append to */ @@ -14164,7 +14118,8 @@ var insertMarkers = function insertMarkers(elem) { }; /** * Merges the value of `conf` with the passed `cnf` - * @param {Object} cnf Config to merge + * + * @param {object} cnf Config to merge */ @@ -14176,6 +14131,7 @@ var setConf = function setConf(cnf) { }; /** * Draws a flowchart in the tag with id: id based on the graph definition in text. + * * @param {string} text * @param {string} id */ @@ -14389,7 +14345,10 @@ var drawEdge = function drawEdge(elem, path, relation, conf) { }; /** * Renders a class diagram + * * @param {SVGSVGElement} elem The element to draw it into + * @param classDef + * @param conf * @todo Add more information in the JSDOC here */ @@ -14581,10 +14540,11 @@ var buildLegacyDisplay = function buildLegacyDisplay(text) { }; /** * 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 + * @param {{ padding: string; textHeight: string }} conf The configuration for the member */ @@ -14602,9 +14562,11 @@ var addTspan = function addTspan(textEl, txt, isFirst, conf) { }; /** * Makes generics in typescript syntax + * * @example Array of array of strings in typescript syntax - * // returns "Array>" - * parseGenericTypes("Array~Array~string~~"); + * // returns "Array >" + * parseGenericTypes('Array~Array~string~~'); + * * @param {string} text The text to convert * @returns {string} The converted string */ @@ -14623,7 +14585,8 @@ var parseGenericTypes = function parseGenericTypes(text) { }; /** * Gives the styles for a classifier - * @param {"+" | "-" | "#" | "~" | "*" | "$"} classifier The classifier string + * + * @param {'+' | '-' | '#' | '~' | '*' | '$'} classifier The classifier string * @returns {string} Styling for the classifier */ @@ -14673,6 +14636,7 @@ __webpack_require__.r(__webpack_exports__); /** * 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 */ @@ -14685,6 +14649,7 @@ var getRows = function getRows(s) { }; /** * Removes script tags from a text + * * @param {string} txt The text to sanitize * @returns {string} The safer text */ @@ -14762,6 +14727,7 @@ var sanitizeTextOrArray = function sanitizeTextOrArray(a, config) { 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 */ @@ -14771,8 +14737,9 @@ var hasBreaks = function hasBreaks(text) { }; /** * Splits on
tags + * * @param {string} text Text to split - * @returns {Array} List of lines as strings + * @returns {string[]} List of lines as strings */ var splitBreaks = function splitBreaks(text) { @@ -14780,6 +14747,7 @@ var splitBreaks = function splitBreaks(text) { }; /** * Converts placeholders to linebreaks in HTML + * * @param {string} s HTML with placeholders * @returns {string} HTML with breaks instead of placeholders */ @@ -14789,6 +14757,7 @@ var placeholderToBreak = function placeholderToBreak(s) { }; /** * Opposite of `placeholderToBreak`, converts breaks to placeholders + * * @param {string} s HTML string * @returns {string} String with placeholders */ @@ -14799,6 +14768,7 @@ var breakToPlaceholder = function breakToPlaceholder(s) { }; /** * Gets the current URL + * * @param {boolean} useAbsolute Whether to return the absolute URL or not * @returns {string} The current URL */ @@ -14817,6 +14787,7 @@ var getUrl = function getUrl(useAbsolute) { }; /** * Converts a string/boolean into a boolean + * * @param {string | boolean} val String or boolean to convert * @returns {boolean} The result from the input */ @@ -14854,9 +14825,6 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../logger */ "./src/logger.js"); /* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mermaidAPI */ "./src/mermaidAPI.js"); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config */ "./src/config.js"); -/** - * - */ @@ -14905,6 +14873,7 @@ var addAttributes = function addAttributes(entityName, attribs) { }; /** * Add a relationship + * * @param entA The first entity in the relationship * @param rolA The role played by the first entity in relation to the second * @param entB The second entity in the relationship @@ -14984,6 +14953,9 @@ var ERMarkers = { }; /** * Put the markers into the svg DOM for later use with edge paths + * + * @param elem + * @param conf */ var insertMarkers = function insertMarkers(elem, conf) { @@ -15051,9 +15023,11 @@ __webpack_require__.r(__webpack_exports__); var conf = {}; /** - * Allows the top-level API module to inject config specific to this renderer, - * storing it in the local conf object. Note that generic config still needs to be - * retrieved using getConfig() imported from the config module + * Allows the top-level API module to inject config specific to this renderer, storing it in the + * local conf object. Note that generic config still needs to be retrieved using getConfig() + * imported from the config module + * + * @param cnf */ var setConf = function setConf(cnf) { @@ -15065,10 +15039,11 @@ var setConf = function setConf(cnf) { }; /** * Draw attributes for an entity - * @param groupNode the svg group node for the entity - * @param entityTextNode the svg node for the entity label text - * @param attributes an array of attributes defined for the entity (each attribute has a type and a name) - * @return the bounding box of the entity, after attributes have been added + * + * @param groupNode The svg group node for the entity + * @param entityTextNode The svg node for the entity label text + * @param attributes An array of attributes defined for the entity (each attribute has a type and a name) + * @returns The bounding box of the entity, after attributes have been added */ var drawAttributes = function drawAttributes(groupNode, entityTextNode, attributes) { @@ -15193,10 +15168,11 @@ var drawAttributes = function drawAttributes(groupNode, entityTextNode, attribut }; /** * Use D3 to construct the svg elements for the entities - * @param svgNode the svg node that contains the diagram + * + * @param svgNode The svg node that contains the diagram * @param entities The entities to be drawn * @param graph The graph that contains the vertex and edge definitions post-layout - * @return The first entity that was inserted + * @returns The first entity that was inserted */ @@ -15245,9 +15221,10 @@ var getEdgeName = function getEdgeName(rel) { }; /** * Add each relationship to the graph - * @param relationships the relationships to be added - * @param g the graph - * @return {Array} The array of relationships + * + * @param relationships The relationships to be added + * @param g The graph + * @returns {Array} The array of relationships */ @@ -15264,10 +15241,12 @@ var addRelationships = function addRelationships(relationships, g) { var relCnt = 0; /** * Draw a relationship using edge information from the graph - * @param svg the svg node - * @param rel the relationship to draw in the svg - * @param g the graph containing the edge information - * @param insert the insertion point in the svg DOM (because relationships have markers that need to sit 'behind' opaque entity boxes) + * + * @param svg The svg node + * @param rel The relationship to draw in the svg + * @param g The graph containing the edge information + * @param insert The insertion point in the svg DOM (because relationships have markers that need to + * sit 'behind' opaque entity boxes) */ var drawRelationshipFromLayout = function drawRelationshipFromLayout(svg, rel, g, insert) { @@ -15350,8 +15329,9 @@ var drawRelationshipFromLayout = function drawRelationshipFromLayout(svg, rel, g }; /** * Draw en E-R diagram in the tag with id: id based on the text definition of the diagram - * @param text the text of the diagram - * @param id the unique id of the DOM node that contains the diagram + * + * @param text The text of the diagram + * @param id The unique id of the DOM node that contains the diagram */ @@ -15469,6 +15449,11 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var dagre_d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dagre-d3 */ "dagre-d3"); /* harmony import */ var dagre_d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dagre_d3__WEBPACK_IMPORTED_MODULE_0__); +/** + * @param parent + * @param bbox + * @param node + */ function question(parent, bbox, node) { var w = bbox.width; @@ -15495,6 +15480,12 @@ function question(parent, bbox, node) { return shapeSvg; } +/** + * @param parent + * @param bbox + * @param node + */ + function hexagon(parent, bbox, node) { var f = 4; @@ -15528,6 +15519,12 @@ function hexagon(parent, bbox, node) { return shapeSvg; } +/** + * @param parent + * @param bbox + * @param node + */ + function rect_left_inv_arrow(parent, bbox, node) { var w = bbox.width; @@ -15556,6 +15553,12 @@ function rect_left_inv_arrow(parent, bbox, node) { return shapeSvg; } +/** + * @param parent + * @param bbox + * @param node + */ + function lean_right(parent, bbox, node) { var w = bbox.width; @@ -15581,6 +15584,12 @@ function lean_right(parent, bbox, node) { return shapeSvg; } +/** + * @param parent + * @param bbox + * @param node + */ + function lean_left(parent, bbox, node) { var w = bbox.width; @@ -15606,6 +15615,12 @@ function lean_left(parent, bbox, node) { return shapeSvg; } +/** + * @param parent + * @param bbox + * @param node + */ + function trapezoid(parent, bbox, node) { var w = bbox.width; @@ -15631,6 +15646,12 @@ function trapezoid(parent, bbox, node) { return shapeSvg; } +/** + * @param parent + * @param bbox + * @param node + */ + function inv_trapezoid(parent, bbox, node) { var w = bbox.width; @@ -15656,6 +15677,12 @@ function inv_trapezoid(parent, bbox, node) { return shapeSvg; } +/** + * @param parent + * @param bbox + * @param node + */ + function rect_right_inv_arrow(parent, bbox, node) { var w = bbox.width; @@ -15684,6 +15711,12 @@ function rect_right_inv_arrow(parent, bbox, node) { return shapeSvg; } +/** + * @param parent + * @param bbox + * @param node + */ + function stadium(parent, bbox, node) { var h = bbox.height; @@ -15696,6 +15729,12 @@ function stadium(parent, bbox, node) { return shapeSvg; } +/** + * @param parent + * @param bbox + * @param node + */ + function subroutine(parent, bbox, node) { var w = bbox.width; @@ -15739,6 +15778,12 @@ function subroutine(parent, bbox, node) { return shapeSvg; } +/** + * @param parent + * @param bbox + * @param node + */ + function cylinder(parent, bbox, node) { var w = bbox.width; @@ -15767,6 +15812,8 @@ function cylinder(parent, bbox, node) { return shapeSvg; } +/** @param render */ + function addToRender(render) { render.shapes().question = question; @@ -15787,6 +15834,8 @@ function addToRender(render) { render.shapes().rect_right_inv_arrow = rect_right_inv_arrow; } +/** @param addShape */ + function addToRenderV2(addShape) { addShape({ question: question @@ -15828,6 +15877,12 @@ function addToRenderV2(addShape) { rect_right_inv_arrow: rect_right_inv_arrow }); } +/** + * @param parent + * @param w + * @param h + * @param points + */ function insertPolygonShape(parent, w, h, points) { return parent.insert('polygon', ':first-child').attr('points', points.map(function (d) { @@ -15927,6 +15982,7 @@ var parseDirective = function parseDirective(statement, context, type) { }; /** * Function to lookup domId from id in the graph definition. + * * @param id * @public */ @@ -15944,11 +16000,13 @@ var lookUpDomId = function lookUpDomId(id) { }; /** * Function called by parser when a node definition has been found - * @param id + * + * @param _id * @param text * @param type * @param style * @param classes + * @param dir */ var addVertex = function addVertex(_id, text, type, style, classes, dir) { @@ -16016,8 +16074,9 @@ var addVertex = function addVertex(_id, text, type, style, classes, dir) { }; /** * Function called by parser when a link/edge definition has been found - * @param start - * @param end + * + * @param _start + * @param _end * @param type * @param linktext */ @@ -16063,8 +16122,9 @@ var addLink = function addLink(_start, _end, type, linktext) { }; /** * Updates a link's line interpolation algorithm - * @param pos - * @param interpolate + * + * @param positions + * @param interp */ var updateLinkInterpolate = function updateLinkInterpolate(positions, interp) { @@ -16078,7 +16138,8 @@ var updateLinkInterpolate = function updateLinkInterpolate(positions, interp) { }; /** * Updates a link with a style - * @param pos + * + * @param positions * @param style */ @@ -16120,6 +16181,7 @@ var addClass = function addClass(id, style) { }; /** * Called by parser when a graph definition is found, stores the direction of the chart. + * * @param dir */ @@ -16144,6 +16206,7 @@ var setDirection = function setDirection(dir) { }; /** * Called by parser when a special node is found, e.g. a clickable element. + * * @param ids Comma separated list of ids * @param className Class to add */ @@ -16223,8 +16286,10 @@ var setClickFun = function setClickFun(id, functionName, functionArgs) { }; /** * Called by parser when a link is found. Adds the URL to the vertex data. + * * @param ids Comma separated list of ids * @param linkStr URL to create a link for + * @param target */ @@ -16242,9 +16307,10 @@ var getTooltip = function getTooltip(id) { }; /** * Called by parser when a click definition is found. Registers an event handler. + * * @param ids Comma separated list of ids * @param functionName Function to be called on click - * @param tooltip Tooltip for the clickable element + * @param functionArgs */ var setClickEvent = function setClickEvent(ids, functionName, functionArgs) { @@ -16263,7 +16329,8 @@ var getDirection = function getDirection() { }; /** * Retrieval function for fetching the found nodes after parsing has completed. - * @returns {{}|*|vertices} + * + * @returns {{} | any | vertices} */ var getVertices = function getVertices() { @@ -16271,7 +16338,8 @@ var getVertices = function getVertices() { }; /** * Retrieval function for fetching the found links after parsing has completed. - * @returns {{}|*|edges} + * + * @returns {{} | any | edges} */ var getEdges = function getEdges() { @@ -16279,7 +16347,8 @@ var getEdges = function getEdges() { }; /** * Retrieval function for fetching the found class definitions after parsing has completed. - * @returns {{}|*|classes} + * + * @returns {{} | any | classes} */ var getClasses = function getClasses() { @@ -16317,6 +16386,8 @@ var setupToolTips = function setupToolTips(element) { funs.push(setupToolTips); /** * Clears the internal graph db so that a new graph can be parsed. + * + * @param ver */ var clear = function clear(ver) { @@ -16335,16 +16406,17 @@ var clear = function clear(ver) { var setGen = function setGen(ver) { version = ver || 'gen-1'; }; -/** - * - * @returns {string} - */ +/** @returns {string} */ var defaultStyle = function defaultStyle() { return 'fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;'; }; /** * Clears the internal graph db so that a new graph can be parsed. + * + * @param _id + * @param list + * @param _title */ var addSubGraph = function addSubGraph(_id, list, _title) { @@ -16356,6 +16428,8 @@ var addSubGraph = function addSubGraph(_id, list, _title) { if (_id === _title && _title.match(/\s/)) { id = undefined; } + /** @param a */ + function uniq(a) { var prims = { @@ -16419,9 +16493,7 @@ var addSubGraph = function addSubGraph(_id, list, _title) { dir: dir }; _logger__WEBPACK_IMPORTED_MODULE_5__.log.info('Adding', subGraph.id, subGraph.nodes, subGraph.dir); - /** - * Deletes an id from all subgraphs - */ + /** Deletes an id from all subgraphs */ // const del = _id => { // subGraphs.forEach(sg => { // const pos = sg.nodes.indexOf(_id); @@ -16681,6 +16753,9 @@ var exists = function exists(allSgs, _id) { }; /** * Deletes an id from all subgraphs + * + * @param sg + * @param allSubgraphs */ @@ -16785,8 +16860,10 @@ var setConf = function setConf(cnf) { }; /** * Function that adds the vertices found during parsing to the graph to be rendered. + * * @param vert Object containing the vertices. * @param g The graph that is to be drawn. + * @param svgId */ var addVertices = function addVertices(vert, g, svgId) { @@ -16797,6 +16874,7 @@ var addVertices = function addVertices(vert, g, svgId) { var vertex = vert[id]; /** * Variable for storing the classes for the vertex + * * @type {string} */ @@ -16950,8 +17028,9 @@ var addVertices = function addVertices(vert, g, svgId) { }; /** * Add edges to graph based on parsed graph defninition - * @param {Object} edges The edges to add to the graph - * @param {Object} g The graph object + * + * @param {object} edges The edges to add to the graph + * @param {object} g The graph object */ var addEdges = function addEdges(edges, g) { @@ -17105,7 +17184,9 @@ var addEdges = function addEdges(edges, g) { }; /** * Returns the all the styles from classDef statements in the graph definition. - * @returns {object} classDef styles + * + * @param text + * @returns {object} ClassDef styles */ var getClasses = function getClasses(text) { @@ -17125,6 +17206,7 @@ var getClasses = function getClasses(text) { }; /** * Draws a flowchart in the tag with id: id based on the graph definition in text. + * * @param text * @param id */ @@ -17332,8 +17414,10 @@ var setConf = function setConf(cnf) { }; /** * Function that adds the vertices found in the graph definition to the graph to be rendered. + * * @param vert Object containing the vertices. * @param g The graph that is to be drawn. + * @param svgId */ var addVertices = function addVertices(vert, g, svgId) { @@ -17344,6 +17428,7 @@ var addVertices = function addVertices(vert, g, svgId) { var vertex = vert[id]; /** * Variable for storing the classes for the vertex + * * @type {string} */ @@ -17475,8 +17560,9 @@ var addVertices = function addVertices(vert, g, svgId) { }; /** * Add edges to graph based on parsed graph defninition - * @param {Object} edges The edges to add to the graph - * @param {Object} g The graph object + * + * @param {object} edges The edges to add to the graph + * @param {object} g The graph object */ var addEdges = function addEdges(edges, g) { @@ -17581,7 +17667,9 @@ var addEdges = function addEdges(edges, g) { }; /** * Returns the all the styles from classDef statements in the graph definition. - * @returns {object} classDef styles + * + * @param text + * @returns {object} ClassDef styles */ var getClasses = function getClasses(text) { @@ -17600,6 +17688,7 @@ var getClasses = function getClasses(text) { }; /** * Draws a flowchart in the tag with id: id based on the graph definition in text. + * * @param text * @param id */ @@ -17807,7 +17896,23 @@ __webpack_require__.r(__webpack_exports__); /* 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 + * + * @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) { @@ -18362,8 +18467,9 @@ var compileTasks = function compileTasks() { }; /** * Called by parser when a link is found. Adds the URL to the vertex data. + * * @param ids Comma separated list of ids - * @param linkStr URL to create a link for + * @param _linkStr URL to create a link for */ @@ -18387,6 +18493,7 @@ var setLink = function setLink(ids, _linkStr) { }; /** * Called by parser when a special node is found, e.g. a clickable element. + * * @param ids Comma separated list of ids * @param className Class to add */ @@ -18445,7 +18552,9 @@ var setClickFun = function setClickFun(id, functionName, functionArgs) { } }; /** - * The callbackFunction is executed in a click event bound to the task with the specified id or the task's assigned text + * The callbackFunction is executed in a click event bound to the task with the specified id or the + * task's assigned text + * * @param id The task's id * @param callbackFunction A function to be executed when clicked on the task or the task's text */ @@ -18475,6 +18584,7 @@ var pushFun = function pushFun(id, callbackFunction) { }; /** * Called by parser when a click definition is found. Registers an event handler. + * * @param ids Comma separated list of ids * @param functionName Function to be called on click * @param functionArgs Function args the function should be called with @@ -18489,6 +18599,7 @@ var setClickEvent = function setClickEvent(ids, functionName, functionArgs) { }; /** * Binds all functions previously added to fun (specified through click) to the element + * * @param element */ @@ -18531,6 +18642,11 @@ var bindFunctions = function bindFunctions(element) { durationToDate: durationToDate, isInvalidDate: isInvalidDate }); +/** + * @param data + * @param task + * @param tags + */ function getTaskTags(data, task, tags) { var matchFound = true; @@ -18625,6 +18741,10 @@ var draw = function draw(text, id) { var catsUnfiltered = categories; // for vert labels categories = checkUnique(categories); + /** + * @param a + * @param b + */ function taskCompare(a, b) { var taskA = a.startTime; @@ -18646,6 +18766,11 @@ var draw = function draw(text, id) { makeGant(taskArray, w, h); (0,_utils__WEBPACK_IMPORTED_MODULE_5__.configureSvgSize)(svg, h, w, conf.useMaxWidth); svg.append('text').text(_parser_gantt__WEBPACK_IMPORTED_MODULE_2__.parser.yy.getTitle()).attr('x', w / 2).attr('y', conf.titleTopMargin).attr('class', 'titleText'); + /** + * @param tasks + * @param pageWidth + * @param pageHeight + */ function makeGant(tasks, pageWidth, pageHeight) { var barHeight = conf.barHeight; @@ -18659,6 +18784,16 @@ var draw = function draw(text, id) { vertLabels(gap, topPadding, leftPadding, barHeight, colorScale); drawToday(leftPadding, topPadding, pageWidth, pageHeight); } + /** + * @param theArray + * @param theGap + * @param theTopPad + * @param theSidePad + * @param theBarHeight + * @param theColorScale + * @param w + */ + function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w) { // Draw background rects covering the entire width of the graph, these form the section rows. @@ -18842,6 +18977,17 @@ var draw = function draw(text, id) { } }); } + /** + * @param theGap + * @param theTopPad + * @param theSidePad + * @param w + * @param h + * @param tasks + * @param excludes + * @param includes + */ + function drawExcludeDays(theGap, theTopPad, theSidePad, w, h, tasks, excludes, includes) { var minTime = tasks.reduce(function (min, _ref) { @@ -18890,6 +19036,13 @@ var draw = function draw(text, id) { return (timeScale(d.start) + theSidePad + 0.5 * (timeScale(d.end) - timeScale(d.start))).toString() + 'px ' + (i * theGap + 0.5 * h).toString() + 'px'; }).attr('class', 'exclude-range'); } + /** + * @param theSidePad + * @param theTopPad + * @param w + * @param h + */ + function makeGrid(theSidePad, theTopPad, w, h) { var bottomXAxis = (0,d3__WEBPACK_IMPORTED_MODULE_1__.axisBottom)(timeScale).tickSize(-h + theTopPad + conf.gridLineStartPadding).tickFormat((0,d3__WEBPACK_IMPORTED_MODULE_1__.timeFormat)(_parser_gantt__WEBPACK_IMPORTED_MODULE_2__.parser.yy.getAxisFormat() || conf.axisFormat || '%Y-%m-%d')); @@ -18900,6 +19053,11 @@ var draw = function draw(text, id) { svg.append('g').attr('class', 'grid').attr('transform', 'translate(' + theSidePad + ', ' + theTopPad + ')').call(topXAxis).selectAll('text').style('text-anchor', 'middle').attr('fill', '#000').attr('stroke', 'none').attr('font-size', 10); // .attr('dy', '1em'); } } + /** + * @param theGap + * @param theTopPad + */ + function vertLabels(theGap, theTopPad) { var numOccurances = []; @@ -18945,6 +19103,13 @@ var draw = function draw(text, id) { return 'sectionTitle'; }); } + /** + * @param theSidePad + * @param theTopPad + * @param w + * @param h + */ + function drawToday(theSidePad, theTopPad, w, h) { var todayMarker = _ganttDb__WEBPACK_IMPORTED_MODULE_3__["default"].getTodayMarker(); @@ -18961,7 +19126,13 @@ var draw = function draw(text, id) { if (todayMarker !== '') { todayLine.attr('style', todayMarker.replace(/,/g, ';')); } - } // from this stackexchange question: http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript + } + /** + * From this stackexchange question: + * http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript + * + * @param arr + */ function checkUnique(arr) { @@ -18978,7 +19149,13 @@ var draw = function draw(text, id) { } return result; - } // from this stackexchange question: http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array + } + /** + * From this stackexchange question: + * http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array + * + * @param arr + */ function getCounts(arr) { @@ -18991,7 +19168,13 @@ var draw = function draw(text, id) { } return obj; - } // get specific from everything + } + /** + * Get specific from everything + * + * @param word + * @param arr + */ function getCount(word, arr) { @@ -19070,6 +19253,11 @@ function getId() { length: 7 }); } +/** + * @param currentCommit + * @param otherCommit + */ + function isfastforwardable(currentCommit, otherCommit) { _logger__WEBPACK_IMPORTED_MODULE_1__.log.debug('Entering isfastforwardable:', currentCommit.id, otherCommit.id); @@ -19089,6 +19277,11 @@ function isfastforwardable(currentCommit, otherCommit) { _logger__WEBPACK_IMPORTED_MODULE_1__.log.debug(currentCommit.id, otherCommit.id); return currentCommit.id === otherCommit.id; } +/** + * @param currentCommit + * @param otherCommit + */ + function isReachableFrom(currentCommit, otherCommit) { var currentSeq = currentCommit.seq; @@ -19096,6 +19289,11 @@ function isReachableFrom(currentCommit, otherCommit) { if (currentSeq > otherSeq) return isfastforwardable(otherCommit, currentCommit); return false; } +/** + * @param list + * @param fn + */ + function uniqBy(list, fn) { var recordMap = Object.create(null); @@ -19200,6 +19398,11 @@ var reset = function reset(commitRef) { head = commit; branches[curBranch] = commit.id; }; +/** + * @param arr + * @param key + * @param newval + */ function upsert(arr, key, newval) { var index = arr.indexOf(key); @@ -19210,6 +19413,8 @@ function upsert(arr, key, newval) { arr.splice(index, 1, newval); } } +/** @param commitArr */ + function prettyPrintCommitHistory(commitArr) { var commit = commitArr.reduce(function (out, commit) { @@ -19373,11 +19578,19 @@ var apiConfig = {}; var setConf = function setConf(c) { apiConfig = c; }; +/** @param svg */ function svgCreateDefs(svg) { svg.append('defs').append('g').attr('id', 'def-commit').append('circle').attr('r', config.nodeRadius).attr('cx', 0).attr('cy', 0); svg.select('#def-commit').append('foreignObject').attr('width', config.nodeLabel.width).attr('height', config.nodeLabel.height).attr('x', config.nodeLabel.x).attr('y', config.nodeLabel.y).attr('class', 'node-label').attr('requiredFeatures', 'http://www.w3.org/TR/SVG11/feature#Extensibility').append('p').html(''); } +/** + * @param svg + * @param points + * @param colorIdx + * @param interpolate + */ + function svgDrawLine(svg, points, colorIdx, interpolate) { var curve = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.interpolateToCurve)(interpolate, d3__WEBPACK_IMPORTED_MODULE_0__.curveBasis); @@ -19388,7 +19601,13 @@ function svgDrawLine(svg, points, colorIdx, interpolate) { return Math.round(d.y); }).curve(curve); svg.append('svg:path').attr('d', lineGen(points)).style('stroke', color).style('stroke-width', config.lineStrokeWidth).style('fill', 'none'); -} // Pass in the element and its pre-transform coords +} +/** + * Pass in the element and its pre-transform coords + * + * @param element + * @param coords + */ function getElementCoords(element, coords) { @@ -19403,6 +19622,14 @@ function getElementCoords(element, coords) { height: coords.height }; } +/** + * @param svg + * @param fromId + * @param toId + * @param direction + * @param color + */ + function svgDrawLineForCommits(svg, fromId, toId, direction, color) { _logger__WEBPACK_IMPORTED_MODULE_2__.log.debug('svgDrawLineForCommits: ', fromId, toId); @@ -19496,10 +19723,22 @@ function svgDrawLineForCommits(svg, fromId, toId, direction, color) { break; } } +/** + * @param svg + * @param selector + */ + function cloneNode(svg, selector) { return svg.select(selector).node().cloneNode(true); } +/** + * @param svg + * @param commitid + * @param branches + * @param direction + */ + function renderCommitHistory(svg, commitid, branches, direction) { var commit; @@ -19559,6 +19798,13 @@ function renderCommitHistory(svg, commitid, branches, direction) { branchNum--; } } +/** + * @param svg + * @param commit + * @param direction + * @param branchColor + */ + function renderLines(svg, commit, direction, branchColor) { branchColor = branchColor || 0; @@ -19660,9 +19906,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../logger */ "./src/logger.js"); -/** - * Created by knut on 15-01-14. - */ +/** Created by knut on 15-01-14. */ var message = ''; var info = false; @@ -19711,9 +19955,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _parser_info__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parser/info */ "./src/diagrams/info/parser/info.jison"); /* harmony import */ var _parser_info__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_parser_info__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../logger */ "./src/logger.js"); -/** - * Created by knut on 14-12-11. - */ +/** Created by knut on 14-12-11. */ @@ -19727,23 +19969,25 @@ var setConf = function setConf(cnf) { }; /** * Draws a an info picture in the tag with id: id based on the graph definition in text. - * @param text - * @param id + * + * @param {any} text + * @param {any} id + * @param {any} version */ -var draw = function draw(txt, id, ver) { +var draw = function draw(text, id, version) { try { var parser = (_parser_info__WEBPACK_IMPORTED_MODULE_1___default().parser); parser.yy = _infoDb__WEBPACK_IMPORTED_MODULE_2__["default"]; - _logger__WEBPACK_IMPORTED_MODULE_3__.log.debug('Renering info diagram\n' + txt); // Parse the graph definition + _logger__WEBPACK_IMPORTED_MODULE_3__.log.debug('Renering info diagram\n' + text); // Parse the graph definition - parser.parse(txt); + parser.parse(text); _logger__WEBPACK_IMPORTED_MODULE_3__.log.debug('Parsed info diagram'); // Fetch the default direction, use TD if none was found var svg = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)('#' + id); var g = svg.append('g'); g.append('text') // text label for the x axis - .attr('x', 100).attr('y', 40).attr('class', 'version').attr('font-size', '32px').style('text-anchor', 'middle').text('v ' + ver); + .attr('x', 100).attr('y', 40).attr('class', 'version').attr('font-size', '32px').style('text-anchor', 'middle').text('v ' + version); svg.attr('height', 100); svg.attr('width', 400); // svg.attr('viewBox', '0 0 300 150'); } catch (e) { @@ -19792,9 +20036,6 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../logger */ "./src/logger.js"); /* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mermaidAPI */ "./src/mermaidAPI.js"); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config */ "./src/config.js"); -/** - * - */ @@ -19888,9 +20129,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../logger */ "./src/logger.js"); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils */ "./src/utils.js"); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../config */ "./src/config.js"); -/** - * Created by AshishJ on 11-09-2019. - */ +/** Created by AshishJ on 11-09-2019. */ @@ -19900,6 +20139,7 @@ __webpack_require__.r(__webpack_exports__); var conf = _config__WEBPACK_IMPORTED_MODULE_1__.getConfig(); /** * Draws a Pie Chart with the data given in text. + * * @param text * @param id */ @@ -20814,6 +21054,10 @@ var addALink = function addALink(actorId, text) { _logger__WEBPACK_IMPORTED_MODULE_1__.log.error('error while parsing actor link text', e); } }; +/** + * @param {any} actor + * @param {any} links + */ function insertLinks(actor, links) { if (actor.links == null) { @@ -20838,6 +21082,10 @@ var addProperties = function addProperties(actorId, text) { _logger__WEBPACK_IMPORTED_MODULE_1__.log.error('error while parsing actor properties text', e); } }; +/** + * @param {any} actor + * @param {any} properties + */ function insertProperties(actor, properties) { if (actor.properties == null) { @@ -21138,6 +21386,7 @@ var bounds = { var _self = this; var cnt = 0; + /** @param {any} type */ function updateFn(type) { return function updateItemBounds(item) { @@ -21261,8 +21510,11 @@ var bounds = { }; /** * Draws an note in the diagram with the attached line - * @param elem - The diagram to draw to. - * @param noteModel:{x: number, y: number, message: string, width: number} - startx: x axis start position, verticalPos: y axis position, messsage: the message to be shown, width: Set this with a custom width to override the default configured width. + * + * @param {any} elem - The diagram to draw to. + * @param {{ x: number; y: number; message: string; width: number }} noteModel - Startx: x axis + * start position, verticalPos: y axis position, messsage: the message to be shown, width: Set + * this with a custom width to override the default configured width. */ var drawNote = function drawNote(elem, noteModel) { @@ -21329,8 +21581,9 @@ var actorFont = function actorFont(cnf) { }; /** * Draws a message - * @param g - the parent of the message element - * @param msgModel - the model containing fields describing a message + * + * @param {any} g - The parent of the message element + * @param {any} msgModel - The model containing fields describing a message */ @@ -21520,6 +21773,14 @@ var activationBounds = function activationBounds(actor, actors) { }, actorObj.x + actorObj.width / 2); return [left, right]; }; +/** + * @param {any} loopWidths + * @param {any} msg + * @param {any} preMargin + * @param {any} postMargin + * @param {any} addLoopFn + */ + function adjustLoopHeightForWrap(loopWidths, msg, preMargin, postMargin, addLoopFn) { bounds.bumpVerticalPos(preMargin); @@ -21543,8 +21804,9 @@ function adjustLoopHeightForWrap(loopWidths, msg, preMargin, postMargin, addLoop } /** * Draws a sequenceDiagram in the tag with id: id based on the graph definition in text. - * @param text - * @param id + * + * @param {any} text + * @param {any} id */ @@ -21573,6 +21835,10 @@ var draw = function draw(text, id) { _svgDraw__WEBPACK_IMPORTED_MODULE_3__["default"].insertArrowCrossHead(diagram); _svgDraw__WEBPACK_IMPORTED_MODULE_3__["default"].insertArrowFilledHead(diagram); _svgDraw__WEBPACK_IMPORTED_MODULE_3__["default"].insertSequenceNumber(diagram); + /** + * @param {any} msg + * @param {any} verticalPos + */ function activeEnd(msg, verticalPos) { var activationData = bounds.endActivation(msg); @@ -21752,14 +22018,14 @@ var draw = function draw(text, id) { _logger__WEBPACK_IMPORTED_MODULE_6__.log.debug("models:", bounds.models); }; /** - * Retrieves the max message width of each actor, supports signals (messages, loops) - * and notes. + * Retrieves the max message width of each actor, supports signals (messages, loops) and notes. * - * It will enumerate each given message, and will determine its text width, in relation - * to the actor it originates from, and destined to. + * It will enumerate each given message, and will determine its text width, in relation to the actor + * it originates from, and destined to. * - * @param actors - The actors map - * @param messages - A list of message objects to iterate + * @param {any} actors - The actors map + * @param {Array} messages - A list of message objects to iterate + * @returns {any} */ var getMaxMessageWidthPerActor = function getMaxMessageWidthPerActor(actors, messages) { @@ -21842,14 +22108,13 @@ var getRequiredPopupWidth = function getRequiredPopupWidth(actor) { return requiredPopupWidth; }; /** - * This will calculate the optimal margin for each given actor, for a given - * actor->messageWidth map. + * This will calculate the optimal margin for each given actor, for a given actor->messageWidth map. * - * An actor's margin is determined by the width of the actor, the width of the - * largest message that originates from it, and the configured conf.actorMargin. + * An actor's margin is determined by the width of the actor, the width of the largest message that + * originates from it, and the configured conf.actorMargin. * - * @param actors - The actors map to calculate margins for - * @param actorToMessageWidth - A map of actor key -> max message width it holds + * @param {any} actors - The actors map to calculate margins for + * @param {any} actorToMessageWidth - A map of actor key -> max message width it holds */ @@ -22404,6 +22669,14 @@ var drawText = function drawText(elem, textData) { return textElems; }; var drawLabel = function drawLabel(elem, txtObject) { + /** + * @param {any} x + * @param {any} y + * @param {any} width + * @param {any} height + * @param {any} cut + * @returns {any} + */ function genPoints(x, y, width, height, cut) { return x + ',' + y + ' ' + (x + width) + ',' + y + ' ' + (x + width) + ',' + (y + height - cut) + ' ' + (x + width - cut * 1.2) + ',' + (y + height) + ' ' + x + ',' + (y + height); } @@ -22422,9 +22695,10 @@ var fixLifeLineHeights = function fixLifeLineHeights(diagram, bounds) { }; /** * Draws an actor in the diagram with the attached line - * @param elem - The diagram we'll draw to. - * @param actor - The actor to draw. - * @param conf - drawText implementation discriminator object + * + * @param {any} elem - The diagram we'll draw to. + * @param {any} actor - The actor to draw. + * @param {any} conf - DrawText implementation discriminator object */ var drawActorTypeParticipant = function drawActorTypeParticipant(elem, actor, conf) { @@ -22542,11 +22816,12 @@ var anchorElement = function anchorElement(elem) { }; /** * Draws an activation in the diagram - * @param elem - element to append activation rect. - * @param bounds - activation box bounds. - * @param verticalPos - precise y cooridnate of bottom activation box edge. - * @param conf - sequence diagram config object. - * @param actorActivations - number of activations on the actor. + * + * @param {any} elem - Element to append activation rect. + * @param {any} bounds - Activation box bounds. + * @param {any} verticalPos - Precise y cooridnate of bottom activation box edge. + * @param {any} conf - Sequence diagram config object. + * @param {any} actorActivations - Number of activations on the actor. */ var drawActivation = function drawActivation(elem, bounds, verticalPos, conf, actorActivations) { @@ -22562,10 +22837,12 @@ var drawActivation = function drawActivation(elem, bounds, verticalPos, conf, ac }; /** * Draws a loop in the diagram - * @param elem - elemenet to append the loop to. - * @param loopModel - loopModel of the given loop. - * @param labelText - Text within the loop. - * @param conf - diagrom configuration + * + * @param {any} elem - Elemenet to append the loop to. + * @param {any} loopModel - LoopModel of the given loop. + * @param {any} labelText - Text within the loop. + * @param {any} conf - Diagrom configuration + * @returns {any} */ var drawLoop = function drawLoop(elem, loopModel, labelText, conf) { @@ -22652,8 +22929,9 @@ var drawLoop = function drawLoop(elem, loopModel, labelText, conf) { }; /** * Draws a background rectangle - * @param elem diagram (reference for bounds) - * @param bounds shape of the rectangle + * + * @param {any} elem Diagram (reference for bounds) + * @param {any} bounds Shape of the rectangle */ var drawBackgroundRect = function drawBackgroundRect(elem, bounds) { @@ -22678,6 +22956,8 @@ var insertClockIcon = function insertClockIcon(elem) { }; /** * Setup arrow head and define the marker. The result is appended to the svg. + * + * @param elem */ var insertArrowHead = function insertArrowHead(elem) { @@ -22685,6 +22965,8 @@ var insertArrowHead = function insertArrowHead(elem) { }; /** * Setup arrow head and define the marker. The result is appended to the svg. + * + * @param {any} elem */ var insertArrowFilledHead = function insertArrowFilledHead(elem) { @@ -22692,6 +22974,8 @@ var insertArrowFilledHead = function insertArrowFilledHead(elem) { }; /** * Setup node number. The result is appended to the svg. + * + * @param {any} elem */ var insertSequenceNumber = function insertSequenceNumber(elem) { @@ -22699,6 +22983,8 @@ var insertSequenceNumber = function insertSequenceNumber(elem) { }; /** * Setup arrow head and define the marker. The result is appended to the svg. + * + * @param {any} elem */ var insertArrowCrossHead = function insertArrowCrossHead(elem) { @@ -22740,11 +23026,31 @@ var getNoteRect = function getNoteRect() { }; var _drawTextCandidateFunc = function () { + /** + * @param {any} content + * @param {any} g + * @param {any} x + * @param {any} y + * @param {any} width + * @param {any} height + * @param {any} textAttrs + */ function byText(content, g, x, y, width, height, textAttrs) { var text = g.append('text').attr('x', x + width / 2).attr('y', y + height / 2 + 5).style('text-anchor', 'middle').text(content); _setTextAttrs(text, textAttrs); } + /** + * @param {any} content + * @param {any} g + * @param {any} x + * @param {any} y + * @param {any} width + * @param {any} height + * @param {any} textAttrs + * @param {any} conf + */ + function byTspan(content, g, x, y, width, height, textAttrs, conf) { var actorFontSize = conf.actorFontSize, @@ -22761,6 +23067,17 @@ var _drawTextCandidateFunc = function () { _setTextAttrs(text, textAttrs); } } + /** + * @param {any} content + * @param {any} g + * @param {any} x + * @param {any} y + * @param {any} width + * @param {any} height + * @param {any} textAttrs + * @param {any} conf + */ + function byFo(content, g, x, y, width, height, textAttrs, conf) { var s = g.append('switch'); @@ -22771,6 +23088,11 @@ var _drawTextCandidateFunc = function () { _setTextAttrs(text, textAttrs); } + /** + * @param {any} toText + * @param {any} fromTextAttrsDict + */ + function _setTextAttrs(toText, fromTextAttrsDict) { for (var key in fromTextAttrsDict) { @@ -22787,11 +23109,31 @@ var _drawTextCandidateFunc = function () { }(); var _drawMenuItemTextCandidateFunc = function () { + /** + * @param {any} content + * @param {any} g + * @param {any} x + * @param {any} y + * @param {any} width + * @param {any} height + * @param {any} textAttrs + */ function byText(content, g, x, y, width, height, textAttrs) { var text = g.append('text').attr('x', x).attr('y', y).style('text-anchor', 'start').text(content); _setTextAttrs(text, textAttrs); } + /** + * @param {any} content + * @param {any} g + * @param {any} x + * @param {any} y + * @param {any} width + * @param {any} height + * @param {any} textAttrs + * @param {any} conf + */ + function byTspan(content, g, x, y, width, height, textAttrs, conf) { var actorFontSize = conf.actorFontSize, @@ -22808,6 +23150,17 @@ var _drawMenuItemTextCandidateFunc = function () { _setTextAttrs(text, textAttrs); } } + /** + * @param {any} content + * @param {any} g + * @param {any} x + * @param {any} y + * @param {any} width + * @param {any} height + * @param {any} textAttrs + * @param {any} conf + */ + function byFo(content, g, x, y, width, height, textAttrs, conf) { var s = g.append('switch'); @@ -22818,6 +23171,11 @@ var _drawMenuItemTextCandidateFunc = function () { _setTextAttrs(text, textAttrs); } + /** + * @param {any} toText + * @param {any} fromTextAttrsDict + */ + function _setTextAttrs(toText, fromTextAttrsDict) { for (var key in fromTextAttrsDict) { @@ -22937,10 +23295,11 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len - // let conf; /** * Draws a start state as a black circle + * + * @param {any} g */ var drawStartState = function drawStartState(g) { @@ -22950,6 +23309,8 @@ var drawStartState = function drawStartState(g) { }; /** * Draws a start state as a black circle + * + * @param {any} g */ var drawDivider = function drawDivider(g) { @@ -22957,6 +23318,9 @@ var drawDivider = function drawDivider(g) { }; /** * Draws a an end state as a black circle + * + * @param {any} g + * @param {any} stateDef */ var drawSimpleState = function drawSimpleState(g, stateDef) { @@ -22967,8 +23331,10 @@ var drawSimpleState = function drawSimpleState(g, stateDef) { }; /** * Draws a state with descriptions - * @param {*} g - * @param {*} stateDef + * + * @param {any} g + * @param {any} stateDef + * @returns */ var drawDescrState = function drawDescrState(g, stateDef) { @@ -23004,16 +23370,15 @@ var drawDescrState = function drawDescrState(g, stateDef) { g.insert('rect', ':first-child').attr('x', (0,_config__WEBPACK_IMPORTED_MODULE_1__.getConfig)().state.padding).attr('y', (0,_config__WEBPACK_IMPORTED_MODULE_1__.getConfig)().state.padding).attr('width', width + 2 * (0,_config__WEBPACK_IMPORTED_MODULE_1__.getConfig)().state.padding).attr('height', descrBox.height + titleHeight + 2 * (0,_config__WEBPACK_IMPORTED_MODULE_1__.getConfig)().state.padding).attr('rx', (0,_config__WEBPACK_IMPORTED_MODULE_1__.getConfig)().state.radius); return g; }; -/** - * Adds the creates a box around the existing content and adds a - * panel for the id on top of the content. - */ +/** Adds the creates a box around the existing content and adds a panel for the id on top of the content. */ /** * Function that creates an title row and a frame around a substate for a composit state diagram. * The function returns a new d3 svg object with updated width and height properties; - * @param {*} g The d3 svg object for the substate to framed - * @param {*} stateDef The info about the + * + * @param {any} g The d3 svg object for the substate to framed + * @param {any} stateDef The info about the + * @param {any} altBkg */ var addTitleAndBox = function addTitleAndBox(g, stateDef, altBkg) { @@ -23171,6 +23536,7 @@ var _drawLongText = function _drawLongText(_text, x, y, g) { }; /** * Draws a note to the diagram + * * @param text - The text of the given note. * @param g - The element the note is attached to. */ @@ -23190,10 +23556,11 @@ var drawNote = function drawNote(text, g) { return note; }; /** - * Starting point for drawing a state. The function finds out the specifics - * about the state and renders with approprtiate function. - * @param {*} elem - * @param {*} stateDef + * Starting point for drawing a state. The function finds out the specifics about the state and + * renders with approprtiate function. + * + * @param {any} elem + * @param {any} stateDef */ var drawState = function drawState(elem, stateDef) { @@ -23485,10 +23852,12 @@ var endCnt = 0; // eslint-disable-line /** * Function called by parser when a node definition has been found. - * @param id - * @param text - * @param type - * @param style + * + * @param {any} id + * @param {any} type + * @param {any} doc + * @param {any} descr + * @param {any} note */ var addState = function addState(id, type, doc, descr, note) { @@ -23707,7 +24076,9 @@ var setConf = function setConf(cnf) { var nodeDb = {}; /** * Returns the all the styles from classDef statements in the graph definition. - * @returns {object} classDef styles + * + * @param {any} text + * @returns {object} ClassDef styles */ var getClasses = function getClasses(text) { @@ -23924,8 +24295,9 @@ var getDir = function getDir(nodes, defaultDir) { }; /** * Draws a flowchart in the tag with id: id based on the graph definition in text. - * @param text - * @param id + * + * @param {any} text + * @param {any} id */ @@ -24047,10 +24419,11 @@ _parser_stateDiagram__WEBPACK_IMPORTED_MODULE_3__.parser.yy = _stateDb__WEBPACK_ var conf; var transformationLog = {}; -var setConf = function setConf() {}; // Todo optimize - +var setConf = function setConf() {}; /** * Setup arrow head and define the marker. The result is appended to the svg. + * + * @param {any} elem */ var insertMarkers = function insertMarkers(elem) { @@ -24058,8 +24431,9 @@ var insertMarkers = function insertMarkers(elem) { }; /** * Draws a flowchart in the tag with id: id based on the graph definition in text. - * @param text - * @param id + * + * @param {any} text + * @param {any} id */ @@ -24100,7 +24474,7 @@ var getLabelWidth = function getLabelWidth(text) { }; var renderDoc = function renderDoc(doc, diagram, parentId, altBkg) { - // // Layout graph, Create a new directed graph + // Layout graph, Create a new directed graph var graph = new (graphlib__WEBPACK_IMPORTED_MODULE_2___default().Graph)({ compound: true, multigraph: true @@ -24501,6 +24875,7 @@ var setConf = function setConf(cnf) { }); }; var actors = {}; +/** @param {any} diagram */ function drawActorLegend(diagram) { var conf = (0,_config__WEBPACK_IMPORTED_MODULE_3__.getConfig)().journey; // Draw the actors @@ -24608,6 +24983,7 @@ var bounds = { var _self = this; var cnt = 0; + /** @param {any} type */ function updateFn(type) { return function updateItemBounds(item) { @@ -24792,18 +25168,23 @@ var drawFace = function drawFace(element, faceData) { face.append('circle').attr('cx', faceData.cx - radius / 3).attr('cy', faceData.cy - radius / 3).attr('r', 1.5).attr('stroke-width', 2).attr('fill', '#666').attr('stroke', '#666'); //right eye face.append('circle').attr('cx', faceData.cx + radius / 3).attr('cy', faceData.cy - radius / 3).attr('r', 1.5).attr('stroke-width', 2).attr('fill', '#666').attr('stroke', '#666'); + /** @param {any} face */ function smile(face) { var arc = (0,d3__WEBPACK_IMPORTED_MODULE_0__.arc)().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2); //mouth face.append('path').attr('class', 'mouth').attr('d', arc).attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 2) + ')'); } + /** @param {any} face */ + function sad(face) { var arc = (0,d3__WEBPACK_IMPORTED_MODULE_0__.arc)().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2); //mouth face.append('path').attr('class', 'mouth').attr('d', arc).attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 7) + ')'); } + /** @param {any} face */ + function ambivalent(face) { face.append('line').attr('class', 'mouth').attr('stroke', 2).attr('x1', faceData.cx - 5).attr('y1', faceData.cy + 7).attr('x2', faceData.cx + 5).attr('y2', faceData.cy + 7).attr('class', 'mouth').attr('stroke-width', '1px').attr('stroke', '#666'); @@ -24857,6 +25238,13 @@ var drawText = function drawText(elem, textData) { return textElem; }; var drawLabel = function drawLabel(elem, txtObject) { + /** + * @param {any} x + * @param {any} y + * @param {any} width + * @param {any} height + * @param {any} cut + */ function genPoints(x, y, width, height, cut) { return x + ',' + y + ' ' + (x + width) + ',' + y + ' ' + (x + width) + ',' + (y + height - cut) + ' ' + (x + width - cut * 1.2) + ',' + (y + height) + ' ' + x + ',' + (y + height); } @@ -24888,9 +25276,10 @@ var drawSection = function drawSection(elem, section, conf) { var taskCount = -1; /** * Draws an actor in the diagram with the attaced line - * @param elem The HTML element - * @param task The task to render - * @param conf The global configuration + * + * @param {any} elem The HTML element + * @param {any} task The task to render + * @param {any} conf The global configuration */ var drawTask = function drawTask(elem, task, conf) { @@ -24936,8 +25325,9 @@ var drawTask = function drawTask(elem, task, conf) { }; /** * Draws a background rectangle - * @param elem The html element - * @param bounds The bounds of the drawing + * + * @param {any} elem The html element + * @param {any} bounds The bounds of the drawing */ var drawBackgroundRect = function drawBackgroundRect(elem, bounds) { @@ -24977,11 +25367,33 @@ var getNoteRect = function getNoteRect() { }; var _drawTextCandidateFunc = function () { + /** + * @param {any} content + * @param {any} g + * @param {any} x + * @param {any} y + * @param {any} width + * @param {any} height + * @param {any} textAttrs + * @param {any} colour + */ function byText(content, g, x, y, width, height, textAttrs, colour) { var text = g.append('text').attr('x', x + width / 2).attr('y', y + height / 2 + 5).style('font-color', colour).style('text-anchor', 'middle').text(content); _setTextAttrs(text, textAttrs); } + /** + * @param {any} content + * @param {any} g + * @param {any} x + * @param {any} y + * @param {any} width + * @param {any} height + * @param {any} textAttrs + * @param {any} conf + * @param {any} colour + */ + function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) { var taskFontSize = conf.taskFontSize, @@ -24997,17 +25409,32 @@ var _drawTextCandidateFunc = function () { _setTextAttrs(text, textAttrs); } } + /** + * @param {any} content + * @param {any} g + * @param {any} x + * @param {any} y + * @param {any} width + * @param {any} height + * @param {any} textAttrs + * @param {any} conf + */ + function byFo(content, g, x, y, width, height, textAttrs, conf) { var body = g.append('switch'); var f = body.append('foreignObject').attr('x', x).attr('y', y).attr('width', width).attr('height', height).attr('position', 'fixed'); var text = f.append('xhtml:div').style('display', 'table').style('height', '100%').style('width', '100%'); - text.append('div').attr('class', 'label').style('display', 'table-cell').style('text-align', 'center').style('vertical-align', 'middle') // .style('color', colour) - .text(content); + text.append('div').attr('class', 'label').style('display', 'table-cell').style('text-align', 'center').style('vertical-align', 'middle').text(content); byTspan(content, body, x, y, width, height, textAttrs, conf); _setTextAttrs(text, textAttrs); } + /** + * @param {any} toText + * @param {any} fromTextAttrsDict + */ + function _setTextAttrs(toText, fromTextAttrsDict) { for (var key in fromTextAttrsDict) { @@ -25059,15 +25486,14 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "d3"); /* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ "./src/logger.js"); -/** - * Created by knut on 14-12-11. - */ +/** Created by knut on 14-12-11. */ var conf = {}; /** * Merges the value of `conf` with the passed `cnf` - * @param {Object} cnf Config to merge + * + * @param {object} cnf Config to merge */ var setConf = function setConf(cnf) { @@ -25078,8 +25504,9 @@ var setConf = function setConf(cnf) { }; /** * Draws a an info picture in the tag with id: id based on the graph definition in text. - * @param id The text for the error - * @param ver The version + * + * @param {string} id The text for the error + * @param {string} ver The version */ var draw = function draw(id, ver) { @@ -25153,13 +25580,9 @@ __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 - */ +/** @typedef {'debug' | 'info' | 'warn' | 'error' | 'fatal'} LogLevel A log level */ -/** - * @type {Object } - */ +/** @type {object } */ var LEVELS = { debug: 1, @@ -25177,7 +25600,8 @@ var log = { }; /** * Sets a log level - * @param {LogLevel} [level="fatal"] The level to set the logging to + * + * @param {LogLevel} [level="fatal"] The level to set the logging to. Default is `"fatal"` */ var setLogLevel = function setLogLevel() { @@ -25226,6 +25650,7 @@ var setLogLevel = function setLogLevel() { }; /** * 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 */ @@ -25252,23 +25677,25 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mermaidAPI */ "./src/mermaidAPI.js"); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ "./src/utils.js"); /** - * Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid functionality and to render - * the diagrams to svg code. + * Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid + * functionality and to render the diagrams to svg code. */ /** * ## init + * * Function that goes through the document to find the chart definitions in there and render them. * - * The function tags the processed attributes with the attribute data-processed and ignores found elements with the - * attribute already set. This way the init function can be triggered several times. + * The function tags the processed attributes with the attribute data-processed and ignores found + * elements with the attribute already set. This way the init function can be triggered several times. * * Optionally, `init` can accept in the second argument one of the following: - * - a DOM Node - * - an array of DOM nodes (as would come from a jQuery selector) - * - a W3C selector, a la `.mermaid` + * + * - A DOM Node + * - An array of DOM nodes (as would come from a jQuery selector) + * - A W3C selector, a la `.mermaid` * * ```mermaid * graph LR; @@ -25276,8 +25703,8 @@ __webpack_require__.r(__webpack_exports__); * b-->|Yes|c(Leave element) * b-->|No |d(Transform) * ``` + * * Renders the mermaid diagrams - * @param nodes a css selector or an array of nodes */ var init = function init() { @@ -25398,9 +25825,8 @@ var initialize = function initialize(config) { _mermaidAPI__WEBPACK_IMPORTED_MODULE_0__["default"].initialize(config); // mermaidAPI.reset(); }; /** - * ##contentLoaded - * Callback function that is called when page is loaded. This functions fetches configuration for mermaid rendering and - * calls init for rendering the mermaid diagrams on the page. + * ##contentLoaded Callback function that is called when page is loaded. This functions fetches + * configuration for mermaid rendering and calls init for rendering the mermaid diagrams on the page. */ @@ -25524,15 +25950,17 @@ __webpack_require__.r(__webpack_exports__); function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } /** - *Edit this Page[](https://github.com/mermaid-js/mermaid/blob/develop/src/mermaidAPI.js) - * - *This is the API to be used when optionally handling the integration with the web page, instead of using the default integration provided by mermaid.js. + * Edit this + * Page[[N|Solid](img/GitHub-Mark-32px.png)](https://github.com/mermaid-js/mermaid/blob/develop/src/mermaidAPI.js) * + * This is the API to be used when optionally handling the integration with the web page, instead of + * using the default integration provided by mermaid.js. * * The core of this api is the [**render**](Setup.md?id=render) function which, given a graph * definition as text, renders the graph/diagram and returns an svg element for the graph. * - * It is is then up to the user of the API to make use of the svg, either insert it somewhere in the page or do something completely different. + * It is is then up to the user of the API to make use of the svg, either insert it somewhere in the + * page or do something completely different. * * In addition to the render function, a number of behavioral configuration options are available. * @@ -25579,20 +26007,15 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi - // import * as configApi from './config'; -// // , { -// // setConfig, -// // configApi.getConfig, -// // configApi.updateSiteConfig, -// // configApi.setSiteConfig, -// // configApi.getSiteConfig, -// // configApi.defaultConfig -// // } +/** + * @param text + * @returns {any} + */ function parse(text) { var cnf = _config__WEBPACK_IMPORTED_MODULE_2__.getConfig(); @@ -25741,22 +26164,24 @@ var decodeEntities = function decodeEntities(text) { * * ```javascript * mermaidAPI.initialize({ - * startOnLoad:true - * }); - * $(function(){ - * const graphDefinition = 'graph TB\na-->b'; - * const cb = function(svgGraph){ - * console.log(svgGraph); - * }; - * mermaidAPI.render('id1',graphDefinition,cb); - * }); - *``` - * @param id the id of the element to be rendered - * @param _txt the graph definition - * @param cb callback which is called after rendering is finished with the svg code as inparam. - * @param container selector to element in which a div with the graph temporarily will be inserted. In one is - * provided a hidden div will be inserted in the body of the page instead. The element will be removed when rendering is - * completed. + * startOnLoad: true, + * }); + * $(function () { + * const graphDefinition = 'graph TB\na-->b'; + * const cb = function (svgGraph) { + * console.log(svgGraph); + * }; + * mermaidAPI.render('id1', graphDefinition, cb); + * }); + * ``` + * + * @param {any} id The id of the element to be rendered + * @param {any} _txt The graph definition + * @param {any} cb Callback which is called after rendering is finished with the svg code as inparam. + * @param {any} container Selector to element in which a div with the graph temporarily will be + * inserted. In one is provided a hidden div will be inserted in the body of the page instead. The + * element will be removed when rendering is completed. + * @returns {any} */ var render = function render(id, _txt, cb, container) { @@ -25766,13 +26191,7 @@ var render = function render(id, _txt, cb, container) { if (graphInit) { _config__WEBPACK_IMPORTED_MODULE_2__.addDirective(graphInit); - } // else { - // configApi.reset(); - // const siteConfig = configApi.getSiteConfig(); - // configApi.addDirective(siteConfig); - // } - // console.warn('Render fetching config'); - + } var cnf = _config__WEBPACK_IMPORTED_MODULE_2__.getConfig(); // Check the maximum allowed text size @@ -25961,17 +26380,7 @@ var render = function render(id, _txt, cb, container) { throw e; } - (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)("[id=\"".concat(id, "\"]")).selectAll('foreignobject > *').attr('xmlns', 'http://www.w3.org/1999/xhtml'); // if (cnf.arrowMarkerAbsolute) { - // url = - // window.location.protocol + - // '//' + - // window.location.host + - // window.location.pathname + - // window.location.search; - // url = url.replace(/\(/g, '\\('); - // url = url.replace(/\)/g, '\\)'); - // } - // Fix for when the base tag is used + (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)("[id=\"".concat(id, "\"]")).selectAll('foreignobject > *').attr('xmlns', 'http://www.w3.org/1999/xhtml'); // Fix for when the base tag is used var svgCode = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)('#d' + id).node().innerHTML; _logger__WEBPACK_IMPORTED_MODULE_4__.log.debug('cnf.arrowMarkerAbsolute', cnf.arrowMarkerAbsolute); @@ -26087,6 +26496,8 @@ var handleDirective = function handleDirective(p, directive, type) { break; } }; +/** @param {any} conf */ + function updateRendererConfigs(conf) { // Todo remove, all diagrams should get config on demoand from the config object, no need for this @@ -26124,6 +26535,8 @@ function reinitialize() {// `mermaidAPI.reinitialize: v${pkg.version}`, // setLogLevel(config.logLevel); // log.debug('mermaidAPI.reinitialize: ', config); } +/** @param {any} options */ + function initialize(options) { // console.warn(`mermaidAPI.initialize: v${pkg.version} `, options); @@ -26187,58 +26600,58 @@ _config__WEBPACK_IMPORTED_MODULE_2__.reset(_config__WEBPACK_IMPORTED_MODULE_2__. * ```html * @@ -26383,7 +26796,10 @@ var Theme = /*#__PURE__*/function () { /** # Base variables */ - /** * background - used to know what the background color is of the diagram. This is used for deducing colors for istance line color. Defaulr value is #f4f4f4. */ + /** + * - Background - used to know what the background color is of the diagram. This is used for + * deducing colors for istance line color. Defaulr value is #f4f4f4. + */ this.background = '#f4f4f4'; this.darkMode = false; // this.background = '#0c0c0c'; // this.darkMode = true; @@ -27834,34 +28250,36 @@ var directive = /[%]{2}[{]\s*(?:(?:(\w+)\s*:|(\w+))\s*(?:(?:(\w+))|((?:(?![}][%] var directiveWithoutOpen = /\s*(?:(?:(\w+)(?=:):|(\w+))\s*(?:(?:(\w+))|((?:(?![}][%]{2}).|\r?\n)*))?\s*)(?:[}][%]{2})?/gi; var anyComment = /\s*%%.*\n/gm; /** - * @function detectInit - * Detects the init config object from the text - * ```mermaid - * %%{init: {"theme": "debug", "logLevel": 1 }}%% - * graph LR - * a-->b - * b-->c - * c-->d - * d-->e - * e-->f - * f-->g - * g-->h - * ``` - * or - * ```mermaid - * %%{initialize: {"theme": "dark", logLevel: "debug" }}%% - * graph LR - * a-->b - * b-->c - * c-->d - * d-->e - * e-->f - * f-->g - * g-->h + * @function detectInit Detects the init config object from the text + * + * ```mermaid + * %%{init: {"theme": "debug", "logLevel": 1 }}%% + * graph LR + * a-->b + * b-->c + * c-->d + * d-->e + * e-->f + * f-->g + * g-->h * ``` * + * Or + * + * ```mermaid + * %%{initialize: {"theme": "dark", logLevel: "debug" }}%% + * graph LR + * a-->b + * b-->c + * c-->d + * d-->e + * e-->f + * f-->g + * g-->h + * ``` * @param {string} text The text defining the graph - * @returns {object} the json object representing the init passed to mermaid.initialize() + * @param {any} cnf + * @returns {object} The json object representing the init passed to mermaid.initialize() */ var detectInit = function detectInit(text, cnf) { @@ -27896,25 +28314,25 @@ var detectInit = function detectInit(text, cnf) { return results; }; /** - * @function detectDirective - * Detects the directive from the text. Text can be single line or multiline. If type is null or omitted - * the first directive encountered in text will be returned - * ```mermaid - * graph LR - * %%{somedirective}%% - * a-->b - * b-->c - * c-->d - * d-->e - * e-->f - * f-->g - * g-->h - * ``` + * @function detectDirective Detects the directive from the text. Text can be single line or + * multiline. If type is null or omitted the first directive encountered in text will be returned * + * ```mermaid + * graph LR + * %%{somedirective}%% + * a-->b + * b-->c + * c-->d + * d-->e + * e-->f + * f-->g + * g-->h + * ``` * @param {string} text The text defining the graph - * @param {string|RegExp} type The directive to return (default: null) - * @returns {object | Array} An object or Array representing the directive(s): { type: string, args: object|null } matched by the input type - * if a single directive was found, that directive object will be returned. + * @param {string | RegExp} type The directive to return (default: null) + * @returns {object | Array} An object or Array representing the directive(s): { type: string, args: + * object|null } matched by the input type if a single directive was found, that directive object + * will be returned. */ var detectDirective = function detectDirective(text) { @@ -27961,23 +28379,26 @@ var detectDirective = function detectDirective(text) { } }; /** - * @function detectType - * Detects the type of the graph text. Takes into consideration the possible existence of an %%init - * directive - * ```mermaid - * %%{initialize: {"startOnLoad": true, logLevel: "fatal" }}%% - * graph LR - * a-->b - * b-->c - * c-->d - * d-->e - * e-->f - * f-->g - * g-->h - * ``` + * @function detectType Detects the type of the graph text. Takes into consideration the possible + * existence of an %%init directive * + * ```mermaid + * %%{initialize: {"startOnLoad": true, logLevel: "fatal" }}%% + * graph LR + * a-->b + * b-->c + * c-->d + * d-->e + * e-->f + * f-->g + * g-->h + * ``` * @param {string} text The text defining the graph - * @param {{ class: { defaultRenderer: string } | undefined; state: { defaultRenderer: string } | undefined; flowchart: { defaultRenderer: string } | undefined; }} [cnf] + * @param {{ + * class: { defaultRenderer: string } | undefined; + * state: { defaultRenderer: string } | undefined; + * flowchart: { defaultRenderer: string } | undefined; + * }} [cnf] * @returns {string} A graph definition key */ @@ -28043,6 +28464,7 @@ var detectType = function detectType(text, cnf) { }; /** * 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 @@ -28067,12 +28489,11 @@ var memoize = function memoize(fn, resolver) { }; }; /** - * @function isSubstringInArray - * Detects whether a substring in present in a given array + * @function isSubstringInArray Detects whether a substring in present in a given array * @param {string} str The substring to detect - * @param {array} arr The array to search - * @returns {number} the array index containing the substring or -1 if not present - **/ + * @param {Array} arr The array to search + * @returns {number} The array index containing the substring or -1 if not present + */ var isSubstringInArray = function isSubstringInArray(str, arr) { @@ -28084,8 +28505,9 @@ var isSubstringInArray = function isSubstringInArray(str, arr) { }; /** * Returns a d3 curve given a curve name + * * @param {string | undefined} interpolate The interpolation name - * @param {*} defaultCurve The default curve to return + * @param {any} defaultCurve The default curve to return * @returns {import('d3-shape').CurveFactory} The curve factory to use */ @@ -28099,8 +28521,9 @@ var interpolateToCurve = function interpolateToCurve(interpolate, defaultCurve) }; /** * Formats a URL string + * * @param {string} linkStr String of the URL - * @param {{ securityLevel: string; }} config Configuration passed to MermaidJS + * @param {{ securityLevel: string }} config Configuration passed to MermaidJS * @returns {string | undefined} The formatted URL */ @@ -28117,8 +28540,9 @@ var formatUrl = function formatUrl(linkStr, config) { }; /** * 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 + * @param {...any} params Parameters to pass to the function */ var runFunc = function runFunc(functionName) { @@ -28141,13 +28565,14 @@ var runFunc = function runFunc(functionName) { (_obj = obj)[fnName].apply(_obj, params); }; /** - * @typedef {Object} Point A (x, y) point + * @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 @@ -28157,9 +28582,9 @@ 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; }; /** - * @todo Give this a description - * @param {Array } points List of points + * @param {Point[]} points List of points * @returns {Point} + * @todo Give this a description */ @@ -28205,6 +28630,7 @@ var traverseEdge = function traverseEdge(points) { }; /** * Alias for `traverseEdge` + * * @param {Point[]} points List of points * @returns {Point} Return result of `transverseEdge` */ @@ -28274,7 +28700,12 @@ var calcCardinalityPosition = function calcCardinalityPosition(isRelationTypePre return cardinalityPosition; }; /** - * position ['start_left', 'start_right', 'end_left', 'end_right'] + * Position ['start_left', 'start_right', 'end_left', 'end_right'] + * + * @param {any} terminalMarkerSize + * @param {any} position + * @param {any} _points + * @returns {any} */ @@ -28357,8 +28788,9 @@ var calcTerminalLabelPosition = function calcTerminalLabelPosition(terminalMarke }; /** * Gets styles from an array of declarations - * @param {Array } arr Declarations - * @returns {{ style: string; labelStyle: string; }} The styles grouped as strings + * + * @param {string[]} arr Declarations + * @returns {{ style: string; labelStyle: string }} The styles grouped as strings */ @@ -28387,6 +28819,10 @@ var generateId = function generateId() { cnt++; return 'id-' + Math.random().toString(36).substr(2, 12) + '-' + cnt; }; +/** + * @param {any} length + * @returns {any} + */ function makeid(length) { var result = ''; @@ -28404,30 +28840,39 @@ var random = function random(options) { return makeid(options.length); }; /** - * @function assignWithDepth - * Extends the functionality of {@link ObjectConstructor.assign} with the ability to merge arbitrary-depth objects - * For each key in src with path `k` (recursively) performs an Object.assign(dst[`k`], src[`k`]) with - * a slight change from the typical handling of undefined for dst[`k`]: instead of raising an error, - * dst[`k`] is auto-initialized to {} and 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' } - * ``` - *
- * 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 {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: 2, clobber: false }] - depth: depth to traverse within src and dst for merging - - * clobber: should dissimilar types clobber (default: { depth: 2, clobber: false }) - * @returns {*} + * @function assignWithDepth Extends the functionality of {@link ObjectConstructor.assign} with the + * ability to merge arbitrary-depth objects For each key in src with path `k` (recursively) + * performs an Object.assign(dst[`k`], src[`k`]) with a slight change from the typical handling of + * undefined for dst[`k`]: instead of raising an error, dst[`k`] is auto-initialized to {} and + * effectively merged with src[`k`]
Additionally, dissimilar types will not clobber unless the + * config.clobber parameter === true. Example: + * + * ```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. + * @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: 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} */ var assignWithDepth = function assignWithDepth(dst, src, config) { @@ -28496,8 +28941,20 @@ var getTextObj = function getTextObj() { }; /** * 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 + * @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 */ @@ -28609,15 +29066,14 @@ var breakString = memoize(function (word, maxWidth) { return "".concat(word, "-").concat(maxWidth, "-").concat(hyphenCharacter, "-").concat(config.fontSize, "-").concat(config.fontWeight, "-").concat(config.fontFamily); }); /** - * This calculates the text's height, taking into account the wrap breaks and - * both the statically configured height, width, and the length of the text (in pixels). + * This calculates the text's height, taking into account the wrap breaks and both the statically + * configured height, width, and the length of the text (in pixels). * - * If the wrapped text text has greater height, we extend the height, so it's - * value won't overflow. + * If the wrapped text text has greater height, we extend the height, so it's value won't overflow. * - * @return - The height for the given text - * @param text the text to measure - * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size + * @param {any} text The text to measure + * @param {any} config - The config for fontSize, fontFamily, and fontWeight all impacting the resulting size + * @returns {any} - The height for the given text */ var calculateTextHeight = function calculateTextHeight(text, config) { @@ -28632,9 +29088,9 @@ var calculateTextHeight = function calculateTextHeight(text, config) { /** * This calculates the width of the given text, font size and family. * - * @return - The width for the given text - * @param text - The text to calculate the width of - * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size + * @param {any} text - The text to calculate the width of + * @param {any} config - The config for fontSize, fontFamily, and fontWeight all impacting the resulting size + * @returns {any} - The width for the given text */ var calculateTextWidth = function calculateTextWidth(text, config) { @@ -28648,9 +29104,10 @@ var calculateTextWidth = function calculateTextWidth(text, config) { /** * This calculates the dimensions of the given text, font size, font family, font weight, and margins. * - * @return - The width for the given text - * @param text - The text to calculate the width of - * @param config - the config for fontSize, fontFamily, fontWeight, and margin all impacting the resulting size + * @param {any} text - The text to calculate the width of + * @param {any} config - The config for fontSize, fontFamily, fontWeight, and margin all impacting + * the resulting size + * @returns - The width for the given text */ var calculateTextDimensions = memoize(function (text, config) { @@ -28731,8 +29188,9 @@ var calculateTextDimensions = memoize(function (text, config) { }); /** * Applys d3 attributes - * @param {*} d3Elem d3 Element to apply the attributes onto - * @param {Array<[string, string]>} attrs Object.keys equivalent format of key to value mapping of 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) { @@ -28752,6 +29210,7 @@ var d3Attrs = function d3Attrs(d3Elem, attrs) { }; /** * 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% @@ -28774,6 +29233,7 @@ var calculateSvgSizeAttrs = function calculateSvgSizeAttrs(height, width, useMax }; /** * 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 @@ -28806,6 +29266,7 @@ var initIdGeneratior = /*#__PURE__*/function () { 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 */ @@ -28820,7 +29281,8 @@ var entityDecode = function entityDecode(html) { }; /** * Sanitizes directive objects - * @param {Object} args Directive's JSON + * + * @param {object} args Directive's JSON */ var directiveSanitizer = function directiveSanitizer(args) { @@ -29661,7 +30123,7 @@ module.exports = require("stylis"); /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"name":"mermaid","version":"8.13.4","description":"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.","main":"dist/mermaid.core.js","module":"dist/mermaid.esm.min.mjs","exports":{".":{"require":"./dist/mermaid.core.js","import":"./dist/mermaid.esm.min.mjs"},"./*":"./*"},"keywords":["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph"],"scripts":{"build:development":"webpack --progress --color","build:production":"yarn build:development --mode production --config webpack.config.prod.babel.js","build":"concurrently \\"yarn build:development\\" \\"yarn build:production\\"","postbuild":"documentation build src/mermaidAPI.js src/config.js src/defaultConfig.js --shallow -f md --markdown-toc false > docs/Setup.md","build:watch":"yarn build:development --watch","release":"yarn build","lint":"eslint src","e2e:depr":"yarn lint && jest e2e --config e2e/jest.config.js","cypress":"percy exec -- cypress run","e2e":"start-server-and-test dev http://localhost:9000/ cypress","e2e-upd":"yarn lint && jest e2e -u --config e2e/jest.config.js","dev":"webpack serve --config webpack.config.e2e.js","test":"yarn lint && jest src/.*","test:watch":"jest --watch src","prepublishOnly":"yarn build && yarn test","prepare":"yarn build"},"repository":{"type":"git","url":"https://github.com/knsv/mermaid"},"author":"Knut Sveidqvist","license":"MIT","standard":{"ignore":["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],"globals":["page"]},"dependencies":{"@braintree/sanitize-url":"^3.1.0","d3":"^7.0.0","dagre":"^0.8.5","dagre-d3":"^0.6.4","dompurify":"2.3.3","graphlib":"^2.1.8","khroma":"^1.4.1","moment-mini":"^2.24.0","stylis":"^4.0.10"},"devDependencies":{"@babel/core":"^7.14.6","@babel/eslint-parser":"^7.14.7","@babel/preset-env":"^7.14.7","@babel/register":"^7.14.5","@percy/cli":"^1.0.0-beta.58","@percy/cypress":"^3.1.0","@percy/migrate":"^0.11.0","babel-jest":"^27.0.6","babel-loader":"^8.2.2","concurrently":"^6.2.2","coveralls":"^3.0.2","css-to-string-loader":"^0.1.3","cypress":"8.7.0","documentation":"13.2.0","eslint":"^8.0.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","husky":"^7.0.1","identity-obj-proxy":"^3.0.0","jest":"^27.0.6","jison":"^0.4.18","js-base64":"3.7.2","moment":"^2.23.0","path-browserify":"^1.0.1","prettier":"^2.3.2","start-server-and-test":"^1.12.6","terser-webpack-plugin":"^5.2.4","webpack":"^5.53.0","webpack-cli":"^4.7.2","webpack-dev-server":"^4.3.0","webpack-node-externals":"^3.0.0"},"files":["dist"],"sideEffects":["**/*.css","**/*.scss"],"husky":{"hooks":{"pre-push":"yarn test"}}}'); +module.exports = JSON.parse('{"name":"mermaid","version":"8.13.4","description":"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.","main":"dist/mermaid.core.js","module":"dist/mermaid.esm.min.mjs","exports":{".":{"require":"./dist/mermaid.core.js","import":"./dist/mermaid.esm.min.mjs"},"./*":"./*"},"keywords":["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph"],"scripts":{"build:development":"webpack --progress --color","build:production":"yarn build:development --mode production --config webpack.config.prod.babel.js","build":"concurrently \\"yarn build:development\\" \\"yarn build:production\\"","postbuild":"documentation build src/mermaidAPI.js src/config.js src/defaultConfig.js --shallow -f md --markdown-toc false > docs/Setup.md","build:watch":"yarn build:development --watch","release":"yarn build","lint":"eslint src","lint:fix":"yarn lint --fix","e2e:depr":"yarn lint && jest e2e --config e2e/jest.config.js","cypress":"percy exec -- cypress run","e2e":"start-server-and-test dev http://localhost:9000/ cypress","e2e-upd":"yarn lint && jest e2e -u --config e2e/jest.config.js","dev":"webpack serve --config webpack.config.e2e.js","test":"yarn lint && jest src/.*","test:watch":"jest --watch src","prepublishOnly":"yarn build && yarn test","prepare":"yarn build"},"repository":{"type":"git","url":"https://github.com/knsv/mermaid"},"author":"Knut Sveidqvist","license":"MIT","standard":{"ignore":["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],"globals":["page"]},"dependencies":{"@braintree/sanitize-url":"^3.1.0","d3":"^7.0.0","dagre":"^0.8.5","dagre-d3":"^0.6.4","dompurify":"2.3.3","graphlib":"^2.1.8","khroma":"^1.4.1","moment-mini":"^2.24.0","stylis":"^4.0.10"},"devDependencies":{"@babel/core":"^7.14.6","@babel/eslint-parser":"^7.14.7","@babel/preset-env":"^7.14.7","@babel/register":"^7.14.5","@percy/cli":"^1.0.0-beta.58","@percy/cypress":"^3.1.0","@percy/migrate":"^0.11.0","babel-jest":"^27.0.6","babel-loader":"^8.2.2","concurrently":"^6.2.2","coveralls":"^3.0.2","css-to-string-loader":"^0.1.3","cypress":"8.7.0","documentation":"13.2.0","eslint":"^8.0.0","eslint-config-prettier":"^8.3.0","eslint-plugin-jsdoc":"^37.0.3","eslint-plugin-prettier":"^4.0.0","husky":"^7.0.1","identity-obj-proxy":"^3.0.0","jest":"^27.0.6","jison":"^0.4.18","js-base64":"3.7.2","moment":"^2.23.0","path-browserify":"^1.0.1","prettier":"^2.3.2","prettier-plugin-jsdoc":"^0.3.30","start-server-and-test":"^1.12.6","terser-webpack-plugin":"^5.2.4","webpack":"^5.53.0","webpack-cli":"^4.7.2","webpack-dev-server":"^4.3.0","webpack-node-externals":"^3.0.0"},"files":["dist"],"sideEffects":["**/*.css","**/*.scss"],"husky":{"hooks":{"pre-push":"yarn test"}}}'); /***/ }) diff --git a/dist/mermaid.core.js.map b/dist/mermaid.core.js.map index 42c505913..2679a2c54 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;;AAEA;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;;AAEA;AACA;AACA;AACA,uEAAuE;AACvE;AACA;AACA;;AAEA,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;;AAEA,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;;AAEA;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;;AAEA;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;AACtB;AACA;AACA;AACA;AACA;AA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;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;;AAEA;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;;AAEA;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;;AAEA;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;;AAEA;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;;AAEA;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;;AAEA,oBAAoB,0FAA0F;AAC9G,iBAAiB,qEAAqE;AACtF;AACA;AACA;;AAEA,oBAAoB,wFAAwF;AAC5G,iBAAiB,oFAAoF;AACrG;AACA;AACA;;AAEA,oBAAoB,uFAAuF;AAC3G,iBAAiB,mFAAmF;AACpG;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;AACA,4BAA4B,gFAAgF;AAC5G;AACA;AACA,4BAA4B,kFAAkF;AAC9G;AACA;;AAEA,uBAAuB,sEAAsE;AAC7F;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,qFAAqF;AAC5G;AACA;;AAEA,uBAAuB,mDAAmD;AAC1E;AACA;AACA;;AAEA,uBAAuB,mDAAmD;AAC1E;AACA;AACA;;AAEA,uBAAuB,wDAAwD;AAC/E;AACA;AACA;;AAEA,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;;AAEA;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;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,6DAA6D,WAAW;AACxE;AACA;;AAEA,2CAA2C,iCAAiC;AAC5E,iBAAiB,4BAA4B,+DAA+D,WAAW;AACvH;AACA;AACA;;AAEA,sEAAsE;AACtE,iBAAiB,4BAA4B,+DAA+D,WAAW,8DAA8D;AACrL;AACA;AACA;;AAEA,2EAA2E;AAC3E,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;;AAEA,2GAA2G;AAC3G,kBAAkB;AAClB;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;;AAEA,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;;AAEA;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;;AAEA;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,0BAA0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,EAAE,IAnEA;;AAqEb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACElO,EAAAA,mBAAmB,EAAE,KAjFR;;AAmFb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEE3L,EAAAA,MAAM,EAAE,CAAC,QAAD,EAAW,eAAX,EAA4B,aAA5B,EAA2C,aAA3C,CA7FK;;AA+Fb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE8Z,EAAAA,gBAAgB,EAAE,KAzGL;;AA2Gb;AACF;AACA;AACA;AACEC,EAAAA,mBAAmB,EAAEnY,SA/GR;;AAiHb;AACF;AACA;AACEG,EAAAA,SAAS,EAAE;AACT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIiY,IAAAA,cAAc,EAAE,CAZP;;AAcT;AACJ;AACA;AACA;AACA;AACA;AACA;AACIhY,IAAAA,UAAU,EAAE,IArBH;;AAuBT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIiY,IAAAA,WAAW,EAAE,EAlCJ;;AAoCT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EA/CJ;;AAiDT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI/O,IAAAA,KAAK,EAAE,OA1DE;AA2DT;AACA;AACA5I,IAAAA,OAAO,EAAE,EA7DA;;AA+DT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI4X,IAAAA,WAAW,EAAE,IA3EJ;;AA6ET;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE;AA1FR,GApHE;;AAiNb;AACF;AACA;AACEC,EAAAA,QAAQ,EAAE;AACR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,EATT;;AAWR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EAlBR;;AAoBR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EA3BR;;AA6BR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EArCL;;AAuCR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIpY,IAAAA,KAAK,EAAE,GA/CC;;AAiDR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,EAzDA;;AA2DR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIoY,IAAAA,SAAS,EAAE,EAnEH;;AAqER;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,CA7EP;;AA+ER;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,EAvFJ;;AAyFR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EAjGP;;AAmGR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,QA3GN;;AA6GR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,IArHN;;AAuHR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,KAhIJ;;AAkIR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,CA7IT;;AA+IR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACId,IAAAA,WAAW,EAAE,IA1JL;;AA4JR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIe,IAAAA,WAAW,EAAE,KAvKL;;AAyKR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,mBAAmB,EAAE,KAjLb;;AAmLR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EA3LP;;AA6LR;AACJ;AACA;AACA;AACA;AACA;A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CA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE;AA7CZ,GAj4BM;;AAi7Bb;AACF;AACA;AACEsE,EAAAA,EAAE,EAAE;AACF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI1E,IAAAA,cAAc,EAAE,EAZd;;AAcF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI2E,IAAAA,eAAe,EAAE,IA3Bf;;AA6BF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,GAtCd;;AAwCF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,EAjDf;;AAmDF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EA9Db;;AAgEF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,MAxEN;;AA0EF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,IAAI,EAAE,UAlFJ;;AAoFF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI7C,IAAAA,QAAQ,EAAE,EA9FR;;AAgGF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIhC,IAAAA,WAAW,EAAE;AA7GX,GAp7BS;;AAoiCb;AACF;AACA;AACE8E,EAAAA,GAAG,EAAE;AACH9B,IAAAA,QAAQ,EAAEvb,SADP;;AAGH;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIuY,IAAAA,WAAW,EAAE;AAhBV,GAviCQ;;AA0jCb;AACF;AACA;AACE+E,EAAAA,WAAW,EAAE;AACX/B,IAAAA,QAAQ,EAAEvb,SADC;;AAGX;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIuY,IAAAA,WAAW,EAAE,IAhBF;AAkBXgF,IAAAA,SAAS,EAAE,S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A;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|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/class/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/er/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/flowchart/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/gantt/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/git/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/info/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/pie/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/requirement/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/sequence/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/state/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/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\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\n yy.addEntity($$[$0-4]);\n yy.addEntity($$[$0-2]);\n yy.addRelationship($$[$0-4], $$[$0], $$[$0-2], $$[$0-3]);\n /*console.log($$[$0-4] + $$[$0-3] + $$[$0-2] + ':' + $$[$0]);*/\n \nbreak;\ncase 13:\n\n /* console.log('detected block'); */\n yy.addEntity($$[$0-3]);\n yy.addAttributes($$[$0-3], $$[$0-1]);\n /* console.log('handled block'); */\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\n this.$ = { cardA: $$[$0], relType: $$[$0-1], cardB: $$[$0-2] };\n /*console.log('relSpec: ' + $$[$0] + $$[$0-1] + $$[$0-2]);*/\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\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\n\t if($$[$0] !== []){\n\t $$[$0-1].push($$[$0]);\n\t }\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\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\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\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) {\n\t// Pre-lexer code can go here\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\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\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\n\t\t$$[$0-1].unshift({type: 'loopStart', loopText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.LOOP_START});\n\t\t$$[$0-1].push({type: 'loopEnd', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 27:\n\n\t\t$$[$0-1].unshift({type: 'rectStart', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_START });\n\t\t$$[$0-1].push({type: 'rectEnd', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_END });\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 28:\n\n\t\t$$[$0-1].unshift({type: 'optStart', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_START});\n\t\t$$[$0-1].push({type: 'optEnd', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 29:\n\n\t\t// Alt start\n\t\t$$[$0-1].unshift({type: 'altStart', altText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.ALT_START});\n\t\t// Content in alt is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 30:\n\n\t\t// Parallel start\n\t\t$$[$0-1].unshift({type: 'parStart', parText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.PAR_START});\n\t\t// Content in par is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});\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\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 37:\n\n\t\t// Coerce actor_pair into a [to, from, ...] array\n\t\t$$[$0-2] = [].concat($$[$0-1], $$[$0-1]).slice(0, 2);\n\t\t$$[$0-2][0] = $$[$0-2][0].actor;\n\t\t$$[$0-2][1] = $$[$0-2][1].actor;\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:yy.PLACEMENT.OVER, actor:$$[$0-2].slice(0, 2), text:$$[$0]}];\nbreak;\ncase 38:\n\n\t\tthis.$ = [$$[$0-1], {type:'addLinks', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 39:\n\n\t\tthis.$ = [$$[$0-1], {type:'addALink', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 40:\n\n\t\tthis.$ = [$$[$0-1], {type:'addProperties', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 41:\n\n\t\tthis.$ = [$$[$0-1], {type:'addDetails', actor:$$[$0-1].actor, text:$$[$0]}];\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]},\n\t {type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]}\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]},\n\t {type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-4]}\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\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\n if($$[$0]!='nl'){\n $$[$0-1].push($$[$0]);this.$ = $$[$0-1]\n }\n // console.warn('Got document',$$[$0-1], $$[$0]);\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\n /*console.warn('got id', $$[$0-2]);yy.addRelation($$[$0-2], $$[$0]);*/\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-2], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0] ,type: 'default', description: ''}};\n \nbreak;\ncase 13:\n\n /*yy.addRelation($$[$0-3], $$[$0-1], $$[$0].substr(1).trim());*/\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()};\n \nbreak;\ncase 17:\n\n /* console.warn('Adding document for state without id ', $$[$0-3]);*/\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: '', doc: $$[$0-1] }\n \nbreak;\ncase 18:\n\n var id=$$[$0];\n var description = $$[$0-2].trim();\n if($$[$0].match(':')){\n var parts = $$[$0].split(':');\n id=parts[0];\n description = [description, parts[1]];\n }\n this.$={stmt: 'state', id: id, type: 'default', description: description};\n\n \nbreak;\ncase 19:\n\n // console.warn('Adding document for state with id zxzx', $$[$0-3], $$[$0-2], yy.getDirection()); yy.addDocument($$[$0-3]);\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: $$[$0-5], doc: $$[$0-1] }\n \nbreak;\ncase 20:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'fork' }\n \nbreak;\ncase 21:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'join' }\n \nbreak;\ncase 22:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'choice' }\n \nbreak;\ncase 23:\n\n this.$={ stmt: 'state', id: yy.getDividerId(), type: 'divider' }\n \nbreak;\ncase 24:\n\n /* console.warn('got NOTE, position: ', $$[$0-2].trim(), 'id = ', $$[$0-1].trim(), 'note: ', $$[$0]);*/\n this.$={ stmt: 'state', id: $$[$0-1].trim(), note:{position: $$[$0-2].trim(), text: $$[$0].trim()}};\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\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\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';\nimport { log } from './logger';\nimport theme from './themes';\nimport config from './defaultConfig';\n\n// debugger;\n\nexport const defaultConfig = Object.freeze(config);\n\nlet siteConfig = assignWithDepth({}, defaultConfig);\nlet configFromInitialize;\nlet directives = [];\nlet currentConfig = assignWithDepth({}, defaultConfig);\n\nexport const updateCurrentConfig = (siteCfg, _directives) => {\n // start with config beeing the siteConfig\n let cfg = assignWithDepth({}, siteCfg);\n // let sCfg = assignWithDepth(defaultConfig, siteConfigDelta);\n\n // Join directives\n let sumOfDirectives = {};\n for (let i = 0; i < _directives.length; i++) {\n const d = _directives[i];\n sanitize(d);\n\n // Apply the data from the directive where the the overrides the themeVaraibles\n sumOfDirectives = assignWithDepth(sumOfDirectives, d);\n }\n\n cfg = assignWithDepth(cfg, sumOfDirectives);\n\n if (sumOfDirectives.theme) {\n const tmpConfigFromInitialize = assignWithDepth({}, configFromInitialize);\n const themeVariables = assignWithDepth(\n tmpConfigFromInitialize.themeVariables || {},\n sumOfDirectives.themeVariables\n );\n cfg.themeVariables = theme[cfg.theme].getThemeVariables(themeVariables);\n }\n\n currentConfig = cfg;\n return cfg;\n};\n\n/**\n *## setSiteConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array|\n ***Notes:**\n *Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls to reset() will reset\n *the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) will reset siteConfig and currentConfig\n *to the defaultConfig\n *Note: currentConfig is set in this function\n **Default value: At default, will mirror Global Config**\n * @param conf - the base currentConfig to use as siteConfig\n * @returns {Object} - the siteConfig\n */\nexport const setSiteConfig = (conf) => {\n siteConfig = assignWithDepth({}, defaultConfig);\n siteConfig = assignWithDepth(siteConfig, conf);\n\n if (conf.theme) {\n siteConfig.themeVariables = theme[conf.theme].getThemeVariables(conf.themeVariables);\n }\n\n currentConfig = updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\n\nexport const saveConfigFromInitilize = (conf) => {\n configFromInitialize = assignWithDepth({}, conf);\n};\n\nexport const updateSiteConfig = (conf) => {\n siteConfig = assignWithDepth(siteConfig, conf);\n updateCurrentConfig(siteConfig, directives);\n\n return siteConfig;\n};\n/**\n *## getSiteConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig|\n ***Notes**:\n *Returns **any** values in siteConfig.\n * @returns {Object} - the siteConfig\n */\nexport const getSiteConfig = () => {\n return assignWithDepth({}, siteConfig);\n};\n/**\n *## setConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request| Any Values, except ones in secure array|\n ***Notes**:\n *Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure keys. Any\n *values found in conf with key found in siteConfig.secure will be replaced with the corresponding\n *siteConfig value.\n * @param conf - the potential currentConfig\n * @returns {*} - the currentConfig merged with the sanitized conf\n */\nexport const setConfig = (conf) => {\n // sanitize(conf);\n // Object.keys(conf).forEach(key => {\n // const manipulator = manipulators[key];\n // conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n // });\n\n assignWithDepth(currentConfig, conf);\n\n return getConfig();\n};\n\n/**\n * ## getConfig\n *| Function | Description | Type | Return Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| getConfig |Obtains the currentConfig | Get Request | Any Values from currentConfig|\n ***Notes**:\n *Returns **any** the currentConfig\n * @returns {*} - the currentConfig\n */\nexport const getConfig = () => {\n return assignWithDepth({}, currentConfig);\n};\n/**\n *## sanitize\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| sanitize |Sets the siteConfig to desired values. | Put Request |None|\n *Ensures options parameter does not attempt to override siteConfig secure keys\n *Note: modifies options in-place\n * @param options - the potential setConfig parameter\n */\nexport const sanitize = (options) => {\n // Checking that options are not in the list of excluded options\n Object.keys(siteConfig.secure).forEach((key) => {\n if (typeof options[siteConfig.secure[key]] !== 'undefined') {\n // DO NOT attempt to print options[siteConfig.secure[key]] within `${}` as a malicious script\n // can exploit the logger's attempt to stringify the value and execute arbitrary code\n log.debug(\n `Denied attempt to modify a secure key ${siteConfig.secure[key]}`,\n options[siteConfig.secure[key]]\n );\n delete options[siteConfig.secure[key]];\n }\n });\n\n // Check that there no attempts of prototype pollution\n Object.keys(options).forEach((key) => {\n if (key.indexOf('__') === 0) {\n delete options[key];\n }\n });\n // Check that there no attempts of xss, there should be no tags at all in the directive\n // blocking data urls as base64 urls can contain svgs with inline script tags\n Object.keys(options).forEach((key) => {\n if (typeof options[key] === 'string') {\n if (\n options[key].indexOf('<') > -1 ||\n options[key].indexOf('>') > -1 ||\n options[key].indexOf('url(data:') > -1\n ) {\n delete options[key];\n }\n }\n if (typeof options[key] === 'object') {\n sanitize(options[key]);\n }\n });\n};\n\n/**\n * Pushes in a directive to the configuration\n * @param {Object} directive The directive to push in\n */\nexport const addDirective = (directive) => {\n if (directive.fontFamily) {\n if (!directive.themeVariables) {\n directive.themeVariables = { fontFamily: directive.fontFamily };\n } else {\n if (!directive.themeVariables.fontFamily) {\n directive.themeVariables = { fontFamily: directive.fontFamily };\n }\n }\n }\n directives.push(directive);\n updateCurrentConfig(siteConfig, directives);\n};\n\n/**\n *## reset\n *| Function | Description | Type | Required | Values |\n *| --------- | ------------------- | ------- | -------- | ------------------ |\n *| reset|Resets currentConfig to conf| Put Request | Required | None|\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| conf| base set of values, which currentConfig coul be **reset** to.| Dictionary | Required | Any Values, with respect to the secure Array|\n *\n **Notes :\n (default: current siteConfig ) (optional, default `getSiteConfig()`)\n * @param conf the base currentConfig to reset to (default: current siteConfig ) (optional, default `getSiteConfig()`)\n */\nexport const reset = () => {\n // Replace current config with siteConfig\n directives = [];\n updateCurrentConfig(siteConfig, directives);\n};\n","import intersectRect from './intersect/intersect-rect';\nimport { log } from '../logger';\nimport createLabel from './createLabel';\nimport { select } from 'd3';\nimport { getConfig } from '../config';\nimport { evaluate } from '../diagrams/common/common';\n\nconst rect = (parent, node) => {\n log.trace('Creating subgraph rect for ', node.id, node);\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'cluster' + (node.class ? ' ' + node.class : ''))\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n const width = node.width <= bbox.width + padding ? bbox.width + padding : node.width;\n if (node.width <= bbox.width + padding) {\n node.diff = (bbox.width - node.width) / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n\n log.trace('Data ', node, JSON.stringify(node));\n // center the rect around its coordinate\n rect\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - width / 2)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', width)\n .attr('height', node.height + padding);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y - node.height / 2 + node.padding / 3) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\n/**\n * Non visiable cluster where the note is group with its\n */\nconst noteGroup = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent.insert('g').attr('class', 'note-cluster').attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding)\n .attr('fill', 'none');\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\nconst roundedWithTitle = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent.insert('g').attr('class', node.classes).attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n const innerRect = shapeSvg.append('rect');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n bbox = text.getBBox();\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (bbox.width + node.padding * 0 - node.width) / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n\n // center the rect around its coordinate\n rect\n .attr('class', 'outer')\n .attr('x', node.x - width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', width + padding)\n .attr('height', node.height + padding);\n innerRect\n .attr('class', 'inner')\n .attr('x', node.x - width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding + bbox.height - 1)\n .attr('width', width + padding)\n .attr('height', node.height + padding - bbox.height - 3);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y -\n node.height / 2 -\n node.padding / 3 +\n (evaluate(getConfig().flowchart.htmlLabels) ? 5 : 3)) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst divider = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent.insert('g').attr('class', node.classes).attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('class', 'divider')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.diff = -node.padding / 2;\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = { rect, roundedWithTitle, noteGroup, divider };\n\nlet clusterElems = {};\n\nexport const insertCluster = (elem, node) => {\n log.trace('Inserting cluster');\n const shape = node.shape || 'rect';\n clusterElems[node.id] = shapes[shape](elem, node);\n};\nexport const getClusterTitleWidth = (elem, node) => {\n const label = createLabel(node.labelText, node.labelStyle, undefined, true);\n elem.node().appendChild(label);\n const width = label.getBBox().width;\n elem.node().removeChild(label);\n return width;\n};\n\nexport const clear = () => {\n clusterElems = {};\n};\n\nexport const positionCluster = (node) => {\n log.info('Position cluster (' + node.id + ', ' + node.x + ', ' + node.y + ')');\n const el = clusterElems[node.id];\n\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n};\n","import { select } from 'd3';\nimport { log } from '../logger'; // eslint-disable-line\nimport { getConfig } from '../config';\nimport { evaluate } from '../diagrams/common/common';\n// let vertexNode;\n// if (evaluate(getConfig().flowchart.htmlLabels)) {\n// // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n// const node = {\n// label: vertexText.replace(/fa[lrsb]?:fa-[\\w-]+/g, s => ``)\n// };\n// vertexNode = addHtmlLabel(svg, node).node();\n// vertexNode.parentNode.removeChild(vertexNode);\n// } else {\n// const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n// svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n// const rows = vertexText.split(common.lineBreakRegex);\n\n// for (let j = 0; j < rows.length; j++) {\n// const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n// tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n// tspan.setAttribute('dy', '1em');\n// tspan.setAttribute('x', '1');\n// tspan.textContent = rows[j];\n// svgLabel.appendChild(tspan);\n// }\n// vertexNode = svgLabel;\n// }\n\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr('style', styleFn);\n }\n}\n\nfunction addHtmlLabel(node) {\n // var fo = root.append('foreignObject').attr('width', '100000');\n\n // var div = fo.append('xhtml:div');\n // div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n\n // var label = node.label;\n // switch (typeof label) {\n // case 'function':\n // div.insert(label);\n // break;\n // case 'object':\n // // Currently we assume this is a DOM object.\n // div.insert(function() {\n // return label;\n // });\n // break;\n // default:\n // div.html(label);\n // }\n\n // applyStyle(div, node.labelStyle);\n // div.style('display', 'inline-block');\n // // Fix for firefox\n // div.style('white-space', 'nowrap');\n\n // var client = div.node().getBoundingClientRect();\n // fo.attr('width', client.width).attr('height', client.height);\n const fo = select(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'));\n const div = fo.append('xhtml:div');\n\n const label = node.label;\n const labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel';\n div.html(\n '' +\n label +\n ''\n );\n\n applyStyle(div, node.labelStyle);\n div.style('display', 'inline-block');\n // Fix for firefox\n div.style('white-space', 'nowrap');\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n return fo.node();\n}\n\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || '';\n if (typeof vertexText === 'object') vertexText = vertexText[0];\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n vertexText = vertexText.replace(/\\\\n|\\n/g, '
');\n log.info('vertexText' + vertexText);\n const node = {\n isNode,\n label: vertexText.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n (s) => ``\n ),\n labelStyle: style.replace('fill:', 'color:'),\n };\n let vertexNode = addHtmlLabel(node);\n // vertexNode.parentNode.removeChild(vertexNode);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', style.replace('color:', 'fill:'));\n let rows = [];\n if (typeof vertexText === 'string') {\n rows = vertexText.split(/\\\\n|\\n|
/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '0');\n if (isTitle) {\n tspan.setAttribute('class', 'title-row');\n } else {\n tspan.setAttribute('class', 'row');\n }\n tspan.textContent = rows[j].trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n};\n\nexport default createLabel;\n","import { log } from '../logger'; // eslint-disable-line\nimport createLabel from './createLabel';\n// import { line, curveBasis, curveLinear, select } from 'd3';\nimport { line, curveBasis, select } from 'd3';\nimport { getConfig } from '../config';\nimport utils from '../utils';\nimport { evaluate } from '../diagrams/common/common';\n\nlet edgeLabels = {};\nlet terminalLabels = {};\n\nexport const clear = () => {\n edgeLabels = {};\n terminalLabels = {};\n};\n\nexport const insertEdgeLabel = (elem, edge) => {\n // Create the actual text element\n const labelElement = createLabel(edge.label, edge.labelStyle);\n\n // Create outer g, edgeLabel, this will be positioned after graph layout\n const edgeLabel = elem.insert('g').attr('class', 'edgeLabel');\n\n // Create inner g, label, this will be positioned now for centering the text\n const label = edgeLabel.insert('g').attr('class', 'label');\n label.node().appendChild(labelElement);\n\n // Center the label\n let bbox = labelElement.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n\n // Make element accessible by id for positioning\n edgeLabels[edge.id] = edgeLabel;\n\n // Update the abstract data of the edge with the new information about its width and height\n edge.width = bbox.width;\n edge.height = bbox.height;\n\n let fo;\n if (edge.startLabelLeft) {\n // Create the actual text element\n const startLabelElement = createLabel(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelLeft.insert('g').attr('class', 'inner');\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n // Create the actual text element\n const startLabelElement = createLabel(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelRight.insert('g').attr('class', 'inner');\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n // Create the actual text element\n const endLabelElement = createLabel(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = endEdgeLabelLeft.insert('g').attr('class', 'inner');\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n // Create the actual text element\n const endLabelElement = createLabel(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = endEdgeLabelRight.insert('g').attr('class', 'inner');\n\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n};\n\nfunction setTerminalWidth(fo, value) {\n if (getConfig().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + 'px';\n fo.style.height = '12px';\n }\n}\n\nexport const positionEdgeLabel = (edge, paths) => {\n log.info('Moving label abc78 ', edge.id, edge.label, edgeLabels[edge.id]);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // // debugger;\n const pos = utils.calcLabelPosition(path);\n log.info('Moving label from (', x, ',', y, ') to (', pos.x, ',', pos.y, ') abc78');\n // x = pos.x;\n // y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n\n //let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, 'start_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n 'start_right',\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_right', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n};\n\n// const getRelationType = function(type) {\n// switch (type) {\n// case stateDb.relationType.AGGREGATION:\n// return 'aggregation';\n// case stateDb.relationType.EXTENSION:\n// return 'extension';\n// case stateDb.relationType.COMPOSITION:\n// return 'composition';\n// case stateDb.relationType.DEPENDENCY:\n// return 'dependency';\n// }\n// };\n\nconst outsideNode = (node, point) => {\n // log.warn('Checking bounds ', node, point);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point.x - x);\n const dy = Math.abs(point.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n};\n\nexport const intersection = (node, outsidePoint, insidePoint) => {\n log.warn(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n\n const dx = Math.abs(x - insidePoint.x);\n // const dy = Math.abs(y - insidePoint.y);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n\n // const edges = {\n // x1: x - w,\n // x2: x + w,\n // y1: y - h,\n // y2: y + h\n // };\n\n // if (\n // outsidePoint.x === edges.x1 ||\n // outsidePoint.x === edges.x2 ||\n // outsidePoint.y === edges.y1 ||\n // outsidePoint.y === edges.y2\n // ) {\n // log.warn('abc89 calc equals on edge', outsidePoint, edges);\n // return outsidePoint;\n // }\n\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n // log.warn();\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) { // eslint-disable-line\n // Intersection is top or bottom of rect.\n // let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = (R * q) / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q,\n };\n\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n\n log.warn(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n\n return res;\n } else {\n // Intersection onn sides of rect\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n // r = outsidePoint.x - w - x;\n r = x - w - outsidePoint.x;\n }\n let q = (Q * r) / R;\n // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w;\n // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n // let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.warn(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n\n return { x: _x, y: _y };\n }\n};\n/**\n * This function will page a path and node where the last point(s) in the path is inside the node\n * and return an update path ending by the border of the node.\n * @param {*} points\n * @param {*} boundryNode\n * @returns\n */\nconst cutPathAtIntersect = (_points, boundryNode) => {\n log.warn('abc88 cutPathAtIntersect', _points, boundryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point) => {\n // const node = clusterDb[edge.toCluster].node;\n log.info('abc88 checking point', point, boundryNode);\n\n // check if point is inside the boundry rect\n if (!outsideNode(boundryNode, point) && !isInside) {\n // First point inside the rect found\n // Calc the intersection coord between the point anf the last opint ouside the rect\n const inter = intersection(boundryNode, lastPointOutside, point);\n log.warn('abc88 inside', point, lastPointOutside, inter);\n log.warn('abc88 intersection', inter);\n\n // // Check case where the intersection is the same as the last point\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n });\n // // if (!pointPresent) {\n if (!points.find((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n } else {\n log.warn('abc88 no intersect', inter, points);\n }\n // points.push(inter);\n isInside = true;\n } else {\n // Outside\n log.warn('abc88 outside', point, lastPointOutside);\n lastPointOutside = point;\n // points.push(point);\n if (!isInside) points.push(point);\n }\n });\n log.warn('abc88 returning points', points);\n return points;\n};\n\n//(edgePaths, e, edge, clusterDb, diagramtype, graph)\nexport const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph) {\n let points = edge.points;\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n\n log.info('abc88 InsertEdge: ', edge);\n if (head.intersect && tail.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n log.info(\n 'Last point',\n points[points.length - 1],\n head,\n head.intersect(points[points.length - 1])\n );\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.info('to cluster abc88', clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n // log.trace('edge', edge);\n // points = [];\n // let lastPointOutside; // = edge.points[0];\n // let isInside = false;\n // edge.points.forEach(point => {\n // const node = clusterDb[edge.toCluster].node;\n // log.warn('checking from', edge.fromCluster, point, node);\n\n // if (!outsideNode(node, point) && !isInside) {\n // log.trace('inside', edge.toCluster, point, lastPointOutside);\n\n // // First point inside the rect\n // const inter = intersection(node, lastPointOutside, point);\n\n // let pointPresent = false;\n // points.forEach(p => {\n // pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n // });\n // // if (!pointPresent) {\n // if (!points.find(e => e.x === inter.x && e.y === inter.y)) {\n // points.push(inter);\n // } else {\n // log.warn('no intersect', inter, points);\n // }\n // isInside = true;\n // } else {\n // // outtside\n // lastPointOutside = point;\n // if (!isInside) points.push(point);\n // }\n // });\n pointsHasChanged = true;\n }\n\n if (edge.fromCluster) {\n log.info('from cluster abc88', clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n // log.warn('edge', edge);\n // log.warn('from cluster', clusterDb[edge.fromCluster], points);\n // const updatedPoints = [];\n // let lastPointOutside = edge.points[edge.points.length - 1];\n // let isInside = false;\n // for (let i = points.length - 1; i >= 0; i--) {\n // const point = points[i];\n // const node = clusterDb[edge.fromCluster].node;\n // log.warn('checking to', edge.fromCluster, point, node);\n\n // if (!outsideNode(node, point) && !isInside) {\n // log.warn('inside', edge.fromCluster, point, node);\n\n // // First point inside the rect\n // const inter = intersection(node, lastPointOutside, point);\n // log.warn('intersect', intersection(node, lastPointOutside, point));\n // let pointPresent = false;\n // points.forEach(p => {\n // pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n // });\n // // if (!pointPresent) {\n // if (!points.find(e => e.x === inter.x && e.y === inter.y)) {\n // updatedPoints.unshift(inter);\n // log.warn('Adding point -updated = ', updatedPoints);\n // } else {\n // log.warn('no intersect', inter, points);\n // }\n // // points.push(insterection);\n // isInside = true;\n // } else {\n // // at the outside\n // // if (!isInside) updatedPoints.unshift(point);\n // updatedPoints.unshift(point);\n // log.warn('Outside point', point, updatedPoints);\n // }\n // lastPointOutside = point;\n // }\n // points = updatedPoints;\n // points = edge.points;\n pointsHasChanged = true;\n }\n\n // The data for our line\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n\n // This is the accessor function we talked about above\n let curve;\n // Currently only flowcharts get the curve from the settings, perhaps this should\n // be expanded to a common setting? Restricting it for now in order not to cause side-effects that\n // have not been thought through\n if (diagramType === 'graph' || diagramType === 'flowchart') {\n curve = edge.curve || curveBasis;\n } else {\n curve = curveBasis;\n }\n // curve = curveLinear;\n const lineFunction = line()\n .x(function (d) {\n return d.x;\n })\n .y(function (d) {\n return d.y;\n })\n .curve(curve);\n\n // Contruct stroke classes based on properties\n let strokeClasses;\n switch (edge.thickness) {\n case 'normal':\n strokeClasses = 'edge-thickness-normal';\n break;\n case 'thick':\n strokeClasses = 'edge-thickness-thick';\n break;\n default:\n strokeClasses = '';\n }\n switch (edge.pattern) {\n case 'solid':\n strokeClasses += ' edge-pattern-solid';\n break;\n case 'dotted':\n strokeClasses += ' edge-pattern-dotted';\n break;\n case 'dashed':\n strokeClasses += ' edge-pattern-dashed';\n break;\n }\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', edge.id)\n .attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : ''))\n .attr('style', edge.style);\n\n // DEBUG code, adds a red circle at each edge coordinate\n // edge.points.forEach(point => {\n // elem\n // .append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n\n let url = '';\n if (getConfig().state.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n log.info('arrowTypeStart', edge.arrowTypeStart);\n log.info('arrowTypeEnd', edge.arrowTypeEnd);\n\n switch (edge.arrowTypeStart) {\n case 'arrow_cross':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-crossStart' + ')');\n break;\n case 'arrow_point':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-pointStart' + ')');\n break;\n case 'arrow_barb':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-barbStart' + ')');\n break;\n case 'arrow_circle':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-circleStart' + ')');\n break;\n case 'aggregation':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-aggregationStart' + ')');\n break;\n case 'extension':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-extensionStart' + ')');\n break;\n case 'composition':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-compositionStart' + ')');\n break;\n case 'dependency':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-dependencyStart' + ')');\n break;\n default:\n }\n switch (edge.arrowTypeEnd) {\n case 'arrow_cross':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-crossEnd' + ')');\n break;\n case 'arrow_point':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-pointEnd' + ')');\n break;\n case 'arrow_barb':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-barbEnd' + ')');\n break;\n case 'arrow_circle':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-circleEnd' + ')');\n break;\n case 'aggregation':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-aggregationEnd' + ')');\n break;\n case 'extension':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-extensionEnd' + ')');\n break;\n case 'composition':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-compositionEnd' + ')');\n break;\n case 'dependency':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-dependencyEnd' + ')');\n break;\n default:\n }\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n};\n","import dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport insertMarkers from './markers';\nimport { updateNodeBounds } from './shapes/util';\nimport {\n clear as clearGraphlib,\n clusterDb,\n adjustClustersAndEdges,\n findNonClusterChild,\n sortNodesByHierarchy,\n} from './mermaid-graphlib';\nimport { insertNode, positionNode, clear as clearNodes, setNodeElem } from './nodes';\nimport { insertCluster, clear as clearClusters } from './clusters';\nimport { insertEdgeLabel, positionEdgeLabel, insertEdge, clear as clearEdges } from './edges';\nimport { log } from '../logger';\n\nconst recursiveRender = (_elem, graph, diagramtype, parentCluster) => {\n log.info('Graph in recursive render: XXX', graphlib.json.write(graph), parentCluster);\n const dir = graph.graph().rankdir;\n log.trace('Dir in recursive render - dir:', dir);\n\n const elem = _elem.insert('g').attr('class', 'root'); // eslint-disable-line\n if (!graph.nodes()) {\n log.info('No nodes found for', graph);\n } else {\n log.info('Recursive render XXX', graph.nodes());\n }\n if (graph.edges().length > 0) {\n log.trace('Recursive edges', graph.edge(graph.edges()[0]));\n }\n const clusters = elem.insert('g').attr('class', 'clusters'); // eslint-disable-line\n const edgePaths = elem.insert('g').attr('class', 'edgePaths');\n const edgeLabels = elem.insert('g').attr('class', 'edgeLabels');\n const nodes = elem.insert('g').attr('class', 'nodes');\n\n // Insert nodes, this will insert them into the dom and each node will get a size. The size is updated\n // to the abstract node and is later used by dagre for the layout\n graph.nodes().forEach(function (v) {\n const node = graph.node(v);\n if (typeof parentCluster !== 'undefined') {\n const data = JSON.parse(JSON.stringify(parentCluster.clusterData));\n // data.clusterPositioning = true;\n log.info('Setting data for cluster XXX (', v, ') ', data, parentCluster);\n graph.setNode(parentCluster.id, data);\n if (!graph.parent(v)) {\n log.trace('Setting parent', v, parentCluster.id);\n graph.setParent(v, parentCluster.id, data);\n }\n }\n log.info('(Insert) Node XXX' + v + ': ' + JSON.stringify(graph.node(v)));\n if (node && node.clusterNode) {\n // const children = graph.children(v);\n log.info('Cluster identified', v, node.width, graph.node(v));\n const o = recursiveRender(nodes, node.graph, diagramtype, graph.node(v));\n const newEl = o.elem;\n updateNodeBounds(node, newEl);\n node.diff = o.diff || 0;\n log.info('Node bounds (abc123)', v, node, node.width, node.x, node.y);\n setNodeElem(newEl, node);\n\n log.warn('Recursive render complete ', newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n // This is a cluster but not to be rendered recusively\n // Render as before\n log.info('Cluster - the non recursive path XXX', v, node.id, node, graph);\n log.info(findNonClusterChild(node.id, graph));\n clusterDb[node.id] = { id: findNonClusterChild(node.id, graph), node };\n // insertCluster(clusters, graph.node(v));\n } else {\n log.info('Node - the non recursive path', v, node.id, node);\n insertNode(nodes, graph.node(v), dir);\n }\n }\n });\n\n // Insert labels, this will insert them into the dom so that the width can be calculated\n // Also figure out which edges point to/from clusters and adjust them accordingly\n // Edges from/to clusters really points to the first child in the cluster.\n // TODO: pick optimal child in the cluster to us as link anchor\n graph.edges().forEach(function (e) {\n const edge = graph.edge(e.v, e.w, e.name);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ', e, ' ', JSON.stringify(graph.edge(e)));\n\n // Check if link is either from or to a cluster\n log.info('Fix', clusterDb, 'ids:', e.v, e.w, 'Translateing: ', clusterDb[e.v], clusterDb[e.w]);\n insertEdgeLabel(edgeLabels, edge);\n });\n\n graph.edges().forEach(function (e) {\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n });\n log.info('#############################################');\n log.info('### Layout ###');\n log.info('#############################################');\n log.info(graph);\n dagre.layout(graph);\n log.info('Graph after layout:', graphlib.json.write(graph));\n // Move the nodes to the correct place\n let diff = 0;\n sortNodesByHierarchy(graph).forEach(function (v) {\n const node = graph.node(v);\n log.info('Position ' + v + ': ' + JSON.stringify(graph.node(v)));\n log.info(\n 'Position ' + v + ': (' + node.x,\n ',' + node.y,\n ') width: ',\n node.width,\n ' height: ',\n node.height\n );\n if (node && node.clusterNode) {\n // clusterDb[node.id].node = node;\n\n positionNode(node);\n } else {\n // Non cluster node\n if (graph.children(v).length > 0) {\n // A cluster in the non-recurive way\n // positionCluster(node);\n insertCluster(clusters, node);\n clusterDb[node.id].node = node;\n } else {\n positionNode(node);\n }\n }\n });\n\n // Move the edge labels to the correct place after layout\n graph.edges().forEach(function (e) {\n const edge = graph.edge(e);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(edge), edge);\n\n const paths = insertEdge(edgePaths, e, edge, clusterDb, diagramtype, graph);\n positionEdgeLabel(edge, paths);\n });\n\n graph.nodes().forEach(function (v) {\n const n = graph.node(v);\n log.info(v, n.type, n.diff);\n if (n.type === 'group') {\n diff = n.diff;\n }\n });\n return { elem, diff };\n};\n\nexport const render = (elem, graph, markers, diagramtype, id) => {\n insertMarkers(elem, markers, diagramtype, id);\n clearNodes();\n clearEdges();\n clearClusters();\n clearGraphlib();\n\n log.warn('Graph at first:', graphlib.json.write(graph));\n adjustClustersAndEdges(graph);\n log.warn('Graph after:', graphlib.json.write(graph));\n // log.warn('Graph ever after:', graphlib.json.write(graph.node('A').graph));\n recursiveRender(elem, graph, diagramtype);\n};\n\n// const shapeDefinitions = {};\n// export const addShape = ({ shapeType: fun }) => {\n// shapeDefinitions[shapeType] = fun;\n// };\n\n// const arrowDefinitions = {};\n// export const addArrow = ({ arrowType: fun }) => {\n// arrowDefinitions[arrowType] = fun;\n// };\n","/*\n * Borrowed with love from from dagrge-d3. Many thanks to cpettitt!\n */\n\nimport node from './intersect-node.js';\nimport circle from './intersect-circle.js';\nimport ellipse from './intersect-ellipse.js';\nimport polygon from './intersect-polygon.js';\nimport rect from './intersect-rect.js';\n\nexport default {\n node,\n circle,\n ellipse,\n polygon,\n rect,\n};\n","import intersectEllipse from './intersect-ellipse';\n\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n\nexport default intersectCircle;\n","function intersectEllipse(node, rx, ry, point) {\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs((rx * ry * px) / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs((rx * ry * py) / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return { x: cx + dx, y: cy + dy };\n}\n\nexport default intersectEllipse;\n","/*\n * Returns the point at which two lines, p and q, intersect or returns\n * undefined if they do not intersect.\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n\n // Compute r3 and r4.\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n\n // Compute r1 and r2\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n return { x: x, y: y };\n}\n\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n\nexport default intersectLine;\n","module.exports = intersectNode;\n\nfunction intersectNode(node, point) {\n // console.info('Intersect Node');\n return node.intersect(point);\n}\n","/* eslint \"no-console\": off */\n\nimport intersectLine from './intersect-line';\n\nexport default intersectPolygon;\n\n/*\n * Returns the point ({x, y}) at which the point argument intersects with the\n * node argument assuming that it has the shape specified by polygon.\n */\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n\n var intersections = [];\n\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === 'function') {\n polyPoints.forEach(function (entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersectLine(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n // console.log('NO INTERSECTION FOUND, RETURN NODE CENTER', node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function (p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n","const intersectRect = (node, point) => {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n};\n\nexport default intersectRect;\n","/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\n\nimport { log } from '../logger';\n\n// Only add the number of markers that the diagram needs\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n};\n\nconst extension = (elem, type, id) => {\n log.trace('Making markers for ', id);\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-extensionStart')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-extensionEnd')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n};\n\nconst composition = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-compositionStart')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-compositionEnd')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst aggregation = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-aggregationStart')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-aggregationEnd')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst dependency = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-dependencyStart')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-dependencyEnd')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\nconst point = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-pointEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n elem\n .append('marker')\n .attr('id', type + '-pointStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 0)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 5 L 10 10 L 10 0 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst circle = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-circleEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 11)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', type + '-circleStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', -1)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst cross = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-crossEnd')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', 12)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', type + '-crossStart')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', -1)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n};\nconst barb = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-barbEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 14)\n .attr('markerUnits', 'strokeWidth')\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\n\n// TODO rename the class diagram markers to something shape descriptive and semanitc free\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n point,\n circle,\n cross,\n barb,\n};\nexport default insertMarkers;\n","/**\n * Decorates with functions required by mermaids dagre-wrapper.\n */\nimport { log } from '../logger';\nimport graphlib from 'graphlib';\n\nexport let clusterDb = {};\nlet decendants = {};\nlet parents = {};\n\nexport const clear = () => {\n decendants = {};\n parents = {};\n clusterDb = {};\n};\n\nconst isDecendant = (id, ancenstorId) => {\n // if (id === ancenstorId) return true;\n\n log.trace(\n 'In isDecendant',\n ancenstorId,\n ' ',\n id,\n ' = ',\n decendants[ancenstorId].indexOf(id) >= 0\n );\n if (decendants[ancenstorId].indexOf(id) >= 0) return true;\n\n return false;\n};\n\nconst edgeInCluster = (edge, clusterId) => {\n log.info('Decendants of ', clusterId, ' is ', decendants[clusterId]);\n log.info('Edge is ', edge);\n // Edges to/from the cluster is not in the cluster, they are in the parent\n if (edge.v === clusterId) return false;\n if (edge.w === clusterId) return false;\n\n if (!decendants[clusterId]) {\n log.debug('Tilt, ', clusterId, ',not in decendants');\n return false;\n }\n log.info('Here ');\n\n if (decendants[clusterId].indexOf(edge.v) >= 0) return true;\n if (isDecendant(edge.v, clusterId)) return true;\n if (isDecendant(edge.w, clusterId)) return true;\n if (decendants[clusterId].indexOf(edge.w) >= 0) return true;\n\n return false;\n};\n\nconst copy = (clusterId, graph, newGraph, rootId) => {\n log.warn(\n 'Copying children of ',\n clusterId,\n 'root',\n rootId,\n 'data',\n graph.node(clusterId),\n rootId\n );\n const nodes = graph.children(clusterId) || [];\n\n // Include cluster node if it is not the root\n if (clusterId !== rootId) {\n nodes.push(clusterId);\n }\n\n log.warn('Copying (nodes) clusterId', clusterId, 'nodes', nodes);\n\n nodes.forEach((node) => {\n if (graph.children(node).length > 0) {\n copy(node, graph, newGraph, rootId);\n } else {\n const data = graph.node(node);\n log.info('cp ', node, ' to ', rootId, ' with parent ', clusterId); //,node, data, ' parent is ', clusterId);\n newGraph.setNode(node, data);\n if (rootId !== graph.parent(node)) {\n log.warn('Setting parent', node, graph.parent(node));\n newGraph.setParent(node, graph.parent(node));\n }\n\n if (clusterId !== rootId && node !== clusterId) {\n log.debug('Setting parent', node, clusterId);\n newGraph.setParent(node, clusterId);\n } else {\n log.info('In copy ', clusterId, 'root', rootId, 'data', graph.node(clusterId), rootId);\n log.debug(\n 'Not Setting parent for node=',\n node,\n 'cluster!==rootId',\n clusterId !== rootId,\n 'node!==clusterId',\n node !== clusterId\n );\n }\n const edges = graph.edges(node);\n log.debug('Copying Edges', edges);\n edges.forEach((edge) => {\n log.info('Edge', edge);\n const data = graph.edge(edge.v, edge.w, edge.name);\n log.info('Edge data', data, rootId);\n try {\n // Do not copy edges in and out of the root cluster, they belong to the parent graph\n if (edgeInCluster(edge, rootId)) {\n log.info('Copying as ', edge.v, edge.w, data, edge.name);\n newGraph.setEdge(edge.v, edge.w, data, edge.name);\n log.info('newGraph edges ', newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\n } else {\n log.info(\n 'Skipping copy of edge ',\n edge.v,\n '-->',\n edge.w,\n ' rootId: ',\n rootId,\n ' clusterId:',\n clusterId\n );\n }\n } catch (e) {\n log.error(e);\n }\n });\n }\n log.debug('Removing node', node);\n graph.removeNode(node);\n });\n};\nexport const extractDecendants = (id, graph) => {\n // log.debug('Extracting ', id);\n const children = graph.children(id);\n let res = [].concat(children);\n\n for (let i = 0; i < children.length; i++) {\n parents[children[i]] = id;\n res = res.concat(extractDecendants(children[i], graph));\n }\n\n return res;\n};\n\n/**\n * Validates the graph, checking that all parent child relation points to existing nodes and that\n * edges between nodes also ia correct. When not correct the function logs the discrepancies.\n * @param {graphlib graph} g\n */\nexport const validate = (graph) => {\n const edges = graph.edges();\n log.trace('Edges: ', edges);\n for (let i = 0; i < edges.length; i++) {\n if (graph.children(edges[i].v).length > 0) {\n log.trace('The node ', edges[i].v, ' is part of and edge even though it has children');\n return false;\n }\n if (graph.children(edges[i].w).length > 0) {\n log.trace('The node ', edges[i].w, ' is part of and edge even though it has children');\n return false;\n }\n }\n return true;\n};\n\n/**\n * Finds a child that is not a cluster. When faking a edge between a node and a cluster.\n * @param {Finds a } id\n * @param {*} graph\n */\nexport const findNonClusterChild = (id, graph) => {\n // const node = graph.node(id);\n log.trace('Searching', id);\n // const children = graph.children(id).reverse();\n const children = graph.children(id); //.reverse();\n log.trace('Searching children of id ', id, children);\n if (children.length < 1) {\n log.trace('This is a valid node', id);\n return id;\n }\n for (let i = 0; i < children.length; i++) {\n const _id = findNonClusterChild(children[i], graph);\n if (_id) {\n log.trace('Found replacement for', id, ' => ', _id);\n return _id;\n }\n }\n};\n\nconst getAnchorId = (id) => {\n if (!clusterDb[id]) {\n return id;\n }\n // If the cluster has no external connections\n if (!clusterDb[id].externalConnections) {\n return id;\n }\n\n // Return the replacement node\n if (clusterDb[id]) {\n return clusterDb[id].id;\n }\n return id;\n};\n\nexport const adjustClustersAndEdges = (graph, depth) => {\n if (!graph || depth > 10) {\n log.debug('Opting out, no graph ');\n return;\n } else {\n log.debug('Opting in, graph ');\n }\n // Go through the nodes and for each cluster found, save a replacment node, this can be used when\n // faking a link to a cluster\n graph.nodes().forEach(function (id) {\n const children = graph.children(id);\n if (children.length > 0) {\n log.warn(\n 'Cluster identified',\n id,\n ' Replacement id in edges: ',\n findNonClusterChild(id, graph)\n );\n decendants[id] = extractDecendants(id, graph);\n clusterDb[id] = { id: findNonClusterChild(id, graph), clusterData: graph.node(id) };\n }\n });\n\n // Check incoming and outgoing edges for each cluster\n graph.nodes().forEach(function (id) {\n const children = graph.children(id);\n const edges = graph.edges();\n if (children.length > 0) {\n log.debug('Cluster identified', id, decendants);\n edges.forEach((edge) => {\n // log.debug('Edge, decendants: ', edge, decendants[id]);\n\n // Check if any edge leaves the cluster (not the actual cluster, thats a link from the box)\n if (edge.v !== id && edge.w !== id) {\n // Any edge where either the one of the nodes is decending to the cluster but not the other\n // if (decendants[id].indexOf(edge.v) < 0 && decendants[id].indexOf(edge.w) < 0) {\n\n const d1 = isDecendant(edge.v, id);\n const d2 = isDecendant(edge.w, id);\n\n // d1 xor d2 - if either d1 is true and d2 is false or the other way around\n if (d1 ^ d2) {\n log.warn('Edge: ', edge, ' leaves cluster ', id);\n log.warn('Decendants of XXX ', id, ': ', decendants[id]);\n clusterDb[id].externalConnections = true;\n }\n }\n });\n } else {\n log.debug('Not a cluster ', id, decendants);\n }\n });\n\n // For clusters with incoming and/or outgoing edges translate those edges to a real node\n // in the cluster inorder to fake the edge\n graph.edges().forEach(function (e) {\n const edge = graph.edge(e);\n log.warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\n\n let v = e.v;\n let w = e.w;\n // Check if link is either from or to a cluster\n log.warn(\n 'Fix XXX',\n clusterDb,\n 'ids:',\n e.v,\n e.w,\n 'Translateing: ',\n clusterDb[e.v],\n ' --- ',\n clusterDb[e.w]\n );\n if (clusterDb[e.v] || clusterDb[e.w]) {\n log.warn('Fixing and trixing - removing XXX', e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n if (v !== e.v) edge.fromCluster = e.v;\n if (w !== e.w) edge.toCluster = e.w;\n log.warn('Fix Replacing with XXX', v, w, e.name);\n graph.setEdge(v, w, edge, e.name);\n }\n });\n log.warn('Adjusted Graph', graphlib.json.write(graph));\n extractor(graph, 0);\n\n log.trace(clusterDb);\n\n // Remove references to extracted cluster\n // graph.edges().forEach(edge => {\n // if (isDecendant(edge.v, clusterId) || isDecendant(edge.w, clusterId)) {\n // graph.removeEdge(edge);\n // }\n // });\n};\n\nexport const extractor = (graph, depth) => {\n log.warn('extractor - ', depth, graphlib.json.write(graph), graph.children('D'));\n if (depth > 10) {\n log.error('Bailing out');\n return;\n }\n // For clusters without incoming and/or outgoing edges, create a new cluster-node\n // containing the nodes and edges in the custer in a new graph\n // for (let i = 0;)\n let nodes = graph.nodes();\n let hasChildren = false;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const children = graph.children(node);\n hasChildren = hasChildren || children.length > 0;\n }\n\n if (!hasChildren) {\n log.debug('Done, no node has children', graph.nodes());\n return;\n }\n // const clusters = Object.keys(clusterDb);\n // clusters.forEach(clusterId => {\n log.debug('Nodes = ', nodes, depth);\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n log.debug(\n 'Extracting node',\n node,\n clusterDb,\n clusterDb[node] && !clusterDb[node].externalConnections,\n !graph.parent(node),\n graph.node(node),\n graph.children('D'),\n ' Depth ',\n depth\n );\n // Note that the node might have been removed after the Object.keys call so better check\n // that it still is in the game\n if (!clusterDb[node]) {\n // Skip if the node is not a cluster\n log.debug('Not a cluster', node, depth);\n // break;\n } else if (\n !clusterDb[node].externalConnections &&\n // !graph.parent(node) &&\n graph.children(node) &&\n graph.children(node).length > 0\n ) {\n log.warn(\n 'Cluster without external connections, without a parent and with children',\n node,\n depth\n );\n\n const graphSettings = graph.graph();\n let dir = graphSettings.rankdir === 'TB' ? 'LR' : 'TB';\n if (clusterDb[node]) {\n if (clusterDb[node].clusterData && clusterDb[node].clusterData.dir) {\n dir = clusterDb[node].clusterData.dir;\n log.warn('Fixing dir', clusterDb[node].clusterData.dir, dir);\n }\n }\n\n const clusterGraph = new graphlib.Graph({\n multigraph: true,\n compound: true,\n })\n .setGraph({\n rankdir: dir, // Todo: set proper spacing\n nodesep: 50,\n ranksep: 50,\n marginx: 8,\n marginy: 8,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n\n log.warn('Old graph before copy', graphlib.json.write(graph));\n copy(node, graph, clusterGraph, node);\n graph.setNode(node, {\n clusterNode: true,\n id: node,\n clusterData: clusterDb[node].clusterData,\n labelText: clusterDb[node].labelText,\n graph: clusterGraph,\n });\n log.warn('New graph after copy node: (', node, ')', graphlib.json.write(clusterGraph));\n log.debug('Old graph after copy', graphlib.json.write(graph));\n } else {\n log.warn(\n 'Cluster ** ',\n node,\n ' **not meeting the criteria !externalConnections:',\n !clusterDb[node].externalConnections,\n ' no parent: ',\n !graph.parent(node),\n ' children ',\n graph.children(node) && graph.children(node).length > 0,\n graph.children('D'),\n depth\n );\n log.debug(clusterDb);\n }\n }\n\n nodes = graph.nodes();\n log.warn('New list of nodes', nodes);\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const data = graph.node(node);\n log.warn(' Now next level', node, data);\n if (data.clusterNode) {\n extractor(data.graph, depth + 1);\n }\n }\n};\n\nconst sorter = (graph, nodes) => {\n if (nodes.length === 0) return [];\n let result = Object.assign(nodes);\n nodes.forEach((node) => {\n const children = graph.children(node);\n const sorted = sorter(graph, children);\n result = result.concat(sorted);\n });\n\n return result;\n};\n\nexport const sortNodesByHierarchy = (graph) => sorter(graph, graph.children());\n","import { select } from 'd3';\nimport { log } from '../logger'; // eslint-disable-line\nimport { labelHelper, updateNodeBounds, insertPolygonShape } from './shapes/util';\nimport { getConfig } from '../config';\nimport intersect from './intersect/index.js';\nimport createLabel from './createLabel';\nimport note from './shapes/note';\nimport { parseMember } from '../diagrams/class/svgDraw';\nimport { evaluate } from '../diagrams/common/common';\n\nconst question = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 },\n ];\n\n log.info('Question main (Circle)');\n\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr('style', node.style);\n updateNodeBounds(node, questionElem);\n\n node.intersect = function (point) {\n log.warn('Intersect called');\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst choice = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 },\n ];\n\n const choice = shapeSvg.insert('polygon', ':first-child').attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n );\n // center the circle around its coordinate\n choice.attr('class', 'state-start').attr('r', 7).attr('width', 28).attr('height', 28);\n node.width = 28;\n node.height = 28;\n\n node.intersect = function (point) {\n return intersect.circle(node, 14, point);\n };\n\n return shapeSvg;\n};\n\nconst hexagon = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 },\n ];\n\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr('style', node.style);\n updateNodeBounds(node, hex);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst rect_left_inv_arrow = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n\n node.width = w + h;\n node.height = h;\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst lean_right = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst lean_left = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (2 * h) / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - (2 * h) / 6, y: -h },\n { x: -h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst trapezoid = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w + (2 * h) / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst inv_trapezoid = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: (-2 * h) / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst rect_right_inv_arrow = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst cylinder = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n\n const shape =\n 'M 0,' +\n ry +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n -w +\n ' 0 l 0,' +\n h +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 l 0,' +\n -h;\n\n const el = shapeSvg\n .attr('label-offset-y', ry)\n .insert('path', ':first-child')\n .attr('style', node.style)\n .attr('d', shape)\n .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\n\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n const pos = intersect.rect(node, point);\n const x = pos.x - node.x;\n\n if (\n rx != 0 &&\n (Math.abs(x) < node.width / 2 ||\n (Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))\n ) {\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\n // solve for y to get adjustion value for pos.y\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y != 0) y = Math.sqrt(y);\n y = ry - y;\n if (point.y - node.y > 0) y = -y;\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n};\n\nconst rect = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\n\n log.trace('Classes = ', node.classes);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('class', 'basic label-container')\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst rectWithTitle = (parent, node) => {\n // const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes);\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n // const innerRect = shapeSvg.insert('rect');\n const innerLine = shapeSvg.insert('line');\n\n const label = shapeSvg.insert('g').attr('class', 'label');\n\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n // const text2 = typeof text2prim === 'object' ? text2prim[0] : text2prim;\n\n let title = '';\n if (typeof text2 === 'object') {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info('Label text abc79', title, text2, typeof text2 === 'object');\n\n const text = label.node().appendChild(createLabel(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n log.info('Text 2', text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label\n .node()\n .appendChild(\n createLabel(textRows.join ? textRows.join('
') : textRows, node.labelStyle, true, true)\n );\n\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n // bbox = label.getBBox();\n // log.info(descr);\n const halfPadding = node.padding / 2;\n select(descr).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n ', ' +\n (titleBox.height + halfPadding + 5) +\n ')'\n );\n select(text).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n ', ' +\n 0 +\n ')'\n );\n // Get the size of the label\n\n // Bounding box for title and text\n bbox = label.node().getBBox();\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n );\n\n rect\n .attr('class', 'outer title-state')\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n innerLine\n .attr('class', 'divider')\n .attr('x1', -bbox.width / 2 - halfPadding)\n .attr('x2', bbox.width / 2 + halfPadding)\n .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst stadium = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n\n // add the rect\n const rect = shapeSvg\n .insert('rect', ':first-child')\n .attr('style', node.style)\n .attr('rx', h / 2)\n .attr('ry', h / 2)\n .attr('x', -w / 2)\n .attr('y', -h / 2)\n .attr('width', w)\n .attr('height', h);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst circle = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, undefined, true);\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n log.info('Circle main');\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n log.info('Circle intersect', node, bbox.width / 2 + halfPadding, point);\n return intersect.circle(node, bbox.width / 2 + halfPadding, point);\n };\n\n return shapeSvg;\n};\n\nconst subroutine = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst start = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst forkJoin = (parent, node, dir) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n let width = 70;\n let height = 10;\n\n if (dir === 'LR') {\n width = 10;\n height = 70;\n }\n\n const shape = shapeSvg\n .append('rect')\n .attr('x', (-1 * width) / 2)\n .attr('y', (-1 * height) / 2)\n .attr('width', width)\n .attr('height', height)\n .attr('class', 'fork-join');\n\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst end = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n const innerCircle = shapeSvg.insert('circle', ':first-child');\n const circle = shapeSvg.insert('circle', ':first-child');\n\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n\n innerCircle.attr('class', 'state-end').attr('r', 5).attr('width', 10).attr('height', 10);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst class_box = (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n const topLine = shapeSvg.insert('line');\n const bottomLine = shapeSvg.insert('line');\n let maxWidth = 0;\n let maxHeight = rowPadding;\n\n const labelContainer = shapeSvg.insert('g').attr('class', 'label');\n let verticalPos = 0;\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\n\n // 1. Create the labels\n const interfaceLabelText = node.classData.annotations[0]\n ? '«' + node.classData.annotations[0] + '»'\n : '';\n const interfaceLabel = labelContainer\n .node()\n .appendChild(createLabel(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = select(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr('width', interfaceBBox.width);\n dv.attr('height', interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n\n let classTitleString = node.classData.id;\n\n if (node.classData.type !== undefined && node.classData.type !== '') {\n if (getConfig().flowchart.htmlLabels) {\n classTitleString += '<' + node.classData.type + '>';\n } else {\n classTitleString += '<' + node.classData.type + '>';\n }\n }\n const classTitleLabel = labelContainer\n .node()\n .appendChild(createLabel(classTitleString, node.labelStyle, true, true));\n select(classTitleLabel).attr('class', 'classTitle');\n let classTitleBBox = classTitleLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = select(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr('width', classTitleBBox.width);\n dv.attr('height', classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach((str) => {\n const parsedInfo = parseMember(str);\n let parsedText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n parsedText = parsedText.replace(//g, '>');\n }\n const lbl = labelContainer\n .node()\n .appendChild(\n createLabel(\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n\n maxHeight += lineHeight;\n\n const classMethods = [];\n node.classData.methods.forEach((str) => {\n const parsedInfo = parseMember(str);\n let displayText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n displayText = displayText.replace(//g, '>');\n }\n const lbl = labelContainer\n .node()\n .appendChild(\n createLabel(\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n\n classMethods.push(lbl);\n });\n\n maxHeight += lineHeight;\n\n // 2. Position the labels\n\n // position the interface label\n if (hasInterface) {\n let diffX = (maxWidth - interfaceBBox.width) / 2;\n select(interfaceLabel).attr(\n 'transform',\n 'translate( ' + ((-1 * maxWidth) / 2 + diffX) + ', ' + (-1 * maxHeight) / 2 + ')'\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n // Positin the class title label\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select(classTitleLabel).attr(\n 'transform',\n 'translate( ' +\n ((-1 * maxWidth) / 2 + diffX) +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos) +\n ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n\n topLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classAttributes.forEach((lbl) => {\n select(lbl).attr(\n 'transform',\n 'translate( ' +\n -maxWidth / 2 +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos + lineHeight / 2) +\n ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n });\n\n verticalPos += lineHeight;\n bottomLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classMethods.forEach((lbl) => {\n select(lbl).attr(\n 'transform',\n 'translate( ' + -maxWidth / 2 + ', ' + ((-1 * maxHeight) / 2 + verticalPos) + ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n });\n //\n // let bbox;\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\n // const div = interfaceLabel.children[0];\n // const dv = select(interfaceLabel);\n // bbox = div.getBoundingClientRect();\n // dv.attr('width', bbox.width);\n // dv.attr('height', bbox.height);\n // }\n // bbox = labelContainer.getBBox();\n\n // log.info('Text 2', text2);\n // const textRows = text2.slice(1, text2.length);\n // let titleBox = text.getBBox();\n // const descr = label\n // .node()\n // .appendChild(createLabel(textRows.join('
'), node.labelStyle, true, true));\n\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\n // const div = descr.children[0];\n // const dv = select(descr);\n // bbox = div.getBoundingClientRect();\n // dv.attr('width', bbox.width);\n // dv.attr('height', bbox.height);\n // }\n // // bbox = label.getBBox();\n // // log.info(descr);\n // select(descr).attr(\n // 'transform',\n // 'translate( ' +\n // // (titleBox.width - bbox.width) / 2 +\n // (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n // ', ' +\n // (titleBox.height + halfPadding + 5) +\n // ')'\n // );\n // select(text).attr(\n // 'transform',\n // 'translate( ' +\n // // (titleBox.width - bbox.width) / 2 +\n // (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n // ', ' +\n // 0 +\n // ')'\n // );\n // // Get the size of the label\n\n // // Bounding box for title and text\n // bbox = label.node().getBBox();\n\n // // Center the label\n // label.attr(\n // 'transform',\n // 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n // );\n\n rect\n .attr('class', 'outer title-state')\n .attr('x', -maxWidth / 2 - halfPadding)\n .attr('y', -(maxHeight / 2) - halfPadding)\n .attr('width', maxWidth + node.padding)\n .attr('height', maxHeight + node.padding);\n\n // innerLine\n // .attr('class', 'divider')\n // .attr('x1', -bbox.width / 2 - halfPadding)\n // .attr('x2', bbox.width / 2 + halfPadding)\n // .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n // .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = {\n question,\n rect,\n rectWithTitle,\n choice,\n circle,\n stadium,\n hexagon,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box,\n};\n\nlet nodeElems = {};\n\nexport const insertNode = (elem, node, dir) => {\n let newEl;\n let el;\n\n // Add link when appropriate\n if (node.link) {\n newEl = elem\n .insert('svg:a')\n .attr('xlink:href', node.link)\n .attr('target', node.linkTarget || '_blank');\n el = shapes[node.shape](newEl, node, dir);\n } else {\n el = shapes[node.shape](elem, node, dir);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr('title', node.tooltip);\n }\n if (node.class) {\n el.attr('class', 'node default ' + node.class);\n }\n\n nodeElems[node.id] = newEl;\n\n if (node.haveCallback) {\n nodeElems[node.id].attr('class', nodeElems[node.id].attr('class') + ' clickable');\n }\n};\nexport const setNodeElem = (elem, node) => {\n nodeElems[node.id] = elem;\n};\nexport const clear = () => {\n nodeElems = {};\n};\n\nexport const positionNode = (node) => {\n const el = nodeElems[node.id];\n log.trace(\n 'Transforming node',\n node.diff,\n node,\n 'translate(' + (node.x - node.width / 2 - 5) + ', ' + node.width / 2 + ')'\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n 'transform',\n 'translate(' +\n (node.x + diff - node.width / 2) +\n ', ' +\n (node.y - node.height / 2 - padding) +\n ')'\n );\n } else {\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n }\n return diff;\n};\n","import { updateNodeBounds, labelHelper } from './util';\nimport { log } from '../../logger'; // eslint-disable-line\nimport intersect from '../intersect/index.js';\n\nconst note = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\n\n log.info('Classes = ', node.classes);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nexport default note;\n","import createLabel from '../createLabel';\nimport { getConfig } from '../../config';\nimport { decodeEntities } from '../../mermaidAPI';\nimport { select } from 'd3';\nimport { evaluate, sanitizeText } from '../../diagrams/common/common';\nexport const labelHelper = (parent, node, _classes, isNode) => {\n let classes;\n if (!_classes) {\n classes = 'node default';\n } else {\n classes = _classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'label').attr('style', node.labelStyle);\n\n const text = label\n .node()\n .appendChild(\n createLabel(\n sanitizeText(decodeEntities(node.labelText), getConfig()),\n node.labelStyle,\n false,\n isNode\n )\n );\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const halfPadding = node.padding / 2;\n\n // Center the label\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n\n return { shapeSvg, bbox, halfPadding, label };\n};\n\nexport const updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\n\nexport function insertPolygonShape(parent, w, h, points) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('class', 'label-container')\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n","import theme from './themes';\n/**\n * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click here](8.6.0_docs.md)].**\n *\n * ## **What follows are config instructions for older versions**\n *\n * These are the default options which can be overridden with the initialization call like so:\n *\n * **Example 1:**\n *\n * mermaid.initialize({\n * flowchart:{\n * htmlLabels: false\n * }\n * });\n *\n *\n * **Example 2:**\n *\n * <script>\n * var config = {\n * startOnLoad:true,\n * flowchart:{\n * useMaxWidth:true,\n * htmlLabels:true,\n * curve:'cardinal',\n * },\n *\n * securityLevel:'loose',\n * };\n * mermaid.initialize(config);\n * </script>\n *\n * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults). A description of each option follows below.\n *\n * @name Configuration\n */\nconst config = {\n /**\n * theme , the CSS style sheet\n *\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | theme | Built in Themes | string | Optional | 'default', 'forest', 'dark', 'neutral', 'null'|\n *\n * **Notes:** To disable any pre-defined mermaid theme, use \"null\".\n *\n *\n * \"theme\": \"forest\",\n * \"themeCSS\": \".node rect { fill: red; }\"\n *\n */\n theme: 'default',\n themeVariables: theme['default'].getThemeVariables(),\n themeCSS: undefined,\n /* **maxTextSize** - The maximum allowed size of the users text diamgram */\n maxTextSize: 50000,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | fontFamily | specifies the font to be used in the rendered diagrams| string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:**\n * Default value: '\"trebuchet ms\", verdana, arial, sans-serif;'.\n */\n fontFamily: '\"trebuchet ms\", verdana, arial, sans-serif;',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | logLevel |This option decides the amount of logging to be used.| string \\| number | Required | 1, 2, 3, 4, 5 |\n *\n *\n * **Notes:**\n *\n * - debug: 1\n * - info: 2\n * - warn: 3\n * - error: 4\n * - fatal: 5 (default)\n */\n logLevel: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | securitylevel | Level of trust for parsed diagram|string | Required | 'strict', 'loose', 'antiscript' |\n *\n * **Notes**:\n *\n * - **strict**: (**default**) tags in text are encoded, click functionality is disabled\n * - **loose**: tags in text are allowed, click functionality is enabled\n * - **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled\n */\n securityLevel: 'strict',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | startOnLoad | Dictates whether mermaid starts on Page load | boolean | Required | true, false |\n *\n * **Notes:** Default value: true\n */\n startOnLoad: true,\n\n /**\n * | Parameter | Description |Type | Required |Values|\n * | --- | --- | --- | --- | --- |\n * | arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | boolean | Required | true, false |\n *\n *\n * **Notes**:\n *\n * This matters if you are using base tag settings.\n *\n * Default value: false\n */\n arrowMarkerAbsolute: false,\n\n /**\n * This option controls which currentConfig keys are considered _secure_ and can only be changed via\n * call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to\n * the `secure` keys in the current currentConfig. This prevents malicious graph directives from\n * overriding a site's default security.\n\n * **Notes**:\n *\n * Default value: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize']\n */\n secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],\n\n /**\n * This option controls if the generated ids of nodes in the SVG are generated randomly or based on a seed.\n * If set to false, the IDs are generated based on the current date and thus are not deterministic. This is the default behaviour.\n *\n * **Notes**:\n *\n * This matters if your files are checked into sourcecontrol e.g. git and should not change unless content is changed.\n *\n * Default value: false\n */\n deterministicIds: false,\n\n /**\n * This option is the optional seed for deterministic ids. if set to undefined but deterministicIds is true, a simple number iterator is used.\n * You can set this attribute to base the seed on a static string.\n */\n deterministicIDSeed: undefined,\n\n /**\n * The object containing configurations specific for flowcharts\n */\n flowchart: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels\n *\n * Default value: 8\n */\n diagramPadding: 8,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | boolean| Required | true, false |\n *\n * **Notes:** Default value: true.\n */\n htmlLabels: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | nodeSpacing | Defines the spacing between nodes on the same level | Integer | Required | Any positive Number |\n *\n * **Notes:**\n *\n * Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the vertical spacing for LR as well as RL graphs.**\n *\n * Default value: 50\n */\n nodeSpacing: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | rankSpacing | Defines the spacing between nodes on different levels | Integer | Required | Any Positive Number |\n *\n * **Notes**:\n *\n * pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal spacing for LR as well as RL graphs.\n *\n * Default value 50\n */\n rankSpacing: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | curve | Defines how mermaid renders curves for flowcharts. | string | Required | 'basis', 'linear', 'cardinal'|\n *\n * **Notes:**\n *\n * Default Value: 'basis'\n */\n curve: 'basis',\n // Only used in new experimental rendering\n // represents the padding between the labels and the shape\n padding: 15,\n\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes:**\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * * dagre-d3\n * * dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-d3',\n },\n\n /**\n * The object containing configurations specific for sequence diagrams\n */\n sequence: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | activationWidth | Width of the activation rect | Integer | Required | Any Positive Value |\n *\n *\n * **Notes:** Default value :10\n */\n activationWidth: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n *| Parameter | Description | Type | Required | Values |\n *| --- | --- | --- | --- | --- |\n *| diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 50\n */\n actorMargin: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 150\n */\n width: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value|\n *\n * **Notes:**\n * Default value: 65\n */\n height: 65,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 5\n */\n boxTextMargin: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | noteMargin | margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 10\n */\n noteMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | messageMargin | Space between messages | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 35\n */\n messageMargin: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | messageAlign | Multiline message alignment | string | Required | 'left', 'center', 'right' |\n *\n * **Notes:**\n * Default value: 'center'\n */\n messageAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | mirrorActors | Mirror actors under diagram | boolean | Required | true, false |\n *\n * **Notes:**\n * Default value: true\n */\n mirrorActors: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| forceMenus | forces actor popup menus to always be visible (to support E2E testing). | Boolean| Required | True, False |\n *\n * **Notes:**\n *\n * Default value: false.\n */\n forceMenus: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n * When this flag is set to true, the height and width is set to 100% and is then scaling with the\n * available space. If set to false, the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | rightAngles | display curve arrows as right angles | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a curve\n *\n * Default value: false\n */\n rightAngles: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | showSequenceNumbers | This will show the node numbers | boolean | Required | true, false |\n *\n * **Notes:**\n * Default value: false\n */\n showSequenceNumbers: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | actorFontSize| This sets the font size of the actor's description | Integer | Require | Any Positive Value |\n *\n ***Notes:**\n ***Default value 14**..\n */\n actorFontSize: 14,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | actorFontFamily |This sets the font family of the actor's description | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:**\n * Default value: \"'Open-Sans\", \"sans-serif\"'\n */\n actorFontFamily: '\"Open-Sans\", \"sans-serif\"',\n\n /**\n * This sets the font weight of the actor's description\n *\n * **Notes:**\n * Default value: 400.\n */\n actorFontWeight: 400,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | noteFontSize | This sets the font size of actor-attached notes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 14\n */\n noteFontSize: 14,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | noteFontFamily| This sets the font family of actor-attached notes. | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:**\n * Default value: ''\"trebuchet ms\", verdana, arial, sans-serif'\n */\n noteFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n\n /**\n * This sets the font weight of the note's description\n *\n * **Notes:**\n * Default value: 400\n */\n noteFontWeight: 400,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | noteAlign | This sets the text alignment of actor-attached notes | string | required | 'left', 'center', 'right'|\n *\n * **Notes:**\n * Default value: 'center'\n */\n noteAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | messageFontSize | This sets the font size of actor messages | Integer | Required | Any Positive Number |\n *\n * **Notes:**\n * Default value: 16\n */\n messageFontSize: 16,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | messageFontFamily | This sets the font family of actor messages | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:**\n * Default value: '\"trebuchet ms\", verdana, arial, sans-serif'\n */\n messageFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n\n /**\n * This sets the font weight of the message's description\n *\n * **Notes:**\n * Default value: 400.\n */\n messageFontWeight: 400,\n\n /**\n * This sets the auto-wrap state for the diagram\n *\n * **Notes:**\n * Default value: false.\n */\n wrap: false,\n\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n *\n * **Notes:**\n * Default value: 0.\n */\n wrapPadding: 10,\n\n /**\n * This sets the width of the loop-box (loop, alt, opt, par)\n *\n * **Notes:**\n * Default value: 50.\n */\n labelBoxWidth: 50,\n\n /**\n * This sets the height of the loop-box (loop, alt, opt, par)\n *\n * **Notes:**\n * Default value: 20.\n */\n labelBoxHeight: 20,\n\n messageFont: function () {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight,\n };\n },\n noteFont: function () {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight,\n };\n },\n actorFont: function () {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight,\n };\n },\n },\n\n /**\n * The object containing configurations specific for gantt diagrams\n */\n gantt: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 25\n */\n titleTopMargin: 25,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 20\n */\n barHeight: 20,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | barGap | The margin between the different activities in the gantt diagram | Integer | Optional | Any Positive Value |\n *\n * **Notes:**\n * Default value: 4\n */\n barGap: 4,\n\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 50\n */\n topPadding: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | rightPadding | The space allocated for the section name to the right of the activities | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 75\n */\n rightPadding: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | leftPadding | The space allocated for the section name to the left of the activities | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 75\n */\n leftPadding: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | gridLineStartPadding | Vertical starting position of the grid lines | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 35\n */\n gridLineStartPadding: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | fontSize | Font size | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 11\n */\n fontSize: 11,\n\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | sectionFontSize | Font size for sections| Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 11\n */\n sectionFontSize: 11,\n\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n * Default value: 4\n */\n numberSectionStyles: 4,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | axisFormat | Datetime format of the axis | 3 | Required | Date in yy-mm-dd |\n *\n * **Notes:**\n *\n * This might need adjustment to match your locale and preferences\n *\n * Default value: '%Y-%m-%d'.\n */\n axisFormat: '%Y-%m-%d',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| topAxis | See notes | Boolean | 4 | True, False |\n *\n ***Notes:** when this flag is set date labels will be added to the\ntop of the chart\n *\n ***Default value false**.\n */\n topAxis: false,\n\n useWidth: undefined,\n },\n\n /**\n * The object containing configurations specific for journey diagrams\n */\n journey: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 50\n */\n leftMargin: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 150\n */\n width: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 65\n */\n height: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 5\n */\n boxTextMargin: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | noteMargin | Margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 10\n */\n noteMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | messageMargin |Space between messages. | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Space between messages.\n *\n * Default value: 35\n */\n messageMargin: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' |\n *\n * **Notes:**\n * Default value: 'center'\n */\n messageAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a curves\n *\n * Default value: false\n */\n rightAngles: false,\n taskFontSize: 14,\n taskFontFamily: '\"Open-Sans\", \"sans-serif\"',\n taskMargin: 50,\n // width of activation box\n activationWidth: 10,\n\n // text placement as: tspan | fo | old only text as before\n textPlacement: 'fo',\n actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],\n\n sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],\n sectionColours: ['#fff'],\n },\n class: {\n arrowMarkerAbsolute: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes:**\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * * dagre-d3\n * * dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-wrapper',\n },\n git: {\n arrowMarkerAbsolute: false,\n\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n },\n state: {\n dividerMargin: 10,\n sizeUnit: 5,\n padding: 8,\n textHeight: 10,\n titleShift: -15,\n noteMargin: 10,\n forkWidth: 70,\n forkHeight: 7,\n // Used\n miniPadding: 2,\n // Font size factor, this is used to guess the width of the edges labels before rendering by dagre\n // layout. This might need updating if/when switching font\n fontSizeFactor: 5.02,\n fontSize: 24,\n labelHeight: 16,\n edgeLengthFactor: '20',\n compositTitleSize: 35,\n radius: 5,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes:**\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * * dagre-d3\n * * dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-wrapper',\n },\n\n /**\n * The object containing configurations specific for entity relationship diagrams\n */\n er: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels\n *\n * Default value: 20\n */\n diagramPadding: 20,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | layoutDirection | Directional bias for layout of entities. | string | Required | \"TB\", \"BT\", \"LR\", \"RL\" |\n *\n * **Notes:**\n *\n * 'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.\n *\n * T = top, B = bottom, L = left, and R = right.\n *\n * Default value: 'TB'\n */\n layoutDirection: 'TB',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | minEntityWidth | The minimum width of an entity box | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Expressed in pixels.\n * Default value: 100\n */\n minEntityWidth: 100,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | minEntityHeight| The minimum height of an entity box | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n * Expressed in pixels\n * Default value: 75\n */\n minEntityHeight: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | entityPadding | Minimum internal padding betweentext in box and box borders | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * The minimum internal padding betweentext in an entity box and the enclosing box borders, expressed in pixels.\n *\n * Default value: 15\n */\n entityPadding: 15,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | stroke | Stroke color of box edges and lines | string | 4 | Any recognized color |\n *\n * **Notes:**\n * Default value: 'gray'\n */\n stroke: 'gray',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | fill | Fill color of entity boxes | string | 4 | Any recognized color |\n *\n * **Notes:**\n * Default value: 'honeydew'\n */\n fill: 'honeydew',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | fontSize | Font Size in pixels | Integer | | Any Positive Value |\n *\n * **Notes:**\n *\n * Font size (expressed as an integer representing a number of pixels)\n * Default value: 12\n */\n fontSize: 12,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and\n * scaled based on available space. If set to false, the diagram reserves its\n * absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n },\n\n /**\n * The object containing configurations specific for pie diagrams\n */\n pie: {\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and\n * scaled based on available space. If set to false, the diagram reserves its\n * absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n },\n\n /**\n * The object containing configurations specific for req diagrams\n */\n requirement: {\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and\n * scaled based on available space. If set to false, the diagram reserves its\n * absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n rect_fill: '#f9f9f9',\n text_color: '#333',\n rect_border_size: '0.5px',\n rect_border_color: '#bbb',\n rect_min_width: 200,\n rect_min_height: 200,\n fontSize: 14,\n rect_padding: 10,\n line_height: 20,\n },\n};\n\nconfig.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\nconfig.git.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\n\nconst keyify = (obj, prefix = '') =>\n Object.keys(obj).reduce((res, el) => {\n if (Array.isArray(obj[el])) {\n return res;\n } else if (typeof obj[el] === 'object' && obj[el] !== null) {\n return [...res, prefix + el, ...keyify(obj[el], '')];\n }\n return [...res, prefix + el];\n }, []);\n\nexport const configKeys = keyify(config, '');\nexport default config;\n","import { select } from 'd3';\nimport { log } from '../../logger';\nimport * as configApi from '../../config';\nimport common from '../common/common';\nimport utils from '../../utils';\nimport mermaidAPI from '../../mermaidAPI';\n\nconst MERMAID_DOM_ID_PREFIX = 'classid-';\n\nlet relations = [];\nlet classes = {};\nlet classCounter = 0;\n\nlet funs = [];\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\nconst splitClassNameAndType = function (id) {\n let genericType = '';\n let className = id;\n\n if (id.indexOf('~') > 0) {\n let split = id.split('~');\n className = split[0];\n\n genericType = common.sanitizeText(split[1], configApi.getConfig());\n }\n\n return { className: className, type: genericType };\n};\n\n/**\n * Function called by parser when a node definition has been found.\n * @param id\n * @public\n */\nexport const addClass = function (id) {\n let classId = splitClassNameAndType(id);\n // Only add class if not exists\n if (typeof classes[classId.className] !== 'undefined') return;\n\n classes[classId.className] = {\n id: classId.className,\n type: classId.type,\n cssClasses: [],\n methods: [],\n members: [],\n annotations: [],\n domId: MERMAID_DOM_ID_PREFIX + classId.className + '-' + classCounter,\n };\n\n classCounter++;\n};\n\n/**\n * Function to lookup domId from id in the graph definition.\n * @param id\n * @public\n */\nexport const lookUpDomId = function (id) {\n const classKeys = Object.keys(classes);\n for (let i = 0; i < classKeys.length; i++) {\n if (classes[classKeys[i]].id === id) {\n return classes[classKeys[i]].domId;\n }\n }\n};\n\nexport const clear = function () {\n relations = [];\n classes = {};\n funs = [];\n funs.push(setupToolTips);\n};\n\nexport const getClass = function (id) {\n return classes[id];\n};\nexport const getClasses = function () {\n return classes;\n};\n\nexport const getRelations = function () {\n return relations;\n};\n\nexport const addRelation = function (relation) {\n log.debug('Adding relation: ' + JSON.stringify(relation));\n addClass(relation.id1);\n addClass(relation.id2);\n\n relation.id1 = splitClassNameAndType(relation.id1).className;\n relation.id2 = splitClassNameAndType(relation.id2).className;\n\n relations.push(relation);\n};\n\n/**\n * Adds an annotation to the specified class\n * Annotations mark special properties of the given type (like 'interface' or 'service')\n * @param className The class name\n * @param annotation The name of the annotation without any brackets\n * @public\n */\nexport const addAnnotation = function (className, annotation) {\n const validatedClassName = splitClassNameAndType(className).className;\n classes[validatedClassName].annotations.push(annotation);\n};\n\n/**\n * Adds a member to the specified class\n * @param className The class name\n * @param member The full name of the member.\n * If the member is enclosed in <> it is treated as an annotation\n * If the member is ending with a closing bracket ) it is treated as a method\n * Otherwise the member will be treated as a normal property\n * @public\n */\nexport const addMember = function (className, member) {\n const validatedClassName = splitClassNameAndType(className).className;\n const theClass = classes[validatedClassName];\n\n if (typeof member === 'string') {\n // Member can contain white spaces, we trim them out\n const memberString = member.trim();\n\n if (memberString.startsWith('<<') && memberString.endsWith('>>')) {\n // Remove leading and trailing brackets\n theClass.annotations.push(memberString.substring(2, memberString.length - 2));\n } else if (memberString.indexOf(')') > 0) {\n theClass.methods.push(memberString);\n } else if (memberString) {\n theClass.members.push(memberString);\n }\n }\n};\n\nexport const addMembers = function (className, members) {\n if (Array.isArray(members)) {\n members.reverse();\n members.forEach((member) => addMember(className, member));\n }\n};\n\nexport const cleanupLabel = function (label) {\n if (label.substring(0, 1) === ':') {\n return label.substr(1).trim();\n } else {\n return label.trim();\n }\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setCssClass = function (ids, className) {\n ids.split(',').forEach(function (_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (typeof classes[id] !== 'undefined') {\n classes[id].cssClasses.push(className);\n }\n });\n};\n\n/**\n * Called by parser when a tooltip is found, e.g. a clickable element.\n * @param ids Comma separated list of ids\n * @param tooltip Tooltip to add\n */\nconst setTooltip = function (ids, tooltip) {\n const config = configApi.getConfig();\n ids.split(',').forEach(function (id) {\n if (typeof tooltip !== 'undefined') {\n classes[id].tooltip = common.sanitizeText(tooltip, config);\n }\n });\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n * @param target Target of the link, _blank by default as originally defined in the svgDraw.js file\n */\nexport const setLink = function (ids, linkStr, target) {\n const config = configApi.getConfig();\n ids.split(',').forEach(function (_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (typeof classes[id] !== 'undefined') {\n classes[id].link = utils.formatUrl(linkStr, config);\n if (typeof target === 'string') {\n classes[id].linkTarget = target;\n } else {\n classes[id].linkTarget = '_blank';\n }\n }\n });\n setCssClass(ids, 'clickable');\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs Function args the function should be called with\n */\nexport const setClickEvent = function (ids, functionName, functionArgs) {\n ids.split(',').forEach(function (id) {\n setClickFunc(id, functionName, functionArgs);\n classes[id].haveCallback = true;\n });\n setCssClass(ids, 'clickable');\n};\n\nconst setClickFunc = function (domId, functionName, functionArgs) {\n const config = configApi.getConfig();\n let id = domId;\n let elemId = lookUpDomId(id);\n\n if (config.securityLevel !== 'loose') {\n return;\n }\n if (typeof functionName === 'undefined') {\n return;\n }\n if (typeof classes[id] !== 'undefined') {\n let argList = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(elemId);\n }\n\n funs.push(function () {\n const elem = document.querySelector(`[id=\"${elemId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n 'click',\n function () {\n utils.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n};\n\nexport const bindFunctions = function (element) {\n funs.forEach(function (fun) {\n fun(element);\n });\n};\n\nexport const lineType = {\n LINE: 0,\n DOTTED_LINE: 1,\n};\n\nexport const relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3,\n};\n\nconst setupToolTips = function (element) {\n let tooltipElem = select('.mermaidTooltip');\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = select('body').append('div').attr('class', 'mermaidTooltip').style('opacity', 0);\n }\n\n const svg = select(element).select('svg');\n\n const nodes = svg.selectAll('g.node');\n nodes\n .on('mouseover', function () {\n const el = select(this);\n const title = el.attr('title');\n // Dont try to draw a tooltip if no data is provided\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n\n tooltipElem.transition().duration(200).style('opacity', '.9');\n tooltipElem\n .html(el.attr('title'))\n .style('left', window.scrollX + rect.left + (rect.right - rect.left) / 2 + 'px')\n .style('top', window.scrollY + rect.top - 14 + document.body.scrollTop + 'px');\n el.classed('hover', true);\n })\n .on('mouseout', function () {\n tooltipElem.transition().duration(500).style('opacity', 0);\n const el = select(this);\n el.classed('hover', false);\n });\n};\nfuns.push(setupToolTips);\n\nlet direction = 'TB';\nconst getDirection = () => direction;\nconst setDirection = (dir) => {\n direction = dir;\n};\n\nexport default {\n parseDirective,\n getConfig: () => configApi.getConfig().class,\n addClass,\n bindFunctions,\n clear,\n getClass,\n getClasses,\n addAnnotation,\n getRelations,\n addRelation,\n getDirection,\n setDirection,\n addMember,\n addMembers,\n cleanupLabel,\n lineType,\n relationType,\n setClickEvent,\n setCssClass,\n setLink,\n setTooltip,\n lookUpDomId,\n};\n","import { select } from 'd3';\nimport dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport { log } from '../../logger';\nimport classDb, { lookUpDomId } from './classDb';\nimport { parser } from './parser/classDiagram';\nimport svgDraw from './svgDraw';\nimport { getConfig } from '../../config';\nimport { render } from '../../dagre-wrapper/index.js';\n// import addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';\nimport { curveLinear } from 'd3';\nimport { interpolateToCurve, getStylesFromArray, configureSvgSize } from '../../utils';\nimport common from '../common/common';\n\nparser.yy = classDb;\n\nlet idCache = {};\nconst padding = 20;\n\nconst conf = {\n dividerMargin: 10,\n padding: 5,\n textHeight: 10,\n};\n\n/**\n * Function that adds the vertices found during parsing to the graph to be rendered.\n * @param {Object ; text: string; id: string; type: string; domId: string; }>} classes Object containing the vertices.\n * @param {SVGGElement} g The graph that is to be drawn.\n */\nexport const addClasses = function (classes, g) {\n // const svg = select(`[id=\"${svgId}\"]`);\n const keys = Object.keys(classes);\n log.info('keys:', keys);\n log.info(classes);\n\n // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n keys.forEach(function (id) {\n const vertex = classes[id];\n\n /**\n * Variable for storing the classes for the vertex\n * @type {string}\n */\n let cssClassStr = '';\n if (vertex.cssClasses.length > 0) {\n cssClassStr = cssClassStr + ' ' + vertex.cssClasses.join(' ');\n }\n // if (vertex.classes.length > 0) {\n // classStr = vertex.classes.join(' ');\n // }\n\n const styles = { labelStyle: '' }; //getStylesFromArray(vertex.styles);\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n let vertexText = vertex.text !== undefined ? vertex.text : vertex.id;\n\n // We create a SVG label, either by delegating to addHtmlLabel or manually\n // let vertexNode;\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\n // const node = {\n // label: vertexText.replace(\n // /fa[lrsb]?:fa-[\\w-]+/g,\n // s => ``\n // )\n // };\n // vertexNode = addHtmlLabel(svg, node).node();\n // vertexNode.parentNode.removeChild(vertexNode);\n // } else {\n // const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n // svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n // const rows = vertexText.split(common.lineBreakRegex);\n\n // for (let j = 0; j < rows.length; j++) {\n // const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n // tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n // tspan.setAttribute('dy', '1em');\n // tspan.setAttribute('x', '1');\n // tspan.textContent = rows[j];\n // svgLabel.appendChild(tspan);\n // }\n // vertexNode = svgLabel;\n // }\n\n let radious = 0;\n let _shape = '';\n // Set the shape based parameters\n switch (vertex.type) {\n case 'class':\n _shape = 'class_box';\n break;\n default:\n _shape = 'class_box';\n }\n // Add the node\n g.setNode(vertex.id, {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n classData: vertex,\n rx: radious,\n ry: radious,\n class: cssClassStr,\n style: styles.style,\n id: vertex.id,\n domId: vertex.domId,\n haveCallback: vertex.haveCallback,\n link: vertex.link,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: getConfig().flowchart.padding,\n });\n\n log.info('setNode', {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: cssClassStr,\n style: styles.style,\n id: vertex.id,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: getConfig().flowchart.padding,\n });\n });\n};\n\n/**\n * Add edges to graph based on parsed graph defninition\n * @param {Object} edges The edges to add to the graph\n * @param {Object} g The graph object\n */\nexport const addRelations = function (relations, g) {\n let cnt = 0;\n\n let defaultStyle;\n let defaultLabelStyle;\n\n // if (typeof relations.defaultStyle !== 'undefined') {\n // const defaultStyles = getStylesFromArray(relations.defaultStyle);\n // defaultStyle = defaultStyles.style;\n // defaultLabelStyle = defaultStyles.labelStyle;\n // }\n\n relations.forEach(function (edge) {\n cnt++;\n const edgeData = {};\n //Set relationship style and line type\n edgeData.classes = 'relation';\n edgeData.pattern = edge.relation.lineType == 1 ? 'dashed' : 'solid';\n\n edgeData.id = 'id' + cnt;\n // Set link type for rendering\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none';\n } else {\n edgeData.arrowhead = 'normal';\n }\n\n log.info(edgeData, edge);\n //Set edge extra labels\n //edgeData.startLabelLeft = edge.relationTitle1;\n edgeData.startLabelRight = edge.relationTitle1 === 'none' ? '' : edge.relationTitle1;\n edgeData.endLabelLeft = edge.relationTitle2 === 'none' ? '' : edge.relationTitle2;\n //edgeData.endLabelRight = edge.relationTitle2;\n\n //Set relation arrow types\n edgeData.arrowTypeStart = getArrowMarker(edge.relation.type1);\n edgeData.arrowTypeEnd = getArrowMarker(edge.relation.type2);\n let style = '';\n let labelStyle = '';\n\n if (typeof edge.style !== 'undefined') {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n style = 'fill:none';\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle;\n }\n if (typeof defaultLabelStyle !== 'undefined') {\n labelStyle = defaultLabelStyle;\n }\n }\n\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (typeof relations.defaultInterpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(relations.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n\n edge.text = edge.title;\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333';\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333';\n edgeData.labelpos = 'c';\n\n if (getConfig().flowchart.htmlLabels) { // eslint-disable-line\n edgeData.labelType = 'html';\n edgeData.label = '' + edge.text + '';\n } else {\n edgeData.labelType = 'text';\n edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\n\n if (typeof edge.style === 'undefined') {\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\n }\n\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n }\n }\n // Add the edge to the graph\n g.setEdge(edge.id1, edge.id2, edgeData, cnt);\n });\n};\n\n/**\n * Gets the ID with the same label as in the cache\n * @param {string} label The label to look for\n * @returns {string} The resulting ID\n */\nconst getGraphId = function (label) {\n const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);\n\n if (foundEntry) {\n return foundEntry[0];\n }\n};\n\n/**\n * Merges the value of `conf` with the passed `cnf`\n * @param {Object} cnf Config to merge\n */\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function (key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param {string} text\n * @param {string} id\n */\nexport const drawOld = function (text, id) {\n idCache = {};\n parser.yy.clear();\n parser.parse(text);\n\n log.info('Rendering diagram ' + text);\n\n // Fetch the default direction, use TD if none was found\n const diagram = select(`[id='${id}']`);\n // insertMarkers(diagram);\n\n // Layout graph, Create a new directed graph\n const g = new graphlib.Graph({\n multigraph: true,\n });\n\n // Set an object for the graph label\n g.setGraph({\n isMultiGraph: true,\n });\n\n // Default to assigning a new object as a label for each new edge.\n g.setDefaultEdgeLabel(function () {\n return {};\n });\n\n const classes = classDb.getClasses();\n log.info('classes:');\n log.info(classes);\n const keys = Object.keys(classes);\n for (let i = 0; i < keys.length; i++) {\n const classDef = classes[keys[i]];\n const node = svgDraw.drawClass(diagram, classDef, conf);\n idCache[node.id] = node;\n\n // Add nodes to the graph. The first argument is the node id. The second is\n // metadata about the node. In this case we're going to add labels to each of\n // our nodes.\n g.setNode(node.id, node);\n\n log.info('Org height: ' + node.height);\n }\n\n const relations = classDb.getRelations();\n log.info('relations:', relations);\n relations.forEach(function (relation) {\n log.info(\n 'tjoho' + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)\n );\n g.setEdge(\n getGraphId(relation.id1),\n getGraphId(relation.id2),\n {\n relation: relation,\n },\n relation.title || 'DEFAULT'\n );\n });\n\n dagre.layout(g);\n g.nodes().forEach(function (v) {\n if (typeof v !== 'undefined' && typeof g.node(v) !== 'undefined') {\n log.debug('Node ' + v + ': ' + JSON.stringify(g.node(v)));\n select('#' + lookUpDomId(v)).attr(\n 'transform',\n 'translate(' +\n (g.node(v).x - g.node(v).width / 2) +\n ',' +\n (g.node(v).y - g.node(v).height / 2) +\n ' )'\n );\n }\n });\n\n g.edges().forEach(function (e) {\n if (typeof e !== 'undefined' && typeof g.edge(e) !== 'undefined') {\n log.debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(g.edge(e)));\n svgDraw.drawEdge(diagram, g.edge(e), g.edge(e).relation, conf);\n }\n });\n\n const svgBounds = diagram.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\n\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n log.debug(`viewBox ${vBox}`);\n diagram.attr('viewBox', vBox);\n};\n\nexport const draw = function (text, id) {\n log.info('Drawing class');\n classDb.clear();\n // const parser = classDb.parser;\n // parser.yy = classDb;\n\n // Parse the graph definition\n // try {\n parser.parse(text);\n // } catch (err) {\n // log.debug('Parsing failed');\n // }\n\n // Fetch the default direction, use TD if none was found\n //let dir = 'TD';\n\n const conf = getConfig().flowchart;\n log.info('config:', conf);\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true,\n })\n .setGraph({\n rankdir: classDb.getDirection(),\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n\n // let subG;\n // const subGraphs = flowDb.getSubGraphs();\n // log.info('Subgraphs - ', subGraphs);\n // for (let i = subGraphs.length - 1; i >= 0; i--) {\n // subG = subGraphs[i];\n // log.info('Subgraph - ', subG);\n // flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\n // }\n\n // Fetch the verices/nodes and edges/links from the parsed graph definition\n const classes = classDb.getClasses();\n const relations = classDb.getRelations();\n\n log.info(relations);\n // let i = 0;\n // for (i = subGraphs.length - 1; i >= 0; i--) {\n // subG = subGraphs[i];\n\n // selectAll('cluster').append('text');\n\n // for (let j = 0; j < subG.nodes.length; j++) {\n // g.setParent(subG.nodes[j], subG.id);\n // }\n // }\n addClasses(classes, g, id);\n addRelations(relations, g);\n\n // Add custom shapes\n // flowChartShapes.addToRenderV2(addShape);\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = select(`[id=\"${id}\"]`);\n svg.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n // Run the renderer. This is what draws the final graph.\n const element = select('#' + id + ' g');\n render(element, g, ['aggregation', 'extension', 'composition', 'dependency'], 'classDiagram', id);\n\n // element.selectAll('g.node').attr('title', function() {\n // return flowDb.getTooltip(this.id);\n // });\n\n const padding = 8;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n log.debug(\n `new ViewBox 0 0 ${width} ${height}`,\n `translate(${padding - g._label.marginx}, ${padding - g._label.marginy})`\n );\n\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n\n svg.attr('viewBox', `0 0 ${width} ${height}`);\n svg\n .select('g')\n .attr('transform', `translate(${padding - g._label.marginx}, ${padding - svgBounds.y})`);\n\n // Index nodes\n // flowDb.indexNodes('subGraph' + i);\n\n // Add label rects for non html labels\n if (!conf.htmlLabels) {\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n // rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n }\n\n // If node has a link, wrap it in an anchor SVG object.\n // const keys = Object.keys(classes);\n // keys.forEach(function(key) {\n // const vertex = classes[key];\n\n // if (vertex.link) {\n // const node = select('#' + id + ' [id=\"' + key + '\"]');\n // if (node) {\n // const link = document.createElementNS('http://www.w3.org/2000/svg', 'a');\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n\n // const linkNode = node.insert(function() {\n // return link;\n // }, ':first-child');\n\n // const shape = node.select('.label-container');\n // if (shape) {\n // linkNode.append(function() {\n // return shape.node();\n // });\n // }\n\n // const label = node.select('.label');\n // if (label) {\n // linkNode.append(function() {\n // return label.node();\n // });\n // }\n // }\n // }\n // });\n};\n\n/**\n * Gets the arrow marker for a type index\n * @param {number} type The type to look for\n * @returns {\"aggregation\" | \"extension\" | \"composition\" | \"dependency\"} The arrow marker\n */\nfunction getArrowMarker(type) {\n let marker;\n switch (type) {\n case 0:\n marker = 'aggregation';\n break;\n case 1:\n marker = 'extension';\n break;\n case 2:\n marker = 'composition';\n break;\n case 3:\n marker = 'dependency';\n break;\n default:\n marker = 'none';\n }\n return marker;\n}\n\nexport default {\n setConf,\n draw,\n};\n","import { select } from 'd3';\nimport dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport { log } from '../../logger';\nimport classDb, { lookUpDomId } from './classDb';\nimport { parser } from './parser/classDiagram';\nimport svgDraw from './svgDraw';\nimport { configureSvgSize } from '../../utils';\n\nparser.yy = classDb;\n\nlet idCache = {};\nconst padding = 20;\n\nconst conf = {\n dividerMargin: 10,\n padding: 5,\n textHeight: 10,\n};\n\n/**\n * Gets the ID with the same label as in the cache\n * @param {string} label The label to look for\n * @returns {string} The resulting ID\n */\nconst getGraphId = function (label) {\n const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);\n\n if (foundEntry) {\n return foundEntry[0];\n }\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n * @param {SVGSVGElement} elem The SVG element to append to\n */\nconst insertMarkers = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'extensionStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'extensionEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'compositionStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'compositionEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'aggregationStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'aggregationEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'dependencyStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'dependencyEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\n\n/**\n * Merges the value of `conf` with the passed `cnf`\n * @param {Object} cnf Config to merge\n */\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function (key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param {string} text\n * @param {string} id\n */\nexport const draw = function (text, id) {\n idCache = {};\n parser.yy.clear();\n parser.parse(text);\n\n log.info('Rendering diagram ' + text);\n\n // Fetch the default direction, use TD if none was found\n const diagram = select(`[id='${id}']`);\n diagram.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n insertMarkers(diagram);\n\n // Layout graph, Create a new directed graph\n const g = new graphlib.Graph({\n multigraph: true,\n });\n\n // Set an object for the graph label\n g.setGraph({\n isMultiGraph: true,\n });\n\n // Default to assigning a new object as a label for each new edge.\n g.setDefaultEdgeLabel(function () {\n return {};\n });\n\n const classes = classDb.getClasses();\n const keys = Object.keys(classes);\n\n for (let i = 0; i < keys.length; i++) {\n const classDef = classes[keys[i]];\n const node = svgDraw.drawClass(diagram, classDef, conf);\n idCache[node.id] = node;\n\n // Add nodes to the graph. The first argument is the node id. The second is\n // metadata about the node. In this case we're going to add labels to each of\n // our nodes.\n g.setNode(node.id, node);\n\n log.info('Org height: ' + node.height);\n }\n\n const relations = classDb.getRelations();\n relations.forEach(function (relation) {\n log.info(\n 'tjoho' + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)\n );\n g.setEdge(\n getGraphId(relation.id1),\n getGraphId(relation.id2),\n {\n relation: relation,\n },\n relation.title || 'DEFAULT'\n );\n });\n\n dagre.layout(g);\n g.nodes().forEach(function (v) {\n if (typeof v !== 'undefined' && typeof g.node(v) !== 'undefined') {\n log.debug('Node ' + v + ': ' + JSON.stringify(g.node(v)));\n select('#' + lookUpDomId(v)).attr(\n 'transform',\n 'translate(' +\n (g.node(v).x - g.node(v).width / 2) +\n ',' +\n (g.node(v).y - g.node(v).height / 2) +\n ' )'\n );\n }\n });\n\n g.edges().forEach(function (e) {\n if (typeof e !== 'undefined' && typeof g.edge(e) !== 'undefined') {\n log.debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(g.edge(e)));\n svgDraw.drawEdge(diagram, g.edge(e), g.edge(e).relation, conf);\n }\n });\n\n const svgBounds = diagram.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\n\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n log.debug(`viewBox ${vBox}`);\n diagram.attr('viewBox', vBox);\n};\n\nexport default {\n setConf,\n draw,\n};\n","const getStyles = (options) =>\n `g.classGroup text {\n fill: ${options.nodeBorder};\n fill: ${options.classText};\n stroke: none;\n font-family: ${options.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${options.classText};\n}\n.edgeLabel .label rect {\n fill: ${options.mainBkg};\n}\n.label text {\n fill: ${options.classText};\n}\n.edgeLabel .label span {\n background: ${options.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${options.nodeBorder};\n stroke: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${options.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${options.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n#compositionStart, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n}\n\n`;\n\nexport default getStyles;\n","import { line, curveBasis } from 'd3';\nimport { lookUpDomId, relationType } from './classDb';\nimport utils from '../../utils';\nimport { log } from '../../logger';\n\nlet edgeCount = 0;\nexport const drawEdge = function (elem, path, relation, conf) {\n const getRelationType = function (type) {\n switch (type) {\n case relationType.AGGREGATION:\n return 'aggregation';\n case relationType.EXTENSION:\n return 'extension';\n case relationType.COMPOSITION:\n return 'composition';\n case relationType.DEPENDENCY:\n return 'dependency';\n }\n };\n\n path.points = path.points.filter((p) => !Number.isNaN(p.y));\n\n // The data for our line\n const lineData = path.points;\n\n // This is the accessor function we talked about above\n const lineFunction = line()\n .x(function (d) {\n return d.x;\n })\n .y(function (d) {\n return d.y;\n })\n .curve(curveBasis);\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', 'edge' + edgeCount)\n .attr('class', 'relation');\n let url = '';\n if (conf.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n if (relation.relation.lineType == 1) {\n svgPath.attr('class', 'relation dashed-line');\n }\n if (relation.relation.type1 !== 'none') {\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + getRelationType(relation.relation.type1) + 'Start' + ')'\n );\n }\n if (relation.relation.type2 !== 'none') {\n svgPath.attr(\n 'marker-end',\n 'url(' + url + '#' + getRelationType(relation.relation.type2) + 'End' + ')'\n );\n }\n\n let x, y;\n const l = path.points.length;\n // Calculate Label position\n let labelPosition = utils.calcLabelPosition(path.points);\n x = labelPosition.x;\n y = labelPosition.y;\n\n let p1_card_x, p1_card_y;\n let p2_card_x, p2_card_y;\n\n if (l % 2 !== 0 && l > 1) {\n let cardinality_1_point = utils.calcCardinalityPosition(\n relation.relation.type1 !== 'none',\n path.points,\n path.points[0]\n );\n let cardinality_2_point = utils.calcCardinalityPosition(\n relation.relation.type2 !== 'none',\n path.points,\n path.points[l - 1]\n );\n\n log.debug('cardinality_1_point ' + JSON.stringify(cardinality_1_point));\n log.debug('cardinality_2_point ' + JSON.stringify(cardinality_2_point));\n\n p1_card_x = cardinality_1_point.x;\n p1_card_y = cardinality_1_point.y;\n p2_card_x = cardinality_2_point.x;\n p2_card_y = cardinality_2_point.y;\n }\n\n if (typeof relation.title !== 'undefined') {\n const g = elem.append('g').attr('class', 'classLabel');\n const label = g\n .append('text')\n .attr('class', 'label')\n .attr('x', x)\n .attr('y', y)\n .attr('fill', 'red')\n .attr('text-anchor', 'middle')\n .text(relation.title);\n\n window.label = label;\n const bounds = label.node().getBBox();\n\n g.insert('rect', ':first-child')\n .attr('class', 'box')\n .attr('x', bounds.x - conf.padding / 2)\n .attr('y', bounds.y - conf.padding / 2)\n .attr('width', bounds.width + conf.padding)\n .attr('height', bounds.height + conf.padding);\n }\n\n log.info('Rendering relation ' + JSON.stringify(relation));\n if (typeof relation.relationTitle1 !== 'undefined' && relation.relationTitle1 !== 'none') {\n const g = elem.append('g').attr('class', 'cardinality');\n g.append('text')\n .attr('class', 'type1')\n .attr('x', p1_card_x)\n .attr('y', p1_card_y)\n .attr('fill', 'black')\n .attr('font-size', '6')\n .text(relation.relationTitle1);\n }\n if (typeof relation.relationTitle2 !== 'undefined' && relation.relationTitle2 !== 'none') {\n const g = elem.append('g').attr('class', 'cardinality');\n g.append('text')\n .attr('class', 'type2')\n .attr('x', p2_card_x)\n .attr('y', p2_card_y)\n .attr('fill', 'black')\n .attr('font-size', '6')\n .text(relation.relationTitle2);\n }\n\n edgeCount++;\n};\n\n/**\n * Renders a class diagram\n * @param {SVGSVGElement} elem The element to draw it into\n * @todo Add more information in the JSDOC here\n */\nexport const drawClass = function (elem, classDef, conf) {\n log.info('Rendering class ' + classDef);\n\n const id = classDef.id;\n const classInfo = {\n id: id,\n label: classDef.id,\n width: 0,\n height: 0,\n };\n\n // add class group\n const g = elem.append('g').attr('id', lookUpDomId(id)).attr('class', 'classGroup');\n\n // add title\n let title;\n if (classDef.link) {\n title = g\n .append('svg:a')\n .attr('xlink:href', classDef.link)\n .attr('target', classDef.linkTarget)\n .append('text')\n .attr('y', conf.textHeight + conf.padding)\n .attr('x', 0);\n } else {\n title = g\n .append('text')\n .attr('y', conf.textHeight + conf.padding)\n .attr('x', 0);\n }\n\n // add annotations\n let isFirst = true;\n classDef.annotations.forEach(function (member) {\n const titleText2 = title.append('tspan').text('«' + member + '»');\n if (!isFirst) titleText2.attr('dy', conf.textHeight);\n isFirst = false;\n });\n\n let classTitleString = classDef.id;\n\n if (classDef.type !== undefined && classDef.type !== '') {\n classTitleString += '<' + classDef.type + '>';\n }\n\n const classTitle = title.append('tspan').text(classTitleString).attr('class', 'title');\n\n // If class has annotations the title needs to have an offset of the text height\n if (!isFirst) classTitle.attr('dy', conf.textHeight);\n\n const titleHeight = title.node().getBBox().height;\n\n const membersLine = g\n .append('line') // text label for the x axis\n .attr('x1', 0)\n .attr('y1', conf.padding + titleHeight + conf.dividerMargin / 2)\n .attr('y2', conf.padding + titleHeight + conf.dividerMargin / 2);\n\n const members = g\n .append('text') // text label for the x axis\n .attr('x', conf.padding)\n .attr('y', titleHeight + conf.dividerMargin + conf.textHeight)\n .attr('fill', 'white')\n .attr('class', 'classText');\n\n isFirst = true;\n classDef.members.forEach(function (member) {\n addTspan(members, member, isFirst, conf);\n isFirst = false;\n });\n\n const membersBox = members.node().getBBox();\n\n const methodsLine = g\n .append('line') // text label for the x axis\n .attr('x1', 0)\n .attr('y1', conf.padding + titleHeight + conf.dividerMargin + membersBox.height)\n .attr('y2', conf.padding + titleHeight + conf.dividerMargin + membersBox.height);\n\n const methods = g\n .append('text') // text label for the x axis\n .attr('x', conf.padding)\n .attr('y', titleHeight + 2 * conf.dividerMargin + membersBox.height + conf.textHeight)\n .attr('fill', 'white')\n .attr('class', 'classText');\n\n isFirst = true;\n\n classDef.methods.forEach(function (method) {\n addTspan(methods, method, isFirst, conf);\n isFirst = false;\n });\n\n const classBox = g.node().getBBox();\n var cssClassStr = ' ';\n\n if (classDef.cssClasses.length > 0) {\n cssClassStr = cssClassStr + classDef.cssClasses.join(' ');\n }\n\n const rect = g\n .insert('rect', ':first-child')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', classBox.width + 2 * conf.padding)\n .attr('height', classBox.height + conf.padding + 0.5 * conf.dividerMargin)\n .attr('class', cssClassStr);\n\n const rectWidth = rect.node().getBBox().width;\n\n // Center title\n // We subtract the width of each text element from the class box width and divide it by 2\n title.node().childNodes.forEach(function (x) {\n x.setAttribute('x', (rectWidth - x.getBBox().width) / 2);\n });\n\n if (classDef.tooltip) {\n title.insert('title').text(classDef.tooltip);\n }\n\n membersLine.attr('x2', rectWidth);\n methodsLine.attr('x2', rectWidth);\n\n classInfo.width = rectWidth;\n classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin;\n\n return classInfo;\n};\n\nexport const parseMember = function (text) {\n const fieldRegEx = /^(\\+|-|~|#)?(\\w+)(~\\w+~|\\[\\])?\\s+(\\w+) *(\\*|\\$)?$/;\n const methodRegEx = /^([+|\\-|~|#])?(\\w+) *\\( *(.*)\\) *(\\*|\\$)? *(\\w*[~|[\\]]*\\s*\\w*~?)$/;\n\n let fieldMatch = text.match(fieldRegEx);\n let methodMatch = text.match(methodRegEx);\n\n if (fieldMatch && !methodMatch) {\n return buildFieldDisplay(fieldMatch);\n } else if (methodMatch) {\n return buildMethodDisplay(methodMatch);\n } else {\n return buildLegacyDisplay(text);\n }\n};\n\nconst buildFieldDisplay = function (parsedText) {\n let cssStyle = '';\n let displayText = '';\n\n try {\n let visibility = parsedText[1] ? parsedText[1].trim() : '';\n let fieldType = parsedText[2] ? parsedText[2].trim() : '';\n let genericType = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : '';\n let fieldName = parsedText[4] ? parsedText[4].trim() : '';\n let classifier = parsedText[5] ? parsedText[5].trim() : '';\n\n displayText = visibility + fieldType + genericType + ' ' + fieldName;\n cssStyle = parseClassifier(classifier);\n } catch (err) {\n displayText = parsedText;\n }\n\n return {\n displayText: displayText,\n cssStyle: cssStyle,\n };\n};\n\nconst buildMethodDisplay = function (parsedText) {\n let cssStyle = '';\n let displayText = '';\n\n try {\n let visibility = parsedText[1] ? parsedText[1].trim() : '';\n let methodName = parsedText[2] ? parsedText[2].trim() : '';\n let parameters = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : '';\n let classifier = parsedText[4] ? parsedText[4].trim() : '';\n let returnType = parsedText[5] ? ' : ' + parseGenericTypes(parsedText[5]).trim() : '';\n\n displayText = visibility + methodName + '(' + parameters + ')' + returnType;\n cssStyle = parseClassifier(classifier);\n } catch (err) {\n displayText = parsedText;\n }\n\n return {\n displayText: displayText,\n cssStyle: cssStyle,\n };\n};\n\nconst buildLegacyDisplay = function (text) {\n // if for some reason we dont have any match, use old format to parse text\n let displayText = '';\n let cssStyle = '';\n let memberText = '';\n let returnType = '';\n let methodStart = text.indexOf('(');\n let methodEnd = text.indexOf(')');\n\n if (methodStart > 1 && methodEnd > methodStart && methodEnd <= text.length) {\n let visibility = '';\n let methodName = '';\n\n let firstChar = text.substring(0, 1);\n if (firstChar.match(/\\w/)) {\n methodName = text.substring(0, methodStart).trim();\n } else {\n if (firstChar.match(/\\+|-|~|#/)) {\n visibility = firstChar;\n }\n\n methodName = text.substring(1, methodStart).trim();\n }\n\n let parameters = text.substring(methodStart + 1, methodEnd);\n let classifier = text.substring(methodEnd + 1, 1);\n cssStyle = parseClassifier(classifier);\n\n displayText = visibility + methodName + '(' + parseGenericTypes(parameters.trim()) + ')';\n\n if (methodEnd < memberText.length) {\n returnType = text.substring(methodEnd + 2).trim();\n if (returnType !== '') {\n returnType = ' : ' + parseGenericTypes(returnType);\n }\n }\n } else {\n // finally - if all else fails, just send the text back as written (other than parsing for generic types)\n displayText = parseGenericTypes(text);\n }\n\n return {\n displayText: displayText,\n cssStyle: cssStyle,\n };\n};\n\n/**\n * Adds a for a member in a diagram\n * @param {SVGElement} textEl The element to append to\n * @param {string} txt The member\n * @param {boolean} isFirst\n * @param {{ padding: string; textHeight: string; }} conf The configuration for the member\n */\nconst addTspan = function (textEl, txt, isFirst, conf) {\n let member = parseMember(txt);\n\n const tSpan = textEl.append('tspan').attr('x', conf.padding).text(member.displayText);\n\n if (member.cssStyle !== '') {\n tSpan.attr('style', member.cssStyle);\n }\n\n if (!isFirst) {\n tSpan.attr('dy', conf.textHeight);\n }\n};\n\n/**\n * Makes generics in typescript syntax\n * @example Array of array of strings in typescript syntax \n * // returns \"Array>\"\n * parseGenericTypes(\"Array~Array~string~~\");\n * @param {string} text The text to convert\n * @returns {string} The converted string\n */\nconst parseGenericTypes = function (text) {\n let cleanedText = text;\n\n if (text.indexOf('~') != -1) {\n cleanedText = cleanedText.replace('~', '<');\n cleanedText = cleanedText.replace('~', '>');\n\n return parseGenericTypes(cleanedText);\n } else {\n return cleanedText;\n }\n};\n\n/**\n * Gives the styles for a classifier\n * @param {\"+\" | \"-\" | \"#\" | \"~\" | \"*\" | \"$\"} classifier The classifier string\n * @returns {string} Styling for the classifier\n */\nconst parseClassifier = function (classifier) {\n switch (classifier) {\n case '*':\n return 'font-style:italic;';\n case '$':\n return 'text-decoration:underline;';\n default:\n return '';\n }\n};\n\nexport default {\n drawClass,\n drawEdge,\n parseMember,\n};\n","import DOMPurify from 'dompurify';\n\n/**\n * Gets the number of lines in a string\n * @param {string | undefined} s The string to check the lines for\n * @returns {number} The number of lines in that string\n */\nexport const getRows = (s) => {\n if (!s) return 1;\n let str = breakToPlaceholder(s);\n str = str.replace(/\\\\n/g, '#br#');\n return str.split('#br#');\n};\n\n/**\n * Removes script tags from a text\n * @param {string} txt The text to sanitize\n * @returns {string} The safer text\n */\nexport const removeScript = (txt) => {\n var rs = '';\n var idx = 0;\n\n while (idx >= 0) {\n idx = txt.indexOf('');\n if (idx >= 0) {\n idx += 9;\n txt = txt.substr(idx);\n }\n } else {\n rs += txt;\n idx = -1;\n break;\n }\n }\n\n rs = rs.replace(/script>/gi, '#');\n rs = rs.replace(/script>/gi, '#');\n rs = rs.replace(/javascript:/gi, '#');\n rs = rs.replace(/onerror=/gi, 'onerror:');\n rs = rs.replace(/