diff --git a/demos/classchart.html b/demos/classchart.html
new file mode 100644
index 000000000..d53a6c8d0
--- /dev/null
+++ b/demos/classchart.html
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+ Mermaid Quick Test Page
+
+
+
+
+
+
+
+
+ classDiagram
+ title Animal Diagram
+ accDescription The animal class diagram
+ Animal <|-- Duck
+ Animal <|-- Fish
+ Animal <|-- Zebra
+ Animal : +int age
+ Animal : +String gender
+ Animal: +isMammal()
+ Animal: +mate()
+ class Duck{
+ +String beakColor
+ +swim()
+ +quack()
+ }
+ class Fish{
+ -int sizeInFeet
+ -canEat()
+ }
+ class Zebra{
+ +bool is_wild
+ +run()
+ }
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dist/mermaid.core.js b/dist/mermaid.core.js
index 0aee83c87..a3ac5edc6 100644
--- a/dist/mermaid.core.js
+++ b/dist/mermaid.core.js
@@ -31411,7 +31411,7 @@ module.exports = require("stylis");
/***/ ((module) => {
"use strict";
-module.exports = JSON.parse('{"name":"mermaid","version":"8.14.0","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 --mode development --progress --color","build:production":"webpack --mode production --progress --color","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 ./ --ext js,html","lint:fix":"yarn lint --fix","e2e:depr":"yarn lint && jest e2e --config e2e/jest.config.js","cypress":"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/webpack.config.e2e.babel.js","test":"yarn lint && jest src/.*","test:watch":"jest --watch src","prepublishOnly":"yarn build && yarn test","prepare":"husky install && yarn build","pre-commit":"lint-staged"},"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":"^6.0.0","caniuse-lite":"^1.0.30001325","cypress-image-snapshot":"^4.0.1","d3":"^7.0.0","dagre":"^0.8.5","dagre-d3":"^0.6.4","dompurify":"2.3.6","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","@commitlint/cli":"^16.0.0","@commitlint/config-conventional":"^16.0.0","babel-jest":"^27.0.6","babel-loader":"^8.2.2","concurrently":"^7.0.0","coveralls":"^3.0.2","css-to-string-loader":"^0.1.3","cypress":"9.5.2","documentation":"13.2.0","eslint":"^8.2.0","eslint-config-prettier":"^8.3.0","eslint-plugin-cypress":"^2.12.1","eslint-plugin-html":"^6.2.0","eslint-plugin-jest":"^26.0.0","eslint-plugin-jsdoc":"^38.0.3","eslint-plugin-markdown":"^2.2.1","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","lint-staged":"^12.1.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-merge":"^5.8.0","webpack-node-externals":"^3.0.0"},"files":["dist"],"sideEffects":["**/*.css","**/*.scss"]}');
+module.exports = JSON.parse('{"name":"mermaid","version":"8.14.0","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 --mode development --progress --color","build:production":"webpack --mode production --progress --color","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 ./ --ext js,html","lint:fix":"yarn lint --fix","e2e:depr":"yarn lint && jest e2e --config e2e/jest.config.js","cypress":"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/webpack.config.e2e.babel.js","test":"yarn lint && jest src/.*","test:watch":"jest --watch src","prepublishOnly":"yarn build && yarn test","prepare":"husky install && yarn build","pre-commit":"lint-staged"},"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":"^6.0.0","cypress-image-snapshot":"^4.0.1","d3":"^7.0.0","dagre":"^0.8.5","dagre-d3":"^0.6.4","dompurify":"2.3.6","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","@commitlint/cli":"^16.0.0","@commitlint/config-conventional":"^16.0.0","babel-jest":"^27.0.6","babel-loader":"^8.2.2","concurrently":"^7.0.0","coveralls":"^3.0.2","css-to-string-loader":"^0.1.3","cypress":"9.5.2","documentation":"13.2.0","eslint":"^8.2.0","eslint-config-prettier":"^8.3.0","eslint-plugin-cypress":"^2.12.1","eslint-plugin-html":"^6.2.0","eslint-plugin-jest":"^26.0.0","eslint-plugin-jsdoc":"^38.0.3","eslint-plugin-markdown":"^2.2.1","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","lint-staged":"^12.1.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-merge":"^5.8.0","webpack-node-externals":"^3.0.0"},"files":["dist"],"sideEffects":["**/*.css","**/*.scss"]}');
/***/ })
diff --git a/dist/mermaid.core.js.map b/dist/mermaid.core.js.map
index e0f1deedd..e52072ce6 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,+vBAA+vB;AAC1wB,aAAa,2aAA2a;AACxb;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,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,kBAAkB,mCAAmC;AACrD;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;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,mFAAmF,EAAE,QAAQ,EAAE,uBAAuB,gCAAgC,QAAQ,gBAAgB,kDAAkD,uDAAuD,kDAAkD,GAAG,UAAU,EAAE,UAAU,mDAAmD,UAAU,EAAE,gBAAgB,EAAE,UAAU,eAAe,aAAa,EAAE,mCAAmC,EAAE,0BAA0B,mGAAmG,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,gBAAgB,mCAAmC,EAAE,gBAAgB,EAAE,UAAU,EAAE,kCAAkC,8BAA8B,UAAU,EAAE,0BAA0B,gBAAgB,UAAU,eAAe,6BAA6B,2BAA2B,UAAU,uEAAuE,aAAa;AAC9pC,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,4BAA4B;AAC5B;AACA,yBAAyB;AACzB;AACA,qCAAqC;AACrC;AACA,yBAAyB;AACzB;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,0GAA0G,kBAAkB,gCAAgC,oBAAoB,yBAAyB,oBAAoB,gGAAgG,2GAA2G,mCAAmC,cAAc,uCAAuC,aAAa;AAC7gB,aAAa,kBAAkB,8BAA8B,UAAU,8BAA8B,mBAAmB,8BAA8B,mBAAmB,gCAAgC,kBAAkB,gCAAgC,UAAU,iDAAiD,YAAY;AAClU,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;;;;;;;;;;;AClxBA;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,i4DAAi4D;AAC54D,aAAa,kpCAAkpC;AAC/pC;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,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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CA;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,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;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,iBAAiB,8BAA8B,mBAAmB,yBAAyB,mBAAmB,0xBAA0xB,21JAA21J,UAAU;AAC9vL,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;;;;;;;;;;;ACzgCA;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,mhBAAmhB,0BAA0B;AACxjB,aAAa,wTAAwT,EAAE;AACvU;AACA;AACA;;AAEA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,kDAAkD,EAAE,MAAM,EAAE,mDAAmD,EAAE,mDAAmD,EAAE,2CAA2C,4CAA4C,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,wBAAwB,EAAE,SAAS,eAAe,gBAAgB,gBAAgB,sBAAsB,mBAAmB,QAAQ,EAAE,SAAS,EAAE,wBAAwB,EAAE,4EAA4E,6BAA6B,gBAAgB,gBAAgB,QAAQ,EAAE,SAAS,gBAAgB,yBAAyB,8BAA8B,UAAU,EAAE,UAAU,EAAE,UAAU,eAAe,wDAAwD,GAAG,aAAa,EAAE,UAAU,EAAE,QAAQ,wEAAwE,UAAU,EAAE,2BAA2B,EAAE,UAAU,EAAE,UAAU,2CAA2C,8BAA8B,gBAAgB,8BAA8B,0DAA0D,8BAA8B,gBAAgB,8BAA8B,GAAG,2BAA2B,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,2BAA2B,EAAE,UAAU,EAAE,UAAU,EAAE,2BAA2B,EAAE,UAAU,eAAe,oBAAoB,gBAAgB,oBAAoB,gBAAgB,oBAAoB,gBAAgB,oBAAoB,gBAAgB,oBAAoB,gBAAgB,oBAAoB,gBAAgB,oBAAoB,gBAAgB,oBAAoB,gBAAgB,oBAAoB,gBAAgB,sBAAsB,gBAAgB,sBAAsB,gBAAgB,sBAAsB,GAAG,WAAW,EAAE,WAAW,EAAE,4BAA4B,EAAE,WAAW,EAAE,4BAA4B,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,4BAA4B,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,4BAA4B,EAAE,WAAW,EAAE,4BAA4B,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,4BAA4B,EAAE,WAAW,eAAe,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB,WAAW,GAAG,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,4BAA4B,EAAE,WAAW,EAAE,4BAA4B,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,4BAA4B,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,4BAA4B,EAAE,WAAW,EAAE,4BAA4B,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,4BAA4B;AACjyG,iBAAiB,gEAAgE;AACjF;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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,UAAU,wBAAwB,WAAW;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACvF,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,YAAY,kCAAkC,WAAW,kCAAkC,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;;;;;;;;;;;ACt5BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,mHAAmH;AAC9H,aAAa,gDAAgD;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,iCAAiC,EAAE,QAAQ;AAC7F,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;AC7mBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,iSAAiS,mHAAmH;AAC/Z,aAAa,mJAAmJ,2FAA2F;AAC3P;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;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,yDAAyD,aAAa,KAAK,GAAG,uBAAuB,iCAAiC,0BAA0B,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,0BAA0B,yDAAyD,iBAAiB,gBAAgB,sEAAsE,aAAa,EAAE,UAAU;AAC1sB,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,sCAAsC;AACtC;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,mBAAmB,+BAA+B,UAAU,+BAA+B,WAAW,kCAAkC,YAAY;AACvW,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;;;;;;;;;;;AC3pBA;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,yhCAAyhC;AACpiC,aAAa,woBAAwoB;AACrpB;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,iCAAiC;AACjC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,2CAA2C;AAC3C;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,4EAA4E,KAAK,GAAG,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,+NAA+N,EAAE,uBAAuB,iCAAiC,sMAAsM,4BAA4B,aAAa,EAAE,aAAa,EAAE,SAAS,gBAAgB,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,4CAA4C,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,kFAAkF,KAAK,aAAa,KAAK,aAAa,KAAK,aAAa,WAAW,aAAa,WAAW,GAAG,iCAAiC,kHAAkH,cAAc,EAAE,qBAAqB,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,gBAAgB,cAAc,EAAE,UAAU,EAAE,WAAW,gBAAgB,WAAW,4CAA4C,kOAAkO,EAAE,kOAAkO,EAAE,kOAAkO,EAAE,WAAW,EAAE,4OAA4O,EAAE,WAAW,EAAE,4OAA4O,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,SAAS,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;AAC1oH,iBAAiB,yNAAyN;AAC1O;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;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,uNAAuN,yBAAyB,iCAAiC,qEAAqE,qBAAqB,yCAAyC,4IAA4I;AAC3+B,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;;;;;;;;;;;ACh4BA;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;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;A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CA;AACA;;AACA,IAAMvK,MAAM,GAAG;AACb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACED,EAAAA,KAAK,EAAE,SAXM;AAYbmB,EAAAA,cAAc,EAAEnB,4EAAA,EAZH;AAabwc,EAAAA,QAAQ,EAAElZ,SAbG;;AAcb;AACAmZ,EAAAA,WAAW,EAAE,KAfA;AAgBbC,EAAAA,QAAQ,EAAE,KAhBG;;AAkBb;AACF;AACA;AACA;AACA;AACA;AACA;AACEra,EAAAA,UAAU,EAAE,6CAzBC;;AA2Bb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEsa,EAAAA,QAAQ,EAAE,CAxCG;;AA0Cb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEV,EAAAA,aAAa,EAAE,QAtDF;;AAwDb;AACF;AACA;AACA;AACA;AACA;AACA;AACEW,EAAAA,WAAW,EAAE,IA/DA;;AAiEb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEpP,EAAAA,mBAAmB,EAAE,KA5ER;;AA8Eb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE1L,EAAAA,MAAM,EAAE,CAAC,QAAD,EAAW,eAAX,EAA4B,aAA5B,EAA2C,aAA3C,CAxFK;;AA0Fb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE+a,EAAAA,gBAAgB,EAAE,KAtGL;;AAwGb;AACF;AACA;AACA;AACA;AACEC,EAAAA,mBAAmB,EAAExZ,SA7GR;;AA+Gb;AACAG,EAAAA,SAAS,EAAE;AACT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIsZ,IAAAA,cAAc,EAAE,CAbP;;AAeT;AACJ;AACA;AACA;AACA;AACA;AACA;AACIrZ,IAAAA,UAAU,EAAE,IAtBH;;AAwBT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIsZ,IAAAA,WAAW,EAAE,EApCJ;;AAsCT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EAlDJ;;AAoDT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIjQ,IAAAA,KAAK,EAAE,OA7DE;AA8DT;AACA;AACA/I,IAAAA,OAAO,EAAE,EAhEA;;AAkET;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIiZ,IAAAA,WAAW,EAAE,IA9EJ;;AAgFT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE;AA5FR,GAhHE;;AA+Mb;AACAC,EAAAA,QAAQ,EAAE;AACR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,EART;;AAUR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EAjBR;;AAmBR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EA1BR;;AA4BR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EAnCL;;AAqCR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIzZ,IAAAA,KAAK,EAAE,GA5CC;;AA8CR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,EArDA;;AAuDR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIyZ,IAAAA,SAAS,EAAE,EA9DH;;AAgER;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,CAvEP;;AAyER;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,EAhFJ;;AAkFR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EAzFP;;AA2FR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,QAlGN;;AAoGR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,IA3GN;;AA6GR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,KAtHJ;;AAwHR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,CAnIT;;AAqIR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACId,IAAAA,WAAW,EAAE,IA/IL;;AAiJR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIe,IAAAA,WAAW,EAAE,KA5JL;;AA8JR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,mBAAmB,EAAE,KArKb;;AAuKR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EA9KP;;AAgLR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,yBAvLT;;AAyLR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,GA9LT;;AAgMR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,EAvMN;;AAyMR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,4CAhNR;;AAkNR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,GAvNR;;AAyNR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,SAAS,EAAE,QAhOH;;AAkOR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,EAzOT;;AA2OR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,iBAAiB,EAAE,4CAlPX;;AAoPR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,iBAAiB,EAAE,GAzPX;;AA2PR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,IAAI,EAAE,KAhQE;;AAkQR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EAvQL;;AAyQR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EA9QP;;AAgRR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EArRR;AAuRRC,IAAAA,WAAW,EAAE,uBAAY;AACvB,aAAO;AACL5c,QAAAA,UAAU,EAAE,KAAKsc,iBADZ;AAELO,QAAAA,QAAQ,EAAE,KAAKR,eAFV;AAGLS,QAAAA,UAAU,EAAE,KAAKP;AAHZ,OAAP;AAKD,KA7RO;AA8RRQ,IAAAA,QAAQ,EAAE,oBAAY;AACpB,aAAO;AACL/c,QAAAA,UAAU,EAAE,KAAKkc,cADZ;AAELW,QAAAA,QAAQ,EAAE,KAAKZ,YAFV;AAGLa,QAAAA,UAAU,EAAE,KAAKX;AAHZ,OAAP;AAKD,KApSO;AAqSRa,IAAAA,SAAS,EAAE,qBAAY;AACrB,aAAO;AACLhd,QAAAA,UAAU,EAAE,KAAK+b,eADZ;AAELc,QAAAA,QAAQ,EAAE,KAAKf,aAFV;AAGLgB,QAAAA,UAAU,EAAE,KAAKd;AAHZ,OAAP;AAKD;AA3SO,GAhNG;;AA8fb;AACAiB,EAAAA,KAAK,EAAE;AACL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EAVX;;AAYL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,SAAS,EAAE,EAnBN;;AAqBL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,CA5BH;;AA8BL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,EArCP;;AAuCL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,EA9CT;;AAgDL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EAvDR;;AAyDL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,oBAAoB,EAAE,EAhEjB;;AAkEL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIX,IAAAA,QAAQ,EAAE,EAzEL;;AA2EL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIY,IAAAA,eAAe,EAAE,EAlFZ;;AAoFL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,mBAAmB,EAAE,CA3FhB;;AA6FL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,UAxGP;;AA0GL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI9C,IAAAA,WAAW,EAAE,IAtHR;;AAwHL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI+C,IAAAA,OAAO,EAAE,KAjIJ;AAmILC,IAAAA,QAAQ,EAAE5c;AAnIL,GA/fM;;AAqoBb;AACA6c,EAAAA,OAAO,EAAE;AACP;AACJ;AACA;AACA;AACA;AACA;AACA;AACI7C,IAAAA,cAAc,EAAE,EART;;AAUP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EAjBT;;AAmBP;AACJ;AACA;AACA;AACA;AACA;AACA;AACI6C,IAAAA,UAAU,EAAE,GA1BL;;AA4BP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIrc,IAAAA,KAAK,EAAE,GAnCA;;AAqCP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,EA5CD;;AA8CP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIyZ,IAAAA,SAAS,EAAE,EArDJ;;AAuDP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,CA9DR;;AAgEP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,EAvEL;;AAyEP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EApFR;;AAsFP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,QA7FP;;AA+FP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIG,IAAAA,eAAe,EAAE,CA1GV;;AA4GP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACId,IAAAA,WAAW,EAAE,IAxHN;;AA0HP;AACJ;AACA;AACA;AACA;AACA;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B,EAAjBA,iBAba;AAcbojB,EAAAA,uBAAuB,EAAvBA,uBAda;AAebnjB,EAAAA,yBAAyB,EAAzBA,yBAfa;AAgBbyc,EAAAA,SAAS,EAATA,SAhBa;AAiBb0C,EAAAA,kBAAkB,EAAlBA,kBAjBa;AAkBbinC,EAAAA,UAAU,EAAVA,UAlBa;AAmBbhkB,EAAAA,MAAM,EAANA,MAnBa;AAoBbs3B,EAAAA,OAAO,EAAPA,OApBa;AAqBbt8C,EAAAA,OAAO,EAAPA,OArBa;AAsBbyyC,EAAAA,YAAY,EAAZA,YAtBa;AAuBbF,EAAAA,gBAAgB,EAAhBA,gBAvBa;AAwBboC,EAAAA,kBAAkB,EAAlBA,kBAxBa;AAyBbC,EAAAA,WAAW,EAAXA;AAzBa,CAAf;;;;;;;;;;;AC7+BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,8BAA8B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,qBAAqB;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,YAAY;AACZ;AACA,sCAAsC;AACtC;AACA;AACA,UAAU;AACV;AACA;AACA,iDAAiD;AACjD;AACA,YAAY;AACZ;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gDAAgD;AAChD;AACA,MAAM;AACN,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF;AACpF;AACA,MAAM;AACN;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA,8DAA8D;;AAE9D;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;;;;AChhBA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WC5BA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;;;;;UEJA;UACA;UACA;UACA","sources":["webpack://mermaid/webpack/universalModuleDefinition","webpack://mermaid/./src/diagrams/class/parser/classDiagram.jison","webpack://mermaid/./src/diagrams/er/parser/erDiagram.jison","webpack://mermaid/./src/diagrams/flowchart/parser/flow.jison","webpack://mermaid/./src/diagrams/gantt/parser/gantt.jison","webpack://mermaid/./src/diagrams/git/parser/gitGraph.jison","webpack://mermaid/./src/diagrams/info/parser/info.jison","webpack://mermaid/./src/diagrams/pie/parser/pie.jison","webpack://mermaid/./src/diagrams/requirement/parser/requirementDiagram.jison","webpack://mermaid/./src/diagrams/sequence/parser/sequenceDiagram.jison","webpack://mermaid/./src/diagrams/state/parser/stateDiagram.jison","webpack://mermaid/./src/diagrams/user-journey/parser/journey.jison","webpack://mermaid/./src/accessibility.js","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|/home/runner/work/mermaid/mermaid/src/diagrams/class/parser|fs","webpack://mermaid/ignored|/home/runner/work/mermaid/mermaid/src/diagrams/er/parser|fs","webpack://mermaid/ignored|/home/runner/work/mermaid/mermaid/src/diagrams/flowchart/parser|fs","webpack://mermaid/ignored|/home/runner/work/mermaid/mermaid/src/diagrams/gantt/parser|fs","webpack://mermaid/ignored|/home/runner/work/mermaid/mermaid/src/diagrams/git/parser|fs","webpack://mermaid/ignored|/home/runner/work/mermaid/mermaid/src/diagrams/info/parser|fs","webpack://mermaid/ignored|/home/runner/work/mermaid/mermaid/src/diagrams/pie/parser|fs","webpack://mermaid/ignored|/home/runner/work/mermaid/mermaid/src/diagrams/requirement/parser|fs","webpack://mermaid/ignored|/home/runner/work/mermaid/mermaid/src/diagrams/sequence/parser|fs","webpack://mermaid/ignored|/home/runner/work/mermaid/mermaid/src/diagrams/state/parser|fs","webpack://mermaid/ignored|/home/runner/work/mermaid/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,25,27,45],$V3=[1,17],$V4=[1,18],$V5=[1,19],$V6=[1,22],$V7=[1,27],$V8=[1,28],$V9=[1,29],$Va=[1,30],$Vb=[1,41],$Vc=[27,42,43],$Vd=[4,6,9,11,23,25,27,45],$Ve=[38,39,40,41],$Vf=[22,33],$Vg=[1,59];\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,\"title\":23,\"title_value\":24,\"accDescription\":25,\"description_value\":26,\"ALPHANUM\":27,\"attribute\":28,\"attributeType\":29,\"attributeName\":30,\"attributeKeyType\":31,\"attributeComment\":32,\"ATTRIBUTE_WORD\":33,\"ATTRIBUTE_KEY\":34,\"COMMENT\":35,\"cardinality\":36,\"relType\":37,\"ZERO_OR_ONE\":38,\"ZERO_OR_MORE\":39,\"ONE_OR_MORE\":40,\"ONLY_ONE\":41,\"NON_IDENTIFYING\":42,\"IDENTIFYING\":43,\"WORD\":44,\"open_directive\":45,\"type_directive\":46,\"arg_directive\":47,\"close_directive\":48,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"ER_DIAGRAM\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",20:\"BLOCK_START\",22:\"BLOCK_STOP\",23:\"title\",24:\"title_value\",25:\"accDescription\",26:\"description_value\",27:\"ALPHANUM\",33:\"ATTRIBUTE_WORD\",34:\"ATTRIBUTE_KEY\",35:\"COMMENT\",38:\"ZERO_OR_ONE\",39:\"ZERO_OR_MORE\",40:\"ONE_OR_MORE\",41:\"ONLY_ONE\",42:\"NON_IDENTIFYING\",43:\"IDENTIFYING\",44:\"WORD\",45:\"open_directive\",46:\"type_directive\",47:\"arg_directive\",48:\"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],[10,2],[10,2],[17,1],[21,1],[21,2],[28,2],[28,3],[28,3],[28,4],[29,1],[30,1],[31,1],[32,1],[18,3],[36,1],[36,1],[36,1],[36,1],[37,1],[37,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].trim();yy.setTitle(this.$); \nbreak;\ncase 17:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 18:\n this.$ = $$[$0]; /*console.log('Entity: ' + $$[$0]);*/ \nbreak;\ncase 19:\n this.$ = [$$[$0]]; \nbreak;\ncase 20:\n $$[$0].push($$[$0-1]); this.$=$$[$0]; \nbreak;\ncase 21:\n this.$ = { attributeType: $$[$0-1], attributeName: $$[$0] }; \nbreak;\ncase 22:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeKeyType: $$[$0] }; \nbreak;\ncase 23:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 24:\n this.$ = { attributeType: $$[$0-3], attributeName: $$[$0-2], attributeKeyType: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 25: case 26: case 27:\n this.$=$$[$0]; \nbreak;\ncase 28:\n this.$=$$[$0].replace(/\"/g, ''); \nbreak;\ncase 29:\n\n this.$ = { cardA: $$[$0], relType: $$[$0-1], cardB: $$[$0-2] };\n /*console.log('relSpec: ' + $$[$0] + $$[$0-1] + $$[$0-2]);*/\n \nbreak;\ncase 30:\n this.$ = yy.Cardinality.ZERO_OR_ONE; \nbreak;\ncase 31:\n this.$ = yy.Cardinality.ZERO_OR_MORE; \nbreak;\ncase 32:\n this.$ = yy.Cardinality.ONE_OR_MORE; \nbreak;\ncase 33:\n this.$ = yy.Cardinality.ONLY_ONE; \nbreak;\ncase 34:\n this.$ = yy.Identification.NON_IDENTIFYING; \nbreak;\ncase 35:\n this.$ = yy.Identification.IDENTIFYING; \nbreak;\ncase 36:\n this.$ = $$[$0].replace(/\"/g, ''); \nbreak;\ncase 37:\n this.$ = $$[$0]; \nbreak;\ncase 38:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 39:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 40:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 41:\n yy.parseDirective('}%%', 'close_directive', 'er'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,45:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,45:$V1},{13:8,46:[1,9]},{46:[2,38]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:$V3,25:$V4,27:$V5,45:$V1},{1:[2,2]},{14:20,15:[1,21],48:$V6},o([15,48],[2,39]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:15,10:23,12:4,17:16,23:$V3,25:$V4,27:$V5,45:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,15],{18:24,36:26,20:[1,25],38:$V7,39:$V8,40:$V9,41:$Va}),{24:[1,31]},{26:[1,32]},o([6,9,11,15,20,23,25,27,38,39,40,41,45],[2,18]),{11:[1,33]},{16:34,47:[1,35]},{11:[2,41]},o($V2,[2,5]),{17:36,27:$V5},{21:37,22:[1,38],28:39,29:40,33:$Vb},{37:42,42:[1,43],43:[1,44]},o($Vc,[2,30]),o($Vc,[2,31]),o($Vc,[2,32]),o($Vc,[2,33]),o($V2,[2,16]),o($V2,[2,17]),o($Vd,[2,9]),{14:45,48:$V6},{48:[2,40]},{15:[1,46]},{22:[1,47]},o($V2,[2,14]),{21:48,22:[2,19],28:39,29:40,33:$Vb},{30:49,33:[1,50]},{33:[2,25]},{36:51,38:$V7,39:$V8,40:$V9,41:$Va},o($Ve,[2,34]),o($Ve,[2,35]),{11:[1,52]},{19:53,27:[1,55],44:[1,54]},o($V2,[2,13]),{22:[2,20]},o($Vf,[2,21],{31:56,32:57,34:[1,58],35:$Vg}),o([22,33,34,35],[2,26]),{27:[2,29]},o($Vd,[2,10]),o($V2,[2,12]),o($V2,[2,36]),o($V2,[2,37]),o($Vf,[2,22],{32:60,35:$Vg}),o($Vf,[2,23]),o([22,33,35],[2,27]),o($Vf,[2,28]),o($Vf,[2,24])],\ndefaultActions: {5:[2,38],7:[2,2],22:[2,41],35:[2,40],41:[2,25],48:[2,20],51:[2,29]},\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(\"title\");return 23; \nbreak;\ncase 1: this.popState(); return \"title_value\"; \nbreak;\ncase 2: this.begin(\"accDescription\");return 25; \nbreak;\ncase 3: this.popState(); return \"description_value\"; \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 15; \nbreak;\ncase 7: this.popState(); this.popState(); return 48; \nbreak;\ncase 8:return 47;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:return 11;\nbreak;\ncase 12:/* skip whitespace */\nbreak;\ncase 13:return 9;\nbreak;\ncase 14:return 44;\nbreak;\ncase 15:return 4;\nbreak;\ncase 16: this.begin(\"block\"); return 20; \nbreak;\ncase 17:/* skip whitespace in block */\nbreak;\ncase 18:return 34\nbreak;\ncase 19:return 33\nbreak;\ncase 20:return 35;\nbreak;\ncase 21:/* nothing */\nbreak;\ncase 22: this.popState(); return 22; \nbreak;\ncase 23:return yy_.yytext[0];\nbreak;\ncase 24:return 38;\nbreak;\ncase 25:return 39;\nbreak;\ncase 26:return 40;\nbreak;\ncase 27:return 41;\nbreak;\ncase 28:return 38;\nbreak;\ncase 29:return 39;\nbreak;\ncase 30:return 40;\nbreak;\ncase 31:return 42;\nbreak;\ncase 32:return 43;\nbreak;\ncase 33:return 42;\nbreak;\ncase 34:return 42;\nbreak;\ncase 35:return 27;\nbreak;\ncase 36:return yy_.yytext[0];\nbreak;\ncase 37:return 6;\nbreak;\n}\n},\nrules: [/^(?:title\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescription\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:%%\\{)/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: {\"accDescription\":{\"rules\":[3],\"inclusive\":false},\"title\":{\"rules\":[1],\"inclusive\":false},\"open_directive\":{\"rules\":[5],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7],\"inclusive\":false},\"arg_directive\":{\"rules\":[7,8],\"inclusive\":false},\"block\":{\"rules\":[17,18,19,20,21,22,23],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,2,4,9,10,11,12,13,14,15,16,24,25,26,27,28,29,30,31,32,33,34,35,36,37],\"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,61,62,81,82,83,84,85,86,90,100,101,104,106,107,113,114,115,116,117,118,119,120,121,122],$V5=[2,10],$V6=[1,20],$V7=[1,21],$V8=[1,22],$V9=[1,23],$Va=[1,30],$Vb=[1,59],$Vc=[1,45],$Vd=[1,49],$Ve=[1,33],$Vf=[1,34],$Vg=[1,35],$Vh=[1,36],$Vi=[1,37],$Vj=[1,53],$Vk=[1,60],$Vl=[1,48],$Vm=[1,50],$Vn=[1,52],$Vo=[1,56],$Vp=[1,57],$Vq=[1,38],$Vr=[1,39],$Vs=[1,40],$Vt=[1,41],$Vu=[1,58],$Vv=[1,47],$Vw=[1,51],$Vx=[1,54],$Vy=[1,55],$Vz=[1,46],$VA=[1,63],$VB=[1,68],$VC=[1,20,21,22,23,38,42,47,61,62,81,82,83,84,85,86,90,100,101,104,106,107,113,114,115,116,117,118,119,120,121,122],$VD=[1,72],$VE=[1,71],$VF=[1,73],$VG=[20,21,23,76,77],$VH=[1,94],$VI=[1,99],$VJ=[1,102],$VK=[1,103],$VL=[1,96],$VM=[1,101],$VN=[1,104],$VO=[1,97],$VP=[1,109],$VQ=[1,108],$VR=[1,98],$VS=[1,100],$VT=[1,105],$VU=[1,106],$VV=[1,107],$VW=[1,110],$VX=[20,21,22,23,76,77],$VY=[20,21,22,23,48,76,77],$VZ=[20,21,22,23,40,47,48,50,52,54,56,58,60,61,62,64,66,68,69,71,76,77,86,90,100,101,104,106,107,117,118,119,120,121,122],$V_=[20,21,23],$V$=[20,21,23,47,61,62,76,77,86,90,100,101,104,106,107,117,118,119,120,121,122],$V01=[1,12,20,21,22,23,24,38,42,47,61,62,81,82,83,84,85,86,90,100,101,104,106,107,113,114,115,116,117,118,119,120,121,122],$V11=[47,61,62,86,90,100,101,104,106,107,117,118,119,120,121,122],$V21=[1,144],$V31=[1,152],$V41=[1,153],$V51=[1,154],$V61=[1,155],$V71=[1,139],$V81=[1,140],$V91=[1,136],$Va1=[1,147],$Vb1=[1,148],$Vc1=[1,149],$Vd1=[1,150],$Ve1=[1,151],$Vf1=[1,156],$Vg1=[1,157],$Vh1=[1,142],$Vi1=[1,145],$Vj1=[1,141],$Vk1=[1,138],$Vl1=[20,21,22,23,38,42,47,61,62,81,82,83,84,85,86,90,100,101,104,106,107,113,114,115,116,117,118,119,120,121,122],$Vm1=[1,160],$Vn1=[20,21,22,23,26,47,61,62,86,100,101,104,106,107,117,118,119,120,121,122],$Vo1=[20,21,22,23,24,26,38,40,41,42,47,51,53,55,57,59,61,62,63,65,67,68,70,72,76,77,81,82,83,84,85,86,87,90,100,101,104,106,107,108,109,117,118,119,120,121,122],$Vp1=[12,21,22,24],$Vq1=[22,101],$Vr1=[1,245],$Vs1=[1,240],$Vt1=[1,241],$Vu1=[1,249],$Vv1=[1,246],$Vw1=[1,243],$Vx1=[1,242],$Vy1=[1,244],$Vz1=[1,247],$VA1=[1,248],$VB1=[1,250],$VC1=[1,268],$VD1=[20,21,23,101],$VE1=[20,21,22,23,61,62,81,97,100,101,104,105,106,107,108];\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,\"DOUBLECIRCLESTART\":50,\"DOUBLECIRCLEEND\":51,\"PS\":52,\"PE\":53,\"(-\":54,\"-)\":55,\"STADIUMSTART\":56,\"STADIUMEND\":57,\"SUBROUTINESTART\":58,\"SUBROUTINEEND\":59,\"VERTEX_WITH_PROPS_START\":60,\"ALPHA\":61,\"COLON\":62,\"PIPE\":63,\"CYLINDERSTART\":64,\"CYLINDEREND\":65,\"DIAMOND_START\":66,\"DIAMOND_STOP\":67,\"TAGEND\":68,\"TRAPSTART\":69,\"TRAPEND\":70,\"INVTRAPSTART\":71,\"INVTRAPEND\":72,\"linkStatement\":73,\"arrowText\":74,\"TESTSTR\":75,\"START_LINK\":76,\"LINK\":77,\"textToken\":78,\"STR\":79,\"keywords\":80,\"STYLE\":81,\"LINKSTYLE\":82,\"CLASSDEF\":83,\"CLASS\":84,\"CLICK\":85,\"DOWN\":86,\"UP\":87,\"textNoTags\":88,\"textNoTagsToken\":89,\"DEFAULT\":90,\"stylesOpt\":91,\"alphaNum\":92,\"CALLBACKNAME\":93,\"CALLBACKARGS\":94,\"HREF\":95,\"LINK_TARGET\":96,\"HEX\":97,\"numList\":98,\"INTERPOLATE\":99,\"NUM\":100,\"COMMA\":101,\"style\":102,\"styleComponent\":103,\"MINUS\":104,\"UNIT\":105,\"BRKT\":106,\"DOT\":107,\"PCT\":108,\"TAGSTART\":109,\"alphaNumToken\":110,\"idStringToken\":111,\"alphaNumStatement\":112,\"direction_tb\":113,\"direction_bt\":114,\"direction_rl\":115,\"direction_lr\":116,\"PUNCTUATION\":117,\"UNICODE_TEXT\":118,\"PLUS\":119,\"EQUALS\":120,\"MULT\":121,\"UNDERSCORE\":122,\"graphCodeTokens\":123,\"ARROW_CROSS\":124,\"ARROW_POINT\":125,\"ARROW_CIRCLE\":126,\"ARROW_OPEN\":127,\"QUOTE\":128,\"$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:\"DOUBLECIRCLESTART\",51:\"DOUBLECIRCLEEND\",52:\"PS\",53:\"PE\",54:\"(-\",55:\"-)\",56:\"STADIUMSTART\",57:\"STADIUMEND\",58:\"SUBROUTINESTART\",59:\"SUBROUTINEEND\",60:\"VERTEX_WITH_PROPS_START\",61:\"ALPHA\",62:\"COLON\",63:\"PIPE\",64:\"CYLINDERSTART\",65:\"CYLINDEREND\",66:\"DIAMOND_START\",67:\"DIAMOND_STOP\",68:\"TAGEND\",69:\"TRAPSTART\",70:\"TRAPEND\",71:\"INVTRAPSTART\",72:\"INVTRAPEND\",75:\"TESTSTR\",76:\"START_LINK\",77:\"LINK\",79:\"STR\",81:\"STYLE\",82:\"LINKSTYLE\",83:\"CLASSDEF\",84:\"CLASS\",85:\"CLICK\",86:\"DOWN\",87:\"UP\",90:\"DEFAULT\",93:\"CALLBACKNAME\",94:\"CALLBACKARGS\",95:\"HREF\",96:\"LINK_TARGET\",97:\"HEX\",99:\"INTERPOLATE\",100:\"NUM\",101:\"COMMA\",104:\"MINUS\",105:\"UNIT\",106:\"BRKT\",107:\"DOT\",108:\"PCT\",109:\"TAGSTART\",113:\"direction_tb\",114:\"direction_bt\",115:\"direction_rl\",116:\"direction_lr\",117:\"PUNCTUATION\",118:\"UNICODE_TEXT\",119:\"PLUS\",120:\"EQUALS\",121:\"MULT\",122:\"UNDERSCORE\",124:\"ARROW_CROSS\",125:\"ARROW_POINT\",126:\"ARROW_CIRCLE\",127:\"ARROW_OPEN\",128:\"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,4],[46,6],[46,4],[46,4],[46,4],[46,8],[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],[73,1],[74,3],[39,1],[39,2],[39,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[88,1],[88,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],[98,1],[98,3],[91,1],[91,3],[102,1],[102,2],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[89,1],[89,1],[89,1],[89,1],[49,1],[49,2],[92,1],[92,2],[112,1],[112,1],[112,1],[112,1],[43,1],[43,1],[43,1],[43,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,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 79: case 81: case 93: case 149: case 151: case 152:\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-3];yy.addVertex($$[$0-3],$$[$0-1],'doublecircle');\nbreak;\ncase 57:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');\nbreak;\ncase 58:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');\nbreak;\ncase 59:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'stadium');\nbreak;\ncase 60:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'subroutine');\nbreak;\ncase 61:\nthis.$ = $$[$0-7];yy.addVertex($$[$0-7],$$[$0-1],'rect',undefined,undefined,undefined, Object.fromEntries([[$$[$0-5], $$[$0-3]]]));\nbreak;\ncase 62:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'cylinder');\nbreak;\ncase 63:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');\nbreak;\ncase 64:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');\nbreak;\ncase 65:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'hexagon');\nbreak;\ncase 66:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');\nbreak;\ncase 67:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'trapezoid');\nbreak;\ncase 68:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'inv_trapezoid');\nbreak;\ncase 69:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_right');\nbreak;\ncase 70:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_left');\nbreak;\ncase 71:\n /*console.warn('h: ', $$[$0]);*/this.$ = $$[$0];yy.addVertex($$[$0]);\nbreak;\ncase 72:\n$$[$0-1].text = $$[$0];this.$ = $$[$0-1];\nbreak;\ncase 73: case 74:\n$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];\nbreak;\ncase 75:\nthis.$ = $$[$0];\nbreak;\ncase 76:\nvar inf = yy.destructLink($$[$0], $$[$0-2]); this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length,\"text\":$$[$0-1]};\nbreak;\ncase 77:\nvar inf = yy.destructLink($$[$0]);this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length};\nbreak;\ncase 78:\nthis.$ = $$[$0-1];\nbreak;\ncase 80: case 94: case 150:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\ncase 95: case 96:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 97:\nthis.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);\nbreak;\ncase 98: case 106:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 99: case 107:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 100:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 101:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-4], $$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-4], $$[$0]);\nbreak;\ncase 102: case 108:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 103: case 109:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 104: case 110:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);\nbreak;\ncase 105: case 111:\nthis.$ = $$[$0-5];yy.setLink($$[$0-5], $$[$0-4], $$[$0]);yy.setTooltip($$[$0-5], $$[$0-2]);\nbreak;\ncase 112:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);\nbreak;\ncase 113: case 115:\nthis.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);\nbreak;\ncase 114:\nthis.$ = $$[$0-4];yy.updateLink([$$[$0-2]],$$[$0]);\nbreak;\ncase 116:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate([$$[$0-6]],$$[$0-2]);yy.updateLink([$$[$0-6]],$$[$0]);\nbreak;\ncase 117:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);\nbreak;\ncase 118:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate([$$[$0-4]],$$[$0]);\nbreak;\ncase 119:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);\nbreak;\ncase 120: case 122:\nthis.$ = [$$[$0]]\nbreak;\ncase 121: case 123:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 125:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\ncase 147:\nthis.$=$$[$0]\nbreak;\ncase 148:\nthis.$=$$[$0-1]+''+$$[$0]\nbreak;\ncase 153:\nthis.$='v';\nbreak;\ncase 154:\nthis.$='-';\nbreak;\ncase 155:\n this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 156:\n this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 157:\n this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 158:\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,61:$Vc,62:$Vd,81:$Ve,82:$Vf,83:$Vg,84:$Vh,85:$Vi,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,113:$Vq,114:$Vr,115:$Vs,116:$Vt,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},{8:61,10:[1,62],15:$VA},o([10,15],[2,6]),o($V4,[2,17]),o($V4,[2,18]),o($V4,[2,19]),{20:[1,65],21:[1,66],22:$VB,27:64,30:67},o($VC,[2,11]),o($VC,[2,12]),o($VC,[2,13]),o($VC,[2,14]),o($VC,[2,15]),o($VC,[2,16]),{9:69,20:$VD,21:$VE,23:$VF,44:70,73:74,76:[1,75],77:[1,76]},{9:77,20:$VD,21:$VE,23:$VF},{9:78,20:$VD,21:$VE,23:$VF},{9:79,20:$VD,21:$VE,23:$VF},{9:80,20:$VD,21:$VE,23:$VF},{9:81,20:$VD,21:$VE,23:$VF},{9:83,20:$VD,21:$VE,22:[1,82],23:$VF},o($VC,[2,44]),o($VG,[2,51],{30:84,22:$VB}),{22:[1,85]},{22:[1,86]},{22:[1,87]},{22:[1,88]},{26:$VH,47:$VI,61:$VJ,62:$VK,79:[1,92],86:$VL,92:91,93:[1,89],95:[1,90],100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($VC,[2,155]),o($VC,[2,156]),o($VC,[2,157]),o($VC,[2,158]),o($VX,[2,52],{48:[1,111]}),o($VY,[2,71],{111:124,40:[1,112],47:$Vb,50:[1,113],52:[1,114],54:[1,115],56:[1,116],58:[1,117],60:[1,118],61:$Vc,62:$Vd,64:[1,119],66:[1,120],68:[1,121],69:[1,122],71:[1,123],86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz}),o($VZ,[2,147]),o($VZ,[2,172]),o($VZ,[2,173]),o($VZ,[2,174]),o($VZ,[2,175]),o($VZ,[2,176]),o($VZ,[2,177]),o($VZ,[2,178]),o($VZ,[2,179]),o($VZ,[2,180]),o($VZ,[2,181]),o($VZ,[2,182]),o($VZ,[2,183]),o($VZ,[2,184]),o($VZ,[2,185]),o($VZ,[2,186]),o($VZ,[2,187]),{9:125,20:$VD,21:$VE,23:$VF},{11:126,14:[1,127]},o($V_,[2,8]),o($V4,[2,20]),o($V4,[2,26]),o($V4,[2,27]),{21:[1,128]},o($V$,[2,34],{30:129,22:$VB}),o($VC,[2,35]),{45:130,46:42,47:$Vb,49:43,61:$Vc,62:$Vd,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},o($V01,[2,45]),o($V01,[2,46]),o($V01,[2,47]),o($V11,[2,75],{74:131,63:[1,133],75:[1,132]}),{22:$V21,24:$V31,26:$V41,38:$V51,39:134,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o([47,61,62,63,75,86,90,100,101,104,106,107,117,118,119,120,121,122],[2,77]),o($VC,[2,36]),o($VC,[2,37]),o($VC,[2,38]),o($VC,[2,39]),o($VC,[2,40]),{22:$V21,24:$V31,26:$V41,38:$V51,39:158,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($Vl1,$V5,{17:159}),o($VG,[2,50],{47:$Vm1}),{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,92:161,97:[1,162],100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{90:[1,163],98:164,100:[1,165]},{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,90:[1,166],92:167,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,92:168,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($V_,[2,98],{22:[1,169],94:[1,170]}),o($V_,[2,102],{22:[1,171]}),o($V_,[2,106],{110:95,112:173,22:[1,172],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW}),o($V_,[2,108],{22:[1,174]}),o($Vn1,[2,149]),o($Vn1,[2,151]),o($Vn1,[2,152]),o($Vn1,[2,153]),o($Vn1,[2,154]),o($Vo1,[2,159]),o($Vo1,[2,160]),o($Vo1,[2,161]),o($Vo1,[2,162]),o($Vo1,[2,163]),o($Vo1,[2,164]),o($Vo1,[2,165]),o($Vo1,[2,166]),o($Vo1,[2,167]),o($Vo1,[2,168]),o($Vo1,[2,169]),o($Vo1,[2,170]),o($Vo1,[2,171]),{47:$Vb,49:175,61:$Vc,62:$Vd,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},{22:$V21,24:$V31,26:$V41,38:$V51,39:176,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:177,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:179,42:$V61,47:$VI,52:[1,178],61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:180,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:181,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:182,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{61:[1,183]},{22:$V21,24:$V31,26:$V41,38:$V51,39:184,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:185,42:$V61,47:$VI,61:$VJ,62:$VK,66:[1,186],68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:187,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:188,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:189,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($VZ,[2,148]),o($Vp1,[2,3]),{8:190,15:$VA},{15:[2,7]},o($V4,[2,28]),o($V$,[2,33]),o($VG,[2,48],{30:191,22:$VB}),o($V11,[2,72],{22:[1,192]}),{22:[1,193]},{22:$V21,24:$V31,26:$V41,38:$V51,39:194,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,77:[1,195],78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($Vo1,[2,79]),o($Vo1,[2,81]),o($Vo1,[2,137]),o($Vo1,[2,138]),o($Vo1,[2,139]),o($Vo1,[2,140]),o($Vo1,[2,141]),o($Vo1,[2,142]),o($Vo1,[2,143]),o($Vo1,[2,144]),o($Vo1,[2,145]),o($Vo1,[2,146]),o($Vo1,[2,82]),o($Vo1,[2,83]),o($Vo1,[2,84]),o($Vo1,[2,85]),o($Vo1,[2,86]),o($Vo1,[2,87]),o($Vo1,[2,88]),o($Vo1,[2,89]),o($Vo1,[2,90]),o($Vo1,[2,91]),o($Vo1,[2,92]),{9:198,20:$VD,21:$VE,22:$V21,23:$VF,24:$V31,26:$V41,38:$V51,40:[1,197],42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{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,199],43:31,45:32,46:42,47:$Vb,49:43,61:$Vc,62:$Vd,81:$Ve,82:$Vf,83:$Vg,84:$Vh,85:$Vi,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,113:$Vq,114:$Vr,115:$Vs,116:$Vt,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},{22:$VB,30:200},{22:[1,201],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:173,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:[1,202]},{22:[1,203]},{22:[1,204],101:[1,205]},o($Vq1,[2,120]),{22:[1,206]},{22:[1,207],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:173,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:[1,208],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:173,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{79:[1,209]},o($V_,[2,100],{22:[1,210]}),{79:[1,211],96:[1,212]},{79:[1,213]},o($Vn1,[2,150]),{79:[1,214],96:[1,215]},o($VX,[2,54],{111:124,47:$Vb,61:$Vc,62:$Vd,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz}),{22:$V21,24:$V31,26:$V41,38:$V51,41:[1,216],42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,51:[1,217],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:218,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,53:[1,219],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,55:[1,220],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,57:[1,221],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,59:[1,222],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{62:[1,223]},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,65:[1,224],68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,67:[1,225],68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:226,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,41:[1,227],42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,70:[1,228],72:[1,229],76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,70:[1,231],72:[1,230],76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{9:232,20:$VD,21:$VE,23:$VF},o($VG,[2,49],{47:$Vm1}),o($V11,[2,74]),o($V11,[2,73]),{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,63:[1,233],68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($V11,[2,76]),o($Vo1,[2,80]),{22:$V21,24:$V31,26:$V41,38:$V51,39:234,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($Vl1,$V5,{17:235}),o($VC,[2,43]),{46:236,47:$Vb,49:43,61:$Vc,62:$Vd,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:237,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:251,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:252,97:$Vv1,99:[1,253],100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:254,97:$Vv1,99:[1,255],100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{100:[1,256]},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:257,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:258,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,92:259,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($V_,[2,99]),{79:[1,260]},o($V_,[2,103],{22:[1,261]}),o($V_,[2,104]),o($V_,[2,107]),o($V_,[2,109],{22:[1,262]}),o($V_,[2,110]),o($VY,[2,55]),o($VY,[2,56]),{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,53:[1,263],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($VY,[2,63]),o($VY,[2,58]),o($VY,[2,59]),o($VY,[2,60]),{61:[1,264]},o($VY,[2,62]),o($VY,[2,64]),{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,67:[1,265],68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($VY,[2,66]),o($VY,[2,67]),o($VY,[2,69]),o($VY,[2,68]),o($VY,[2,70]),o($Vp1,[2,4]),o([22,47,61,62,86,90,100,101,104,106,107,117,118,119,120,121,122],[2,78]),{22:$V21,24:$V31,26:$V41,38:$V51,41:[1,266],42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{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,267],43:31,45:32,46:42,47:$Vb,49:43,61:$Vc,62:$Vd,81:$Ve,82:$Vf,83:$Vg,84:$Vh,85:$Vi,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,113:$Vq,114:$Vr,115:$Vs,116:$Vt,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},o($VX,[2,53]),o($V_,[2,112],{101:$VC1}),o($VD1,[2,122],{103:269,22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,97:$Vv1,100:$Vw1,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1}),o($VE1,[2,124]),o($VE1,[2,126]),o($VE1,[2,127]),o($VE1,[2,128]),o($VE1,[2,129]),o($VE1,[2,130]),o($VE1,[2,131]),o($VE1,[2,132]),o($VE1,[2,133]),o($VE1,[2,134]),o($VE1,[2,135]),o($VE1,[2,136]),o($V_,[2,113],{101:$VC1}),o($V_,[2,114],{101:$VC1}),{22:[1,270]},o($V_,[2,115],{101:$VC1}),{22:[1,271]},o($Vq1,[2,121]),o($V_,[2,95],{101:$VC1}),o($V_,[2,96],{101:$VC1}),o($V_,[2,97],{110:95,112:173,26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW}),o($V_,[2,101]),{96:[1,272]},{96:[1,273]},{53:[1,274]},{63:[1,275]},{67:[1,276]},{9:277,20:$VD,21:$VE,23:$VF},o($VC,[2,42]),{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,97:$Vv1,100:$Vw1,102:278,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},o($VE1,[2,125]),{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,92:279,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,92:280,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($V_,[2,105]),o($V_,[2,111]),o($VY,[2,57]),{22:$V21,24:$V31,26:$V41,38:$V51,39:281,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($VY,[2,65]),o($Vl1,$V5,{17:282}),o($VD1,[2,123],{103:269,22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,97:$Vv1,100:$Vw1,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1}),o($V_,[2,118],{110:95,112:173,22:[1,283],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW}),o($V_,[2,119],{110:95,112:173,22:[1,284],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW}),{22:$V21,24:$V31,26:$V41,38:$V51,41:[1,285],42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{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,286],43:31,45:32,46:42,47:$Vb,49:43,61:$Vc,62:$Vd,81:$Ve,82:$Vf,83:$Vg,84:$Vh,85:$Vi,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,113:$Vq,114:$Vr,115:$Vs,116:$Vt,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:287,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:288,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},o($VY,[2,61]),o($VC,[2,41]),o($V_,[2,116],{101:$VC1}),o($V_,[2,117],{101:$VC1})],\ndefaultActions: {2:[2,1],9:[2,5],10:[2,2],127:[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 81;\nbreak;\ncase 11:return 90;\nbreak;\ncase 12:return 82;\nbreak;\ncase 13:return 99;\nbreak;\ncase 14:return 83;\nbreak;\ncase 15:return 84;\nbreak;\ncase 16:this.begin(\"href\");\nbreak;\ncase 17:this.popState();\nbreak;\ncase 18:return 95;\nbreak;\ncase 19:this.begin(\"callbackname\");\nbreak;\ncase 20:this.popState();\nbreak;\ncase 21:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 22:return 93;\nbreak;\ncase 23:this.popState();\nbreak;\ncase 24:return 94;\nbreak;\ncase 25:this.begin(\"click\");\nbreak;\ncase 26:this.popState();\nbreak;\ncase 27:return 85;\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 96;\nbreak;\ncase 33:return 96;\nbreak;\ncase 34:return 96;\nbreak;\ncase 35:return 96;\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 113;\nbreak;\ncase 48:return 114;\nbreak;\ncase 49:return 115;\nbreak;\ncase 50:return 116;\nbreak;\ncase 51: return 100;\nbreak;\ncase 52:return 106;\nbreak;\ncase 53:return 48;\nbreak;\ncase 54:return 62;\nbreak;\ncase 55:return 47;\nbreak;\ncase 56:return 20;\nbreak;\ncase 57:return 101;\nbreak;\ncase 58:return 121;\nbreak;\ncase 59:return 77;\nbreak;\ncase 60:return 77;\nbreak;\ncase 61:return 77;\nbreak;\ncase 62:return 76;\nbreak;\ncase 63:return 76;\nbreak;\ncase 64:return 76;\nbreak;\ncase 65:return 54;\nbreak;\ncase 66:return 55;\nbreak;\ncase 67:return 56;\nbreak;\ncase 68:return 57;\nbreak;\ncase 69:return 58;\nbreak;\ncase 70:return 59;\nbreak;\ncase 71:return 60;\nbreak;\ncase 72:return 64;\nbreak;\ncase 73:return 65;\nbreak;\ncase 74:return 50;\nbreak;\ncase 75:return 51;\nbreak;\ncase 76:return 104;\nbreak;\ncase 77:return 107;\nbreak;\ncase 78:return 122;\nbreak;\ncase 79:return 119;\nbreak;\ncase 80:return 108;\nbreak;\ncase 81:return 120;\nbreak;\ncase 82:return 120;\nbreak;\ncase 83:return 109;\nbreak;\ncase 84:return 68;\nbreak;\ncase 85:return 87;\nbreak;\ncase 86:return 'SEP';\nbreak;\ncase 87:return 86;\nbreak;\ncase 88:return 61;\nbreak;\ncase 89:return 70;\nbreak;\ncase 90:return 69;\nbreak;\ncase 91:return 72;\nbreak;\ncase 92:return 71;\nbreak;\ncase 93:return 117;\nbreak;\ncase 94:return 118;\nbreak;\ncase 95:return 63;\nbreak;\ncase 96:return 52;\nbreak;\ncase 97:return 53;\nbreak;\ncase 98:return 40;\nbreak;\ncase 99:return 41;\nbreak;\ncase 100:return 66\nbreak;\ncase 101:return 67\nbreak;\ncase 102:return 128;\nbreak;\ncase 103:return 21;\nbreak;\ncase 104:return 22;\nbreak;\ncase 105: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,103,104,105],\"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=[1,4],$V1=[1,7],$V2=[1,5],$V3=[1,9],$V4=[1,6],$V5=[2,6],$V6=[1,16],$V7=[6,8,14,18,20,21,22,37,41],$V8=[8,14,18,20,21,22],$V9=[8,13,14,18,20,21,22],$Va=[1,26],$Vb=[6,8,14,37,41],$Vc=[8,14,41],$Vd=[1,53],$Ve=[1,54],$Vf=[1,55],$Vg=[8,14,24,28,29,41];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"eol\":4,\"directive\":5,\"GG\":6,\"document\":7,\"EOF\":8,\":\":9,\"DIR\":10,\"options\":11,\"body\":12,\"OPT\":13,\"NL\":14,\"line\":15,\"statement\":16,\"commitStatement\":17,\"BRANCH\":18,\"ID\":19,\"CHECKOUT\":20,\"MERGE\":21,\"COMMIT\":22,\"commit_arg\":23,\"COMMIT_TAG\":24,\"STR\":25,\"COMMIT_TYPE\":26,\"commitType\":27,\"COMMIT_ID\":28,\"COMMIT_MSG\":29,\"NORMAL\":30,\"REVERSE\":31,\"HIGHLIGHT\":32,\"openDirective\":33,\"typeDirective\":34,\"closeDirective\":35,\"argDirective\":36,\"open_directive\":37,\"type_directive\":38,\"arg_directive\":39,\"close_directive\":40,\";\":41,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"GG\",8:\"EOF\",9:\":\",10:\"DIR\",13:\"OPT\",14:\"NL\",18:\"BRANCH\",19:\"ID\",20:\"CHECKOUT\",21:\"MERGE\",22:\"COMMIT\",24:\"COMMIT_TAG\",25:\"STR\",26:\"COMMIT_TYPE\",28:\"COMMIT_ID\",29:\"COMMIT_MSG\",30:\"NORMAL\",31:\"REVERSE\",32:\"HIGHLIGHT\",37:\"open_directive\",38:\"type_directive\",39:\"arg_directive\",40:\"close_directive\",41:\";\"},\nproductions_: [0,[3,2],[3,2],[3,3],[3,4],[3,5],[7,0],[7,2],[11,2],[11,1],[12,0],[12,2],[15,2],[15,1],[16,1],[16,2],[16,2],[16,2],[17,2],[17,3],[17,3],[17,5],[17,5],[17,3],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,3],[17,5],[17,5],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[23,0],[23,1],[27,1],[27,1],[27,1],[5,3],[5,5],[33,1],[34,1],[36,1],[35,1],[4,1],[4,1],[4,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 3:\n return $$[$0]; \nbreak;\ncase 4:\n return $$[$0-1]; \nbreak;\ncase 5:\nyy.setDirection($$[$0-3]); return $$[$0-1];\nbreak;\ncase 7:\n yy.setOptions($$[$0-1]); this.$ = $$[$0]\nbreak;\ncase 8:\n$$[$0-1] +=$$[$0]; this.$=$$[$0-1]\nbreak;\ncase 10:\nthis.$ = []\nbreak;\ncase 11:\n$$[$0-1].push($$[$0]); this.$=$$[$0-1];\nbreak;\ncase 12:\nthis.$ =$$[$0-1]\nbreak;\ncase 15:\nyy.branch($$[$0])\nbreak;\ncase 16:\nyy.checkout($$[$0])\nbreak;\ncase 17:\nyy.merge($$[$0])\nbreak;\ncase 18:\nyy.commit($$[$0])\nbreak;\ncase 19:\nyy.commit('','',yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 20:\nyy.commit('','',$$[$0],'')\nbreak;\ncase 21:\nyy.commit('','',$$[$0],$$[$0-2])\nbreak;\ncase 22:\nyy.commit('','',$$[$0-2],$$[$0])\nbreak;\ncase 23:\nyy.commit('',$$[$0],yy.commitType.NORMAL,'')\nbreak;\ncase 24:\nyy.commit('',$$[$0-2],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 25:\nyy.commit('',$$[$0],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 26:\nyy.commit('',$$[$0-2],$$[$0],'')\nbreak;\ncase 27:\nyy.commit('',$$[$0],$$[$0-2],'')\nbreak;\ncase 28:\nyy.commit('',$$[$0-4],$$[$0-2],$$[$0])\nbreak;\ncase 29:\nyy.commit('',$$[$0-4],$$[$0],$$[$0-2])\nbreak;\ncase 30:\nyy.commit('',$$[$0-2],$$[$0-4],$$[$0])\nbreak;\ncase 31:\nyy.commit('',$$[$0],$$[$0-4],$$[$0-2])\nbreak;\ncase 32:\nyy.commit('',$$[$0],$$[$0-2],$$[$0-4])\nbreak;\ncase 33:\nyy.commit('',$$[$0-2],$$[$0],$$[$0-4])\nbreak;\ncase 34:\nyy.commit($$[$0],'',yy.commitType.NORMAL,'')\nbreak;\ncase 35:\nyy.commit($$[$0],'',yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 36:\nyy.commit($$[$0-2],'',yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 37:\nyy.commit($$[$0-2],'',$$[$0],'')\nbreak;\ncase 38:\nyy.commit($$[$0],'',$$[$0-2],'')\nbreak;\ncase 39:\nyy.commit($$[$0],$$[$0-2],yy.commitType.NORMAL,'')\nbreak;\ncase 40:\nyy.commit($$[$0-2],$$[$0],yy.commitType.NORMAL,'')\nbreak;\ncase 41:\nyy.commit($$[$0-4],'',$$[$0-2],$$[$0])\nbreak;\ncase 42:\nyy.commit($$[$0-4],'',$$[$0],$$[$0-2])\nbreak;\ncase 43:\nyy.commit($$[$0-2],'',$$[$0-4],$$[$0])\nbreak;\ncase 44:\nyy.commit($$[$0],'',$$[$0-4],$$[$0-2])\nbreak;\ncase 45:\nyy.commit($$[$0],'',$$[$0-2],$$[$0-4])\nbreak;\ncase 46:\nyy.commit($$[$0-2],'',$$[$0],$$[$0-4])\nbreak;\ncase 47:\nyy.commit($$[$0-4],$$[$0],$$[$0-2],'')\nbreak;\ncase 48:\nyy.commit($$[$0-4],$$[$0-2],$$[$0],'')\nbreak;\ncase 49:\nyy.commit($$[$0-2],$$[$0],$$[$0-4],'')\nbreak;\ncase 50:\nyy.commit($$[$0],$$[$0-2],$$[$0-4],'')\nbreak;\ncase 51:\nyy.commit($$[$0],$$[$0-4],$$[$0-2],'')\nbreak;\ncase 52:\nyy.commit($$[$0-2],$$[$0-4],$$[$0],'')\nbreak;\ncase 53:\nyy.commit($$[$0-4],$$[$0],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 54:\nyy.commit($$[$0-4],$$[$0-2],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 55:\nyy.commit($$[$0-2],$$[$0],yy.commitType.NORMAL,$$[$0-4])\nbreak;\ncase 56:\nyy.commit($$[$0],$$[$0-2],yy.commitType.NORMAL,$$[$0-4])\nbreak;\ncase 57:\nyy.commit($$[$0],$$[$0-4],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 58:\nyy.commit($$[$0-2],$$[$0-4],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 59:\nyy.commit($$[$0-6],$$[$0-4],$$[$0-2],$$[$0])\nbreak;\ncase 60:\nyy.commit($$[$0-6],$$[$0-4],$$[$0],$$[$0-2])\nbreak;\ncase 61:\nyy.commit($$[$0-6],$$[$0-2],$$[$0-4],$$[$0])\nbreak;\ncase 62:\nyy.commit($$[$0-6],$$[$0],$$[$0-4],$$[$0-2])\nbreak;\ncase 63:\nyy.commit($$[$0-6],$$[$0-2],$$[$0],$$[$0-4])\nbreak;\ncase 64:\nyy.commit($$[$0-6],$$[$0],$$[$0-2],$$[$0-4])\nbreak;\ncase 65:\nyy.commit($$[$0-4],$$[$0-6],$$[$0-2],$$[$0])\nbreak;\ncase 66:\nyy.commit($$[$0-4],$$[$0-6],$$[$0],$$[$0-2])\nbreak;\ncase 67:\nyy.commit($$[$0-2],$$[$0-6],$$[$0-4],$$[$0])\nbreak;\ncase 68:\nyy.commit($$[$0],$$[$0-6],$$[$0-4],$$[$0-2])\nbreak;\ncase 69:\nyy.commit($$[$0-2],$$[$0-6],$$[$0],$$[$0-4])\nbreak;\ncase 70:\nyy.commit($$[$0],$$[$0-6],$$[$0-2],$$[$0-4])\nbreak;\ncase 71:\nyy.commit($$[$0],$$[$0-4],$$[$0-2],$$[$0-6])\nbreak;\ncase 72:\nyy.commit($$[$0-2],$$[$0-4],$$[$0],$$[$0-6])\nbreak;\ncase 73:\nyy.commit($$[$0],$$[$0-2],$$[$0-4],$$[$0-6])\nbreak;\ncase 74:\nyy.commit($$[$0-2],$$[$0],$$[$0-4],$$[$0-6])\nbreak;\ncase 75:\nyy.commit($$[$0-4],$$[$0-2],$$[$0],$$[$0-6])\nbreak;\ncase 76:\nyy.commit($$[$0-4],$$[$0],$$[$0-2],$$[$0-6])\nbreak;\ncase 77:\nyy.commit($$[$0-2],$$[$0-4],$$[$0-6],$$[$0])\nbreak;\ncase 78:\nyy.commit($$[$0],$$[$0-4],$$[$0-6],$$[$0-2])\nbreak;\ncase 79:\nyy.commit($$[$0-2],$$[$0],$$[$0-6],$$[$0-4])\nbreak;\ncase 80:\nyy.commit($$[$0],$$[$0-2],$$[$0-6],$$[$0-4])\nbreak;\ncase 81:\nyy.commit($$[$0-4],$$[$0-2],$$[$0-6],$$[$0])\nbreak;\ncase 82:\nyy.commit($$[$0-4],$$[$0],$$[$0-6],$$[$0-2])\nbreak;\ncase 83:\nthis.$ = \"\"\nbreak;\ncase 84:\nthis.$=$$[$0]\nbreak;\ncase 85:\n this.$=yy.commitType.NORMAL;\nbreak;\ncase 86:\n this.$=yy.commitType.REVERSE;\nbreak;\ncase 87:\n this.$=yy.commitType.HIGHLIGHT;\nbreak;\ncase 90:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 91:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 92:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 93:\n yy.parseDirective('}%%', 'close_directive', 'gitGraph'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:$V0,8:$V1,14:$V2,33:8,37:$V3,41:$V4},{1:[3]},{3:10,4:2,5:3,6:$V0,8:$V1,14:$V2,33:8,37:$V3,41:$V4},{3:11,4:2,5:3,6:$V0,8:$V1,14:$V2,33:8,37:$V3,41:$V4},{7:12,8:$V5,9:[1,13],10:[1,14],11:15,14:$V6},o($V7,[2,94]),o($V7,[2,95]),o($V7,[2,96]),{34:17,38:[1,18]},{38:[2,90]},{1:[2,1]},{1:[2,2]},{8:[1,19]},{7:20,8:$V5,11:15,14:$V6},{9:[1,21]},o($V8,[2,10],{12:22,13:[1,23]}),o($V9,[2,9]),{9:[1,25],35:24,40:$Va},o([9,40],[2,91]),{1:[2,3]},{8:[1,27]},{7:28,8:$V5,11:15,14:$V6},{8:[2,7],14:[1,31],15:29,16:30,17:32,18:[1,33],20:[1,34],21:[1,35],22:[1,36]},o($V9,[2,8]),o($Vb,[2,88]),{36:37,39:[1,38]},o($Vb,[2,93]),{1:[2,4]},{8:[1,39]},o($V8,[2,11]),{4:40,8:$V1,14:$V2,41:$V4},o($V8,[2,13]),o($Vc,[2,14]),{19:[1,41]},{19:[1,42]},{19:[1,43]},o($Vc,[2,83],{23:44,24:[1,45],25:[1,49],26:[1,46],28:[1,47],29:[1,48]}),{35:50,40:$Va},{40:[2,92]},{1:[2,5]},o($V8,[2,12]),o($Vc,[2,15]),o($Vc,[2,16]),o($Vc,[2,17]),o($Vc,[2,18]),{25:[1,51]},{27:52,30:$Vd,31:$Ve,32:$Vf},{25:[1,56]},{25:[1,57]},o($Vc,[2,84]),o($Vb,[2,89]),o($Vc,[2,19],{26:[1,58],28:[1,59],29:[1,60]}),o($Vc,[2,20],{24:[1,61],28:[1,62],29:[1,63]}),o($Vg,[2,85]),o($Vg,[2,86]),o($Vg,[2,87]),o($Vc,[2,23],{24:[1,64],26:[1,65],29:[1,66]}),o($Vc,[2,34],{24:[1,67],26:[1,68],28:[1,69]}),{27:70,30:$Vd,31:$Ve,32:$Vf},{25:[1,71]},{25:[1,72]},{25:[1,73]},{25:[1,74]},{25:[1,75]},{25:[1,76]},{27:77,30:$Vd,31:$Ve,32:$Vf},{25:[1,78]},{25:[1,79]},{27:80,30:$Vd,31:$Ve,32:$Vf},{25:[1,81]},o($Vc,[2,21],{28:[1,82],29:[1,83]}),o($Vc,[2,25],{26:[1,84],29:[1,85]}),o($Vc,[2,35],{26:[1,86],28:[1,87]}),o($Vc,[2,22],{28:[1,88],29:[1,89]}),o($Vc,[2,27],{24:[1,90],29:[1,91]}),o($Vc,[2,38],{24:[1,92],28:[1,93]}),o($Vc,[2,24],{26:[1,94],29:[1,95]}),o($Vc,[2,26],{24:[1,96],29:[1,97]}),o($Vc,[2,39],{24:[1,99],26:[1,98]}),o($Vc,[2,36],{26:[1,100],28:[1,101]}),o($Vc,[2,37],{24:[1,102],28:[1,103]}),o($Vc,[2,40],{24:[1,105],26:[1,104]}),{25:[1,106]},{25:[1,107]},{27:108,30:$Vd,31:$Ve,32:$Vf},{25:[1,109]},{27:110,30:$Vd,31:$Ve,32:$Vf},{25:[1,111]},{25:[1,112]},{25:[1,113]},{25:[1,114]},{25:[1,115]},{25:[1,116]},{25:[1,117]},{27:118,30:$Vd,31:$Ve,32:$Vf},{25:[1,119]},{25:[1,120]},{25:[1,121]},{27:122,30:$Vd,31:$Ve,32:$Vf},{25:[1,123]},{27:124,30:$Vd,31:$Ve,32:$Vf},{25:[1,125]},{25:[1,126]},{25:[1,127]},{27:128,30:$Vd,31:$Ve,32:$Vf},{25:[1,129]},o($Vc,[2,32],{29:[1,130]}),o($Vc,[2,45],{28:[1,131]}),o($Vc,[2,33],{29:[1,132]}),o($Vc,[2,56],{26:[1,133]}),o($Vc,[2,46],{28:[1,134]}),o($Vc,[2,55],{26:[1,135]}),o($Vc,[2,31],{29:[1,136]}),o($Vc,[2,44],{28:[1,137]}),o($Vc,[2,30],{29:[1,138]}),o($Vc,[2,50],{24:[1,139]}),o($Vc,[2,43],{28:[1,140]}),o($Vc,[2,49],{24:[1,141]}),o($Vc,[2,29],{29:[1,142]}),o($Vc,[2,57],{26:[1,143]}),o($Vc,[2,28],{29:[1,144]}),o($Vc,[2,51],{24:[1,145]}),o($Vc,[2,52],{24:[1,146]}),o($Vc,[2,58],{26:[1,147]}),o($Vc,[2,42],{28:[1,148]}),o($Vc,[2,53],{26:[1,149]}),o($Vc,[2,41],{28:[1,150]}),o($Vc,[2,47],{24:[1,151]}),o($Vc,[2,48],{24:[1,152]}),o($Vc,[2,54],{26:[1,153]}),{25:[1,154]},{25:[1,155]},{25:[1,156]},{27:157,30:$Vd,31:$Ve,32:$Vf},{25:[1,158]},{27:159,30:$Vd,31:$Ve,32:$Vf},{25:[1,160]},{25:[1,161]},{25:[1,162]},{25:[1,163]},{25:[1,164]},{25:[1,165]},{25:[1,166]},{27:167,30:$Vd,31:$Ve,32:$Vf},{25:[1,168]},{25:[1,169]},{25:[1,170]},{27:171,30:$Vd,31:$Ve,32:$Vf},{25:[1,172]},{27:173,30:$Vd,31:$Ve,32:$Vf},{25:[1,174]},{25:[1,175]},{25:[1,176]},{27:177,30:$Vd,31:$Ve,32:$Vf},o($Vc,[2,73]),o($Vc,[2,74]),o($Vc,[2,71]),o($Vc,[2,72]),o($Vc,[2,76]),o($Vc,[2,75]),o($Vc,[2,80]),o($Vc,[2,79]),o($Vc,[2,78]),o($Vc,[2,77]),o($Vc,[2,82]),o($Vc,[2,81]),o($Vc,[2,70]),o($Vc,[2,69]),o($Vc,[2,68]),o($Vc,[2,67]),o($Vc,[2,65]),o($Vc,[2,66]),o($Vc,[2,64]),o($Vc,[2,63]),o($Vc,[2,62]),o($Vc,[2,61]),o($Vc,[2,59]),o($Vc,[2,60])],\ndefaultActions: {9:[2,90],10:[2,1],11:[2,2],19:[2,3],27:[2,4],38:[2,92],39:[2,5]},\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: this.begin('open_directive'); return 37; \nbreak;\ncase 1: this.begin('type_directive'); return 38; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 9; \nbreak;\ncase 3: this.popState(); this.popState(); return 40; \nbreak;\ncase 4:return 39;\nbreak;\ncase 5:/*{console.log('New line');return 14;}*/ return 14;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip comments */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:return 6;\nbreak;\ncase 10:return 22;\nbreak;\ncase 11:return 28;\nbreak;\ncase 12:return 26;\nbreak;\ncase 13:return 29;\nbreak;\ncase 14:return 30;\nbreak;\ncase 15:return 31;\nbreak;\ncase 16:return 32;\nbreak;\ncase 17:return 24;\nbreak;\ncase 18:return 18;\nbreak;\ncase 19:return 21;\nbreak;\ncase 20:return 20;\nbreak;\ncase 21:return 10;\nbreak;\ncase 22:return 10;\nbreak;\ncase 23:return 9;\nbreak;\ncase 24:return 'CARET'\nbreak;\ncase 25:this.begin(\"options\");\nbreak;\ncase 26:this.popState();\nbreak;\ncase 27:return 13;\nbreak;\ncase 28:this.begin(\"string\");\nbreak;\ncase 29:this.popState();\nbreak;\ncase 30:return 25;\nbreak;\ncase 31:return 19;\nbreak;\ncase 32:return 8;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:gitGraph\\b)/i,/^(?:commit\\b)/i,/^(?:id:)/i,/^(?:type:)/i,/^(?:msg:)/i,/^(?:NORMAL\\b)/i,/^(?:REVERSE\\b)/i,/^(?:HIGHLIGHT\\b)/i,/^(?:tag:)/i,/^(?:branch\\b)/i,/^(?:merge\\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: {\"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},\"options\":{\"rules\":[26,27],\"inclusive\":false},\"string\":{\"rules\":[29,30],\"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,28,31,32],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,9,10];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"info\":4,\"document\":5,\"EOF\":6,\"line\":7,\"statement\":8,\"NL\":9,\"showInfo\":10,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"info\",6:\"EOF\",9:\"NL\",10:\"showInfo\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return yy; \nbreak;\ncase 4:\n \nbreak;\ncase 6:\n yy.setInfo(true); \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),o($V0,[2,6])],\ndefaultActions: {4:[2,1]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\r\n\t// Pre-lexer code can go here\r\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 4 ;\nbreak;\ncase 1:return 9 ;\nbreak;\ncase 2:return 'space';\nbreak;\ncase 3:return 10;\nbreak;\ncase 4:return 6 ;\nbreak;\ncase 5:return 'TXT' ;\nbreak;\n}\n},\nrules: [/^(?:info\\b)/i,/^(?:[\\s\\n\\r]+)/i,/^(?:[\\s]+)/i,/^(?:showInfo\\b)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,5],$V2=[1,6],$V3=[1,7],$V4=[1,9],$V5=[1,11,13,15,22,23,24,25],$V6=[2,5],$V7=[1,6,11,13,15,22,23,24,25],$V8=[22,23,24],$V9=[2,8],$Va=[1,18],$Vb=[1,19],$Vc=[1,20],$Vd=[1,25],$Ve=[6,22,23,24,25];\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,\"accDescription\":15,\"description_value\":16,\"openDirective\":17,\"typeDirective\":18,\"closeDirective\":19,\":\":20,\"argDirective\":21,\"NEWLINE\":22,\";\":23,\"EOF\":24,\"open_directive\":25,\"type_directive\":26,\"arg_directive\":27,\"close_directive\":28,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"PIE\",8:\"showData\",11:\"txt\",12:\"value\",13:\"title\",14:\"title_value\",15:\"accDescription\",16:\"description_value\",20:\":\",22:\"NEWLINE\",23:\";\",24:\"EOF\",25:\"open_directive\",26:\"type_directive\",27:\"arg_directive\",28:\"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,2],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[17,1],[18,1],[21,1],[19,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 11:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 18:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 19:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 20:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 21:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:$V0,17:8,22:$V1,23:$V2,24:$V3,25:$V4},{1:[3]},{3:10,4:2,5:3,6:$V0,17:8,22:$V1,23:$V2,24:$V3,25:$V4},{3:11,4:2,5:3,6:$V0,17:8,22:$V1,23:$V2,24:$V3,25:$V4},o($V5,$V6,{7:12,8:[1,13]}),o($V7,[2,15]),o($V7,[2,16]),o($V7,[2,17]),{18:14,26:[1,15]},{26:[2,18]},{1:[2,1]},{1:[2,2]},o($V8,$V9,{17:8,9:16,10:17,5:21,1:[2,3],11:$Va,13:$Vb,15:$Vc,25:$V4}),o($V5,$V6,{7:22}),{19:23,20:[1,24],28:$Vd},o([20,28],[2,19]),o($V5,[2,6]),{4:26,22:$V1,23:$V2,24:$V3},{12:[1,27]},{14:[1,28]},{16:[1,29]},o($V8,[2,12]),o($V8,$V9,{17:8,9:16,10:17,5:21,1:[2,4],11:$Va,13:$Vb,15:$Vc,25:$V4}),o($Ve,[2,13]),{21:30,27:[1,31]},o($Ve,[2,21]),o($V5,[2,7]),o($V8,[2,9]),o($V8,[2,10]),o($V8,[2,11]),{19:32,28:$Vd},{28:[2,20]},o($Ve,[2,14])],\ndefaultActions: {9:[2,18],10:[2,1],11:[2,2],31:[2,20]},\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 25; \nbreak;\ncase 1: this.begin('type_directive'); return 26; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 20; \nbreak;\ncase 3: this.popState(); this.popState(); return 28; \nbreak;\ncase 4:return 27;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */{ /*console.log('');*/ }\nbreak;\ncase 7:return 22;\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(\"accDescription\");return 15; \nbreak;\ncase 13: this.popState(); return \"description_value\"; \nbreak;\ncase 14: this.begin(\"string\"); \nbreak;\ncase 15: this.popState(); \nbreak;\ncase 16: return \"txt\"; \nbreak;\ncase 17:return 6;\nbreak;\ncase 18:return 8;\nbreak;\ncase 19:return \"value\";\nbreak;\ncase 20:return 24;\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,/^(?:accDescription\\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},\"accDescription\":{\"rules\":[13],\"inclusive\":false},\"title\":{\"rules\":[11],\"inclusive\":false},\"string\":{\"rules\":[15,16],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,12,14,17,18,19,20],\"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,35],$Vj=[1,36],$Vk=[1,39],$Vl=[1,40],$Vm=[1,41],$Vn=[1,42],$Vo=[1,43],$Vp=[1,44],$Vq=[1,47],$Vr=[1,4,5,16,20,22,23,24,30,31,32,33,34,35,36,37,39,41,42,43,48,49,50,51,59,69],$Vs=[4,5,16,20,22,23,24,30,31,32,33,34,35,36,37,39,43,48,49,50,51,59,69],$Vt=[4,5,16,20,22,23,24,30,31,32,33,34,35,36,37,39,42,43,48,49,50,51,59,69],$Vu=[4,5,16,20,22,23,24,30,31,32,33,34,35,36,37,39,41,43,48,49,50,51,59,69],$Vv=[57,58,59],$Vw=[1,104],$Vx=[1,4,5,7,16,20,22,23,24,30,31,32,33,34,35,36,37,39,41,42,43,48,49,50,51,59,69];\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,\"legacy_title\":31,\"accDescription\":32,\"loop\":33,\"end\":34,\"rect\":35,\"opt\":36,\"alt\":37,\"else_sections\":38,\"par\":39,\"par_sections\":40,\"and\":41,\"else\":42,\"note\":43,\"placement\":44,\"text2\":45,\"over\":46,\"actor_pair\":47,\"links\":48,\"link\":49,\"properties\":50,\"details\":51,\"spaceList\":52,\",\":53,\"left_of\":54,\"right_of\":55,\"signaltype\":56,\"+\":57,\"-\":58,\"ACTOR\":59,\"SOLID_OPEN_ARROW\":60,\"DOTTED_OPEN_ARROW\":61,\"SOLID_ARROW\":62,\"DOTTED_ARROW\":63,\"SOLID_CROSS\":64,\"DOTTED_CROSS\":65,\"SOLID_POINT\":66,\"DOTTED_POINT\":67,\"TXT\":68,\"open_directive\":69,\"type_directive\":70,\"arg_directive\":71,\"close_directive\":72,\"$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\",31:\"legacy_title\",32:\"accDescription\",33:\"loop\",34:\"end\",35:\"rect\",36:\"opt\",37:\"alt\",39:\"par\",41:\"and\",42:\"else\",43:\"note\",46:\"over\",48:\"links\",49:\"link\",50:\"properties\",51:\"details\",53:\",\",54:\"left_of\",55:\"right_of\",57:\"+\",58:\"-\",59:\"ACTOR\",60:\"SOLID_OPEN_ARROW\",61:\"DOTTED_OPEN_ARROW\",62:\"SOLID_ARROW\",63:\"DOTTED_ARROW\",64:\"SOLID_CROSS\",65:\"DOTTED_CROSS\",66:\"SOLID_POINT\",67:\"DOTTED_POINT\",68:\"TXT\",69:\"open_directive\",70:\"type_directive\",71:\"arg_directive\",72:\"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,1],[10,1],[10,1],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[40,1],[40,4],[38,1],[38,4],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[52,2],[52,1],[47,3],[47,1],[44,1],[44,1],[21,5],[21,5],[21,4],[17,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[45,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:\nyy.setTitle($$[$0].substring(6));this.$=$$[$0].substring(6);\nbreak;\ncase 26:\nyy.setTitle($$[$0].substring(7));this.$=$$[$0].substring(7);\nbreak;\ncase 27:\nyy.setAccDescription($$[$0].substring(15));this.$=$$[$0].substring(15);\nbreak;\ncase 28:\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 29:\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 30:\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 31:\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 32:\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 35:\n this.$ = $$[$0-3].concat([{type: 'and', parText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 37:\n this.$ = $$[$0-3].concat([{type: 'else', altText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 38:\n\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 39:\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 40:\n\n\t\tthis.$ = [$$[$0-1], {type:'addLinks', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 41:\n\n\t\tthis.$ = [$$[$0-1], {type:'addALink', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 42:\n\n\t\tthis.$ = [$$[$0-1], {type:'addProperties', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 43:\n\n\t\tthis.$ = [$$[$0-1], {type:'addDetails', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 46:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 47:\n this.$ = $$[$0]; \nbreak;\ncase 48:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 49:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 50:\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 51:\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 52:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 53:\nthis.$={ type: 'addParticipant', actor:$$[$0]}\nbreak;\ncase 54:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 55:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 56:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 57:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 58:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 59:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 60:\n this.$ = yy.LINETYPE.SOLID_POINT; \nbreak;\ncase 61:\n this.$ = yy.LINETYPE.DOTTED_POINT; \nbreak;\ncase 62:\nthis.$ = yy.parseMessage($$[$0].trim().substring(1)) \nbreak;\ncase 63:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 64:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 65:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 66:\n yy.parseDirective('}%%', 'close_directive', 'sequence'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,11:6,69:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,11:6,69:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,11:6,69:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,11:6,69:$V3},o([1,4,5,16,20,22,23,24,30,31,32,33,35,36,37,39,43,48,49,50,51,59,69],$V4,{8:11}),{12:12,70:[1,13]},{70:[2,63]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{13:45,14:[1,46],72:$Vq},o([14,72],[2,64]),o($Vr,[2,6]),{6:37,10:48,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},o($Vr,[2,8]),o($Vr,[2,9]),{17:49,59:$Vp},{17:50,59:$Vp},{5:[1,51]},o($Vr,[2,17]),{17:52,59:$Vp},{17:53,59:$Vp},{5:[1,54]},{5:[1,55]},{5:[1,56]},{5:[1,57]},{5:[1,58]},o($Vr,[2,25]),o($Vr,[2,26]),o($Vr,[2,27]),{19:[1,59]},{19:[1,60]},{19:[1,61]},{19:[1,62]},{19:[1,63]},o($Vr,[2,33]),{56:64,60:[1,65],61:[1,66],62:[1,67],63:[1,68],64:[1,69],65:[1,70],66:[1,71],67:[1,72]},{44:73,46:[1,74],54:[1,75],55:[1,76]},{17:77,59:$Vp},{17:78,59:$Vp},{17:79,59:$Vp},{17:80,59:$Vp},o([5,18,53,60,61,62,63,64,65,66,67,68],[2,53]),{5:[1,81]},{15:82,71:[1,83]},{5:[2,66]},o($Vr,[2,7]),{5:[1,85],18:[1,84]},{5:[1,87],18:[1,86]},o($Vr,[2,16]),{5:[1,88]},{5:[1,89]},o($Vr,[2,20]),o($Vr,[2,21]),o($Vr,[2,22]),o($Vr,[2,23]),o($Vr,[2,24]),o($Vs,$V4,{8:90}),o($Vs,$V4,{8:91}),o($Vs,$V4,{8:92}),o($Vt,$V4,{38:93,8:94}),o($Vu,$V4,{40:95,8:96}),{17:99,57:[1,97],58:[1,98],59:$Vp},o($Vv,[2,54]),o($Vv,[2,55]),o($Vv,[2,56]),o($Vv,[2,57]),o($Vv,[2,58]),o($Vv,[2,59]),o($Vv,[2,60]),o($Vv,[2,61]),{17:100,59:$Vp},{17:102,47:101,59:$Vp},{59:[2,48]},{59:[2,49]},{45:103,68:$Vw},{45:105,68:$Vw},{45:106,68:$Vw},{45:107,68:$Vw},o($Vx,[2,10]),{13:108,72:$Vq},{72:[2,65]},{19:[1,109]},o($Vr,[2,13]),{19:[1,110]},o($Vr,[2,15]),o($Vr,[2,18]),o($Vr,[2,19]),{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[1,111],35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[1,112],35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[1,113],35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{34:[1,114]},{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[2,36],35:$Vg,36:$Vh,37:$Vi,39:$Vj,42:[1,115],43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{34:[1,116]},{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[2,34],35:$Vg,36:$Vh,37:$Vi,39:$Vj,41:[1,117],43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{17:118,59:$Vp},{17:119,59:$Vp},{45:120,68:$Vw},{45:121,68:$Vw},{45:122,68:$Vw},{53:[1,123],68:[2,47]},{5:[2,40]},{5:[2,62]},{5:[2,41]},{5:[2,42]},{5:[2,43]},{5:[1,124]},{5:[1,125]},{5:[1,126]},o($Vr,[2,28]),o($Vr,[2,29]),o($Vr,[2,30]),o($Vr,[2,31]),{19:[1,127]},o($Vr,[2,32]),{19:[1,128]},{45:129,68:$Vw},{45:130,68:$Vw},{5:[2,52]},{5:[2,38]},{5:[2,39]},{17:131,59:$Vp},o($Vx,[2,11]),o($Vr,[2,12]),o($Vr,[2,14]),o($Vt,$V4,{8:94,38:132}),o($Vu,$V4,{8:96,40:133}),{5:[2,50]},{5:[2,51]},{68:[2,46]},{34:[2,37]},{34:[2,35]}],\ndefaultActions: {7:[2,63],8:[2,1],9:[2,2],10:[2,3],47:[2,66],75:[2,48],76:[2,49],83:[2,65],103:[2,40],104:[2,62],105:[2,41],106:[2,42],107:[2,43],120:[2,52],121:[2,38],122:[2,39],129:[2,50],130:[2,51],131:[2,46],132:[2,37],133:[2,35]},\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 69; \nbreak;\ncase 1: this.begin('type_directive'); return 70; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 14; \nbreak;\ncase 3: this.popState(); this.popState(); return 72; \nbreak;\ncase 4:return 71;\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 59; \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 33; \nbreak;\ncase 17: this.begin('LINE'); return 35; \nbreak;\ncase 18: this.begin('LINE'); return 36; \nbreak;\ncase 19: this.begin('LINE'); return 37; \nbreak;\ncase 20: this.begin('LINE'); return 42; \nbreak;\ncase 21: this.begin('LINE'); return 39; \nbreak;\ncase 22: this.begin('LINE'); return 41; \nbreak;\ncase 23: this.popState(); return 19; \nbreak;\ncase 24:return 34;\nbreak;\ncase 25:return 54;\nbreak;\ncase 26:return 55;\nbreak;\ncase 27:return 48;\nbreak;\ncase 28:return 49;\nbreak;\ncase 29:return 50;\nbreak;\ncase 30:return 51;\nbreak;\ncase 31:return 46;\nbreak;\ncase 32:return 43;\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 31;\nbreak;\ncase 37:return 32;\nbreak;\ncase 38:return 7;\nbreak;\ncase 39:return 22;\nbreak;\ncase 40:return 53;\nbreak;\ncase 41:return 5;\nbreak;\ncase 42: yy_.yytext = yy_.yytext.trim(); return 59; \nbreak;\ncase 43:return 62;\nbreak;\ncase 44:return 63;\nbreak;\ncase 45:return 60;\nbreak;\ncase 46:return 61;\nbreak;\ncase 47:return 64;\nbreak;\ncase 48:return 65;\nbreak;\ncase 49:return 66;\nbreak;\ncase 50:return 67;\nbreak;\ncase 51:return 68;\nbreak;\ncase 52:return 57;\nbreak;\ncase 53:return 58;\nbreak;\ncase 54:return 5;\nbreak;\ncase 55: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\\s[^#\\n;]+)/i,/^(?:title:\\s[^#\\n;]+)/i,/^(?:accDescription\\s[^#\\n;]+)/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,54,55],\"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\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 21; \nbreak;\ncase 1: this.begin('type_directive'); return 22; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 3: this.popState(); this.popState(); return 24; \nbreak;\ncase 4:return 23;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:return 11;\nbreak;\ncase 8:/* skip whitespace */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:return 4;\nbreak;\ncase 11:return 17;\nbreak;\ncase 12:return 18;\nbreak;\ncase 13:return 19;\nbreak;\ncase 14:return 20;\nbreak;\ncase 15:return 15;\nbreak;\ncase 16:return 6;\nbreak;\ncase 17:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:journey\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,13,14,15,16,17],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/**\n * This method will add a basic title and description element to a chart. The yy parser will need to\n * respond to getTitle and getAccDescription, where the title is the title element on the chart,\n * which is not displayed and the accDescription is the description element on the chart, which is\n * also not displayed.\n *\n * @param yy_parser\n * @param svg\n * @param id\n */\nexport default function addSVGAccessibilityFields(yy_parser, svg, id) {\n if (typeof svg.insert == 'undefined') {\n return;\n }\n let title_string = yy_parser.getTitle();\n let description = yy_parser.getAccDescription();\n svg.attr('role', 'img').attr('aria-labelledby', 'chart-title-' + id + ' chart-desc-' + id);\n svg\n .insert('desc', ':first-child')\n .attr('id', 'chart-desc-' + id)\n .text(description);\n svg\n .insert('title', ':first-child')\n .attr('id', 'chart-title-' + id)\n .text(title_string);\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 *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes:** Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls\n * to reset() will reset the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig)\n * will reset siteConfig and currentConfig to the defaultConfig Note: currentConfig is set in this\n * function _Default value: At default, will mirror Global Config_\n *\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 *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------------------- | ----------- | -------------------------------- |\n * | setSiteConfig | Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig |\n *\n * **Notes**: Returns **any** values in siteConfig.\n *\n * @returns {object} - The siteConfig\n */\nexport const getSiteConfig = () => {\n return assignWithDepth({}, siteConfig);\n};\n/**\n * ## setConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes**: Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure\n * keys. Any values found in conf with key found in siteConfig.secure will be replaced with the\n * corresponding siteConfig value.\n *\n * @param {any} conf - The potential currentConfig\n * @returns {any} - 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 *\n * | Function | Description | Type | Return Values |\n * | --------- | ------------------------- | ----------- | ------------------------------ |\n * | getConfig | Obtains the currentConfig | Get Request | Any Values from current Config |\n *\n * **Notes**: Returns **any** the currentConfig\n *\n * @returns {any} - The currentConfig\n */\nexport const getConfig = () => {\n return assignWithDepth({}, currentConfig);\n};\n/**\n * ## sanitize\n *\n * | Function | Description | Type | Values |\n * | -------- | -------------------------------------- | ----------- | ------ |\n * | sanitize | Sets the siteConfig to desired values. | Put Request | None |\n *\n * Ensures options parameter does not attempt to override siteConfig secure keys **Notes**: modifies\n * options in-place\n *\n * @param {any} 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 *\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 *\n * | Function | Description | Type | Required | Values |\n * | -------- | ---------------------------- | ----------- | -------- | ------ |\n * | reset | Resets currentConfig to conf | Put Request | Required | None |\n *\n * ## conf\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**: (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 *\n * @param {any} parent\n * @param {any} node\n * @returns {any} ShapeSvg\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 { sanitizeText, evaluate } from '../diagrams/common/common';\n\nconst sanitizeTxt = (txt) => sanitizeText(txt, getConfig());\n\n/**\n * @param dom\n * @param styleFn\n */\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr('style', styleFn);\n }\n}\n\n/**\n * @param {any} node\n * @returns {SVGForeignObjectElement} Node\n */\nfunction addHtmlLabel(node) {\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';\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\n/**\n * @param {any} fo\n * @param {any} value\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 *\n * @param {Array} _points\n * @param {any} boundryNode\n * @returns {Array} Points\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\n/**\n * @param node\n * @param rx\n * @param point\n */\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n\nexport default intersectCircle;\n","/**\n * @param node\n * @param rx\n * @param ry\n * @param point\n */\nfunction 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 undefined if they do not intersect.\n *\n * @param p1\n * @param p2\n * @param q1\n * @param q2\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\n/**\n * @param r1\n * @param r2\n */\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n\nexport default intersectLine;\n","module.exports = intersectNode;\n\n/**\n * @param node\n * @param point\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 node argument assuming\n * that it has the shape specified by polygon.\n *\n * @param node\n * @param polyPoints\n * @param point\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) => {\r\n var x = node.x;\r\n var y = node.y;\r\n\r\n // Rectangle intersection algorithm from:\r\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\r\n var dx = point.x - x;\r\n var dy = point.y - y;\r\n var w = node.width / 2;\r\n var h = node.height / 2;\r\n\r\n var sx, sy;\r\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\r\n // Intersection is top or bottom of rect.\r\n if (dy < 0) {\r\n h = -h;\r\n }\r\n sx = dy === 0 ? 0 : (h * dx) / dy;\r\n sy = h;\r\n } else {\r\n // Intersection is left or right of rect.\r\n if (dx < 0) {\r\n w = -w;\r\n }\r\n sx = w;\r\n sy = dx === 0 ? 0 : (w * dy) / dx;\r\n }\r\n\r\n return { x: x + sx, y: y + sy };\r\n};\r\n\r\nexport default intersectRect;\r\n","/** Setup arrow head and define the marker. The result is appended to the svg. */\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","/** Decorates with functions required by mermaids dagre-wrapper. */\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 *\n * @param graph\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 *\n * @param {Finds a} id\n * @param {any} 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, sanitizeText as sanitize } from '../diagrams/common/common';\n\nconst sanitizeText = (txt) => sanitize(txt, getConfig());\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 const totalWidth = bbox.width + node.padding;\n const totalHeight = bbox.height + node.padding;\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', totalWidth)\n .attr('height', totalHeight);\n\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect, node.props.borders, totalWidth, totalHeight);\n propKeys.delete('borders');\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\n/**\n * @param rect\n * @param borders\n * @param totalWidth\n * @param totalHeight\n */\nfunction applyNodePropertyBorders(rect, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = (length) => {\n strokeDashArray.push(length);\n strokeDashArray.push(0);\n };\n const skipBorder = (length) => {\n strokeDashArray.push(0);\n strokeDashArray.push(length);\n };\n if (borders.includes('t')) {\n log.debug('add top border');\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes('r')) {\n log.debug('add right border');\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes('b')) {\n log.debug('add bottom border');\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes('l')) {\n log.debug('add left border');\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect.attr('stroke-dasharray', strokeDashArray.join(' '));\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 doublecircle = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, undefined, true);\n const gap = 5;\n const circleGroup = shapeSvg.insert('g', ':first-child');\n const outerCircle = circleGroup.insert('circle');\n const innerCircle = circleGroup.insert('circle');\n\n // center the circle around its coordinate\n outerCircle\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding + gap)\n .attr('width', bbox.width + node.padding + gap * 2)\n .attr('height', bbox.height + node.padding + gap * 2);\n\n innerCircle\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('DoubleCircle main');\n\n updateNodeBounds(node, outerCircle);\n\n node.intersect = function (point) {\n log.info('DoubleCircle intersect', node, bbox.width / 2 + halfPadding + gap, point);\n return intersect.circle(node, bbox.width / 2 + halfPadding + gap, 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 doublecircle,\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 let target;\n if (getConfig().securityLevel === 'sandbox') {\n target = '_top';\n } else if (node.linkTarget) {\n target = node.linkTarget || '_blank';\n }\n newEl = elem.insert('svg:a').attr('xlink:href', node.link).attr('target', target);\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 labelText = typeof node.labelText === 'string' ? node.labelText : node.labelText[0];\n\n const text = label\n .node()\n .appendChild(\n createLabel(\n sanitizeText(decodeEntities(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\n/**\n * @param parent\n * @param w\n * @param h\n * @param points\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\n * 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:** mermaid.initialize({ flowchart:{ htmlLabels: false } });
\n *\n * **Example 2:**
\n *\n * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults).\n * 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\". \"theme\": \"forest\",\n * \"themeCSS\": \".node rect { fill: red; }\"
\n */\n theme: 'default',\n themeVariables: theme['default'].getThemeVariables(),\n themeCSS: undefined,\n /* **maxTextSize** - The maximum allowed size of the users text diagram */\n maxTextSize: 50000,\n darkMode: false,\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:** 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 * **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\n * 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 * **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\n * via call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to the\n * `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\n * on a seed. If set to false, the IDs are generated based on the current date and thus are not\n * 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\n * 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\n * deterministicIds is true, a simple number iterator is used. You can set this attribute to base\n * the seed on a static string.\n */\n deterministicIDSeed: undefined,\n\n /** The object containing configurations specific for flowcharts */\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,\n * 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\n * 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\n * 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 dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-d3',\n },\n\n /** The object containing configurations specific for sequence diagrams */\n sequence: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------- | ------- | -------- | ------------------ |\n * | activationWidth | Width of the activation rect | Integer | Required | Any Positive Value |\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:** 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:** 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:** 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:** 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:** 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:** 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:** 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:** 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:** 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:** When this flag is set to true, the height and width is set to 100% and is then\n * scaling with the 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:** 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:** **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:** 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:** 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:** 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:** 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:** 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:** 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:** 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:** 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:** Default value: 400.\n */\n messageFontWeight: 400,\n\n /**\n * This sets the auto-wrap state for the diagram\n *\n * **Notes:** Default value: false.\n */\n wrap: false,\n\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n *\n * **Notes:** 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:** 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:** 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 /** The object containing configurations specific for gantt diagrams */\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:** 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:** 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:** 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:** 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:** 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:** 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:** 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:** 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:** 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:** 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 top of the chart\n *\n * **Default value false**.\n */\n topAxis: false,\n\n useWidth: undefined,\n },\n\n /** The object containing configurations specific for journey diagrams */\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:** 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:** 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:** 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:** 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:** 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:** 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:** 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:** 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 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 dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-wrapper',\n },\n\n /** The object containing configurations specific for entity relationship diagrams */\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,\n * 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:** Expressed in pixels. 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:** Expressed in pixels 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,\n * 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:** 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:** 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) 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 scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n },\n\n /** The object containing configurations specific for pie diagrams */\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 scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n },\n\n /** The object containing configurations specific for req diagrams */\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 scaled based on\n * available space. If set to false, the diagram reserves its 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 gitGraph: {\n diagramPadding: 8,\n nodeSpacing: 150,\n nodeFillColor: 'yellow',\n nodeStrokeWidth: 2,\n nodeStrokeColor: 'grey',\n lineStrokeWidth: 4,\n branchOffset: 50,\n lineColor: 'grey',\n leftMargin: 50,\n branchColors: ['#442f74', '#983351', '#609732', '#AA9A39'],\n nodeRadius: 10,\n nodeLabel: {\n width: 75,\n height: 100,\n x: -25,\n y: 0,\n },\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\nconst sanitizeText = (txt) => common.sanitizeText(txt, configApi.getConfig());\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 *\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 *\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 relation.relationTitle1 = common.sanitizeText(\n relation.relationTitle1.trim(),\n configApi.getConfig()\n );\n\n relation.relationTitle2 = common.sanitizeText(\n relation.relationTitle2.trim(),\n configApi.getConfig()\n );\n\n relations.push(relation);\n};\n\n/**\n * Adds an annotation to the specified class Annotations mark special properties of the given type\n * (like 'interface' or 'service')\n *\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 *\n * @param className The class name\n * @param member The full name of the member. If the member is enclosed in <> it is\n * treated as an annotation If the member is ending with a closing bracket ) it is treated as a\n * method 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 theClass.annotations.push(sanitizeText(memberString.substring(2, memberString.length - 2)));\n } else if (memberString.indexOf(')') > 0) {\n theClass.methods.push(sanitizeText(memberString));\n } else if (memberString) {\n theClass.members.push(sanitizeText(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 common.sanitizeText(label.substr(1).trim(), configApi.getConfig());\n } else {\n return sanitizeText(label.trim());\n }\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n *\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 *\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 *\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 (config.securityLevel === 'sandbox') {\n classes[id].linkTarget = '_top';\n } else if (typeof target === 'string') {\n classes[id].linkTarget = sanitizeText(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 *\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 sanitizeText = (txt) => common.sanitizeText(txt, getConfig());\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 *\n * @param {Object<\n * string,\n * { cssClasses: string[]; text: string; id: string; type: string; domId: string }\n * >} classes\n * 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 *\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: sanitizeText(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 *\n * @param relations\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) {\n // 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 *\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 *\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 *\n * @param {string} text\n * @param {string} id\n */\nexport const draw = function (text, id) {\n log.info('Drawing class - ', id);\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 const securityLevel = getConfig().securityLevel;\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 let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const svg = root.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 = root.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 doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n const labels = doc.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 = doc.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 *\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';\nimport { getConfig } from '../../config';\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 *\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 *\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 *\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 *\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 const securityLevel = getConfig().securityLevel;\n // Handle root and ocument for when rendering in sanbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n // Fetch the default direction, use TD if none was found\n const diagram = root.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 root\n .select('#' + lookUpDomId(v))\n .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 *\n * @param {SVGSVGElement} elem The element to draw it into\n * @param classDef\n * @param conf\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 *\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 *\n * @example Array of array of strings in typescript syntax\n * // returns \"Array>\"\n * parseGenericTypes('Array~Array~string~~');\n *\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 *\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 *\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\nexport const removeEscapes = (text) => {\n let newStr = text.replace(/\\\\u[\\dA-F]{4}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\u/g, ''), 16));\n });\n\n newStr = newStr.replace(/\\\\x([0-9a-f]{2})/gi, (_, c) => String.fromCharCode(parseInt(c, 16)));\n newStr = newStr.replace(/\\\\[\\d\\d\\d]{3}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\/g, ''), 8));\n });\n newStr = newStr.replace(/\\\\[\\d\\d\\d]{2}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\/g, ''), 8));\n });\n\n return newStr;\n};\n\n/**\n * Removes script tags from a text\n *\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 let decodedText = removeEscapes(rs);\n decodedText = decodedText.replace(/script>/gi, '#');\n decodedText = decodedText.replace(/javascript:/gi, '#');\n decodedText = decodedText.replace(/onerror=/gi, 'onerror:');\n decodedText = decodedText.replace(/